diff --git a/.gitignore b/.gitignore index 58a45545939..8d05f8f3337 100644 --- a/.gitignore +++ b/.gitignore @@ -21,15 +21,16 @@ tests/services/baselines/local/* tests/baselines/prototyping/local/* tests/baselines/rwc/* tests/baselines/test262/* -tests/baselines/reference/projectOutput/* +tests/baselines/reference/projectOutput/* tests/baselines/local/projectOutput/* tests/services/baselines/prototyping/local/* tests/services/browser/typescriptServices.js scripts/configureNightly.js scripts/processDiagnosticMessages.d.ts scripts/processDiagnosticMessages.js -scripts/importDefinitelyTypedTests.js +scripts/importDefinitelyTypedTests/importDefinitelyTypedTests.js src/harness/*.js +src/compiler/diagnosticInformationMap.generated.ts rwc-report.html *.swp build.json @@ -45,8 +46,10 @@ scripts/run.bat scripts/word2md.js scripts/ior.js scripts/*.js.map +scripts/typings/ coverage/ internal/ **/.DS_Store -.settings/* -!.settings/tasks.json +.settings +.vscode/* +!.vscode/tasks.json diff --git a/.npmignore b/.npmignore index 2b75d37f70a..02270857e37 100644 --- a/.npmignore +++ b/.npmignore @@ -3,6 +3,7 @@ doc scripts src tests -Jakefile +Jakefile.js .travis.yml -.settings/ \ No newline at end of file +.settings/ +.vscode/ \ No newline at end of file diff --git a/.settings/tasks.json b/.settings/tasks.json deleted file mode 100644 index e617f228378..00000000000 --- a/.settings/tasks.json +++ /dev/null @@ -1,23 +0,0 @@ -// Available variables which can be used inside of strings. -// ${workspaceRoot}: the root folder of the team -// ${file}: the current opened file -// ${fileBasename}: the current opened file's basename -// ${fileDirname}: the current opened file's dirname -// ${fileExtname}: the current opened file's extension -// ${cwd}: the current working directory of the spawned process -{ - "version": "0.1.0", - "command": "jake", - "isShellCommand": true, - "showOutput": "silent", - "tasks": [ - { - "taskName": "local", - "isBuildCommand": true, - "showOutput": "silent", - "problemMatcher": [ - "$tsc" - ] - } - ] -} \ No newline at end of file diff --git a/.vscode/tasks.json b/.vscode/tasks.json new file mode 100644 index 00000000000..9cf1c9d8f3f --- /dev/null +++ b/.vscode/tasks.json @@ -0,0 +1,42 @@ +// Available variables which can be used inside of strings. +// ${workspaceRoot}: the root folder of the team +// ${file}: the current opened file +// ${fileBasename}: the current opened file's basename +// ${fileDirname}: the current opened file's dirname +// ${fileExtname}: the current opened file's extension +// ${cwd}: the current working directory of the spawned process +{ + "version": "0.1.0", + "command": "jake", + "isShellCommand": true, + "showOutput": "silent", + "tasks": [ + { + "taskName": "local", + "isBuildCommand": true, + "showOutput": "silent", + "problemMatcher": [ + "$tsc" + ] + }, + { + "taskName": "lint-server", + "args": [], + "problemMatcher": { + "owner": "typescript", + "fileLocation": ["relative", "${workspaceRoot}"], + "pattern": { + "regexp": "^(warning|error)\\s+([^(]+)\\s+\\((\\d+|\\d+,\\d+|\\d+,\\d+,\\d+,\\d+)\\):\\s+(.*)$", + "severity": 1, + "file": 2, + "location": 3, + "message": 4 + }, + "watchedTaskBeginsRegExp": "^\\*\\*\\*Lint failure\\*\\*\\*$", + "watchedTaskEndsRegExp": "^\\*\\*\\* Total \\d+ failures\\.$" + }, + "showOutput": "always", + "isWatching": true + } + ] +} \ No newline at end of file diff --git a/CONTRIBUTING.md b/CONTRIBUTING.md index 41a16fff3eb..c2865280f44 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. 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. +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. ## Housekeeping Your pull request should: diff --git a/Jakefile.js b/Jakefile.js index 3ac2e8fad13..943f2eff5ec 100644 --- a/Jakefile.js +++ b/Jakefile.js @@ -4,6 +4,7 @@ var fs = require("fs"); var os = require("os"); var path = require("path"); var child_process = require("child_process"); +var Linter = require("tslint"); // Variables var compilerDirectory = "src/compiler/"; @@ -206,6 +207,9 @@ function concatenateFiles(destinationFile, sourceFiles) { var useDebugMode = true; var host = (process.env.host || process.env.TYPESCRIPT_HOST || "node"); var compilerFilename = "tsc.js"; +var LKGCompiler = path.join(LKGDirectory, compilerFilename); +var builtLocalCompiler = path.join(builtLocalDirectory, compilerFilename); + /* Compiles a file from a list of sources * @param outFile: the target file name * @param sources: an array of the names of the source files @@ -220,7 +224,7 @@ var compilerFilename = "tsc.js"; */ function compileFile(outFile, sources, prereqs, prefixes, useBuiltCompiler, noOutFile, generateDeclarations, outDir, preserveConstEnums, keepComments, noResolve, stripInternal, callback) { file(outFile, prereqs, function() { - var dir = useBuiltCompiler ? builtLocalDirectory : LKGDirectory; + var compilerPath = useBuiltCompiler ? builtLocalCompiler : LKGCompiler; var options = "--module commonjs --noImplicitAny --noEmitOnError"; // Keep comments when specifically requested @@ -257,7 +261,7 @@ function compileFile(outFile, sources, prereqs, prefixes, useBuiltCompiler, noOu options += " --stripInternal" } - var cmd = host + " " + dir + compilerFilename + " " + options + " "; + var cmd = host + " " + compilerPath + " " + options + " "; cmd = cmd + sources.join(" "); console.log(cmd + "\n"); @@ -328,7 +332,7 @@ compileFile(processDiagnosticMessagesJs, // The generated diagnostics map; built for the compiler and for the 'generate-diagnostics' task file(diagnosticInfoMapTs, [processDiagnosticMessagesJs, diagnosticMessagesJson], function () { - var cmd = "node " + processDiagnosticMessagesJs + " " + diagnosticMessagesJson; + var cmd = host + " " + processDiagnosticMessagesJs + " " + diagnosticMessagesJson; console.log(cmd); var ex = jake.createExec([cmd]); // Add listeners for output and error @@ -374,7 +378,7 @@ task("setDebugMode", function() { }); task("configure-nightly", [configureNightlyJs], function() { - var cmd = "node " + configureNightlyJs + " " + packageJson + " " + programTs; + var cmd = host + " " + configureNightlyJs + " " + packageJson + " " + programTs; console.log(cmd); exec(cmd); }, { async: true }); @@ -386,6 +390,32 @@ task("publish-nightly", ["configure-nightly", "LKG", "clean", "setDebugMode", "r exec(cmd); }); +var scriptsTsdJson = path.join(scriptsDirectory, "tsd.json"); +file(scriptsTsdJson); + +task("tsd-scripts", [scriptsTsdJson], function () { + var cmd = "tsd --config " + scriptsTsdJson + " install"; + console.log(cmd) + exec(cmd); +}, { async: true }) + +var importDefinitelyTypedTestsDirectory = path.join(scriptsDirectory, "importDefinitelyTypedTests"); +var importDefinitelyTypedTestsJs = path.join(importDefinitelyTypedTestsDirectory, "importDefinitelyTypedTests.js"); +var importDefinitelyTypedTestsTs = path.join(importDefinitelyTypedTestsDirectory, "importDefinitelyTypedTests.ts"); + +file(importDefinitelyTypedTestsTs); +file(importDefinitelyTypedTestsJs, ["tsd-scripts", importDefinitelyTypedTestsTs], function () { + var cmd = host + " " + LKGCompiler + " -p " + importDefinitelyTypedTestsDirectory; + console.log(cmd); + exec(cmd); +}, { async: true }); + +task("importDefinitelyTypedTests", [importDefinitelyTypedTestsJs], function () { + var cmd = host + " " + importDefinitelyTypedTestsJs + " ./ ../DefinitelyTyped"; + console.log(cmd); + exec(cmd); +}, { async: true }); + // Local target to build the compiler and services var tscFile = path.join(builtLocalDirectory, compilerFilename); compileFile(tscFile, compilerSources, [builtLocalDirectory, copyright].concat(compilerSources), [copyright], /*useBuiltCompiler:*/ false); @@ -394,6 +424,7 @@ var servicesFile = path.join(builtLocalDirectory, "typescriptServices.js"); var standaloneDefinitionsFile = path.join(builtLocalDirectory, "typescriptServices.d.ts"); var nodePackageFile = path.join(builtLocalDirectory, "typescript.js"); var nodeDefinitionsFile = path.join(builtLocalDirectory, "typescript.d.ts"); +var nodeStandaloneDefinitionsFile = path.join(builtLocalDirectory, "typescript_standalone.d.ts"); compileFile(servicesFile, servicesSources,[builtLocalDirectory, copyright].concat(servicesSources), /*prefixes*/ [copyright], @@ -410,11 +441,19 @@ compileFile(servicesFile, servicesSources,[builtLocalDirectory, copyright].conca prependFile(copyright, standaloneDefinitionsFile); - // Create the node definition file by replacing 'ts' module with '"typescript"' as a module. + // Stanalone/web definition file using global 'ts' namespace jake.cpR(standaloneDefinitionsFile, nodeDefinitionsFile, {silent: true}); var definitionFileContents = fs.readFileSync(nodeDefinitionsFile).toString(); - definitionFileContents = definitionFileContents.replace(/declare (namespace|module) ts/g, 'declare module "typescript"'); - fs.writeFileSync(nodeDefinitionsFile, definitionFileContents); + + // Official node package definition file, pointed to by 'typings' in package.json + // Created by appending 'export = ts;' at the end of the standalone file to turn it into an external module + var nodeDefinitionsFileContents = definitionFileContents + "\r\nexport = ts;"; + fs.writeFileSync(nodeDefinitionsFile, nodeDefinitionsFileContents); + + // Node package definition file to be distributed without the package. Created by replacing + // 'ts' namespace with '"typescript"' as a module. + var nodeStandaloneDefinitionsFileContents = definitionFileContents.replace(/declare (namespace|module) ts/g, 'declare module "typescript"'); + fs.writeFileSync(nodeStandaloneDefinitionsFile, nodeStandaloneDefinitionsFileContents); }); @@ -771,17 +810,112 @@ task("update-sublime", ["local", serverFile], function() { jake.cpR(serverFile + ".map", "../TypeScript-Sublime-Plugin/tsserver/"); }); +var tslintRuleDir = "scripts/tslint"; +var tslintRules = ([ + "nextLineRule", + "noInferrableTypesRule", + "noNullRule", + "booleanTriviaRule" +]); +var tslintRulesFiles = tslintRules.map(function(p) { + return path.join(tslintRuleDir, p + ".ts"); +}); +var tslintRulesOutFiles = tslintRules.map(function(p) { + return path.join(builtLocalDirectory, "tslint", p + ".js"); +}); +desc("Compiles tslint rules to js"); +task("build-rules", tslintRulesOutFiles); +tslintRulesFiles.forEach(function(ruleFile, i) { + compileFile(tslintRulesOutFiles[i], [ruleFile], [ruleFile], [], /*useBuiltCompiler*/ true, /*noOutFile*/ true, /*generateDeclarations*/ false, path.join(builtLocalDirectory, "tslint")); +}); + +function getLinterOptions() { + return { + configuration: require("./tslint.json"), + formatter: "prose", + formattersDirectory: undefined, + rulesDirectory: "built/local/tslint" + }; +} + +function lintFileContents(options, path, contents) { + var ll = new Linter(path, contents, options); + return ll.lint(); +} + +function lintFile(options, path) { + var contents = fs.readFileSync(path, "utf8"); + return lintFileContents(options, path, contents); +} + +function lintFileAsync(options, path, cb) { + fs.readFile(path, "utf8", function(err, contents) { + if (err) { + return cb(err); + } + var result = lintFileContents(options, path, contents); + cb(undefined, result); + }); +} + +var lintTargets = compilerSources.concat(harnessCoreSources); + // if the codebase were free of linter errors we could make jake runtests // run this task automatically desc("Runs tslint on the compiler sources"); -task("lint", [], function() { - function success(f) { return function() { console.log('SUCCESS: No linter errors in ' + f + '\n'); }}; - function failure(f) { return function() { console.log('FAILURE: Please fix linting errors in ' + f + '\n') }}; - - var lintTargets = compilerSources.concat(harnessCoreSources); +task("lint", ["build-rules"], function() { + var lintOptions = getLinterOptions(); for (var i in lintTargets) { - var f = lintTargets[i]; - var cmd = 'tslint -c tslint.json ' + f; - exec(cmd, success(f), failure(f)); + var result = lintFile(lintOptions, lintTargets[i]); + if (result.failureCount > 0) { + console.log(result.output); + fail('Linter errors.', result.failureCount); + } } -}, { async: true }); +}); + +/** + * This is required because file watches on Windows get fires _twice_ + * when a file changes on some node/windows version configuations + * (node v4 and win 10, for example). By not running a lint for a file + * which already has a pending lint, we avoid duplicating our work. + * (And avoid printing duplicate results!) + */ +var lintSemaphores = {}; + +function lintWatchFile(filename) { + fs.watch(filename, {persistent: true}, function(event) { + if (event !== "change") { + return; + } + + if (!lintSemaphores[filename]) { + lintSemaphores[filename] = true; + lintFileAsync(getLinterOptions(), filename, function(err, result) { + delete lintSemaphores[filename]; + if (err) { + console.log(err); + return; + } + if (result.failureCount > 0) { + console.log("***Lint failure***"); + for (var i = 0; i < result.failures.length; i++) { + var failure = result.failures[i]; + var start = failure.startPosition.lineAndCharacter; + var end = failure.endPosition.lineAndCharacter; + console.log("warning " + filename + " (" + (start.line + 1) + "," + (start.character + 1) + "," + (end.line + 1) + "," + (end.character + 1) + "): " + failure.failure); + } + console.log("*** Total " + result.failureCount + " failures."); + } + }); + } + }); +} + +desc("Watches files for changes to rerun a lint pass"); +task("lint-server", ["build-rules"], function() { + console.log("Watching ./src for changes to linted files"); + for (var i = 0; i < lintTargets.length; i++) { + lintWatchFile(lintTargets[i]); + } +}); diff --git a/README.md b/README.md index c474f62fb4c..e27e7a99fa7 100644 --- a/README.md +++ b/README.md @@ -30,7 +30,7 @@ There are many ways to [contribute](https://github.com/Microsoft/TypeScript/blob * Engage with other TypeScript users and developers on [StackOverflow](http://stackoverflow.com/questions/tagged/typescript). * Join the [#typescript](http://twitter.com/#!/search/realtime/%23typescript) discussion on Twitter. * [Contribute bug fixes](https://github.com/Microsoft/TypeScript/blob/master/CONTRIBUTING.md). -* Read the language specification ([docx](http://go.microsoft.com/fwlink/?LinkId=267121), [pdf](http://go.microsoft.com/fwlink/?LinkId=267238)). +* Read the language specification ([docx](https://github.com/Microsoft/TypeScript/blob/master/doc/TypeScript%20Language%20Specification.docx?raw=true), [pdf](https://github.com/Microsoft/TypeScript/blob/master/doc/TypeScript%20Language%20Specification.pdf?raw=true), [md](https://github.com/Microsoft/TypeScript/blob/master/doc/spec.md)). ## Documentation diff --git a/lib/lib.core.es6.d.ts b/lib/lib.core.es6.d.ts index fd115497f8a..6d6a68559f8 100644 --- a/lib/lib.core.es6.d.ts +++ b/lib/lib.core.es6.d.ts @@ -3965,7 +3965,34 @@ interface ObjectConstructor { * Copy the values of all of the enumerable own properties from one or more source objects to a * target object. Returns the target object. * @param target The target object to copy to. - * @param sources One or more source objects to copy properties from. + * @param source The source object from which to copy properties. + */ + assign(target: T, source: U): T & U; + + /** + * Copy the values of all of the enumerable own properties from one or more source objects to a + * target object. Returns the target object. + * @param target The target object to copy to. + * @param source1 The first source object from which to copy properties. + * @param source2 The second source object from which to copy properties. + */ + assign(target: T, source1: U, source2: V): T & U & V; + + /** + * Copy the values of all of the enumerable own properties from one or more source objects to a + * target object. Returns the target object. + * @param target The target object to copy to. + * @param source1 The first source object from which to copy properties. + * @param source2 The second source object from which to copy properties. + * @param source3 The third source object from which to copy properties. + */ + assign(target: T, source1: U, source2: V, source3: W): T & U & V & W; + + /** + * Copy the values of all of the enumerable own properties from one or more source objects to a + * target object. Returns the target object. + * @param target The target object to copy to. + * @param sources One or more source objects from which to copy properties */ assign(target: any, ...sources: any[]): any; diff --git a/lib/lib.d.ts b/lib/lib.d.ts index c55970d9aca..a65fc96e43f 100644 --- a/lib/lib.d.ts +++ b/lib/lib.d.ts @@ -3881,7 +3881,7 @@ declare module Intl { currency?: string; currencyDisplay?: string; useGrouping?: boolean; - minimumintegerDigits?: number; + minimumIntegerDigits?: number; minimumFractionDigits?: number; maximumFractionDigits?: number; minimumSignificantDigits?: number; @@ -3894,7 +3894,7 @@ declare module Intl { style: string; currency?: string; currencyDisplay?: string; - minimumintegerDigits: number; + minimumIntegerDigits: number; minimumFractionDigits: number; maximumFractionDigits: number; minimumSignificantDigits?: number; @@ -3928,6 +3928,7 @@ declare module Intl { timeZoneName?: string; formatMatcher?: string; hour12?: boolean; + timeZone?: string; } interface ResolvedDateTimeFormatOptions { @@ -3997,18 +3998,45 @@ interface Number { interface Date { /** - * Converts a date to a string by using the current or specified locale. + * Converts a date and time to a string by using the current or specified locale. * @param locales An array of locale strings that contain one or more language or locale tags. If you include more than one locale string, list them in descending order of priority so that the first entry is the preferred locale. If you omit this parameter, the default locale of the JavaScript runtime is used. * @param options An object that contains one or more properties that specify comparison options. */ toLocaleString(locales?: string[], options?: Intl.DateTimeFormatOptions): string; + /** + * Converts a date to a string by using the current or specified locale. + * @param locales An array of locale strings that contain one or more language or locale tags. If you include more than one locale string, list them in descending order of priority so that the first entry is the preferred locale. If you omit this parameter, the default locale of the JavaScript runtime is used. + * @param options An object that contains one or more properties that specify comparison options. + */ + toLocaleDateString(locales?: string[], options?: Intl.DateTimeFormatOptions): string; + /** + * Converts a time to a string by using the current or specified locale. + * @param locale Locale tag. If you omit this parameter, the default locale of the JavaScript runtime is used. + * @param options An object that contains one or more properties that specify comparison options. + */ + toLocaleTimeString(locale?: string[], options?: Intl.DateTimeFormatOptions): string; + + /** + * Converts a date and time to a string by using the current or specified locale. + * @param locale Locale tag. If you omit this parameter, the default locale of the JavaScript runtime is used. + * @param options An object that contains one or more properties that specify comparison options. + */ + toLocaleString(locale?: string, options?: Intl.DateTimeFormatOptions): string; + /** * Converts a date to a string by using the current or specified locale. * @param locale Locale tag. If you omit this parameter, the default locale of the JavaScript runtime is used. * @param options An object that contains one or more properties that specify comparison options. */ - toLocaleString(locale?: string, options?: Intl.DateTimeFormatOptions): string; + toLocaleDateString(locale?: string, options?: Intl.DateTimeFormatOptions): string; + + /** + * Converts a time to a string by using the current or specified locale. + * @param locale Locale tag. If you omit this parameter, the default locale of the JavaScript runtime is used. + * @param options An object that contains one or more properties that specify comparison options. + */ + toLocaleTimeString(locale?: string, options?: Intl.DateTimeFormatOptions): string; } diff --git a/lib/lib.dom.d.ts b/lib/lib.dom.d.ts index 54461afef40..849560ac0d2 100644 --- a/lib/lib.dom.d.ts +++ b/lib/lib.dom.d.ts @@ -57,7 +57,7 @@ declare module Intl { currency?: string; currencyDisplay?: string; useGrouping?: boolean; - minimumintegerDigits?: number; + minimumIntegerDigits?: number; minimumFractionDigits?: number; maximumFractionDigits?: number; minimumSignificantDigits?: number; @@ -70,7 +70,7 @@ declare module Intl { style: string; currency?: string; currencyDisplay?: string; - minimumintegerDigits: number; + minimumIntegerDigits: number; minimumFractionDigits: number; maximumFractionDigits: number; minimumSignificantDigits?: number; @@ -104,6 +104,7 @@ declare module Intl { timeZoneName?: string; formatMatcher?: string; hour12?: boolean; + timeZone?: string; } interface ResolvedDateTimeFormatOptions { @@ -173,18 +174,45 @@ interface Number { interface Date { /** - * Converts a date to a string by using the current or specified locale. + * Converts a date and time to a string by using the current or specified locale. * @param locales An array of locale strings that contain one or more language or locale tags. If you include more than one locale string, list them in descending order of priority so that the first entry is the preferred locale. If you omit this parameter, the default locale of the JavaScript runtime is used. * @param options An object that contains one or more properties that specify comparison options. */ toLocaleString(locales?: string[], options?: Intl.DateTimeFormatOptions): string; + /** + * Converts a date to a string by using the current or specified locale. + * @param locales An array of locale strings that contain one or more language or locale tags. If you include more than one locale string, list them in descending order of priority so that the first entry is the preferred locale. If you omit this parameter, the default locale of the JavaScript runtime is used. + * @param options An object that contains one or more properties that specify comparison options. + */ + toLocaleDateString(locales?: string[], options?: Intl.DateTimeFormatOptions): string; + /** + * Converts a time to a string by using the current or specified locale. + * @param locale Locale tag. If you omit this parameter, the default locale of the JavaScript runtime is used. + * @param options An object that contains one or more properties that specify comparison options. + */ + toLocaleTimeString(locale?: string[], options?: Intl.DateTimeFormatOptions): string; + + /** + * Converts a date and time to a string by using the current or specified locale. + * @param locale Locale tag. If you omit this parameter, the default locale of the JavaScript runtime is used. + * @param options An object that contains one or more properties that specify comparison options. + */ + toLocaleString(locale?: string, options?: Intl.DateTimeFormatOptions): string; + /** * Converts a date to a string by using the current or specified locale. * @param locale Locale tag. If you omit this parameter, the default locale of the JavaScript runtime is used. * @param options An object that contains one or more properties that specify comparison options. */ - toLocaleString(locale?: string, options?: Intl.DateTimeFormatOptions): string; + toLocaleDateString(locale?: string, options?: Intl.DateTimeFormatOptions): string; + + /** + * Converts a time to a string by using the current or specified locale. + * @param locale Locale tag. If you omit this parameter, the default locale of the JavaScript runtime is used. + * @param options An object that contains one or more properties that specify comparison options. + */ + toLocaleTimeString(locale?: string, options?: Intl.DateTimeFormatOptions): string; } diff --git a/lib/lib.es6.d.ts b/lib/lib.es6.d.ts index de051a44edd..75ba647a128 100644 --- a/lib/lib.es6.d.ts +++ b/lib/lib.es6.d.ts @@ -3965,7 +3965,34 @@ interface ObjectConstructor { * Copy the values of all of the enumerable own properties from one or more source objects to a * target object. Returns the target object. * @param target The target object to copy to. - * @param sources One or more source objects to copy properties from. + * @param source The source object from which to copy properties. + */ + assign(target: T, source: U): T & U; + + /** + * Copy the values of all of the enumerable own properties from one or more source objects to a + * target object. Returns the target object. + * @param target The target object to copy to. + * @param source1 The first source object from which to copy properties. + * @param source2 The second source object from which to copy properties. + */ + assign(target: T, source1: U, source2: V): T & U & V; + + /** + * Copy the values of all of the enumerable own properties from one or more source objects to a + * target object. Returns the target object. + * @param target The target object to copy to. + * @param source1 The first source object from which to copy properties. + * @param source2 The second source object from which to copy properties. + * @param source3 The third source object from which to copy properties. + */ + assign(target: T, source1: U, source2: V, source3: W): T & U & V & W; + + /** + * Copy the values of all of the enumerable own properties from one or more source objects to a + * target object. Returns the target object. + * @param target The target object to copy to. + * @param sources One or more source objects from which to copy properties */ assign(target: any, ...sources: any[]): any; @@ -5169,7 +5196,7 @@ declare module Intl { currency?: string; currencyDisplay?: string; useGrouping?: boolean; - minimumintegerDigits?: number; + minimumIntegerDigits?: number; minimumFractionDigits?: number; maximumFractionDigits?: number; minimumSignificantDigits?: number; @@ -5182,7 +5209,7 @@ declare module Intl { style: string; currency?: string; currencyDisplay?: string; - minimumintegerDigits: number; + minimumIntegerDigits: number; minimumFractionDigits: number; maximumFractionDigits: number; minimumSignificantDigits?: number; @@ -5216,6 +5243,7 @@ declare module Intl { timeZoneName?: string; formatMatcher?: string; hour12?: boolean; + timeZone?: string; } interface ResolvedDateTimeFormatOptions { @@ -5285,18 +5313,45 @@ interface Number { interface Date { /** - * Converts a date to a string by using the current or specified locale. + * Converts a date and time to a string by using the current or specified locale. * @param locales An array of locale strings that contain one or more language or locale tags. If you include more than one locale string, list them in descending order of priority so that the first entry is the preferred locale. If you omit this parameter, the default locale of the JavaScript runtime is used. * @param options An object that contains one or more properties that specify comparison options. */ toLocaleString(locales?: string[], options?: Intl.DateTimeFormatOptions): string; + /** + * Converts a date to a string by using the current or specified locale. + * @param locales An array of locale strings that contain one or more language or locale tags. If you include more than one locale string, list them in descending order of priority so that the first entry is the preferred locale. If you omit this parameter, the default locale of the JavaScript runtime is used. + * @param options An object that contains one or more properties that specify comparison options. + */ + toLocaleDateString(locales?: string[], options?: Intl.DateTimeFormatOptions): string; + /** + * Converts a time to a string by using the current or specified locale. + * @param locale Locale tag. If you omit this parameter, the default locale of the JavaScript runtime is used. + * @param options An object that contains one or more properties that specify comparison options. + */ + toLocaleTimeString(locale?: string[], options?: Intl.DateTimeFormatOptions): string; + + /** + * Converts a date and time to a string by using the current or specified locale. + * @param locale Locale tag. If you omit this parameter, the default locale of the JavaScript runtime is used. + * @param options An object that contains one or more properties that specify comparison options. + */ + toLocaleString(locale?: string, options?: Intl.DateTimeFormatOptions): string; + /** * Converts a date to a string by using the current or specified locale. * @param locale Locale tag. If you omit this parameter, the default locale of the JavaScript runtime is used. * @param options An object that contains one or more properties that specify comparison options. */ - toLocaleString(locale?: string, options?: Intl.DateTimeFormatOptions): string; + toLocaleDateString(locale?: string, options?: Intl.DateTimeFormatOptions): string; + + /** + * Converts a time to a string by using the current or specified locale. + * @param locale Locale tag. If you omit this parameter, the default locale of the JavaScript runtime is used. + * @param options An object that contains one or more properties that specify comparison options. + */ + toLocaleTimeString(locale?: string, options?: Intl.DateTimeFormatOptions): string; } diff --git a/lib/lib.webworker.d.ts b/lib/lib.webworker.d.ts index 0f3e85da9f1..85bcfb1498e 100644 --- a/lib/lib.webworker.d.ts +++ b/lib/lib.webworker.d.ts @@ -57,7 +57,7 @@ declare module Intl { currency?: string; currencyDisplay?: string; useGrouping?: boolean; - minimumintegerDigits?: number; + minimumIntegerDigits?: number; minimumFractionDigits?: number; maximumFractionDigits?: number; minimumSignificantDigits?: number; @@ -70,7 +70,7 @@ declare module Intl { style: string; currency?: string; currencyDisplay?: string; - minimumintegerDigits: number; + minimumIntegerDigits: number; minimumFractionDigits: number; maximumFractionDigits: number; minimumSignificantDigits?: number; @@ -104,6 +104,7 @@ declare module Intl { timeZoneName?: string; formatMatcher?: string; hour12?: boolean; + timeZone?: string; } interface ResolvedDateTimeFormatOptions { @@ -173,18 +174,45 @@ interface Number { interface Date { /** - * Converts a date to a string by using the current or specified locale. + * Converts a date and time to a string by using the current or specified locale. * @param locales An array of locale strings that contain one or more language or locale tags. If you include more than one locale string, list them in descending order of priority so that the first entry is the preferred locale. If you omit this parameter, the default locale of the JavaScript runtime is used. * @param options An object that contains one or more properties that specify comparison options. */ toLocaleString(locales?: string[], options?: Intl.DateTimeFormatOptions): string; + /** + * Converts a date to a string by using the current or specified locale. + * @param locales An array of locale strings that contain one or more language or locale tags. If you include more than one locale string, list them in descending order of priority so that the first entry is the preferred locale. If you omit this parameter, the default locale of the JavaScript runtime is used. + * @param options An object that contains one or more properties that specify comparison options. + */ + toLocaleDateString(locales?: string[], options?: Intl.DateTimeFormatOptions): string; + /** + * Converts a time to a string by using the current or specified locale. + * @param locale Locale tag. If you omit this parameter, the default locale of the JavaScript runtime is used. + * @param options An object that contains one or more properties that specify comparison options. + */ + toLocaleTimeString(locale?: string[], options?: Intl.DateTimeFormatOptions): string; + + /** + * Converts a date and time to a string by using the current or specified locale. + * @param locale Locale tag. If you omit this parameter, the default locale of the JavaScript runtime is used. + * @param options An object that contains one or more properties that specify comparison options. + */ + toLocaleString(locale?: string, options?: Intl.DateTimeFormatOptions): string; + /** * Converts a date to a string by using the current or specified locale. * @param locale Locale tag. If you omit this parameter, the default locale of the JavaScript runtime is used. * @param options An object that contains one or more properties that specify comparison options. */ - toLocaleString(locale?: string, options?: Intl.DateTimeFormatOptions): string; + toLocaleDateString(locale?: string, options?: Intl.DateTimeFormatOptions): string; + + /** + * Converts a time to a string by using the current or specified locale. + * @param locale Locale tag. If you omit this parameter, the default locale of the JavaScript runtime is used. + * @param options An object that contains one or more properties that specify comparison options. + */ + toLocaleTimeString(locale?: string, options?: Intl.DateTimeFormatOptions): string; } diff --git a/lib/tsc.js b/lib/tsc.js index 591a22bceb9..3d2b7f3956a 100644 --- a/lib/tsc.js +++ b/lib/tsc.js @@ -47,7 +47,6 @@ var ts; })(ts.DiagnosticCategory || (ts.DiagnosticCategory = {})); var DiagnosticCategory = ts.DiagnosticCategory; })(ts || (ts = {})); -/// var ts; (function (ts) { function createFileMap(getCanonicalFileName) { @@ -569,9 +568,6 @@ 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) { @@ -731,7 +727,6 @@ var ts; Debug.fail = fail; })(Debug = ts.Debug || (ts.Debug = {})); })(ts || (ts = {})); -/// var ts; (function (ts) { ts.sys = (function () { @@ -1003,7 +998,6 @@ var ts; } })(); })(ts || (ts = {})); -/// var ts; (function (ts) { ts.Diagnostics = { @@ -1248,7 +1242,7 @@ var ts; 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'." }, + 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." }, @@ -1419,6 +1413,7 @@ var ts; The_arguments_object_cannot_be_referenced_in_an_async_arrow_function_Consider_using_a_standard_async_function_expression: { code: 2522, category: ts.DiagnosticCategory.Error, key: "The 'arguments' object cannot be referenced in an async arrow function. Consider using a standard async function expression." }, yield_expressions_cannot_be_used_in_a_parameter_initializer: { code: 2523, category: ts.DiagnosticCategory.Error, key: "'yield' expressions cannot be used in a parameter initializer." }, await_expressions_cannot_be_used_in_a_parameter_initializer: { code: 2524, category: ts.DiagnosticCategory.Error, key: "'await' expressions cannot be used in a parameter initializer." }, + Initializer_provides_no_value_for_this_binding_element_and_the_binding_element_has_no_default_value: { code: 2525, category: ts.DiagnosticCategory.Error, key: "Initializer provides no value for this binding element and the binding element has no default value." }, JSX_element_attributes_type_0_must_be_an_object_type: { code: 2600, category: ts.DiagnosticCategory.Error, key: "JSX element attributes type '{0}' must be an object type." }, The_return_type_of_a_JSX_element_constructor_must_return_an_object_type: { code: 2601, category: ts.DiagnosticCategory.Error, key: "The return type of a JSX element constructor must return an object type." }, JSX_element_implicitly_has_type_any_because_the_global_type_JSX_Element_does_not_exist: { code: 2602, category: ts.DiagnosticCategory.Error, key: "JSX element implicitly has type 'any' because the global type 'JSX.Element' does not exist." }, @@ -1431,6 +1426,10 @@ var ts; Cannot_emit_namespaced_JSX_elements_in_React: { code: 2650, category: ts.DiagnosticCategory.Error, key: "Cannot emit namespaced JSX elements in React" }, A_member_initializer_in_a_enum_declaration_cannot_reference_members_declared_after_it_including_members_defined_in_other_enums: { code: 2651, category: ts.DiagnosticCategory.Error, key: "A member initializer in a enum declaration cannot reference members declared after it, including members defined in other enums." }, Merged_declaration_0_cannot_include_a_default_export_declaration_Consider_adding_a_separate_export_default_0_declaration_instead: { code: 2652, category: ts.DiagnosticCategory.Error, key: "Merged declaration '{0}' cannot include a default export declaration. Consider adding a separate 'export default {0}' declaration instead." }, + Non_abstract_class_expression_does_not_implement_inherited_abstract_member_0_from_class_1: { code: 2653, category: ts.DiagnosticCategory.Error, key: "Non-abstract class expression does not implement inherited abstract member '{0}' from class '{1}'." }, + Exported_external_package_typings_file_cannot_contain_tripleslash_references_Please_contact_the_package_author_to_update_the_package_definition: { code: 2654, category: ts.DiagnosticCategory.Error, key: "Exported external package typings file cannot contain tripleslash references. Please contact the package author to update the package definition." }, + Exported_external_package_typings_can_only_be_in_d_ts_files_Please_contact_the_package_author_to_update_the_package_definition: { code: 2655, category: ts.DiagnosticCategory.Error, key: "Exported external package typings can only be in '.d.ts' files. Please contact the package author to update the package definition." }, + Exported_external_package_typings_file_0_is_not_a_module_Please_contact_the_package_author_to_update_the_package_definition: { code: 2656, category: ts.DiagnosticCategory.Error, key: "Exported external package typings file '{0}' is not a module. Please contact the package author to update the package definition." }, 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}'." }, @@ -1564,13 +1563,14 @@ var ts; Specifies_the_end_of_line_sequence_to_be_used_when_emitting_files_Colon_CRLF_dos_or_LF_unix: { code: 6060, category: ts.DiagnosticCategory.Message, key: "Specifies the end of line sequence to be used when emitting files: 'CRLF' (dos) or 'LF' (unix)." }, NEWLINE: { code: 6061, category: ts.DiagnosticCategory.Message, key: "NEWLINE" }, Argument_for_newLine_option_must_be_CRLF_or_LF: { code: 6062, category: ts.DiagnosticCategory.Error, key: "Argument for '--newLine' option must be 'CRLF' or 'LF'." }, + Argument_for_moduleResolution_option_must_be_node_or_classic: { code: 6063, category: ts.DiagnosticCategory.Error, key: "Argument for '--moduleResolution' option must be 'node' or 'classic'." }, Specify_JSX_code_generation_Colon_preserve_or_react: { code: 6080, category: ts.DiagnosticCategory.Message, key: "Specify JSX code generation: 'preserve' or 'react'" }, Argument_for_jsx_must_be_preserve_or_react: { code: 6081, category: ts.DiagnosticCategory.Message, key: "Argument for '--jsx' must be 'preserve' or 'react'." }, Enables_experimental_support_for_ES7_decorators: { code: 6065, category: ts.DiagnosticCategory.Message, key: "Enables experimental support for ES7 decorators." }, Enables_experimental_support_for_emitting_type_metadata_for_decorators: { code: 6066, category: ts.DiagnosticCategory.Message, key: "Enables experimental support for emitting type metadata for decorators." }, Option_experimentalAsyncFunctions_cannot_be_specified_when_targeting_ES5_or_lower: { code: 6067, category: ts.DiagnosticCategory.Message, key: "Option 'experimentalAsyncFunctions' cannot be specified when targeting ES5 or lower." }, Enables_experimental_support_for_ES7_async_functions: { code: 6068, category: ts.DiagnosticCategory.Message, key: "Enables experimental support for ES7 async functions." }, - Specifies_module_resolution_strategy_Colon_node_Node_or_classic_TypeScript_pre_1_6: { code: 6069, category: ts.DiagnosticCategory.Message, key: "Specifies module resolution strategy: 'node' (Node) or 'classic' (TypeScript pre 1.6) ." }, + Specifies_module_resolution_strategy_Colon_node_Node_js_or_classic_TypeScript_pre_1_6: { code: 6069, category: ts.DiagnosticCategory.Message, key: "Specifies module resolution strategy: 'node' (Node.js) or 'classic' (TypeScript pre-1.6)." }, Initializes_a_TypeScript_project_and_creates_a_tsconfig_json_file: { code: 6070, category: ts.DiagnosticCategory.Message, key: "Initializes a TypeScript project and creates a tsconfig.json file." }, Successfully_created_a_tsconfig_json_file: { code: 6071, category: ts.DiagnosticCategory.Message, key: "Successfully created a tsconfig.json file." }, Suppress_excess_property_checks_for_object_literals: { code: 6072, category: ts.DiagnosticCategory.Message, key: "Suppress excess property checks for object literals." }, @@ -1618,10 +1618,12 @@ var ts; A_constructor_cannot_contain_a_super_call_when_its_class_extends_null: { code: 17005, category: ts.DiagnosticCategory.Error, key: "A constructor cannot contain a 'super' call when its class extends 'null'" } }; })(ts || (ts = {})); -/// -/// var ts; (function (ts) { + function tokenIsIdentifierOrKeyword(token) { + return token >= 67; + } + ts.tokenIsIdentifierOrKeyword = tokenIsIdentifierOrKeyword; var textToToken = { "abstract": 113, "any": 115, @@ -1869,16 +1871,6 @@ var ts; } 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 || @@ -2913,7 +2905,7 @@ var ts; return token = 234; } function scanJsxIdentifier() { - if (token === 67) { + if (tokenIsIdentifierOrKeyword(token)) { var firstCharPosition = pos; while (pos < end) { var ch = text.charCodeAt(pos); @@ -2980,7 +2972,6 @@ var ts; } ts.createScanner = createScanner; })(ts || (ts = {})); -/// var ts; (function (ts) { ts.bindTime = 0; @@ -3694,7 +3685,6 @@ var ts; } } })(ts || (ts = {})); -/// var ts; (function (ts) { function getDeclarationOfKind(symbol, kind) { @@ -3759,21 +3749,21 @@ var ts; return true; } ts.arrayIsEqualTo = arrayIsEqualTo; - function hasResolvedModuleName(sourceFile, moduleNameText) { + function hasResolvedModule(sourceFile, moduleNameText) { return sourceFile.resolvedModules && ts.hasProperty(sourceFile.resolvedModules, moduleNameText); } - ts.hasResolvedModuleName = hasResolvedModuleName; - function getResolvedModuleFileName(sourceFile, moduleNameText) { - return hasResolvedModuleName(sourceFile, moduleNameText) ? sourceFile.resolvedModules[moduleNameText] : undefined; + ts.hasResolvedModule = hasResolvedModule; + function getResolvedModule(sourceFile, moduleNameText) { + return hasResolvedModule(sourceFile, moduleNameText) ? sourceFile.resolvedModules[moduleNameText] : undefined; } - ts.getResolvedModuleFileName = getResolvedModuleFileName; - function setResolvedModuleName(sourceFile, moduleNameText, resolvedFileName) { + ts.getResolvedModule = getResolvedModule; + function setResolvedModule(sourceFile, moduleNameText, resolvedModule) { if (!sourceFile.resolvedModules) { sourceFile.resolvedModules = {}; } - sourceFile.resolvedModules[moduleNameText] = resolvedFileName; + sourceFile.resolvedModules[moduleNameText] = resolvedModule; } - ts.setResolvedModuleName = setResolvedModuleName; + ts.setResolvedModule = setResolvedModule; function containsParseError(node) { aggregateChildData(node); return (node.parserContextFlags & 64) !== 0; @@ -4029,6 +4019,7 @@ var ts; } ts.getJsDocComments = getJsDocComments; ts.fullTripleSlashReferencePathRegEx = /^(\/\/\/\s*/; + ts.fullTripleSlashAMDReferencePathRegEx = /^(\/\/\/\s*/; function isTypeNode(node) { if (149 <= node.kind && node.kind <= 158) { return true; @@ -4975,11 +4966,21 @@ var ts; add: add, getGlobalDiagnostics: getGlobalDiagnostics, getDiagnostics: getDiagnostics, - getModificationCount: getModificationCount + getModificationCount: getModificationCount, + reattachFileDiagnostics: reattachFileDiagnostics }; function getModificationCount() { return modificationCount; } + function reattachFileDiagnostics(newFile) { + if (!ts.hasProperty(fileDiagnostics, newFile.fileName)) { + return; + } + for (var _i = 0, _a = fileDiagnostics[newFile.fileName]; _i < _a.length; _i++) { + var diagnostic = _a[_i]; + diagnostic.file = newFile; + } + } function add(diagnostic) { var diagnostics; if (diagnostic.file) { @@ -5632,8 +5633,6 @@ var ts; } ts.getTypeParameterOwner = getTypeParameterOwner; })(ts || (ts = {})); -/// -/// var ts; (function (ts) { var nodeConstructors = new Array(270); @@ -6124,10 +6123,6 @@ var ts; } } 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; @@ -6421,10 +6416,10 @@ var ts; return createIdentifier(isIdentifier(), diagnosticMessage); } function parseIdentifierName() { - return createIdentifier(isIdentifierOrKeyword()); + return createIdentifier(ts.tokenIsIdentifierOrKeyword(token)); } function isLiteralPropertyName() { - return isIdentifierOrKeyword() || + return ts.tokenIsIdentifierOrKeyword(token) || token === 9 || token === 8; } @@ -6444,7 +6439,7 @@ var ts; return parsePropertyNameWorker(false); } function isSimplePropertyName() { - return token === 9 || token === 8 || isIdentifierOrKeyword(); + return token === 9 || token === 8 || ts.tokenIsIdentifierOrKeyword(token); } function parseComputedPropertyName() { var node = createNode(134); @@ -6535,9 +6530,9 @@ var ts; case 20: return isHeritageClause(); case 21: - return isIdentifierOrKeyword(); + return ts.tokenIsIdentifierOrKeyword(token); case 13: - return isIdentifierOrKeyword() || token === 15; + return ts.tokenIsIdentifierOrKeyword(token) || token === 15; case 14: return true; case 22: @@ -6563,7 +6558,7 @@ var ts; } function nextTokenIsIdentifierOrKeyword() { nextToken(); - return isIdentifierOrKeyword(); + return ts.tokenIsIdentifierOrKeyword(token); } function isHeritageClauseExtendsOrImplementsKeyword() { if (token === 104 || @@ -6931,7 +6926,7 @@ var ts; return entity; } function parseRightSideOfDot(allowIdentifierNames) { - if (scanner.hasPrecedingLineBreak() && isIdentifierOrKeyword()) { + if (scanner.hasPrecedingLineBreak() && ts.tokenIsIdentifierOrKeyword(token)) { var matchesPattern = lookAhead(nextTokenIsIdentifierOrKeywordOnSameLine); if (matchesPattern) { return createMissingNode(67, true, ts.Diagnostics.Identifier_expected); @@ -7221,7 +7216,7 @@ var ts; return result; } } - if (isIdentifierOrKeyword()) { + if (ts.tokenIsIdentifierOrKeyword(token)) { return parsePropertyOrMethodSignature(); } } @@ -7459,9 +7454,6 @@ var ts; return allowInAnd(parseExpression); } function parseExpression() { - // Expression[in]: - // AssignmentExpression[in] - // Expression[in] , AssignmentExpression[in] var saveDecoratorContext = inDecoratorContext(); if (saveDecoratorContext) { setDecoratorContext(false); @@ -7486,15 +7478,6 @@ var ts; 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(); } @@ -8463,8 +8446,6 @@ var ts; return finishNode(node); } function parseThrowStatement() { - // ThrowStatement[Yield] : - // throw [no LineTerminator here]Expression[In, ?Yield]; var node = createNode(206); parseExpected(96); node.expression = scanner.hasPrecedingLineBreak() ? undefined : allowInAnd(parseExpression); @@ -8514,12 +8495,9 @@ var ts; return finishNode(expressionStatement); } } - function isIdentifierOrKeyword() { - return token >= 67; - } function nextTokenIsIdentifierOrKeywordOnSameLine() { nextToken(); - return isIdentifierOrKeyword() && !scanner.hasPrecedingLineBreak(); + return ts.tokenIsIdentifierOrKeyword(token) && !scanner.hasPrecedingLineBreak(); } function nextTokenIsFunctionKeywordOnSameLine() { nextToken(); @@ -8527,7 +8505,7 @@ var ts; } function nextTokenIsIdentifierOrKeywordOrNumberOnSameLine() { nextToken(); - return (isIdentifierOrKeyword() || token === 8) && !scanner.hasPrecedingLineBreak(); + return (ts.tokenIsIdentifierOrKeyword(token) || token === 8) && !scanner.hasPrecedingLineBreak(); } function isDeclaration() { while (true) { @@ -8555,7 +8533,7 @@ var ts; case 87: nextToken(); return token === 9 || token === 37 || - token === 15 || isIdentifierOrKeyword(); + token === 15 || ts.tokenIsIdentifierOrKeyword(token); case 80: nextToken(); if (token === 55 || token === 37 || @@ -9042,7 +9020,7 @@ var ts; if (isIndexSignature()) { return parseIndexSignatureDeclaration(fullStart, decorators, modifiers); } - if (isIdentifierOrKeyword() || + if (ts.tokenIsIdentifierOrKeyword(token) || token === 9 || token === 8 || token === 37 || @@ -9079,8 +9057,6 @@ var ts; return finishNode(node); } function parseHeritageClauses(isClassHeritageClause) { - // ClassTail[Yield,Await] : (Modified) See 14.5 - // ClassHeritage[?Yield,?Await]opt { ClassBody[?Yield,?Await]opt } if (isHeritageClause()) { return parseList(20, parseHeritageClause); } @@ -9170,12 +9146,13 @@ var ts; } function parseModuleOrNamespaceDeclaration(fullStart, decorators, modifiers, flags) { var node = createNode(216, fullStart); + var namespaceFlag = flags & 131072; node.decorators = decorators; setModifiers(node, modifiers); node.flags |= flags; node.name = parseIdentifier(); node.body = parseOptional(21) - ? parseModuleOrNamespaceDeclaration(getNodePos(), undefined, undefined, 1) + ? parseModuleOrNamespaceDeclaration(getNodePos(), undefined, undefined, 1 | namespaceFlag) : parseModuleBlock(); return finishNode(node); } @@ -9246,12 +9223,6 @@ var ts; return finishNode(importDeclaration); } function parseImportClause(identifier, fullStart) { - // ImportClause: - // ImportedDefaultBinding - // NameSpaceImport - // NamedImports - // ImportedDefaultBinding, NameSpaceImport - // ImportedDefaultBinding, NamedImports var importClause = createNode(221, fullStart); if (identifier) { importClause.name = identifier; @@ -9435,7 +9406,7 @@ var ts; case 95: return true; } - return isIdentifierOrKeyword(); + return ts.tokenIsIdentifierOrKeyword(token); } JSDocParser.isJSDocType = isJSDocType; function parseJSDocTypeExpressionForTests(content, start, length) { @@ -10208,7 +10179,6 @@ var ts; } })(IncrementalParser || (IncrementalParser = {})); })(ts || (ts = {})); -/// var ts; (function (ts) { var nextSymbolId = 1; @@ -10955,7 +10925,7 @@ var ts; var moduleReferenceLiteral = moduleReferenceExpression; var searchPath = ts.getDirectoryPath(getSourceFile(location).fileName); var moduleName = ts.escapeIdentifier(moduleReferenceLiteral.text); - if (!moduleName) { + if (moduleName === undefined) { return; } var isRelative = isExternalModuleNameRelative(moduleName); @@ -10965,8 +10935,8 @@ var ts; return symbol; } } - var fileName = ts.getResolvedModuleFileName(getSourceFile(location), moduleReferenceLiteral.text); - var sourceFile = fileName && host.getSourceFile(fileName); + var resolvedModule = ts.getResolvedModule(getSourceFile(location), moduleReferenceLiteral.text); + var sourceFile = resolvedModule && host.getSourceFile(resolvedModule.resolvedFileName); if (sourceFile) { if (sourceFile.symbol) { return sourceFile.symbol; @@ -12086,52 +12056,52 @@ var ts; return checkIdentifier(declaration.name); } if (ts.isBindingPattern(declaration.name)) { - return getTypeFromBindingPattern(declaration.name); + return getTypeFromBindingPattern(declaration.name, false); } return undefined; } - function getTypeFromBindingElement(element) { + function getTypeFromBindingElement(element, includePatternInType) { if (element.initializer) { return getWidenedType(checkExpressionCached(element.initializer)); } if (ts.isBindingPattern(element.name)) { - return getTypeFromBindingPattern(element.name); + return getTypeFromBindingPattern(element.name, includePatternInType); } return anyType; } - function getTypeFromObjectBindingPattern(pattern) { + function getTypeFromObjectBindingPattern(pattern, includePatternInType) { 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); + symbol.type = getTypeFromBindingElement(e, includePatternInType); + symbol.bindingElement = e; members[symbol.name] = symbol; }); - return createAnonymousType(undefined, members, emptyArray, emptyArray, undefined, undefined); + var result = createAnonymousType(undefined, members, emptyArray, emptyArray, undefined, undefined); + if (includePatternInType) { + result.pattern = pattern; + } + return result; } - function getTypeFromArrayBindingPattern(pattern) { - var hasSpreadElement = false; - var elementTypes = []; - ts.forEach(pattern.elements, function (e) { - elementTypes.push(e.kind === 185 || e.dotDotDotToken ? anyType : getTypeFromBindingElement(e)); - if (e.dotDotDotToken) { - hasSpreadElement = true; - } - }); - if (!elementTypes.length) { + function getTypeFromArrayBindingPattern(pattern, includePatternInType) { + var elements = pattern.elements; + if (elements.length === 0 || elements[elements.length - 1].dotDotDotToken) { return languageVersion >= 2 ? createIterableType(anyType) : anyArrayType; } - else if (hasSpreadElement) { - var unionOfElements = getUnionType(elementTypes); - return languageVersion >= 2 ? createIterableType(unionOfElements) : createArrayType(unionOfElements); + var elementTypes = ts.map(elements, function (e) { return e.kind === 185 ? anyType : getTypeFromBindingElement(e, includePatternInType); }); + if (includePatternInType) { + var result = createNewTupleType(elementTypes); + result.pattern = pattern; + return result; } return createTupleType(elementTypes); } - function getTypeFromBindingPattern(pattern) { + function getTypeFromBindingPattern(pattern, includePatternInType) { return pattern.kind === 159 - ? getTypeFromObjectBindingPattern(pattern) - : getTypeFromArrayBindingPattern(pattern); + ? getTypeFromObjectBindingPattern(pattern, includePatternInType) + : getTypeFromArrayBindingPattern(pattern, includePatternInType); } function getWidenedTypeForVariableLikeDeclaration(declaration, reportErrors) { var type = getTypeForVariableLikeDeclaration(declaration); @@ -13453,11 +13423,11 @@ var ts; } function createTupleType(elementTypes) { var id = getTypeListId(elementTypes); - var type = tupleTypes[id]; - if (!type) { - type = tupleTypes[id] = createObjectType(8192 | getPropagatingFlagsOfTypes(elementTypes)); - type.elementTypes = elementTypes; - } + return tupleTypes[id] || (tupleTypes[id] = createNewTupleType(elementTypes)); + } + function createNewTupleType(elementTypes) { + var type = createObjectType(8192 | getPropagatingFlagsOfTypes(elementTypes)); + type.elementTypes = elementTypes; return type; } function getTypeFromTupleTypeNode(node) { @@ -13945,7 +13915,9 @@ var ts; } return 0; } - source = getRegularTypeOfObjectLiteral(source); + if (target.flags & 49152) { + source = getRegularTypeOfObjectLiteral(source); + } } var saveErrorInfo = errorInfo; if (source.flags & 16384) { @@ -14049,6 +14021,7 @@ var ts; var prop = _a[_i]; if (!isKnownProperty(target, prop.name)) { if (reportErrors) { + errorNode = prop.valueDeclaration; reportError(ts.Diagnostics.Object_literal_may_only_specify_known_properties_and_0_does_not_exist_in_type_1, symbolToString(prop), typeToString(target)); } return true; @@ -14343,8 +14316,8 @@ var ts; return result; function abstractSignatureRelatedTo(source, sourceSig, target, targetSig) { if (sourceSig && targetSig) { - var sourceDecl = source.symbol && ts.getDeclarationOfKind(source.symbol, 212); - var targetDecl = target.symbol && ts.getDeclarationOfKind(target.symbol, 212); + var sourceDecl = source.symbol && getClassLikeDeclarationOfSymbol(source.symbol); + var targetDecl = target.symbol && getClassLikeDeclarationOfSymbol(target.symbol); if (!sourceDecl) { return -1; } @@ -14352,8 +14325,8 @@ var ts; var targetErasedSignature = getErasedSignature(targetSig); var sourceReturnType = sourceErasedSignature && getReturnTypeOfSignature(sourceErasedSignature); var targetReturnType = targetErasedSignature && getReturnTypeOfSignature(targetErasedSignature); - var sourceReturnDecl = sourceReturnType && sourceReturnType.symbol && ts.getDeclarationOfKind(sourceReturnType.symbol, 212); - var targetReturnDecl = targetReturnType && targetReturnType.symbol && ts.getDeclarationOfKind(targetReturnType.symbol, 212); + var sourceReturnDecl = sourceReturnType && sourceReturnType.symbol && getClassLikeDeclarationOfSymbol(sourceReturnType.symbol); + var targetReturnDecl = targetReturnType && targetReturnType.symbol && getClassLikeDeclarationOfSymbol(targetReturnType.symbol); var sourceIsAbstract = sourceReturnDecl && sourceReturnDecl.flags & 256; var targetIsAbstract = targetReturnDecl && targetReturnDecl.flags & 256; if (sourceIsAbstract && !(targetIsAbstract && targetDecl)) { @@ -14676,6 +14649,7 @@ var ts; regularType.constructSignatures = type.constructSignatures; regularType.stringIndexType = type.stringIndexType; regularType.numberIndexType = type.numberIndexType; + type.regularType = regularType; } return regularType; } @@ -15539,8 +15513,8 @@ var ts; } } function getContextuallyTypedParameterType(parameter) { - if (isFunctionExpressionOrArrowFunction(parameter.parent)) { - var func = parameter.parent; + var func = parameter.parent; + if (isFunctionExpressionOrArrowFunction(func) || ts.isObjectLiteralMethod(func)) { if (isContextSensitive(func)) { var contextualSignature = getContextualSignature(func); if (contextualSignature) { @@ -15572,7 +15546,7 @@ var ts; } } if (ts.isBindingPattern(declaration.name)) { - return getTypeFromBindingPattern(declaration.name); + return getTypeFromBindingPattern(declaration.name, true); } } return undefined; @@ -15864,11 +15838,12 @@ var ts; var arrayOrIterableType = checkExpressionCached(node.expression, contextualMapper); return checkIteratedTypeOrElementType(arrayOrIterableType, node.expression, false); } + function hasDefaultValue(node) { + return (node.kind === 161 && !!node.initializer) || + (node.kind === 179 && node.operatorToken.kind === 55); + } function checkArrayLiteral(node, contextualMapper) { var elements = node.elements; - if (!elements.length) { - return createArrayType(undefinedType); - } var hasSpreadElement = false; var elementTypes = []; var inDestructuringPattern = isAssignmentTarget(node); @@ -15889,12 +15864,35 @@ var ts; hasSpreadElement = hasSpreadElement || e.kind === 183; } if (!hasSpreadElement) { + if (inDestructuringPattern && elementTypes.length) { + var type = createNewTupleType(elementTypes); + type.pattern = node; + return type; + } var contextualType = getContextualType(node); - if (contextualType && contextualTypeIsTupleLikeType(contextualType) || inDestructuringPattern) { - return createTupleType(elementTypes); + if (contextualType && contextualTypeIsTupleLikeType(contextualType)) { + var pattern = contextualType.pattern; + if (pattern && (pattern.kind === 160 || pattern.kind === 162)) { + var patternElements = pattern.elements; + for (var i = elementTypes.length; i < patternElements.length; i++) { + var patternElement = patternElements[i]; + if (hasDefaultValue(patternElement)) { + elementTypes.push(contextualType.elementTypes[i]); + } + else { + if (patternElement.kind !== 185) { + error(patternElement, ts.Diagnostics.Initializer_provides_no_value_for_this_binding_element_and_the_binding_element_has_no_default_value); + } + elementTypes.push(unknownType); + } + } + } + if (elementTypes.length) { + return createTupleType(elementTypes); + } } } - return createArrayType(getUnionType(elementTypes)); + return createArrayType(elementTypes.length ? getUnionType(elementTypes) : undefinedType); } function isNumericName(name) { return name.kind === 134 ? isNumericComputedName(name) : isNumericLiteralName(name.text); @@ -15926,6 +15924,9 @@ var ts; var propertiesTable = {}; var propertiesArray = []; var contextualType = getContextualType(node); + var contextualTypeHasPattern = contextualType && contextualType.pattern && + (contextualType.pattern.kind === 159 || contextualType.pattern.kind === 163); + var inDestructuringPattern = isAssignmentTarget(node); var typeFlags = 0; for (var _i = 0, _a = node.properties; _i < _a.length; _i++) { var memberDecl = _a[_i]; @@ -15946,6 +15947,20 @@ var ts; } typeFlags |= type.flags; var prop = createSymbol(4 | 67108864 | member.flags, member.name); + if (inDestructuringPattern) { + if (memberDecl.kind === 243 && hasDefaultValue(memberDecl.initializer)) { + prop.flags |= 536870912; + } + } + else if (contextualTypeHasPattern) { + var impliedProp = getPropertyOfType(contextualType, member.name); + if (impliedProp) { + prop.flags |= impliedProp.flags & 536870912; + } + else if (!compilerOptions.suppressExcessPropertyErrors) { + error(memberDecl.name, ts.Diagnostics.Object_literal_may_only_specify_known_properties_and_0_does_not_exist_in_type_1, symbolToString(member), typeToString(contextualType)); + } + } prop.declarations = member.declarations; prop.parent = member.parent; if (member.valueDeclaration) { @@ -15964,11 +15979,26 @@ var ts; } propertiesArray.push(member); } + if (contextualTypeHasPattern) { + for (var _b = 0, _c = getPropertiesOfType(contextualType); _b < _c.length; _b++) { + var prop = _c[_b]; + if (!ts.hasProperty(propertiesTable, prop.name)) { + if (!(prop.flags & 536870912)) { + error(prop.valueDeclaration || prop.bindingElement, ts.Diagnostics.Initializer_provides_no_value_for_this_binding_element_and_the_binding_element_has_no_default_value); + } + propertiesTable[prop.name] = prop; + propertiesArray.push(prop); + } + } + } var stringIndexType = getIndexType(0); var numberIndexType = getIndexType(1); var result = createAnonymousType(node.symbol, propertiesTable, emptyArray, emptyArray, stringIndexType, numberIndexType); var freshObjectLiteralFlag = compilerOptions.suppressExcessPropertyErrors ? 0 : 1048576; result.flags |= 524288 | 4194304 | freshObjectLiteralFlag | (typeFlags & 14680064); + if (inDestructuringPattern) { + result.pattern = node; + } return result; function getIndexType(kind) { if (contextualType && contextualTypeHasIndexSignature(contextualType, kind)) { @@ -17052,7 +17082,7 @@ var ts; if (expressionType === unknownType) { return resolveErrorCall(node); } - var valueDecl = expressionType.symbol && ts.getDeclarationOfKind(expressionType.symbol, 212); + var valueDecl = expressionType.symbol && getClassLikeDeclarationOfSymbol(expressionType.symbol); if (valueDecl && valueDecl.flags & 256) { error(node, ts.Diagnostics.Cannot_create_an_instance_of_the_abstract_class_0, ts.declarationNameToString(valueDecl.name)); return resolveErrorCall(node); @@ -18047,10 +18077,6 @@ var ts; } } 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). checkGrammarDecorators(node) || checkGrammarModifiers(node); checkVariableLikeDeclaration(node); var func = ts.getContainingFunction(node); @@ -18693,15 +18719,6 @@ var ts; return type; } function getPromisedType(promise) { - // - // { // promise - // then( // thenFunction - // onfulfilled: ( // onfulfilledParameterType - // value: T // valueParameterType - // ) => any - // ): any; - // } - // if (promise.flags & 1) { return undefined; } @@ -19044,9 +19061,6 @@ var ts; } } 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) & 49152) !== 0 || ts.isParameterDeclaration(node)) { return; } @@ -19718,20 +19732,10 @@ var ts; function getTargetSymbol(s) { return s.flags & 16777216 ? getSymbolLinks(s).target : s; } + function getClassLikeDeclarationOfSymbol(symbol) { + return ts.forEach(symbol.declarations, function (d) { return ts.isClassLike(d) ? d : undefined; }); + } 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]; @@ -19744,9 +19748,14 @@ var ts; ts.Debug.assert(!!derived, "derived should point to something, even if it is the base class' declaration."); if (derived) { if (derived === base) { - var derivedClassDecl = ts.getDeclarationOfKind(type.symbol, 212); + var derivedClassDecl = getClassLikeDeclarationOfSymbol(type.symbol); if (baseDeclarationFlags & 256 && (!derivedClassDecl || !(derivedClassDecl.flags & 256))) { - error(derivedClassDecl, ts.Diagnostics.Non_abstract_class_0_does_not_implement_inherited_abstract_member_1_from_class_2, typeToString(type), symbolToString(baseProperty), typeToString(baseType)); + if (derivedClassDecl.kind === 184) { + error(derivedClassDecl, ts.Diagnostics.Non_abstract_class_expression_does_not_implement_inherited_abstract_member_0_from_class_1, symbolToString(baseProperty), typeToString(baseType)); + } + else { + error(derivedClassDecl, ts.Diagnostics.Non_abstract_class_0_does_not_implement_inherited_abstract_member_1_from_class_2, typeToString(type), symbolToString(baseProperty), typeToString(baseType)); + } } } else { @@ -20970,7 +20979,10 @@ var ts; var symbols = []; var name_15 = symbol.name; ts.forEach(getSymbolLinks(symbol).containingType.types, function (t) { - symbols.push(getPropertyOfType(t, name_15)); + var symbol = getPropertyOfType(t, name_15); + if (symbol) { + symbols.push(symbol); + } }); return symbols; } @@ -22257,7 +22269,6 @@ var ts; } ts.createTypeChecker = createTypeChecker; })(ts || (ts = {})); -/// var ts; (function (ts) { function getDeclarationDiagnostics(host, resolver, targetSourceFile) { @@ -23585,8 +23596,6 @@ var ts; } ts.writeDeclarationFile = writeDeclarationFile; })(ts || (ts = {})); -/// -/// var ts; (function (ts) { function isExternalModuleOrDeclarationFile(sourceFile) { @@ -23679,6 +23688,7 @@ var ts; var scopeEmitStart = function (scopeDeclaration, scopeName) { }; var scopeEmitEnd = function () { }; var sourceMapData; + var emitLeadingCommentsOfPosition = compilerOptions.removeComments ? function (pos) { } : emitLeadingCommentsOfPositionWorker; if (compilerOptions.sourceMap || compilerOptions.inlineSourceMap) { initializeEmitterWithSourceMaps(); } @@ -24325,19 +24335,6 @@ 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; } @@ -24505,8 +24502,10 @@ var ts; function jsxEmitPreserve(node) { function emitJsxAttribute(node) { emit(node.name); - write("="); - emit(node.initializer); + if (node.initializer) { + write("="); + emit(node.initializer); + } } function emitJsxSpreadAttribute(node) { write("{..."); @@ -24682,8 +24681,15 @@ var ts; } else if (declaration.kind === 224) { write(getGeneratedNameForNode(declaration.parent.parent.parent)); - write("."); - writeTextOfNode(currentSourceFile, declaration.propertyName || declaration.name); + var name = declaration.propertyName || declaration.name; + var identifier = ts.getSourceTextOfNodeFromSourceFile(currentSourceFile, name); + if (languageVersion === 0 && identifier === "default") { + write("[\"default\"]"); + } + else { + write("."); + write(identifier); + } return; } } @@ -25345,7 +25351,8 @@ var ts; operand.kind !== 178 && operand.kind !== 167 && !(operand.kind === 166 && node.parent.kind === 167) && - !(operand.kind === 171 && node.parent.kind === 166)) { + !(operand.kind === 171 && node.parent.kind === 166) && + !(operand.kind === 8 && node.parent.kind === 164)) { emit(operand); return; } @@ -25675,26 +25682,6 @@ var ts; 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(84, node.pos); write(" "); endPos = emitToken(17, endPos); @@ -25978,6 +25965,9 @@ var ts; } function emitExportSpecifierInSystemModule(specifier) { ts.Debug.assert(compilerOptions.module === 4); + if (!resolver.getReferencedValueDeclaration(specifier.propertyName || specifier.name) && !resolver.isValueAliasDeclaration(specifier)) { + return; + } writeLine(); emitStart(specifier.name); write(exportFunctionForFile + "(\""); @@ -26029,19 +26019,19 @@ var ts; write(")"); } } - function ensureIdentifier(expr) { - if (expr.kind !== 67) { - var identifier = createTempVariable(0); - if (!canDefineTempVariablesInPlace) { - recordTempDeclaration(identifier); - } - emitAssignment(identifier, expr); - expr = identifier; + function ensureIdentifier(expr, reuseIdentifierExpressions) { + if (expr.kind === 67 && reuseIdentifierExpressions) { + return expr; } - return expr; + var identifier = createTempVariable(0); + if (!canDefineTempVariablesInPlace) { + recordTempDeclaration(identifier); + } + emitAssignment(identifier, expr); + return identifier; } function createDefaultValueCheck(value, defaultValue) { - value = ensureIdentifier(value); + value = ensureIdentifier(value, true); var equals = ts.createSynthesizedNode(179); equals.left = value; equals.operatorToken = ts.createSynthesizedNode(32); @@ -26082,7 +26072,7 @@ var ts; function emitObjectLiteralAssignment(target, value) { var properties = target.properties; if (properties.length !== 1) { - value = ensureIdentifier(value); + value = ensureIdentifier(value, true); } for (var _a = 0; _a < properties.length; _a++) { var p = properties[_a]; @@ -26095,7 +26085,7 @@ var ts; function emitArrayLiteralAssignment(target, value) { var elements = target.elements; if (elements.length !== 1) { - value = ensureIdentifier(value); + value = ensureIdentifier(value, true); } for (var i = 0; i < elements.length; i++) { var e = elements[i]; @@ -26137,7 +26127,7 @@ var ts; if (root.parent.kind !== 170) { write("("); } - value = ensureIdentifier(value); + value = ensureIdentifier(value, true); emitDestructuringAssignment(target, value); write(", "); emit(value); @@ -26156,10 +26146,11 @@ var ts; if (ts.isBindingPattern(target.name)) { var pattern = target.name; var elements = pattern.elements; - if (elements.length !== 1) { - value = ensureIdentifier(value); + var numElements = elements.length; + if (numElements !== 1) { + value = ensureIdentifier(value, numElements !== 0); } - for (var i = 0; i < elements.length; i++) { + for (var i = 0; i < numElements; i++) { var element = elements[i]; if (pattern.kind === 159) { var propName = element.propertyName || element.name; @@ -26169,7 +26160,7 @@ var ts; if (!element.dotDotDotToken) { emitBindingElement(element, createElementAccessExpression(value, createNumericLiteral(i))); } - else if (i === elements.length - 1) { + else if (i === numElements - 1) { emitBindingElement(element, createSliceCall(value, i)); } } @@ -26409,7 +26400,7 @@ var ts; } function emitFunctionDeclaration(node) { if (ts.nodeIsMissing(node.body)) { - return emitOnlyPinnedOrTripleSlashComments(node); + return emitCommentsOnNotEmittedNode(node); } if (node.kind !== 141 && node.kind !== 140 && node.parent && node.parent.kind !== 243 && @@ -26727,7 +26718,7 @@ var ts; } else if (member.kind === 141 || node.kind === 140) { if (!member.body) { - return emitOnlyPinnedOrTripleSlashComments(member); + return emitCommentsOnNotEmittedNode(member); } writeLine(); emitLeadingComments(member); @@ -26793,7 +26784,7 @@ var ts; for (var _a = 0, _b = node.members; _a < _b.length; _a++) { var member = _b[_a]; if ((member.kind === 141 || node.kind === 140) && !member.body) { - emitOnlyPinnedOrTripleSlashComments(member); + emitCommentsOnNotEmittedNode(member); } else if (member.kind === 141 || member.kind === 143 || @@ -26840,7 +26831,7 @@ var ts; var hasInstancePropertyWithInitializer = false; ts.forEach(node.members, function (member) { if (member.kind === 142 && !member.body) { - emitOnlyPinnedOrTripleSlashComments(member); + emitCommentsOnNotEmittedNode(member); } if (member.kind === 139 && member.initializer && (member.flags & 128) === 0) { hasInstancePropertyWithInitializer = true; @@ -27289,50 +27280,49 @@ var ts; write("void 0"); } function emitSerializedTypeNode(node) { - if (!node) { - return; - } - switch (node.kind) { - case 101: - write("void 0"); - return; - case 158: - emitSerializedTypeNode(node.type); - return; - case 150: - case 151: - write("Function"); - return; - case 154: - case 155: - write("Array"); - return; - case 148: - case 118: - write("Boolean"); - return; - case 128: - case 9: - write("String"); - return; - case 126: - write("Number"); - return; - case 129: - write("Symbol"); - return; - case 149: - emitSerializedTypeReferenceNode(node); - return; - case 152: - case 153: - case 156: - case 157: - case 115: - break; - default: - ts.Debug.fail("Cannot serialize unexpected type node."); - break; + if (node) { + switch (node.kind) { + case 101: + write("void 0"); + return; + case 158: + emitSerializedTypeNode(node.type); + return; + case 150: + case 151: + write("Function"); + return; + case 154: + case 155: + write("Array"); + return; + case 148: + case 118: + write("Boolean"); + return; + case 128: + case 9: + write("String"); + return; + case 126: + write("Number"); + return; + case 129: + write("Symbol"); + return; + case 149: + emitSerializedTypeReferenceNode(node); + return; + case 152: + case 153: + case 156: + case 157: + case 115: + break; + default: + ts.Debug.fail("Cannot serialize unexpected type node."); + break; + } } write("Object"); } @@ -27471,7 +27461,7 @@ var ts; return argumentsWritten; } function emitInterfaceDeclaration(node) { - emitOnlyPinnedOrTripleSlashComments(node); + emitCommentsOnNotEmittedNode(node); } function shouldEmitEnumDeclaration(node) { var isConstEnum = ts.isConst(node); @@ -27578,7 +27568,7 @@ var ts; function emitModuleDeclaration(node) { var shouldEmit = shouldEmitModuleDeclaration(node); if (!shouldEmit) { - return emitOnlyPinnedOrTripleSlashComments(node); + return emitCommentsOnNotEmittedNode(node); } var hoistedInDeclarationScope = shouldHoistDeclarationInSystemJsModule(node); var emitVarForModule = !hoistedInDeclarationScope && !isModuleMergedWithES6Class(node); @@ -28246,7 +28236,7 @@ var ts; } return; } - if (ts.isInternalModuleImportEqualsDeclaration(node)) { + if (ts.isInternalModuleImportEqualsDeclaration(node) && resolver.isValueAliasDeclaration(node)) { if (!hoistedVars) { hoistedVars = []; } @@ -28422,17 +28412,6 @@ var ts; write("});"); } function emitAMDDependencies(node, includeNonAmdDependencies) { - // An AMD define function has the following shape: - // define(id?, dependencies?, factory); - // - // This has the shape of - // define(name, ["module1", "module2"], function (module1Alias) { - // The location of the alias in the parameter list in the factory function needs to - // match the position of the module name in the dependency list. - // - // To ensure this is true in cases of modules with no aliases, e.g.: - // `import "module"` or `` - // we need to add modules without alias names to the end of the dependencies list var aliasedModuleNames = []; var unaliasedModuleNames = []; var importAliasNames = []; @@ -28716,7 +28695,7 @@ var ts; function emitNodeConsideringCommentsOption(node, emitNodeConsideringSourcemap) { if (node) { if (node.flags & 2) { - return emitOnlyPinnedOrTripleSlashComments(node); + return emitCommentsOnNotEmittedNode(node); } if (isSpecializedCommentHandling(node)) { return emitNodeWithoutSourceMap(node); @@ -28948,14 +28927,20 @@ var ts; } return leadingComments; } - function filterComments(ranges, onlyPinnedOrTripleSlashComments) { - if (ranges && onlyPinnedOrTripleSlashComments) { - ranges = ts.filter(ranges, isPinnedOrTripleSlashComment); - if (ranges.length === 0) { - return undefined; - } + function isPinnedComments(comment) { + return currentSourceFile.text.charCodeAt(comment.pos + 1) === 42 && + currentSourceFile.text.charCodeAt(comment.pos + 2) === 33; + } + function isTripleSlashComment(comment) { + if (currentSourceFile.text.charCodeAt(comment.pos + 1) === 47 && + comment.pos + 2 < comment.end && + currentSourceFile.text.charCodeAt(comment.pos + 2) === 47) { + var textSubStr = currentSourceFile.text.substring(comment.pos, comment.end); + return textSubStr.match(ts.fullTripleSlashReferencePathRegEx) || + textSubStr.match(ts.fullTripleSlashAMDReferencePathRegEx) ? + true : false; } - return ranges; + return false; } function getLeadingCommentsToEmit(node) { if (node.parent) { @@ -28976,26 +28961,46 @@ var ts; } } } - function emitOnlyPinnedOrTripleSlashComments(node) { - emitLeadingCommentsWorker(node, true); + function emitCommentsOnNotEmittedNode(node) { + emitLeadingCommentsWorker(node, false); } function emitLeadingComments(node) { - return emitLeadingCommentsWorker(node, compilerOptions.removeComments); + return emitLeadingCommentsWorker(node, true); } - function emitLeadingCommentsWorker(node, onlyPinnedOrTripleSlashComments) { - var leadingComments = filterComments(getLeadingCommentsToEmit(node), onlyPinnedOrTripleSlashComments); + function emitLeadingCommentsWorker(node, isEmittedNode) { + if (compilerOptions.removeComments) { + return; + } + var leadingComments; + if (isEmittedNode) { + leadingComments = getLeadingCommentsToEmit(node); + } + else { + if (node.pos === 0) { + leadingComments = ts.filter(getLeadingCommentsToEmit(node), isTripleSlashComment); + } + } ts.emitNewLineBeforeLeadingComments(currentSourceFile, writer, node, leadingComments); ts.emitComments(currentSourceFile, writer, leadingComments, true, newLine, writeComment); } function emitTrailingComments(node) { - var trailingComments = filterComments(getTrailingCommentsToEmit(node), compilerOptions.removeComments); + if (compilerOptions.removeComments) { + return; + } + var trailingComments = getTrailingCommentsToEmit(node); ts.emitComments(currentSourceFile, writer, trailingComments, false, newLine, writeComment); } function emitTrailingCommentsOfPosition(pos) { - var trailingComments = filterComments(ts.getTrailingCommentRanges(currentSourceFile.text, pos), compilerOptions.removeComments); + if (compilerOptions.removeComments) { + return; + } + var trailingComments = ts.getTrailingCommentRanges(currentSourceFile.text, pos); ts.emitComments(currentSourceFile, writer, trailingComments, true, newLine, writeComment); } - function emitLeadingCommentsOfPosition(pos) { + function emitLeadingCommentsOfPositionWorker(pos) { + if (compilerOptions.removeComments) { + return; + } var leadingComments; if (hasDetachedComments(pos)) { leadingComments = getLeadingCommentsWithoutDetachedComments(); @@ -29003,12 +29008,19 @@ var ts; 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); + var leadingComments; + if (compilerOptions.removeComments) { + if (node.pos === 0) { + leadingComments = ts.filter(ts.getLeadingCommentRanges(currentSourceFile.text, node.pos), isPinnedComments); + } + } + else { + leadingComments = ts.getLeadingCommentRanges(currentSourceFile.text, node.pos); + } if (leadingComments) { var detachedComments = []; var lastComment; @@ -29046,17 +29058,6 @@ var ts; write(shebang); } } - 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); @@ -29322,9 +29323,6 @@ var ts; "diams": 0x2666 }; })(ts || (ts = {})); -/// -/// -/// var ts; (function (ts) { ts.programTime = 0; @@ -29332,7 +29330,7 @@ var ts; ts.ioReadTime = 0; ts.ioWriteTime = 0; var emptyArray = []; - ts.version = "1.6.0"; + ts.version = "1.7.0"; function findConfigFile(searchPath) { var fileName = "tsconfig.json"; while (true) { @@ -29372,10 +29370,12 @@ var ts; var candidate = ts.normalizePath(ts.combinePaths(containingDirectory, moduleName)); var resolvedFileName = loadNodeModuleFromFile(candidate, false, failedLookupLocations, host); if (resolvedFileName) { - return { resolvedFileName: resolvedFileName, failedLookupLocations: failedLookupLocations }; + return { resolvedModule: { resolvedFileName: resolvedFileName }, failedLookupLocations: failedLookupLocations }; } resolvedFileName = loadNodeModuleFromDirectory(candidate, false, failedLookupLocations, host); - return { resolvedFileName: resolvedFileName, failedLookupLocations: failedLookupLocations }; + return resolvedFileName + ? { resolvedModule: { resolvedFileName: resolvedFileName }, failedLookupLocations: failedLookupLocations } + : { resolvedModule: undefined, failedLookupLocations: failedLookupLocations }; } else { return loadModuleFromNodeModules(moduleName, containingDirectory, host); @@ -29433,11 +29433,11 @@ var ts; var candidate = ts.normalizePath(ts.combinePaths(nodeModulesFolder, moduleName)); var result = loadNodeModuleFromFile(candidate, true, failedLookupLocations, host); if (result) { - return { resolvedFileName: result, failedLookupLocations: failedLookupLocations }; + return { resolvedModule: { resolvedFileName: result, isExternalLibraryImport: true }, failedLookupLocations: failedLookupLocations }; } result = loadNodeModuleFromDirectory(candidate, true, failedLookupLocations, host); if (result) { - return { resolvedFileName: result, failedLookupLocations: failedLookupLocations }; + return { resolvedModule: { resolvedFileName: result, isExternalLibraryImport: true }, failedLookupLocations: failedLookupLocations }; } } var parentPath = ts.getDirectoryPath(directory); @@ -29446,36 +29446,15 @@ var ts; } directory = parentPath; } - return { resolvedFileName: undefined, failedLookupLocations: failedLookupLocations }; + return { resolvedModule: undefined, failedLookupLocations: failedLookupLocations }; } - function baseUrlModuleNameResolver(moduleName, containingFile, baseUrl, host) { - ts.Debug.assert(baseUrl !== undefined); - var normalizedModuleName = ts.normalizeSlashes(moduleName); - var basePart = useBaseUrl(moduleName) ? baseUrl : ts.getDirectoryPath(containingFile); - var candidate = ts.normalizePath(ts.combinePaths(basePart, moduleName)); - var failedLookupLocations = []; - return ts.forEach(ts.supportedExtensions, function (ext) { return tryLoadFile(candidate + ext); }) || { resolvedFileName: undefined, failedLookupLocations: failedLookupLocations }; - function tryLoadFile(location) { - if (host.fileExists(location)) { - return { resolvedFileName: location, failedLookupLocations: failedLookupLocations }; - } - else { - failedLookupLocations.push(location); - return undefined; - } - } - } - ts.baseUrlModuleNameResolver = baseUrlModuleNameResolver; function nameStartsWithDotSlashOrDotDotSlash(name) { var i = name.lastIndexOf("./", 1); return i === 0 || (i === 1 && name.charCodeAt(0) === 46); } - function useBaseUrl(moduleName) { - return ts.getRootLength(moduleName) === 0 && !nameStartsWithDotSlashOrDotDotSlash(moduleName); - } function classicNameResolver(moduleName, containingFile, compilerOptions, host) { if (moduleName.indexOf('!') != -1) { - return { resolvedFileName: undefined, failedLookupLocations: [] }; + return { resolvedModule: undefined, failedLookupLocations: [] }; } var searchPath = ts.getDirectoryPath(containingFile); var searchName; @@ -29504,7 +29483,9 @@ var ts; } searchPath = parentPath; } - return { resolvedFileName: referencedSourceFile, failedLookupLocations: failedLookupLocations }; + return referencedSourceFile + ? { resolvedModule: { resolvedFileName: referencedSourceFile }, failedLookupLocations: failedLookupLocations } + : { resolvedModule: undefined, failedLookupLocations: failedLookupLocations }; } ts.classicNameResolver = classicNameResolver; ts.defaultInitCompilerOptions = { @@ -29617,7 +29598,8 @@ var ts; function createProgram(rootNames, options, host, oldProgram) { var program; var files = []; - var diagnostics = ts.createDiagnosticCollection(); + var fileProcessingDiagnostics = ts.createDiagnosticCollection(); + var programDiagnostics = ts.createDiagnosticCollection(); var commonSourceDirectory; var diagnosticsProducingTypeChecker; var noDiagnosticsTypeChecker; @@ -29625,8 +29607,9 @@ var ts; var skipDefaultLib = options.noLib; var start = new Date().getTime(); host = host || createCompilerHost(options); - var resolveModuleNamesWorker = host.resolveModuleNames || - (function (moduleNames, containingFile) { return ts.map(moduleNames, function (moduleName) { return resolveModuleName(moduleName, containingFile, options, host).resolvedFileName; }); }); + var resolveModuleNamesWorker = host.resolveModuleNames + ? (function (moduleNames, containingFile) { return host.resolveModuleNames(moduleNames, containingFile); }) + : (function (moduleNames, containingFile) { return ts.map(moduleNames, function (moduleName) { return resolveModuleName(moduleName, containingFile, options, host).resolvedModule; }); }); var filesByName = ts.createFileMap(function (fileName) { return host.getCanonicalFileName(fileName); }); if (oldProgram) { var oldOptions = oldProgram.getCompilerOptions(); @@ -29666,7 +29649,8 @@ var ts; getNodeCount: function () { return getDiagnosticsProducingTypeChecker().getNodeCount(); }, getIdentifierCount: function () { return getDiagnosticsProducingTypeChecker().getIdentifierCount(); }, getSymbolCount: function () { return getDiagnosticsProducingTypeChecker().getSymbolCount(); }, - getTypeCount: function () { return getDiagnosticsProducingTypeChecker().getTypeCount(); } + getTypeCount: function () { return getDiagnosticsProducingTypeChecker().getTypeCount(); }, + getFileProcessingDiagnostics: function () { return fileProcessingDiagnostics; } }; return program; function getClassifiableNames() { @@ -29690,6 +29674,7 @@ var ts; return false; } var newSourceFiles = []; + var modifiedSourceFiles = []; for (var _i = 0, _a = oldProgram.getSourceFiles(); _i < _a.length; _i++) { var oldSourceFile = _a[_i]; var newSourceFile = host.getSourceFile(oldSourceFile.fileName, options.target); @@ -29711,13 +29696,20 @@ var ts; var moduleNames = ts.map(newSourceFile.imports, function (name) { return name.text; }); var resolutions = resolveModuleNamesWorker(moduleNames, newSourceFile.fileName); for (var i = 0; i < moduleNames.length; ++i) { - var oldResolution = ts.getResolvedModuleFileName(oldSourceFile, moduleNames[i]); - if (oldResolution !== resolutions[i]) { + var newResolution = resolutions[i]; + var oldResolution = ts.getResolvedModule(oldSourceFile, moduleNames[i]); + var resolutionChanged = oldResolution + ? !newResolution || + oldResolution.resolvedFileName !== newResolution.resolvedFileName || + !!oldResolution.isExternalLibraryImport !== !!newResolution.isExternalLibraryImport + : newResolution; + if (resolutionChanged) { return false; } } } newSourceFile.resolvedModules = oldSourceFile.resolvedModules; + modifiedSourceFiles.push(newSourceFile); } else { newSourceFile = oldSourceFile; @@ -29729,6 +29721,11 @@ var ts; filesByName.set(file.fileName, file); } files = newSourceFiles; + fileProcessingDiagnostics = oldProgram.getFileProcessingDiagnostics(); + for (var _c = 0; _c < modifiedSourceFiles.length; _c++) { + var modifiedFile = modifiedSourceFiles[_c]; + fileProcessingDiagnostics.reattachFileDiagnostics(modifiedFile); + } oldProgram.structureIsReused = true; return true; } @@ -29810,8 +29807,9 @@ var ts; ts.Debug.assert(!!sourceFile.bindDiagnostics); var bindDiagnostics = sourceFile.bindDiagnostics; var checkDiagnostics = typeChecker.getDiagnostics(sourceFile, cancellationToken); - var programDiagnostics = diagnostics.getDiagnostics(sourceFile.fileName); - return bindDiagnostics.concat(checkDiagnostics).concat(programDiagnostics); + var fileProcessingDiagnosticsInFile = fileProcessingDiagnostics.getDiagnostics(sourceFile.fileName); + var programDiagnosticsInFile = programDiagnostics.getDiagnostics(sourceFile.fileName); + return bindDiagnostics.concat(checkDiagnostics).concat(fileProcessingDiagnosticsInFile).concat(programDiagnosticsInFile); }); } function getDeclarationDiagnosticsForFile(sourceFile, cancellationToken) { @@ -29825,7 +29823,8 @@ var ts; } function getOptionsDiagnostics() { var allDiagnostics = []; - ts.addRange(allDiagnostics, diagnostics.getGlobalDiagnostics()); + ts.addRange(allDiagnostics, fileProcessingDiagnostics.getGlobalDiagnostics()); + ts.addRange(allDiagnostics, programDiagnostics.getGlobalDiagnostics()); return ts.sortAndDeduplicateDiagnostics(allDiagnostics); } function getGlobalDiagnostics() { @@ -29915,10 +29914,10 @@ var ts; } if (diagnostic) { if (refFile !== undefined && refEnd !== undefined && refPos !== undefined) { - diagnostics.add(ts.createFileDiagnostic.apply(void 0, [refFile, refPos, refEnd - refPos, diagnostic].concat(diagnosticArgument))); + fileProcessingDiagnostics.add(ts.createFileDiagnostic.apply(void 0, [refFile, refPos, refEnd - refPos, diagnostic].concat(diagnosticArgument))); } else { - diagnostics.add(ts.createCompilerDiagnostic.apply(void 0, [diagnostic].concat(diagnosticArgument))); + fileProcessingDiagnostics.add(ts.createCompilerDiagnostic.apply(void 0, [diagnostic].concat(diagnosticArgument))); } } } @@ -29935,10 +29934,10 @@ var ts; } var file = host.getSourceFile(fileName, options.target, function (hostErrorMessage) { if (refFile !== undefined && refPos !== undefined && refEnd !== undefined) { - diagnostics.add(ts.createFileDiagnostic(refFile, refPos, refEnd - refPos, ts.Diagnostics.Cannot_read_file_0_Colon_1, fileName, hostErrorMessage)); + fileProcessingDiagnostics.add(ts.createFileDiagnostic(refFile, refPos, refEnd - refPos, 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)); + fileProcessingDiagnostics.add(ts.createCompilerDiagnostic(ts.Diagnostics.Cannot_read_file_0_Colon_1, fileName, hostErrorMessage)); } }); filesByName.set(canonicalName, file); @@ -29966,10 +29965,10 @@ var ts; var sourceFileName = useAbsolutePath ? ts.getNormalizedAbsolutePath(file.fileName, host.getCurrentDirectory()) : file.fileName; if (canonicalName !== sourceFileName) { if (refFile !== undefined && refPos !== undefined && refEnd !== undefined) { - diagnostics.add(ts.createFileDiagnostic(refFile, refPos, refEnd - refPos, ts.Diagnostics.File_name_0_differs_from_already_included_file_name_1_only_in_casing, fileName, sourceFileName)); + fileProcessingDiagnostics.add(ts.createFileDiagnostic(refFile, refPos, refEnd - refPos, ts.Diagnostics.File_name_0_differs_from_already_included_file_name_1_only_in_casing, fileName, sourceFileName)); } else { - diagnostics.add(ts.createCompilerDiagnostic(ts.Diagnostics.File_name_0_differs_from_already_included_file_name_1_only_in_casing, fileName, sourceFileName)); + fileProcessingDiagnostics.add(ts.createCompilerDiagnostic(ts.Diagnostics.File_name_0_differs_from_already_included_file_name_1_only_in_casing, fileName, sourceFileName)); } } } @@ -29990,9 +29989,23 @@ var ts; var resolutions = resolveModuleNamesWorker(moduleNames, file.fileName); for (var i = 0; i < file.imports.length; ++i) { var resolution = resolutions[i]; - ts.setResolvedModuleName(file, moduleNames[i], resolution); + ts.setResolvedModule(file, moduleNames[i], resolution); if (resolution && !options.noResolve) { - findModuleSourceFile(resolution, file.imports[i]); + var importedFile = findModuleSourceFile(resolution.resolvedFileName, file.imports[i]); + if (importedFile && resolution.isExternalLibraryImport) { + if (!ts.isExternalModule(importedFile)) { + var start_2 = ts.getTokenPosOfNode(file.imports[i], file); + fileProcessingDiagnostics.add(ts.createFileDiagnostic(file, start_2, file.imports[i].end - start_2, ts.Diagnostics.Exported_external_package_typings_file_0_is_not_a_module_Please_contact_the_package_author_to_update_the_package_definition, importedFile.fileName)); + } + else if (!ts.fileExtensionIs(importedFile.fileName, ".d.ts")) { + var start_3 = ts.getTokenPosOfNode(file.imports[i], file); + fileProcessingDiagnostics.add(ts.createFileDiagnostic(file, start_3, file.imports[i].end - start_3, ts.Diagnostics.Exported_external_package_typings_can_only_be_in_d_ts_files_Please_contact_the_package_author_to_update_the_package_definition)); + } + else if (importedFile.referencedFiles.length) { + var firstRef = importedFile.referencedFiles[0]; + fileProcessingDiagnostics.add(ts.createFileDiagnostic(importedFile, firstRef.pos, firstRef.end - firstRef.pos, ts.Diagnostics.Exported_external_package_typings_file_cannot_contain_tripleslash_references_Please_contact_the_package_author_to_update_the_package_definition)); + } + } } } } @@ -30001,7 +30014,7 @@ var ts; } return; function findModuleSourceFile(fileName, nameLiteral) { - return findSourceFile(fileName, false, file, nameLiteral.pos, nameLiteral.end); + return findSourceFile(fileName, false, file, ts.skipTrivia(file.text, nameLiteral.pos), nameLiteral.end); } } function computeCommonSourceDirectory(sourceFiles) { @@ -30020,7 +30033,7 @@ var ts; for (var i = 0, n = Math.min(commonPathComponents.length, sourcePathComponents.length); i < n; 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)); + programDiagnostics.add(ts.createCompilerDiagnostic(ts.Diagnostics.Cannot_find_the_common_subdirectory_path_for_the_input_files)); return; } commonPathComponents.length = i; @@ -30043,7 +30056,7 @@ var ts; if (!ts.isDeclarationFile(sourceFile)) { var absoluteSourceFilePath = host.getCanonicalFileName(ts.getNormalizedAbsolutePath(sourceFile.fileName, currentDirectory)); if (absoluteSourceFilePath.indexOf(absoluteRootDirectoryPath) !== 0) { - diagnostics.add(ts.createCompilerDiagnostic(ts.Diagnostics.File_0_is_not_under_rootDir_1_rootDir_is_expected_to_contain_all_source_files, sourceFile.fileName, options.rootDir)); + programDiagnostics.add(ts.createCompilerDiagnostic(ts.Diagnostics.File_0_is_not_under_rootDir_1_rootDir_is_expected_to_contain_all_source_files, sourceFile.fileName, options.rootDir)); allFilesBelongToPath = false; } } @@ -30054,43 +30067,43 @@ var ts; function verifyCompilerOptions() { if (options.isolatedModules) { if (options.declaration) { - diagnostics.add(ts.createCompilerDiagnostic(ts.Diagnostics.Option_0_cannot_be_specified_with_option_1, "declaration", "isolatedModules")); + programDiagnostics.add(ts.createCompilerDiagnostic(ts.Diagnostics.Option_0_cannot_be_specified_with_option_1, "declaration", "isolatedModules")); } if (options.noEmitOnError) { - diagnostics.add(ts.createCompilerDiagnostic(ts.Diagnostics.Option_0_cannot_be_specified_with_option_1, "noEmitOnError", "isolatedModules")); + programDiagnostics.add(ts.createCompilerDiagnostic(ts.Diagnostics.Option_0_cannot_be_specified_with_option_1, "noEmitOnError", "isolatedModules")); } if (options.out) { - diagnostics.add(ts.createCompilerDiagnostic(ts.Diagnostics.Option_0_cannot_be_specified_with_option_1, "out", "isolatedModules")); + programDiagnostics.add(ts.createCompilerDiagnostic(ts.Diagnostics.Option_0_cannot_be_specified_with_option_1, "out", "isolatedModules")); } if (options.outFile) { - diagnostics.add(ts.createCompilerDiagnostic(ts.Diagnostics.Option_0_cannot_be_specified_with_option_1, "outFile", "isolatedModules")); + programDiagnostics.add(ts.createCompilerDiagnostic(ts.Diagnostics.Option_0_cannot_be_specified_with_option_1, "outFile", "isolatedModules")); } } if (options.inlineSourceMap) { if (options.sourceMap) { - diagnostics.add(ts.createCompilerDiagnostic(ts.Diagnostics.Option_0_cannot_be_specified_with_option_1, "sourceMap", "inlineSourceMap")); + programDiagnostics.add(ts.createCompilerDiagnostic(ts.Diagnostics.Option_0_cannot_be_specified_with_option_1, "sourceMap", "inlineSourceMap")); } if (options.mapRoot) { - diagnostics.add(ts.createCompilerDiagnostic(ts.Diagnostics.Option_0_cannot_be_specified_with_option_1, "mapRoot", "inlineSourceMap")); + programDiagnostics.add(ts.createCompilerDiagnostic(ts.Diagnostics.Option_0_cannot_be_specified_with_option_1, "mapRoot", "inlineSourceMap")); } if (options.sourceRoot) { - diagnostics.add(ts.createCompilerDiagnostic(ts.Diagnostics.Option_0_cannot_be_specified_with_option_1, "sourceRoot", "inlineSourceMap")); + programDiagnostics.add(ts.createCompilerDiagnostic(ts.Diagnostics.Option_0_cannot_be_specified_with_option_1, "sourceRoot", "inlineSourceMap")); } } if (options.inlineSources) { if (!options.sourceMap && !options.inlineSourceMap) { - diagnostics.add(ts.createCompilerDiagnostic(ts.Diagnostics.Option_inlineSources_can_only_be_used_when_either_option_inlineSourceMap_or_option_sourceMap_is_provided)); + programDiagnostics.add(ts.createCompilerDiagnostic(ts.Diagnostics.Option_inlineSources_can_only_be_used_when_either_option_inlineSourceMap_or_option_sourceMap_is_provided)); } } if (options.out && options.outFile) { - diagnostics.add(ts.createCompilerDiagnostic(ts.Diagnostics.Option_0_cannot_be_specified_with_option_1, "out", "outFile")); + programDiagnostics.add(ts.createCompilerDiagnostic(ts.Diagnostics.Option_0_cannot_be_specified_with_option_1, "out", "outFile")); } if (!options.sourceMap && (options.mapRoot || options.sourceRoot)) { if (options.mapRoot) { - diagnostics.add(ts.createCompilerDiagnostic(ts.Diagnostics.Option_0_cannot_be_specified_without_specifying_option_1, "mapRoot", "sourceMap")); + programDiagnostics.add(ts.createCompilerDiagnostic(ts.Diagnostics.Option_0_cannot_be_specified_without_specifying_option_1, "mapRoot", "sourceMap")); } if (options.sourceRoot) { - diagnostics.add(ts.createCompilerDiagnostic(ts.Diagnostics.Option_0_cannot_be_specified_without_specifying_option_1, "sourceRoot", "sourceMap")); + programDiagnostics.add(ts.createCompilerDiagnostic(ts.Diagnostics.Option_0_cannot_be_specified_without_specifying_option_1, "sourceRoot", "sourceMap")); } return; } @@ -30099,20 +30112,20 @@ var ts; var firstExternalModuleSourceFile = ts.forEach(files, function (f) { return ts.isExternalModule(f) ? f : undefined; }); if (options.isolatedModules) { if (!options.module && languageVersion < 2) { - diagnostics.add(ts.createCompilerDiagnostic(ts.Diagnostics.Option_isolatedModules_can_only_be_used_when_either_option_module_is_provided_or_option_target_is_ES6_or_higher)); + programDiagnostics.add(ts.createCompilerDiagnostic(ts.Diagnostics.Option_isolatedModules_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_namespaces_when_the_isolatedModules_flag_is_provided)); + programDiagnostics.add(ts.createFileDiagnostic(firstNonExternalModuleSourceFile, span.start, span.length, ts.Diagnostics.Cannot_compile_namespaces_when_the_isolatedModules_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_modules_unless_the_module_flag_is_provided)); + programDiagnostics.add(ts.createFileDiagnostic(firstExternalModuleSourceFile, span.start, span.length, ts.Diagnostics.Cannot_compile_modules_unless_the_module_flag_is_provided)); } if (options.module && languageVersion >= 2) { - diagnostics.add(ts.createCompilerDiagnostic(ts.Diagnostics.Cannot_compile_modules_into_commonjs_amd_system_or_umd_when_targeting_ES6_or_higher)); + programDiagnostics.add(ts.createCompilerDiagnostic(ts.Diagnostics.Cannot_compile_modules_into_commonjs_amd_system_or_umd_when_targeting_ES6_or_higher)); } if (options.outDir || options.sourceRoot || @@ -30130,34 +30143,30 @@ var ts; } if (options.noEmit) { if (options.out) { - diagnostics.add(ts.createCompilerDiagnostic(ts.Diagnostics.Option_0_cannot_be_specified_with_option_1, "noEmit", "out")); + programDiagnostics.add(ts.createCompilerDiagnostic(ts.Diagnostics.Option_0_cannot_be_specified_with_option_1, "noEmit", "out")); } if (options.outFile) { - diagnostics.add(ts.createCompilerDiagnostic(ts.Diagnostics.Option_0_cannot_be_specified_with_option_1, "noEmit", "outFile")); + programDiagnostics.add(ts.createCompilerDiagnostic(ts.Diagnostics.Option_0_cannot_be_specified_with_option_1, "noEmit", "outFile")); } if (options.outDir) { - diagnostics.add(ts.createCompilerDiagnostic(ts.Diagnostics.Option_0_cannot_be_specified_with_option_1, "noEmit", "outDir")); + programDiagnostics.add(ts.createCompilerDiagnostic(ts.Diagnostics.Option_0_cannot_be_specified_with_option_1, "noEmit", "outDir")); } if (options.declaration) { - diagnostics.add(ts.createCompilerDiagnostic(ts.Diagnostics.Option_0_cannot_be_specified_with_option_1, "noEmit", "declaration")); + programDiagnostics.add(ts.createCompilerDiagnostic(ts.Diagnostics.Option_0_cannot_be_specified_with_option_1, "noEmit", "declaration")); } } if (options.emitDecoratorMetadata && !options.experimentalDecorators) { - diagnostics.add(ts.createCompilerDiagnostic(ts.Diagnostics.Option_0_cannot_be_specified_without_specifying_option_1, "emitDecoratorMetadata", "experimentalDecorators")); + programDiagnostics.add(ts.createCompilerDiagnostic(ts.Diagnostics.Option_0_cannot_be_specified_without_specifying_option_1, "emitDecoratorMetadata", "experimentalDecorators")); } if (options.experimentalAsyncFunctions && options.target !== 2) { - diagnostics.add(ts.createCompilerDiagnostic(ts.Diagnostics.Option_experimentalAsyncFunctions_cannot_be_specified_when_targeting_ES5_or_lower)); + programDiagnostics.add(ts.createCompilerDiagnostic(ts.Diagnostics.Option_experimentalAsyncFunctions_cannot_be_specified_when_targeting_ES5_or_lower)); } } } ts.createProgram = createProgram; })(ts || (ts = {})); -/// -/// -/// -/// var ts; (function (ts) { ts.optionDeclarations = [ @@ -30397,8 +30406,8 @@ var ts; "node": 2, "classic": 1 }, - experimental: true, - description: ts.Diagnostics.Specifies_module_resolution_strategy_Colon_node_Node_or_classic_TypeScript_pre_1_6 + description: ts.Diagnostics.Specifies_module_resolution_strategy_Colon_node_Node_js_or_classic_TypeScript_pre_1_6, + error: ts.Diagnostics.Argument_for_moduleResolution_option_must_be_node_or_classic } ]; var optionNameMapCache; @@ -30512,10 +30521,10 @@ var ts; } } ts.parseCommandLine = parseCommandLine; - function readConfigFile(fileName) { + function readConfigFile(fileName, readFile) { var text = ""; try { - text = ts.sys.readFile(fileName); + text = readFile(fileName); } catch (e) { return { error: ts.createCompilerDiagnostic(ts.Diagnostics.Cannot_read_file_0_Colon_1, fileName, e.message) }; @@ -30616,8 +30625,6 @@ var ts; } ts.parseConfigFile = parseConfigFile; })(ts || (ts = {})); -/// -/// var ts; (function (ts) { function validateLocaleAndSetLanguage(locale, errors) { @@ -30784,7 +30791,7 @@ var ts; function performCompilation() { if (!cachedProgram) { if (configFileName) { - var result = ts.readConfigFile(configFileName); + var result = ts.readConfigFile(configFileName, ts.sys.readFile); if (result.error) { reportDiagnostic(result.error); return ts.sys.exit(ts.ExitStatus.DiagnosticsPresent_OutputsSkipped); diff --git a/lib/tsserver.js b/lib/tsserver.js index 78836160678..82199e1222d 100644 --- a/lib/tsserver.js +++ b/lib/tsserver.js @@ -47,7 +47,6 @@ var ts; })(ts.DiagnosticCategory || (ts.DiagnosticCategory = {})); var DiagnosticCategory = ts.DiagnosticCategory; })(ts || (ts = {})); -/// var ts; (function (ts) { function createFileMap(getCanonicalFileName) { @@ -569,9 +568,6 @@ 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) { @@ -731,7 +727,6 @@ var ts; Debug.fail = fail; })(Debug = ts.Debug || (ts.Debug = {})); })(ts || (ts = {})); -/// var ts; (function (ts) { ts.sys = (function () { @@ -1003,7 +998,6 @@ var ts; } })(); })(ts || (ts = {})); -/// var ts; (function (ts) { ts.Diagnostics = { @@ -1248,7 +1242,7 @@ var ts; 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'." }, + 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." }, @@ -1419,6 +1413,7 @@ var ts; The_arguments_object_cannot_be_referenced_in_an_async_arrow_function_Consider_using_a_standard_async_function_expression: { code: 2522, category: ts.DiagnosticCategory.Error, key: "The 'arguments' object cannot be referenced in an async arrow function. Consider using a standard async function expression." }, yield_expressions_cannot_be_used_in_a_parameter_initializer: { code: 2523, category: ts.DiagnosticCategory.Error, key: "'yield' expressions cannot be used in a parameter initializer." }, await_expressions_cannot_be_used_in_a_parameter_initializer: { code: 2524, category: ts.DiagnosticCategory.Error, key: "'await' expressions cannot be used in a parameter initializer." }, + Initializer_provides_no_value_for_this_binding_element_and_the_binding_element_has_no_default_value: { code: 2525, category: ts.DiagnosticCategory.Error, key: "Initializer provides no value for this binding element and the binding element has no default value." }, JSX_element_attributes_type_0_must_be_an_object_type: { code: 2600, category: ts.DiagnosticCategory.Error, key: "JSX element attributes type '{0}' must be an object type." }, The_return_type_of_a_JSX_element_constructor_must_return_an_object_type: { code: 2601, category: ts.DiagnosticCategory.Error, key: "The return type of a JSX element constructor must return an object type." }, JSX_element_implicitly_has_type_any_because_the_global_type_JSX_Element_does_not_exist: { code: 2602, category: ts.DiagnosticCategory.Error, key: "JSX element implicitly has type 'any' because the global type 'JSX.Element' does not exist." }, @@ -1431,6 +1426,10 @@ var ts; Cannot_emit_namespaced_JSX_elements_in_React: { code: 2650, category: ts.DiagnosticCategory.Error, key: "Cannot emit namespaced JSX elements in React" }, A_member_initializer_in_a_enum_declaration_cannot_reference_members_declared_after_it_including_members_defined_in_other_enums: { code: 2651, category: ts.DiagnosticCategory.Error, key: "A member initializer in a enum declaration cannot reference members declared after it, including members defined in other enums." }, Merged_declaration_0_cannot_include_a_default_export_declaration_Consider_adding_a_separate_export_default_0_declaration_instead: { code: 2652, category: ts.DiagnosticCategory.Error, key: "Merged declaration '{0}' cannot include a default export declaration. Consider adding a separate 'export default {0}' declaration instead." }, + Non_abstract_class_expression_does_not_implement_inherited_abstract_member_0_from_class_1: { code: 2653, category: ts.DiagnosticCategory.Error, key: "Non-abstract class expression does not implement inherited abstract member '{0}' from class '{1}'." }, + Exported_external_package_typings_file_cannot_contain_tripleslash_references_Please_contact_the_package_author_to_update_the_package_definition: { code: 2654, category: ts.DiagnosticCategory.Error, key: "Exported external package typings file cannot contain tripleslash references. Please contact the package author to update the package definition." }, + Exported_external_package_typings_can_only_be_in_d_ts_files_Please_contact_the_package_author_to_update_the_package_definition: { code: 2655, category: ts.DiagnosticCategory.Error, key: "Exported external package typings can only be in '.d.ts' files. Please contact the package author to update the package definition." }, + Exported_external_package_typings_file_0_is_not_a_module_Please_contact_the_package_author_to_update_the_package_definition: { code: 2656, category: ts.DiagnosticCategory.Error, key: "Exported external package typings file '{0}' is not a module. Please contact the package author to update the package definition." }, 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}'." }, @@ -1564,13 +1563,14 @@ var ts; Specifies_the_end_of_line_sequence_to_be_used_when_emitting_files_Colon_CRLF_dos_or_LF_unix: { code: 6060, category: ts.DiagnosticCategory.Message, key: "Specifies the end of line sequence to be used when emitting files: 'CRLF' (dos) or 'LF' (unix)." }, NEWLINE: { code: 6061, category: ts.DiagnosticCategory.Message, key: "NEWLINE" }, Argument_for_newLine_option_must_be_CRLF_or_LF: { code: 6062, category: ts.DiagnosticCategory.Error, key: "Argument for '--newLine' option must be 'CRLF' or 'LF'." }, + Argument_for_moduleResolution_option_must_be_node_or_classic: { code: 6063, category: ts.DiagnosticCategory.Error, key: "Argument for '--moduleResolution' option must be 'node' or 'classic'." }, Specify_JSX_code_generation_Colon_preserve_or_react: { code: 6080, category: ts.DiagnosticCategory.Message, key: "Specify JSX code generation: 'preserve' or 'react'" }, Argument_for_jsx_must_be_preserve_or_react: { code: 6081, category: ts.DiagnosticCategory.Message, key: "Argument for '--jsx' must be 'preserve' or 'react'." }, Enables_experimental_support_for_ES7_decorators: { code: 6065, category: ts.DiagnosticCategory.Message, key: "Enables experimental support for ES7 decorators." }, Enables_experimental_support_for_emitting_type_metadata_for_decorators: { code: 6066, category: ts.DiagnosticCategory.Message, key: "Enables experimental support for emitting type metadata for decorators." }, Option_experimentalAsyncFunctions_cannot_be_specified_when_targeting_ES5_or_lower: { code: 6067, category: ts.DiagnosticCategory.Message, key: "Option 'experimentalAsyncFunctions' cannot be specified when targeting ES5 or lower." }, Enables_experimental_support_for_ES7_async_functions: { code: 6068, category: ts.DiagnosticCategory.Message, key: "Enables experimental support for ES7 async functions." }, - Specifies_module_resolution_strategy_Colon_node_Node_or_classic_TypeScript_pre_1_6: { code: 6069, category: ts.DiagnosticCategory.Message, key: "Specifies module resolution strategy: 'node' (Node) or 'classic' (TypeScript pre 1.6) ." }, + Specifies_module_resolution_strategy_Colon_node_Node_js_or_classic_TypeScript_pre_1_6: { code: 6069, category: ts.DiagnosticCategory.Message, key: "Specifies module resolution strategy: 'node' (Node.js) or 'classic' (TypeScript pre-1.6)." }, Initializes_a_TypeScript_project_and_creates_a_tsconfig_json_file: { code: 6070, category: ts.DiagnosticCategory.Message, key: "Initializes a TypeScript project and creates a tsconfig.json file." }, Successfully_created_a_tsconfig_json_file: { code: 6071, category: ts.DiagnosticCategory.Message, key: "Successfully created a tsconfig.json file." }, Suppress_excess_property_checks_for_object_literals: { code: 6072, category: ts.DiagnosticCategory.Message, key: "Suppress excess property checks for object literals." }, @@ -1618,10 +1618,12 @@ var ts; A_constructor_cannot_contain_a_super_call_when_its_class_extends_null: { code: 17005, category: ts.DiagnosticCategory.Error, key: "A constructor cannot contain a 'super' call when its class extends 'null'" } }; })(ts || (ts = {})); -/// -/// var ts; (function (ts) { + function tokenIsIdentifierOrKeyword(token) { + return token >= 67; + } + ts.tokenIsIdentifierOrKeyword = tokenIsIdentifierOrKeyword; var textToToken = { "abstract": 113, "any": 115, @@ -1869,16 +1871,6 @@ var ts; } 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 || @@ -2913,7 +2905,7 @@ var ts; return token = 234; } function scanJsxIdentifier() { - if (token === 67) { + if (tokenIsIdentifierOrKeyword(token)) { var firstCharPosition = pos; while (pos < end) { var ch = text.charCodeAt(pos); @@ -2980,10 +2972,6 @@ var ts; } ts.createScanner = createScanner; })(ts || (ts = {})); -/// -/// -/// -/// var ts; (function (ts) { ts.optionDeclarations = [ @@ -3223,8 +3211,8 @@ var ts; "node": 2, "classic": 1 }, - experimental: true, - description: ts.Diagnostics.Specifies_module_resolution_strategy_Colon_node_Node_or_classic_TypeScript_pre_1_6 + description: ts.Diagnostics.Specifies_module_resolution_strategy_Colon_node_Node_js_or_classic_TypeScript_pre_1_6, + error: ts.Diagnostics.Argument_for_moduleResolution_option_must_be_node_or_classic } ]; var optionNameMapCache; @@ -3338,10 +3326,10 @@ var ts; } } ts.parseCommandLine = parseCommandLine; - function readConfigFile(fileName) { + function readConfigFile(fileName, readFile) { var text = ""; try { - text = ts.sys.readFile(fileName); + text = readFile(fileName); } catch (e) { return { error: ts.createCompilerDiagnostic(ts.Diagnostics.Cannot_read_file_0_Colon_1, fileName, e.message) }; @@ -3442,7 +3430,6 @@ var ts; } ts.parseConfigFile = parseConfigFile; })(ts || (ts = {})); -/// var ts; (function (ts) { function getDeclarationOfKind(symbol, kind) { @@ -3507,21 +3494,21 @@ var ts; return true; } ts.arrayIsEqualTo = arrayIsEqualTo; - function hasResolvedModuleName(sourceFile, moduleNameText) { + function hasResolvedModule(sourceFile, moduleNameText) { return sourceFile.resolvedModules && ts.hasProperty(sourceFile.resolvedModules, moduleNameText); } - ts.hasResolvedModuleName = hasResolvedModuleName; - function getResolvedModuleFileName(sourceFile, moduleNameText) { - return hasResolvedModuleName(sourceFile, moduleNameText) ? sourceFile.resolvedModules[moduleNameText] : undefined; + ts.hasResolvedModule = hasResolvedModule; + function getResolvedModule(sourceFile, moduleNameText) { + return hasResolvedModule(sourceFile, moduleNameText) ? sourceFile.resolvedModules[moduleNameText] : undefined; } - ts.getResolvedModuleFileName = getResolvedModuleFileName; - function setResolvedModuleName(sourceFile, moduleNameText, resolvedFileName) { + ts.getResolvedModule = getResolvedModule; + function setResolvedModule(sourceFile, moduleNameText, resolvedModule) { if (!sourceFile.resolvedModules) { sourceFile.resolvedModules = {}; } - sourceFile.resolvedModules[moduleNameText] = resolvedFileName; + sourceFile.resolvedModules[moduleNameText] = resolvedModule; } - ts.setResolvedModuleName = setResolvedModuleName; + ts.setResolvedModule = setResolvedModule; function containsParseError(node) { aggregateChildData(node); return (node.parserContextFlags & 64) !== 0; @@ -3777,6 +3764,7 @@ var ts; } ts.getJsDocComments = getJsDocComments; ts.fullTripleSlashReferencePathRegEx = /^(\/\/\/\s*/; + ts.fullTripleSlashAMDReferencePathRegEx = /^(\/\/\/\s*/; function isTypeNode(node) { if (149 <= node.kind && node.kind <= 158) { return true; @@ -4723,11 +4711,21 @@ var ts; add: add, getGlobalDiagnostics: getGlobalDiagnostics, getDiagnostics: getDiagnostics, - getModificationCount: getModificationCount + getModificationCount: getModificationCount, + reattachFileDiagnostics: reattachFileDiagnostics }; function getModificationCount() { return modificationCount; } + function reattachFileDiagnostics(newFile) { + if (!ts.hasProperty(fileDiagnostics, newFile.fileName)) { + return; + } + for (var _i = 0, _a = fileDiagnostics[newFile.fileName]; _i < _a.length; _i++) { + var diagnostic = _a[_i]; + diagnostic.file = newFile; + } + } function add(diagnostic) { var diagnostics; if (diagnostic.file) { @@ -5380,8 +5378,6 @@ var ts; } ts.getTypeParameterOwner = getTypeParameterOwner; })(ts || (ts = {})); -/// -/// var ts; (function (ts) { var nodeConstructors = new Array(270); @@ -5872,10 +5868,6 @@ var ts; } } 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; @@ -6169,10 +6161,10 @@ var ts; return createIdentifier(isIdentifier(), diagnosticMessage); } function parseIdentifierName() { - return createIdentifier(isIdentifierOrKeyword()); + return createIdentifier(ts.tokenIsIdentifierOrKeyword(token)); } function isLiteralPropertyName() { - return isIdentifierOrKeyword() || + return ts.tokenIsIdentifierOrKeyword(token) || token === 9 || token === 8; } @@ -6192,7 +6184,7 @@ var ts; return parsePropertyNameWorker(false); } function isSimplePropertyName() { - return token === 9 || token === 8 || isIdentifierOrKeyword(); + return token === 9 || token === 8 || ts.tokenIsIdentifierOrKeyword(token); } function parseComputedPropertyName() { var node = createNode(134); @@ -6283,9 +6275,9 @@ var ts; case 20: return isHeritageClause(); case 21: - return isIdentifierOrKeyword(); + return ts.tokenIsIdentifierOrKeyword(token); case 13: - return isIdentifierOrKeyword() || token === 15; + return ts.tokenIsIdentifierOrKeyword(token) || token === 15; case 14: return true; case 22: @@ -6311,7 +6303,7 @@ var ts; } function nextTokenIsIdentifierOrKeyword() { nextToken(); - return isIdentifierOrKeyword(); + return ts.tokenIsIdentifierOrKeyword(token); } function isHeritageClauseExtendsOrImplementsKeyword() { if (token === 104 || @@ -6679,7 +6671,7 @@ var ts; return entity; } function parseRightSideOfDot(allowIdentifierNames) { - if (scanner.hasPrecedingLineBreak() && isIdentifierOrKeyword()) { + if (scanner.hasPrecedingLineBreak() && ts.tokenIsIdentifierOrKeyword(token)) { var matchesPattern = lookAhead(nextTokenIsIdentifierOrKeywordOnSameLine); if (matchesPattern) { return createMissingNode(67, true, ts.Diagnostics.Identifier_expected); @@ -6969,7 +6961,7 @@ var ts; return result; } } - if (isIdentifierOrKeyword()) { + if (ts.tokenIsIdentifierOrKeyword(token)) { return parsePropertyOrMethodSignature(); } } @@ -7207,9 +7199,6 @@ var ts; return allowInAnd(parseExpression); } function parseExpression() { - // Expression[in]: - // AssignmentExpression[in] - // Expression[in] , AssignmentExpression[in] var saveDecoratorContext = inDecoratorContext(); if (saveDecoratorContext) { setDecoratorContext(false); @@ -7234,15 +7223,6 @@ var ts; 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(); } @@ -8211,8 +8191,6 @@ var ts; return finishNode(node); } function parseThrowStatement() { - // ThrowStatement[Yield] : - // throw [no LineTerminator here]Expression[In, ?Yield]; var node = createNode(206); parseExpected(96); node.expression = scanner.hasPrecedingLineBreak() ? undefined : allowInAnd(parseExpression); @@ -8262,12 +8240,9 @@ var ts; return finishNode(expressionStatement); } } - function isIdentifierOrKeyword() { - return token >= 67; - } function nextTokenIsIdentifierOrKeywordOnSameLine() { nextToken(); - return isIdentifierOrKeyword() && !scanner.hasPrecedingLineBreak(); + return ts.tokenIsIdentifierOrKeyword(token) && !scanner.hasPrecedingLineBreak(); } function nextTokenIsFunctionKeywordOnSameLine() { nextToken(); @@ -8275,7 +8250,7 @@ var ts; } function nextTokenIsIdentifierOrKeywordOrNumberOnSameLine() { nextToken(); - return (isIdentifierOrKeyword() || token === 8) && !scanner.hasPrecedingLineBreak(); + return (ts.tokenIsIdentifierOrKeyword(token) || token === 8) && !scanner.hasPrecedingLineBreak(); } function isDeclaration() { while (true) { @@ -8303,7 +8278,7 @@ var ts; case 87: nextToken(); return token === 9 || token === 37 || - token === 15 || isIdentifierOrKeyword(); + token === 15 || ts.tokenIsIdentifierOrKeyword(token); case 80: nextToken(); if (token === 55 || token === 37 || @@ -8790,7 +8765,7 @@ var ts; if (isIndexSignature()) { return parseIndexSignatureDeclaration(fullStart, decorators, modifiers); } - if (isIdentifierOrKeyword() || + if (ts.tokenIsIdentifierOrKeyword(token) || token === 9 || token === 8 || token === 37 || @@ -8827,8 +8802,6 @@ var ts; return finishNode(node); } function parseHeritageClauses(isClassHeritageClause) { - // ClassTail[Yield,Await] : (Modified) See 14.5 - // ClassHeritage[?Yield,?Await]opt { ClassBody[?Yield,?Await]opt } if (isHeritageClause()) { return parseList(20, parseHeritageClause); } @@ -8918,12 +8891,13 @@ var ts; } function parseModuleOrNamespaceDeclaration(fullStart, decorators, modifiers, flags) { var node = createNode(216, fullStart); + var namespaceFlag = flags & 131072; node.decorators = decorators; setModifiers(node, modifiers); node.flags |= flags; node.name = parseIdentifier(); node.body = parseOptional(21) - ? parseModuleOrNamespaceDeclaration(getNodePos(), undefined, undefined, 1) + ? parseModuleOrNamespaceDeclaration(getNodePos(), undefined, undefined, 1 | namespaceFlag) : parseModuleBlock(); return finishNode(node); } @@ -8994,12 +8968,6 @@ var ts; return finishNode(importDeclaration); } function parseImportClause(identifier, fullStart) { - // ImportClause: - // ImportedDefaultBinding - // NameSpaceImport - // NamedImports - // ImportedDefaultBinding, NameSpaceImport - // ImportedDefaultBinding, NamedImports var importClause = createNode(221, fullStart); if (identifier) { importClause.name = identifier; @@ -9183,7 +9151,7 @@ var ts; case 95: return true; } - return isIdentifierOrKeyword(); + return ts.tokenIsIdentifierOrKeyword(token); } JSDocParser.isJSDocType = isJSDocType; function parseJSDocTypeExpressionForTests(content, start, length) { @@ -9956,7 +9924,6 @@ var ts; } })(IncrementalParser || (IncrementalParser = {})); })(ts || (ts = {})); -/// var ts; (function (ts) { ts.bindTime = 0; @@ -10670,7 +10637,6 @@ var ts; } } })(ts || (ts = {})); -/// var ts; (function (ts) { var nextSymbolId = 1; @@ -11417,7 +11383,7 @@ var ts; var moduleReferenceLiteral = moduleReferenceExpression; var searchPath = ts.getDirectoryPath(getSourceFile(location).fileName); var moduleName = ts.escapeIdentifier(moduleReferenceLiteral.text); - if (!moduleName) { + if (moduleName === undefined) { return; } var isRelative = isExternalModuleNameRelative(moduleName); @@ -11427,8 +11393,8 @@ var ts; return symbol; } } - var fileName = ts.getResolvedModuleFileName(getSourceFile(location), moduleReferenceLiteral.text); - var sourceFile = fileName && host.getSourceFile(fileName); + var resolvedModule = ts.getResolvedModule(getSourceFile(location), moduleReferenceLiteral.text); + var sourceFile = resolvedModule && host.getSourceFile(resolvedModule.resolvedFileName); if (sourceFile) { if (sourceFile.symbol) { return sourceFile.symbol; @@ -12548,52 +12514,52 @@ var ts; return checkIdentifier(declaration.name); } if (ts.isBindingPattern(declaration.name)) { - return getTypeFromBindingPattern(declaration.name); + return getTypeFromBindingPattern(declaration.name, false); } return undefined; } - function getTypeFromBindingElement(element) { + function getTypeFromBindingElement(element, includePatternInType) { if (element.initializer) { return getWidenedType(checkExpressionCached(element.initializer)); } if (ts.isBindingPattern(element.name)) { - return getTypeFromBindingPattern(element.name); + return getTypeFromBindingPattern(element.name, includePatternInType); } return anyType; } - function getTypeFromObjectBindingPattern(pattern) { + function getTypeFromObjectBindingPattern(pattern, includePatternInType) { 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); + symbol.type = getTypeFromBindingElement(e, includePatternInType); + symbol.bindingElement = e; members[symbol.name] = symbol; }); - return createAnonymousType(undefined, members, emptyArray, emptyArray, undefined, undefined); + var result = createAnonymousType(undefined, members, emptyArray, emptyArray, undefined, undefined); + if (includePatternInType) { + result.pattern = pattern; + } + return result; } - function getTypeFromArrayBindingPattern(pattern) { - var hasSpreadElement = false; - var elementTypes = []; - ts.forEach(pattern.elements, function (e) { - elementTypes.push(e.kind === 185 || e.dotDotDotToken ? anyType : getTypeFromBindingElement(e)); - if (e.dotDotDotToken) { - hasSpreadElement = true; - } - }); - if (!elementTypes.length) { + function getTypeFromArrayBindingPattern(pattern, includePatternInType) { + var elements = pattern.elements; + if (elements.length === 0 || elements[elements.length - 1].dotDotDotToken) { return languageVersion >= 2 ? createIterableType(anyType) : anyArrayType; } - else if (hasSpreadElement) { - var unionOfElements = getUnionType(elementTypes); - return languageVersion >= 2 ? createIterableType(unionOfElements) : createArrayType(unionOfElements); + var elementTypes = ts.map(elements, function (e) { return e.kind === 185 ? anyType : getTypeFromBindingElement(e, includePatternInType); }); + if (includePatternInType) { + var result = createNewTupleType(elementTypes); + result.pattern = pattern; + return result; } return createTupleType(elementTypes); } - function getTypeFromBindingPattern(pattern) { + function getTypeFromBindingPattern(pattern, includePatternInType) { return pattern.kind === 159 - ? getTypeFromObjectBindingPattern(pattern) - : getTypeFromArrayBindingPattern(pattern); + ? getTypeFromObjectBindingPattern(pattern, includePatternInType) + : getTypeFromArrayBindingPattern(pattern, includePatternInType); } function getWidenedTypeForVariableLikeDeclaration(declaration, reportErrors) { var type = getTypeForVariableLikeDeclaration(declaration); @@ -13915,11 +13881,11 @@ var ts; } function createTupleType(elementTypes) { var id = getTypeListId(elementTypes); - var type = tupleTypes[id]; - if (!type) { - type = tupleTypes[id] = createObjectType(8192 | getPropagatingFlagsOfTypes(elementTypes)); - type.elementTypes = elementTypes; - } + return tupleTypes[id] || (tupleTypes[id] = createNewTupleType(elementTypes)); + } + function createNewTupleType(elementTypes) { + var type = createObjectType(8192 | getPropagatingFlagsOfTypes(elementTypes)); + type.elementTypes = elementTypes; return type; } function getTypeFromTupleTypeNode(node) { @@ -14407,7 +14373,9 @@ var ts; } return 0; } - source = getRegularTypeOfObjectLiteral(source); + if (target.flags & 49152) { + source = getRegularTypeOfObjectLiteral(source); + } } var saveErrorInfo = errorInfo; if (source.flags & 16384) { @@ -14511,6 +14479,7 @@ var ts; var prop = _a[_i]; if (!isKnownProperty(target, prop.name)) { if (reportErrors) { + errorNode = prop.valueDeclaration; reportError(ts.Diagnostics.Object_literal_may_only_specify_known_properties_and_0_does_not_exist_in_type_1, symbolToString(prop), typeToString(target)); } return true; @@ -14805,8 +14774,8 @@ var ts; return result; function abstractSignatureRelatedTo(source, sourceSig, target, targetSig) { if (sourceSig && targetSig) { - var sourceDecl = source.symbol && ts.getDeclarationOfKind(source.symbol, 212); - var targetDecl = target.symbol && ts.getDeclarationOfKind(target.symbol, 212); + var sourceDecl = source.symbol && getClassLikeDeclarationOfSymbol(source.symbol); + var targetDecl = target.symbol && getClassLikeDeclarationOfSymbol(target.symbol); if (!sourceDecl) { return -1; } @@ -14814,8 +14783,8 @@ var ts; var targetErasedSignature = getErasedSignature(targetSig); var sourceReturnType = sourceErasedSignature && getReturnTypeOfSignature(sourceErasedSignature); var targetReturnType = targetErasedSignature && getReturnTypeOfSignature(targetErasedSignature); - var sourceReturnDecl = sourceReturnType && sourceReturnType.symbol && ts.getDeclarationOfKind(sourceReturnType.symbol, 212); - var targetReturnDecl = targetReturnType && targetReturnType.symbol && ts.getDeclarationOfKind(targetReturnType.symbol, 212); + var sourceReturnDecl = sourceReturnType && sourceReturnType.symbol && getClassLikeDeclarationOfSymbol(sourceReturnType.symbol); + var targetReturnDecl = targetReturnType && targetReturnType.symbol && getClassLikeDeclarationOfSymbol(targetReturnType.symbol); var sourceIsAbstract = sourceReturnDecl && sourceReturnDecl.flags & 256; var targetIsAbstract = targetReturnDecl && targetReturnDecl.flags & 256; if (sourceIsAbstract && !(targetIsAbstract && targetDecl)) { @@ -15138,6 +15107,7 @@ var ts; regularType.constructSignatures = type.constructSignatures; regularType.stringIndexType = type.stringIndexType; regularType.numberIndexType = type.numberIndexType; + type.regularType = regularType; } return regularType; } @@ -16001,8 +15971,8 @@ var ts; } } function getContextuallyTypedParameterType(parameter) { - if (isFunctionExpressionOrArrowFunction(parameter.parent)) { - var func = parameter.parent; + var func = parameter.parent; + if (isFunctionExpressionOrArrowFunction(func) || ts.isObjectLiteralMethod(func)) { if (isContextSensitive(func)) { var contextualSignature = getContextualSignature(func); if (contextualSignature) { @@ -16034,7 +16004,7 @@ var ts; } } if (ts.isBindingPattern(declaration.name)) { - return getTypeFromBindingPattern(declaration.name); + return getTypeFromBindingPattern(declaration.name, true); } } return undefined; @@ -16326,11 +16296,12 @@ var ts; var arrayOrIterableType = checkExpressionCached(node.expression, contextualMapper); return checkIteratedTypeOrElementType(arrayOrIterableType, node.expression, false); } + function hasDefaultValue(node) { + return (node.kind === 161 && !!node.initializer) || + (node.kind === 179 && node.operatorToken.kind === 55); + } function checkArrayLiteral(node, contextualMapper) { var elements = node.elements; - if (!elements.length) { - return createArrayType(undefinedType); - } var hasSpreadElement = false; var elementTypes = []; var inDestructuringPattern = isAssignmentTarget(node); @@ -16351,12 +16322,35 @@ var ts; hasSpreadElement = hasSpreadElement || e.kind === 183; } if (!hasSpreadElement) { + if (inDestructuringPattern && elementTypes.length) { + var type = createNewTupleType(elementTypes); + type.pattern = node; + return type; + } var contextualType = getContextualType(node); - if (contextualType && contextualTypeIsTupleLikeType(contextualType) || inDestructuringPattern) { - return createTupleType(elementTypes); + if (contextualType && contextualTypeIsTupleLikeType(contextualType)) { + var pattern = contextualType.pattern; + if (pattern && (pattern.kind === 160 || pattern.kind === 162)) { + var patternElements = pattern.elements; + for (var i = elementTypes.length; i < patternElements.length; i++) { + var patternElement = patternElements[i]; + if (hasDefaultValue(patternElement)) { + elementTypes.push(contextualType.elementTypes[i]); + } + else { + if (patternElement.kind !== 185) { + error(patternElement, ts.Diagnostics.Initializer_provides_no_value_for_this_binding_element_and_the_binding_element_has_no_default_value); + } + elementTypes.push(unknownType); + } + } + } + if (elementTypes.length) { + return createTupleType(elementTypes); + } } } - return createArrayType(getUnionType(elementTypes)); + return createArrayType(elementTypes.length ? getUnionType(elementTypes) : undefinedType); } function isNumericName(name) { return name.kind === 134 ? isNumericComputedName(name) : isNumericLiteralName(name.text); @@ -16388,6 +16382,9 @@ var ts; var propertiesTable = {}; var propertiesArray = []; var contextualType = getContextualType(node); + var contextualTypeHasPattern = contextualType && contextualType.pattern && + (contextualType.pattern.kind === 159 || contextualType.pattern.kind === 163); + var inDestructuringPattern = isAssignmentTarget(node); var typeFlags = 0; for (var _i = 0, _a = node.properties; _i < _a.length; _i++) { var memberDecl = _a[_i]; @@ -16408,6 +16405,20 @@ var ts; } typeFlags |= type.flags; var prop = createSymbol(4 | 67108864 | member.flags, member.name); + if (inDestructuringPattern) { + if (memberDecl.kind === 243 && hasDefaultValue(memberDecl.initializer)) { + prop.flags |= 536870912; + } + } + else if (contextualTypeHasPattern) { + var impliedProp = getPropertyOfType(contextualType, member.name); + if (impliedProp) { + prop.flags |= impliedProp.flags & 536870912; + } + else if (!compilerOptions.suppressExcessPropertyErrors) { + error(memberDecl.name, ts.Diagnostics.Object_literal_may_only_specify_known_properties_and_0_does_not_exist_in_type_1, symbolToString(member), typeToString(contextualType)); + } + } prop.declarations = member.declarations; prop.parent = member.parent; if (member.valueDeclaration) { @@ -16426,11 +16437,26 @@ var ts; } propertiesArray.push(member); } + if (contextualTypeHasPattern) { + for (var _b = 0, _c = getPropertiesOfType(contextualType); _b < _c.length; _b++) { + var prop = _c[_b]; + if (!ts.hasProperty(propertiesTable, prop.name)) { + if (!(prop.flags & 536870912)) { + error(prop.valueDeclaration || prop.bindingElement, ts.Diagnostics.Initializer_provides_no_value_for_this_binding_element_and_the_binding_element_has_no_default_value); + } + propertiesTable[prop.name] = prop; + propertiesArray.push(prop); + } + } + } var stringIndexType = getIndexType(0); var numberIndexType = getIndexType(1); var result = createAnonymousType(node.symbol, propertiesTable, emptyArray, emptyArray, stringIndexType, numberIndexType); var freshObjectLiteralFlag = compilerOptions.suppressExcessPropertyErrors ? 0 : 1048576; result.flags |= 524288 | 4194304 | freshObjectLiteralFlag | (typeFlags & 14680064); + if (inDestructuringPattern) { + result.pattern = node; + } return result; function getIndexType(kind) { if (contextualType && contextualTypeHasIndexSignature(contextualType, kind)) { @@ -17514,7 +17540,7 @@ var ts; if (expressionType === unknownType) { return resolveErrorCall(node); } - var valueDecl = expressionType.symbol && ts.getDeclarationOfKind(expressionType.symbol, 212); + var valueDecl = expressionType.symbol && getClassLikeDeclarationOfSymbol(expressionType.symbol); if (valueDecl && valueDecl.flags & 256) { error(node, ts.Diagnostics.Cannot_create_an_instance_of_the_abstract_class_0, ts.declarationNameToString(valueDecl.name)); return resolveErrorCall(node); @@ -18509,10 +18535,6 @@ var ts; } } 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). checkGrammarDecorators(node) || checkGrammarModifiers(node); checkVariableLikeDeclaration(node); var func = ts.getContainingFunction(node); @@ -19155,15 +19177,6 @@ var ts; return type; } function getPromisedType(promise) { - // - // { // promise - // then( // thenFunction - // onfulfilled: ( // onfulfilledParameterType - // value: T // valueParameterType - // ) => any - // ): any; - // } - // if (promise.flags & 1) { return undefined; } @@ -19506,9 +19519,6 @@ var ts; } } 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) & 49152) !== 0 || ts.isParameterDeclaration(node)) { return; } @@ -20180,20 +20190,10 @@ var ts; function getTargetSymbol(s) { return s.flags & 16777216 ? getSymbolLinks(s).target : s; } + function getClassLikeDeclarationOfSymbol(symbol) { + return ts.forEach(symbol.declarations, function (d) { return ts.isClassLike(d) ? d : undefined; }); + } 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]; @@ -20206,9 +20206,14 @@ var ts; ts.Debug.assert(!!derived, "derived should point to something, even if it is the base class' declaration."); if (derived) { if (derived === base) { - var derivedClassDecl = ts.getDeclarationOfKind(type.symbol, 212); + var derivedClassDecl = getClassLikeDeclarationOfSymbol(type.symbol); if (baseDeclarationFlags & 256 && (!derivedClassDecl || !(derivedClassDecl.flags & 256))) { - error(derivedClassDecl, ts.Diagnostics.Non_abstract_class_0_does_not_implement_inherited_abstract_member_1_from_class_2, typeToString(type), symbolToString(baseProperty), typeToString(baseType)); + if (derivedClassDecl.kind === 184) { + error(derivedClassDecl, ts.Diagnostics.Non_abstract_class_expression_does_not_implement_inherited_abstract_member_0_from_class_1, symbolToString(baseProperty), typeToString(baseType)); + } + else { + error(derivedClassDecl, ts.Diagnostics.Non_abstract_class_0_does_not_implement_inherited_abstract_member_1_from_class_2, typeToString(type), symbolToString(baseProperty), typeToString(baseType)); + } } } else { @@ -21432,7 +21437,10 @@ var ts; var symbols = []; var name_16 = symbol.name; ts.forEach(getSymbolLinks(symbol).containingType.types, function (t) { - symbols.push(getPropertyOfType(t, name_16)); + var symbol = getPropertyOfType(t, name_16); + if (symbol) { + symbols.push(symbol); + } }); return symbols; } @@ -22719,7 +22727,6 @@ var ts; } ts.createTypeChecker = createTypeChecker; })(ts || (ts = {})); -/// var ts; (function (ts) { function getDeclarationDiagnostics(host, resolver, targetSourceFile) { @@ -24047,8 +24054,6 @@ var ts; } ts.writeDeclarationFile = writeDeclarationFile; })(ts || (ts = {})); -/// -/// var ts; (function (ts) { function isExternalModuleOrDeclarationFile(sourceFile) { @@ -24141,6 +24146,7 @@ var ts; var scopeEmitStart = function (scopeDeclaration, scopeName) { }; var scopeEmitEnd = function () { }; var sourceMapData; + var emitLeadingCommentsOfPosition = compilerOptions.removeComments ? function (pos) { } : emitLeadingCommentsOfPositionWorker; if (compilerOptions.sourceMap || compilerOptions.inlineSourceMap) { initializeEmitterWithSourceMaps(); } @@ -24787,19 +24793,6 @@ 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; } @@ -24967,8 +24960,10 @@ var ts; function jsxEmitPreserve(node) { function emitJsxAttribute(node) { emit(node.name); - write("="); - emit(node.initializer); + if (node.initializer) { + write("="); + emit(node.initializer); + } } function emitJsxSpreadAttribute(node) { write("{..."); @@ -25144,8 +25139,15 @@ var ts; } else if (declaration.kind === 224) { write(getGeneratedNameForNode(declaration.parent.parent.parent)); - write("."); - writeTextOfNode(currentSourceFile, declaration.propertyName || declaration.name); + var name = declaration.propertyName || declaration.name; + var identifier = ts.getSourceTextOfNodeFromSourceFile(currentSourceFile, name); + if (languageVersion === 0 && identifier === "default") { + write("[\"default\"]"); + } + else { + write("."); + write(identifier); + } return; } } @@ -25807,7 +25809,8 @@ var ts; operand.kind !== 178 && operand.kind !== 167 && !(operand.kind === 166 && node.parent.kind === 167) && - !(operand.kind === 171 && node.parent.kind === 166)) { + !(operand.kind === 171 && node.parent.kind === 166) && + !(operand.kind === 8 && node.parent.kind === 164)) { emit(operand); return; } @@ -26137,26 +26140,6 @@ var ts; 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(84, node.pos); write(" "); endPos = emitToken(17, endPos); @@ -26440,6 +26423,9 @@ var ts; } function emitExportSpecifierInSystemModule(specifier) { ts.Debug.assert(compilerOptions.module === 4); + if (!resolver.getReferencedValueDeclaration(specifier.propertyName || specifier.name) && !resolver.isValueAliasDeclaration(specifier)) { + return; + } writeLine(); emitStart(specifier.name); write(exportFunctionForFile + "(\""); @@ -26491,19 +26477,19 @@ var ts; write(")"); } } - function ensureIdentifier(expr) { - if (expr.kind !== 67) { - var identifier = createTempVariable(0); - if (!canDefineTempVariablesInPlace) { - recordTempDeclaration(identifier); - } - emitAssignment(identifier, expr); - expr = identifier; + function ensureIdentifier(expr, reuseIdentifierExpressions) { + if (expr.kind === 67 && reuseIdentifierExpressions) { + return expr; } - return expr; + var identifier = createTempVariable(0); + if (!canDefineTempVariablesInPlace) { + recordTempDeclaration(identifier); + } + emitAssignment(identifier, expr); + return identifier; } function createDefaultValueCheck(value, defaultValue) { - value = ensureIdentifier(value); + value = ensureIdentifier(value, true); var equals = ts.createSynthesizedNode(179); equals.left = value; equals.operatorToken = ts.createSynthesizedNode(32); @@ -26544,7 +26530,7 @@ var ts; function emitObjectLiteralAssignment(target, value) { var properties = target.properties; if (properties.length !== 1) { - value = ensureIdentifier(value); + value = ensureIdentifier(value, true); } for (var _a = 0; _a < properties.length; _a++) { var p = properties[_a]; @@ -26557,7 +26543,7 @@ var ts; function emitArrayLiteralAssignment(target, value) { var elements = target.elements; if (elements.length !== 1) { - value = ensureIdentifier(value); + value = ensureIdentifier(value, true); } for (var i = 0; i < elements.length; i++) { var e = elements[i]; @@ -26599,7 +26585,7 @@ var ts; if (root.parent.kind !== 170) { write("("); } - value = ensureIdentifier(value); + value = ensureIdentifier(value, true); emitDestructuringAssignment(target, value); write(", "); emit(value); @@ -26618,10 +26604,11 @@ var ts; if (ts.isBindingPattern(target.name)) { var pattern = target.name; var elements = pattern.elements; - if (elements.length !== 1) { - value = ensureIdentifier(value); + var numElements = elements.length; + if (numElements !== 1) { + value = ensureIdentifier(value, numElements !== 0); } - for (var i = 0; i < elements.length; i++) { + for (var i = 0; i < numElements; i++) { var element = elements[i]; if (pattern.kind === 159) { var propName = element.propertyName || element.name; @@ -26631,7 +26618,7 @@ var ts; if (!element.dotDotDotToken) { emitBindingElement(element, createElementAccessExpression(value, createNumericLiteral(i))); } - else if (i === elements.length - 1) { + else if (i === numElements - 1) { emitBindingElement(element, createSliceCall(value, i)); } } @@ -26871,7 +26858,7 @@ var ts; } function emitFunctionDeclaration(node) { if (ts.nodeIsMissing(node.body)) { - return emitOnlyPinnedOrTripleSlashComments(node); + return emitCommentsOnNotEmittedNode(node); } if (node.kind !== 141 && node.kind !== 140 && node.parent && node.parent.kind !== 243 && @@ -27189,7 +27176,7 @@ var ts; } else if (member.kind === 141 || node.kind === 140) { if (!member.body) { - return emitOnlyPinnedOrTripleSlashComments(member); + return emitCommentsOnNotEmittedNode(member); } writeLine(); emitLeadingComments(member); @@ -27255,7 +27242,7 @@ var ts; for (var _a = 0, _b = node.members; _a < _b.length; _a++) { var member = _b[_a]; if ((member.kind === 141 || node.kind === 140) && !member.body) { - emitOnlyPinnedOrTripleSlashComments(member); + emitCommentsOnNotEmittedNode(member); } else if (member.kind === 141 || member.kind === 143 || @@ -27302,7 +27289,7 @@ var ts; var hasInstancePropertyWithInitializer = false; ts.forEach(node.members, function (member) { if (member.kind === 142 && !member.body) { - emitOnlyPinnedOrTripleSlashComments(member); + emitCommentsOnNotEmittedNode(member); } if (member.kind === 139 && member.initializer && (member.flags & 128) === 0) { hasInstancePropertyWithInitializer = true; @@ -27751,50 +27738,49 @@ var ts; write("void 0"); } function emitSerializedTypeNode(node) { - if (!node) { - return; - } - switch (node.kind) { - case 101: - write("void 0"); - return; - case 158: - emitSerializedTypeNode(node.type); - return; - case 150: - case 151: - write("Function"); - return; - case 154: - case 155: - write("Array"); - return; - case 148: - case 118: - write("Boolean"); - return; - case 128: - case 9: - write("String"); - return; - case 126: - write("Number"); - return; - case 129: - write("Symbol"); - return; - case 149: - emitSerializedTypeReferenceNode(node); - return; - case 152: - case 153: - case 156: - case 157: - case 115: - break; - default: - ts.Debug.fail("Cannot serialize unexpected type node."); - break; + if (node) { + switch (node.kind) { + case 101: + write("void 0"); + return; + case 158: + emitSerializedTypeNode(node.type); + return; + case 150: + case 151: + write("Function"); + return; + case 154: + case 155: + write("Array"); + return; + case 148: + case 118: + write("Boolean"); + return; + case 128: + case 9: + write("String"); + return; + case 126: + write("Number"); + return; + case 129: + write("Symbol"); + return; + case 149: + emitSerializedTypeReferenceNode(node); + return; + case 152: + case 153: + case 156: + case 157: + case 115: + break; + default: + ts.Debug.fail("Cannot serialize unexpected type node."); + break; + } } write("Object"); } @@ -27933,7 +27919,7 @@ var ts; return argumentsWritten; } function emitInterfaceDeclaration(node) { - emitOnlyPinnedOrTripleSlashComments(node); + emitCommentsOnNotEmittedNode(node); } function shouldEmitEnumDeclaration(node) { var isConstEnum = ts.isConst(node); @@ -28040,7 +28026,7 @@ var ts; function emitModuleDeclaration(node) { var shouldEmit = shouldEmitModuleDeclaration(node); if (!shouldEmit) { - return emitOnlyPinnedOrTripleSlashComments(node); + return emitCommentsOnNotEmittedNode(node); } var hoistedInDeclarationScope = shouldHoistDeclarationInSystemJsModule(node); var emitVarForModule = !hoistedInDeclarationScope && !isModuleMergedWithES6Class(node); @@ -28708,7 +28694,7 @@ var ts; } return; } - if (ts.isInternalModuleImportEqualsDeclaration(node)) { + if (ts.isInternalModuleImportEqualsDeclaration(node) && resolver.isValueAliasDeclaration(node)) { if (!hoistedVars) { hoistedVars = []; } @@ -28884,17 +28870,6 @@ var ts; write("});"); } function emitAMDDependencies(node, includeNonAmdDependencies) { - // An AMD define function has the following shape: - // define(id?, dependencies?, factory); - // - // This has the shape of - // define(name, ["module1", "module2"], function (module1Alias) { - // The location of the alias in the parameter list in the factory function needs to - // match the position of the module name in the dependency list. - // - // To ensure this is true in cases of modules with no aliases, e.g.: - // `import "module"` or `` - // we need to add modules without alias names to the end of the dependencies list var aliasedModuleNames = []; var unaliasedModuleNames = []; var importAliasNames = []; @@ -29178,7 +29153,7 @@ var ts; function emitNodeConsideringCommentsOption(node, emitNodeConsideringSourcemap) { if (node) { if (node.flags & 2) { - return emitOnlyPinnedOrTripleSlashComments(node); + return emitCommentsOnNotEmittedNode(node); } if (isSpecializedCommentHandling(node)) { return emitNodeWithoutSourceMap(node); @@ -29410,14 +29385,20 @@ var ts; } return leadingComments; } - function filterComments(ranges, onlyPinnedOrTripleSlashComments) { - if (ranges && onlyPinnedOrTripleSlashComments) { - ranges = ts.filter(ranges, isPinnedOrTripleSlashComment); - if (ranges.length === 0) { - return undefined; - } + function isPinnedComments(comment) { + return currentSourceFile.text.charCodeAt(comment.pos + 1) === 42 && + currentSourceFile.text.charCodeAt(comment.pos + 2) === 33; + } + function isTripleSlashComment(comment) { + if (currentSourceFile.text.charCodeAt(comment.pos + 1) === 47 && + comment.pos + 2 < comment.end && + currentSourceFile.text.charCodeAt(comment.pos + 2) === 47) { + var textSubStr = currentSourceFile.text.substring(comment.pos, comment.end); + return textSubStr.match(ts.fullTripleSlashReferencePathRegEx) || + textSubStr.match(ts.fullTripleSlashAMDReferencePathRegEx) ? + true : false; } - return ranges; + return false; } function getLeadingCommentsToEmit(node) { if (node.parent) { @@ -29438,26 +29419,46 @@ var ts; } } } - function emitOnlyPinnedOrTripleSlashComments(node) { - emitLeadingCommentsWorker(node, true); + function emitCommentsOnNotEmittedNode(node) { + emitLeadingCommentsWorker(node, false); } function emitLeadingComments(node) { - return emitLeadingCommentsWorker(node, compilerOptions.removeComments); + return emitLeadingCommentsWorker(node, true); } - function emitLeadingCommentsWorker(node, onlyPinnedOrTripleSlashComments) { - var leadingComments = filterComments(getLeadingCommentsToEmit(node), onlyPinnedOrTripleSlashComments); + function emitLeadingCommentsWorker(node, isEmittedNode) { + if (compilerOptions.removeComments) { + return; + } + var leadingComments; + if (isEmittedNode) { + leadingComments = getLeadingCommentsToEmit(node); + } + else { + if (node.pos === 0) { + leadingComments = ts.filter(getLeadingCommentsToEmit(node), isTripleSlashComment); + } + } ts.emitNewLineBeforeLeadingComments(currentSourceFile, writer, node, leadingComments); ts.emitComments(currentSourceFile, writer, leadingComments, true, newLine, writeComment); } function emitTrailingComments(node) { - var trailingComments = filterComments(getTrailingCommentsToEmit(node), compilerOptions.removeComments); + if (compilerOptions.removeComments) { + return; + } + var trailingComments = getTrailingCommentsToEmit(node); ts.emitComments(currentSourceFile, writer, trailingComments, false, newLine, writeComment); } function emitTrailingCommentsOfPosition(pos) { - var trailingComments = filterComments(ts.getTrailingCommentRanges(currentSourceFile.text, pos), compilerOptions.removeComments); + if (compilerOptions.removeComments) { + return; + } + var trailingComments = ts.getTrailingCommentRanges(currentSourceFile.text, pos); ts.emitComments(currentSourceFile, writer, trailingComments, true, newLine, writeComment); } - function emitLeadingCommentsOfPosition(pos) { + function emitLeadingCommentsOfPositionWorker(pos) { + if (compilerOptions.removeComments) { + return; + } var leadingComments; if (hasDetachedComments(pos)) { leadingComments = getLeadingCommentsWithoutDetachedComments(); @@ -29465,12 +29466,19 @@ var ts; 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); + var leadingComments; + if (compilerOptions.removeComments) { + if (node.pos === 0) { + leadingComments = ts.filter(ts.getLeadingCommentRanges(currentSourceFile.text, node.pos), isPinnedComments); + } + } + else { + leadingComments = ts.getLeadingCommentRanges(currentSourceFile.text, node.pos); + } if (leadingComments) { var detachedComments = []; var lastComment; @@ -29508,17 +29516,6 @@ var ts; write(shebang); } } - 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); @@ -29784,9 +29781,6 @@ var ts; "diams": 0x2666 }; })(ts || (ts = {})); -/// -/// -/// var ts; (function (ts) { ts.programTime = 0; @@ -29794,7 +29788,7 @@ var ts; ts.ioReadTime = 0; ts.ioWriteTime = 0; var emptyArray = []; - ts.version = "1.6.0"; + ts.version = "1.7.0"; function findConfigFile(searchPath) { var fileName = "tsconfig.json"; while (true) { @@ -29834,10 +29828,12 @@ var ts; var candidate = ts.normalizePath(ts.combinePaths(containingDirectory, moduleName)); var resolvedFileName = loadNodeModuleFromFile(candidate, false, failedLookupLocations, host); if (resolvedFileName) { - return { resolvedFileName: resolvedFileName, failedLookupLocations: failedLookupLocations }; + return { resolvedModule: { resolvedFileName: resolvedFileName }, failedLookupLocations: failedLookupLocations }; } resolvedFileName = loadNodeModuleFromDirectory(candidate, false, failedLookupLocations, host); - return { resolvedFileName: resolvedFileName, failedLookupLocations: failedLookupLocations }; + return resolvedFileName + ? { resolvedModule: { resolvedFileName: resolvedFileName }, failedLookupLocations: failedLookupLocations } + : { resolvedModule: undefined, failedLookupLocations: failedLookupLocations }; } else { return loadModuleFromNodeModules(moduleName, containingDirectory, host); @@ -29895,11 +29891,11 @@ var ts; var candidate = ts.normalizePath(ts.combinePaths(nodeModulesFolder, moduleName)); var result = loadNodeModuleFromFile(candidate, true, failedLookupLocations, host); if (result) { - return { resolvedFileName: result, failedLookupLocations: failedLookupLocations }; + return { resolvedModule: { resolvedFileName: result, isExternalLibraryImport: true }, failedLookupLocations: failedLookupLocations }; } result = loadNodeModuleFromDirectory(candidate, true, failedLookupLocations, host); if (result) { - return { resolvedFileName: result, failedLookupLocations: failedLookupLocations }; + return { resolvedModule: { resolvedFileName: result, isExternalLibraryImport: true }, failedLookupLocations: failedLookupLocations }; } } var parentPath = ts.getDirectoryPath(directory); @@ -29908,36 +29904,15 @@ var ts; } directory = parentPath; } - return { resolvedFileName: undefined, failedLookupLocations: failedLookupLocations }; + return { resolvedModule: undefined, failedLookupLocations: failedLookupLocations }; } - function baseUrlModuleNameResolver(moduleName, containingFile, baseUrl, host) { - ts.Debug.assert(baseUrl !== undefined); - var normalizedModuleName = ts.normalizeSlashes(moduleName); - var basePart = useBaseUrl(moduleName) ? baseUrl : ts.getDirectoryPath(containingFile); - var candidate = ts.normalizePath(ts.combinePaths(basePart, moduleName)); - var failedLookupLocations = []; - return ts.forEach(ts.supportedExtensions, function (ext) { return tryLoadFile(candidate + ext); }) || { resolvedFileName: undefined, failedLookupLocations: failedLookupLocations }; - function tryLoadFile(location) { - if (host.fileExists(location)) { - return { resolvedFileName: location, failedLookupLocations: failedLookupLocations }; - } - else { - failedLookupLocations.push(location); - return undefined; - } - } - } - ts.baseUrlModuleNameResolver = baseUrlModuleNameResolver; function nameStartsWithDotSlashOrDotDotSlash(name) { var i = name.lastIndexOf("./", 1); return i === 0 || (i === 1 && name.charCodeAt(0) === 46); } - function useBaseUrl(moduleName) { - return ts.getRootLength(moduleName) === 0 && !nameStartsWithDotSlashOrDotDotSlash(moduleName); - } function classicNameResolver(moduleName, containingFile, compilerOptions, host) { if (moduleName.indexOf('!') != -1) { - return { resolvedFileName: undefined, failedLookupLocations: [] }; + return { resolvedModule: undefined, failedLookupLocations: [] }; } var searchPath = ts.getDirectoryPath(containingFile); var searchName; @@ -29966,7 +29941,9 @@ var ts; } searchPath = parentPath; } - return { resolvedFileName: referencedSourceFile, failedLookupLocations: failedLookupLocations }; + return referencedSourceFile + ? { resolvedModule: { resolvedFileName: referencedSourceFile }, failedLookupLocations: failedLookupLocations } + : { resolvedModule: undefined, failedLookupLocations: failedLookupLocations }; } ts.classicNameResolver = classicNameResolver; ts.defaultInitCompilerOptions = { @@ -30079,7 +30056,8 @@ var ts; function createProgram(rootNames, options, host, oldProgram) { var program; var files = []; - var diagnostics = ts.createDiagnosticCollection(); + var fileProcessingDiagnostics = ts.createDiagnosticCollection(); + var programDiagnostics = ts.createDiagnosticCollection(); var commonSourceDirectory; var diagnosticsProducingTypeChecker; var noDiagnosticsTypeChecker; @@ -30087,8 +30065,9 @@ var ts; var skipDefaultLib = options.noLib; var start = new Date().getTime(); host = host || createCompilerHost(options); - var resolveModuleNamesWorker = host.resolveModuleNames || - (function (moduleNames, containingFile) { return ts.map(moduleNames, function (moduleName) { return resolveModuleName(moduleName, containingFile, options, host).resolvedFileName; }); }); + var resolveModuleNamesWorker = host.resolveModuleNames + ? (function (moduleNames, containingFile) { return host.resolveModuleNames(moduleNames, containingFile); }) + : (function (moduleNames, containingFile) { return ts.map(moduleNames, function (moduleName) { return resolveModuleName(moduleName, containingFile, options, host).resolvedModule; }); }); var filesByName = ts.createFileMap(function (fileName) { return host.getCanonicalFileName(fileName); }); if (oldProgram) { var oldOptions = oldProgram.getCompilerOptions(); @@ -30128,7 +30107,8 @@ var ts; getNodeCount: function () { return getDiagnosticsProducingTypeChecker().getNodeCount(); }, getIdentifierCount: function () { return getDiagnosticsProducingTypeChecker().getIdentifierCount(); }, getSymbolCount: function () { return getDiagnosticsProducingTypeChecker().getSymbolCount(); }, - getTypeCount: function () { return getDiagnosticsProducingTypeChecker().getTypeCount(); } + getTypeCount: function () { return getDiagnosticsProducingTypeChecker().getTypeCount(); }, + getFileProcessingDiagnostics: function () { return fileProcessingDiagnostics; } }; return program; function getClassifiableNames() { @@ -30152,6 +30132,7 @@ var ts; return false; } var newSourceFiles = []; + var modifiedSourceFiles = []; for (var _i = 0, _a = oldProgram.getSourceFiles(); _i < _a.length; _i++) { var oldSourceFile = _a[_i]; var newSourceFile = host.getSourceFile(oldSourceFile.fileName, options.target); @@ -30173,13 +30154,20 @@ var ts; var moduleNames = ts.map(newSourceFile.imports, function (name) { return name.text; }); var resolutions = resolveModuleNamesWorker(moduleNames, newSourceFile.fileName); for (var i = 0; i < moduleNames.length; ++i) { - var oldResolution = ts.getResolvedModuleFileName(oldSourceFile, moduleNames[i]); - if (oldResolution !== resolutions[i]) { + var newResolution = resolutions[i]; + var oldResolution = ts.getResolvedModule(oldSourceFile, moduleNames[i]); + var resolutionChanged = oldResolution + ? !newResolution || + oldResolution.resolvedFileName !== newResolution.resolvedFileName || + !!oldResolution.isExternalLibraryImport !== !!newResolution.isExternalLibraryImport + : newResolution; + if (resolutionChanged) { return false; } } } newSourceFile.resolvedModules = oldSourceFile.resolvedModules; + modifiedSourceFiles.push(newSourceFile); } else { newSourceFile = oldSourceFile; @@ -30191,6 +30179,11 @@ var ts; filesByName.set(file.fileName, file); } files = newSourceFiles; + fileProcessingDiagnostics = oldProgram.getFileProcessingDiagnostics(); + for (var _c = 0; _c < modifiedSourceFiles.length; _c++) { + var modifiedFile = modifiedSourceFiles[_c]; + fileProcessingDiagnostics.reattachFileDiagnostics(modifiedFile); + } oldProgram.structureIsReused = true; return true; } @@ -30272,8 +30265,9 @@ var ts; ts.Debug.assert(!!sourceFile.bindDiagnostics); var bindDiagnostics = sourceFile.bindDiagnostics; var checkDiagnostics = typeChecker.getDiagnostics(sourceFile, cancellationToken); - var programDiagnostics = diagnostics.getDiagnostics(sourceFile.fileName); - return bindDiagnostics.concat(checkDiagnostics).concat(programDiagnostics); + var fileProcessingDiagnosticsInFile = fileProcessingDiagnostics.getDiagnostics(sourceFile.fileName); + var programDiagnosticsInFile = programDiagnostics.getDiagnostics(sourceFile.fileName); + return bindDiagnostics.concat(checkDiagnostics).concat(fileProcessingDiagnosticsInFile).concat(programDiagnosticsInFile); }); } function getDeclarationDiagnosticsForFile(sourceFile, cancellationToken) { @@ -30287,7 +30281,8 @@ var ts; } function getOptionsDiagnostics() { var allDiagnostics = []; - ts.addRange(allDiagnostics, diagnostics.getGlobalDiagnostics()); + ts.addRange(allDiagnostics, fileProcessingDiagnostics.getGlobalDiagnostics()); + ts.addRange(allDiagnostics, programDiagnostics.getGlobalDiagnostics()); return ts.sortAndDeduplicateDiagnostics(allDiagnostics); } function getGlobalDiagnostics() { @@ -30377,10 +30372,10 @@ var ts; } if (diagnostic) { if (refFile !== undefined && refEnd !== undefined && refPos !== undefined) { - diagnostics.add(ts.createFileDiagnostic.apply(void 0, [refFile, refPos, refEnd - refPos, diagnostic].concat(diagnosticArgument))); + fileProcessingDiagnostics.add(ts.createFileDiagnostic.apply(void 0, [refFile, refPos, refEnd - refPos, diagnostic].concat(diagnosticArgument))); } else { - diagnostics.add(ts.createCompilerDiagnostic.apply(void 0, [diagnostic].concat(diagnosticArgument))); + fileProcessingDiagnostics.add(ts.createCompilerDiagnostic.apply(void 0, [diagnostic].concat(diagnosticArgument))); } } } @@ -30397,10 +30392,10 @@ var ts; } var file = host.getSourceFile(fileName, options.target, function (hostErrorMessage) { if (refFile !== undefined && refPos !== undefined && refEnd !== undefined) { - diagnostics.add(ts.createFileDiagnostic(refFile, refPos, refEnd - refPos, ts.Diagnostics.Cannot_read_file_0_Colon_1, fileName, hostErrorMessage)); + fileProcessingDiagnostics.add(ts.createFileDiagnostic(refFile, refPos, refEnd - refPos, 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)); + fileProcessingDiagnostics.add(ts.createCompilerDiagnostic(ts.Diagnostics.Cannot_read_file_0_Colon_1, fileName, hostErrorMessage)); } }); filesByName.set(canonicalName, file); @@ -30428,10 +30423,10 @@ var ts; var sourceFileName = useAbsolutePath ? ts.getNormalizedAbsolutePath(file.fileName, host.getCurrentDirectory()) : file.fileName; if (canonicalName !== sourceFileName) { if (refFile !== undefined && refPos !== undefined && refEnd !== undefined) { - diagnostics.add(ts.createFileDiagnostic(refFile, refPos, refEnd - refPos, ts.Diagnostics.File_name_0_differs_from_already_included_file_name_1_only_in_casing, fileName, sourceFileName)); + fileProcessingDiagnostics.add(ts.createFileDiagnostic(refFile, refPos, refEnd - refPos, ts.Diagnostics.File_name_0_differs_from_already_included_file_name_1_only_in_casing, fileName, sourceFileName)); } else { - diagnostics.add(ts.createCompilerDiagnostic(ts.Diagnostics.File_name_0_differs_from_already_included_file_name_1_only_in_casing, fileName, sourceFileName)); + fileProcessingDiagnostics.add(ts.createCompilerDiagnostic(ts.Diagnostics.File_name_0_differs_from_already_included_file_name_1_only_in_casing, fileName, sourceFileName)); } } } @@ -30452,9 +30447,23 @@ var ts; var resolutions = resolveModuleNamesWorker(moduleNames, file.fileName); for (var i = 0; i < file.imports.length; ++i) { var resolution = resolutions[i]; - ts.setResolvedModuleName(file, moduleNames[i], resolution); + ts.setResolvedModule(file, moduleNames[i], resolution); if (resolution && !options.noResolve) { - findModuleSourceFile(resolution, file.imports[i]); + var importedFile = findModuleSourceFile(resolution.resolvedFileName, file.imports[i]); + if (importedFile && resolution.isExternalLibraryImport) { + if (!ts.isExternalModule(importedFile)) { + var start_2 = ts.getTokenPosOfNode(file.imports[i], file); + fileProcessingDiagnostics.add(ts.createFileDiagnostic(file, start_2, file.imports[i].end - start_2, ts.Diagnostics.Exported_external_package_typings_file_0_is_not_a_module_Please_contact_the_package_author_to_update_the_package_definition, importedFile.fileName)); + } + else if (!ts.fileExtensionIs(importedFile.fileName, ".d.ts")) { + var start_3 = ts.getTokenPosOfNode(file.imports[i], file); + fileProcessingDiagnostics.add(ts.createFileDiagnostic(file, start_3, file.imports[i].end - start_3, ts.Diagnostics.Exported_external_package_typings_can_only_be_in_d_ts_files_Please_contact_the_package_author_to_update_the_package_definition)); + } + else if (importedFile.referencedFiles.length) { + var firstRef = importedFile.referencedFiles[0]; + fileProcessingDiagnostics.add(ts.createFileDiagnostic(importedFile, firstRef.pos, firstRef.end - firstRef.pos, ts.Diagnostics.Exported_external_package_typings_file_cannot_contain_tripleslash_references_Please_contact_the_package_author_to_update_the_package_definition)); + } + } } } } @@ -30463,7 +30472,7 @@ var ts; } return; function findModuleSourceFile(fileName, nameLiteral) { - return findSourceFile(fileName, false, file, nameLiteral.pos, nameLiteral.end); + return findSourceFile(fileName, false, file, ts.skipTrivia(file.text, nameLiteral.pos), nameLiteral.end); } } function computeCommonSourceDirectory(sourceFiles) { @@ -30482,7 +30491,7 @@ var ts; for (var i = 0, n = Math.min(commonPathComponents.length, sourcePathComponents.length); i < n; 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)); + programDiagnostics.add(ts.createCompilerDiagnostic(ts.Diagnostics.Cannot_find_the_common_subdirectory_path_for_the_input_files)); return; } commonPathComponents.length = i; @@ -30505,7 +30514,7 @@ var ts; if (!ts.isDeclarationFile(sourceFile)) { var absoluteSourceFilePath = host.getCanonicalFileName(ts.getNormalizedAbsolutePath(sourceFile.fileName, currentDirectory)); if (absoluteSourceFilePath.indexOf(absoluteRootDirectoryPath) !== 0) { - diagnostics.add(ts.createCompilerDiagnostic(ts.Diagnostics.File_0_is_not_under_rootDir_1_rootDir_is_expected_to_contain_all_source_files, sourceFile.fileName, options.rootDir)); + programDiagnostics.add(ts.createCompilerDiagnostic(ts.Diagnostics.File_0_is_not_under_rootDir_1_rootDir_is_expected_to_contain_all_source_files, sourceFile.fileName, options.rootDir)); allFilesBelongToPath = false; } } @@ -30516,43 +30525,43 @@ var ts; function verifyCompilerOptions() { if (options.isolatedModules) { if (options.declaration) { - diagnostics.add(ts.createCompilerDiagnostic(ts.Diagnostics.Option_0_cannot_be_specified_with_option_1, "declaration", "isolatedModules")); + programDiagnostics.add(ts.createCompilerDiagnostic(ts.Diagnostics.Option_0_cannot_be_specified_with_option_1, "declaration", "isolatedModules")); } if (options.noEmitOnError) { - diagnostics.add(ts.createCompilerDiagnostic(ts.Diagnostics.Option_0_cannot_be_specified_with_option_1, "noEmitOnError", "isolatedModules")); + programDiagnostics.add(ts.createCompilerDiagnostic(ts.Diagnostics.Option_0_cannot_be_specified_with_option_1, "noEmitOnError", "isolatedModules")); } if (options.out) { - diagnostics.add(ts.createCompilerDiagnostic(ts.Diagnostics.Option_0_cannot_be_specified_with_option_1, "out", "isolatedModules")); + programDiagnostics.add(ts.createCompilerDiagnostic(ts.Diagnostics.Option_0_cannot_be_specified_with_option_1, "out", "isolatedModules")); } if (options.outFile) { - diagnostics.add(ts.createCompilerDiagnostic(ts.Diagnostics.Option_0_cannot_be_specified_with_option_1, "outFile", "isolatedModules")); + programDiagnostics.add(ts.createCompilerDiagnostic(ts.Diagnostics.Option_0_cannot_be_specified_with_option_1, "outFile", "isolatedModules")); } } if (options.inlineSourceMap) { if (options.sourceMap) { - diagnostics.add(ts.createCompilerDiagnostic(ts.Diagnostics.Option_0_cannot_be_specified_with_option_1, "sourceMap", "inlineSourceMap")); + programDiagnostics.add(ts.createCompilerDiagnostic(ts.Diagnostics.Option_0_cannot_be_specified_with_option_1, "sourceMap", "inlineSourceMap")); } if (options.mapRoot) { - diagnostics.add(ts.createCompilerDiagnostic(ts.Diagnostics.Option_0_cannot_be_specified_with_option_1, "mapRoot", "inlineSourceMap")); + programDiagnostics.add(ts.createCompilerDiagnostic(ts.Diagnostics.Option_0_cannot_be_specified_with_option_1, "mapRoot", "inlineSourceMap")); } if (options.sourceRoot) { - diagnostics.add(ts.createCompilerDiagnostic(ts.Diagnostics.Option_0_cannot_be_specified_with_option_1, "sourceRoot", "inlineSourceMap")); + programDiagnostics.add(ts.createCompilerDiagnostic(ts.Diagnostics.Option_0_cannot_be_specified_with_option_1, "sourceRoot", "inlineSourceMap")); } } if (options.inlineSources) { if (!options.sourceMap && !options.inlineSourceMap) { - diagnostics.add(ts.createCompilerDiagnostic(ts.Diagnostics.Option_inlineSources_can_only_be_used_when_either_option_inlineSourceMap_or_option_sourceMap_is_provided)); + programDiagnostics.add(ts.createCompilerDiagnostic(ts.Diagnostics.Option_inlineSources_can_only_be_used_when_either_option_inlineSourceMap_or_option_sourceMap_is_provided)); } } if (options.out && options.outFile) { - diagnostics.add(ts.createCompilerDiagnostic(ts.Diagnostics.Option_0_cannot_be_specified_with_option_1, "out", "outFile")); + programDiagnostics.add(ts.createCompilerDiagnostic(ts.Diagnostics.Option_0_cannot_be_specified_with_option_1, "out", "outFile")); } if (!options.sourceMap && (options.mapRoot || options.sourceRoot)) { if (options.mapRoot) { - diagnostics.add(ts.createCompilerDiagnostic(ts.Diagnostics.Option_0_cannot_be_specified_without_specifying_option_1, "mapRoot", "sourceMap")); + programDiagnostics.add(ts.createCompilerDiagnostic(ts.Diagnostics.Option_0_cannot_be_specified_without_specifying_option_1, "mapRoot", "sourceMap")); } if (options.sourceRoot) { - diagnostics.add(ts.createCompilerDiagnostic(ts.Diagnostics.Option_0_cannot_be_specified_without_specifying_option_1, "sourceRoot", "sourceMap")); + programDiagnostics.add(ts.createCompilerDiagnostic(ts.Diagnostics.Option_0_cannot_be_specified_without_specifying_option_1, "sourceRoot", "sourceMap")); } return; } @@ -30561,20 +30570,20 @@ var ts; var firstExternalModuleSourceFile = ts.forEach(files, function (f) { return ts.isExternalModule(f) ? f : undefined; }); if (options.isolatedModules) { if (!options.module && languageVersion < 2) { - diagnostics.add(ts.createCompilerDiagnostic(ts.Diagnostics.Option_isolatedModules_can_only_be_used_when_either_option_module_is_provided_or_option_target_is_ES6_or_higher)); + programDiagnostics.add(ts.createCompilerDiagnostic(ts.Diagnostics.Option_isolatedModules_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_namespaces_when_the_isolatedModules_flag_is_provided)); + programDiagnostics.add(ts.createFileDiagnostic(firstNonExternalModuleSourceFile, span.start, span.length, ts.Diagnostics.Cannot_compile_namespaces_when_the_isolatedModules_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_modules_unless_the_module_flag_is_provided)); + programDiagnostics.add(ts.createFileDiagnostic(firstExternalModuleSourceFile, span.start, span.length, ts.Diagnostics.Cannot_compile_modules_unless_the_module_flag_is_provided)); } if (options.module && languageVersion >= 2) { - diagnostics.add(ts.createCompilerDiagnostic(ts.Diagnostics.Cannot_compile_modules_into_commonjs_amd_system_or_umd_when_targeting_ES6_or_higher)); + programDiagnostics.add(ts.createCompilerDiagnostic(ts.Diagnostics.Cannot_compile_modules_into_commonjs_amd_system_or_umd_when_targeting_ES6_or_higher)); } if (options.outDir || options.sourceRoot || @@ -30592,33 +30601,30 @@ var ts; } if (options.noEmit) { if (options.out) { - diagnostics.add(ts.createCompilerDiagnostic(ts.Diagnostics.Option_0_cannot_be_specified_with_option_1, "noEmit", "out")); + programDiagnostics.add(ts.createCompilerDiagnostic(ts.Diagnostics.Option_0_cannot_be_specified_with_option_1, "noEmit", "out")); } if (options.outFile) { - diagnostics.add(ts.createCompilerDiagnostic(ts.Diagnostics.Option_0_cannot_be_specified_with_option_1, "noEmit", "outFile")); + programDiagnostics.add(ts.createCompilerDiagnostic(ts.Diagnostics.Option_0_cannot_be_specified_with_option_1, "noEmit", "outFile")); } if (options.outDir) { - diagnostics.add(ts.createCompilerDiagnostic(ts.Diagnostics.Option_0_cannot_be_specified_with_option_1, "noEmit", "outDir")); + programDiagnostics.add(ts.createCompilerDiagnostic(ts.Diagnostics.Option_0_cannot_be_specified_with_option_1, "noEmit", "outDir")); } if (options.declaration) { - diagnostics.add(ts.createCompilerDiagnostic(ts.Diagnostics.Option_0_cannot_be_specified_with_option_1, "noEmit", "declaration")); + programDiagnostics.add(ts.createCompilerDiagnostic(ts.Diagnostics.Option_0_cannot_be_specified_with_option_1, "noEmit", "declaration")); } } if (options.emitDecoratorMetadata && !options.experimentalDecorators) { - diagnostics.add(ts.createCompilerDiagnostic(ts.Diagnostics.Option_0_cannot_be_specified_without_specifying_option_1, "emitDecoratorMetadata", "experimentalDecorators")); + programDiagnostics.add(ts.createCompilerDiagnostic(ts.Diagnostics.Option_0_cannot_be_specified_without_specifying_option_1, "emitDecoratorMetadata", "experimentalDecorators")); } if (options.experimentalAsyncFunctions && options.target !== 2) { - diagnostics.add(ts.createCompilerDiagnostic(ts.Diagnostics.Option_experimentalAsyncFunctions_cannot_be_specified_when_targeting_ES5_or_lower)); + programDiagnostics.add(ts.createCompilerDiagnostic(ts.Diagnostics.Option_experimentalAsyncFunctions_cannot_be_specified_when_targeting_ES5_or_lower)); } } } 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; @@ -31278,7 +31284,6 @@ var ts; NavigateTo.getNavigateToItems = getNavigateToItems; })(NavigateTo = ts.NavigateTo || (ts.NavigateTo = {})); })(ts || (ts = {})); -/// var ts; (function (ts) { var NavigationBar; @@ -32099,7 +32104,6 @@ var ts; return transition; } })(ts || (ts = {})); -/// var ts; (function (ts) { var SignatureHelp; @@ -32681,7 +32685,7 @@ var ts; function findPrecedingToken(position, sourceFile, startNode) { return find(startNode || sourceFile); function findRightmostToken(n) { - if (isToken(n)) { + if (isToken(n) || n.kind === 234) { return n; } var children = n.getChildren(); @@ -32689,21 +32693,22 @@ var ts; return candidate && findRightmostToken(candidate); } function find(n) { - if (isToken(n)) { + if (isToken(n) || n.kind === 234) { 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); - } + if (position < child.end && (nodeHasTokens(child) || child.kind === 234)) { + var start = child.getStart(sourceFile); + var lookInPreviousChild = (start >= position) || + (child.kind === 234 && start === child.end); + if (lookInPreviousChild) { + var candidate = findRightmostChildNodeWithTokens(children, i); + return candidate && findRightmostToken(candidate); + } + else { + return find(child); } } } @@ -33066,8 +33071,6 @@ var ts; } ts.stripQuotes = stripQuotes; })(ts || (ts = {})); -/// -/// var ts; (function (ts) { var formatting; @@ -33143,6 +33146,18 @@ var ts; } return false; } + function shouldRescanJsxIdentifier(node) { + if (node.parent) { + switch (node.parent.kind) { + case 236: + case 233: + case 235: + case 232: + return node.kind === 67; + } + } + return false; + } function shouldRescanSlashToken(container) { return container.kind === 10; } @@ -33167,7 +33182,9 @@ var ts; ? 2 : shouldRescanTemplateToken(n) ? 3 - : 0; + : shouldRescanJsxIdentifier(n) + ? 4 + : 0; if (lastTokenInfo && expectedScanAction === lastScanAction) { return fixTokenKind(lastTokenInfo, n); } @@ -33191,6 +33208,10 @@ var ts; currentToken = scanner.reScanTemplateToken(); lastScanAction = 3; } + else if (expectedScanAction === 4 && currentToken === 67) { + currentToken = scanner.scanJsxIdentifier(); + lastScanAction = 4; + } else { lastScanAction = 0; } @@ -33243,7 +33264,6 @@ var ts; formatting.getFormattingScanner = getFormattingScanner; })(formatting = ts.formatting || (ts.formatting = {})); })(ts || (ts = {})); -/// var ts; (function (ts) { var formatting; @@ -33322,8 +33342,6 @@ var ts; formatting.FormattingContext = FormattingContext; })(formatting = ts.formatting || (ts.formatting = {})); })(ts || (ts = {})); -/// -/// var ts; (function (ts) { var formatting; @@ -33345,8 +33363,6 @@ var ts; formatting.Rule = Rule; })(formatting = ts.formatting || (ts.formatting = {})); })(ts || (ts = {})); -/// -/// var ts; (function (ts) { var formatting; @@ -33377,8 +33393,6 @@ var ts; formatting.RuleDescriptor = RuleDescriptor; })(formatting = ts.formatting || (ts.formatting = {})); })(ts || (ts = {})); -/// -/// var ts; (function (ts) { var formatting; @@ -33406,7 +33420,6 @@ var ts; formatting.RuleOperation = RuleOperation; })(formatting = ts.formatting || (ts.formatting = {})); })(ts || (ts = {})); -/// var ts; (function (ts) { var formatting; @@ -33440,16 +33453,12 @@ var ts; formatting.RuleOperationContext = RuleOperationContext; })(formatting = ts.formatting || (ts.formatting = {})); })(ts || (ts = {})); -/// 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, 23), formatting.RuleOperation.create2(new formatting.RuleOperationContext(Rules.IsSameLineTokenContext), 8)); @@ -33469,7 +33478,7 @@ var ts; this.NoSpaceAfterCloseBracket = new formatting.Rule(formatting.RuleDescriptor.create3(20, formatting.Shared.TokenRange.Any), formatting.RuleOperation.create2(new formatting.RuleOperationContext(Rules.IsSameLineTokenContext, Rules.IsNotBeforeBlockInFunctionDeclarationContext), 8)); this.FunctionOpenBraceLeftTokenRange = formatting.Shared.TokenRange.AnyIncludingMultilineComments; this.SpaceBeforeOpenBraceInFunction = new formatting.Rule(formatting.RuleDescriptor.create2(this.FunctionOpenBraceLeftTokenRange, 15), formatting.RuleOperation.create2(new formatting.RuleOperationContext(Rules.IsFunctionDeclContext, Rules.IsBeforeBlockContext, Rules.IsNotFormatOnEnter, Rules.IsSameLineTokenOrBeforeMultilineBlockContext), 2), 1); - this.TypeScriptOpenBraceLeftTokenRange = formatting.Shared.TokenRange.FromTokens([67, 3]); + this.TypeScriptOpenBraceLeftTokenRange = formatting.Shared.TokenRange.FromTokens([67, 3, 71]); this.SpaceBeforeOpenBraceInTypeScriptDeclWithBlock = new formatting.Rule(formatting.RuleDescriptor.create2(this.TypeScriptOpenBraceLeftTokenRange, 15), formatting.RuleOperation.create2(new formatting.RuleOperationContext(Rules.IsTypeScriptDeclWithBlockContext, Rules.IsNotFormatOnEnter, Rules.IsSameLineTokenOrBeforeMultilineBlockContext), 2), 1); this.ControlOpenBraceLeftTokenRange = formatting.Shared.TokenRange.FromTokens([18, 3, 77, 98, 83, 78]); this.SpaceBeforeOpenBraceInControl = new formatting.Rule(formatting.RuleDescriptor.create2(this.ControlOpenBraceLeftTokenRange, 15), formatting.RuleOperation.create2(new formatting.RuleOperationContext(Rules.IsControlDeclContext, Rules.IsNotFormatOnEnter, Rules.IsSameLineTokenOrBeforeMultilineBlockContext), 2), 1); @@ -33490,7 +33499,7 @@ var ts; this.SpaceAfterSubtractWhenFollowedByUnaryMinus = new formatting.Rule(formatting.RuleDescriptor.create1(36, 36), formatting.RuleOperation.create2(new formatting.RuleOperationContext(Rules.IsSameLineTokenContext, Rules.IsBinaryOpContext), 2)); this.SpaceAfterSubtractWhenFollowedByPredecrement = new formatting.Rule(formatting.RuleDescriptor.create1(36, 41), formatting.RuleOperation.create2(new formatting.RuleOperationContext(Rules.IsSameLineTokenContext, Rules.IsBinaryOpContext), 2)); this.NoSpaceBeforeComma = new formatting.Rule(formatting.RuleDescriptor.create2(formatting.Shared.TokenRange.Any, 24), formatting.RuleOperation.create2(new formatting.RuleOperationContext(Rules.IsSameLineTokenContext), 8)); - this.SpaceAfterCertainKeywords = new formatting.Rule(formatting.RuleDescriptor.create4(formatting.Shared.TokenRange.FromTokens([100, 96, 90, 76, 92, 99]), 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([100, 96, 90, 76, 92, 99, 117]), 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([106, 72]), 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, 17), formatting.RuleOperation.create2(new formatting.RuleOperationContext(Rules.IsSameLineTokenContext, Rules.IsFunctionCallOrNewContext, Rules.IsPreviousTokenNotComma), 8)); this.SpaceAfterFunctionInFuncDecl = new formatting.Rule(formatting.RuleDescriptor.create3(85, formatting.Shared.TokenRange.Any), formatting.RuleOperation.create2(new formatting.RuleOperationContext(Rules.IsFunctionDeclContext), 2)); @@ -33504,7 +33513,7 @@ var ts; 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(119, 17), formatting.RuleOperation.create2(new formatting.RuleOperationContext(Rules.IsSameLineTokenContext), 8)); this.NoSpaceAfterModuleImport = new formatting.Rule(formatting.RuleDescriptor.create2(formatting.Shared.TokenRange.FromTokens([123, 125]), 17), formatting.RuleOperation.create2(new formatting.RuleOperationContext(Rules.IsSameLineTokenContext), 8)); - this.SpaceAfterCertainTypeScriptKeywords = new formatting.Rule(formatting.RuleDescriptor.create4(formatting.Shared.TokenRange.FromTokens([113, 71, 120, 75, 79, 80, 81, 121, 104, 87, 105, 123, 124, 108, 110, 109, 127, 111]), formatting.Shared.TokenRange.Any), formatting.RuleOperation.create2(new formatting.RuleOperationContext(Rules.IsSameLineTokenContext), 2)); + this.SpaceAfterCertainTypeScriptKeywords = new formatting.Rule(formatting.RuleDescriptor.create4(formatting.Shared.TokenRange.FromTokens([113, 71, 120, 75, 79, 80, 81, 121, 104, 87, 105, 123, 124, 108, 110, 109, 127, 111, 130]), 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([81, 104])), formatting.RuleOperation.create2(new formatting.RuleOperationContext(Rules.IsSameLineTokenContext), 2)); this.SpaceAfterModuleName = new formatting.Rule(formatting.RuleDescriptor.create1(9, 15), formatting.RuleOperation.create2(new formatting.RuleOperationContext(Rules.IsModuleDeclContext), 2)); this.SpaceAfterArrow = new formatting.Rule(formatting.RuleDescriptor.create3(34, formatting.Shared.TokenRange.Any), formatting.RuleOperation.create2(new formatting.RuleOperationContext(Rules.IsSameLineTokenContext), 2)); @@ -33525,17 +33534,7 @@ var ts; this.NoSpaceBetweenYieldKeywordAndStar = new formatting.Rule(formatting.RuleDescriptor.create1(112, 37), formatting.RuleOperation.create2(new formatting.RuleOperationContext(Rules.IsSameLineTokenContext, Rules.IsYieldOrYieldStarWithOperand), 8)); this.SpaceBetweenYieldOrYieldStarAndOperand = new formatting.Rule(formatting.RuleDescriptor.create4(formatting.Shared.TokenRange.FromTokens([112, 37]), formatting.Shared.TokenRange.Any), formatting.RuleOperation.create2(new formatting.RuleOperationContext(Rules.IsSameLineTokenContext, Rules.IsYieldOrYieldStarWithOperand), 2)); this.SpaceBetweenAsyncAndFunctionKeyword = new formatting.Rule(formatting.RuleDescriptor.create1(116, 85), formatting.RuleOperation.create2(new formatting.RuleOperationContext(Rules.IsSameLineTokenContext), 2)); - this.NoSpaceBetweenAsyncAndFunctionKeyword = new formatting.Rule(formatting.RuleDescriptor.create1(116, 85), formatting.RuleOperation.create2(new formatting.RuleOperationContext(Rules.IsSameLineTokenContext), 8)); - this.SpaceAfterAwaitKeyword = new formatting.Rule(formatting.RuleDescriptor.create3(117, formatting.Shared.TokenRange.Any), formatting.RuleOperation.create2(new formatting.RuleOperationContext(Rules.IsSameLineTokenContext), 2)); - this.NoSpaceAfterAwaitKeyword = new formatting.Rule(formatting.RuleDescriptor.create3(117, formatting.Shared.TokenRange.Any), formatting.RuleOperation.create2(new formatting.RuleOperationContext(Rules.IsSameLineTokenContext), 8)); - this.SpaceAfterTypeKeyword = new formatting.Rule(formatting.RuleDescriptor.create3(130, formatting.Shared.TokenRange.Any), formatting.RuleOperation.create2(new formatting.RuleOperationContext(Rules.IsSameLineTokenContext), 2)); - this.NoSpaceAfterTypeKeyword = new formatting.Rule(formatting.RuleDescriptor.create3(130, formatting.Shared.TokenRange.Any), formatting.RuleOperation.create2(new formatting.RuleOperationContext(Rules.IsSameLineTokenContext), 8)); this.SpaceBetweenTagAndTemplateString = new formatting.Rule(formatting.RuleDescriptor.create3(67, formatting.Shared.TokenRange.FromTokens([11, 12])), formatting.RuleOperation.create2(new formatting.RuleOperationContext(Rules.IsSameLineTokenContext), 2)); - this.NoSpaceBetweenTagAndTemplateString = new formatting.Rule(formatting.RuleDescriptor.create3(67, formatting.Shared.TokenRange.FromTokens([11, 12])), formatting.RuleOperation.create2(new formatting.RuleOperationContext(Rules.IsSameLineTokenContext), 8)); - this.SpaceBeforeBar = new formatting.Rule(formatting.RuleDescriptor.create3(46, formatting.Shared.TokenRange.Any), formatting.RuleOperation.create2(new formatting.RuleOperationContext(Rules.IsSameLineTokenContext), 2)); - this.NoSpaceBeforeBar = new formatting.Rule(formatting.RuleDescriptor.create3(46, formatting.Shared.TokenRange.Any), formatting.RuleOperation.create2(new formatting.RuleOperationContext(Rules.IsSameLineTokenContext), 8)); - this.SpaceAfterBar = new formatting.Rule(formatting.RuleDescriptor.create2(formatting.Shared.TokenRange.Any, 46), formatting.RuleOperation.create2(new formatting.RuleOperationContext(Rules.IsSameLineTokenContext), 2)); - this.NoSpaceAfterBar = new formatting.Rule(formatting.RuleDescriptor.create2(formatting.Shared.TokenRange.Any, 46), formatting.RuleOperation.create2(new formatting.RuleOperationContext(Rules.IsSameLineTokenContext), 8)); this.HighPriorityCommonRules = [ this.IgnoreBeforeComment, this.IgnoreAfterLineComment, @@ -33561,11 +33560,8 @@ var ts; this.NoSpaceBeforeOpenParenInFuncCall, this.SpaceBeforeBinaryKeywordOperator, this.SpaceAfterBinaryKeywordOperator, this.SpaceAfterVoidOperator, - this.SpaceBetweenAsyncAndFunctionKeyword, this.NoSpaceBetweenAsyncAndFunctionKeyword, - this.SpaceAfterAwaitKeyword, this.NoSpaceAfterAwaitKeyword, - this.SpaceAfterTypeKeyword, this.NoSpaceAfterTypeKeyword, - this.SpaceBetweenTagAndTemplateString, this.NoSpaceBetweenTagAndTemplateString, - this.SpaceBeforeBar, this.NoSpaceBeforeBar, this.SpaceAfterBar, this.NoSpaceAfterBar, + this.SpaceBetweenAsyncAndFunctionKeyword, + this.SpaceBetweenTagAndTemplateString, this.NoSpaceAfterConstructor, this.NoSpaceAfterModuleImport, this.SpaceAfterCertainTypeScriptKeywords, this.SpaceBeforeCertainTypeScriptKeywords, this.SpaceAfterModuleName, @@ -33641,6 +33637,8 @@ var ts; case 180: case 187: case 148: + case 156: + case 157: return true; case 161: case 214: @@ -33665,22 +33663,6 @@ var ts; return context.contextNode.kind === 180; }; 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) { @@ -33736,6 +33718,7 @@ var ts; Rules.NodeIsTypeScriptDeclWithBlockContext = function (node) { switch (node.kind) { case 212: + case 184: case 213: case 215: case 153: @@ -33863,7 +33846,6 @@ var ts; formatting.Rules = Rules; })(formatting = ts.formatting || (ts.formatting = {})); })(ts || (ts = {})); -/// var ts; (function (ts) { var formatting; @@ -34000,7 +33982,6 @@ var ts; formatting.RulesBucket = RulesBucket; })(formatting = ts.formatting || (ts.formatting = {})); })(ts || (ts = {})); -/// var ts; (function (ts) { var formatting; @@ -34115,19 +34096,6 @@ var ts; })(Shared = formatting.Shared || (formatting.Shared = {})); })(formatting = ts.formatting || (ts.formatting = {})); })(ts || (ts = {})); -/// -/// -/// -/// -/// -/// -/// -/// -/// -/// -/// -/// -/// var ts; (function (ts) { var formatting; @@ -34223,10 +34191,6 @@ var ts; formatting.RulesProvider = RulesProvider; })(formatting = ts.formatting || (ts.formatting = {})); })(ts || (ts = {})); -/// -/// -/// -/// var ts; (function (ts) { var formatting; @@ -34483,13 +34447,14 @@ var ts; } function getDynamicIndentation(node, nodeStartLine, indentation, delta) { return { - getIndentationForComment: function (kind) { + getIndentationForComment: function (kind, tokenIndentation) { switch (kind) { case 16: case 20: + case 18: return indentation + delta; } - return indentation; + return tokenIndentation !== -1 ? tokenIndentation : indentation; }, getIndentationForToken: function (line, kind) { if (nodeStartLine !== line && node.decorators) { @@ -34658,8 +34623,12 @@ var ts; processTrivia(currentTokenInfo.trailingTrivia, parent, childContextNode, dynamicIndentation); } if (indentToken) { - var indentNextTokenOrTrivia = true; + var tokenIndentation = (isTokenInRange && !rangeContainsError(currentTokenInfo.token)) ? + dynamicIndentation.getIndentationForToken(tokenStart.line, currentTokenInfo.token.kind) : + -1; if (currentTokenInfo.leadingTrivia) { + var commentIndentation = dynamicIndentation.getIndentationForComment(currentTokenInfo.token.kind, tokenIndentation); + var indentNextTokenOrTrivia = true; for (var _i = 0, _a = currentTokenInfo.leadingTrivia; _i < _a.length; _i++) { var triviaItem = _a[_i]; if (!ts.rangeContainsRange(originalRange, triviaItem)) { @@ -34667,14 +34636,12 @@ var ts; } 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); + insertIndentation(triviaItem.pos, commentIndentation, false); indentNextTokenOrTrivia = false; } break; @@ -34684,8 +34651,7 @@ var ts; } } } - if (isTokenInRange && !rangeContainsError(currentTokenInfo.token)) { - var tokenIndentation = dynamicIndentation.getIndentationForToken(tokenStart.line, currentTokenInfo.token.kind); + if (tokenIndentation !== -1) { insertIndentation(currentTokenInfo.token.pos, tokenIndentation, lineAdded); lastIndentedLine = tokenStart.line; indentationOnLastIndentedLine = tokenIndentation; @@ -34973,7 +34939,6 @@ var ts; formatting.getIndentationString = getIndentationString; })(formatting = ts.formatting || (ts.formatting = {})); })(ts || (ts = {})); -/// var ts; (function (ts) { var formatting; @@ -35266,6 +35231,7 @@ var ts; function nodeContentIsAlwaysIndented(kind) { switch (kind) { case 212: + case 184: case 213: case 215: case 214: @@ -35290,13 +35256,13 @@ var ts; case 160: case 159: case 231: + case 232: case 140: case 145: case 146: case 136: case 150: case 151: - case 156: case 158: case 168: case 176: @@ -35331,21 +35297,11 @@ var ts; })(SmartIndenter = formatting.SmartIndenter || (formatting.SmartIndenter = {})); })(formatting = ts.formatting || (ts.formatting = {})); })(ts || (ts = {})); -/// var __extends = (this && this.__extends) || function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; function __() { this.constructor = d; } d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __()); }; -/// -/// -/// -/// -/// -/// -/// -/// -/// var ts; (function (ts) { ts.servicesVersion = "0.4"; @@ -36267,7 +36223,7 @@ var ts; var outputText; var sourceMapText; var compilerHost = { - getSourceFile: function (fileName, target) { return fileName === inputFileName ? sourceFile : undefined; }, + getSourceFile: function (fileName, target) { return fileName === ts.normalizeSlashes(inputFileName) ? sourceFile : undefined; }, writeFile: function (name, text, writeByteOrderMark) { if (ts.fileExtensionIs(name, ".map")) { ts.Debug.assert(sourceMapText === undefined, "Unexpected multiple source map outputs for the file '" + name + "'"); @@ -36581,6 +36537,24 @@ var ts; } } } + else if (token === 87) { + token = scanner.scan(); + if (token === 67 || ts.isKeyword(token)) { + token = scanner.scan(); + if (token === 55) { + token = scanner.scan(); + if (token === 125) { + token = scanner.scan(); + if (token === 17) { + token = scanner.scan(); + if (token === 9) { + recordModuleName(); + } + } + } + } + } + } } token = scanner.scan(); } @@ -37164,9 +37138,9 @@ var ts; log("getCompletionData: Get previous token 1: " + (new Date().getTime() - start)); var contextToken = previousToken; if (contextToken && position <= contextToken.end && ts.isWord(contextToken.kind)) { - var start_2 = new Date().getTime(); + var start_4 = new Date().getTime(); contextToken = ts.findPrecedingToken(contextToken.getFullStart(), sourceFile); - log("getCompletionData: Get previous token 2: " + (new Date().getTime() - start_2)); + log("getCompletionData: Get previous token 2: " + (new Date().getTime() - start_4)); } var node = currentToken; var isRightOfDot = false; @@ -37361,9 +37335,9 @@ var ts; if (contextToken.kind === 9 || contextToken.kind === 10 || ts.isTemplateLiteralKind(contextToken.kind)) { - var start_3 = contextToken.getStart(); + var start_5 = contextToken.getStart(); var end = contextToken.getEnd(); - if (start_3 < position && position < end) { + if (start_5 < position && position < end) { return true; } if (position === end) { @@ -39278,6 +39252,7 @@ var ts; result.push(getReferenceEntryFromNode(node)); } break; + case 184: case 212: if (container.parent && searchSpaceNode.symbol === container.parent.symbol && (container.flags & 128) === staticFlag) { result.push(getReferenceEntryFromNode(node)); @@ -40161,8 +40136,6 @@ 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; @@ -40665,10 +40638,6 @@ var ts; } initializeServices(); })(ts || (ts = {})); -/// -/// -/// -/// var ts; (function (ts) { var server; @@ -41631,10 +41600,6 @@ var ts; server.Session = Session; })(server = ts.server || (ts.server = {})); })(ts || (ts = {})); -/// -/// -/// -/// var ts; (function (ts) { var server; @@ -41711,7 +41676,7 @@ var ts; LSHost.prototype.resolveModuleNames = function (moduleNames, containingFile) { var currentResolutionsInFile = this.resolvedModuleNames.get(containingFile); var newResolutions = {}; - var resolvedFileNames = []; + var resolvedModules = []; var compilerOptions = this.getCompilationSettings(); for (var _i = 0; _i < moduleNames.length; _i++) { var moduleName = moduleNames[_i]; @@ -41728,15 +41693,15 @@ var ts; } } ts.Debug.assert(resolution !== undefined); - resolvedFileNames.push(resolution.resolvedFileName); + resolvedModules.push(resolution.resolvedModule); } this.resolvedModuleNames.set(containingFile, newResolutions); - return resolvedFileNames; + return resolvedModules; function moduleResolutionIsValid(resolution) { if (!resolution) { return false; } - if (resolution.resolvedFileName) { + if (resolution.resolvedModule) { return true; } return resolution.failedLookupLocations.length === 0; @@ -43417,8 +43382,6 @@ var ts; server.LineLeaf = LineLeaf; })(server = ts.server || (ts.server = {})); })(ts || (ts = {})); -/// -/// var ts; (function (ts) { var server; @@ -43641,21 +43604,6 @@ var ts; ioSession.listen(); })(server = ts.server || (ts.server = {})); })(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) { @@ -43700,7 +43648,10 @@ var ts; if ("getModuleResolutionsForFile" in this.shimHost) { this.resolveModuleNames = function (moduleNames, containingFile) { var resolutionsInFile = JSON.parse(_this.shimHost.getModuleResolutionsForFile(containingFile)); - return ts.map(moduleNames, function (name) { return ts.lookUp(resolutionsInFile, name); }); + return ts.map(moduleNames, function (name) { + var result = ts.lookUp(resolutionsInFile, name); + return result ? { resolvedFileName: result } : undefined; + }); }; } } @@ -44175,7 +44126,11 @@ var ts; var _this = this; return this.forwardJSONCall("resolveModuleName('" + fileName + "')", function () { var compilerOptions = JSON.parse(compilerOptionsJson); - return ts.resolveModuleName(moduleName, ts.normalizeSlashes(fileName), compilerOptions, _this.host); + var result = ts.resolveModuleName(moduleName, ts.normalizeSlashes(fileName), compilerOptions, _this.host); + return { + resolvedFileName: result.resolvedModule ? result.resolvedModule.resolvedFileName : undefined, + failedLookupLocations: result.failedLookupLocations + }; }); }; CoreServicesShimObject.prototype.getPreProcessedFileInfo = function (fileName, sourceTextSnapshot) { diff --git a/lib/typescript.d.ts b/lib/typescript.d.ts index bf0510cf1c8..2cd3a663fce 100644 --- a/lib/typescript.d.ts +++ b/lib/typescript.d.ts @@ -13,7 +13,7 @@ See the Apache Version 2.0 License for specific language governing permissions and limitations under the License. ***************************************************************************** */ -declare module "typescript" { +declare namespace ts { interface Map { [index: string]: T; } @@ -1208,9 +1208,11 @@ declare module "typescript" { UnionOrIntersection = 49152, StructuredType = 130048, } + type DestructuringPattern = BindingPattern | ObjectLiteralExpression | ArrayLiteralExpression; interface Type { flags: TypeFlags; symbol?: Symbol; + pattern?: DestructuringPattern; } interface StringLiteralType extends Type { text: string; @@ -1237,7 +1239,6 @@ declare module "typescript" { } interface TupleType extends ObjectType { elementTypes: Type[]; - baseArrayType: TypeReference; } interface UnionOrIntersectionType extends Type { types: Type[]; @@ -1382,9 +1383,12 @@ declare module "typescript" { } interface ResolvedModule { resolvedFileName: string; + isExternalLibraryImport?: boolean; + } + interface ResolvedModuleWithFailedLookupLocations { + resolvedModule: ResolvedModule; failedLookupLocations: string[]; } - type ModuleNameResolver = (moduleName: string, containingFile: string, options: CompilerOptions, host: ModuleResolutionHost) => ResolvedModule; interface CompilerHost extends ModuleResolutionHost { getSourceFile(fileName: string, languageVersion: ScriptTarget, onError?: (message: string) => void): SourceFile; getCancellationToken?(): CancellationToken; @@ -1394,7 +1398,7 @@ declare module "typescript" { getCanonicalFileName(fileName: string): string; useCaseSensitiveFileNames(): boolean; getNewLine(): string; - resolveModuleNames?(moduleNames: string[], containingFile: string): string[]; + resolveModuleNames?(moduleNames: string[], containingFile: string): ResolvedModule[]; } interface TextSpan { start: number; @@ -1405,7 +1409,7 @@ declare module "typescript" { newLength: number; } } -declare module "typescript" { +declare namespace ts { interface System { args: string[]; newLine: string; @@ -1429,7 +1433,7 @@ declare module "typescript" { } var sys: System; } -declare module "typescript" { +declare namespace ts { interface ErrorCallback { (message: DiagnosticMessage, length: number): void; } @@ -1474,7 +1478,7 @@ declare module "typescript" { function isIdentifierPart(ch: number, languageVersion: ScriptTarget): boolean; function createScanner(languageVersion: ScriptTarget, skipTrivia: boolean, languageVariant?: LanguageVariant, text?: string, onError?: ErrorCallback, start?: number, length?: number): Scanner; } -declare module "typescript" { +declare namespace ts { function getDefaultLibFileName(options: CompilerOptions): string; function textSpanEnd(span: TextSpan): number; function textSpanIsEmpty(span: TextSpan): boolean; @@ -1504,33 +1508,32 @@ declare module "typescript" { function collapseTextChangeRangesAcrossMultipleVersions(changes: TextChangeRange[]): TextChangeRange; function getTypeParameterOwner(d: Declaration): Declaration; } -declare module "typescript" { +declare namespace ts { function getNodeConstructor(kind: SyntaxKind): new () => Node; function createNode(kind: SyntaxKind): Node; function forEachChild(node: Node, cbNode: (node: Node) => T, cbNodeArray?: (nodes: Node[]) => T): T; function createSourceFile(fileName: string, sourceText: string, languageVersion: ScriptTarget, setParentNodes?: boolean): SourceFile; function updateSourceFile(sourceFile: SourceFile, newText: string, textChangeRange: TextChangeRange, aggressiveChecks?: boolean): SourceFile; } -declare module "typescript" { +declare namespace ts { const version: string; function findConfigFile(searchPath: string): string; function resolveTripleslashReference(moduleName: string, containingFile: string): string; - function resolveModuleName(moduleName: string, containingFile: string, compilerOptions: CompilerOptions, host: ModuleResolutionHost): ResolvedModule; - function nodeModuleNameResolver(moduleName: string, containingFile: string, host: ModuleResolutionHost): ResolvedModule; - function baseUrlModuleNameResolver(moduleName: string, containingFile: string, baseUrl: string, host: ModuleResolutionHost): ResolvedModule; - function classicNameResolver(moduleName: string, containingFile: string, compilerOptions: CompilerOptions, host: ModuleResolutionHost): ResolvedModule; + function resolveModuleName(moduleName: string, containingFile: string, compilerOptions: CompilerOptions, host: ModuleResolutionHost): ResolvedModuleWithFailedLookupLocations; + function nodeModuleNameResolver(moduleName: string, containingFile: string, host: ModuleResolutionHost): ResolvedModuleWithFailedLookupLocations; + function classicNameResolver(moduleName: string, containingFile: string, compilerOptions: CompilerOptions, host: ModuleResolutionHost): ResolvedModuleWithFailedLookupLocations; function createCompilerHost(options: CompilerOptions, setParentNodes?: boolean): CompilerHost; function getPreEmitDiagnostics(program: Program, sourceFile?: SourceFile, cancellationToken?: CancellationToken): Diagnostic[]; function flattenDiagnosticMessageText(messageText: string | DiagnosticMessageChain, newLine: string): string; function createProgram(rootNames: string[], options: CompilerOptions, host?: CompilerHost, oldProgram?: Program): Program; } -declare module "typescript" { +declare namespace ts { function parseCommandLine(commandLine: string[], readFile?: (path: string) => string): ParsedCommandLine; /** * Read tsconfig.json file * @param fileName The path to the config file */ - function readConfigFile(fileName: string): { + function readConfigFile(fileName: string, readFile: (path: string) => string): { config?: any; error?: Diagnostic; }; @@ -1551,7 +1554,7 @@ declare module "typescript" { */ function parseConfigFile(json: any, host: ParseConfigHost, basePath: string): ParsedCommandLine; } -declare module "typescript" { +declare namespace ts { /** The version of the language service API */ let servicesVersion: string; interface Node { @@ -1649,7 +1652,7 @@ declare module "typescript" { trace?(s: string): void; error?(s: string): void; useCaseSensitiveFileNames?(): boolean; - resolveModuleNames?(moduleNames: string[], containingFile: string): string[]; + resolveModuleNames?(moduleNames: string[], containingFile: string): ResolvedModule[]; } interface LanguageService { cleanupSemanticCache(): void; @@ -2139,3 +2142,5 @@ declare module "typescript" { */ function getDefaultLibFilePath(options: CompilerOptions): string; } + +export = ts; \ No newline at end of file diff --git a/lib/typescript.js b/lib/typescript.js index b4d21639d3b..a1f9651570e 100644 --- a/lib/typescript.js +++ b/lib/typescript.js @@ -2117,7 +2117,7 @@ var ts; 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'." }, + 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." }, @@ -2288,6 +2288,7 @@ var ts; The_arguments_object_cannot_be_referenced_in_an_async_arrow_function_Consider_using_a_standard_async_function_expression: { code: 2522, category: ts.DiagnosticCategory.Error, key: "The 'arguments' object cannot be referenced in an async arrow function. Consider using a standard async function expression." }, yield_expressions_cannot_be_used_in_a_parameter_initializer: { code: 2523, category: ts.DiagnosticCategory.Error, key: "'yield' expressions cannot be used in a parameter initializer." }, await_expressions_cannot_be_used_in_a_parameter_initializer: { code: 2524, category: ts.DiagnosticCategory.Error, key: "'await' expressions cannot be used in a parameter initializer." }, + Initializer_provides_no_value_for_this_binding_element_and_the_binding_element_has_no_default_value: { code: 2525, category: ts.DiagnosticCategory.Error, key: "Initializer provides no value for this binding element and the binding element has no default value." }, JSX_element_attributes_type_0_must_be_an_object_type: { code: 2600, category: ts.DiagnosticCategory.Error, key: "JSX element attributes type '{0}' must be an object type." }, The_return_type_of_a_JSX_element_constructor_must_return_an_object_type: { code: 2601, category: ts.DiagnosticCategory.Error, key: "The return type of a JSX element constructor must return an object type." }, JSX_element_implicitly_has_type_any_because_the_global_type_JSX_Element_does_not_exist: { code: 2602, category: ts.DiagnosticCategory.Error, key: "JSX element implicitly has type 'any' because the global type 'JSX.Element' does not exist." }, @@ -2300,6 +2301,10 @@ var ts; Cannot_emit_namespaced_JSX_elements_in_React: { code: 2650, category: ts.DiagnosticCategory.Error, key: "Cannot emit namespaced JSX elements in React" }, A_member_initializer_in_a_enum_declaration_cannot_reference_members_declared_after_it_including_members_defined_in_other_enums: { code: 2651, category: ts.DiagnosticCategory.Error, key: "A member initializer in a enum declaration cannot reference members declared after it, including members defined in other enums." }, Merged_declaration_0_cannot_include_a_default_export_declaration_Consider_adding_a_separate_export_default_0_declaration_instead: { code: 2652, category: ts.DiagnosticCategory.Error, key: "Merged declaration '{0}' cannot include a default export declaration. Consider adding a separate 'export default {0}' declaration instead." }, + Non_abstract_class_expression_does_not_implement_inherited_abstract_member_0_from_class_1: { code: 2653, category: ts.DiagnosticCategory.Error, key: "Non-abstract class expression does not implement inherited abstract member '{0}' from class '{1}'." }, + Exported_external_package_typings_file_cannot_contain_tripleslash_references_Please_contact_the_package_author_to_update_the_package_definition: { code: 2654, category: ts.DiagnosticCategory.Error, key: "Exported external package typings file cannot contain tripleslash references. Please contact the package author to update the package definition." }, + Exported_external_package_typings_can_only_be_in_d_ts_files_Please_contact_the_package_author_to_update_the_package_definition: { code: 2655, category: ts.DiagnosticCategory.Error, key: "Exported external package typings can only be in '.d.ts' files. Please contact the package author to update the package definition." }, + Exported_external_package_typings_file_0_is_not_a_module_Please_contact_the_package_author_to_update_the_package_definition: { code: 2656, category: ts.DiagnosticCategory.Error, key: "Exported external package typings file '{0}' is not a module. Please contact the package author to update the package definition." }, 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}'." }, @@ -2433,13 +2438,14 @@ var ts; Specifies_the_end_of_line_sequence_to_be_used_when_emitting_files_Colon_CRLF_dos_or_LF_unix: { code: 6060, category: ts.DiagnosticCategory.Message, key: "Specifies the end of line sequence to be used when emitting files: 'CRLF' (dos) or 'LF' (unix)." }, NEWLINE: { code: 6061, category: ts.DiagnosticCategory.Message, key: "NEWLINE" }, Argument_for_newLine_option_must_be_CRLF_or_LF: { code: 6062, category: ts.DiagnosticCategory.Error, key: "Argument for '--newLine' option must be 'CRLF' or 'LF'." }, + Argument_for_moduleResolution_option_must_be_node_or_classic: { code: 6063, category: ts.DiagnosticCategory.Error, key: "Argument for '--moduleResolution' option must be 'node' or 'classic'." }, Specify_JSX_code_generation_Colon_preserve_or_react: { code: 6080, category: ts.DiagnosticCategory.Message, key: "Specify JSX code generation: 'preserve' or 'react'" }, Argument_for_jsx_must_be_preserve_or_react: { code: 6081, category: ts.DiagnosticCategory.Message, key: "Argument for '--jsx' must be 'preserve' or 'react'." }, Enables_experimental_support_for_ES7_decorators: { code: 6065, category: ts.DiagnosticCategory.Message, key: "Enables experimental support for ES7 decorators." }, Enables_experimental_support_for_emitting_type_metadata_for_decorators: { code: 6066, category: ts.DiagnosticCategory.Message, key: "Enables experimental support for emitting type metadata for decorators." }, Option_experimentalAsyncFunctions_cannot_be_specified_when_targeting_ES5_or_lower: { code: 6067, category: ts.DiagnosticCategory.Message, key: "Option 'experimentalAsyncFunctions' cannot be specified when targeting ES5 or lower." }, Enables_experimental_support_for_ES7_async_functions: { code: 6068, category: ts.DiagnosticCategory.Message, key: "Enables experimental support for ES7 async functions." }, - Specifies_module_resolution_strategy_Colon_node_Node_or_classic_TypeScript_pre_1_6: { code: 6069, category: ts.DiagnosticCategory.Message, key: "Specifies module resolution strategy: 'node' (Node) or 'classic' (TypeScript pre 1.6) ." }, + Specifies_module_resolution_strategy_Colon_node_Node_js_or_classic_TypeScript_pre_1_6: { code: 6069, category: ts.DiagnosticCategory.Message, key: "Specifies module resolution strategy: 'node' (Node.js) or 'classic' (TypeScript pre-1.6)." }, Initializes_a_TypeScript_project_and_creates_a_tsconfig_json_file: { code: 6070, category: ts.DiagnosticCategory.Message, key: "Initializes a TypeScript project and creates a tsconfig.json file." }, Successfully_created_a_tsconfig_json_file: { code: 6071, category: ts.DiagnosticCategory.Message, key: "Successfully created a tsconfig.json file." }, Suppress_excess_property_checks_for_object_literals: { code: 6072, category: ts.DiagnosticCategory.Message, key: "Suppress excess property checks for object literals." }, @@ -2491,6 +2497,11 @@ var ts; /// var ts; (function (ts) { + /* @internal */ + function tokenIsIdentifierOrKeyword(token) { + return token >= 67 /* Identifier */; + } + ts.tokenIsIdentifierOrKeyword = tokenIsIdentifierOrKeyword; var textToToken = { "abstract": 113 /* AbstractKeyword */, "any": 115 /* AnyKeyword */, @@ -3926,7 +3937,7 @@ var ts; // Scans a JSX identifier; these differ from normal identifiers in that // they allow dashes function scanJsxIdentifier() { - if (token === 67 /* Identifier */) { + if (tokenIsIdentifierOrKeyword(token)) { var firstCharPosition = pos; while (pos < end) { var ch = text.charCodeAt(pos); @@ -4943,6 +4954,7 @@ var ts; } })(ts || (ts = {})); /// +/// /* @internal */ var ts; (function (ts) { @@ -5011,21 +5023,21 @@ var ts; return true; } ts.arrayIsEqualTo = arrayIsEqualTo; - function hasResolvedModuleName(sourceFile, moduleNameText) { + function hasResolvedModule(sourceFile, moduleNameText) { return sourceFile.resolvedModules && ts.hasProperty(sourceFile.resolvedModules, moduleNameText); } - ts.hasResolvedModuleName = hasResolvedModuleName; - function getResolvedModuleFileName(sourceFile, moduleNameText) { - return hasResolvedModuleName(sourceFile, moduleNameText) ? sourceFile.resolvedModules[moduleNameText] : undefined; + ts.hasResolvedModule = hasResolvedModule; + function getResolvedModule(sourceFile, moduleNameText) { + return hasResolvedModule(sourceFile, moduleNameText) ? sourceFile.resolvedModules[moduleNameText] : undefined; } - ts.getResolvedModuleFileName = getResolvedModuleFileName; - function setResolvedModuleName(sourceFile, moduleNameText, resolvedFileName) { + ts.getResolvedModule = getResolvedModule; + function setResolvedModule(sourceFile, moduleNameText, resolvedModule) { if (!sourceFile.resolvedModules) { sourceFile.resolvedModules = {}; } - sourceFile.resolvedModules[moduleNameText] = resolvedFileName; + sourceFile.resolvedModules[moduleNameText] = resolvedModule; } - ts.setResolvedModuleName = setResolvedModuleName; + ts.setResolvedModule = setResolvedModule; // Returns true if this node contains a parse error anywhere underneath it. function containsParseError(node) { aggregateChildData(node); @@ -5072,16 +5084,16 @@ var ts; return node.pos; } ts.getStartPosOfNode = getStartPosOfNode; - // Returns true if this node is missing from the actual source code. 'missing' is different - // from 'undefined/defined'. When a node is undefined (which can happen for optional nodes - // in the tree), it is definitel missing. HOwever, a node may be defined, but still be + // Returns true if this node is missing from the actual source code. A 'missing' node is different + // from 'undefined/defined'. When a node is undefined (which can happen for optional nodes + // in the tree), it is definitely missing. However, a node may be defined, but still be // 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: + // get anything in the source code that it expects at that location. For example: // // 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. + // code). So the parser will attempt to parse out a type, and will create an actual node. // However, this node will be 'missing' in the sense that no actual source-code/tokens are // contained within it. function nodeIsMissing(node) { @@ -5328,6 +5340,7 @@ var ts; } ts.getJsDocComments = getJsDocComments; ts.fullTripleSlashReferencePathRegEx = /^(\/\/\/\s*/; + ts.fullTripleSlashAMDReferencePathRegEx = /^(\/\/\/\s*/; function isTypeNode(node) { if (149 /* FirstTypeNode */ <= node.kind && node.kind <= 158 /* LastTypeNode */) { return true; @@ -6362,11 +6375,21 @@ var ts; add: add, getGlobalDiagnostics: getGlobalDiagnostics, getDiagnostics: getDiagnostics, - getModificationCount: getModificationCount + getModificationCount: getModificationCount, + reattachFileDiagnostics: reattachFileDiagnostics }; function getModificationCount() { return modificationCount; } + function reattachFileDiagnostics(newFile) { + if (!ts.hasProperty(fileDiagnostics, newFile.fileName)) { + return; + } + for (var _i = 0, _a = fileDiagnostics[newFile.fileName]; _i < _a.length; _i++) { + var diagnostic = _a[_i]; + diagnostic.file = newFile; + } + } function add(diagnostic) { var diagnostics; if (diagnostic.file) { @@ -8118,10 +8141,10 @@ var ts; return createIdentifier(isIdentifier(), diagnosticMessage); } function parseIdentifierName() { - return createIdentifier(isIdentifierOrKeyword()); + return createIdentifier(ts.tokenIsIdentifierOrKeyword(token)); } function isLiteralPropertyName() { - return isIdentifierOrKeyword() || + return ts.tokenIsIdentifierOrKeyword(token) || token === 9 /* StringLiteral */ || token === 8 /* NumericLiteral */; } @@ -8141,7 +8164,7 @@ var ts; return parsePropertyNameWorker(/*allowComputedPropertyNames:*/ false); } function isSimplePropertyName() { - return token === 9 /* StringLiteral */ || token === 8 /* NumericLiteral */ || isIdentifierOrKeyword(); + return token === 9 /* StringLiteral */ || token === 8 /* NumericLiteral */ || ts.tokenIsIdentifierOrKeyword(token); } function parseComputedPropertyName() { // PropertyName [Yield]: @@ -8257,9 +8280,9 @@ var ts; case 20 /* HeritageClauses */: return isHeritageClause(); case 21 /* ImportOrExportSpecifiers */: - return isIdentifierOrKeyword(); + return ts.tokenIsIdentifierOrKeyword(token); case 13 /* JsxAttributes */: - return isIdentifierOrKeyword() || token === 15 /* OpenBraceToken */; + return ts.tokenIsIdentifierOrKeyword(token) || token === 15 /* OpenBraceToken */; case 14 /* JsxChildren */: return true; case 22 /* JSDocFunctionParameters */: @@ -8292,7 +8315,7 @@ var ts; } function nextTokenIsIdentifierOrKeyword() { nextToken(); - return isIdentifierOrKeyword(); + return ts.tokenIsIdentifierOrKeyword(token); } function isHeritageClauseExtendsOrImplementsKeyword() { if (token === 104 /* ImplementsKeyword */ || @@ -8786,7 +8809,7 @@ var ts; // the code would be implicitly: "name.identifierOrKeyword; identifierNameOrKeyword". // In the first case though, ASI will not take effect because there is not a // line terminator after the identifier or keyword. - if (scanner.hasPrecedingLineBreak() && isIdentifierOrKeyword()) { + if (scanner.hasPrecedingLineBreak() && ts.tokenIsIdentifierOrKeyword(token)) { var matchesPattern = lookAhead(nextTokenIsIdentifierOrKeywordOnSameLine); if (matchesPattern) { // Report that we need an identifier. However, report it right after the dot, @@ -9170,7 +9193,7 @@ var ts; return result; } } - if (isIdentifierOrKeyword()) { + if (ts.tokenIsIdentifierOrKeyword(token)) { return parsePropertyOrMethodSignature(); } } @@ -10763,12 +10786,9 @@ var ts; return finishNode(expressionStatement); } } - function isIdentifierOrKeyword() { - return token >= 67 /* Identifier */; - } function nextTokenIsIdentifierOrKeywordOnSameLine() { nextToken(); - return isIdentifierOrKeyword() && !scanner.hasPrecedingLineBreak(); + return ts.tokenIsIdentifierOrKeyword(token) && !scanner.hasPrecedingLineBreak(); } function nextTokenIsFunctionKeywordOnSameLine() { nextToken(); @@ -10776,7 +10796,7 @@ var ts; } function nextTokenIsIdentifierOrKeywordOrNumberOnSameLine() { nextToken(); - return (isIdentifierOrKeyword() || token === 8 /* NumericLiteral */) && !scanner.hasPrecedingLineBreak(); + return (ts.tokenIsIdentifierOrKeyword(token) || token === 8 /* NumericLiteral */) && !scanner.hasPrecedingLineBreak(); } function isDeclaration() { while (true) { @@ -10826,7 +10846,7 @@ var ts; case 87 /* ImportKeyword */: nextToken(); return token === 9 /* StringLiteral */ || token === 37 /* AsteriskToken */ || - token === 15 /* OpenBraceToken */ || isIdentifierOrKeyword(); + token === 15 /* OpenBraceToken */ || ts.tokenIsIdentifierOrKeyword(token); case 80 /* ExportKeyword */: nextToken(); if (token === 55 /* EqualsToken */ || token === 37 /* AsteriskToken */ || @@ -11366,7 +11386,7 @@ var ts; } // It is very important that we check this *after* checking indexers because // the [ token can start an index signature or a computed property name - if (isIdentifierOrKeyword() || + if (ts.tokenIsIdentifierOrKeyword(token) || token === 9 /* StringLiteral */ || token === 8 /* NumericLiteral */ || token === 37 /* AsteriskToken */ || @@ -11505,12 +11525,15 @@ var ts; } function parseModuleOrNamespaceDeclaration(fullStart, decorators, modifiers, flags) { var node = createNode(216 /* ModuleDeclaration */, fullStart); + // If we are parsing a dotted namespace name, we want to + // propagate the 'Namespace' flag across the names if set. + var namespaceFlag = flags & 131072 /* Namespace */; node.decorators = decorators; setModifiers(node, modifiers); node.flags |= flags; node.name = parseIdentifier(); node.body = parseOptional(21 /* DotToken */) - ? parseModuleOrNamespaceDeclaration(getNodePos(), /*decorators*/ undefined, /*modifiers*/ undefined, 1 /* Export */) + ? parseModuleOrNamespaceDeclaration(getNodePos(), /*decorators*/ undefined, /*modifiers*/ undefined, 1 /* Export */ | namespaceFlag) : parseModuleBlock(); return finishNode(node); } @@ -11844,7 +11867,7 @@ var ts; case 95 /* ThisKeyword */: return true; } - return isIdentifierOrKeyword(); + return ts.tokenIsIdentifierOrKeyword(token); } JSDocParser.isJSDocType = isJSDocType; function parseJSDocTypeExpressionForTests(content, start, length) { @@ -13734,7 +13757,7 @@ var ts; // 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 = ts.escapeIdentifier(moduleReferenceLiteral.text); - if (!moduleName) { + if (moduleName === undefined) { return; } var isRelative = isExternalModuleNameRelative(moduleName); @@ -13744,8 +13767,8 @@ var ts; return symbol; } } - var fileName = ts.getResolvedModuleFileName(getSourceFile(location), moduleReferenceLiteral.text); - var sourceFile = fileName && host.getSourceFile(fileName); + var resolvedModule = ts.getResolvedModule(getSourceFile(location), moduleReferenceLiteral.text); + var sourceFile = resolvedModule && host.getSourceFile(resolvedModule.resolvedFileName); if (sourceFile) { if (sourceFile.symbol) { return sourceFile.symbol; @@ -15038,7 +15061,7 @@ var ts; } // If the declaration specifies a binding pattern, use the type implied by the binding pattern if (ts.isBindingPattern(declaration.name)) { - return getTypeFromBindingPattern(declaration.name); + return getTypeFromBindingPattern(declaration.name, /*includePatternInType*/ false); } // No type specified and nothing can be inferred return undefined; @@ -15046,45 +15069,45 @@ var ts; // Return the type implied by a binding pattern element. This is the type of the initializer of the element if // one is present. Otherwise, if the element is itself a binding pattern, it is the type implied by the binding // pattern. Otherwise, it is the type any. - function getTypeFromBindingElement(element) { + function getTypeFromBindingElement(element, includePatternInType) { if (element.initializer) { return getWidenedType(checkExpressionCached(element.initializer)); } if (ts.isBindingPattern(element.name)) { - return getTypeFromBindingPattern(element.name); + return getTypeFromBindingPattern(element.name, includePatternInType); } return anyType; } // Return the type implied by an object binding pattern - function getTypeFromObjectBindingPattern(pattern) { + function getTypeFromObjectBindingPattern(pattern, includePatternInType) { var members = {}; ts.forEach(pattern.elements, function (e) { var flags = 4 /* Property */ | 67108864 /* Transient */ | (e.initializer ? 536870912 /* Optional */ : 0); var name = e.propertyName || e.name; var symbol = createSymbol(flags, name.text); - symbol.type = getTypeFromBindingElement(e); + symbol.type = getTypeFromBindingElement(e, includePatternInType); + symbol.bindingElement = e; members[symbol.name] = symbol; }); - return createAnonymousType(undefined, members, emptyArray, emptyArray, undefined, undefined); + var result = createAnonymousType(undefined, members, emptyArray, emptyArray, undefined, undefined); + if (includePatternInType) { + result.pattern = pattern; + } + return result; } // Return the type implied by an array binding pattern - function getTypeFromArrayBindingPattern(pattern) { - var hasSpreadElement = false; - var elementTypes = []; - ts.forEach(pattern.elements, function (e) { - elementTypes.push(e.kind === 185 /* OmittedExpression */ || e.dotDotDotToken ? anyType : getTypeFromBindingElement(e)); - if (e.dotDotDotToken) { - hasSpreadElement = true; - } - }); - if (!elementTypes.length) { + function getTypeFromArrayBindingPattern(pattern, includePatternInType) { + var elements = pattern.elements; + if (elements.length === 0 || elements[elements.length - 1].dotDotDotToken) { return languageVersion >= 2 /* ES6 */ ? createIterableType(anyType) : anyArrayType; } - else if (hasSpreadElement) { - var unionOfElements = getUnionType(elementTypes); - return languageVersion >= 2 /* ES6 */ ? createIterableType(unionOfElements) : createArrayType(unionOfElements); - } // If the pattern has at least one element, and no rest element, then it should imply a tuple type. + var elementTypes = ts.map(elements, function (e) { return e.kind === 185 /* OmittedExpression */ ? anyType : getTypeFromBindingElement(e, includePatternInType); }); + if (includePatternInType) { + var result = createNewTupleType(elementTypes); + result.pattern = pattern; + return result; + } return createTupleType(elementTypes); } // Return the type implied by a binding pattern. This is the type implied purely by the binding pattern itself @@ -15094,10 +15117,10 @@ var ts; // used as the contextual type of an initializer associated with the binding pattern. Also, for a destructuring // parameter with no type annotation or initializer, the type implied by the binding pattern becomes the type of // the parameter. - function getTypeFromBindingPattern(pattern) { + function getTypeFromBindingPattern(pattern, includePatternInType) { return pattern.kind === 159 /* ObjectBindingPattern */ - ? getTypeFromObjectBindingPattern(pattern) - : getTypeFromArrayBindingPattern(pattern); + ? getTypeFromObjectBindingPattern(pattern, includePatternInType) + : getTypeFromArrayBindingPattern(pattern, includePatternInType); } // Return the type associated with a variable, parameter, or property declaration. In the simple case this is the type // specified in a type annotation or inferred from an initializer. However, in the case of a destructuring declaration it @@ -16565,11 +16588,11 @@ var ts; } function createTupleType(elementTypes) { var id = getTypeListId(elementTypes); - var type = tupleTypes[id]; - if (!type) { - type = tupleTypes[id] = createObjectType(8192 /* Tuple */ | getPropagatingFlagsOfTypes(elementTypes)); - type.elementTypes = elementTypes; - } + return tupleTypes[id] || (tupleTypes[id] = createNewTupleType(elementTypes)); + } + function createNewTupleType(elementTypes) { + var type = createObjectType(8192 /* Tuple */ | getPropagatingFlagsOfTypes(elementTypes)); + type.elementTypes = elementTypes; return type; } function getTypeFromTupleTypeNode(node) { @@ -17021,7 +17044,7 @@ var ts; * @param target The right-hand-side of the relation. * @param relation The relation considered. One of 'identityRelation', 'assignableRelation', or 'subTypeRelation'. * Used as both to determine which checks are performed and as a cache of previously computed results. - * @param errorNode The node upon which all errors will be reported, if defined. + * @param errorNode The suggested node upon which all errors will be reported, if defined. This may or may not be the actual node used. * @param headMessage If the error chain should be prepended by a head message, then headMessage will be used. * @param containingMessageChain A chain of errors to prepend any new errors found. */ @@ -17106,7 +17129,9 @@ var ts; // and intersection types are further deconstructed on the target side, we don't want to // make the check again (as it might fail for a partial target type). Therefore we obtain // the regular source type and proceed with that. - source = getRegularTypeOfObjectLiteral(source); + if (target.flags & 49152 /* UnionOrIntersection */) { + source = getRegularTypeOfObjectLiteral(source); + } } var saveErrorInfo = errorInfo; // Note that the "each" checks must precede the "some" checks to produce the correct results @@ -17228,6 +17253,10 @@ var ts; var prop = _a[_i]; if (!isKnownProperty(target, prop.name)) { if (reportErrors) { + // We know *exactly* where things went wrong when comparing the types. + // Use this property as the error node as this will be more helpful in + // reasoning about what went wrong. + errorNode = prop.valueDeclaration; reportError(ts.Diagnostics.Object_literal_may_only_specify_known_properties_and_0_does_not_exist_in_type_1, symbolToString(prop), typeToString(target)); } return true; @@ -17550,8 +17579,8 @@ var ts; return result; function abstractSignatureRelatedTo(source, sourceSig, target, targetSig) { if (sourceSig && targetSig) { - var sourceDecl = source.symbol && ts.getDeclarationOfKind(source.symbol, 212 /* ClassDeclaration */); - var targetDecl = target.symbol && ts.getDeclarationOfKind(target.symbol, 212 /* ClassDeclaration */); + var sourceDecl = source.symbol && getClassLikeDeclarationOfSymbol(source.symbol); + var targetDecl = target.symbol && getClassLikeDeclarationOfSymbol(target.symbol); if (!sourceDecl) { // If the source object isn't itself a class declaration, it can be freely assigned, regardless // of whether the constructed object is abstract or not. @@ -17561,8 +17590,8 @@ var ts; var targetErasedSignature = getErasedSignature(targetSig); var sourceReturnType = sourceErasedSignature && getReturnTypeOfSignature(sourceErasedSignature); var targetReturnType = targetErasedSignature && getReturnTypeOfSignature(targetErasedSignature); - var sourceReturnDecl = sourceReturnType && sourceReturnType.symbol && ts.getDeclarationOfKind(sourceReturnType.symbol, 212 /* ClassDeclaration */); - var targetReturnDecl = targetReturnType && targetReturnType.symbol && ts.getDeclarationOfKind(targetReturnType.symbol, 212 /* ClassDeclaration */); + var sourceReturnDecl = sourceReturnType && sourceReturnType.symbol && getClassLikeDeclarationOfSymbol(sourceReturnType.symbol); + var targetReturnDecl = targetReturnType && targetReturnType.symbol && getClassLikeDeclarationOfSymbol(targetReturnType.symbol); var sourceIsAbstract = sourceReturnDecl && sourceReturnDecl.flags & 256 /* Abstract */; var targetIsAbstract = targetReturnDecl && targetReturnDecl.flags & 256 /* Abstract */; if (sourceIsAbstract && !(targetIsAbstract && targetDecl)) { @@ -17911,6 +17940,7 @@ var ts; regularType.constructSignatures = type.constructSignatures; regularType.stringIndexType = type.stringIndexType; regularType.numberIndexType = type.numberIndexType; + type.regularType = regularType; } return regularType; } @@ -18893,8 +18923,8 @@ var ts; } // Return contextual type of parameter or undefined if no contextual type is available function getContextuallyTypedParameterType(parameter) { - if (isFunctionExpressionOrArrowFunction(parameter.parent)) { - var func = parameter.parent; + var func = parameter.parent; + if (isFunctionExpressionOrArrowFunction(func) || ts.isObjectLiteralMethod(func)) { if (isContextSensitive(func)) { var contextualSignature = getContextualSignature(func); if (contextualSignature) { @@ -18932,7 +18962,7 @@ var ts; } } if (ts.isBindingPattern(declaration.name)) { - return getTypeFromBindingPattern(declaration.name); + return getTypeFromBindingPattern(declaration.name, /*includePatternInType*/ true); } } return undefined; @@ -19290,11 +19320,12 @@ var ts; var arrayOrIterableType = checkExpressionCached(node.expression, contextualMapper); return checkIteratedTypeOrElementType(arrayOrIterableType, node.expression, /*allowStringInput*/ false); } + function hasDefaultValue(node) { + return (node.kind === 161 /* BindingElement */ && !!node.initializer) || + (node.kind === 179 /* BinaryExpression */ && node.operatorToken.kind === 55 /* EqualsToken */); + } function checkArrayLiteral(node, contextualMapper) { var elements = node.elements; - if (!elements.length) { - return createArrayType(undefinedType); - } var hasSpreadElement = false; var elementTypes = []; var inDestructuringPattern = isAssignmentTarget(node); @@ -19327,12 +19358,39 @@ var ts; hasSpreadElement = hasSpreadElement || e.kind === 183 /* SpreadElementExpression */; } if (!hasSpreadElement) { + // If array literal is actually a destructuring pattern, mark it as an implied type. We do this such + // that we get the same behavior for "var [x, y] = []" and "[x, y] = []". + if (inDestructuringPattern && elementTypes.length) { + var type = createNewTupleType(elementTypes); + type.pattern = node; + return type; + } var contextualType = getContextualType(node); - if (contextualType && contextualTypeIsTupleLikeType(contextualType) || inDestructuringPattern) { - return createTupleType(elementTypes); + if (contextualType && contextualTypeIsTupleLikeType(contextualType)) { + var pattern = contextualType.pattern; + // If array literal is contextually typed by a binding pattern or an assignment pattern, pad the resulting + // tuple type with the corresponding binding or assignment element types to make the lengths equal. + if (pattern && (pattern.kind === 160 /* ArrayBindingPattern */ || pattern.kind === 162 /* ArrayLiteralExpression */)) { + var patternElements = pattern.elements; + for (var i = elementTypes.length; i < patternElements.length; i++) { + var patternElement = patternElements[i]; + if (hasDefaultValue(patternElement)) { + elementTypes.push(contextualType.elementTypes[i]); + } + else { + if (patternElement.kind !== 185 /* OmittedExpression */) { + error(patternElement, ts.Diagnostics.Initializer_provides_no_value_for_this_binding_element_and_the_binding_element_has_no_default_value); + } + elementTypes.push(unknownType); + } + } + } + if (elementTypes.length) { + return createTupleType(elementTypes); + } } } - return createArrayType(getUnionType(elementTypes)); + return createArrayType(elementTypes.length ? getUnionType(elementTypes) : undefinedType); } function isNumericName(name) { return name.kind === 134 /* ComputedPropertyName */ ? isNumericComputedName(name) : isNumericLiteralName(name.text); @@ -19390,6 +19448,9 @@ var ts; var propertiesTable = {}; var propertiesArray = []; var contextualType = getContextualType(node); + var contextualTypeHasPattern = contextualType && contextualType.pattern && + (contextualType.pattern.kind === 159 /* ObjectBindingPattern */ || contextualType.pattern.kind === 163 /* ObjectLiteralExpression */); + var inDestructuringPattern = isAssignmentTarget(node); var typeFlags = 0; for (var _i = 0, _a = node.properties; _i < _a.length; _i++) { var memberDecl = _a[_i]; @@ -19410,6 +19471,24 @@ var ts; } typeFlags |= type.flags; var prop = createSymbol(4 /* Property */ | 67108864 /* Transient */ | member.flags, member.name); + if (inDestructuringPattern) { + // If object literal is an assignment pattern and if the assignment pattern specifies a default value + // for the property, make the property optional. + if (memberDecl.kind === 243 /* PropertyAssignment */ && hasDefaultValue(memberDecl.initializer)) { + prop.flags |= 536870912 /* Optional */; + } + } + else if (contextualTypeHasPattern) { + // If object literal is contextually typed by the implied type of a binding pattern, and if the + // binding pattern specifies a default value for the property, make the property optional. + var impliedProp = getPropertyOfType(contextualType, member.name); + if (impliedProp) { + prop.flags |= impliedProp.flags & 536870912 /* Optional */; + } + else if (!compilerOptions.suppressExcessPropertyErrors) { + error(memberDecl.name, ts.Diagnostics.Object_literal_may_only_specify_known_properties_and_0_does_not_exist_in_type_1, symbolToString(member), typeToString(contextualType)); + } + } prop.declarations = member.declarations; prop.parent = member.parent; if (member.valueDeclaration) { @@ -19433,11 +19512,28 @@ var ts; } propertiesArray.push(member); } + // If object literal is contextually typed by the implied type of a binding pattern, augment the result + // type with those properties for which the binding pattern specifies a default value. + if (contextualTypeHasPattern) { + for (var _b = 0, _c = getPropertiesOfType(contextualType); _b < _c.length; _b++) { + var prop = _c[_b]; + if (!ts.hasProperty(propertiesTable, prop.name)) { + if (!(prop.flags & 536870912 /* Optional */)) { + error(prop.valueDeclaration || prop.bindingElement, ts.Diagnostics.Initializer_provides_no_value_for_this_binding_element_and_the_binding_element_has_no_default_value); + } + propertiesTable[prop.name] = prop; + propertiesArray.push(prop); + } + } + } var stringIndexType = getIndexType(0 /* String */); var numberIndexType = getIndexType(1 /* Number */); var result = createAnonymousType(node.symbol, propertiesTable, emptyArray, emptyArray, stringIndexType, numberIndexType); var freshObjectLiteralFlag = compilerOptions.suppressExcessPropertyErrors ? 0 : 1048576 /* FreshObjectLiteral */; result.flags |= 524288 /* ObjectLiteral */ | 4194304 /* ContainsObjectLiteral */ | freshObjectLiteralFlag | (typeFlags & 14680064 /* PropagatingFlags */); + if (inDestructuringPattern) { + result.pattern = node; + } return result; function getIndexType(kind) { if (contextualType && contextualTypeHasIndexSignature(contextualType, kind)) { @@ -20946,7 +21042,7 @@ var ts; // Note, only class declarations can be declared abstract. // In the case of a merged class-module or class-interface declaration, // only the class declaration node will have the Abstract flag set. - var valueDecl = expressionType.symbol && ts.getDeclarationOfKind(expressionType.symbol, 212 /* ClassDeclaration */); + var valueDecl = expressionType.symbol && getClassLikeDeclarationOfSymbol(expressionType.symbol); if (valueDecl && valueDecl.flags & 256 /* Abstract */) { error(node, ts.Diagnostics.Cannot_create_an_instance_of_the_abstract_class_0, ts.declarationNameToString(valueDecl.name)); return resolveErrorCall(node); @@ -24257,6 +24353,9 @@ var ts; // so we'll need to get back original 'target' symbol to work with correct set of flags return s.flags & 16777216 /* Instantiated */ ? getSymbolLinks(s).target : s; } + function getClassLikeDeclarationOfSymbol(symbol) { + return ts.forEach(symbol.declarations, function (d) { return ts.isClassLike(d) ? d : undefined; }); + } 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. @@ -24288,12 +24387,17 @@ var ts; // type declaration, derived and base resolve to the same symbol even in the case of generic classes. if (derived === base) { // derived class inherits base without override/redeclaration - var derivedClassDecl = ts.getDeclarationOfKind(type.symbol, 212 /* ClassDeclaration */); + var derivedClassDecl = getClassLikeDeclarationOfSymbol(type.symbol); // It is an error to inherit an abstract member without implementing it or being declared abstract. // If there is no declaration for the derived class (as in the case of class expressions), // then the class cannot be declared abstract. if (baseDeclarationFlags & 256 /* Abstract */ && (!derivedClassDecl || !(derivedClassDecl.flags & 256 /* Abstract */))) { - error(derivedClassDecl, ts.Diagnostics.Non_abstract_class_0_does_not_implement_inherited_abstract_member_1_from_class_2, typeToString(type), symbolToString(baseProperty), typeToString(baseType)); + if (derivedClassDecl.kind === 184 /* ClassExpression */) { + error(derivedClassDecl, ts.Diagnostics.Non_abstract_class_expression_does_not_implement_inherited_abstract_member_0_from_class_1, symbolToString(baseProperty), typeToString(baseType)); + } + else { + error(derivedClassDecl, ts.Diagnostics.Non_abstract_class_0_does_not_implement_inherited_abstract_member_1_from_class_2, typeToString(type), symbolToString(baseProperty), typeToString(baseType)); + } } } else { @@ -25637,7 +25741,10 @@ var ts; var symbols = []; var name_15 = symbol.name; ts.forEach(getSymbolLinks(symbol).containingType.types, function (t) { - symbols.push(getPropertyOfType(t, name_15)); + var symbol = getPropertyOfType(t, name_15); + if (symbol) { + symbols.push(symbol); + } }); return symbols; } @@ -28602,6 +28709,8 @@ var ts; var scopeEmitEnd = function () { }; /** Sourcemap data that will get encoded */ var sourceMapData; + /** If removeComments is true, no leading-comments needed to be emitted **/ + var emitLeadingCommentsOfPosition = compilerOptions.removeComments ? function (pos) { } : emitLeadingCommentsOfPositionWorker; if (compilerOptions.sourceMap || compilerOptions.inlineSourceMap) { initializeEmitterWithSourceMaps(); } @@ -29561,8 +29670,10 @@ var ts; function jsxEmitPreserve(node) { function emitJsxAttribute(node) { emit(node.name); - write("="); - emit(node.initializer); + if (node.initializer) { + write("="); + emit(node.initializer); + } } function emitJsxSpreadAttribute(node) { write("{..."); @@ -29758,8 +29869,15 @@ var ts; else if (declaration.kind === 224 /* ImportSpecifier */) { // Identifier references named import write(getGeneratedNameForNode(declaration.parent.parent.parent)); - write("."); - writeTextOfNode(currentSourceFile, declaration.propertyName || declaration.name); + var name = declaration.propertyName || declaration.name; + var identifier = ts.getSourceTextOfNodeFromSourceFile(currentSourceFile, name); + if (languageVersion === 0 /* ES3 */ && identifier === "default") { + write("[\"default\"]"); + } + else { + write("."); + write(identifier); + } return; } } @@ -30510,7 +30628,8 @@ var ts; operand.kind !== 178 /* PostfixUnaryExpression */ && operand.kind !== 167 /* NewExpression */ && !(operand.kind === 166 /* CallExpression */ && node.parent.kind === 167 /* NewExpression */) && - !(operand.kind === 171 /* FunctionExpression */ && node.parent.kind === 166 /* CallExpression */)) { + !(operand.kind === 171 /* FunctionExpression */ && node.parent.kind === 166 /* CallExpression */) && + !(operand.kind === 8 /* NumericLiteral */ && node.parent.kind === 164 /* PropertyAccessExpression */)) { emit(operand); return; } @@ -31215,6 +31334,9 @@ var ts; } function emitExportSpecifierInSystemModule(specifier) { ts.Debug.assert(compilerOptions.module === 4 /* System */); + if (!resolver.getReferencedValueDeclaration(specifier.propertyName || specifier.name) && !resolver.isValueAliasDeclaration(specifier)) { + return; + } writeLine(); emitStart(specifier.name); write(exportFunctionForFile + "(\""); @@ -31270,21 +31392,30 @@ var ts; write(")"); } } - function ensureIdentifier(expr) { - if (expr.kind !== 67 /* Identifier */) { - var identifier = createTempVariable(0 /* Auto */); - if (!canDefineTempVariablesInPlace) { - recordTempDeclaration(identifier); - } - emitAssignment(identifier, expr); - expr = identifier; + /** + * Ensures that there exists a declared identifier whose value holds the given expression. + * This function is useful to ensure that the expression's value can be read from in subsequent expressions. + * Unless 'reuseIdentifierExpressions' is false, 'expr' will be returned if it is just an identifier. + * + * @param expr the expression whose value needs to be bound. + * @param reuseIdentifierExpressions true if identifier expressions can simply be returned; + * false if it is necessary to always emit an identifier. + */ + function ensureIdentifier(expr, reuseIdentifierExpressions) { + if (expr.kind === 67 /* Identifier */ && reuseIdentifierExpressions) { + return expr; } - return expr; + var identifier = createTempVariable(0 /* Auto */); + if (!canDefineTempVariablesInPlace) { + recordTempDeclaration(identifier); + } + emitAssignment(identifier, expr); + return identifier; } function createDefaultValueCheck(value, defaultValue) { // The value expression will be evaluated twice, so for anything but a simple identifier // we need to generate a temporary variable - value = ensureIdentifier(value); + value = ensureIdentifier(value, /*reuseIdentifierExpressions*/ true); // Return the expression 'value === void 0 ? defaultValue : value' var equals = ts.createSynthesizedNode(179 /* BinaryExpression */); equals.left = value; @@ -31330,7 +31461,7 @@ var ts; 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); + value = ensureIdentifier(value, /*reuseIdentifierExpressions*/ true); } for (var _a = 0; _a < properties.length; _a++) { var p = properties[_a]; @@ -31345,7 +31476,7 @@ var ts; 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); + value = ensureIdentifier(value, /*reuseIdentifierExpressions*/ true); } for (var i = 0; i < elements.length; i++) { var e = elements[i]; @@ -31387,7 +31518,7 @@ var ts; if (root.parent.kind !== 170 /* ParenthesizedExpression */) { write("("); } - value = ensureIdentifier(value); + value = ensureIdentifier(value, /*reuseIdentifierExpressions*/ true); emitDestructuringAssignment(target, value); write(", "); emit(value); @@ -31408,12 +31539,15 @@ var ts; if (ts.isBindingPattern(target.name)) { var pattern = target.name; var 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); + var numElements = elements.length; + if (numElements !== 1) { + // For anything other than a single-element destructuring we need to generate a temporary + // to ensure value is evaluated exactly once. Additionally, if we have zero elements + // we need to emit *something* to ensure that in case a 'var' keyword was already emitted, + // so in that case, we'll intentionally create that temporary. + value = ensureIdentifier(value, /*reuseIdentifierExpressions*/ numElements !== 0); } - for (var i = 0; i < elements.length; i++) { + for (var i = 0; i < numElements; i++) { var element = elements[i]; if (pattern.kind === 159 /* ObjectBindingPattern */) { // Rewrite element to a declaration with an initializer that fetches property @@ -31425,7 +31559,7 @@ var ts; // Rewrite element to a declaration that accesses array element at index i emitBindingElement(element, createElementAccessExpression(value, createNumericLiteral(i))); } - else if (i === elements.length - 1) { + else if (i === numElements - 1) { emitBindingElement(element, createSliceCall(value, i)); } } @@ -31686,7 +31820,7 @@ var ts; } function emitFunctionDeclaration(node) { if (ts.nodeIsMissing(node.body)) { - return emitOnlyPinnedOrTripleSlashComments(node); + return emitCommentsOnNotEmittedNode(node); } // TODO (yuisu) : we should not have special cases to condition emitting comments // but have one place to fix check for these conditions. @@ -32112,7 +32246,7 @@ var ts; } else if (member.kind === 141 /* MethodDeclaration */ || node.kind === 140 /* MethodSignature */) { if (!member.body) { - return emitOnlyPinnedOrTripleSlashComments(member); + return emitCommentsOnNotEmittedNode(member); } writeLine(); emitLeadingComments(member); @@ -32178,7 +32312,7 @@ var ts; for (var _a = 0, _b = node.members; _a < _b.length; _a++) { var member = _b[_a]; if ((member.kind === 141 /* MethodDeclaration */ || node.kind === 140 /* MethodSignature */) && !member.body) { - emitOnlyPinnedOrTripleSlashComments(member); + emitCommentsOnNotEmittedNode(member); } else if (member.kind === 141 /* MethodDeclaration */ || member.kind === 143 /* GetAccessor */ || @@ -32229,7 +32363,7 @@ var ts; // Emit the constructor overload pinned comments ts.forEach(node.members, function (member) { if (member.kind === 142 /* Constructor */ && !member.body) { - emitOnlyPinnedOrTripleSlashComments(member); + emitCommentsOnNotEmittedNode(member); } // Check if there is any non-static property assignment if (member.kind === 139 /* PropertyDeclaration */ && member.initializer && (member.flags & 128 /* Static */) === 0) { @@ -32840,50 +32974,49 @@ var ts; write("void 0"); } function emitSerializedTypeNode(node) { - if (!node) { - return; - } - switch (node.kind) { - case 101 /* VoidKeyword */: - write("void 0"); - return; - case 158 /* ParenthesizedType */: - emitSerializedTypeNode(node.type); - return; - case 150 /* FunctionType */: - case 151 /* ConstructorType */: - write("Function"); - return; - case 154 /* ArrayType */: - case 155 /* TupleType */: - write("Array"); - return; - case 148 /* TypePredicate */: - case 118 /* BooleanKeyword */: - write("Boolean"); - return; - case 128 /* StringKeyword */: - case 9 /* StringLiteral */: - write("String"); - return; - case 126 /* NumberKeyword */: - write("Number"); - return; - case 129 /* SymbolKeyword */: - write("Symbol"); - return; - case 149 /* TypeReference */: - emitSerializedTypeReferenceNode(node); - return; - case 152 /* TypeQuery */: - case 153 /* TypeLiteral */: - case 156 /* UnionType */: - case 157 /* IntersectionType */: - case 115 /* AnyKeyword */: - break; - default: - ts.Debug.fail("Cannot serialize unexpected type node."); - break; + if (node) { + switch (node.kind) { + case 101 /* VoidKeyword */: + write("void 0"); + return; + case 158 /* ParenthesizedType */: + emitSerializedTypeNode(node.type); + return; + case 150 /* FunctionType */: + case 151 /* ConstructorType */: + write("Function"); + return; + case 154 /* ArrayType */: + case 155 /* TupleType */: + write("Array"); + return; + case 148 /* TypePredicate */: + case 118 /* BooleanKeyword */: + write("Boolean"); + return; + case 128 /* StringKeyword */: + case 9 /* StringLiteral */: + write("String"); + return; + case 126 /* NumberKeyword */: + write("Number"); + return; + case 129 /* SymbolKeyword */: + write("Symbol"); + return; + case 149 /* TypeReference */: + emitSerializedTypeReferenceNode(node); + return; + case 152 /* TypeQuery */: + case 153 /* TypeLiteral */: + case 156 /* UnionType */: + case 157 /* IntersectionType */: + case 115 /* AnyKeyword */: + break; + default: + ts.Debug.fail("Cannot serialize unexpected type node."); + break; + } } write("Object"); } @@ -33034,7 +33167,7 @@ var ts; return argumentsWritten; } function emitInterfaceDeclaration(node) { - emitOnlyPinnedOrTripleSlashComments(node); + emitCommentsOnNotEmittedNode(node); } function shouldEmitEnumDeclaration(node) { var isConstEnum = ts.isConst(node); @@ -33146,7 +33279,7 @@ var ts; // Emit only if this module is non-ambient. var shouldEmit = shouldEmitModuleDeclaration(node); if (!shouldEmit) { - return emitOnlyPinnedOrTripleSlashComments(node); + return emitCommentsOnNotEmittedNode(node); } var hoistedInDeclarationScope = shouldHoistDeclarationInSystemJsModule(node); var emitVarForModule = !hoistedInDeclarationScope && !isModuleMergedWithES6Class(node); @@ -33875,7 +34008,7 @@ var ts; } return; } - if (ts.isInternalModuleImportEqualsDeclaration(node)) { + if (ts.isInternalModuleImportEqualsDeclaration(node) && resolver.isValueAliasDeclaration(node)) { if (!hoistedVars) { hoistedVars = []; } @@ -34438,7 +34571,7 @@ var ts; function emitNodeConsideringCommentsOption(node, emitNodeConsideringSourcemap) { if (node) { if (node.flags & 2 /* Ambient */) { - return emitOnlyPinnedOrTripleSlashComments(node); + return emitCommentsOnNotEmittedNode(node); } if (isSpecializedCommentHandling(node)) { // This is the node that will handle its own comments and sourcemap @@ -34686,21 +34819,27 @@ var ts; } return leadingComments; } + function isPinnedComments(comment) { + return currentSourceFile.text.charCodeAt(comment.pos + 1) === 42 /* asterisk */ && + currentSourceFile.text.charCodeAt(comment.pos + 2) === 33 /* exclamation */; + } /** - * Removes all but the pinned or triple slash comments. - * @param ranges The array to be filtered - * @param onlyPinnedOrTripleSlashComments whether the filtering should be performed. - */ - function filterComments(ranges, onlyPinnedOrTripleSlashComments) { - // If we're removing comments, then we want to strip out all but the pinned or - // triple slash comments. - if (ranges && onlyPinnedOrTripleSlashComments) { - ranges = ts.filter(ranges, isPinnedOrTripleSlashComment); - if (ranges.length === 0) { - return undefined; - } + * Determine if the given comment is a triple-slash + * + * @return true if the comment is a triple-slash comment else false + **/ + function isTripleSlashComment(comment) { + // 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 + if (currentSourceFile.text.charCodeAt(comment.pos + 1) === 47 /* slash */ && + comment.pos + 2 < comment.end && + currentSourceFile.text.charCodeAt(comment.pos + 2) === 47 /* slash */) { + var textSubStr = currentSourceFile.text.substring(comment.pos, comment.end); + return textSubStr.match(ts.fullTripleSlashReferencePathRegEx) || + textSubStr.match(ts.fullTripleSlashAMDReferencePathRegEx) ? + true : false; } - return ranges; + return false; } function getLeadingCommentsToEmit(node) { // Emit the leading comments only if the parent's pos doesn't match because parent should take care of emitting these comments @@ -34725,23 +34864,46 @@ var ts; } } } - function emitOnlyPinnedOrTripleSlashComments(node) { - emitLeadingCommentsWorker(node, /*onlyPinnedOrTripleSlashComments:*/ true); + /** + * Emit comments associated with node that will not be emitted into JS file + */ + function emitCommentsOnNotEmittedNode(node) { + emitLeadingCommentsWorker(node, /*isEmittedNode:*/ false); } function emitLeadingComments(node) { - return emitLeadingCommentsWorker(node, /*onlyPinnedOrTripleSlashComments:*/ compilerOptions.removeComments); + return emitLeadingCommentsWorker(node, /*isEmittedNode:*/ true); } - function emitLeadingCommentsWorker(node, onlyPinnedOrTripleSlashComments) { - // 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. - var leadingComments = filterComments(getLeadingCommentsToEmit(node), onlyPinnedOrTripleSlashComments); + function emitLeadingCommentsWorker(node, isEmittedNode) { + if (compilerOptions.removeComments) { + return; + } + var leadingComments; + if (isEmittedNode) { + leadingComments = getLeadingCommentsToEmit(node); + } + else { + // If the node will not be emitted in JS, remove all the comments(normal, pinned and ///) associated with the node, + // unless it is a triple slash comment at the top of the file. + // For Example: + // /// + // declare var x; + // /// + // interface F {} + // The first /// will NOT be removed while the second one will be removed eventhough both node will not be emitted + if (node.pos === 0) { + leadingComments = ts.filter(getLeadingCommentsToEmit(node), isTripleSlashComment); + } + } ts.emitNewLineBeforeLeadingComments(currentSourceFile, writer, node, leadingComments); // Leading comments are emitted at /*leading comment1 */space/*leading comment*/space - ts.emitComments(currentSourceFile, writer, leadingComments, /*trailingSeparator*/ true, newLine, writeComment); + ts.emitComments(currentSourceFile, writer, leadingComments, /*trailingSeparator:*/ true, newLine, writeComment); } function emitTrailingComments(node) { + if (compilerOptions.removeComments) { + return; + } // Emit the trailing comments only if the parent's end doesn't match - var trailingComments = filterComments(getTrailingCommentsToEmit(node), /*onlyPinnedOrTripleSlashComments:*/ compilerOptions.removeComments); + var trailingComments = getTrailingCommentsToEmit(node); // trailing comments are emitted at space/*trailing comment1 */space/*trailing comment*/ ts.emitComments(currentSourceFile, writer, trailingComments, /*trailingSeparator*/ false, newLine, writeComment); } @@ -34751,11 +34913,17 @@ var ts; * ^ => pos; the function will emit "comment1" in the emitJS */ function emitTrailingCommentsOfPosition(pos) { - var trailingComments = filterComments(ts.getTrailingCommentRanges(currentSourceFile.text, pos), /*onlyPinnedOrTripleSlashComments:*/ compilerOptions.removeComments); + if (compilerOptions.removeComments) { + return; + } + var trailingComments = ts.getTrailingCommentRanges(currentSourceFile.text, pos); // trailing comments are emitted at space/*trailing comment1 */space/*trailing comment*/ ts.emitComments(currentSourceFile, writer, trailingComments, /*trailingSeparator*/ true, newLine, writeComment); } - function emitLeadingCommentsOfPosition(pos) { + function emitLeadingCommentsOfPositionWorker(pos) { + if (compilerOptions.removeComments) { + return; + } var leadingComments; if (hasDetachedComments(pos)) { // get comments without detached comments @@ -34765,13 +34933,26 @@ var ts; // get the leading comments from the node leadingComments = ts.getLeadingCommentRanges(currentSourceFile.text, pos); } - leadingComments = filterComments(leadingComments, compilerOptions.removeComments); ts.emitNewLineBeforeLeadingComments(currentSourceFile, writer, { pos: pos, end: pos }, leadingComments); // Leading comments are emitted at /*leading comment1 */space/*leading comment*/space ts.emitComments(currentSourceFile, writer, leadingComments, /*trailingSeparator*/ true, newLine, writeComment); } function emitDetachedComments(node) { - var leadingComments = ts.getLeadingCommentRanges(currentSourceFile.text, node.pos); + var leadingComments; + if (compilerOptions.removeComments) { + // removeComments is true, only reserve pinned comment at the top of file + // For example: + // /*! Pinned Comment */ + // + // var x = 10; + if (node.pos === 0) { + leadingComments = ts.filter(ts.getLeadingCommentRanges(currentSourceFile.text, node.pos), isPinnedComments); + } + } + else { + // removeComments is false, just get detached as normal and bypass the process to filter comment + leadingComments = ts.getLeadingCommentRanges(currentSourceFile.text, node.pos); + } if (leadingComments) { var detachedComments = []; var lastComment; @@ -34816,17 +34997,6 @@ var ts; write(shebang); } } - function isPinnedOrTripleSlashComment(comment) { - if (currentSourceFile.text.charCodeAt(comment.pos + 1) === 42 /* asterisk */) { - return currentSourceFile.text.charCodeAt(comment.pos + 2) === 33 /* exclamation */; - } - else if (currentSourceFile.text.charCodeAt(comment.pos + 1) === 47 /* slash */ && - comment.pos + 2 < comment.end && - currentSourceFile.text.charCodeAt(comment.pos + 2) === 47 /* slash */ && - currentSourceFile.text.substring(comment.pos, comment.end).match(ts.fullTripleSlashReferencePathRegEx)) { - return true; - } - } } function emitFile(jsFilePath, sourceFile) { emitJavaScript(jsFilePath, sourceFile); @@ -35103,7 +35273,7 @@ var ts; /* @internal */ ts.ioWriteTime = 0; /** The version of the TypeScript compiler release */ var emptyArray = []; - ts.version = "1.6.0"; + ts.version = "1.7.0"; function findConfigFile(searchPath) { var fileName = "tsconfig.json"; while (true) { @@ -35143,10 +35313,12 @@ var ts; var candidate = ts.normalizePath(ts.combinePaths(containingDirectory, moduleName)); var resolvedFileName = loadNodeModuleFromFile(candidate, /* loadOnlyDts */ false, failedLookupLocations, host); if (resolvedFileName) { - return { resolvedFileName: resolvedFileName, failedLookupLocations: failedLookupLocations }; + return { resolvedModule: { resolvedFileName: resolvedFileName }, failedLookupLocations: failedLookupLocations }; } resolvedFileName = loadNodeModuleFromDirectory(candidate, /* loadOnlyDts */ false, failedLookupLocations, host); - return { resolvedFileName: resolvedFileName, failedLookupLocations: failedLookupLocations }; + return resolvedFileName + ? { resolvedModule: { resolvedFileName: resolvedFileName }, failedLookupLocations: failedLookupLocations } + : { resolvedModule: undefined, failedLookupLocations: failedLookupLocations }; } else { return loadModuleFromNodeModules(moduleName, containingDirectory, host); @@ -35206,11 +35378,11 @@ var ts; var candidate = ts.normalizePath(ts.combinePaths(nodeModulesFolder, moduleName)); var result = loadNodeModuleFromFile(candidate, /* loadOnlyDts */ true, failedLookupLocations, host); if (result) { - return { resolvedFileName: result, failedLookupLocations: failedLookupLocations }; + return { resolvedModule: { resolvedFileName: result, isExternalLibraryImport: true }, failedLookupLocations: failedLookupLocations }; } result = loadNodeModuleFromDirectory(candidate, /* loadOnlyDts */ true, failedLookupLocations, host); if (result) { - return { resolvedFileName: result, failedLookupLocations: failedLookupLocations }; + return { resolvedModule: { resolvedFileName: result, isExternalLibraryImport: true }, failedLookupLocations: failedLookupLocations }; } } var parentPath = ts.getDirectoryPath(directory); @@ -35219,39 +35391,16 @@ var ts; } directory = parentPath; } - return { resolvedFileName: undefined, failedLookupLocations: failedLookupLocations }; + return { resolvedModule: undefined, failedLookupLocations: failedLookupLocations }; } - function baseUrlModuleNameResolver(moduleName, containingFile, baseUrl, host) { - ts.Debug.assert(baseUrl !== undefined); - var normalizedModuleName = ts.normalizeSlashes(moduleName); - var basePart = useBaseUrl(moduleName) ? baseUrl : ts.getDirectoryPath(containingFile); - var candidate = ts.normalizePath(ts.combinePaths(basePart, moduleName)); - var failedLookupLocations = []; - return ts.forEach(ts.supportedExtensions, function (ext) { return tryLoadFile(candidate + ext); }) || { resolvedFileName: undefined, failedLookupLocations: failedLookupLocations }; - function tryLoadFile(location) { - if (host.fileExists(location)) { - return { resolvedFileName: location, failedLookupLocations: failedLookupLocations }; - } - else { - failedLookupLocations.push(location); - return undefined; - } - } - } - ts.baseUrlModuleNameResolver = baseUrlModuleNameResolver; function nameStartsWithDotSlashOrDotDotSlash(name) { var i = name.lastIndexOf("./", 1); return i === 0 || (i === 1 && name.charCodeAt(0) === 46 /* dot */); } - function useBaseUrl(moduleName) { - // path is not rooted - // module name does not start with './' or '../' - return ts.getRootLength(moduleName) === 0 && !nameStartsWithDotSlashOrDotDotSlash(moduleName); - } function classicNameResolver(moduleName, containingFile, compilerOptions, host) { // module names that contain '!' are used to reference resources and are not resolved to actual files on disk if (moduleName.indexOf('!') != -1) { - return { resolvedFileName: undefined, failedLookupLocations: [] }; + return { resolvedModule: undefined, failedLookupLocations: [] }; } var searchPath = ts.getDirectoryPath(containingFile); var searchName; @@ -35282,7 +35431,9 @@ var ts; } searchPath = parentPath; } - return { resolvedFileName: referencedSourceFile, failedLookupLocations: failedLookupLocations }; + return referencedSourceFile + ? { resolvedModule: { resolvedFileName: referencedSourceFile }, failedLookupLocations: failedLookupLocations } + : { resolvedModule: undefined, failedLookupLocations: failedLookupLocations }; } ts.classicNameResolver = classicNameResolver; /* @internal */ @@ -35399,7 +35550,8 @@ var ts; function createProgram(rootNames, options, host, oldProgram) { var program; var files = []; - var diagnostics = ts.createDiagnosticCollection(); + var fileProcessingDiagnostics = ts.createDiagnosticCollection(); + var programDiagnostics = ts.createDiagnosticCollection(); var commonSourceDirectory; var diagnosticsProducingTypeChecker; var noDiagnosticsTypeChecker; @@ -35407,8 +35559,9 @@ var ts; var skipDefaultLib = options.noLib; var start = new Date().getTime(); host = host || createCompilerHost(options); - var resolveModuleNamesWorker = host.resolveModuleNames || - (function (moduleNames, containingFile) { return ts.map(moduleNames, function (moduleName) { return resolveModuleName(moduleName, containingFile, options, host).resolvedFileName; }); }); + var resolveModuleNamesWorker = host.resolveModuleNames + ? (function (moduleNames, containingFile) { return host.resolveModuleNames(moduleNames, containingFile); }) + : (function (moduleNames, containingFile) { return ts.map(moduleNames, function (moduleName) { return resolveModuleName(moduleName, containingFile, options, host).resolvedModule; }); }); var filesByName = ts.createFileMap(function (fileName) { return host.getCanonicalFileName(fileName); }); if (oldProgram) { // check properties that can affect structure of the program or module resolution strategy @@ -35455,7 +35608,8 @@ var ts; getNodeCount: function () { return getDiagnosticsProducingTypeChecker().getNodeCount(); }, getIdentifierCount: function () { return getDiagnosticsProducingTypeChecker().getIdentifierCount(); }, getSymbolCount: function () { return getDiagnosticsProducingTypeChecker().getSymbolCount(); }, - getTypeCount: function () { return getDiagnosticsProducingTypeChecker().getTypeCount(); } + getTypeCount: function () { return getDiagnosticsProducingTypeChecker().getTypeCount(); }, + getFileProcessingDiagnostics: function () { return fileProcessingDiagnostics; } }; return program; function getClassifiableNames() { @@ -35482,6 +35636,7 @@ var ts; } // check if program source files has changed in the way that can affect structure of the program var newSourceFiles = []; + var modifiedSourceFiles = []; for (var _i = 0, _a = oldProgram.getSourceFiles(); _i < _a.length; _i++) { var oldSourceFile = _a[_i]; var newSourceFile = host.getSourceFile(oldSourceFile.fileName, options.target); @@ -35510,14 +35665,21 @@ var ts; var resolutions = resolveModuleNamesWorker(moduleNames, newSourceFile.fileName); // ensure that module resolution results are still correct for (var i = 0; i < moduleNames.length; ++i) { - var oldResolution = ts.getResolvedModuleFileName(oldSourceFile, moduleNames[i]); - if (oldResolution !== resolutions[i]) { + var newResolution = resolutions[i]; + var oldResolution = ts.getResolvedModule(oldSourceFile, moduleNames[i]); + var resolutionChanged = oldResolution + ? !newResolution || + oldResolution.resolvedFileName !== newResolution.resolvedFileName || + !!oldResolution.isExternalLibraryImport !== !!newResolution.isExternalLibraryImport + : newResolution; + if (resolutionChanged) { return false; } } } // pass the cache of module resolutions from the old source file newSourceFile.resolvedModules = oldSourceFile.resolvedModules; + modifiedSourceFiles.push(newSourceFile); } else { // file has no changes - use it as is @@ -35532,6 +35694,11 @@ var ts; filesByName.set(file.fileName, file); } files = newSourceFiles; + fileProcessingDiagnostics = oldProgram.getFileProcessingDiagnostics(); + for (var _c = 0; _c < modifiedSourceFiles.length; _c++) { + var modifiedFile = modifiedSourceFiles[_c]; + fileProcessingDiagnostics.reattachFileDiagnostics(modifiedFile); + } oldProgram.structureIsReused = true; return true; } @@ -35633,8 +35800,9 @@ var ts; ts.Debug.assert(!!sourceFile.bindDiagnostics); var bindDiagnostics = sourceFile.bindDiagnostics; var checkDiagnostics = typeChecker.getDiagnostics(sourceFile, cancellationToken); - var programDiagnostics = diagnostics.getDiagnostics(sourceFile.fileName); - return bindDiagnostics.concat(checkDiagnostics).concat(programDiagnostics); + var fileProcessingDiagnosticsInFile = fileProcessingDiagnostics.getDiagnostics(sourceFile.fileName); + var programDiagnosticsInFile = programDiagnostics.getDiagnostics(sourceFile.fileName); + return bindDiagnostics.concat(checkDiagnostics).concat(fileProcessingDiagnosticsInFile).concat(programDiagnosticsInFile); }); } function getDeclarationDiagnosticsForFile(sourceFile, cancellationToken) { @@ -35649,7 +35817,8 @@ var ts; } function getOptionsDiagnostics() { var allDiagnostics = []; - ts.addRange(allDiagnostics, diagnostics.getGlobalDiagnostics()); + ts.addRange(allDiagnostics, fileProcessingDiagnostics.getGlobalDiagnostics()); + ts.addRange(allDiagnostics, programDiagnostics.getGlobalDiagnostics()); return ts.sortAndDeduplicateDiagnostics(allDiagnostics); } function getGlobalDiagnostics() { @@ -35747,10 +35916,10 @@ var ts; } if (diagnostic) { if (refFile !== undefined && refEnd !== undefined && refPos !== undefined) { - diagnostics.add(ts.createFileDiagnostic.apply(void 0, [refFile, refPos, refEnd - refPos, diagnostic].concat(diagnosticArgument))); + fileProcessingDiagnostics.add(ts.createFileDiagnostic.apply(void 0, [refFile, refPos, refEnd - refPos, diagnostic].concat(diagnosticArgument))); } else { - diagnostics.add(ts.createCompilerDiagnostic.apply(void 0, [diagnostic].concat(diagnosticArgument))); + fileProcessingDiagnostics.add(ts.createCompilerDiagnostic.apply(void 0, [diagnostic].concat(diagnosticArgument))); } } } @@ -35770,10 +35939,10 @@ var ts; // We haven't looked for this file, do so now and cache result var file = host.getSourceFile(fileName, options.target, function (hostErrorMessage) { if (refFile !== undefined && refPos !== undefined && refEnd !== undefined) { - diagnostics.add(ts.createFileDiagnostic(refFile, refPos, refEnd - refPos, ts.Diagnostics.Cannot_read_file_0_Colon_1, fileName, hostErrorMessage)); + fileProcessingDiagnostics.add(ts.createFileDiagnostic(refFile, refPos, refEnd - refPos, 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)); + fileProcessingDiagnostics.add(ts.createCompilerDiagnostic(ts.Diagnostics.Cannot_read_file_0_Colon_1, fileName, hostErrorMessage)); } }); filesByName.set(canonicalName, file); @@ -35803,10 +35972,10 @@ var ts; var sourceFileName = useAbsolutePath ? ts.getNormalizedAbsolutePath(file.fileName, host.getCurrentDirectory()) : file.fileName; if (canonicalName !== sourceFileName) { if (refFile !== undefined && refPos !== undefined && refEnd !== undefined) { - diagnostics.add(ts.createFileDiagnostic(refFile, refPos, refEnd - refPos, ts.Diagnostics.File_name_0_differs_from_already_included_file_name_1_only_in_casing, fileName, sourceFileName)); + fileProcessingDiagnostics.add(ts.createFileDiagnostic(refFile, refPos, refEnd - refPos, ts.Diagnostics.File_name_0_differs_from_already_included_file_name_1_only_in_casing, fileName, sourceFileName)); } else { - diagnostics.add(ts.createCompilerDiagnostic(ts.Diagnostics.File_name_0_differs_from_already_included_file_name_1_only_in_casing, fileName, sourceFileName)); + fileProcessingDiagnostics.add(ts.createCompilerDiagnostic(ts.Diagnostics.File_name_0_differs_from_already_included_file_name_1_only_in_casing, fileName, sourceFileName)); } } } @@ -35827,9 +35996,23 @@ var ts; var resolutions = resolveModuleNamesWorker(moduleNames, file.fileName); for (var i = 0; i < file.imports.length; ++i) { var resolution = resolutions[i]; - ts.setResolvedModuleName(file, moduleNames[i], resolution); + ts.setResolvedModule(file, moduleNames[i], resolution); if (resolution && !options.noResolve) { - findModuleSourceFile(resolution, file.imports[i]); + var importedFile = findModuleSourceFile(resolution.resolvedFileName, file.imports[i]); + if (importedFile && resolution.isExternalLibraryImport) { + if (!ts.isExternalModule(importedFile)) { + var start_2 = ts.getTokenPosOfNode(file.imports[i], file); + fileProcessingDiagnostics.add(ts.createFileDiagnostic(file, start_2, file.imports[i].end - start_2, ts.Diagnostics.Exported_external_package_typings_file_0_is_not_a_module_Please_contact_the_package_author_to_update_the_package_definition, importedFile.fileName)); + } + else if (!ts.fileExtensionIs(importedFile.fileName, ".d.ts")) { + var start_3 = ts.getTokenPosOfNode(file.imports[i], file); + fileProcessingDiagnostics.add(ts.createFileDiagnostic(file, start_3, file.imports[i].end - start_3, ts.Diagnostics.Exported_external_package_typings_can_only_be_in_d_ts_files_Please_contact_the_package_author_to_update_the_package_definition)); + } + else if (importedFile.referencedFiles.length) { + var firstRef = importedFile.referencedFiles[0]; + fileProcessingDiagnostics.add(ts.createFileDiagnostic(importedFile, firstRef.pos, firstRef.end - firstRef.pos, ts.Diagnostics.Exported_external_package_typings_file_cannot_contain_tripleslash_references_Please_contact_the_package_author_to_update_the_package_definition)); + } + } } } } @@ -35839,7 +36022,7 @@ var ts; } return; function findModuleSourceFile(fileName, nameLiteral) { - return findSourceFile(fileName, /* isDefaultLib */ false, file, nameLiteral.pos, nameLiteral.end); + return findSourceFile(fileName, /* isDefaultLib */ false, file, ts.skipTrivia(file.text, nameLiteral.pos), nameLiteral.end); } } function computeCommonSourceDirectory(sourceFiles) { @@ -35860,7 +36043,7 @@ var ts; for (var i = 0, n = Math.min(commonPathComponents.length, sourcePathComponents.length); i < n; 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)); + programDiagnostics.add(ts.createCompilerDiagnostic(ts.Diagnostics.Cannot_find_the_common_subdirectory_path_for_the_input_files)); return; } // New common path found that is 0 -> i-1 @@ -35885,7 +36068,7 @@ var ts; if (!ts.isDeclarationFile(sourceFile)) { var absoluteSourceFilePath = host.getCanonicalFileName(ts.getNormalizedAbsolutePath(sourceFile.fileName, currentDirectory)); if (absoluteSourceFilePath.indexOf(absoluteRootDirectoryPath) !== 0) { - diagnostics.add(ts.createCompilerDiagnostic(ts.Diagnostics.File_0_is_not_under_rootDir_1_rootDir_is_expected_to_contain_all_source_files, sourceFile.fileName, options.rootDir)); + programDiagnostics.add(ts.createCompilerDiagnostic(ts.Diagnostics.File_0_is_not_under_rootDir_1_rootDir_is_expected_to_contain_all_source_files, sourceFile.fileName, options.rootDir)); allFilesBelongToPath = false; } } @@ -35896,44 +36079,44 @@ var ts; function verifyCompilerOptions() { if (options.isolatedModules) { if (options.declaration) { - diagnostics.add(ts.createCompilerDiagnostic(ts.Diagnostics.Option_0_cannot_be_specified_with_option_1, "declaration", "isolatedModules")); + programDiagnostics.add(ts.createCompilerDiagnostic(ts.Diagnostics.Option_0_cannot_be_specified_with_option_1, "declaration", "isolatedModules")); } if (options.noEmitOnError) { - diagnostics.add(ts.createCompilerDiagnostic(ts.Diagnostics.Option_0_cannot_be_specified_with_option_1, "noEmitOnError", "isolatedModules")); + programDiagnostics.add(ts.createCompilerDiagnostic(ts.Diagnostics.Option_0_cannot_be_specified_with_option_1, "noEmitOnError", "isolatedModules")); } if (options.out) { - diagnostics.add(ts.createCompilerDiagnostic(ts.Diagnostics.Option_0_cannot_be_specified_with_option_1, "out", "isolatedModules")); + programDiagnostics.add(ts.createCompilerDiagnostic(ts.Diagnostics.Option_0_cannot_be_specified_with_option_1, "out", "isolatedModules")); } if (options.outFile) { - diagnostics.add(ts.createCompilerDiagnostic(ts.Diagnostics.Option_0_cannot_be_specified_with_option_1, "outFile", "isolatedModules")); + programDiagnostics.add(ts.createCompilerDiagnostic(ts.Diagnostics.Option_0_cannot_be_specified_with_option_1, "outFile", "isolatedModules")); } } if (options.inlineSourceMap) { if (options.sourceMap) { - diagnostics.add(ts.createCompilerDiagnostic(ts.Diagnostics.Option_0_cannot_be_specified_with_option_1, "sourceMap", "inlineSourceMap")); + programDiagnostics.add(ts.createCompilerDiagnostic(ts.Diagnostics.Option_0_cannot_be_specified_with_option_1, "sourceMap", "inlineSourceMap")); } if (options.mapRoot) { - diagnostics.add(ts.createCompilerDiagnostic(ts.Diagnostics.Option_0_cannot_be_specified_with_option_1, "mapRoot", "inlineSourceMap")); + programDiagnostics.add(ts.createCompilerDiagnostic(ts.Diagnostics.Option_0_cannot_be_specified_with_option_1, "mapRoot", "inlineSourceMap")); } if (options.sourceRoot) { - diagnostics.add(ts.createCompilerDiagnostic(ts.Diagnostics.Option_0_cannot_be_specified_with_option_1, "sourceRoot", "inlineSourceMap")); + programDiagnostics.add(ts.createCompilerDiagnostic(ts.Diagnostics.Option_0_cannot_be_specified_with_option_1, "sourceRoot", "inlineSourceMap")); } } if (options.inlineSources) { if (!options.sourceMap && !options.inlineSourceMap) { - diagnostics.add(ts.createCompilerDiagnostic(ts.Diagnostics.Option_inlineSources_can_only_be_used_when_either_option_inlineSourceMap_or_option_sourceMap_is_provided)); + programDiagnostics.add(ts.createCompilerDiagnostic(ts.Diagnostics.Option_inlineSources_can_only_be_used_when_either_option_inlineSourceMap_or_option_sourceMap_is_provided)); } } if (options.out && options.outFile) { - diagnostics.add(ts.createCompilerDiagnostic(ts.Diagnostics.Option_0_cannot_be_specified_with_option_1, "out", "outFile")); + programDiagnostics.add(ts.createCompilerDiagnostic(ts.Diagnostics.Option_0_cannot_be_specified_with_option_1, "out", "outFile")); } if (!options.sourceMap && (options.mapRoot || options.sourceRoot)) { // Error to specify --mapRoot or --sourceRoot without mapSourceFiles if (options.mapRoot) { - diagnostics.add(ts.createCompilerDiagnostic(ts.Diagnostics.Option_0_cannot_be_specified_without_specifying_option_1, "mapRoot", "sourceMap")); + programDiagnostics.add(ts.createCompilerDiagnostic(ts.Diagnostics.Option_0_cannot_be_specified_without_specifying_option_1, "mapRoot", "sourceMap")); } if (options.sourceRoot) { - diagnostics.add(ts.createCompilerDiagnostic(ts.Diagnostics.Option_0_cannot_be_specified_without_specifying_option_1, "sourceRoot", "sourceMap")); + programDiagnostics.add(ts.createCompilerDiagnostic(ts.Diagnostics.Option_0_cannot_be_specified_without_specifying_option_1, "sourceRoot", "sourceMap")); } return; } @@ -35942,22 +36125,22 @@ var ts; var firstExternalModuleSourceFile = ts.forEach(files, function (f) { return ts.isExternalModule(f) ? f : undefined; }); if (options.isolatedModules) { if (!options.module && languageVersion < 2 /* ES6 */) { - diagnostics.add(ts.createCompilerDiagnostic(ts.Diagnostics.Option_isolatedModules_can_only_be_used_when_either_option_module_is_provided_or_option_target_is_ES6_or_higher)); + programDiagnostics.add(ts.createCompilerDiagnostic(ts.Diagnostics.Option_isolatedModules_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_namespaces_when_the_isolatedModules_flag_is_provided)); + programDiagnostics.add(ts.createFileDiagnostic(firstNonExternalModuleSourceFile, span.start, span.length, ts.Diagnostics.Cannot_compile_namespaces_when_the_isolatedModules_flag_is_provided)); } } else if (firstExternalModuleSourceFile && languageVersion < 2 /* ES6 */ && !options.module) { // We cannot use createDiagnosticFromNode because nodes do not have parents yet var span = ts.getErrorSpanForNode(firstExternalModuleSourceFile, firstExternalModuleSourceFile.externalModuleIndicator); - diagnostics.add(ts.createFileDiagnostic(firstExternalModuleSourceFile, span.start, span.length, ts.Diagnostics.Cannot_compile_modules_unless_the_module_flag_is_provided)); + programDiagnostics.add(ts.createFileDiagnostic(firstExternalModuleSourceFile, span.start, span.length, ts.Diagnostics.Cannot_compile_modules_unless_the_module_flag_is_provided)); } // Cannot specify module gen target when in es6 or above if (options.module && languageVersion >= 2 /* ES6 */) { - diagnostics.add(ts.createCompilerDiagnostic(ts.Diagnostics.Cannot_compile_modules_into_commonjs_amd_system_or_umd_when_targeting_ES6_or_higher)); + programDiagnostics.add(ts.createCompilerDiagnostic(ts.Diagnostics.Cannot_compile_modules_into_commonjs_amd_system_or_umd_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 @@ -35982,25 +36165,25 @@ var ts; } if (options.noEmit) { if (options.out) { - diagnostics.add(ts.createCompilerDiagnostic(ts.Diagnostics.Option_0_cannot_be_specified_with_option_1, "noEmit", "out")); + programDiagnostics.add(ts.createCompilerDiagnostic(ts.Diagnostics.Option_0_cannot_be_specified_with_option_1, "noEmit", "out")); } if (options.outFile) { - diagnostics.add(ts.createCompilerDiagnostic(ts.Diagnostics.Option_0_cannot_be_specified_with_option_1, "noEmit", "outFile")); + programDiagnostics.add(ts.createCompilerDiagnostic(ts.Diagnostics.Option_0_cannot_be_specified_with_option_1, "noEmit", "outFile")); } if (options.outDir) { - diagnostics.add(ts.createCompilerDiagnostic(ts.Diagnostics.Option_0_cannot_be_specified_with_option_1, "noEmit", "outDir")); + programDiagnostics.add(ts.createCompilerDiagnostic(ts.Diagnostics.Option_0_cannot_be_specified_with_option_1, "noEmit", "outDir")); } if (options.declaration) { - diagnostics.add(ts.createCompilerDiagnostic(ts.Diagnostics.Option_0_cannot_be_specified_with_option_1, "noEmit", "declaration")); + programDiagnostics.add(ts.createCompilerDiagnostic(ts.Diagnostics.Option_0_cannot_be_specified_with_option_1, "noEmit", "declaration")); } } if (options.emitDecoratorMetadata && !options.experimentalDecorators) { - diagnostics.add(ts.createCompilerDiagnostic(ts.Diagnostics.Option_0_cannot_be_specified_without_specifying_option_1, "emitDecoratorMetadata", "experimentalDecorators")); + programDiagnostics.add(ts.createCompilerDiagnostic(ts.Diagnostics.Option_0_cannot_be_specified_without_specifying_option_1, "emitDecoratorMetadata", "experimentalDecorators")); } if (options.experimentalAsyncFunctions && options.target !== 2 /* ES6 */) { - diagnostics.add(ts.createCompilerDiagnostic(ts.Diagnostics.Option_experimentalAsyncFunctions_cannot_be_specified_when_targeting_ES5_or_lower)); + programDiagnostics.add(ts.createCompilerDiagnostic(ts.Diagnostics.Option_experimentalAsyncFunctions_cannot_be_specified_when_targeting_ES5_or_lower)); } } } @@ -36251,8 +36434,8 @@ var ts; "node": 2 /* NodeJs */, "classic": 1 /* Classic */ }, - experimental: true, - description: ts.Diagnostics.Specifies_module_resolution_strategy_Colon_node_Node_or_classic_TypeScript_pre_1_6 + description: ts.Diagnostics.Specifies_module_resolution_strategy_Colon_node_Node_js_or_classic_TypeScript_pre_1_6, + error: ts.Diagnostics.Argument_for_moduleResolution_option_must_be_node_or_classic } ]; var optionNameMapCache; @@ -36374,10 +36557,10 @@ var ts; * Read tsconfig.json file * @param fileName The path to the config file */ - function readConfigFile(fileName) { + function readConfigFile(fileName, readFile) { var text = ""; try { - text = ts.sys.readFile(fileName); + text = readFile(fileName); } catch (e) { return { error: ts.createCompilerDiagnostic(ts.Diagnostics.Cannot_read_file_0_Colon_1, fileName, e.message) }; @@ -38721,7 +38904,7 @@ var ts; function findPrecedingToken(position, sourceFile, startNode) { return find(startNode || sourceFile); function findRightmostToken(n) { - if (isToken(n)) { + if (isToken(n) || n.kind === 234 /* JsxText */) { return n; } var children = n.getChildren(); @@ -38729,23 +38912,32 @@ var ts; return candidate && findRightmostToken(candidate); } function find(n) { - if (isToken(n)) { + if (isToken(n) || n.kind === 234 /* JsxText */) { 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) { - // 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); - return candidate && findRightmostToken(candidate); - } - else { - // candidate should be in this node - return find(child); - } + // condition 'position < child.end' checks if child node end after the position + // in the example below this condition will be false for 'aaaa' and 'bbbb' and true for 'ccc' + // aaaa___bbbb___$__ccc + // after we found child node with end after the position we check if start of the node is after the position. + // if yes - then position is in the trivia and we need to look into the previous child to find the token in question. + // if no - position is in the node itself so we should recurse in it. + // NOTE: JsxText is a weird kind of node that can contain only whitespaces (since they are not counted as trivia). + // if this is the case - then we should assume that token in question is located in previous child. + if (position < child.end && (nodeHasTokens(child) || child.kind === 234 /* JsxText */)) { + var start = child.getStart(sourceFile); + var lookInPreviousChild = (start >= position) || + (child.kind === 234 /* JsxText */ && start === child.end); // whitespace only JsxText + if (lookInPreviousChild) { + // 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); + return candidate && findRightmostToken(candidate); + } + else { + // candidate should be in this node + return find(child); } } } @@ -39162,6 +39354,7 @@ var ts; ScanAction[ScanAction["RescanGreaterThanToken"] = 1] = "RescanGreaterThanToken"; ScanAction[ScanAction["RescanSlashToken"] = 2] = "RescanSlashToken"; ScanAction[ScanAction["RescanTemplateToken"] = 3] = "RescanTemplateToken"; + ScanAction[ScanAction["RescanJsxIdentifier"] = 4] = "RescanJsxIdentifier"; })(ScanAction || (ScanAction = {})); function getFormattingScanner(sourceFile, startPos, endPos) { scanner.setText(sourceFile.text); @@ -39235,6 +39428,18 @@ var ts; } return false; } + function shouldRescanJsxIdentifier(node) { + if (node.parent) { + switch (node.parent.kind) { + case 236 /* JsxAttribute */: + case 233 /* JsxOpeningElement */: + case 235 /* JsxClosingElement */: + case 232 /* JsxSelfClosingElement */: + return node.kind === 67 /* Identifier */; + } + } + return false; + } function shouldRescanSlashToken(container) { return container.kind === 10 /* RegularExpressionLiteral */; } @@ -39262,7 +39467,9 @@ var ts; ? 2 /* RescanSlashToken */ : shouldRescanTemplateToken(n) ? 3 /* RescanTemplateToken */ - : 0 /* Scan */; + : shouldRescanJsxIdentifier(n) + ? 4 /* RescanJsxIdentifier */ + : 0 /* Scan */; if (lastTokenInfo && expectedScanAction === lastScanAction) { // readTokenInfo was called before with the same expected scan action. // No need to re-scan text, return existing 'lastTokenInfo' @@ -39293,6 +39500,10 @@ var ts; currentToken = scanner.reScanTemplateToken(); lastScanAction = 3 /* RescanTemplateToken */; } + else if (expectedScanAction === 4 /* RescanJsxIdentifier */ && currentToken === 67 /* Identifier */) { + currentToken = scanner.scanJsxIdentifier(); + lastScanAction = 4 /* RescanJsxIdentifier */; + } else { lastScanAction = 0 /* Scan */; } @@ -39633,7 +39844,7 @@ var ts; this.FunctionOpenBraceLeftTokenRange = formatting.Shared.TokenRange.AnyIncludingMultilineComments; this.SpaceBeforeOpenBraceInFunction = new formatting.Rule(formatting.RuleDescriptor.create2(this.FunctionOpenBraceLeftTokenRange, 15 /* OpenBraceToken */), formatting.RuleOperation.create2(new formatting.RuleOperationContext(Rules.IsFunctionDeclContext, Rules.IsBeforeBlockContext, Rules.IsNotFormatOnEnter, Rules.IsSameLineTokenOrBeforeMultilineBlockContext), 2 /* Space */), 1 /* CanDeleteNewLines */); // Place a space before open brace in a TypeScript declaration that has braces as children (class, module, enum, etc) - this.TypeScriptOpenBraceLeftTokenRange = formatting.Shared.TokenRange.FromTokens([67 /* Identifier */, 3 /* MultiLineCommentTrivia */]); + this.TypeScriptOpenBraceLeftTokenRange = formatting.Shared.TokenRange.FromTokens([67 /* Identifier */, 3 /* MultiLineCommentTrivia */, 71 /* ClassKeyword */]); this.SpaceBeforeOpenBraceInTypeScriptDeclWithBlock = new formatting.Rule(formatting.RuleDescriptor.create2(this.TypeScriptOpenBraceLeftTokenRange, 15 /* OpenBraceToken */), formatting.RuleOperation.create2(new formatting.RuleOperationContext(Rules.IsTypeScriptDeclWithBlockContext, Rules.IsNotFormatOnEnter, Rules.IsSameLineTokenOrBeforeMultilineBlockContext), 2 /* Space */), 1 /* CanDeleteNewLines */); // Place a space before open brace in a control flow construct this.ControlOpenBraceLeftTokenRange = formatting.Shared.TokenRange.FromTokens([18 /* CloseParenToken */, 3 /* MultiLineCommentTrivia */, 77 /* DoKeyword */, 98 /* TryKeyword */, 83 /* FinallyKeyword */, 78 /* ElseKeyword */]); @@ -39666,7 +39877,7 @@ var ts; this.SpaceAfterSubtractWhenFollowedByUnaryMinus = new formatting.Rule(formatting.RuleDescriptor.create1(36 /* MinusToken */, 36 /* MinusToken */), formatting.RuleOperation.create2(new formatting.RuleOperationContext(Rules.IsSameLineTokenContext, Rules.IsBinaryOpContext), 2 /* Space */)); this.SpaceAfterSubtractWhenFollowedByPredecrement = new formatting.Rule(formatting.RuleDescriptor.create1(36 /* MinusToken */, 41 /* MinusMinusToken */), formatting.RuleOperation.create2(new formatting.RuleOperationContext(Rules.IsSameLineTokenContext, Rules.IsBinaryOpContext), 2 /* Space */)); this.NoSpaceBeforeComma = new formatting.Rule(formatting.RuleDescriptor.create2(formatting.Shared.TokenRange.Any, 24 /* CommaToken */), formatting.RuleOperation.create2(new formatting.RuleOperationContext(Rules.IsSameLineTokenContext), 8 /* Delete */)); - this.SpaceAfterCertainKeywords = new formatting.Rule(formatting.RuleDescriptor.create4(formatting.Shared.TokenRange.FromTokens([100 /* VarKeyword */, 96 /* ThrowKeyword */, 90 /* NewKeyword */, 76 /* DeleteKeyword */, 92 /* ReturnKeyword */, 99 /* TypeOfKeyword */]), formatting.Shared.TokenRange.Any), formatting.RuleOperation.create2(new formatting.RuleOperationContext(Rules.IsSameLineTokenContext), 2 /* Space */)); + this.SpaceAfterCertainKeywords = new formatting.Rule(formatting.RuleDescriptor.create4(formatting.Shared.TokenRange.FromTokens([100 /* VarKeyword */, 96 /* ThrowKeyword */, 90 /* NewKeyword */, 76 /* DeleteKeyword */, 92 /* ReturnKeyword */, 99 /* TypeOfKeyword */, 117 /* AwaitKeyword */]), formatting.Shared.TokenRange.Any), formatting.RuleOperation.create2(new formatting.RuleOperationContext(Rules.IsSameLineTokenContext), 2 /* Space */)); this.SpaceAfterLetConstInVariableDeclaration = new formatting.Rule(formatting.RuleDescriptor.create4(formatting.Shared.TokenRange.FromTokens([106 /* LetKeyword */, 72 /* ConstKeyword */]), formatting.Shared.TokenRange.Any), formatting.RuleOperation.create2(new formatting.RuleOperationContext(Rules.IsSameLineTokenContext, Rules.IsStartOfVariableDeclarationList), 2 /* Space */)); this.NoSpaceBeforeOpenParenInFuncCall = new formatting.Rule(formatting.RuleDescriptor.create2(formatting.Shared.TokenRange.Any, 17 /* OpenParenToken */), formatting.RuleOperation.create2(new formatting.RuleOperationContext(Rules.IsSameLineTokenContext, Rules.IsFunctionCallOrNewContext, Rules.IsPreviousTokenNotComma), 8 /* Delete */)); this.SpaceAfterFunctionInFuncDecl = new formatting.Rule(formatting.RuleDescriptor.create3(85 /* FunctionKeyword */, formatting.Shared.TokenRange.Any), formatting.RuleOperation.create2(new formatting.RuleOperationContext(Rules.IsFunctionDeclContext), 2 /* Space */)); @@ -39690,7 +39901,7 @@ var ts; // Use of module as a function call. e.g.: import m2 = module("m2"); this.NoSpaceAfterModuleImport = new formatting.Rule(formatting.RuleDescriptor.create2(formatting.Shared.TokenRange.FromTokens([123 /* ModuleKeyword */, 125 /* RequireKeyword */]), 17 /* OpenParenToken */), formatting.RuleOperation.create2(new formatting.RuleOperationContext(Rules.IsSameLineTokenContext), 8 /* Delete */)); // Add a space around certain TypeScript keywords - this.SpaceAfterCertainTypeScriptKeywords = new formatting.Rule(formatting.RuleDescriptor.create4(formatting.Shared.TokenRange.FromTokens([113 /* AbstractKeyword */, 71 /* ClassKeyword */, 120 /* DeclareKeyword */, 75 /* DefaultKeyword */, 79 /* EnumKeyword */, 80 /* ExportKeyword */, 81 /* ExtendsKeyword */, 121 /* GetKeyword */, 104 /* ImplementsKeyword */, 87 /* ImportKeyword */, 105 /* InterfaceKeyword */, 123 /* ModuleKeyword */, 124 /* NamespaceKeyword */, 108 /* PrivateKeyword */, 110 /* PublicKeyword */, 109 /* ProtectedKeyword */, 127 /* SetKeyword */, 111 /* StaticKeyword */]), formatting.Shared.TokenRange.Any), formatting.RuleOperation.create2(new formatting.RuleOperationContext(Rules.IsSameLineTokenContext), 2 /* Space */)); + this.SpaceAfterCertainTypeScriptKeywords = new formatting.Rule(formatting.RuleDescriptor.create4(formatting.Shared.TokenRange.FromTokens([113 /* AbstractKeyword */, 71 /* ClassKeyword */, 120 /* DeclareKeyword */, 75 /* DefaultKeyword */, 79 /* EnumKeyword */, 80 /* ExportKeyword */, 81 /* ExtendsKeyword */, 121 /* GetKeyword */, 104 /* ImplementsKeyword */, 87 /* ImportKeyword */, 105 /* InterfaceKeyword */, 123 /* ModuleKeyword */, 124 /* NamespaceKeyword */, 108 /* PrivateKeyword */, 110 /* PublicKeyword */, 109 /* ProtectedKeyword */, 127 /* SetKeyword */, 111 /* StaticKeyword */, 130 /* TypeKeyword */]), formatting.Shared.TokenRange.Any), formatting.RuleOperation.create2(new formatting.RuleOperationContext(Rules.IsSameLineTokenContext), 2 /* Space */)); this.SpaceBeforeCertainTypeScriptKeywords = new formatting.Rule(formatting.RuleDescriptor.create4(formatting.Shared.TokenRange.Any, formatting.Shared.TokenRange.FromTokens([81 /* ExtendsKeyword */, 104 /* ImplementsKeyword */])), formatting.RuleOperation.create2(new formatting.RuleOperationContext(Rules.IsSameLineTokenContext), 2 /* Space */)); // Treat string literals in module names as identifiers, and add a space between the literal and the opening Brace braces, e.g.: module "m2" { this.SpaceAfterModuleName = new formatting.Rule(formatting.RuleDescriptor.create1(9 /* StringLiteral */, 15 /* OpenBraceToken */), formatting.RuleOperation.create2(new formatting.RuleOperationContext(Rules.IsModuleDeclContext), 2 /* Space */)); @@ -39718,20 +39929,8 @@ var ts; this.SpaceBetweenYieldOrYieldStarAndOperand = new formatting.Rule(formatting.RuleDescriptor.create4(formatting.Shared.TokenRange.FromTokens([112 /* YieldKeyword */, 37 /* AsteriskToken */]), formatting.Shared.TokenRange.Any), formatting.RuleOperation.create2(new formatting.RuleOperationContext(Rules.IsSameLineTokenContext, Rules.IsYieldOrYieldStarWithOperand), 2 /* Space */)); // Async-await this.SpaceBetweenAsyncAndFunctionKeyword = new formatting.Rule(formatting.RuleDescriptor.create1(116 /* AsyncKeyword */, 85 /* FunctionKeyword */), formatting.RuleOperation.create2(new formatting.RuleOperationContext(Rules.IsSameLineTokenContext), 2 /* Space */)); - this.NoSpaceBetweenAsyncAndFunctionKeyword = new formatting.Rule(formatting.RuleDescriptor.create1(116 /* AsyncKeyword */, 85 /* FunctionKeyword */), formatting.RuleOperation.create2(new formatting.RuleOperationContext(Rules.IsSameLineTokenContext), 8 /* Delete */)); - this.SpaceAfterAwaitKeyword = new formatting.Rule(formatting.RuleDescriptor.create3(117 /* AwaitKeyword */, formatting.Shared.TokenRange.Any), formatting.RuleOperation.create2(new formatting.RuleOperationContext(Rules.IsSameLineTokenContext), 2 /* Space */)); - this.NoSpaceAfterAwaitKeyword = new formatting.Rule(formatting.RuleDescriptor.create3(117 /* AwaitKeyword */, formatting.Shared.TokenRange.Any), formatting.RuleOperation.create2(new formatting.RuleOperationContext(Rules.IsSameLineTokenContext), 8 /* Delete */)); - // Type alias declaration - this.SpaceAfterTypeKeyword = new formatting.Rule(formatting.RuleDescriptor.create3(130 /* TypeKeyword */, formatting.Shared.TokenRange.Any), formatting.RuleOperation.create2(new formatting.RuleOperationContext(Rules.IsSameLineTokenContext), 2 /* Space */)); - this.NoSpaceAfterTypeKeyword = new formatting.Rule(formatting.RuleDescriptor.create3(130 /* TypeKeyword */, formatting.Shared.TokenRange.Any), formatting.RuleOperation.create2(new formatting.RuleOperationContext(Rules.IsSameLineTokenContext), 8 /* Delete */)); // template string this.SpaceBetweenTagAndTemplateString = new formatting.Rule(formatting.RuleDescriptor.create3(67 /* Identifier */, formatting.Shared.TokenRange.FromTokens([11 /* NoSubstitutionTemplateLiteral */, 12 /* TemplateHead */])), formatting.RuleOperation.create2(new formatting.RuleOperationContext(Rules.IsSameLineTokenContext), 2 /* Space */)); - this.NoSpaceBetweenTagAndTemplateString = new formatting.Rule(formatting.RuleDescriptor.create3(67 /* Identifier */, formatting.Shared.TokenRange.FromTokens([11 /* NoSubstitutionTemplateLiteral */, 12 /* TemplateHead */])), formatting.RuleOperation.create2(new formatting.RuleOperationContext(Rules.IsSameLineTokenContext), 8 /* Delete */)); - // union type - this.SpaceBeforeBar = new formatting.Rule(formatting.RuleDescriptor.create3(46 /* BarToken */, formatting.Shared.TokenRange.Any), formatting.RuleOperation.create2(new formatting.RuleOperationContext(Rules.IsSameLineTokenContext), 2 /* Space */)); - this.NoSpaceBeforeBar = new formatting.Rule(formatting.RuleDescriptor.create3(46 /* BarToken */, formatting.Shared.TokenRange.Any), formatting.RuleOperation.create2(new formatting.RuleOperationContext(Rules.IsSameLineTokenContext), 8 /* Delete */)); - this.SpaceAfterBar = new formatting.Rule(formatting.RuleDescriptor.create2(formatting.Shared.TokenRange.Any, 46 /* BarToken */), formatting.RuleOperation.create2(new formatting.RuleOperationContext(Rules.IsSameLineTokenContext), 2 /* Space */)); - this.NoSpaceAfterBar = new formatting.Rule(formatting.RuleDescriptor.create2(formatting.Shared.TokenRange.Any, 46 /* BarToken */), formatting.RuleOperation.create2(new formatting.RuleOperationContext(Rules.IsSameLineTokenContext), 8 /* Delete */)); // These rules are higher in priority than user-configurable rules. this.HighPriorityCommonRules = [ @@ -39758,11 +39957,8 @@ var ts; this.NoSpaceBeforeOpenParenInFuncCall, this.SpaceBeforeBinaryKeywordOperator, this.SpaceAfterBinaryKeywordOperator, this.SpaceAfterVoidOperator, - this.SpaceBetweenAsyncAndFunctionKeyword, this.NoSpaceBetweenAsyncAndFunctionKeyword, - this.SpaceAfterAwaitKeyword, this.NoSpaceAfterAwaitKeyword, - this.SpaceAfterTypeKeyword, this.NoSpaceAfterTypeKeyword, - this.SpaceBetweenTagAndTemplateString, this.NoSpaceBetweenTagAndTemplateString, - this.SpaceBeforeBar, this.NoSpaceBeforeBar, this.SpaceAfterBar, this.NoSpaceAfterBar, + this.SpaceBetweenAsyncAndFunctionKeyword, + this.SpaceBetweenTagAndTemplateString, // TypeScript-specific rules this.NoSpaceAfterConstructor, this.NoSpaceAfterModuleImport, this.SpaceAfterCertainTypeScriptKeywords, this.SpaceBeforeCertainTypeScriptKeywords, @@ -39857,6 +40053,8 @@ var ts; case 180 /* ConditionalExpression */: case 187 /* AsExpression */: case 148 /* TypePredicate */: + case 156 /* UnionType */: + case 157 /* IntersectionType */: return true; // equals in binding elements: function foo([[x, y] = [1, 2]]) case 161 /* BindingElement */: @@ -39967,6 +40165,7 @@ var ts; Rules.NodeIsTypeScriptDeclWithBlockContext = function (node) { switch (node.kind) { case 212 /* ClassDeclaration */: + case 184 /* ClassExpression */: case 213 /* InterfaceDeclaration */: case 215 /* EnumDeclaration */: case 153 /* TypeLiteral */: @@ -40813,7 +41012,7 @@ var ts; } function getDynamicIndentation(node, nodeStartLine, indentation, delta) { return { - getIndentationForComment: function (kind) { + getIndentationForComment: function (kind, tokenIndentation) { switch (kind) { // preceding comment to the token that closes the indentation scope inherits the indentation from the scope // .. { @@ -40821,9 +41020,10 @@ var ts; // } case 16 /* CloseBraceToken */: case 20 /* CloseBracketToken */: + case 18 /* CloseParenToken */: return indentation + delta; } - return indentation; + return tokenIndentation !== -1 /* Unknown */ ? tokenIndentation : indentation; }, getIndentationForToken: function (line, kind) { if (nodeStartLine !== line && node.decorators) { @@ -41025,8 +41225,12 @@ var ts; processTrivia(currentTokenInfo.trailingTrivia, parent, childContextNode, dynamicIndentation); } if (indentToken) { - var indentNextTokenOrTrivia = true; + var tokenIndentation = (isTokenInRange && !rangeContainsError(currentTokenInfo.token)) ? + dynamicIndentation.getIndentationForToken(tokenStart.line, currentTokenInfo.token.kind) : + -1 /* Unknown */; if (currentTokenInfo.leadingTrivia) { + var commentIndentation = dynamicIndentation.getIndentationForComment(currentTokenInfo.token.kind, tokenIndentation); + var indentNextTokenOrTrivia = true; for (var _i = 0, _a = currentTokenInfo.leadingTrivia; _i < _a.length; _i++) { var triviaItem = _a[_i]; if (!ts.rangeContainsRange(originalRange, triviaItem)) { @@ -41034,14 +41238,12 @@ var ts; } switch (triviaItem.kind) { case 3 /* MultiLineCommentTrivia */: - var commentIndentation = dynamicIndentation.getIndentationForComment(currentTokenInfo.token.kind); indentMultilineComment(triviaItem, commentIndentation, /*firstLineIsIndented*/ !indentNextTokenOrTrivia); indentNextTokenOrTrivia = false; break; case 2 /* SingleLineCommentTrivia */: if (indentNextTokenOrTrivia) { - var commentIndentation_1 = dynamicIndentation.getIndentationForComment(currentTokenInfo.token.kind); - insertIndentation(triviaItem.pos, commentIndentation_1, /*lineAdded*/ false); + insertIndentation(triviaItem.pos, commentIndentation, /*lineAdded*/ false); indentNextTokenOrTrivia = false; } break; @@ -41052,8 +41254,7 @@ var ts; } } // 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); + if (tokenIndentation !== -1 /* Unknown */) { insertIndentation(currentTokenInfo.token.pos, tokenIndentation, lineAdded); lastIndentedLine = tokenStart.line; indentationOnLastIndentedLine = tokenIndentation; @@ -41704,6 +41905,7 @@ var ts; function nodeContentIsAlwaysIndented(kind) { switch (kind) { case 212 /* ClassDeclaration */: + case 184 /* ClassExpression */: case 213 /* InterfaceDeclaration */: case 215 /* EnumDeclaration */: case 214 /* TypeAliasDeclaration */: @@ -41728,13 +41930,13 @@ var ts; case 160 /* ArrayBindingPattern */: case 159 /* ObjectBindingPattern */: case 231 /* JsxElement */: + case 232 /* JsxSelfClosingElement */: case 140 /* MethodSignature */: case 145 /* CallSignature */: case 146 /* ConstructSignature */: case 136 /* Parameter */: case 150 /* FunctionType */: case 151 /* ConstructorType */: - case 156 /* UnionType */: case 158 /* ParenthesizedType */: case 168 /* TaggedTemplateExpression */: case 176 /* AwaitExpression */: @@ -42858,7 +43060,7 @@ var ts; var sourceMapText; // Create a compilerHost object to allow the compiler to read and write files var compilerHost = { - getSourceFile: function (fileName, target) { return fileName === inputFileName ? sourceFile : undefined; }, + getSourceFile: function (fileName, target) { return fileName === ts.normalizeSlashes(inputFileName) ? sourceFile : undefined; }, writeFile: function (name, text, writeByteOrderMark) { if (ts.fileExtensionIs(name, ".map")) { ts.Debug.assert(sourceMapText === undefined, "Unexpected multiple source map outputs for the file '" + name + "'"); @@ -43106,6 +43308,7 @@ var ts; // // export * from "mod" // export {a as b} from "mod" + // export import i = require("mod") while (token !== 1 /* EndOfFileToken */) { if (token === 120 /* DeclareKeyword */) { // declare module "mod" @@ -43226,6 +43429,25 @@ var ts; } } } + else if (token === 87 /* ImportKeyword */) { + token = scanner.scan(); + if (token === 67 /* Identifier */ || ts.isKeyword(token)) { + token = scanner.scan(); + if (token === 55 /* EqualsToken */) { + token = scanner.scan(); + if (token === 125 /* RequireKeyword */) { + token = scanner.scan(); + if (token === 17 /* OpenParenToken */) { + token = scanner.scan(); + if (token === 9 /* StringLiteral */) { + // export import i = require("mod"); + recordModuleName(); + } + } + } + } + } + } } token = scanner.scan(); } @@ -43929,9 +44151,9 @@ var ts; // 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 && ts.isWord(contextToken.kind)) { - var start_2 = new Date().getTime(); + var start_4 = new Date().getTime(); contextToken = ts.findPrecedingToken(contextToken.getFullStart(), sourceFile); - log("getCompletionData: Get previous token 2: " + (new Date().getTime() - start_2)); + log("getCompletionData: Get previous token 2: " + (new Date().getTime() - start_4)); } // Find the node where completion is requested on. // Also determine whether we are trying to complete with members of that node @@ -44179,13 +44401,13 @@ var ts; if (contextToken.kind === 9 /* StringLiteral */ || contextToken.kind === 10 /* RegularExpressionLiteral */ || ts.isTemplateLiteralKind(contextToken.kind)) { - var start_3 = contextToken.getStart(); + var start_5 = contextToken.getStart(); var end = contextToken.getEnd(); // To be "in" one of these literals, the position has to be: // 1. entirely within the token text. // 2. at the end position of an unterminated token. // 3. at the end of a regular expression (due to trailing flags like '/foo/g'). - if (start_3 < position && position < end) { + if (start_5 < position && position < end) { return true; } if (position === end) { @@ -46349,6 +46571,7 @@ var ts; result.push(getReferenceEntryFromNode(node)); } break; + case 184 /* ClassExpression */: case 212 /* ClassDeclaration */: // Make sure the container belongs to the same class // and has the appropriate static modifier from the original container. @@ -48557,7 +48780,10 @@ var ts; if ("getModuleResolutionsForFile" in this.shimHost) { this.resolveModuleNames = function (moduleNames, containingFile) { var resolutionsInFile = JSON.parse(_this.shimHost.getModuleResolutionsForFile(containingFile)); - return ts.map(moduleNames, function (name) { return ts.lookUp(resolutionsInFile, name); }); + return ts.map(moduleNames, function (name) { + var result = ts.lookUp(resolutionsInFile, name); + return result ? { resolvedFileName: result } : undefined; + }); }; } } @@ -49104,7 +49330,11 @@ var ts; var _this = this; return this.forwardJSONCall("resolveModuleName('" + fileName + "')", function () { var compilerOptions = JSON.parse(compilerOptionsJson); - return ts.resolveModuleName(moduleName, ts.normalizeSlashes(fileName), compilerOptions, _this.host); + var result = ts.resolveModuleName(moduleName, ts.normalizeSlashes(fileName), compilerOptions, _this.host); + return { + resolvedFileName: result.resolvedModule ? result.resolvedModule.resolvedFileName : undefined, + failedLookupLocations: result.failedLookupLocations + }; }); }; CoreServicesShimObject.prototype.getPreProcessedFileInfo = function (fileName, sourceTextSnapshot) { diff --git a/lib/typescriptServices.d.ts b/lib/typescriptServices.d.ts index 3d4418a9750..761ce39d418 100644 --- a/lib/typescriptServices.d.ts +++ b/lib/typescriptServices.d.ts @@ -1208,9 +1208,11 @@ declare namespace ts { UnionOrIntersection = 49152, StructuredType = 130048, } + type DestructuringPattern = BindingPattern | ObjectLiteralExpression | ArrayLiteralExpression; interface Type { flags: TypeFlags; symbol?: Symbol; + pattern?: DestructuringPattern; } interface StringLiteralType extends Type { text: string; @@ -1237,7 +1239,6 @@ declare namespace ts { } interface TupleType extends ObjectType { elementTypes: Type[]; - baseArrayType: TypeReference; } interface UnionOrIntersectionType extends Type { types: Type[]; @@ -1382,9 +1383,12 @@ declare namespace ts { } interface ResolvedModule { resolvedFileName: string; + isExternalLibraryImport?: boolean; + } + interface ResolvedModuleWithFailedLookupLocations { + resolvedModule: ResolvedModule; failedLookupLocations: string[]; } - type ModuleNameResolver = (moduleName: string, containingFile: string, options: CompilerOptions, host: ModuleResolutionHost) => ResolvedModule; interface CompilerHost extends ModuleResolutionHost { getSourceFile(fileName: string, languageVersion: ScriptTarget, onError?: (message: string) => void): SourceFile; getCancellationToken?(): CancellationToken; @@ -1394,7 +1398,7 @@ declare namespace ts { getCanonicalFileName(fileName: string): string; useCaseSensitiveFileNames(): boolean; getNewLine(): string; - resolveModuleNames?(moduleNames: string[], containingFile: string): string[]; + resolveModuleNames?(moduleNames: string[], containingFile: string): ResolvedModule[]; } interface TextSpan { start: number; @@ -1515,10 +1519,9 @@ declare namespace ts { const version: string; function findConfigFile(searchPath: string): string; function resolveTripleslashReference(moduleName: string, containingFile: string): string; - function resolveModuleName(moduleName: string, containingFile: string, compilerOptions: CompilerOptions, host: ModuleResolutionHost): ResolvedModule; - function nodeModuleNameResolver(moduleName: string, containingFile: string, host: ModuleResolutionHost): ResolvedModule; - function baseUrlModuleNameResolver(moduleName: string, containingFile: string, baseUrl: string, host: ModuleResolutionHost): ResolvedModule; - function classicNameResolver(moduleName: string, containingFile: string, compilerOptions: CompilerOptions, host: ModuleResolutionHost): ResolvedModule; + function resolveModuleName(moduleName: string, containingFile: string, compilerOptions: CompilerOptions, host: ModuleResolutionHost): ResolvedModuleWithFailedLookupLocations; + function nodeModuleNameResolver(moduleName: string, containingFile: string, host: ModuleResolutionHost): ResolvedModuleWithFailedLookupLocations; + function classicNameResolver(moduleName: string, containingFile: string, compilerOptions: CompilerOptions, host: ModuleResolutionHost): ResolvedModuleWithFailedLookupLocations; function createCompilerHost(options: CompilerOptions, setParentNodes?: boolean): CompilerHost; function getPreEmitDiagnostics(program: Program, sourceFile?: SourceFile, cancellationToken?: CancellationToken): Diagnostic[]; function flattenDiagnosticMessageText(messageText: string | DiagnosticMessageChain, newLine: string): string; @@ -1530,7 +1533,7 @@ declare namespace ts { * Read tsconfig.json file * @param fileName The path to the config file */ - function readConfigFile(fileName: string): { + function readConfigFile(fileName: string, readFile: (path: string) => string): { config?: any; error?: Diagnostic; }; @@ -1649,7 +1652,7 @@ declare namespace ts { trace?(s: string): void; error?(s: string): void; useCaseSensitiveFileNames?(): boolean; - resolveModuleNames?(moduleNames: string[], containingFile: string): string[]; + resolveModuleNames?(moduleNames: string[], containingFile: string): ResolvedModule[]; } interface LanguageService { cleanupSemanticCache(): void; diff --git a/lib/typescriptServices.js b/lib/typescriptServices.js index b4d21639d3b..a1f9651570e 100644 --- a/lib/typescriptServices.js +++ b/lib/typescriptServices.js @@ -2117,7 +2117,7 @@ var ts; 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'." }, + 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." }, @@ -2288,6 +2288,7 @@ var ts; The_arguments_object_cannot_be_referenced_in_an_async_arrow_function_Consider_using_a_standard_async_function_expression: { code: 2522, category: ts.DiagnosticCategory.Error, key: "The 'arguments' object cannot be referenced in an async arrow function. Consider using a standard async function expression." }, yield_expressions_cannot_be_used_in_a_parameter_initializer: { code: 2523, category: ts.DiagnosticCategory.Error, key: "'yield' expressions cannot be used in a parameter initializer." }, await_expressions_cannot_be_used_in_a_parameter_initializer: { code: 2524, category: ts.DiagnosticCategory.Error, key: "'await' expressions cannot be used in a parameter initializer." }, + Initializer_provides_no_value_for_this_binding_element_and_the_binding_element_has_no_default_value: { code: 2525, category: ts.DiagnosticCategory.Error, key: "Initializer provides no value for this binding element and the binding element has no default value." }, JSX_element_attributes_type_0_must_be_an_object_type: { code: 2600, category: ts.DiagnosticCategory.Error, key: "JSX element attributes type '{0}' must be an object type." }, The_return_type_of_a_JSX_element_constructor_must_return_an_object_type: { code: 2601, category: ts.DiagnosticCategory.Error, key: "The return type of a JSX element constructor must return an object type." }, JSX_element_implicitly_has_type_any_because_the_global_type_JSX_Element_does_not_exist: { code: 2602, category: ts.DiagnosticCategory.Error, key: "JSX element implicitly has type 'any' because the global type 'JSX.Element' does not exist." }, @@ -2300,6 +2301,10 @@ var ts; Cannot_emit_namespaced_JSX_elements_in_React: { code: 2650, category: ts.DiagnosticCategory.Error, key: "Cannot emit namespaced JSX elements in React" }, A_member_initializer_in_a_enum_declaration_cannot_reference_members_declared_after_it_including_members_defined_in_other_enums: { code: 2651, category: ts.DiagnosticCategory.Error, key: "A member initializer in a enum declaration cannot reference members declared after it, including members defined in other enums." }, Merged_declaration_0_cannot_include_a_default_export_declaration_Consider_adding_a_separate_export_default_0_declaration_instead: { code: 2652, category: ts.DiagnosticCategory.Error, key: "Merged declaration '{0}' cannot include a default export declaration. Consider adding a separate 'export default {0}' declaration instead." }, + Non_abstract_class_expression_does_not_implement_inherited_abstract_member_0_from_class_1: { code: 2653, category: ts.DiagnosticCategory.Error, key: "Non-abstract class expression does not implement inherited abstract member '{0}' from class '{1}'." }, + Exported_external_package_typings_file_cannot_contain_tripleslash_references_Please_contact_the_package_author_to_update_the_package_definition: { code: 2654, category: ts.DiagnosticCategory.Error, key: "Exported external package typings file cannot contain tripleslash references. Please contact the package author to update the package definition." }, + Exported_external_package_typings_can_only_be_in_d_ts_files_Please_contact_the_package_author_to_update_the_package_definition: { code: 2655, category: ts.DiagnosticCategory.Error, key: "Exported external package typings can only be in '.d.ts' files. Please contact the package author to update the package definition." }, + Exported_external_package_typings_file_0_is_not_a_module_Please_contact_the_package_author_to_update_the_package_definition: { code: 2656, category: ts.DiagnosticCategory.Error, key: "Exported external package typings file '{0}' is not a module. Please contact the package author to update the package definition." }, 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}'." }, @@ -2433,13 +2438,14 @@ var ts; Specifies_the_end_of_line_sequence_to_be_used_when_emitting_files_Colon_CRLF_dos_or_LF_unix: { code: 6060, category: ts.DiagnosticCategory.Message, key: "Specifies the end of line sequence to be used when emitting files: 'CRLF' (dos) or 'LF' (unix)." }, NEWLINE: { code: 6061, category: ts.DiagnosticCategory.Message, key: "NEWLINE" }, Argument_for_newLine_option_must_be_CRLF_or_LF: { code: 6062, category: ts.DiagnosticCategory.Error, key: "Argument for '--newLine' option must be 'CRLF' or 'LF'." }, + Argument_for_moduleResolution_option_must_be_node_or_classic: { code: 6063, category: ts.DiagnosticCategory.Error, key: "Argument for '--moduleResolution' option must be 'node' or 'classic'." }, Specify_JSX_code_generation_Colon_preserve_or_react: { code: 6080, category: ts.DiagnosticCategory.Message, key: "Specify JSX code generation: 'preserve' or 'react'" }, Argument_for_jsx_must_be_preserve_or_react: { code: 6081, category: ts.DiagnosticCategory.Message, key: "Argument for '--jsx' must be 'preserve' or 'react'." }, Enables_experimental_support_for_ES7_decorators: { code: 6065, category: ts.DiagnosticCategory.Message, key: "Enables experimental support for ES7 decorators." }, Enables_experimental_support_for_emitting_type_metadata_for_decorators: { code: 6066, category: ts.DiagnosticCategory.Message, key: "Enables experimental support for emitting type metadata for decorators." }, Option_experimentalAsyncFunctions_cannot_be_specified_when_targeting_ES5_or_lower: { code: 6067, category: ts.DiagnosticCategory.Message, key: "Option 'experimentalAsyncFunctions' cannot be specified when targeting ES5 or lower." }, Enables_experimental_support_for_ES7_async_functions: { code: 6068, category: ts.DiagnosticCategory.Message, key: "Enables experimental support for ES7 async functions." }, - Specifies_module_resolution_strategy_Colon_node_Node_or_classic_TypeScript_pre_1_6: { code: 6069, category: ts.DiagnosticCategory.Message, key: "Specifies module resolution strategy: 'node' (Node) or 'classic' (TypeScript pre 1.6) ." }, + Specifies_module_resolution_strategy_Colon_node_Node_js_or_classic_TypeScript_pre_1_6: { code: 6069, category: ts.DiagnosticCategory.Message, key: "Specifies module resolution strategy: 'node' (Node.js) or 'classic' (TypeScript pre-1.6)." }, Initializes_a_TypeScript_project_and_creates_a_tsconfig_json_file: { code: 6070, category: ts.DiagnosticCategory.Message, key: "Initializes a TypeScript project and creates a tsconfig.json file." }, Successfully_created_a_tsconfig_json_file: { code: 6071, category: ts.DiagnosticCategory.Message, key: "Successfully created a tsconfig.json file." }, Suppress_excess_property_checks_for_object_literals: { code: 6072, category: ts.DiagnosticCategory.Message, key: "Suppress excess property checks for object literals." }, @@ -2491,6 +2497,11 @@ var ts; /// var ts; (function (ts) { + /* @internal */ + function tokenIsIdentifierOrKeyword(token) { + return token >= 67 /* Identifier */; + } + ts.tokenIsIdentifierOrKeyword = tokenIsIdentifierOrKeyword; var textToToken = { "abstract": 113 /* AbstractKeyword */, "any": 115 /* AnyKeyword */, @@ -3926,7 +3937,7 @@ var ts; // Scans a JSX identifier; these differ from normal identifiers in that // they allow dashes function scanJsxIdentifier() { - if (token === 67 /* Identifier */) { + if (tokenIsIdentifierOrKeyword(token)) { var firstCharPosition = pos; while (pos < end) { var ch = text.charCodeAt(pos); @@ -4943,6 +4954,7 @@ var ts; } })(ts || (ts = {})); /// +/// /* @internal */ var ts; (function (ts) { @@ -5011,21 +5023,21 @@ var ts; return true; } ts.arrayIsEqualTo = arrayIsEqualTo; - function hasResolvedModuleName(sourceFile, moduleNameText) { + function hasResolvedModule(sourceFile, moduleNameText) { return sourceFile.resolvedModules && ts.hasProperty(sourceFile.resolvedModules, moduleNameText); } - ts.hasResolvedModuleName = hasResolvedModuleName; - function getResolvedModuleFileName(sourceFile, moduleNameText) { - return hasResolvedModuleName(sourceFile, moduleNameText) ? sourceFile.resolvedModules[moduleNameText] : undefined; + ts.hasResolvedModule = hasResolvedModule; + function getResolvedModule(sourceFile, moduleNameText) { + return hasResolvedModule(sourceFile, moduleNameText) ? sourceFile.resolvedModules[moduleNameText] : undefined; } - ts.getResolvedModuleFileName = getResolvedModuleFileName; - function setResolvedModuleName(sourceFile, moduleNameText, resolvedFileName) { + ts.getResolvedModule = getResolvedModule; + function setResolvedModule(sourceFile, moduleNameText, resolvedModule) { if (!sourceFile.resolvedModules) { sourceFile.resolvedModules = {}; } - sourceFile.resolvedModules[moduleNameText] = resolvedFileName; + sourceFile.resolvedModules[moduleNameText] = resolvedModule; } - ts.setResolvedModuleName = setResolvedModuleName; + ts.setResolvedModule = setResolvedModule; // Returns true if this node contains a parse error anywhere underneath it. function containsParseError(node) { aggregateChildData(node); @@ -5072,16 +5084,16 @@ var ts; return node.pos; } ts.getStartPosOfNode = getStartPosOfNode; - // Returns true if this node is missing from the actual source code. 'missing' is different - // from 'undefined/defined'. When a node is undefined (which can happen for optional nodes - // in the tree), it is definitel missing. HOwever, a node may be defined, but still be + // Returns true if this node is missing from the actual source code. A 'missing' node is different + // from 'undefined/defined'. When a node is undefined (which can happen for optional nodes + // in the tree), it is definitely missing. However, a node may be defined, but still be // 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: + // get anything in the source code that it expects at that location. For example: // // 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. + // code). So the parser will attempt to parse out a type, and will create an actual node. // However, this node will be 'missing' in the sense that no actual source-code/tokens are // contained within it. function nodeIsMissing(node) { @@ -5328,6 +5340,7 @@ var ts; } ts.getJsDocComments = getJsDocComments; ts.fullTripleSlashReferencePathRegEx = /^(\/\/\/\s*/; + ts.fullTripleSlashAMDReferencePathRegEx = /^(\/\/\/\s*/; function isTypeNode(node) { if (149 /* FirstTypeNode */ <= node.kind && node.kind <= 158 /* LastTypeNode */) { return true; @@ -6362,11 +6375,21 @@ var ts; add: add, getGlobalDiagnostics: getGlobalDiagnostics, getDiagnostics: getDiagnostics, - getModificationCount: getModificationCount + getModificationCount: getModificationCount, + reattachFileDiagnostics: reattachFileDiagnostics }; function getModificationCount() { return modificationCount; } + function reattachFileDiagnostics(newFile) { + if (!ts.hasProperty(fileDiagnostics, newFile.fileName)) { + return; + } + for (var _i = 0, _a = fileDiagnostics[newFile.fileName]; _i < _a.length; _i++) { + var diagnostic = _a[_i]; + diagnostic.file = newFile; + } + } function add(diagnostic) { var diagnostics; if (diagnostic.file) { @@ -8118,10 +8141,10 @@ var ts; return createIdentifier(isIdentifier(), diagnosticMessage); } function parseIdentifierName() { - return createIdentifier(isIdentifierOrKeyword()); + return createIdentifier(ts.tokenIsIdentifierOrKeyword(token)); } function isLiteralPropertyName() { - return isIdentifierOrKeyword() || + return ts.tokenIsIdentifierOrKeyword(token) || token === 9 /* StringLiteral */ || token === 8 /* NumericLiteral */; } @@ -8141,7 +8164,7 @@ var ts; return parsePropertyNameWorker(/*allowComputedPropertyNames:*/ false); } function isSimplePropertyName() { - return token === 9 /* StringLiteral */ || token === 8 /* NumericLiteral */ || isIdentifierOrKeyword(); + return token === 9 /* StringLiteral */ || token === 8 /* NumericLiteral */ || ts.tokenIsIdentifierOrKeyword(token); } function parseComputedPropertyName() { // PropertyName [Yield]: @@ -8257,9 +8280,9 @@ var ts; case 20 /* HeritageClauses */: return isHeritageClause(); case 21 /* ImportOrExportSpecifiers */: - return isIdentifierOrKeyword(); + return ts.tokenIsIdentifierOrKeyword(token); case 13 /* JsxAttributes */: - return isIdentifierOrKeyword() || token === 15 /* OpenBraceToken */; + return ts.tokenIsIdentifierOrKeyword(token) || token === 15 /* OpenBraceToken */; case 14 /* JsxChildren */: return true; case 22 /* JSDocFunctionParameters */: @@ -8292,7 +8315,7 @@ var ts; } function nextTokenIsIdentifierOrKeyword() { nextToken(); - return isIdentifierOrKeyword(); + return ts.tokenIsIdentifierOrKeyword(token); } function isHeritageClauseExtendsOrImplementsKeyword() { if (token === 104 /* ImplementsKeyword */ || @@ -8786,7 +8809,7 @@ var ts; // the code would be implicitly: "name.identifierOrKeyword; identifierNameOrKeyword". // In the first case though, ASI will not take effect because there is not a // line terminator after the identifier or keyword. - if (scanner.hasPrecedingLineBreak() && isIdentifierOrKeyword()) { + if (scanner.hasPrecedingLineBreak() && ts.tokenIsIdentifierOrKeyword(token)) { var matchesPattern = lookAhead(nextTokenIsIdentifierOrKeywordOnSameLine); if (matchesPattern) { // Report that we need an identifier. However, report it right after the dot, @@ -9170,7 +9193,7 @@ var ts; return result; } } - if (isIdentifierOrKeyword()) { + if (ts.tokenIsIdentifierOrKeyword(token)) { return parsePropertyOrMethodSignature(); } } @@ -10763,12 +10786,9 @@ var ts; return finishNode(expressionStatement); } } - function isIdentifierOrKeyword() { - return token >= 67 /* Identifier */; - } function nextTokenIsIdentifierOrKeywordOnSameLine() { nextToken(); - return isIdentifierOrKeyword() && !scanner.hasPrecedingLineBreak(); + return ts.tokenIsIdentifierOrKeyword(token) && !scanner.hasPrecedingLineBreak(); } function nextTokenIsFunctionKeywordOnSameLine() { nextToken(); @@ -10776,7 +10796,7 @@ var ts; } function nextTokenIsIdentifierOrKeywordOrNumberOnSameLine() { nextToken(); - return (isIdentifierOrKeyword() || token === 8 /* NumericLiteral */) && !scanner.hasPrecedingLineBreak(); + return (ts.tokenIsIdentifierOrKeyword(token) || token === 8 /* NumericLiteral */) && !scanner.hasPrecedingLineBreak(); } function isDeclaration() { while (true) { @@ -10826,7 +10846,7 @@ var ts; case 87 /* ImportKeyword */: nextToken(); return token === 9 /* StringLiteral */ || token === 37 /* AsteriskToken */ || - token === 15 /* OpenBraceToken */ || isIdentifierOrKeyword(); + token === 15 /* OpenBraceToken */ || ts.tokenIsIdentifierOrKeyword(token); case 80 /* ExportKeyword */: nextToken(); if (token === 55 /* EqualsToken */ || token === 37 /* AsteriskToken */ || @@ -11366,7 +11386,7 @@ var ts; } // It is very important that we check this *after* checking indexers because // the [ token can start an index signature or a computed property name - if (isIdentifierOrKeyword() || + if (ts.tokenIsIdentifierOrKeyword(token) || token === 9 /* StringLiteral */ || token === 8 /* NumericLiteral */ || token === 37 /* AsteriskToken */ || @@ -11505,12 +11525,15 @@ var ts; } function parseModuleOrNamespaceDeclaration(fullStart, decorators, modifiers, flags) { var node = createNode(216 /* ModuleDeclaration */, fullStart); + // If we are parsing a dotted namespace name, we want to + // propagate the 'Namespace' flag across the names if set. + var namespaceFlag = flags & 131072 /* Namespace */; node.decorators = decorators; setModifiers(node, modifiers); node.flags |= flags; node.name = parseIdentifier(); node.body = parseOptional(21 /* DotToken */) - ? parseModuleOrNamespaceDeclaration(getNodePos(), /*decorators*/ undefined, /*modifiers*/ undefined, 1 /* Export */) + ? parseModuleOrNamespaceDeclaration(getNodePos(), /*decorators*/ undefined, /*modifiers*/ undefined, 1 /* Export */ | namespaceFlag) : parseModuleBlock(); return finishNode(node); } @@ -11844,7 +11867,7 @@ var ts; case 95 /* ThisKeyword */: return true; } - return isIdentifierOrKeyword(); + return ts.tokenIsIdentifierOrKeyword(token); } JSDocParser.isJSDocType = isJSDocType; function parseJSDocTypeExpressionForTests(content, start, length) { @@ -13734,7 +13757,7 @@ var ts; // 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 = ts.escapeIdentifier(moduleReferenceLiteral.text); - if (!moduleName) { + if (moduleName === undefined) { return; } var isRelative = isExternalModuleNameRelative(moduleName); @@ -13744,8 +13767,8 @@ var ts; return symbol; } } - var fileName = ts.getResolvedModuleFileName(getSourceFile(location), moduleReferenceLiteral.text); - var sourceFile = fileName && host.getSourceFile(fileName); + var resolvedModule = ts.getResolvedModule(getSourceFile(location), moduleReferenceLiteral.text); + var sourceFile = resolvedModule && host.getSourceFile(resolvedModule.resolvedFileName); if (sourceFile) { if (sourceFile.symbol) { return sourceFile.symbol; @@ -15038,7 +15061,7 @@ var ts; } // If the declaration specifies a binding pattern, use the type implied by the binding pattern if (ts.isBindingPattern(declaration.name)) { - return getTypeFromBindingPattern(declaration.name); + return getTypeFromBindingPattern(declaration.name, /*includePatternInType*/ false); } // No type specified and nothing can be inferred return undefined; @@ -15046,45 +15069,45 @@ var ts; // Return the type implied by a binding pattern element. This is the type of the initializer of the element if // one is present. Otherwise, if the element is itself a binding pattern, it is the type implied by the binding // pattern. Otherwise, it is the type any. - function getTypeFromBindingElement(element) { + function getTypeFromBindingElement(element, includePatternInType) { if (element.initializer) { return getWidenedType(checkExpressionCached(element.initializer)); } if (ts.isBindingPattern(element.name)) { - return getTypeFromBindingPattern(element.name); + return getTypeFromBindingPattern(element.name, includePatternInType); } return anyType; } // Return the type implied by an object binding pattern - function getTypeFromObjectBindingPattern(pattern) { + function getTypeFromObjectBindingPattern(pattern, includePatternInType) { var members = {}; ts.forEach(pattern.elements, function (e) { var flags = 4 /* Property */ | 67108864 /* Transient */ | (e.initializer ? 536870912 /* Optional */ : 0); var name = e.propertyName || e.name; var symbol = createSymbol(flags, name.text); - symbol.type = getTypeFromBindingElement(e); + symbol.type = getTypeFromBindingElement(e, includePatternInType); + symbol.bindingElement = e; members[symbol.name] = symbol; }); - return createAnonymousType(undefined, members, emptyArray, emptyArray, undefined, undefined); + var result = createAnonymousType(undefined, members, emptyArray, emptyArray, undefined, undefined); + if (includePatternInType) { + result.pattern = pattern; + } + return result; } // Return the type implied by an array binding pattern - function getTypeFromArrayBindingPattern(pattern) { - var hasSpreadElement = false; - var elementTypes = []; - ts.forEach(pattern.elements, function (e) { - elementTypes.push(e.kind === 185 /* OmittedExpression */ || e.dotDotDotToken ? anyType : getTypeFromBindingElement(e)); - if (e.dotDotDotToken) { - hasSpreadElement = true; - } - }); - if (!elementTypes.length) { + function getTypeFromArrayBindingPattern(pattern, includePatternInType) { + var elements = pattern.elements; + if (elements.length === 0 || elements[elements.length - 1].dotDotDotToken) { return languageVersion >= 2 /* ES6 */ ? createIterableType(anyType) : anyArrayType; } - else if (hasSpreadElement) { - var unionOfElements = getUnionType(elementTypes); - return languageVersion >= 2 /* ES6 */ ? createIterableType(unionOfElements) : createArrayType(unionOfElements); - } // If the pattern has at least one element, and no rest element, then it should imply a tuple type. + var elementTypes = ts.map(elements, function (e) { return e.kind === 185 /* OmittedExpression */ ? anyType : getTypeFromBindingElement(e, includePatternInType); }); + if (includePatternInType) { + var result = createNewTupleType(elementTypes); + result.pattern = pattern; + return result; + } return createTupleType(elementTypes); } // Return the type implied by a binding pattern. This is the type implied purely by the binding pattern itself @@ -15094,10 +15117,10 @@ var ts; // used as the contextual type of an initializer associated with the binding pattern. Also, for a destructuring // parameter with no type annotation or initializer, the type implied by the binding pattern becomes the type of // the parameter. - function getTypeFromBindingPattern(pattern) { + function getTypeFromBindingPattern(pattern, includePatternInType) { return pattern.kind === 159 /* ObjectBindingPattern */ - ? getTypeFromObjectBindingPattern(pattern) - : getTypeFromArrayBindingPattern(pattern); + ? getTypeFromObjectBindingPattern(pattern, includePatternInType) + : getTypeFromArrayBindingPattern(pattern, includePatternInType); } // Return the type associated with a variable, parameter, or property declaration. In the simple case this is the type // specified in a type annotation or inferred from an initializer. However, in the case of a destructuring declaration it @@ -16565,11 +16588,11 @@ var ts; } function createTupleType(elementTypes) { var id = getTypeListId(elementTypes); - var type = tupleTypes[id]; - if (!type) { - type = tupleTypes[id] = createObjectType(8192 /* Tuple */ | getPropagatingFlagsOfTypes(elementTypes)); - type.elementTypes = elementTypes; - } + return tupleTypes[id] || (tupleTypes[id] = createNewTupleType(elementTypes)); + } + function createNewTupleType(elementTypes) { + var type = createObjectType(8192 /* Tuple */ | getPropagatingFlagsOfTypes(elementTypes)); + type.elementTypes = elementTypes; return type; } function getTypeFromTupleTypeNode(node) { @@ -17021,7 +17044,7 @@ var ts; * @param target The right-hand-side of the relation. * @param relation The relation considered. One of 'identityRelation', 'assignableRelation', or 'subTypeRelation'. * Used as both to determine which checks are performed and as a cache of previously computed results. - * @param errorNode The node upon which all errors will be reported, if defined. + * @param errorNode The suggested node upon which all errors will be reported, if defined. This may or may not be the actual node used. * @param headMessage If the error chain should be prepended by a head message, then headMessage will be used. * @param containingMessageChain A chain of errors to prepend any new errors found. */ @@ -17106,7 +17129,9 @@ var ts; // and intersection types are further deconstructed on the target side, we don't want to // make the check again (as it might fail for a partial target type). Therefore we obtain // the regular source type and proceed with that. - source = getRegularTypeOfObjectLiteral(source); + if (target.flags & 49152 /* UnionOrIntersection */) { + source = getRegularTypeOfObjectLiteral(source); + } } var saveErrorInfo = errorInfo; // Note that the "each" checks must precede the "some" checks to produce the correct results @@ -17228,6 +17253,10 @@ var ts; var prop = _a[_i]; if (!isKnownProperty(target, prop.name)) { if (reportErrors) { + // We know *exactly* where things went wrong when comparing the types. + // Use this property as the error node as this will be more helpful in + // reasoning about what went wrong. + errorNode = prop.valueDeclaration; reportError(ts.Diagnostics.Object_literal_may_only_specify_known_properties_and_0_does_not_exist_in_type_1, symbolToString(prop), typeToString(target)); } return true; @@ -17550,8 +17579,8 @@ var ts; return result; function abstractSignatureRelatedTo(source, sourceSig, target, targetSig) { if (sourceSig && targetSig) { - var sourceDecl = source.symbol && ts.getDeclarationOfKind(source.symbol, 212 /* ClassDeclaration */); - var targetDecl = target.symbol && ts.getDeclarationOfKind(target.symbol, 212 /* ClassDeclaration */); + var sourceDecl = source.symbol && getClassLikeDeclarationOfSymbol(source.symbol); + var targetDecl = target.symbol && getClassLikeDeclarationOfSymbol(target.symbol); if (!sourceDecl) { // If the source object isn't itself a class declaration, it can be freely assigned, regardless // of whether the constructed object is abstract or not. @@ -17561,8 +17590,8 @@ var ts; var targetErasedSignature = getErasedSignature(targetSig); var sourceReturnType = sourceErasedSignature && getReturnTypeOfSignature(sourceErasedSignature); var targetReturnType = targetErasedSignature && getReturnTypeOfSignature(targetErasedSignature); - var sourceReturnDecl = sourceReturnType && sourceReturnType.symbol && ts.getDeclarationOfKind(sourceReturnType.symbol, 212 /* ClassDeclaration */); - var targetReturnDecl = targetReturnType && targetReturnType.symbol && ts.getDeclarationOfKind(targetReturnType.symbol, 212 /* ClassDeclaration */); + var sourceReturnDecl = sourceReturnType && sourceReturnType.symbol && getClassLikeDeclarationOfSymbol(sourceReturnType.symbol); + var targetReturnDecl = targetReturnType && targetReturnType.symbol && getClassLikeDeclarationOfSymbol(targetReturnType.symbol); var sourceIsAbstract = sourceReturnDecl && sourceReturnDecl.flags & 256 /* Abstract */; var targetIsAbstract = targetReturnDecl && targetReturnDecl.flags & 256 /* Abstract */; if (sourceIsAbstract && !(targetIsAbstract && targetDecl)) { @@ -17911,6 +17940,7 @@ var ts; regularType.constructSignatures = type.constructSignatures; regularType.stringIndexType = type.stringIndexType; regularType.numberIndexType = type.numberIndexType; + type.regularType = regularType; } return regularType; } @@ -18893,8 +18923,8 @@ var ts; } // Return contextual type of parameter or undefined if no contextual type is available function getContextuallyTypedParameterType(parameter) { - if (isFunctionExpressionOrArrowFunction(parameter.parent)) { - var func = parameter.parent; + var func = parameter.parent; + if (isFunctionExpressionOrArrowFunction(func) || ts.isObjectLiteralMethod(func)) { if (isContextSensitive(func)) { var contextualSignature = getContextualSignature(func); if (contextualSignature) { @@ -18932,7 +18962,7 @@ var ts; } } if (ts.isBindingPattern(declaration.name)) { - return getTypeFromBindingPattern(declaration.name); + return getTypeFromBindingPattern(declaration.name, /*includePatternInType*/ true); } } return undefined; @@ -19290,11 +19320,12 @@ var ts; var arrayOrIterableType = checkExpressionCached(node.expression, contextualMapper); return checkIteratedTypeOrElementType(arrayOrIterableType, node.expression, /*allowStringInput*/ false); } + function hasDefaultValue(node) { + return (node.kind === 161 /* BindingElement */ && !!node.initializer) || + (node.kind === 179 /* BinaryExpression */ && node.operatorToken.kind === 55 /* EqualsToken */); + } function checkArrayLiteral(node, contextualMapper) { var elements = node.elements; - if (!elements.length) { - return createArrayType(undefinedType); - } var hasSpreadElement = false; var elementTypes = []; var inDestructuringPattern = isAssignmentTarget(node); @@ -19327,12 +19358,39 @@ var ts; hasSpreadElement = hasSpreadElement || e.kind === 183 /* SpreadElementExpression */; } if (!hasSpreadElement) { + // If array literal is actually a destructuring pattern, mark it as an implied type. We do this such + // that we get the same behavior for "var [x, y] = []" and "[x, y] = []". + if (inDestructuringPattern && elementTypes.length) { + var type = createNewTupleType(elementTypes); + type.pattern = node; + return type; + } var contextualType = getContextualType(node); - if (contextualType && contextualTypeIsTupleLikeType(contextualType) || inDestructuringPattern) { - return createTupleType(elementTypes); + if (contextualType && contextualTypeIsTupleLikeType(contextualType)) { + var pattern = contextualType.pattern; + // If array literal is contextually typed by a binding pattern or an assignment pattern, pad the resulting + // tuple type with the corresponding binding or assignment element types to make the lengths equal. + if (pattern && (pattern.kind === 160 /* ArrayBindingPattern */ || pattern.kind === 162 /* ArrayLiteralExpression */)) { + var patternElements = pattern.elements; + for (var i = elementTypes.length; i < patternElements.length; i++) { + var patternElement = patternElements[i]; + if (hasDefaultValue(patternElement)) { + elementTypes.push(contextualType.elementTypes[i]); + } + else { + if (patternElement.kind !== 185 /* OmittedExpression */) { + error(patternElement, ts.Diagnostics.Initializer_provides_no_value_for_this_binding_element_and_the_binding_element_has_no_default_value); + } + elementTypes.push(unknownType); + } + } + } + if (elementTypes.length) { + return createTupleType(elementTypes); + } } } - return createArrayType(getUnionType(elementTypes)); + return createArrayType(elementTypes.length ? getUnionType(elementTypes) : undefinedType); } function isNumericName(name) { return name.kind === 134 /* ComputedPropertyName */ ? isNumericComputedName(name) : isNumericLiteralName(name.text); @@ -19390,6 +19448,9 @@ var ts; var propertiesTable = {}; var propertiesArray = []; var contextualType = getContextualType(node); + var contextualTypeHasPattern = contextualType && contextualType.pattern && + (contextualType.pattern.kind === 159 /* ObjectBindingPattern */ || contextualType.pattern.kind === 163 /* ObjectLiteralExpression */); + var inDestructuringPattern = isAssignmentTarget(node); var typeFlags = 0; for (var _i = 0, _a = node.properties; _i < _a.length; _i++) { var memberDecl = _a[_i]; @@ -19410,6 +19471,24 @@ var ts; } typeFlags |= type.flags; var prop = createSymbol(4 /* Property */ | 67108864 /* Transient */ | member.flags, member.name); + if (inDestructuringPattern) { + // If object literal is an assignment pattern and if the assignment pattern specifies a default value + // for the property, make the property optional. + if (memberDecl.kind === 243 /* PropertyAssignment */ && hasDefaultValue(memberDecl.initializer)) { + prop.flags |= 536870912 /* Optional */; + } + } + else if (contextualTypeHasPattern) { + // If object literal is contextually typed by the implied type of a binding pattern, and if the + // binding pattern specifies a default value for the property, make the property optional. + var impliedProp = getPropertyOfType(contextualType, member.name); + if (impliedProp) { + prop.flags |= impliedProp.flags & 536870912 /* Optional */; + } + else if (!compilerOptions.suppressExcessPropertyErrors) { + error(memberDecl.name, ts.Diagnostics.Object_literal_may_only_specify_known_properties_and_0_does_not_exist_in_type_1, symbolToString(member), typeToString(contextualType)); + } + } prop.declarations = member.declarations; prop.parent = member.parent; if (member.valueDeclaration) { @@ -19433,11 +19512,28 @@ var ts; } propertiesArray.push(member); } + // If object literal is contextually typed by the implied type of a binding pattern, augment the result + // type with those properties for which the binding pattern specifies a default value. + if (contextualTypeHasPattern) { + for (var _b = 0, _c = getPropertiesOfType(contextualType); _b < _c.length; _b++) { + var prop = _c[_b]; + if (!ts.hasProperty(propertiesTable, prop.name)) { + if (!(prop.flags & 536870912 /* Optional */)) { + error(prop.valueDeclaration || prop.bindingElement, ts.Diagnostics.Initializer_provides_no_value_for_this_binding_element_and_the_binding_element_has_no_default_value); + } + propertiesTable[prop.name] = prop; + propertiesArray.push(prop); + } + } + } var stringIndexType = getIndexType(0 /* String */); var numberIndexType = getIndexType(1 /* Number */); var result = createAnonymousType(node.symbol, propertiesTable, emptyArray, emptyArray, stringIndexType, numberIndexType); var freshObjectLiteralFlag = compilerOptions.suppressExcessPropertyErrors ? 0 : 1048576 /* FreshObjectLiteral */; result.flags |= 524288 /* ObjectLiteral */ | 4194304 /* ContainsObjectLiteral */ | freshObjectLiteralFlag | (typeFlags & 14680064 /* PropagatingFlags */); + if (inDestructuringPattern) { + result.pattern = node; + } return result; function getIndexType(kind) { if (contextualType && contextualTypeHasIndexSignature(contextualType, kind)) { @@ -20946,7 +21042,7 @@ var ts; // Note, only class declarations can be declared abstract. // In the case of a merged class-module or class-interface declaration, // only the class declaration node will have the Abstract flag set. - var valueDecl = expressionType.symbol && ts.getDeclarationOfKind(expressionType.symbol, 212 /* ClassDeclaration */); + var valueDecl = expressionType.symbol && getClassLikeDeclarationOfSymbol(expressionType.symbol); if (valueDecl && valueDecl.flags & 256 /* Abstract */) { error(node, ts.Diagnostics.Cannot_create_an_instance_of_the_abstract_class_0, ts.declarationNameToString(valueDecl.name)); return resolveErrorCall(node); @@ -24257,6 +24353,9 @@ var ts; // so we'll need to get back original 'target' symbol to work with correct set of flags return s.flags & 16777216 /* Instantiated */ ? getSymbolLinks(s).target : s; } + function getClassLikeDeclarationOfSymbol(symbol) { + return ts.forEach(symbol.declarations, function (d) { return ts.isClassLike(d) ? d : undefined; }); + } 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. @@ -24288,12 +24387,17 @@ var ts; // type declaration, derived and base resolve to the same symbol even in the case of generic classes. if (derived === base) { // derived class inherits base without override/redeclaration - var derivedClassDecl = ts.getDeclarationOfKind(type.symbol, 212 /* ClassDeclaration */); + var derivedClassDecl = getClassLikeDeclarationOfSymbol(type.symbol); // It is an error to inherit an abstract member without implementing it or being declared abstract. // If there is no declaration for the derived class (as in the case of class expressions), // then the class cannot be declared abstract. if (baseDeclarationFlags & 256 /* Abstract */ && (!derivedClassDecl || !(derivedClassDecl.flags & 256 /* Abstract */))) { - error(derivedClassDecl, ts.Diagnostics.Non_abstract_class_0_does_not_implement_inherited_abstract_member_1_from_class_2, typeToString(type), symbolToString(baseProperty), typeToString(baseType)); + if (derivedClassDecl.kind === 184 /* ClassExpression */) { + error(derivedClassDecl, ts.Diagnostics.Non_abstract_class_expression_does_not_implement_inherited_abstract_member_0_from_class_1, symbolToString(baseProperty), typeToString(baseType)); + } + else { + error(derivedClassDecl, ts.Diagnostics.Non_abstract_class_0_does_not_implement_inherited_abstract_member_1_from_class_2, typeToString(type), symbolToString(baseProperty), typeToString(baseType)); + } } } else { @@ -25637,7 +25741,10 @@ var ts; var symbols = []; var name_15 = symbol.name; ts.forEach(getSymbolLinks(symbol).containingType.types, function (t) { - symbols.push(getPropertyOfType(t, name_15)); + var symbol = getPropertyOfType(t, name_15); + if (symbol) { + symbols.push(symbol); + } }); return symbols; } @@ -28602,6 +28709,8 @@ var ts; var scopeEmitEnd = function () { }; /** Sourcemap data that will get encoded */ var sourceMapData; + /** If removeComments is true, no leading-comments needed to be emitted **/ + var emitLeadingCommentsOfPosition = compilerOptions.removeComments ? function (pos) { } : emitLeadingCommentsOfPositionWorker; if (compilerOptions.sourceMap || compilerOptions.inlineSourceMap) { initializeEmitterWithSourceMaps(); } @@ -29561,8 +29670,10 @@ var ts; function jsxEmitPreserve(node) { function emitJsxAttribute(node) { emit(node.name); - write("="); - emit(node.initializer); + if (node.initializer) { + write("="); + emit(node.initializer); + } } function emitJsxSpreadAttribute(node) { write("{..."); @@ -29758,8 +29869,15 @@ var ts; else if (declaration.kind === 224 /* ImportSpecifier */) { // Identifier references named import write(getGeneratedNameForNode(declaration.parent.parent.parent)); - write("."); - writeTextOfNode(currentSourceFile, declaration.propertyName || declaration.name); + var name = declaration.propertyName || declaration.name; + var identifier = ts.getSourceTextOfNodeFromSourceFile(currentSourceFile, name); + if (languageVersion === 0 /* ES3 */ && identifier === "default") { + write("[\"default\"]"); + } + else { + write("."); + write(identifier); + } return; } } @@ -30510,7 +30628,8 @@ var ts; operand.kind !== 178 /* PostfixUnaryExpression */ && operand.kind !== 167 /* NewExpression */ && !(operand.kind === 166 /* CallExpression */ && node.parent.kind === 167 /* NewExpression */) && - !(operand.kind === 171 /* FunctionExpression */ && node.parent.kind === 166 /* CallExpression */)) { + !(operand.kind === 171 /* FunctionExpression */ && node.parent.kind === 166 /* CallExpression */) && + !(operand.kind === 8 /* NumericLiteral */ && node.parent.kind === 164 /* PropertyAccessExpression */)) { emit(operand); return; } @@ -31215,6 +31334,9 @@ var ts; } function emitExportSpecifierInSystemModule(specifier) { ts.Debug.assert(compilerOptions.module === 4 /* System */); + if (!resolver.getReferencedValueDeclaration(specifier.propertyName || specifier.name) && !resolver.isValueAliasDeclaration(specifier)) { + return; + } writeLine(); emitStart(specifier.name); write(exportFunctionForFile + "(\""); @@ -31270,21 +31392,30 @@ var ts; write(")"); } } - function ensureIdentifier(expr) { - if (expr.kind !== 67 /* Identifier */) { - var identifier = createTempVariable(0 /* Auto */); - if (!canDefineTempVariablesInPlace) { - recordTempDeclaration(identifier); - } - emitAssignment(identifier, expr); - expr = identifier; + /** + * Ensures that there exists a declared identifier whose value holds the given expression. + * This function is useful to ensure that the expression's value can be read from in subsequent expressions. + * Unless 'reuseIdentifierExpressions' is false, 'expr' will be returned if it is just an identifier. + * + * @param expr the expression whose value needs to be bound. + * @param reuseIdentifierExpressions true if identifier expressions can simply be returned; + * false if it is necessary to always emit an identifier. + */ + function ensureIdentifier(expr, reuseIdentifierExpressions) { + if (expr.kind === 67 /* Identifier */ && reuseIdentifierExpressions) { + return expr; } - return expr; + var identifier = createTempVariable(0 /* Auto */); + if (!canDefineTempVariablesInPlace) { + recordTempDeclaration(identifier); + } + emitAssignment(identifier, expr); + return identifier; } function createDefaultValueCheck(value, defaultValue) { // The value expression will be evaluated twice, so for anything but a simple identifier // we need to generate a temporary variable - value = ensureIdentifier(value); + value = ensureIdentifier(value, /*reuseIdentifierExpressions*/ true); // Return the expression 'value === void 0 ? defaultValue : value' var equals = ts.createSynthesizedNode(179 /* BinaryExpression */); equals.left = value; @@ -31330,7 +31461,7 @@ var ts; 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); + value = ensureIdentifier(value, /*reuseIdentifierExpressions*/ true); } for (var _a = 0; _a < properties.length; _a++) { var p = properties[_a]; @@ -31345,7 +31476,7 @@ var ts; 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); + value = ensureIdentifier(value, /*reuseIdentifierExpressions*/ true); } for (var i = 0; i < elements.length; i++) { var e = elements[i]; @@ -31387,7 +31518,7 @@ var ts; if (root.parent.kind !== 170 /* ParenthesizedExpression */) { write("("); } - value = ensureIdentifier(value); + value = ensureIdentifier(value, /*reuseIdentifierExpressions*/ true); emitDestructuringAssignment(target, value); write(", "); emit(value); @@ -31408,12 +31539,15 @@ var ts; if (ts.isBindingPattern(target.name)) { var pattern = target.name; var 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); + var numElements = elements.length; + if (numElements !== 1) { + // For anything other than a single-element destructuring we need to generate a temporary + // to ensure value is evaluated exactly once. Additionally, if we have zero elements + // we need to emit *something* to ensure that in case a 'var' keyword was already emitted, + // so in that case, we'll intentionally create that temporary. + value = ensureIdentifier(value, /*reuseIdentifierExpressions*/ numElements !== 0); } - for (var i = 0; i < elements.length; i++) { + for (var i = 0; i < numElements; i++) { var element = elements[i]; if (pattern.kind === 159 /* ObjectBindingPattern */) { // Rewrite element to a declaration with an initializer that fetches property @@ -31425,7 +31559,7 @@ var ts; // Rewrite element to a declaration that accesses array element at index i emitBindingElement(element, createElementAccessExpression(value, createNumericLiteral(i))); } - else if (i === elements.length - 1) { + else if (i === numElements - 1) { emitBindingElement(element, createSliceCall(value, i)); } } @@ -31686,7 +31820,7 @@ var ts; } function emitFunctionDeclaration(node) { if (ts.nodeIsMissing(node.body)) { - return emitOnlyPinnedOrTripleSlashComments(node); + return emitCommentsOnNotEmittedNode(node); } // TODO (yuisu) : we should not have special cases to condition emitting comments // but have one place to fix check for these conditions. @@ -32112,7 +32246,7 @@ var ts; } else if (member.kind === 141 /* MethodDeclaration */ || node.kind === 140 /* MethodSignature */) { if (!member.body) { - return emitOnlyPinnedOrTripleSlashComments(member); + return emitCommentsOnNotEmittedNode(member); } writeLine(); emitLeadingComments(member); @@ -32178,7 +32312,7 @@ var ts; for (var _a = 0, _b = node.members; _a < _b.length; _a++) { var member = _b[_a]; if ((member.kind === 141 /* MethodDeclaration */ || node.kind === 140 /* MethodSignature */) && !member.body) { - emitOnlyPinnedOrTripleSlashComments(member); + emitCommentsOnNotEmittedNode(member); } else if (member.kind === 141 /* MethodDeclaration */ || member.kind === 143 /* GetAccessor */ || @@ -32229,7 +32363,7 @@ var ts; // Emit the constructor overload pinned comments ts.forEach(node.members, function (member) { if (member.kind === 142 /* Constructor */ && !member.body) { - emitOnlyPinnedOrTripleSlashComments(member); + emitCommentsOnNotEmittedNode(member); } // Check if there is any non-static property assignment if (member.kind === 139 /* PropertyDeclaration */ && member.initializer && (member.flags & 128 /* Static */) === 0) { @@ -32840,50 +32974,49 @@ var ts; write("void 0"); } function emitSerializedTypeNode(node) { - if (!node) { - return; - } - switch (node.kind) { - case 101 /* VoidKeyword */: - write("void 0"); - return; - case 158 /* ParenthesizedType */: - emitSerializedTypeNode(node.type); - return; - case 150 /* FunctionType */: - case 151 /* ConstructorType */: - write("Function"); - return; - case 154 /* ArrayType */: - case 155 /* TupleType */: - write("Array"); - return; - case 148 /* TypePredicate */: - case 118 /* BooleanKeyword */: - write("Boolean"); - return; - case 128 /* StringKeyword */: - case 9 /* StringLiteral */: - write("String"); - return; - case 126 /* NumberKeyword */: - write("Number"); - return; - case 129 /* SymbolKeyword */: - write("Symbol"); - return; - case 149 /* TypeReference */: - emitSerializedTypeReferenceNode(node); - return; - case 152 /* TypeQuery */: - case 153 /* TypeLiteral */: - case 156 /* UnionType */: - case 157 /* IntersectionType */: - case 115 /* AnyKeyword */: - break; - default: - ts.Debug.fail("Cannot serialize unexpected type node."); - break; + if (node) { + switch (node.kind) { + case 101 /* VoidKeyword */: + write("void 0"); + return; + case 158 /* ParenthesizedType */: + emitSerializedTypeNode(node.type); + return; + case 150 /* FunctionType */: + case 151 /* ConstructorType */: + write("Function"); + return; + case 154 /* ArrayType */: + case 155 /* TupleType */: + write("Array"); + return; + case 148 /* TypePredicate */: + case 118 /* BooleanKeyword */: + write("Boolean"); + return; + case 128 /* StringKeyword */: + case 9 /* StringLiteral */: + write("String"); + return; + case 126 /* NumberKeyword */: + write("Number"); + return; + case 129 /* SymbolKeyword */: + write("Symbol"); + return; + case 149 /* TypeReference */: + emitSerializedTypeReferenceNode(node); + return; + case 152 /* TypeQuery */: + case 153 /* TypeLiteral */: + case 156 /* UnionType */: + case 157 /* IntersectionType */: + case 115 /* AnyKeyword */: + break; + default: + ts.Debug.fail("Cannot serialize unexpected type node."); + break; + } } write("Object"); } @@ -33034,7 +33167,7 @@ var ts; return argumentsWritten; } function emitInterfaceDeclaration(node) { - emitOnlyPinnedOrTripleSlashComments(node); + emitCommentsOnNotEmittedNode(node); } function shouldEmitEnumDeclaration(node) { var isConstEnum = ts.isConst(node); @@ -33146,7 +33279,7 @@ var ts; // Emit only if this module is non-ambient. var shouldEmit = shouldEmitModuleDeclaration(node); if (!shouldEmit) { - return emitOnlyPinnedOrTripleSlashComments(node); + return emitCommentsOnNotEmittedNode(node); } var hoistedInDeclarationScope = shouldHoistDeclarationInSystemJsModule(node); var emitVarForModule = !hoistedInDeclarationScope && !isModuleMergedWithES6Class(node); @@ -33875,7 +34008,7 @@ var ts; } return; } - if (ts.isInternalModuleImportEqualsDeclaration(node)) { + if (ts.isInternalModuleImportEqualsDeclaration(node) && resolver.isValueAliasDeclaration(node)) { if (!hoistedVars) { hoistedVars = []; } @@ -34438,7 +34571,7 @@ var ts; function emitNodeConsideringCommentsOption(node, emitNodeConsideringSourcemap) { if (node) { if (node.flags & 2 /* Ambient */) { - return emitOnlyPinnedOrTripleSlashComments(node); + return emitCommentsOnNotEmittedNode(node); } if (isSpecializedCommentHandling(node)) { // This is the node that will handle its own comments and sourcemap @@ -34686,21 +34819,27 @@ var ts; } return leadingComments; } + function isPinnedComments(comment) { + return currentSourceFile.text.charCodeAt(comment.pos + 1) === 42 /* asterisk */ && + currentSourceFile.text.charCodeAt(comment.pos + 2) === 33 /* exclamation */; + } /** - * Removes all but the pinned or triple slash comments. - * @param ranges The array to be filtered - * @param onlyPinnedOrTripleSlashComments whether the filtering should be performed. - */ - function filterComments(ranges, onlyPinnedOrTripleSlashComments) { - // If we're removing comments, then we want to strip out all but the pinned or - // triple slash comments. - if (ranges && onlyPinnedOrTripleSlashComments) { - ranges = ts.filter(ranges, isPinnedOrTripleSlashComment); - if (ranges.length === 0) { - return undefined; - } + * Determine if the given comment is a triple-slash + * + * @return true if the comment is a triple-slash comment else false + **/ + function isTripleSlashComment(comment) { + // 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 + if (currentSourceFile.text.charCodeAt(comment.pos + 1) === 47 /* slash */ && + comment.pos + 2 < comment.end && + currentSourceFile.text.charCodeAt(comment.pos + 2) === 47 /* slash */) { + var textSubStr = currentSourceFile.text.substring(comment.pos, comment.end); + return textSubStr.match(ts.fullTripleSlashReferencePathRegEx) || + textSubStr.match(ts.fullTripleSlashAMDReferencePathRegEx) ? + true : false; } - return ranges; + return false; } function getLeadingCommentsToEmit(node) { // Emit the leading comments only if the parent's pos doesn't match because parent should take care of emitting these comments @@ -34725,23 +34864,46 @@ var ts; } } } - function emitOnlyPinnedOrTripleSlashComments(node) { - emitLeadingCommentsWorker(node, /*onlyPinnedOrTripleSlashComments:*/ true); + /** + * Emit comments associated with node that will not be emitted into JS file + */ + function emitCommentsOnNotEmittedNode(node) { + emitLeadingCommentsWorker(node, /*isEmittedNode:*/ false); } function emitLeadingComments(node) { - return emitLeadingCommentsWorker(node, /*onlyPinnedOrTripleSlashComments:*/ compilerOptions.removeComments); + return emitLeadingCommentsWorker(node, /*isEmittedNode:*/ true); } - function emitLeadingCommentsWorker(node, onlyPinnedOrTripleSlashComments) { - // 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. - var leadingComments = filterComments(getLeadingCommentsToEmit(node), onlyPinnedOrTripleSlashComments); + function emitLeadingCommentsWorker(node, isEmittedNode) { + if (compilerOptions.removeComments) { + return; + } + var leadingComments; + if (isEmittedNode) { + leadingComments = getLeadingCommentsToEmit(node); + } + else { + // If the node will not be emitted in JS, remove all the comments(normal, pinned and ///) associated with the node, + // unless it is a triple slash comment at the top of the file. + // For Example: + // /// + // declare var x; + // /// + // interface F {} + // The first /// will NOT be removed while the second one will be removed eventhough both node will not be emitted + if (node.pos === 0) { + leadingComments = ts.filter(getLeadingCommentsToEmit(node), isTripleSlashComment); + } + } ts.emitNewLineBeforeLeadingComments(currentSourceFile, writer, node, leadingComments); // Leading comments are emitted at /*leading comment1 */space/*leading comment*/space - ts.emitComments(currentSourceFile, writer, leadingComments, /*trailingSeparator*/ true, newLine, writeComment); + ts.emitComments(currentSourceFile, writer, leadingComments, /*trailingSeparator:*/ true, newLine, writeComment); } function emitTrailingComments(node) { + if (compilerOptions.removeComments) { + return; + } // Emit the trailing comments only if the parent's end doesn't match - var trailingComments = filterComments(getTrailingCommentsToEmit(node), /*onlyPinnedOrTripleSlashComments:*/ compilerOptions.removeComments); + var trailingComments = getTrailingCommentsToEmit(node); // trailing comments are emitted at space/*trailing comment1 */space/*trailing comment*/ ts.emitComments(currentSourceFile, writer, trailingComments, /*trailingSeparator*/ false, newLine, writeComment); } @@ -34751,11 +34913,17 @@ var ts; * ^ => pos; the function will emit "comment1" in the emitJS */ function emitTrailingCommentsOfPosition(pos) { - var trailingComments = filterComments(ts.getTrailingCommentRanges(currentSourceFile.text, pos), /*onlyPinnedOrTripleSlashComments:*/ compilerOptions.removeComments); + if (compilerOptions.removeComments) { + return; + } + var trailingComments = ts.getTrailingCommentRanges(currentSourceFile.text, pos); // trailing comments are emitted at space/*trailing comment1 */space/*trailing comment*/ ts.emitComments(currentSourceFile, writer, trailingComments, /*trailingSeparator*/ true, newLine, writeComment); } - function emitLeadingCommentsOfPosition(pos) { + function emitLeadingCommentsOfPositionWorker(pos) { + if (compilerOptions.removeComments) { + return; + } var leadingComments; if (hasDetachedComments(pos)) { // get comments without detached comments @@ -34765,13 +34933,26 @@ var ts; // get the leading comments from the node leadingComments = ts.getLeadingCommentRanges(currentSourceFile.text, pos); } - leadingComments = filterComments(leadingComments, compilerOptions.removeComments); ts.emitNewLineBeforeLeadingComments(currentSourceFile, writer, { pos: pos, end: pos }, leadingComments); // Leading comments are emitted at /*leading comment1 */space/*leading comment*/space ts.emitComments(currentSourceFile, writer, leadingComments, /*trailingSeparator*/ true, newLine, writeComment); } function emitDetachedComments(node) { - var leadingComments = ts.getLeadingCommentRanges(currentSourceFile.text, node.pos); + var leadingComments; + if (compilerOptions.removeComments) { + // removeComments is true, only reserve pinned comment at the top of file + // For example: + // /*! Pinned Comment */ + // + // var x = 10; + if (node.pos === 0) { + leadingComments = ts.filter(ts.getLeadingCommentRanges(currentSourceFile.text, node.pos), isPinnedComments); + } + } + else { + // removeComments is false, just get detached as normal and bypass the process to filter comment + leadingComments = ts.getLeadingCommentRanges(currentSourceFile.text, node.pos); + } if (leadingComments) { var detachedComments = []; var lastComment; @@ -34816,17 +34997,6 @@ var ts; write(shebang); } } - function isPinnedOrTripleSlashComment(comment) { - if (currentSourceFile.text.charCodeAt(comment.pos + 1) === 42 /* asterisk */) { - return currentSourceFile.text.charCodeAt(comment.pos + 2) === 33 /* exclamation */; - } - else if (currentSourceFile.text.charCodeAt(comment.pos + 1) === 47 /* slash */ && - comment.pos + 2 < comment.end && - currentSourceFile.text.charCodeAt(comment.pos + 2) === 47 /* slash */ && - currentSourceFile.text.substring(comment.pos, comment.end).match(ts.fullTripleSlashReferencePathRegEx)) { - return true; - } - } } function emitFile(jsFilePath, sourceFile) { emitJavaScript(jsFilePath, sourceFile); @@ -35103,7 +35273,7 @@ var ts; /* @internal */ ts.ioWriteTime = 0; /** The version of the TypeScript compiler release */ var emptyArray = []; - ts.version = "1.6.0"; + ts.version = "1.7.0"; function findConfigFile(searchPath) { var fileName = "tsconfig.json"; while (true) { @@ -35143,10 +35313,12 @@ var ts; var candidate = ts.normalizePath(ts.combinePaths(containingDirectory, moduleName)); var resolvedFileName = loadNodeModuleFromFile(candidate, /* loadOnlyDts */ false, failedLookupLocations, host); if (resolvedFileName) { - return { resolvedFileName: resolvedFileName, failedLookupLocations: failedLookupLocations }; + return { resolvedModule: { resolvedFileName: resolvedFileName }, failedLookupLocations: failedLookupLocations }; } resolvedFileName = loadNodeModuleFromDirectory(candidate, /* loadOnlyDts */ false, failedLookupLocations, host); - return { resolvedFileName: resolvedFileName, failedLookupLocations: failedLookupLocations }; + return resolvedFileName + ? { resolvedModule: { resolvedFileName: resolvedFileName }, failedLookupLocations: failedLookupLocations } + : { resolvedModule: undefined, failedLookupLocations: failedLookupLocations }; } else { return loadModuleFromNodeModules(moduleName, containingDirectory, host); @@ -35206,11 +35378,11 @@ var ts; var candidate = ts.normalizePath(ts.combinePaths(nodeModulesFolder, moduleName)); var result = loadNodeModuleFromFile(candidate, /* loadOnlyDts */ true, failedLookupLocations, host); if (result) { - return { resolvedFileName: result, failedLookupLocations: failedLookupLocations }; + return { resolvedModule: { resolvedFileName: result, isExternalLibraryImport: true }, failedLookupLocations: failedLookupLocations }; } result = loadNodeModuleFromDirectory(candidate, /* loadOnlyDts */ true, failedLookupLocations, host); if (result) { - return { resolvedFileName: result, failedLookupLocations: failedLookupLocations }; + return { resolvedModule: { resolvedFileName: result, isExternalLibraryImport: true }, failedLookupLocations: failedLookupLocations }; } } var parentPath = ts.getDirectoryPath(directory); @@ -35219,39 +35391,16 @@ var ts; } directory = parentPath; } - return { resolvedFileName: undefined, failedLookupLocations: failedLookupLocations }; + return { resolvedModule: undefined, failedLookupLocations: failedLookupLocations }; } - function baseUrlModuleNameResolver(moduleName, containingFile, baseUrl, host) { - ts.Debug.assert(baseUrl !== undefined); - var normalizedModuleName = ts.normalizeSlashes(moduleName); - var basePart = useBaseUrl(moduleName) ? baseUrl : ts.getDirectoryPath(containingFile); - var candidate = ts.normalizePath(ts.combinePaths(basePart, moduleName)); - var failedLookupLocations = []; - return ts.forEach(ts.supportedExtensions, function (ext) { return tryLoadFile(candidate + ext); }) || { resolvedFileName: undefined, failedLookupLocations: failedLookupLocations }; - function tryLoadFile(location) { - if (host.fileExists(location)) { - return { resolvedFileName: location, failedLookupLocations: failedLookupLocations }; - } - else { - failedLookupLocations.push(location); - return undefined; - } - } - } - ts.baseUrlModuleNameResolver = baseUrlModuleNameResolver; function nameStartsWithDotSlashOrDotDotSlash(name) { var i = name.lastIndexOf("./", 1); return i === 0 || (i === 1 && name.charCodeAt(0) === 46 /* dot */); } - function useBaseUrl(moduleName) { - // path is not rooted - // module name does not start with './' or '../' - return ts.getRootLength(moduleName) === 0 && !nameStartsWithDotSlashOrDotDotSlash(moduleName); - } function classicNameResolver(moduleName, containingFile, compilerOptions, host) { // module names that contain '!' are used to reference resources and are not resolved to actual files on disk if (moduleName.indexOf('!') != -1) { - return { resolvedFileName: undefined, failedLookupLocations: [] }; + return { resolvedModule: undefined, failedLookupLocations: [] }; } var searchPath = ts.getDirectoryPath(containingFile); var searchName; @@ -35282,7 +35431,9 @@ var ts; } searchPath = parentPath; } - return { resolvedFileName: referencedSourceFile, failedLookupLocations: failedLookupLocations }; + return referencedSourceFile + ? { resolvedModule: { resolvedFileName: referencedSourceFile }, failedLookupLocations: failedLookupLocations } + : { resolvedModule: undefined, failedLookupLocations: failedLookupLocations }; } ts.classicNameResolver = classicNameResolver; /* @internal */ @@ -35399,7 +35550,8 @@ var ts; function createProgram(rootNames, options, host, oldProgram) { var program; var files = []; - var diagnostics = ts.createDiagnosticCollection(); + var fileProcessingDiagnostics = ts.createDiagnosticCollection(); + var programDiagnostics = ts.createDiagnosticCollection(); var commonSourceDirectory; var diagnosticsProducingTypeChecker; var noDiagnosticsTypeChecker; @@ -35407,8 +35559,9 @@ var ts; var skipDefaultLib = options.noLib; var start = new Date().getTime(); host = host || createCompilerHost(options); - var resolveModuleNamesWorker = host.resolveModuleNames || - (function (moduleNames, containingFile) { return ts.map(moduleNames, function (moduleName) { return resolveModuleName(moduleName, containingFile, options, host).resolvedFileName; }); }); + var resolveModuleNamesWorker = host.resolveModuleNames + ? (function (moduleNames, containingFile) { return host.resolveModuleNames(moduleNames, containingFile); }) + : (function (moduleNames, containingFile) { return ts.map(moduleNames, function (moduleName) { return resolveModuleName(moduleName, containingFile, options, host).resolvedModule; }); }); var filesByName = ts.createFileMap(function (fileName) { return host.getCanonicalFileName(fileName); }); if (oldProgram) { // check properties that can affect structure of the program or module resolution strategy @@ -35455,7 +35608,8 @@ var ts; getNodeCount: function () { return getDiagnosticsProducingTypeChecker().getNodeCount(); }, getIdentifierCount: function () { return getDiagnosticsProducingTypeChecker().getIdentifierCount(); }, getSymbolCount: function () { return getDiagnosticsProducingTypeChecker().getSymbolCount(); }, - getTypeCount: function () { return getDiagnosticsProducingTypeChecker().getTypeCount(); } + getTypeCount: function () { return getDiagnosticsProducingTypeChecker().getTypeCount(); }, + getFileProcessingDiagnostics: function () { return fileProcessingDiagnostics; } }; return program; function getClassifiableNames() { @@ -35482,6 +35636,7 @@ var ts; } // check if program source files has changed in the way that can affect structure of the program var newSourceFiles = []; + var modifiedSourceFiles = []; for (var _i = 0, _a = oldProgram.getSourceFiles(); _i < _a.length; _i++) { var oldSourceFile = _a[_i]; var newSourceFile = host.getSourceFile(oldSourceFile.fileName, options.target); @@ -35510,14 +35665,21 @@ var ts; var resolutions = resolveModuleNamesWorker(moduleNames, newSourceFile.fileName); // ensure that module resolution results are still correct for (var i = 0; i < moduleNames.length; ++i) { - var oldResolution = ts.getResolvedModuleFileName(oldSourceFile, moduleNames[i]); - if (oldResolution !== resolutions[i]) { + var newResolution = resolutions[i]; + var oldResolution = ts.getResolvedModule(oldSourceFile, moduleNames[i]); + var resolutionChanged = oldResolution + ? !newResolution || + oldResolution.resolvedFileName !== newResolution.resolvedFileName || + !!oldResolution.isExternalLibraryImport !== !!newResolution.isExternalLibraryImport + : newResolution; + if (resolutionChanged) { return false; } } } // pass the cache of module resolutions from the old source file newSourceFile.resolvedModules = oldSourceFile.resolvedModules; + modifiedSourceFiles.push(newSourceFile); } else { // file has no changes - use it as is @@ -35532,6 +35694,11 @@ var ts; filesByName.set(file.fileName, file); } files = newSourceFiles; + fileProcessingDiagnostics = oldProgram.getFileProcessingDiagnostics(); + for (var _c = 0; _c < modifiedSourceFiles.length; _c++) { + var modifiedFile = modifiedSourceFiles[_c]; + fileProcessingDiagnostics.reattachFileDiagnostics(modifiedFile); + } oldProgram.structureIsReused = true; return true; } @@ -35633,8 +35800,9 @@ var ts; ts.Debug.assert(!!sourceFile.bindDiagnostics); var bindDiagnostics = sourceFile.bindDiagnostics; var checkDiagnostics = typeChecker.getDiagnostics(sourceFile, cancellationToken); - var programDiagnostics = diagnostics.getDiagnostics(sourceFile.fileName); - return bindDiagnostics.concat(checkDiagnostics).concat(programDiagnostics); + var fileProcessingDiagnosticsInFile = fileProcessingDiagnostics.getDiagnostics(sourceFile.fileName); + var programDiagnosticsInFile = programDiagnostics.getDiagnostics(sourceFile.fileName); + return bindDiagnostics.concat(checkDiagnostics).concat(fileProcessingDiagnosticsInFile).concat(programDiagnosticsInFile); }); } function getDeclarationDiagnosticsForFile(sourceFile, cancellationToken) { @@ -35649,7 +35817,8 @@ var ts; } function getOptionsDiagnostics() { var allDiagnostics = []; - ts.addRange(allDiagnostics, diagnostics.getGlobalDiagnostics()); + ts.addRange(allDiagnostics, fileProcessingDiagnostics.getGlobalDiagnostics()); + ts.addRange(allDiagnostics, programDiagnostics.getGlobalDiagnostics()); return ts.sortAndDeduplicateDiagnostics(allDiagnostics); } function getGlobalDiagnostics() { @@ -35747,10 +35916,10 @@ var ts; } if (diagnostic) { if (refFile !== undefined && refEnd !== undefined && refPos !== undefined) { - diagnostics.add(ts.createFileDiagnostic.apply(void 0, [refFile, refPos, refEnd - refPos, diagnostic].concat(diagnosticArgument))); + fileProcessingDiagnostics.add(ts.createFileDiagnostic.apply(void 0, [refFile, refPos, refEnd - refPos, diagnostic].concat(diagnosticArgument))); } else { - diagnostics.add(ts.createCompilerDiagnostic.apply(void 0, [diagnostic].concat(diagnosticArgument))); + fileProcessingDiagnostics.add(ts.createCompilerDiagnostic.apply(void 0, [diagnostic].concat(diagnosticArgument))); } } } @@ -35770,10 +35939,10 @@ var ts; // We haven't looked for this file, do so now and cache result var file = host.getSourceFile(fileName, options.target, function (hostErrorMessage) { if (refFile !== undefined && refPos !== undefined && refEnd !== undefined) { - diagnostics.add(ts.createFileDiagnostic(refFile, refPos, refEnd - refPos, ts.Diagnostics.Cannot_read_file_0_Colon_1, fileName, hostErrorMessage)); + fileProcessingDiagnostics.add(ts.createFileDiagnostic(refFile, refPos, refEnd - refPos, 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)); + fileProcessingDiagnostics.add(ts.createCompilerDiagnostic(ts.Diagnostics.Cannot_read_file_0_Colon_1, fileName, hostErrorMessage)); } }); filesByName.set(canonicalName, file); @@ -35803,10 +35972,10 @@ var ts; var sourceFileName = useAbsolutePath ? ts.getNormalizedAbsolutePath(file.fileName, host.getCurrentDirectory()) : file.fileName; if (canonicalName !== sourceFileName) { if (refFile !== undefined && refPos !== undefined && refEnd !== undefined) { - diagnostics.add(ts.createFileDiagnostic(refFile, refPos, refEnd - refPos, ts.Diagnostics.File_name_0_differs_from_already_included_file_name_1_only_in_casing, fileName, sourceFileName)); + fileProcessingDiagnostics.add(ts.createFileDiagnostic(refFile, refPos, refEnd - refPos, ts.Diagnostics.File_name_0_differs_from_already_included_file_name_1_only_in_casing, fileName, sourceFileName)); } else { - diagnostics.add(ts.createCompilerDiagnostic(ts.Diagnostics.File_name_0_differs_from_already_included_file_name_1_only_in_casing, fileName, sourceFileName)); + fileProcessingDiagnostics.add(ts.createCompilerDiagnostic(ts.Diagnostics.File_name_0_differs_from_already_included_file_name_1_only_in_casing, fileName, sourceFileName)); } } } @@ -35827,9 +35996,23 @@ var ts; var resolutions = resolveModuleNamesWorker(moduleNames, file.fileName); for (var i = 0; i < file.imports.length; ++i) { var resolution = resolutions[i]; - ts.setResolvedModuleName(file, moduleNames[i], resolution); + ts.setResolvedModule(file, moduleNames[i], resolution); if (resolution && !options.noResolve) { - findModuleSourceFile(resolution, file.imports[i]); + var importedFile = findModuleSourceFile(resolution.resolvedFileName, file.imports[i]); + if (importedFile && resolution.isExternalLibraryImport) { + if (!ts.isExternalModule(importedFile)) { + var start_2 = ts.getTokenPosOfNode(file.imports[i], file); + fileProcessingDiagnostics.add(ts.createFileDiagnostic(file, start_2, file.imports[i].end - start_2, ts.Diagnostics.Exported_external_package_typings_file_0_is_not_a_module_Please_contact_the_package_author_to_update_the_package_definition, importedFile.fileName)); + } + else if (!ts.fileExtensionIs(importedFile.fileName, ".d.ts")) { + var start_3 = ts.getTokenPosOfNode(file.imports[i], file); + fileProcessingDiagnostics.add(ts.createFileDiagnostic(file, start_3, file.imports[i].end - start_3, ts.Diagnostics.Exported_external_package_typings_can_only_be_in_d_ts_files_Please_contact_the_package_author_to_update_the_package_definition)); + } + else if (importedFile.referencedFiles.length) { + var firstRef = importedFile.referencedFiles[0]; + fileProcessingDiagnostics.add(ts.createFileDiagnostic(importedFile, firstRef.pos, firstRef.end - firstRef.pos, ts.Diagnostics.Exported_external_package_typings_file_cannot_contain_tripleslash_references_Please_contact_the_package_author_to_update_the_package_definition)); + } + } } } } @@ -35839,7 +36022,7 @@ var ts; } return; function findModuleSourceFile(fileName, nameLiteral) { - return findSourceFile(fileName, /* isDefaultLib */ false, file, nameLiteral.pos, nameLiteral.end); + return findSourceFile(fileName, /* isDefaultLib */ false, file, ts.skipTrivia(file.text, nameLiteral.pos), nameLiteral.end); } } function computeCommonSourceDirectory(sourceFiles) { @@ -35860,7 +36043,7 @@ var ts; for (var i = 0, n = Math.min(commonPathComponents.length, sourcePathComponents.length); i < n; 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)); + programDiagnostics.add(ts.createCompilerDiagnostic(ts.Diagnostics.Cannot_find_the_common_subdirectory_path_for_the_input_files)); return; } // New common path found that is 0 -> i-1 @@ -35885,7 +36068,7 @@ var ts; if (!ts.isDeclarationFile(sourceFile)) { var absoluteSourceFilePath = host.getCanonicalFileName(ts.getNormalizedAbsolutePath(sourceFile.fileName, currentDirectory)); if (absoluteSourceFilePath.indexOf(absoluteRootDirectoryPath) !== 0) { - diagnostics.add(ts.createCompilerDiagnostic(ts.Diagnostics.File_0_is_not_under_rootDir_1_rootDir_is_expected_to_contain_all_source_files, sourceFile.fileName, options.rootDir)); + programDiagnostics.add(ts.createCompilerDiagnostic(ts.Diagnostics.File_0_is_not_under_rootDir_1_rootDir_is_expected_to_contain_all_source_files, sourceFile.fileName, options.rootDir)); allFilesBelongToPath = false; } } @@ -35896,44 +36079,44 @@ var ts; function verifyCompilerOptions() { if (options.isolatedModules) { if (options.declaration) { - diagnostics.add(ts.createCompilerDiagnostic(ts.Diagnostics.Option_0_cannot_be_specified_with_option_1, "declaration", "isolatedModules")); + programDiagnostics.add(ts.createCompilerDiagnostic(ts.Diagnostics.Option_0_cannot_be_specified_with_option_1, "declaration", "isolatedModules")); } if (options.noEmitOnError) { - diagnostics.add(ts.createCompilerDiagnostic(ts.Diagnostics.Option_0_cannot_be_specified_with_option_1, "noEmitOnError", "isolatedModules")); + programDiagnostics.add(ts.createCompilerDiagnostic(ts.Diagnostics.Option_0_cannot_be_specified_with_option_1, "noEmitOnError", "isolatedModules")); } if (options.out) { - diagnostics.add(ts.createCompilerDiagnostic(ts.Diagnostics.Option_0_cannot_be_specified_with_option_1, "out", "isolatedModules")); + programDiagnostics.add(ts.createCompilerDiagnostic(ts.Diagnostics.Option_0_cannot_be_specified_with_option_1, "out", "isolatedModules")); } if (options.outFile) { - diagnostics.add(ts.createCompilerDiagnostic(ts.Diagnostics.Option_0_cannot_be_specified_with_option_1, "outFile", "isolatedModules")); + programDiagnostics.add(ts.createCompilerDiagnostic(ts.Diagnostics.Option_0_cannot_be_specified_with_option_1, "outFile", "isolatedModules")); } } if (options.inlineSourceMap) { if (options.sourceMap) { - diagnostics.add(ts.createCompilerDiagnostic(ts.Diagnostics.Option_0_cannot_be_specified_with_option_1, "sourceMap", "inlineSourceMap")); + programDiagnostics.add(ts.createCompilerDiagnostic(ts.Diagnostics.Option_0_cannot_be_specified_with_option_1, "sourceMap", "inlineSourceMap")); } if (options.mapRoot) { - diagnostics.add(ts.createCompilerDiagnostic(ts.Diagnostics.Option_0_cannot_be_specified_with_option_1, "mapRoot", "inlineSourceMap")); + programDiagnostics.add(ts.createCompilerDiagnostic(ts.Diagnostics.Option_0_cannot_be_specified_with_option_1, "mapRoot", "inlineSourceMap")); } if (options.sourceRoot) { - diagnostics.add(ts.createCompilerDiagnostic(ts.Diagnostics.Option_0_cannot_be_specified_with_option_1, "sourceRoot", "inlineSourceMap")); + programDiagnostics.add(ts.createCompilerDiagnostic(ts.Diagnostics.Option_0_cannot_be_specified_with_option_1, "sourceRoot", "inlineSourceMap")); } } if (options.inlineSources) { if (!options.sourceMap && !options.inlineSourceMap) { - diagnostics.add(ts.createCompilerDiagnostic(ts.Diagnostics.Option_inlineSources_can_only_be_used_when_either_option_inlineSourceMap_or_option_sourceMap_is_provided)); + programDiagnostics.add(ts.createCompilerDiagnostic(ts.Diagnostics.Option_inlineSources_can_only_be_used_when_either_option_inlineSourceMap_or_option_sourceMap_is_provided)); } } if (options.out && options.outFile) { - diagnostics.add(ts.createCompilerDiagnostic(ts.Diagnostics.Option_0_cannot_be_specified_with_option_1, "out", "outFile")); + programDiagnostics.add(ts.createCompilerDiagnostic(ts.Diagnostics.Option_0_cannot_be_specified_with_option_1, "out", "outFile")); } if (!options.sourceMap && (options.mapRoot || options.sourceRoot)) { // Error to specify --mapRoot or --sourceRoot without mapSourceFiles if (options.mapRoot) { - diagnostics.add(ts.createCompilerDiagnostic(ts.Diagnostics.Option_0_cannot_be_specified_without_specifying_option_1, "mapRoot", "sourceMap")); + programDiagnostics.add(ts.createCompilerDiagnostic(ts.Diagnostics.Option_0_cannot_be_specified_without_specifying_option_1, "mapRoot", "sourceMap")); } if (options.sourceRoot) { - diagnostics.add(ts.createCompilerDiagnostic(ts.Diagnostics.Option_0_cannot_be_specified_without_specifying_option_1, "sourceRoot", "sourceMap")); + programDiagnostics.add(ts.createCompilerDiagnostic(ts.Diagnostics.Option_0_cannot_be_specified_without_specifying_option_1, "sourceRoot", "sourceMap")); } return; } @@ -35942,22 +36125,22 @@ var ts; var firstExternalModuleSourceFile = ts.forEach(files, function (f) { return ts.isExternalModule(f) ? f : undefined; }); if (options.isolatedModules) { if (!options.module && languageVersion < 2 /* ES6 */) { - diagnostics.add(ts.createCompilerDiagnostic(ts.Diagnostics.Option_isolatedModules_can_only_be_used_when_either_option_module_is_provided_or_option_target_is_ES6_or_higher)); + programDiagnostics.add(ts.createCompilerDiagnostic(ts.Diagnostics.Option_isolatedModules_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_namespaces_when_the_isolatedModules_flag_is_provided)); + programDiagnostics.add(ts.createFileDiagnostic(firstNonExternalModuleSourceFile, span.start, span.length, ts.Diagnostics.Cannot_compile_namespaces_when_the_isolatedModules_flag_is_provided)); } } else if (firstExternalModuleSourceFile && languageVersion < 2 /* ES6 */ && !options.module) { // We cannot use createDiagnosticFromNode because nodes do not have parents yet var span = ts.getErrorSpanForNode(firstExternalModuleSourceFile, firstExternalModuleSourceFile.externalModuleIndicator); - diagnostics.add(ts.createFileDiagnostic(firstExternalModuleSourceFile, span.start, span.length, ts.Diagnostics.Cannot_compile_modules_unless_the_module_flag_is_provided)); + programDiagnostics.add(ts.createFileDiagnostic(firstExternalModuleSourceFile, span.start, span.length, ts.Diagnostics.Cannot_compile_modules_unless_the_module_flag_is_provided)); } // Cannot specify module gen target when in es6 or above if (options.module && languageVersion >= 2 /* ES6 */) { - diagnostics.add(ts.createCompilerDiagnostic(ts.Diagnostics.Cannot_compile_modules_into_commonjs_amd_system_or_umd_when_targeting_ES6_or_higher)); + programDiagnostics.add(ts.createCompilerDiagnostic(ts.Diagnostics.Cannot_compile_modules_into_commonjs_amd_system_or_umd_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 @@ -35982,25 +36165,25 @@ var ts; } if (options.noEmit) { if (options.out) { - diagnostics.add(ts.createCompilerDiagnostic(ts.Diagnostics.Option_0_cannot_be_specified_with_option_1, "noEmit", "out")); + programDiagnostics.add(ts.createCompilerDiagnostic(ts.Diagnostics.Option_0_cannot_be_specified_with_option_1, "noEmit", "out")); } if (options.outFile) { - diagnostics.add(ts.createCompilerDiagnostic(ts.Diagnostics.Option_0_cannot_be_specified_with_option_1, "noEmit", "outFile")); + programDiagnostics.add(ts.createCompilerDiagnostic(ts.Diagnostics.Option_0_cannot_be_specified_with_option_1, "noEmit", "outFile")); } if (options.outDir) { - diagnostics.add(ts.createCompilerDiagnostic(ts.Diagnostics.Option_0_cannot_be_specified_with_option_1, "noEmit", "outDir")); + programDiagnostics.add(ts.createCompilerDiagnostic(ts.Diagnostics.Option_0_cannot_be_specified_with_option_1, "noEmit", "outDir")); } if (options.declaration) { - diagnostics.add(ts.createCompilerDiagnostic(ts.Diagnostics.Option_0_cannot_be_specified_with_option_1, "noEmit", "declaration")); + programDiagnostics.add(ts.createCompilerDiagnostic(ts.Diagnostics.Option_0_cannot_be_specified_with_option_1, "noEmit", "declaration")); } } if (options.emitDecoratorMetadata && !options.experimentalDecorators) { - diagnostics.add(ts.createCompilerDiagnostic(ts.Diagnostics.Option_0_cannot_be_specified_without_specifying_option_1, "emitDecoratorMetadata", "experimentalDecorators")); + programDiagnostics.add(ts.createCompilerDiagnostic(ts.Diagnostics.Option_0_cannot_be_specified_without_specifying_option_1, "emitDecoratorMetadata", "experimentalDecorators")); } if (options.experimentalAsyncFunctions && options.target !== 2 /* ES6 */) { - diagnostics.add(ts.createCompilerDiagnostic(ts.Diagnostics.Option_experimentalAsyncFunctions_cannot_be_specified_when_targeting_ES5_or_lower)); + programDiagnostics.add(ts.createCompilerDiagnostic(ts.Diagnostics.Option_experimentalAsyncFunctions_cannot_be_specified_when_targeting_ES5_or_lower)); } } } @@ -36251,8 +36434,8 @@ var ts; "node": 2 /* NodeJs */, "classic": 1 /* Classic */ }, - experimental: true, - description: ts.Diagnostics.Specifies_module_resolution_strategy_Colon_node_Node_or_classic_TypeScript_pre_1_6 + description: ts.Diagnostics.Specifies_module_resolution_strategy_Colon_node_Node_js_or_classic_TypeScript_pre_1_6, + error: ts.Diagnostics.Argument_for_moduleResolution_option_must_be_node_or_classic } ]; var optionNameMapCache; @@ -36374,10 +36557,10 @@ var ts; * Read tsconfig.json file * @param fileName The path to the config file */ - function readConfigFile(fileName) { + function readConfigFile(fileName, readFile) { var text = ""; try { - text = ts.sys.readFile(fileName); + text = readFile(fileName); } catch (e) { return { error: ts.createCompilerDiagnostic(ts.Diagnostics.Cannot_read_file_0_Colon_1, fileName, e.message) }; @@ -38721,7 +38904,7 @@ var ts; function findPrecedingToken(position, sourceFile, startNode) { return find(startNode || sourceFile); function findRightmostToken(n) { - if (isToken(n)) { + if (isToken(n) || n.kind === 234 /* JsxText */) { return n; } var children = n.getChildren(); @@ -38729,23 +38912,32 @@ var ts; return candidate && findRightmostToken(candidate); } function find(n) { - if (isToken(n)) { + if (isToken(n) || n.kind === 234 /* JsxText */) { 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) { - // 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); - return candidate && findRightmostToken(candidate); - } - else { - // candidate should be in this node - return find(child); - } + // condition 'position < child.end' checks if child node end after the position + // in the example below this condition will be false for 'aaaa' and 'bbbb' and true for 'ccc' + // aaaa___bbbb___$__ccc + // after we found child node with end after the position we check if start of the node is after the position. + // if yes - then position is in the trivia and we need to look into the previous child to find the token in question. + // if no - position is in the node itself so we should recurse in it. + // NOTE: JsxText is a weird kind of node that can contain only whitespaces (since they are not counted as trivia). + // if this is the case - then we should assume that token in question is located in previous child. + if (position < child.end && (nodeHasTokens(child) || child.kind === 234 /* JsxText */)) { + var start = child.getStart(sourceFile); + var lookInPreviousChild = (start >= position) || + (child.kind === 234 /* JsxText */ && start === child.end); // whitespace only JsxText + if (lookInPreviousChild) { + // 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); + return candidate && findRightmostToken(candidate); + } + else { + // candidate should be in this node + return find(child); } } } @@ -39162,6 +39354,7 @@ var ts; ScanAction[ScanAction["RescanGreaterThanToken"] = 1] = "RescanGreaterThanToken"; ScanAction[ScanAction["RescanSlashToken"] = 2] = "RescanSlashToken"; ScanAction[ScanAction["RescanTemplateToken"] = 3] = "RescanTemplateToken"; + ScanAction[ScanAction["RescanJsxIdentifier"] = 4] = "RescanJsxIdentifier"; })(ScanAction || (ScanAction = {})); function getFormattingScanner(sourceFile, startPos, endPos) { scanner.setText(sourceFile.text); @@ -39235,6 +39428,18 @@ var ts; } return false; } + function shouldRescanJsxIdentifier(node) { + if (node.parent) { + switch (node.parent.kind) { + case 236 /* JsxAttribute */: + case 233 /* JsxOpeningElement */: + case 235 /* JsxClosingElement */: + case 232 /* JsxSelfClosingElement */: + return node.kind === 67 /* Identifier */; + } + } + return false; + } function shouldRescanSlashToken(container) { return container.kind === 10 /* RegularExpressionLiteral */; } @@ -39262,7 +39467,9 @@ var ts; ? 2 /* RescanSlashToken */ : shouldRescanTemplateToken(n) ? 3 /* RescanTemplateToken */ - : 0 /* Scan */; + : shouldRescanJsxIdentifier(n) + ? 4 /* RescanJsxIdentifier */ + : 0 /* Scan */; if (lastTokenInfo && expectedScanAction === lastScanAction) { // readTokenInfo was called before with the same expected scan action. // No need to re-scan text, return existing 'lastTokenInfo' @@ -39293,6 +39500,10 @@ var ts; currentToken = scanner.reScanTemplateToken(); lastScanAction = 3 /* RescanTemplateToken */; } + else if (expectedScanAction === 4 /* RescanJsxIdentifier */ && currentToken === 67 /* Identifier */) { + currentToken = scanner.scanJsxIdentifier(); + lastScanAction = 4 /* RescanJsxIdentifier */; + } else { lastScanAction = 0 /* Scan */; } @@ -39633,7 +39844,7 @@ var ts; this.FunctionOpenBraceLeftTokenRange = formatting.Shared.TokenRange.AnyIncludingMultilineComments; this.SpaceBeforeOpenBraceInFunction = new formatting.Rule(formatting.RuleDescriptor.create2(this.FunctionOpenBraceLeftTokenRange, 15 /* OpenBraceToken */), formatting.RuleOperation.create2(new formatting.RuleOperationContext(Rules.IsFunctionDeclContext, Rules.IsBeforeBlockContext, Rules.IsNotFormatOnEnter, Rules.IsSameLineTokenOrBeforeMultilineBlockContext), 2 /* Space */), 1 /* CanDeleteNewLines */); // Place a space before open brace in a TypeScript declaration that has braces as children (class, module, enum, etc) - this.TypeScriptOpenBraceLeftTokenRange = formatting.Shared.TokenRange.FromTokens([67 /* Identifier */, 3 /* MultiLineCommentTrivia */]); + this.TypeScriptOpenBraceLeftTokenRange = formatting.Shared.TokenRange.FromTokens([67 /* Identifier */, 3 /* MultiLineCommentTrivia */, 71 /* ClassKeyword */]); this.SpaceBeforeOpenBraceInTypeScriptDeclWithBlock = new formatting.Rule(formatting.RuleDescriptor.create2(this.TypeScriptOpenBraceLeftTokenRange, 15 /* OpenBraceToken */), formatting.RuleOperation.create2(new formatting.RuleOperationContext(Rules.IsTypeScriptDeclWithBlockContext, Rules.IsNotFormatOnEnter, Rules.IsSameLineTokenOrBeforeMultilineBlockContext), 2 /* Space */), 1 /* CanDeleteNewLines */); // Place a space before open brace in a control flow construct this.ControlOpenBraceLeftTokenRange = formatting.Shared.TokenRange.FromTokens([18 /* CloseParenToken */, 3 /* MultiLineCommentTrivia */, 77 /* DoKeyword */, 98 /* TryKeyword */, 83 /* FinallyKeyword */, 78 /* ElseKeyword */]); @@ -39666,7 +39877,7 @@ var ts; this.SpaceAfterSubtractWhenFollowedByUnaryMinus = new formatting.Rule(formatting.RuleDescriptor.create1(36 /* MinusToken */, 36 /* MinusToken */), formatting.RuleOperation.create2(new formatting.RuleOperationContext(Rules.IsSameLineTokenContext, Rules.IsBinaryOpContext), 2 /* Space */)); this.SpaceAfterSubtractWhenFollowedByPredecrement = new formatting.Rule(formatting.RuleDescriptor.create1(36 /* MinusToken */, 41 /* MinusMinusToken */), formatting.RuleOperation.create2(new formatting.RuleOperationContext(Rules.IsSameLineTokenContext, Rules.IsBinaryOpContext), 2 /* Space */)); this.NoSpaceBeforeComma = new formatting.Rule(formatting.RuleDescriptor.create2(formatting.Shared.TokenRange.Any, 24 /* CommaToken */), formatting.RuleOperation.create2(new formatting.RuleOperationContext(Rules.IsSameLineTokenContext), 8 /* Delete */)); - this.SpaceAfterCertainKeywords = new formatting.Rule(formatting.RuleDescriptor.create4(formatting.Shared.TokenRange.FromTokens([100 /* VarKeyword */, 96 /* ThrowKeyword */, 90 /* NewKeyword */, 76 /* DeleteKeyword */, 92 /* ReturnKeyword */, 99 /* TypeOfKeyword */]), formatting.Shared.TokenRange.Any), formatting.RuleOperation.create2(new formatting.RuleOperationContext(Rules.IsSameLineTokenContext), 2 /* Space */)); + this.SpaceAfterCertainKeywords = new formatting.Rule(formatting.RuleDescriptor.create4(formatting.Shared.TokenRange.FromTokens([100 /* VarKeyword */, 96 /* ThrowKeyword */, 90 /* NewKeyword */, 76 /* DeleteKeyword */, 92 /* ReturnKeyword */, 99 /* TypeOfKeyword */, 117 /* AwaitKeyword */]), formatting.Shared.TokenRange.Any), formatting.RuleOperation.create2(new formatting.RuleOperationContext(Rules.IsSameLineTokenContext), 2 /* Space */)); this.SpaceAfterLetConstInVariableDeclaration = new formatting.Rule(formatting.RuleDescriptor.create4(formatting.Shared.TokenRange.FromTokens([106 /* LetKeyword */, 72 /* ConstKeyword */]), formatting.Shared.TokenRange.Any), formatting.RuleOperation.create2(new formatting.RuleOperationContext(Rules.IsSameLineTokenContext, Rules.IsStartOfVariableDeclarationList), 2 /* Space */)); this.NoSpaceBeforeOpenParenInFuncCall = new formatting.Rule(formatting.RuleDescriptor.create2(formatting.Shared.TokenRange.Any, 17 /* OpenParenToken */), formatting.RuleOperation.create2(new formatting.RuleOperationContext(Rules.IsSameLineTokenContext, Rules.IsFunctionCallOrNewContext, Rules.IsPreviousTokenNotComma), 8 /* Delete */)); this.SpaceAfterFunctionInFuncDecl = new formatting.Rule(formatting.RuleDescriptor.create3(85 /* FunctionKeyword */, formatting.Shared.TokenRange.Any), formatting.RuleOperation.create2(new formatting.RuleOperationContext(Rules.IsFunctionDeclContext), 2 /* Space */)); @@ -39690,7 +39901,7 @@ var ts; // Use of module as a function call. e.g.: import m2 = module("m2"); this.NoSpaceAfterModuleImport = new formatting.Rule(formatting.RuleDescriptor.create2(formatting.Shared.TokenRange.FromTokens([123 /* ModuleKeyword */, 125 /* RequireKeyword */]), 17 /* OpenParenToken */), formatting.RuleOperation.create2(new formatting.RuleOperationContext(Rules.IsSameLineTokenContext), 8 /* Delete */)); // Add a space around certain TypeScript keywords - this.SpaceAfterCertainTypeScriptKeywords = new formatting.Rule(formatting.RuleDescriptor.create4(formatting.Shared.TokenRange.FromTokens([113 /* AbstractKeyword */, 71 /* ClassKeyword */, 120 /* DeclareKeyword */, 75 /* DefaultKeyword */, 79 /* EnumKeyword */, 80 /* ExportKeyword */, 81 /* ExtendsKeyword */, 121 /* GetKeyword */, 104 /* ImplementsKeyword */, 87 /* ImportKeyword */, 105 /* InterfaceKeyword */, 123 /* ModuleKeyword */, 124 /* NamespaceKeyword */, 108 /* PrivateKeyword */, 110 /* PublicKeyword */, 109 /* ProtectedKeyword */, 127 /* SetKeyword */, 111 /* StaticKeyword */]), formatting.Shared.TokenRange.Any), formatting.RuleOperation.create2(new formatting.RuleOperationContext(Rules.IsSameLineTokenContext), 2 /* Space */)); + this.SpaceAfterCertainTypeScriptKeywords = new formatting.Rule(formatting.RuleDescriptor.create4(formatting.Shared.TokenRange.FromTokens([113 /* AbstractKeyword */, 71 /* ClassKeyword */, 120 /* DeclareKeyword */, 75 /* DefaultKeyword */, 79 /* EnumKeyword */, 80 /* ExportKeyword */, 81 /* ExtendsKeyword */, 121 /* GetKeyword */, 104 /* ImplementsKeyword */, 87 /* ImportKeyword */, 105 /* InterfaceKeyword */, 123 /* ModuleKeyword */, 124 /* NamespaceKeyword */, 108 /* PrivateKeyword */, 110 /* PublicKeyword */, 109 /* ProtectedKeyword */, 127 /* SetKeyword */, 111 /* StaticKeyword */, 130 /* TypeKeyword */]), formatting.Shared.TokenRange.Any), formatting.RuleOperation.create2(new formatting.RuleOperationContext(Rules.IsSameLineTokenContext), 2 /* Space */)); this.SpaceBeforeCertainTypeScriptKeywords = new formatting.Rule(formatting.RuleDescriptor.create4(formatting.Shared.TokenRange.Any, formatting.Shared.TokenRange.FromTokens([81 /* ExtendsKeyword */, 104 /* ImplementsKeyword */])), formatting.RuleOperation.create2(new formatting.RuleOperationContext(Rules.IsSameLineTokenContext), 2 /* Space */)); // Treat string literals in module names as identifiers, and add a space between the literal and the opening Brace braces, e.g.: module "m2" { this.SpaceAfterModuleName = new formatting.Rule(formatting.RuleDescriptor.create1(9 /* StringLiteral */, 15 /* OpenBraceToken */), formatting.RuleOperation.create2(new formatting.RuleOperationContext(Rules.IsModuleDeclContext), 2 /* Space */)); @@ -39718,20 +39929,8 @@ var ts; this.SpaceBetweenYieldOrYieldStarAndOperand = new formatting.Rule(formatting.RuleDescriptor.create4(formatting.Shared.TokenRange.FromTokens([112 /* YieldKeyword */, 37 /* AsteriskToken */]), formatting.Shared.TokenRange.Any), formatting.RuleOperation.create2(new formatting.RuleOperationContext(Rules.IsSameLineTokenContext, Rules.IsYieldOrYieldStarWithOperand), 2 /* Space */)); // Async-await this.SpaceBetweenAsyncAndFunctionKeyword = new formatting.Rule(formatting.RuleDescriptor.create1(116 /* AsyncKeyword */, 85 /* FunctionKeyword */), formatting.RuleOperation.create2(new formatting.RuleOperationContext(Rules.IsSameLineTokenContext), 2 /* Space */)); - this.NoSpaceBetweenAsyncAndFunctionKeyword = new formatting.Rule(formatting.RuleDescriptor.create1(116 /* AsyncKeyword */, 85 /* FunctionKeyword */), formatting.RuleOperation.create2(new formatting.RuleOperationContext(Rules.IsSameLineTokenContext), 8 /* Delete */)); - this.SpaceAfterAwaitKeyword = new formatting.Rule(formatting.RuleDescriptor.create3(117 /* AwaitKeyword */, formatting.Shared.TokenRange.Any), formatting.RuleOperation.create2(new formatting.RuleOperationContext(Rules.IsSameLineTokenContext), 2 /* Space */)); - this.NoSpaceAfterAwaitKeyword = new formatting.Rule(formatting.RuleDescriptor.create3(117 /* AwaitKeyword */, formatting.Shared.TokenRange.Any), formatting.RuleOperation.create2(new formatting.RuleOperationContext(Rules.IsSameLineTokenContext), 8 /* Delete */)); - // Type alias declaration - this.SpaceAfterTypeKeyword = new formatting.Rule(formatting.RuleDescriptor.create3(130 /* TypeKeyword */, formatting.Shared.TokenRange.Any), formatting.RuleOperation.create2(new formatting.RuleOperationContext(Rules.IsSameLineTokenContext), 2 /* Space */)); - this.NoSpaceAfterTypeKeyword = new formatting.Rule(formatting.RuleDescriptor.create3(130 /* TypeKeyword */, formatting.Shared.TokenRange.Any), formatting.RuleOperation.create2(new formatting.RuleOperationContext(Rules.IsSameLineTokenContext), 8 /* Delete */)); // template string this.SpaceBetweenTagAndTemplateString = new formatting.Rule(formatting.RuleDescriptor.create3(67 /* Identifier */, formatting.Shared.TokenRange.FromTokens([11 /* NoSubstitutionTemplateLiteral */, 12 /* TemplateHead */])), formatting.RuleOperation.create2(new formatting.RuleOperationContext(Rules.IsSameLineTokenContext), 2 /* Space */)); - this.NoSpaceBetweenTagAndTemplateString = new formatting.Rule(formatting.RuleDescriptor.create3(67 /* Identifier */, formatting.Shared.TokenRange.FromTokens([11 /* NoSubstitutionTemplateLiteral */, 12 /* TemplateHead */])), formatting.RuleOperation.create2(new formatting.RuleOperationContext(Rules.IsSameLineTokenContext), 8 /* Delete */)); - // union type - this.SpaceBeforeBar = new formatting.Rule(formatting.RuleDescriptor.create3(46 /* BarToken */, formatting.Shared.TokenRange.Any), formatting.RuleOperation.create2(new formatting.RuleOperationContext(Rules.IsSameLineTokenContext), 2 /* Space */)); - this.NoSpaceBeforeBar = new formatting.Rule(formatting.RuleDescriptor.create3(46 /* BarToken */, formatting.Shared.TokenRange.Any), formatting.RuleOperation.create2(new formatting.RuleOperationContext(Rules.IsSameLineTokenContext), 8 /* Delete */)); - this.SpaceAfterBar = new formatting.Rule(formatting.RuleDescriptor.create2(formatting.Shared.TokenRange.Any, 46 /* BarToken */), formatting.RuleOperation.create2(new formatting.RuleOperationContext(Rules.IsSameLineTokenContext), 2 /* Space */)); - this.NoSpaceAfterBar = new formatting.Rule(formatting.RuleDescriptor.create2(formatting.Shared.TokenRange.Any, 46 /* BarToken */), formatting.RuleOperation.create2(new formatting.RuleOperationContext(Rules.IsSameLineTokenContext), 8 /* Delete */)); // These rules are higher in priority than user-configurable rules. this.HighPriorityCommonRules = [ @@ -39758,11 +39957,8 @@ var ts; this.NoSpaceBeforeOpenParenInFuncCall, this.SpaceBeforeBinaryKeywordOperator, this.SpaceAfterBinaryKeywordOperator, this.SpaceAfterVoidOperator, - this.SpaceBetweenAsyncAndFunctionKeyword, this.NoSpaceBetweenAsyncAndFunctionKeyword, - this.SpaceAfterAwaitKeyword, this.NoSpaceAfterAwaitKeyword, - this.SpaceAfterTypeKeyword, this.NoSpaceAfterTypeKeyword, - this.SpaceBetweenTagAndTemplateString, this.NoSpaceBetweenTagAndTemplateString, - this.SpaceBeforeBar, this.NoSpaceBeforeBar, this.SpaceAfterBar, this.NoSpaceAfterBar, + this.SpaceBetweenAsyncAndFunctionKeyword, + this.SpaceBetweenTagAndTemplateString, // TypeScript-specific rules this.NoSpaceAfterConstructor, this.NoSpaceAfterModuleImport, this.SpaceAfterCertainTypeScriptKeywords, this.SpaceBeforeCertainTypeScriptKeywords, @@ -39857,6 +40053,8 @@ var ts; case 180 /* ConditionalExpression */: case 187 /* AsExpression */: case 148 /* TypePredicate */: + case 156 /* UnionType */: + case 157 /* IntersectionType */: return true; // equals in binding elements: function foo([[x, y] = [1, 2]]) case 161 /* BindingElement */: @@ -39967,6 +40165,7 @@ var ts; Rules.NodeIsTypeScriptDeclWithBlockContext = function (node) { switch (node.kind) { case 212 /* ClassDeclaration */: + case 184 /* ClassExpression */: case 213 /* InterfaceDeclaration */: case 215 /* EnumDeclaration */: case 153 /* TypeLiteral */: @@ -40813,7 +41012,7 @@ var ts; } function getDynamicIndentation(node, nodeStartLine, indentation, delta) { return { - getIndentationForComment: function (kind) { + getIndentationForComment: function (kind, tokenIndentation) { switch (kind) { // preceding comment to the token that closes the indentation scope inherits the indentation from the scope // .. { @@ -40821,9 +41020,10 @@ var ts; // } case 16 /* CloseBraceToken */: case 20 /* CloseBracketToken */: + case 18 /* CloseParenToken */: return indentation + delta; } - return indentation; + return tokenIndentation !== -1 /* Unknown */ ? tokenIndentation : indentation; }, getIndentationForToken: function (line, kind) { if (nodeStartLine !== line && node.decorators) { @@ -41025,8 +41225,12 @@ var ts; processTrivia(currentTokenInfo.trailingTrivia, parent, childContextNode, dynamicIndentation); } if (indentToken) { - var indentNextTokenOrTrivia = true; + var tokenIndentation = (isTokenInRange && !rangeContainsError(currentTokenInfo.token)) ? + dynamicIndentation.getIndentationForToken(tokenStart.line, currentTokenInfo.token.kind) : + -1 /* Unknown */; if (currentTokenInfo.leadingTrivia) { + var commentIndentation = dynamicIndentation.getIndentationForComment(currentTokenInfo.token.kind, tokenIndentation); + var indentNextTokenOrTrivia = true; for (var _i = 0, _a = currentTokenInfo.leadingTrivia; _i < _a.length; _i++) { var triviaItem = _a[_i]; if (!ts.rangeContainsRange(originalRange, triviaItem)) { @@ -41034,14 +41238,12 @@ var ts; } switch (triviaItem.kind) { case 3 /* MultiLineCommentTrivia */: - var commentIndentation = dynamicIndentation.getIndentationForComment(currentTokenInfo.token.kind); indentMultilineComment(triviaItem, commentIndentation, /*firstLineIsIndented*/ !indentNextTokenOrTrivia); indentNextTokenOrTrivia = false; break; case 2 /* SingleLineCommentTrivia */: if (indentNextTokenOrTrivia) { - var commentIndentation_1 = dynamicIndentation.getIndentationForComment(currentTokenInfo.token.kind); - insertIndentation(triviaItem.pos, commentIndentation_1, /*lineAdded*/ false); + insertIndentation(triviaItem.pos, commentIndentation, /*lineAdded*/ false); indentNextTokenOrTrivia = false; } break; @@ -41052,8 +41254,7 @@ var ts; } } // 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); + if (tokenIndentation !== -1 /* Unknown */) { insertIndentation(currentTokenInfo.token.pos, tokenIndentation, lineAdded); lastIndentedLine = tokenStart.line; indentationOnLastIndentedLine = tokenIndentation; @@ -41704,6 +41905,7 @@ var ts; function nodeContentIsAlwaysIndented(kind) { switch (kind) { case 212 /* ClassDeclaration */: + case 184 /* ClassExpression */: case 213 /* InterfaceDeclaration */: case 215 /* EnumDeclaration */: case 214 /* TypeAliasDeclaration */: @@ -41728,13 +41930,13 @@ var ts; case 160 /* ArrayBindingPattern */: case 159 /* ObjectBindingPattern */: case 231 /* JsxElement */: + case 232 /* JsxSelfClosingElement */: case 140 /* MethodSignature */: case 145 /* CallSignature */: case 146 /* ConstructSignature */: case 136 /* Parameter */: case 150 /* FunctionType */: case 151 /* ConstructorType */: - case 156 /* UnionType */: case 158 /* ParenthesizedType */: case 168 /* TaggedTemplateExpression */: case 176 /* AwaitExpression */: @@ -42858,7 +43060,7 @@ var ts; var sourceMapText; // Create a compilerHost object to allow the compiler to read and write files var compilerHost = { - getSourceFile: function (fileName, target) { return fileName === inputFileName ? sourceFile : undefined; }, + getSourceFile: function (fileName, target) { return fileName === ts.normalizeSlashes(inputFileName) ? sourceFile : undefined; }, writeFile: function (name, text, writeByteOrderMark) { if (ts.fileExtensionIs(name, ".map")) { ts.Debug.assert(sourceMapText === undefined, "Unexpected multiple source map outputs for the file '" + name + "'"); @@ -43106,6 +43308,7 @@ var ts; // // export * from "mod" // export {a as b} from "mod" + // export import i = require("mod") while (token !== 1 /* EndOfFileToken */) { if (token === 120 /* DeclareKeyword */) { // declare module "mod" @@ -43226,6 +43429,25 @@ var ts; } } } + else if (token === 87 /* ImportKeyword */) { + token = scanner.scan(); + if (token === 67 /* Identifier */ || ts.isKeyword(token)) { + token = scanner.scan(); + if (token === 55 /* EqualsToken */) { + token = scanner.scan(); + if (token === 125 /* RequireKeyword */) { + token = scanner.scan(); + if (token === 17 /* OpenParenToken */) { + token = scanner.scan(); + if (token === 9 /* StringLiteral */) { + // export import i = require("mod"); + recordModuleName(); + } + } + } + } + } + } } token = scanner.scan(); } @@ -43929,9 +44151,9 @@ var ts; // 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 && ts.isWord(contextToken.kind)) { - var start_2 = new Date().getTime(); + var start_4 = new Date().getTime(); contextToken = ts.findPrecedingToken(contextToken.getFullStart(), sourceFile); - log("getCompletionData: Get previous token 2: " + (new Date().getTime() - start_2)); + log("getCompletionData: Get previous token 2: " + (new Date().getTime() - start_4)); } // Find the node where completion is requested on. // Also determine whether we are trying to complete with members of that node @@ -44179,13 +44401,13 @@ var ts; if (contextToken.kind === 9 /* StringLiteral */ || contextToken.kind === 10 /* RegularExpressionLiteral */ || ts.isTemplateLiteralKind(contextToken.kind)) { - var start_3 = contextToken.getStart(); + var start_5 = contextToken.getStart(); var end = contextToken.getEnd(); // To be "in" one of these literals, the position has to be: // 1. entirely within the token text. // 2. at the end position of an unterminated token. // 3. at the end of a regular expression (due to trailing flags like '/foo/g'). - if (start_3 < position && position < end) { + if (start_5 < position && position < end) { return true; } if (position === end) { @@ -46349,6 +46571,7 @@ var ts; result.push(getReferenceEntryFromNode(node)); } break; + case 184 /* ClassExpression */: case 212 /* ClassDeclaration */: // Make sure the container belongs to the same class // and has the appropriate static modifier from the original container. @@ -48557,7 +48780,10 @@ var ts; if ("getModuleResolutionsForFile" in this.shimHost) { this.resolveModuleNames = function (moduleNames, containingFile) { var resolutionsInFile = JSON.parse(_this.shimHost.getModuleResolutionsForFile(containingFile)); - return ts.map(moduleNames, function (name) { return ts.lookUp(resolutionsInFile, name); }); + return ts.map(moduleNames, function (name) { + var result = ts.lookUp(resolutionsInFile, name); + return result ? { resolvedFileName: result } : undefined; + }); }; } } @@ -49104,7 +49330,11 @@ var ts; var _this = this; return this.forwardJSONCall("resolveModuleName('" + fileName + "')", function () { var compilerOptions = JSON.parse(compilerOptionsJson); - return ts.resolveModuleName(moduleName, ts.normalizeSlashes(fileName), compilerOptions, _this.host); + var result = ts.resolveModuleName(moduleName, ts.normalizeSlashes(fileName), compilerOptions, _this.host); + return { + resolvedFileName: result.resolvedModule ? result.resolvedModule.resolvedFileName : undefined, + failedLookupLocations: result.failedLookupLocations + }; }); }; CoreServicesShimObject.prototype.getPreProcessedFileInfo = function (fileName, sourceTextSnapshot) { diff --git a/package.json b/package.json index abd81e12f47..607a38552ba 100644 --- a/package.json +++ b/package.json @@ -2,7 +2,7 @@ "name": "typescript", "author": "Microsoft Corp.", "homepage": "http://typescriptlang.org/", - "version": "1.6.0", + "version": "1.7.0", "license": "Apache-2.0", "description": "TypeScript is a language for application scale JavaScript development", "keywords": [ @@ -35,15 +35,19 @@ "browserify": "latest", "istanbul": "latest", "mocha-fivemat-progress-reporter": "latest", - "tslint": "latest" + "tslint": "latest", + "tsd": "latest" }, "scripts": { "pretest": "jake tests", - "test": "jake runtests", + "test": "jake runtests && npm run lint", "build": "npm run build:compiler && npm run build:tests", "build:compiler": "jake local", "build:tests": "jake tests", - "clean": "jake clean" + "clean": "jake clean", + "jake": "jake", + "lint": "jake lint", + "setup-hooks": "node scripts/link-hooks.js" }, "browser": { "buffer": false, diff --git a/scripts/hooks/post-checkout b/scripts/hooks/post-checkout new file mode 100644 index 00000000000..fb41e4e8652 --- /dev/null +++ b/scripts/hooks/post-checkout @@ -0,0 +1,2 @@ +#!/bin/sh +npm run jake -- generate-diagnostics \ No newline at end of file diff --git a/scripts/importDefinitelyTypedTests.ts b/scripts/importDefinitelyTypedTests.ts deleted file mode 100644 index f33ba1dd525..00000000000 --- a/scripts/importDefinitelyTypedTests.ts +++ /dev/null @@ -1,125 +0,0 @@ -declare var require: any, process: any; -declare var __dirname: any; - -var fs = require("fs"); -var path = require("path"); -var child_process = require('child_process'); - -var tscRoot = path.join(__dirname, "..\\"); -var tscPath = path.join(tscRoot, "built", "instrumented", "tsc.js"); -var rwcTestPath = path.join(tscRoot, "tests", "cases", "rwc", "dt"); -var definitelyTypedRoot = process.argv[2]; - -function fileExtensionIs(path: string, extension: string): boolean { - var pathLen = path.length; - var extLen = extension.length; - return pathLen > extLen && path.substr(pathLen - extLen, extLen).toLocaleLowerCase() === extension.toLocaleLowerCase(); -} - -function copyFileSync(source, destination) { - var text = fs.readFileSync(source); - fs.writeFileSync(destination, text); -} - -function importDefinitelyTypedTest(testCaseName: string, testFiles: string[], responseFile: string ) { - var cmd = "node " + tscPath + " --module commonjs " + testFiles.join(" "); - if (responseFile) cmd += " @" + responseFile; - - var testDirectoryName = testCaseName + "_" + Math.floor((Math.random() * 10000) + 1); - var testDirectoryPath = path.join(process.env["temp"], testDirectoryName); - if (fs.existsSync(testDirectoryPath)) { - throw new Error("Could not create test directory"); - } - fs.mkdirSync(testDirectoryPath); - - child_process.exec(cmd, { - maxBuffer: 1 * 1024 * 1024, - cwd: testDirectoryPath - }, (error, stdout, stderr) => { - console.log("importing " + testCaseName + " ..."); - console.log(cmd); - - if (error) { - console.log("importing " + testCaseName + " ..."); - console.log(cmd); - console.log("==> error " + JSON.stringify(error)); - console.log("==> stdout " + String(stdout)); - console.log("==> stderr " + String(stderr)); - console.log("\r\n"); - return; - } - - // copy generated file to output location - var outputFilePath = path.join(testDirectoryPath, "iocapture0.json"); - var testCasePath = path.join(rwcTestPath, "DefinitelyTyped_" + testCaseName + ".json"); - copyFileSync(outputFilePath, testCasePath); - - //console.log("output generated at: " + outputFilePath); - - if (!fs.existsSync(testCasePath)) { - throw new Error("could not find test case at: " + testCasePath); - } - else { - fs.unlinkSync(outputFilePath); - fs.rmdirSync(testDirectoryPath); - //console.log("testcase generated at: " + testCasePath); - //console.log("Done."); - } - //console.log("\r\n"); - - }) - .on('error', function (error) { - console.log("==> error " + JSON.stringify(error)); - console.log("\r\n"); - }); -} - -function importDefinitelyTypedTests(definitelyTypedRoot: string): void { - fs.readdir(definitelyTypedRoot, (err, subDirectorys) => { - if (err) throw err; - - subDirectorys - .filter(d => ["_infrastructure", "node_modules", ".git"].indexOf(d) < 0) - .filter(i => i.indexOf("sipml") >=0 ) - .filter(i => fs.statSync(path.join(definitelyTypedRoot, i)).isDirectory()) - .forEach(d => { - var directoryPath = path.join(definitelyTypedRoot, d); - fs.readdir(directoryPath, function (err, files) { - if (err) throw err; - - var tsFiles = []; - var testFiles = []; - var paramFile; - - files - .map(f => path.join(directoryPath, f)) - .forEach(f => { - if (fileExtensionIs(f, ".ts")) tsFiles.push(f); - else if (fileExtensionIs(f, ".tscparams")) paramFile = f; - - if (fileExtensionIs(f, "-tests.ts")) testFiles.push(f); - }); - - if (testFiles.length === 0) { - // no test files but multiple d.ts's, e.g. winjs - var regexp = new RegExp(d + "(([-][0-9])|([\.]d[\.]ts))"); - if (tsFiles.length > 1 && tsFiles.every(t => fileExtensionIs(t, ".d.ts") && regexp.test(t))) { - tsFiles.forEach(filename => { - importDefinitelyTypedTest(path.basename(filename, ".d.ts"), [filename], paramFile); - }); - } - else { - importDefinitelyTypedTest(d, tsFiles, paramFile); - } - } - else { - testFiles.forEach(filename => { - importDefinitelyTypedTest(path.basename(filename, "-tests.ts"), [filename], paramFile); - }); - } - }); - }) - }); -} - -importDefinitelyTypedTests(definitelyTypedRoot); \ No newline at end of file diff --git a/scripts/importDefinitelyTypedTests/importDefinitelyTypedTests.ts b/scripts/importDefinitelyTypedTests/importDefinitelyTypedTests.ts new file mode 100644 index 00000000000..1ae3725fff2 --- /dev/null +++ b/scripts/importDefinitelyTypedTests/importDefinitelyTypedTests.ts @@ -0,0 +1,161 @@ +import * as fs from "fs"; +import * as path from "path"; +import * as child_process from "child_process"; + + +interface Map { + [key: string]: T; +} + +declare var process: { + argv: string[]; + env: Map; + exit(exitCode?: number): void; +} + +main(); +function main() { + const [, progName, tscRoot, definitelyTypedRoot] = process.argv; + if (process.argv.length !== 4) { + if (process.argv.length < 2) { + throw "Expected at least 2 argv elements." + } + console.log("Usage:") + console.log(` node ${path.relative(__dirname, progName)} [TypeScript Repo Root] [DefinitelyTyped Repo Root]`); + return; + } + + const tscPath = path.resolve(tscRoot, "built", "local", "tsc.js"); + const rwcTestPath = path.resolve(tscRoot, "internal", "cases", "rwc"); + const resolvedDefinitelyTypedRoot = path.resolve(definitelyTypedRoot); + + console.log(`Resolved TypeScript Compiler Path: '${tscPath}'.`); + console.log(`Resolved TypeScript RWC Path: '${rwcTestPath}'.`); + console.log(`Resolved DefinitelyTyped Repo Root: '${resolvedDefinitelyTypedRoot}'.`); + importDefinitelyTypedTests(tscPath, rwcTestPath, resolvedDefinitelyTypedRoot); +} + +function filePathEndsWith(path: string, endingString: string): boolean { + const pathLen = path.length; + const extLen = endingString.length; + return pathLen > extLen && path.substr(pathLen - extLen, extLen).toLocaleLowerCase() === endingString.toLocaleLowerCase(); +} + +function copyFileSync(source: string, destination: string) { + let text = fs.readFileSync(source); + fs.writeFileSync(destination, text); +} + +function importDefinitelyTypedTest(tscPath: string, rwcTestPath: string, testCaseName: string, testFiles: string[], responseFile: string ) { + let cmd = "node " + tscPath + " --module commonjs " + testFiles.join(" "); + if (responseFile) { + cmd += " @" + responseFile; + } + + let testDirectoryName = testCaseName + "_" + Math.floor((Math.random() * 10000) + 1); + let testDirectoryPath = path.join(process.env["temp"], testDirectoryName); + if (fs.existsSync(testDirectoryPath)) { + throw new Error("Could not create test directory"); + } + fs.mkdirSync(testDirectoryPath); + + child_process.exec(cmd, { + maxBuffer: 1 * 1024 * 1024, + cwd: testDirectoryPath + }, (error, stdout, stderr) => { + console.log("importing " + testCaseName + " ..."); + console.log(cmd); + + if (error) { + console.log("importing " + testCaseName + " ..."); + console.log(cmd); + console.log("==> error " + JSON.stringify(error)); + console.log("==> stdout " + String(stdout)); + console.log("==> stderr " + String(stderr)); + console.log("\r\n"); + return; + } + + // copy generated file to output location + let outputFilePath = path.join(testDirectoryPath, "iocapture0.json"); + let testCasePath = path.join(rwcTestPath, "DefinitelyTyped_" + testCaseName + ".json"); + copyFileSync(outputFilePath, testCasePath); + + //console.log("output generated at: " + outputFilePath); + + if (!fs.existsSync(testCasePath)) { + throw new Error("could not find test case at: " + testCasePath); + } + else { + fs.unlinkSync(outputFilePath); + fs.rmdirSync(testDirectoryPath); + //console.log("testcase generated at: " + testCasePath); + //console.log("Done."); + } + //console.log("\r\n"); + + }) + .on('error', (error: any) => { + console.log("==> error " + JSON.stringify(error)); + console.log("\r\n"); + }); +} + +function importDefinitelyTypedTests(tscPath: string, rwcTestPath: string, definitelyTypedRoot: string): void { + fs.readdir(definitelyTypedRoot, (err, subDirectories) => { + if (err) { + throw err; + } + + // When you just want to test the script out on one or two files, + // just add a line like the following: + // + // .filter(d => d.indexOf("sipml") >= 0 ) + subDirectories + .filter(d => ["_infrastructure", "node_modules", ".git"].indexOf(d) < 0) + .filter(i => fs.statSync(path.join(definitelyTypedRoot, i)).isDirectory()) + .forEach(d => { + const directoryPath = path.join(definitelyTypedRoot, d); + fs.readdir(directoryPath, function (err, files) { + if (err) { + throw err; + } + + let tsFiles: string[] = []; + let testFiles: string[] = []; + let paramFile: string; + + for (const filePath of files.map(f => path.join(directoryPath, f))) { + if (filePathEndsWith(filePath, ".ts")) { + tsFiles.push(filePath); + + if (filePathEndsWith(filePath, "-tests.ts")) { + testFiles.push(filePath); + } + } + else if (filePathEndsWith(filePath, ".tscparams")) { + paramFile = filePath; + } + } + + if (testFiles.length === 0) { + // no test files but multiple d.ts's, e.g. winjs + const regexp = new RegExp(d + "(([-][0-9])|([\.]d[\.]ts))"); + if (tsFiles.length > 1 && tsFiles.every(t => filePathEndsWith(t, ".d.ts") && regexp.test(t))) { + for (const fileName of tsFiles) { + importDefinitelyTypedTest(tscPath, rwcTestPath, path.basename(fileName, ".d.ts"), [fileName], paramFile); + } + } + else { + importDefinitelyTypedTest(tscPath, rwcTestPath, d, tsFiles, paramFile); + } + } + else { + for (const fileName of tsFiles) { + importDefinitelyTypedTest(tscPath, rwcTestPath, path.basename(fileName, "-tests.ts"), [fileName], paramFile); + } + } + }); + }) + }); +} \ No newline at end of file diff --git a/scripts/importDefinitelyTypedTests/tsconfig.json b/scripts/importDefinitelyTypedTests/tsconfig.json new file mode 100644 index 00000000000..dede4572531 --- /dev/null +++ b/scripts/importDefinitelyTypedTests/tsconfig.json @@ -0,0 +1,16 @@ +{ + "compilerOptions": { + "module": "commonjs", + "target": "ES5", + "noImplicitAny": true, + "outDir": "./", + "rootDir": ".", + "sourceMap": false + }, + "files": [ + "../typings/node/node.d.ts", + "importDefinitelyTypedTests.ts" + ], + "exclude": [ + ] +} \ No newline at end of file diff --git a/scripts/link-hooks.js b/scripts/link-hooks.js new file mode 100644 index 00000000000..33b5d4fd94f --- /dev/null +++ b/scripts/link-hooks.js @@ -0,0 +1,20 @@ +var fs = require("fs"); +var path = require("path"); + +var hooks = [ + "post-checkout" +]; + +hooks.forEach(function (hook) { + var hookInSourceControl = path.resolve(__dirname, "hooks", hook); + + if (fs.existsSync(hookInSourceControl)) { + var hookInHiddenDirectory = path.resolve(__dirname, "..", ".git", "hooks", hook); + + if (fs.existsSync(hookInHiddenDirectory)) { + fs.unlinkSync(hookInHiddenDirectory); + } + + fs.linkSync(hookInSourceControl, hookInHiddenDirectory); + } +}); \ No newline at end of file diff --git a/scripts/processDiagnosticMessages.ts b/scripts/processDiagnosticMessages.ts index 0a81b993616..1eead82d9fe 100644 --- a/scripts/processDiagnosticMessages.ts +++ b/scripts/processDiagnosticMessages.ts @@ -10,10 +10,6 @@ interface InputDiagnosticMessageTable { [msg: string]: DiagnosticDetails; } -interface IIndexable { - [key: string]: V; -} - function main(): void { var sys = ts.sys; if (sys.args.length < 1) { @@ -25,21 +21,49 @@ function main(): void { var inputFilePath = sys.args[0].replace(/\\/g, "/"); var inputStr = sys.readFile(inputFilePath); - var diagnosticMesages: InputDiagnosticMessageTable = JSON.parse(inputStr); + var diagnosticMessages: InputDiagnosticMessageTable = JSON.parse(inputStr); - var names = Utilities.getObjectKeys(diagnosticMesages); + var names = Utilities.getObjectKeys(diagnosticMessages); var nameMap = buildUniqueNameMap(names); - var infoFileOutput = buildInfoFileOutput(diagnosticMesages, nameMap); - + var infoFileOutput = buildInfoFileOutput(diagnosticMessages, nameMap); + checkForUniqueCodes(names, diagnosticMessages); + // TODO: Fix path joining var inputDirectory = inputFilePath.substr(0,inputFilePath.lastIndexOf("/")); var fileOutputPath = inputDirectory + "/diagnosticInformationMap.generated.ts"; sys.writeFile(fileOutputPath, infoFileOutput); } -function buildUniqueNameMap(names: string[]): IIndexable { - var nameMap: IIndexable = {}; +function checkForUniqueCodes(messages: string[], diagnosticTable: InputDiagnosticMessageTable) { + const originalMessageForCode: string[] = []; + let numConflicts = 0; + + for (const currentMessage of messages) { + const code = diagnosticTable[currentMessage].code; + + if (code in originalMessageForCode) { + const originalMessage = originalMessageForCode[code]; + ts.sys.write("\x1b[91m"); // High intensity red. + ts.sys.write("Error"); + ts.sys.write("\x1b[0m"); // Reset formatting. + ts.sys.write(`: Diagnostic code '${code}' conflicts between "${originalMessage}" and "${currentMessage}".`); + ts.sys.write(ts.sys.newLine + ts.sys.newLine); + + numConflicts++; + } + else { + originalMessageForCode[code] = currentMessage; + } + } + + if (numConflicts > 0) { + throw new Error(`Found ${numConflicts} conflict(s) in diagnostic codes.`); + } +} + +function buildUniqueNameMap(names: string[]): ts.Map { + var nameMap: ts.Map = {}; var uniqueNames = NameGenerator.ensureUniqueness(names, /* isCaseSensitive */ false, /* isFixed */ undefined); @@ -50,7 +74,7 @@ function buildUniqueNameMap(names: string[]): IIndexable { return nameMap; } -function buildInfoFileOutput(messageTable: InputDiagnosticMessageTable, nameMap: IIndexable): string { +function buildInfoFileOutput(messageTable: InputDiagnosticMessageTable, nameMap: ts.Map): string { var result = '// \r\n' + '/// \r\n' + @@ -172,7 +196,7 @@ module Utilities { } // Like Object.keys - export function getObjectKeys(obj: any): string[]{ + export function getObjectKeys(obj: any): string[] { var result: string[] = []; for (var name in obj) { diff --git a/scripts/tsd.json b/scripts/tsd.json new file mode 100644 index 00000000000..c2fc88a0b0f --- /dev/null +++ b/scripts/tsd.json @@ -0,0 +1,12 @@ +{ + "version": "v4", + "repo": "borisyankov/DefinitelyTyped", + "ref": "master", + "path": "typings", + "bundle": "typings/tsd.d.ts", + "installed": { + "node/node.d.ts": { + "commit": "5f480287834a2615274eea31574b713e64decf17" + } + } +} diff --git a/scripts/tslint/booleanTriviaRule.ts b/scripts/tslint/booleanTriviaRule.ts new file mode 100644 index 00000000000..be32a870ff4 --- /dev/null +++ b/scripts/tslint/booleanTriviaRule.ts @@ -0,0 +1,50 @@ +/// +/// + + +export class Rule extends Lint.Rules.AbstractRule { + public static FAILURE_STRING_FACTORY = (name: string, currently: string) => `Tag boolean argument as '${name}' (currently '${currently}')`; + + public apply(sourceFile: ts.SourceFile): Lint.RuleFailure[] { + const program = ts.createProgram([sourceFile.fileName], Lint.createCompilerOptions()); + const checker = program.getTypeChecker(); + return this.applyWithWalker(new BooleanTriviaWalker(checker, program.getSourceFile(sourceFile.fileName), this.getOptions())); + } +} + +class BooleanTriviaWalker extends Lint.RuleWalker { + constructor(private checker: ts.TypeChecker, file: ts.SourceFile, opts: Lint.IOptions) { + super(file, opts); + } + + visitCallExpression(node: ts.CallExpression) { + super.visitCallExpression(node); + if (node.arguments) { + const targetCallSignature = this.checker.getResolvedSignature(node); + if (!!targetCallSignature) { + const targetParameters = targetCallSignature.getParameters(); + const source = this.getSourceFile(); + for (let index = 0; index < targetParameters.length; index++) { + const param = targetParameters[index]; + const arg = node.arguments[index]; + if (!(arg && param)) continue; + + const argType = this.checker.getContextualType(arg); + if (argType && (argType.getFlags() & ts.TypeFlags.Boolean)) { + if (arg.kind !== ts.SyntaxKind.TrueKeyword && arg.kind !== ts.SyntaxKind.FalseKeyword) { + continue; + } + let triviaContent: string; + const ranges = ts.getLeadingCommentRanges(arg.getFullText(), 0); + if (ranges && ranges.length === 1 && ranges[0].kind === ts.SyntaxKind.MultiLineCommentTrivia) { + triviaContent = arg.getFullText().slice(ranges[0].pos + 2, ranges[0].end - 2); //+/-2 to remove /**/ + } + if (triviaContent !== param.getName()) { + this.addFailure(this.createFailure(arg.getStart(source), arg.getWidth(source), Rule.FAILURE_STRING_FACTORY(param.getName(), triviaContent))); + } + } + } + } + } + } +} diff --git a/scripts/tslint/nextLineRule.ts b/scripts/tslint/nextLineRule.ts new file mode 100644 index 00000000000..6d803fc7f88 --- /dev/null +++ b/scripts/tslint/nextLineRule.ts @@ -0,0 +1,61 @@ +/// +/// + +const OPTION_CATCH = "check-catch"; +const OPTION_ELSE = "check-else"; + +export class Rule extends Lint.Rules.AbstractRule { + public static CATCH_FAILURE_STRING = "'catch' should not be on the same line as the preceeding block's curly brace"; + public static ELSE_FAILURE_STRING = "'else' should not be on the same line as the preceeding block's curly brace"; + + public apply(sourceFile: ts.SourceFile): Lint.RuleFailure[] { + return this.applyWithWalker(new NextLineWalker(sourceFile, this.getOptions())); + } +} + +class NextLineWalker extends Lint.RuleWalker { + public visitIfStatement(node: ts.IfStatement) { + const sourceFile = node.getSourceFile(); + const thenStatement = node.thenStatement; + + const elseStatement = node.elseStatement; + if (!!elseStatement) { + // find the else keyword + const elseKeyword = getFirstChildOfKind(node, ts.SyntaxKind.ElseKeyword); + if (this.hasOption(OPTION_ELSE) && !!elseKeyword) { + const thenStatementEndLoc = sourceFile.getLineAndCharacterOfPosition(thenStatement.getEnd()); + const elseKeywordLoc = sourceFile.getLineAndCharacterOfPosition(elseKeyword.getStart(sourceFile)); + if (thenStatementEndLoc.line === elseKeywordLoc.line) { + const failure = this.createFailure(elseKeyword.getStart(sourceFile), elseKeyword.getWidth(sourceFile), Rule.ELSE_FAILURE_STRING); + this.addFailure(failure); + } + } + } + + super.visitIfStatement(node); + } + + public visitTryStatement(node: ts.TryStatement) { + const sourceFile = node.getSourceFile(); + const catchClause = node.catchClause; + + // "visit" try block + const tryBlock = node.tryBlock; + + if (this.hasOption(OPTION_CATCH) && !!catchClause) { + const tryClosingBrace = tryBlock.getLastToken(sourceFile); + const catchKeyword = catchClause.getFirstToken(sourceFile); + const tryClosingBraceLoc = sourceFile.getLineAndCharacterOfPosition(tryClosingBrace.getEnd()); + const catchKeywordLoc = sourceFile.getLineAndCharacterOfPosition(catchKeyword.getStart(sourceFile)); + if (tryClosingBraceLoc.line === catchKeywordLoc.line) { + const failure = this.createFailure(catchKeyword.getStart(sourceFile), catchKeyword.getWidth(sourceFile), Rule.CATCH_FAILURE_STRING); + this.addFailure(failure); + } + } + super.visitTryStatement(node); + } +} + +function getFirstChildOfKind(node: ts.Node, kind: ts.SyntaxKind) { + return node.getChildren().filter((child) => child.kind === kind)[0]; +} diff --git a/scripts/tslint/noInferrableTypesRule.ts b/scripts/tslint/noInferrableTypesRule.ts new file mode 100644 index 00000000000..cbc0162260e --- /dev/null +++ b/scripts/tslint/noInferrableTypesRule.ts @@ -0,0 +1,49 @@ +/// +/// + + +export class Rule extends Lint.Rules.AbstractRule { + public static FAILURE_STRING_FACTORY = (type: string) => `LHS type (${type}) inferred by RHS expression, remove type annotation`; + + public apply(sourceFile: ts.SourceFile): Lint.RuleFailure[] { + return this.applyWithWalker(new InferrableTypeWalker(sourceFile, this.getOptions())); + } +} + +class InferrableTypeWalker extends Lint.RuleWalker { + visitVariableStatement(node: ts.VariableStatement) { + node.declarationList.declarations.forEach(e => { + if ((!!e.type) && (!!e.initializer)) { + let failure: string; + switch (e.type.kind) { + case ts.SyntaxKind.BooleanKeyword: + if (e.initializer.kind === ts.SyntaxKind.TrueKeyword || e.initializer.kind === ts.SyntaxKind.FalseKeyword) { + failure = 'boolean'; + } + break; + case ts.SyntaxKind.NumberKeyword: + if (e.initializer.kind === ts.SyntaxKind.NumericLiteral) { + failure = 'number'; + } + break; + case ts.SyntaxKind.StringKeyword: + switch (e.initializer.kind) { + case ts.SyntaxKind.StringLiteral: + case ts.SyntaxKind.NoSubstitutionTemplateLiteral: + case ts.SyntaxKind.TemplateExpression: + failure = 'string'; + break; + default: + break; + } + break; + } + if (failure) { + this.addFailure(this.createFailure(e.type.getStart(), e.type.getWidth(), Rule.FAILURE_STRING_FACTORY(failure))); + } + } + }); + + super.visitVariableStatement(node); + } +} diff --git a/scripts/tslint/noNullRule.ts b/scripts/tslint/noNullRule.ts new file mode 100644 index 00000000000..2a2c5bc3717 --- /dev/null +++ b/scripts/tslint/noNullRule.ts @@ -0,0 +1,20 @@ +/// +/// + + +export class Rule extends Lint.Rules.AbstractRule { + public static FAILURE_STRING = "Don't use the 'null' keyword - use 'undefined' for missing values instead"; + + public apply(sourceFile: ts.SourceFile): Lint.RuleFailure[] { + return this.applyWithWalker(new NullWalker(sourceFile, this.getOptions())); + } +} + +class NullWalker extends Lint.RuleWalker { + visitNode(node: ts.Node) { + super.visitNode(node); + if (node.kind === ts.SyntaxKind.NullKeyword) { + this.addFailure(this.createFailure(node.getStart(), node.getWidth(), Rule.FAILURE_STRING)); + } + } +} diff --git a/scripts/tslint/tsconfig.json b/scripts/tslint/tsconfig.json new file mode 100644 index 00000000000..db018ce2776 --- /dev/null +++ b/scripts/tslint/tsconfig.json @@ -0,0 +1,7 @@ +{ + "compilerOptions": { + "noImplicitAny": true, + "module": "commonjs", + "outDir": "../../built/local/tslint" + } +} \ No newline at end of file diff --git a/src/compiler/binder.ts b/src/compiler/binder.ts index 16f2a59a58d..65768332360 100644 --- a/src/compiler/binder.ts +++ b/src/compiler/binder.ts @@ -88,6 +88,7 @@ namespace ts { let container: Node; let blockScopeContainer: Node; let lastContainer: Node; + let seenThisKeyword: boolean; // If this file is an external module, then it is automatically in strict-mode according to // ES6. If it is not an external module, then we'll determine if it is in strict mode or @@ -329,7 +330,14 @@ namespace ts { blockScopeContainer.locals = undefined; } - forEachChild(node, bind); + if (node.kind === SyntaxKind.InterfaceDeclaration) { + seenThisKeyword = false; + forEachChild(node, bind); + node.flags = seenThisKeyword ? node.flags | NodeFlags.ContainsThis : node.flags & ~NodeFlags.ContainsThis; + } + else { + forEachChild(node, bind); + } container = saveContainer; parent = saveParent; @@ -851,6 +859,9 @@ namespace ts { return checkStrictModePrefixUnaryExpression(node); case SyntaxKind.WithStatement: return checkStrictModeWithStatement(node); + case SyntaxKind.ThisKeyword: + seenThisKeyword = true; + return; case SyntaxKind.TypeParameter: return declareSymbolAndAddToSymbolTable(node, SymbolFlags.TypeParameter, SymbolFlags.TypeParameterExcludes); diff --git a/src/compiler/checker.ts b/src/compiler/checker.ts index 67c02b0943c..c14cc8fd757 100644 --- a/src/compiler/checker.ts +++ b/src/compiler/checker.ts @@ -38,12 +38,14 @@ namespace ts { let Signature = objectAllocator.getSignatureConstructor(); let typeCount = 0; + let symbolCount = 0; let emptyArray: any[] = []; let emptySymbols: SymbolTable = {}; let compilerOptions = host.getCompilerOptions(); let languageVersion = compilerOptions.target || ScriptTarget.ES3; + let modulekind = compilerOptions.module ? compilerOptions.module : languageVersion === ScriptTarget.ES6 ? ModuleKind.ES6 : ModuleKind.None; let emitResolver = createResolver(); @@ -53,7 +55,7 @@ namespace ts { let checker: TypeChecker = { getNodeCount: () => sum(host.getSourceFiles(), "nodeCount"), getIdentifierCount: () => sum(host.getSourceFiles(), "identifierCount"), - getSymbolCount: () => sum(host.getSourceFiles(), "symbolCount"), + getSymbolCount: () => sum(host.getSourceFiles(), "symbolCount") + symbolCount, getTypeCount: () => typeCount, isUndefinedSymbol: symbol => symbol === undefinedSymbol, isArgumentsSymbol: symbol => symbol === argumentsSymbol, @@ -242,6 +244,7 @@ namespace ts { } function createSymbol(flags: SymbolFlags, name: string): Symbol { + symbolCount++; return new Symbol(flags, name); } @@ -947,12 +950,6 @@ namespace ts { return symbol.flags & meaning ? symbol : resolveAlias(symbol); } - function isExternalModuleNameRelative(moduleName: string): boolean { - // TypeScript 1.0 spec (April 2014): 11.2.1 - // An external module name is "relative" if the first term is "." or "..". - return moduleName.substr(0, 2) === "./" || moduleName.substr(0, 3) === "../" || moduleName.substr(0, 2) === ".\\" || moduleName.substr(0, 3) === "..\\"; - } - function resolveExternalModuleName(location: Node, moduleReferenceExpression: Expression): Symbol { if (moduleReferenceExpression.kind !== SyntaxKind.StringLiteral) { return; @@ -965,7 +962,7 @@ namespace ts { // Escape the name in the "require(...)" clause to ensure we find the right symbol. let moduleName = escapeIdentifier(moduleReferenceLiteral.text); - if (!moduleName) { + if (moduleName === undefined) { return; } let isRelative = isExternalModuleNameRelative(moduleName); @@ -976,8 +973,8 @@ namespace ts { } } - let fileName = getResolvedModuleFileName(getSourceFile(location), moduleReferenceLiteral.text); - let sourceFile = fileName && host.getSourceFile(fileName); + let resolvedModule = getResolvedModule(getSourceFile(location), moduleReferenceLiteral.text); + let sourceFile = resolvedModule && host.getSourceFile(resolvedModule.resolvedFileName); if (sourceFile) { if (sourceFile.symbol) { return sourceFile.symbol; @@ -1592,6 +1589,7 @@ namespace ts { function buildTypeDisplay(type: Type, writer: SymbolWriter, enclosingDeclaration?: Node, globalFlags?: TypeFormatFlags, symbolStack?: Symbol[]) { let globalFlagsToPass = globalFlags & TypeFormatFlags.WriteOwnNameForAnyLike; + let inObjectTypeLiteral = false; return writeType(type, globalFlags); function writeType(type: Type, flags: TypeFormatFlags) { @@ -1602,6 +1600,12 @@ namespace ts { ? "any" : (type).intrinsicName); } + else if (type.flags & TypeFlags.ThisType) { + if (inObjectTypeLiteral) { + writer.reportInaccessibleThisError(); + } + writer.writeKeyword("this"); + } else if (type.flags & TypeFlags.Reference) { writeTypeReference(type, flags); } @@ -1645,11 +1649,10 @@ namespace ts { } } - function writeSymbolTypeReference(symbol: Symbol, typeArguments: Type[], pos: number, end: number) { - // Unnamed function expressions, arrow functions, and unnamed class expressions have reserved names that - // we don't want to display - if (!isReservedMemberName(symbol.name)) { - buildSymbolDisplay(symbol, writer, enclosingDeclaration, SymbolFlags.Type); + function writeSymbolTypeReference(symbol: Symbol, typeArguments: Type[], pos: number, end: number, flags: TypeFormatFlags) { + // Unnamed function expressions and arrow functions have reserved names that we don't want to display + if (symbol.flags & SymbolFlags.Class || !isReservedMemberName(symbol.name)) { + buildSymbolDisplay(symbol, writer, enclosingDeclaration, SymbolFlags.Type, SymbolFormatFlags.None, flags); } if (pos < end) { writePunctuation(writer, SyntaxKind.LessThanToken); @@ -1664,7 +1667,7 @@ namespace ts { } function writeTypeReference(type: TypeReference, flags: TypeFormatFlags) { - let typeArguments = type.typeArguments; + let typeArguments = type.typeArguments || emptyArray; if (type.target === globalArrayType && !(flags & TypeFormatFlags.WriteArrayAsGenericType)) { writeType(typeArguments[0], TypeFormatFlags.InElementType); writePunctuation(writer, SyntaxKind.OpenBracketToken); @@ -1688,12 +1691,13 @@ namespace ts { // When type parameters are their own type arguments for the whole group (i.e. we have // the default outer type arguments), we don't show the group. if (!rangeEquals(outerTypeParameters, typeArguments, start, i)) { - writeSymbolTypeReference(parent, typeArguments, start, i); + writeSymbolTypeReference(parent, typeArguments, start, i, flags); writePunctuation(writer, SyntaxKind.DotToken); } } } - writeSymbolTypeReference(type.symbol, typeArguments, i, typeArguments.length); + let typeParameterCount = (type.target.typeParameters || emptyArray).length; + writeSymbolTypeReference(type.symbol, typeArguments, i, typeParameterCount, flags); } } @@ -1816,6 +1820,8 @@ namespace ts { } } + let saveInObjectTypeLiteral = inObjectTypeLiteral; + inObjectTypeLiteral = true; writePunctuation(writer, SyntaxKind.OpenBraceToken); writer.writeLine(); writer.increaseIndent(); @@ -1888,6 +1894,7 @@ namespace ts { } writer.decreaseIndent(); writePunctuation(writer, SyntaxKind.CloseBraceToken); + inObjectTypeLiteral = saveInObjectTypeLiteral; } } @@ -2293,10 +2300,17 @@ namespace ts { return type && (type.flags & TypeFlags.Any) !== 0; } + // Return the type of a binding element parent. We check SymbolLinks first to see if a type has been + // assigned by contextual typing. + function getTypeForBindingElementParent(node: VariableLikeDeclaration) { + let symbol = getSymbolOfNode(node); + return symbol && getSymbolLinks(symbol).type || getTypeForVariableLikeDeclaration(node); + } + // Return the inferred type for a binding element function getTypeForBindingElement(declaration: BindingElement): Type { let pattern = declaration.parent; - let parentType = getTypeForVariableLikeDeclaration(pattern.parent); + let parentType = getTypeForBindingElementParent(pattern.parent); // If parent has the unknown (error) type, then so does this binding element if (parentType === unknownType) { return unknownType; @@ -2318,8 +2332,8 @@ namespace ts { // 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. type = getTypeOfPropertyOfType(parentType, name.text) || - isNumericLiteralName(name.text) && getIndexTypeOfType(parentType, IndexKind.Number) || - getIndexTypeOfType(parentType, IndexKind.String); + isNumericLiteralName(name.text) && getIndexTypeOfType(parentType, IndexKind.Number) || + getIndexTypeOfType(parentType, IndexKind.String); if (!type) { error(name, Diagnostics.Type_0_has_no_property_1_and_no_string_index_signature, typeToString(parentType), declarationNameToString(name)); return unknownType; @@ -2372,7 +2386,7 @@ namespace ts { if (isBindingPattern(declaration.parent)) { return getTypeForBindingElement(declaration); } - + // Use type from type annotation if one is present if (declaration.type) { return getTypeFromTypeNode(declaration.type); @@ -2393,12 +2407,12 @@ namespace ts { return type; } } - + // Use the type of the initializer expression if one is present if (declaration.initializer) { return checkExpressionCached(declaration.initializer); } - + // If it is a short-hand property assignment, use the type of the identifier if (declaration.kind === SyntaxKind.ShorthandPropertyAssignment) { return checkIdentifier(declaration.name); @@ -2406,7 +2420,7 @@ namespace ts { // If the declaration specifies a binding pattern, use the type implied by the binding pattern if (isBindingPattern(declaration.name)) { - return getTypeFromBindingPattern(declaration.name); + return getTypeFromBindingPattern(declaration.name, /*includePatternInType*/ false); } // No type specified and nothing can be inferred @@ -2416,48 +2430,47 @@ namespace ts { // Return the type implied by a binding pattern element. This is the type of the initializer of the element if // one is present. Otherwise, if the element is itself a binding pattern, it is the type implied by the binding // pattern. Otherwise, it is the type any. - function getTypeFromBindingElement(element: BindingElement): Type { + function getTypeFromBindingElement(element: BindingElement, includePatternInType?: boolean): Type { if (element.initializer) { return getWidenedType(checkExpressionCached(element.initializer)); } if (isBindingPattern(element.name)) { - return getTypeFromBindingPattern(element.name); + return getTypeFromBindingPattern(element.name, includePatternInType); } return anyType; } // Return the type implied by an object binding pattern - function getTypeFromObjectBindingPattern(pattern: BindingPattern): Type { + function getTypeFromObjectBindingPattern(pattern: BindingPattern, includePatternInType: boolean): Type { let members: SymbolTable = {}; forEach(pattern.elements, e => { 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); + symbol.type = getTypeFromBindingElement(e, includePatternInType); + symbol.bindingElement = e; members[symbol.name] = symbol; }); - return createAnonymousType(undefined, members, emptyArray, emptyArray, undefined, undefined); + let result = createAnonymousType(undefined, members, emptyArray, emptyArray, undefined, undefined); + if (includePatternInType) { + result.pattern = pattern; + } + return result; } // Return the type implied by an array binding pattern - function getTypeFromArrayBindingPattern(pattern: BindingPattern): 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) { - hasSpreadElement = true; - } - }); - if (!elementTypes.length) { + function getTypeFromArrayBindingPattern(pattern: BindingPattern, includePatternInType: boolean): Type { + let elements = pattern.elements; + if (elements.length === 0 || elements[elements.length - 1].dotDotDotToken) { return languageVersion >= ScriptTarget.ES6 ? createIterableType(anyType) : anyArrayType; } - else if (hasSpreadElement) { - let unionOfElements = getUnionType(elementTypes); - return languageVersion >= ScriptTarget.ES6 ? createIterableType(unionOfElements) : createArrayType(unionOfElements); - } - // If the pattern has at least one element, and no rest element, then it should imply a tuple type. + let elementTypes = map(elements, e => e.kind === SyntaxKind.OmittedExpression ? anyType : getTypeFromBindingElement(e, includePatternInType)); + if (includePatternInType) { + let result = createNewTupleType(elementTypes); + result.pattern = pattern; + return result; + } return createTupleType(elementTypes); } @@ -2468,10 +2481,10 @@ namespace ts { // used as the contextual type of an initializer associated with the binding pattern. Also, for a destructuring // parameter with no type annotation or initializer, the type implied by the binding pattern becomes the type of // the parameter. - function getTypeFromBindingPattern(pattern: BindingPattern): Type { + function getTypeFromBindingPattern(pattern: BindingPattern, includePatternInType?: boolean): Type { return pattern.kind === SyntaxKind.ObjectBindingPattern - ? getTypeFromObjectBindingPattern(pattern) - : getTypeFromArrayBindingPattern(pattern); + ? getTypeFromObjectBindingPattern(pattern, includePatternInType) + : getTypeFromArrayBindingPattern(pattern, includePatternInType); } // Return the type associated with a variable, parameter, or property declaration. In the simple case this is the type @@ -2494,10 +2507,10 @@ namespace ts { // tools see the actual type. return declaration.kind !== SyntaxKind.PropertyAssignment ? getWidenedType(type) : type; } - + // Rest parameters default to type any[], other parameters default to type any type = declaration.dotDotDotToken ? anyArrayType : anyType; - + // Report implicit any errors unless this is a private property within an ambient declaration if (reportErrors && compilerOptions.noImplicitAny) { let root = getRootDeclaration(declaration); @@ -2883,6 +2896,31 @@ namespace ts { } } + // Returns true if the interface given by the symbol is free of "this" references. Specifically, the result is + // true if the interface itself contains no references to "this" in its body, if all base types are interfaces, + // and if none of the base interfaces have a "this" type. + function isIndependentInterface(symbol: Symbol): boolean { + for (let declaration of symbol.declarations) { + if (declaration.kind === SyntaxKind.InterfaceDeclaration) { + if (declaration.flags & NodeFlags.ContainsThis) { + return false; + } + let baseTypeNodes = getInterfaceBaseTypeNodes(declaration); + if (baseTypeNodes) { + for (let node of baseTypeNodes) { + if (isSupportedExpressionWithTypeArguments(node)) { + let baseSymbol = resolveEntityName(node.expression, SymbolFlags.Type, /*ignoreErrors*/ true); + if (!baseSymbol || !(baseSymbol.flags & SymbolFlags.Interface) || getDeclaredTypeOfClassOrInterface(baseSymbol).thisType) { + return false; + } + } + } + } + } + } + return true; + } + function getDeclaredTypeOfClassOrInterface(symbol: Symbol): InterfaceType { let links = getSymbolLinks(symbol); if (!links.declaredType) { @@ -2890,7 +2928,12 @@ namespace ts { let type = links.declaredType = createObjectType(kind, symbol); let outerTypeParameters = getOuterTypeParametersOfClassOrInterface(symbol); let localTypeParameters = getLocalTypeParametersOfClassOrInterfaceOrTypeAlias(symbol); - if (outerTypeParameters || localTypeParameters) { + // A class or interface is generic if it has type parameters or a "this" type. We always give classes a "this" type + // because it is not feasible to analyze all members to determine if the "this" type escapes the class (in particular, + // property types inferred from initializers and method return types inferred from return statements are very hard + // to exhaustively analyze). We give interfaces a "this" type if we can't definitely determine that they are free of + // "this" references. + if (outerTypeParameters || localTypeParameters || kind === TypeFlags.Class || !isIndependentInterface(symbol)) { type.flags |= TypeFlags.Reference; type.typeParameters = concatenate(outerTypeParameters, localTypeParameters); type.outerTypeParameters = outerTypeParameters; @@ -2899,6 +2942,9 @@ namespace ts { (type).instantiations[getTypeListId(type.typeParameters)] = type; (type).target = type; (type).typeArguments = type.typeParameters; + type.thisType = createType(TypeFlags.TypeParameter | TypeFlags.ThisType); + type.thisType.symbol = symbol; + type.thisType.constraint = getTypeWithThisArgument(type); } } return links.declaredType; @@ -2983,6 +3029,82 @@ namespace ts { return unknownType; } + // A type reference is considered independent if each type argument is considered independent. + function isIndependentTypeReference(node: TypeReferenceNode): boolean { + if (node.typeArguments) { + for (let typeNode of node.typeArguments) { + if (!isIndependentType(typeNode)) { + return false; + } + } + } + return true; + } + + // A type is considered independent if it the any, string, number, boolean, symbol, or void keyword, a string + // literal type, an array with an element type that is considered independent, or a type reference that is + // considered independent. + function isIndependentType(node: TypeNode): boolean { + switch (node.kind) { + case SyntaxKind.AnyKeyword: + case SyntaxKind.StringKeyword: + case SyntaxKind.NumberKeyword: + case SyntaxKind.BooleanKeyword: + case SyntaxKind.SymbolKeyword: + case SyntaxKind.VoidKeyword: + case SyntaxKind.StringLiteral: + return true; + case SyntaxKind.ArrayType: + return isIndependentType((node).elementType); + case SyntaxKind.TypeReference: + return isIndependentTypeReference(node); + } + return false; + } + + // A variable-like declaration is considered independent (free of this references) if it has a type annotation + // that specifies an independent type, or if it has no type annotation and no initializer (and thus of type any). + function isIndependentVariableLikeDeclaration(node: VariableLikeDeclaration): boolean { + return node.type && isIndependentType(node.type) || !node.type && !node.initializer; + } + + // A function-like declaration is considered independent (free of this references) if it has a return type + // annotation that is considered independent and if each parameter is considered independent. + function isIndependentFunctionLikeDeclaration(node: FunctionLikeDeclaration): boolean { + if (node.kind !== SyntaxKind.Constructor && (!node.type || !isIndependentType(node.type))) { + return false; + } + for (let parameter of node.parameters) { + if (!isIndependentVariableLikeDeclaration(parameter)) { + return false; + } + } + return true; + } + + // Returns true if the class or interface member given by the symbol is free of "this" references. The + // function may return false for symbols that are actually free of "this" references because it is not + // feasible to perform a complete analysis in all cases. In particular, property members with types + // inferred from their initializers and function members with inferred return types are convervatively + // assumed not to be free of "this" references. + function isIndependentMember(symbol: Symbol): boolean { + if (symbol.declarations && symbol.declarations.length === 1) { + let declaration = symbol.declarations[0]; + if (declaration) { + switch (declaration.kind) { + case SyntaxKind.PropertyDeclaration: + case SyntaxKind.PropertySignature: + return isIndependentVariableLikeDeclaration(declaration); + case SyntaxKind.MethodDeclaration: + case SyntaxKind.MethodSignature: + case SyntaxKind.Constructor: + return isIndependentFunctionLikeDeclaration(declaration); + } + } + } + return false; + } + function createSymbolTable(symbols: Symbol[]): SymbolTable { let result: SymbolTable = {}; for (let symbol of symbols) { @@ -2991,10 +3113,12 @@ namespace ts { return result; } - function createInstantiatedSymbolTable(symbols: Symbol[], mapper: TypeMapper): SymbolTable { + // The mappingThisOnly flag indicates that the only type parameter being mapped is "this". When the flag is true, + // we check symbols to see if we can quickly conclude they are free of "this" references, thus needing no instantiation. + function createInstantiatedSymbolTable(symbols: Symbol[], mapper: TypeMapper, mappingThisOnly: boolean): SymbolTable { let result: SymbolTable = {}; for (let symbol of symbols) { - result[symbol.name] = instantiateSymbol(symbol, mapper); + result[symbol.name] = mappingThisOnly && isIndependentMember(symbol) ? symbol : instantiateSymbol(symbol, mapper); } return result; } @@ -3027,44 +3151,57 @@ namespace ts { return type; } - function resolveClassOrInterfaceMembers(type: InterfaceType): void { - let target = resolveDeclaredMembers(type); - let members = target.symbol.members; - let callSignatures = target.declaredCallSignatures; - let constructSignatures = target.declaredConstructSignatures; - let stringIndexType = target.declaredStringIndexType; - let numberIndexType = target.declaredNumberIndexType; - let baseTypes = getBaseTypes(target); + function getTypeWithThisArgument(type: ObjectType, thisArgument?: Type) { + if (type.flags & TypeFlags.Reference) { + return createTypeReference((type).target, + concatenate((type).typeArguments, [thisArgument || (type).target.thisType])); + } + return type; + } + + function resolveObjectTypeMembers(type: ObjectType, source: InterfaceTypeWithDeclaredMembers, typeParameters: TypeParameter[], typeArguments: Type[]) { + let mapper = identityMapper; + let members = source.symbol.members; + let callSignatures = source.declaredCallSignatures; + let constructSignatures = source.declaredConstructSignatures; + let stringIndexType = source.declaredStringIndexType; + let numberIndexType = source.declaredNumberIndexType; + if (!rangeEquals(typeParameters, typeArguments, 0, typeParameters.length)) { + mapper = createTypeMapper(typeParameters, typeArguments); + members = createInstantiatedSymbolTable(source.declaredProperties, mapper, /*mappingThisOnly*/ typeParameters.length === 1); + callSignatures = instantiateList(source.declaredCallSignatures, mapper, instantiateSignature); + constructSignatures = instantiateList(source.declaredConstructSignatures, mapper, instantiateSignature); + stringIndexType = source.declaredStringIndexType ? instantiateType(source.declaredStringIndexType, mapper) : undefined; + numberIndexType = source.declaredNumberIndexType ? instantiateType(source.declaredNumberIndexType, mapper) : undefined; + } + let baseTypes = getBaseTypes(source); if (baseTypes.length) { - members = createSymbolTable(target.declaredProperties); + if (members === source.symbol.members) { + members = createSymbolTable(source.declaredProperties); + } + let thisArgument = lastOrUndefined(typeArguments); for (let baseType of baseTypes) { - addInheritedMembers(members, getPropertiesOfObjectType(baseType)); - callSignatures = concatenate(callSignatures, getSignaturesOfType(baseType, SignatureKind.Call)); - constructSignatures = concatenate(constructSignatures, getSignaturesOfType(baseType, SignatureKind.Construct)); - stringIndexType = stringIndexType || getIndexTypeOfType(baseType, IndexKind.String); - numberIndexType = numberIndexType || getIndexTypeOfType(baseType, IndexKind.Number); + let instantiatedBaseType = thisArgument ? getTypeWithThisArgument(instantiateType(baseType, mapper), thisArgument) : baseType; + addInheritedMembers(members, getPropertiesOfObjectType(instantiatedBaseType)); + callSignatures = concatenate(callSignatures, getSignaturesOfType(instantiatedBaseType, SignatureKind.Call)); + constructSignatures = concatenate(constructSignatures, getSignaturesOfType(instantiatedBaseType, SignatureKind.Construct)); + stringIndexType = stringIndexType || getIndexTypeOfType(instantiatedBaseType, IndexKind.String); + numberIndexType = numberIndexType || getIndexTypeOfType(instantiatedBaseType, IndexKind.Number); } } setObjectTypeMembers(type, members, callSignatures, constructSignatures, stringIndexType, numberIndexType); } + function resolveClassOrInterfaceMembers(type: InterfaceType): void { + resolveObjectTypeMembers(type, resolveDeclaredMembers(type), emptyArray, emptyArray); + } + function resolveTypeReferenceMembers(type: TypeReference): void { - let target = resolveDeclaredMembers(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(getBaseTypes(target), baseType => { - let instantiatedBaseType = instantiateType(baseType, mapper); - addInheritedMembers(members, getPropertiesOfObjectType(instantiatedBaseType)); - callSignatures = concatenate(callSignatures, getSignaturesOfType(instantiatedBaseType, SignatureKind.Call)); - constructSignatures = concatenate(constructSignatures, getSignaturesOfType(instantiatedBaseType, SignatureKind.Construct)); - stringIndexType = stringIndexType || getIndexTypeOfType(instantiatedBaseType, IndexKind.String); - numberIndexType = numberIndexType || getIndexTypeOfType(instantiatedBaseType, IndexKind.Number); - }); - setObjectTypeMembers(type, members, callSignatures, constructSignatures, stringIndexType, numberIndexType); + let source = resolveDeclaredMembers(type.target); + let typeParameters = concatenate(source.typeParameters, [source.thisType]); + let typeArguments = type.typeArguments && type.typeArguments.length === typeParameters.length ? + type.typeArguments : concatenate(type.typeArguments, [type]); + resolveObjectTypeMembers(type, source, typeParameters, typeArguments); } function createSignature(declaration: SignatureDeclaration, typeParameters: TypeParameter[], parameters: Symbol[], @@ -3119,14 +3256,16 @@ namespace ts { } function resolveTupleTypeMembers(type: TupleType) { - let arrayType = resolveStructuredTypeMembers(createArrayType(getUnionType(type.elementTypes, /*noSubtypeReduction*/ true))); + let arrayElementType = getUnionType(type.elementTypes, /*noSubtypeReduction*/ true); + // Make the tuple type itself the 'this' type by including an extra type argument + let arrayType = resolveStructuredTypeMembers(createTypeFromGenericGlobalType(globalArrayType, [arrayElementType, type])); let members = createTupleTypeMemberSymbols(type.elementTypes); addInheritedMembers(members, arrayType.properties); setObjectTypeMembers(type, members, arrayType.callSignatures, arrayType.constructSignatures, arrayType.stringIndexType, arrayType.numberIndexType); } function findMatchingSignature(signatureList: Signature[], signature: Signature, partialMatch: boolean, ignoreReturnTypes: boolean): Signature { - for (let s of signatureList) { + for (let s of signatureList) { if (compareSignatures(s, signature, partialMatch, ignoreReturnTypes, compareTypes)) { return s; } @@ -3278,7 +3417,10 @@ namespace ts { function resolveStructuredTypeMembers(type: ObjectType): ResolvedType { if (!(type).members) { - if (type.flags & (TypeFlags.Class | TypeFlags.Interface)) { + if (type.flags & TypeFlags.Reference) { + resolveTypeReferenceMembers(type); + } + else if (type.flags & (TypeFlags.Class | TypeFlags.Interface)) { resolveClassOrInterfaceMembers(type); } else if (type.flags & TypeFlags.Anonymous) { @@ -3293,9 +3435,6 @@ namespace ts { else if (type.flags & TypeFlags.Intersection) { resolveIntersectionTypeMembers(type); } - else { - resolveTypeReferenceMembers(type); - } } return type; } @@ -3761,22 +3900,24 @@ namespace ts { } function getTypeListId(types: Type[]) { - switch (types.length) { - case 1: - return "" + types[0].id; - case 2: - return types[0].id + "," + types[1].id; - default: - let result = ""; - for (let i = 0; i < types.length; i++) { - if (i > 0) { - result += ","; + if (types) { + switch (types.length) { + case 1: + return "" + types[0].id; + case 2: + return types[0].id + "," + types[1].id; + default: + let result = ""; + for (let i = 0; i < types.length; i++) { + if (i > 0) { + result += ","; + } + result += types[i].id; } - - result += types[i].id; - } - return result; + return result; + } } + return ""; } // This function is used to propagate certain flags when creating new object type references and union types. @@ -3795,7 +3936,7 @@ namespace ts { let id = getTypeListId(typeArguments); let type = target.instantiations[id]; if (!type) { - let flags = TypeFlags.Reference | getPropagatingFlagsOfTypes(typeArguments); + let flags = TypeFlags.Reference | (typeArguments ? getPropagatingFlagsOfTypes(typeArguments) : 0); type = target.instantiations[id] = createObjectType(flags, target.symbol); type.target = target; type.typeArguments = typeArguments; @@ -3854,8 +3995,8 @@ namespace ts { // Get type from reference to class or interface function getTypeFromClassOrInterfaceReference(node: TypeReferenceNode | ExpressionWithTypeArguments, symbol: Symbol): Type { - let type = getDeclaredTypeOfSymbol(symbol); - let typeParameters = (type).localTypeParameters; + let type = getDeclaredTypeOfSymbol(symbol); + let typeParameters = type.localTypeParameters; if (typeParameters) { if (!node.typeArguments || node.typeArguments.length !== typeParameters.length) { error(node, Diagnostics.Generic_type_0_requires_1_type_argument_s, typeToString(type, /*enclosingDeclaration*/ undefined, TypeFormatFlags.WriteArrayAsGenericType), typeParameters.length); @@ -3864,8 +4005,7 @@ namespace ts { // In a type reference, the outer type parameters of the referenced class or interface are automatically // supplied as type arguments and the type reference only specifies arguments for the local type parameters // of the class or interface. - return createTypeReference(type, concatenate((type).outerTypeParameters, - map(node.typeArguments, getTypeFromTypeNode))); + return createTypeReference(type, concatenate(type.outerTypeParameters, map(node.typeArguments, getTypeFromTypeNode))); } if (node.typeArguments) { error(node, Diagnostics.Type_0_is_not_generic, typeToString(type)); @@ -4021,20 +4161,20 @@ namespace ts { /** * Instantiates a global type that is generic with some element type, and returns that instantiation. */ - function createTypeFromGenericGlobalType(genericGlobalType: GenericType, elementType: Type): Type { - return genericGlobalType !== emptyGenericType ? createTypeReference(genericGlobalType, [elementType]) : emptyObjectType; + function createTypeFromGenericGlobalType(genericGlobalType: GenericType, typeArguments: Type[]): Type { + return genericGlobalType !== emptyGenericType ? createTypeReference(genericGlobalType, typeArguments) : emptyObjectType; } function createIterableType(elementType: Type): Type { - return createTypeFromGenericGlobalType(globalIterableType, elementType); + return createTypeFromGenericGlobalType(globalIterableType, [elementType]); } function createIterableIteratorType(elementType: Type): Type { - return createTypeFromGenericGlobalType(globalIterableIteratorType, elementType); + return createTypeFromGenericGlobalType(globalIterableIteratorType, [elementType]); } function createArrayType(elementType: Type): Type { - return createTypeFromGenericGlobalType(globalArrayType, elementType); + return createTypeFromGenericGlobalType(globalArrayType, [elementType]); } function getTypeFromArrayTypeNode(node: ArrayTypeNode): Type { @@ -4047,11 +4187,12 @@ namespace ts { function createTupleType(elementTypes: Type[]) { let id = getTypeListId(elementTypes); - let type = tupleTypes[id]; - if (!type) { - type = tupleTypes[id] = createObjectType(TypeFlags.Tuple | getPropagatingFlagsOfTypes(elementTypes)); - type.elementTypes = elementTypes; - } + return tupleTypes[id] || (tupleTypes[id] = createNewTupleType(elementTypes)); + } + + function createNewTupleType(elementTypes: Type[]) { + let type = createObjectType(TypeFlags.Tuple | getPropagatingFlagsOfTypes(elementTypes)); + type.elementTypes = elementTypes; return type; } @@ -4222,6 +4363,26 @@ namespace ts { return links.resolvedType; } + function getThisType(node: TypeNode): Type { + let container = getThisContainer(node, /*includeArrowFunctions*/ false); + let parent = container && container.parent; + if (parent && (isClassLike(parent) || parent.kind === SyntaxKind.InterfaceDeclaration)) { + if (!(container.flags & NodeFlags.Static)) { + return getDeclaredTypeOfClassOrInterface(getSymbolOfNode(parent)).thisType; + } + } + error(node, Diagnostics.A_this_type_is_available_only_in_a_non_static_member_of_a_class_or_interface); + return unknownType; + } + + function getTypeFromThisTypeNode(node: TypeNode): Type { + let links = getNodeLinks(node); + if (!links.resolvedType) { + links.resolvedType = getThisType(node); + } + return links.resolvedType; + } + function getTypeFromTypeNode(node: TypeNode): Type { switch (node.kind) { case SyntaxKind.AnyKeyword: @@ -4236,6 +4397,8 @@ namespace ts { return esSymbolType; case SyntaxKind.VoidKeyword: return voidType; + case SyntaxKind.ThisKeyword: + return getTypeFromThisTypeNode(node); case SyntaxKind.StringLiteral: return getTypeFromStringLiteral(node); case SyntaxKind.TypeReference: @@ -4338,7 +4501,7 @@ namespace ts { } return t; }; - + mapper.context = context; return mapper; } @@ -4640,7 +4803,9 @@ namespace ts { // and intersection types are further deconstructed on the target side, we don't want to // make the check again (as it might fail for a partial target type). Therefore we obtain // the regular source type and proceed with that. - source = getRegularTypeOfObjectLiteral(source); + if (target.flags & TypeFlags.UnionOrIntersection) { + source = getRegularTypeOfObjectLiteral(source); + } } let saveErrorInfo = errorInfo; @@ -4688,7 +4853,7 @@ namespace ts { else { 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)) { + if (result = typeArgumentsRelatedTo(source, target, reportErrors)) { return result; } } @@ -4719,7 +4884,7 @@ namespace ts { if (source.flags & TypeFlags.ObjectType && target.flags & TypeFlags.ObjectType) { if (source.flags & TypeFlags.Reference && target.flags & TypeFlags.Reference && (source).target === (target).target) { // We have type references to same target type, see if all type arguments are identical - if (result = typesRelatedTo((source).typeArguments, (target).typeArguments, /*reportErrors*/ false)) { + if (result = typeArgumentsRelatedTo(source, target, /*reportErrors*/ false)) { return result; } } @@ -4770,7 +4935,7 @@ namespace ts { // We know *exactly* where things went wrong when comparing the types. // Use this property as the error node as this will be more helpful in // reasoning about what went wrong. - errorNode = prop.valueDeclaration + errorNode = prop.valueDeclaration; reportError(Diagnostics.Object_literal_may_only_specify_known_properties_and_0_does_not_exist_in_type_1, symbolToString(prop), typeToString(target)); @@ -4841,9 +5006,14 @@ namespace ts { return result; } - function typesRelatedTo(sources: Type[], targets: Type[], reportErrors: boolean): Ternary { + function typeArgumentsRelatedTo(source: TypeReference, target: TypeReference, reportErrors: boolean): Ternary { + let sources = source.typeArguments || emptyArray; + let targets = target.typeArguments || emptyArray; + if (sources.length !== targets.length && relation === identityRelation) { + return Ternary.False; + } let result = Ternary.True; - for (let i = 0, len = sources.length; i < len; i++) { + for (let i = 0; i < targets.length; i++) { let related = isRelatedTo(sources[i], targets[i], reportErrors); if (!related) { return Ternary.False; @@ -5070,7 +5240,7 @@ namespace ts { if (kind === SignatureKind.Construct) { // Only want to compare the construct signatures for abstractness guarantees. - + // Because the "abstractness" of a class is the same across all construct signatures // (internally we are checking the corresponding declaration), it is enough to perform // the check and report an error once over all pairs of source and target construct signatures. @@ -5511,6 +5681,7 @@ namespace ts { regularType.constructSignatures = (type).constructSignatures; regularType.stringIndexType = (type).stringIndexType; regularType.numberIndexType = (type).numberIndexType; + (type).regularType = regularType; } return regularType; } @@ -5741,9 +5912,10 @@ namespace ts { } 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 - let sourceTypes = (source).typeArguments; - let targetTypes = (target).typeArguments; - for (let i = 0; i < sourceTypes.length; i++) { + let sourceTypes = (source).typeArguments || emptyArray; + let targetTypes = (target).typeArguments || emptyArray; + let count = sourceTypes.length < targetTypes.length ? sourceTypes.length : targetTypes.length; + for (let i = 0; i < count; i++) { inferFromTypes(sourceTypes[i], targetTypes[i]); } } @@ -6238,7 +6410,7 @@ namespace ts { return getUnionType(assignableConstituents); } } - + if (isTypeAssignableTo(narrowedTypeCandidate, originalType)) { // Narrow to the target type if it's assignable to the current type return narrowedTypeCandidate; @@ -6445,7 +6617,7 @@ namespace ts { if (isClassLike(container.parent)) { let symbol = getSymbolOfNode(container.parent); - return container.flags & NodeFlags.Static ? getTypeOfSymbol(symbol) : getDeclaredTypeOfSymbol(symbol); + return container.flags & NodeFlags.Static ? getTypeOfSymbol(symbol) : (getDeclaredTypeOfSymbol(symbol)).thisType; } return anyType; } @@ -6465,46 +6637,46 @@ namespace ts { let classType = classDeclaration && getDeclaredTypeOfSymbol(getSymbolOfNode(classDeclaration)); let baseClassType = classType && getBaseTypes(classType)[0]; - let container = getSuperContainer(node, /*includeFunctions*/ true); + let container = getSuperContainer(node, /*includeFunctions*/ true); let needToCaptureLexicalThis = false; - if (!isCallExpression) { + if (!isCallExpression) { // adjust the container reference in case if super is used inside arrow functions with arbitrary deep nesting while (container && container.kind === SyntaxKind.ArrowFunction) { container = getSuperContainer(container, /*includeFunctions*/ true); needToCaptureLexicalThis = languageVersion < ScriptTarget.ES6; } } - + let canUseSuperExpression = isLegalUsageOfSuperExpression(container); let nodeCheckFlag: NodeCheckFlags = 0; - + // always set NodeCheckFlags for 'super' expression node - if (canUseSuperExpression) { + if (canUseSuperExpression) { if ((container.flags & NodeFlags.Static) || isCallExpression) { nodeCheckFlag = NodeCheckFlags.SuperStatic; } else { nodeCheckFlag = NodeCheckFlags.SuperInstance; } - + getNodeLinks(node).flags |= nodeCheckFlag; - + if (needToCaptureLexicalThis) { // call expressions are allowed only in constructors so they should always capture correct 'this' // super property access expressions can also appear in arrow functions - // in this case they should also use correct lexical this captureLexicalThis(node.parent, container); - } + } } - + if (!baseClassType) { if (!classDeclaration || !getClassExtendsHeritageClauseElement(classDeclaration)) { error(node, Diagnostics.super_can_only_be_referenced_in_a_derived_class); } - return unknownType; + return unknownType; } - + if (!canUseSuperExpression) { if (container && container.kind === SyntaxKind.ComputedPropertyName) { error(node, Diagnostics.super_cannot_be_referenced_in_a_computed_property_name); @@ -6515,20 +6687,20 @@ namespace ts { else { error(node, Diagnostics.super_property_access_is_permitted_only_in_a_constructor_member_function_or_member_accessor_of_a_derived_class); } - + return unknownType; } - + if (container.kind === SyntaxKind.Constructor && isInConstructorArgumentInitializer(node, container)) { // issue custom error message for super property access in constructor arguments (to be aligned with old compiler) error(node, Diagnostics.super_cannot_be_referenced_in_constructor_arguments); return unknownType; } - + return nodeCheckFlag === NodeCheckFlags.SuperStatic ? getBaseConstructorTypeOfClass(classType) : baseClassType; - + function isLegalUsageOfSuperExpression(container: Node): boolean { if (!container) { return false; @@ -6564,15 +6736,15 @@ namespace ts { } } } - + return false; - } + } } // Return contextual type of parameter or undefined if no contextual type is available function getContextuallyTypedParameterType(parameter: ParameterDeclaration): Type { - if (isFunctionExpressionOrArrowFunction(parameter.parent)) { - let func = parameter.parent; + let func = parameter.parent; + if (isFunctionExpressionOrArrowFunction(func) || isObjectLiteralMethod(func)) { if (isContextSensitive(func)) { let contextualSignature = getContextualSignature(func); if (contextualSignature) { @@ -6613,7 +6785,7 @@ namespace ts { } } if (isBindingPattern(declaration.name)) { - return getTypeFromBindingPattern(declaration.name); + return getTypeFromBindingPattern(declaration.name, /*includePatternInType*/ true); } } return undefined; @@ -6904,7 +7076,7 @@ namespace ts { } } - function isFunctionExpressionOrArrowFunction(node: Node): boolean { + function isFunctionExpressionOrArrowFunction(node: Node): node is FunctionExpression { return node.kind === SyntaxKind.FunctionExpression || node.kind === SyntaxKind.ArrowFunction; } @@ -6923,8 +7095,8 @@ namespace ts { function getContextualSignature(node: FunctionExpression | MethodDeclaration): Signature { Debug.assert(node.kind !== SyntaxKind.MethodDeclaration || isObjectLiteralMethod(node)); let type = isObjectLiteralMethod(node) - ? getContextualTypeForObjectLiteralMethod(node) - : getContextualType(node); + ? getContextualTypeForObjectLiteralMethod(node) + : getContextualType(node); if (!type) { return undefined; } @@ -7009,11 +7181,13 @@ namespace ts { return checkIteratedTypeOrElementType(arrayOrIterableType, node.expression, /*allowStringInput*/ false); } + function hasDefaultValue(node: BindingElement | Expression): boolean { + return (node.kind === SyntaxKind.BindingElement && !!(node).initializer) || + (node.kind === SyntaxKind.BinaryExpression && (node).operatorToken.kind === SyntaxKind.EqualsToken); + } + function checkArrayLiteral(node: ArrayLiteralExpression, contextualMapper?: TypeMapper): Type { let elements = node.elements; - if (!elements.length) { - return createArrayType(undefinedType); - } let hasSpreadElement = false; let elementTypes: Type[] = []; let inDestructuringPattern = isAssignmentTarget(node); @@ -7045,12 +7219,39 @@ namespace ts { hasSpreadElement = hasSpreadElement || e.kind === SyntaxKind.SpreadElementExpression; } if (!hasSpreadElement) { + // If array literal is actually a destructuring pattern, mark it as an implied type. We do this such + // that we get the same behavior for "var [x, y] = []" and "[x, y] = []". + if (inDestructuringPattern && elementTypes.length) { + let type = createNewTupleType(elementTypes); + type.pattern = node; + return type; + } let contextualType = getContextualType(node); - if (contextualType && contextualTypeIsTupleLikeType(contextualType) || inDestructuringPattern) { - return createTupleType(elementTypes); + if (contextualType && contextualTypeIsTupleLikeType(contextualType)) { + let pattern = contextualType.pattern; + // If array literal is contextually typed by a binding pattern or an assignment pattern, pad the resulting + // tuple type with the corresponding binding or assignment element types to make the lengths equal. + if (pattern && (pattern.kind === SyntaxKind.ArrayBindingPattern || pattern.kind === SyntaxKind.ArrayLiteralExpression)) { + let patternElements = (pattern).elements; + for (let i = elementTypes.length; i < patternElements.length; i++) { + let patternElement = patternElements[i]; + if (hasDefaultValue(patternElement)) { + elementTypes.push((contextualType).elementTypes[i]); + } + else { + if (patternElement.kind !== SyntaxKind.OmittedExpression) { + error(patternElement, Diagnostics.Initializer_provides_no_value_for_this_binding_element_and_the_binding_element_has_no_default_value); + } + elementTypes.push(unknownType); + } + } + } + if (elementTypes.length) { + return createTupleType(elementTypes); + } } } - return createArrayType(getUnionType(elementTypes)); + return createArrayType(elementTypes.length ? getUnionType(elementTypes) : undefinedType); } function isNumericName(name: DeclarationName): boolean { @@ -7117,6 +7318,9 @@ namespace ts { let propertiesTable: SymbolTable = {}; let propertiesArray: Symbol[] = []; let contextualType = getContextualType(node); + let contextualTypeHasPattern = contextualType && contextualType.pattern && + (contextualType.pattern.kind === SyntaxKind.ObjectBindingPattern || contextualType.pattern.kind === SyntaxKind.ObjectLiteralExpression); + let inDestructuringPattern = isAssignmentTarget(node); let typeFlags: TypeFlags = 0; for (let memberDecl of node.properties) { @@ -7137,6 +7341,25 @@ namespace ts { } typeFlags |= type.flags; let prop = createSymbol(SymbolFlags.Property | SymbolFlags.Transient | member.flags, member.name); + if (inDestructuringPattern) { + // If object literal is an assignment pattern and if the assignment pattern specifies a default value + // for the property, make the property optional. + if (memberDecl.kind === SyntaxKind.PropertyAssignment && hasDefaultValue((memberDecl).initializer)) { + prop.flags |= SymbolFlags.Optional; + } + } + else if (contextualTypeHasPattern) { + // If object literal is contextually typed by the implied type of a binding pattern, and if the + // binding pattern specifies a default value for the property, make the property optional. + let impliedProp = getPropertyOfType(contextualType, member.name); + if (impliedProp) { + prop.flags |= impliedProp.flags & SymbolFlags.Optional; + } + else if (!compilerOptions.suppressExcessPropertyErrors) { + error(memberDecl.name, Diagnostics.Object_literal_may_only_specify_known_properties_and_0_does_not_exist_in_type_1, + symbolToString(member), typeToString(contextualType)); + } + } prop.declarations = member.declarations; prop.parent = member.parent; if (member.valueDeclaration) { @@ -7163,11 +7386,29 @@ namespace ts { propertiesArray.push(member); } + // If object literal is contextually typed by the implied type of a binding pattern, augment the result + // type with those properties for which the binding pattern specifies a default value. + if (contextualTypeHasPattern) { + for (let prop of getPropertiesOfType(contextualType)) { + if (!hasProperty(propertiesTable, prop.name)) { + if (!(prop.flags & SymbolFlags.Optional)) { + error(prop.valueDeclaration || (prop).bindingElement, + Diagnostics.Initializer_provides_no_value_for_this_binding_element_and_the_binding_element_has_no_default_value); + } + propertiesTable[prop.name] = prop; + propertiesArray.push(prop); + } + } + } + let stringIndexType = getIndexType(IndexKind.String); let numberIndexType = getIndexType(IndexKind.Number); let result = createAnonymousType(node.symbol, propertiesTable, emptyArray, emptyArray, stringIndexType, numberIndexType); let freshObjectLiteralFlag = compilerOptions.suppressExcessPropertyErrors ? 0 : TypeFlags.FreshObjectLiteral; result.flags |= TypeFlags.ObjectLiteral | TypeFlags.ContainsObjectLiteral | freshObjectLiteralFlag | (typeFlags & TypeFlags.PropagatingFlags); + if (inDestructuringPattern) { + result.pattern = node; + } return result; function getIndexType(kind: IndexKind) { @@ -7281,7 +7522,7 @@ namespace ts { // Maybe there's a string indexer? let indexerType = getIndexTypeOfType(elementAttributesType, IndexKind.String); if (indexerType) { - correspondingPropType = indexerType + correspondingPropType = indexerType; } else { // If there's no corresponding property with this name, error @@ -7349,7 +7590,8 @@ namespace ts { if (!links.resolvedSymbol) { if (isJsxIntrinsicIdentifier(node.tagName)) { links.resolvedSymbol = lookupIntrinsicTag(node); - } else { + } + else { links.resolvedSymbol = lookupClassTag(node); } } @@ -7763,7 +8005,7 @@ namespace ts { 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)); + error(right, Diagnostics.Property_0_does_not_exist_on_type_1, declarationNameToString(right), typeToString(type.flags & TypeFlags.ThisType ? apparentType : type)); } return unknownType; } @@ -7771,7 +8013,7 @@ namespace ts { getNodeLinks(node).resolvedSymbol = prop; if (prop.parent && prop.parent.flags & SymbolFlags.Class) { - checkClassPropertyAccess(node, left, type, prop); + checkClassPropertyAccess(node, left, apparentType, prop); } return getTypeOfSymbol(prop); } @@ -7973,9 +8215,9 @@ namespace ts { function reorderCandidates(signatures: Signature[], result: Signature[]): void { let lastParent: Node; let lastSymbol: Symbol; - let cutoffIndex: number = 0; + let cutoffIndex = 0; let index: number; - let specializedIndex: number = -1; + let specializedIndex = -1; let spliceIndex: number; Debug.assert(!result.length); for (let signature of signatures) { @@ -9096,10 +9338,24 @@ namespace ts { } } + // When contextual typing assigns a type to a parameter that contains a binding pattern, we also need to push + // the destructured type into the contained binding elements. + function assignBindingElementTypes(node: VariableLikeDeclaration) { + if (isBindingPattern(node.name)) { + for (let element of (node.name).elements) { + if (element.kind !== SyntaxKind.OmittedExpression) { + getSymbolLinks(getSymbolOfNode(element)).type = getTypeForBindingElement(element); + assignBindingElementTypes(element); + } + } + } + } + function assignTypeToParameterAndFixTypeParameters(parameter: Symbol, contextualType: Type, mapper: TypeMapper) { let links = getSymbolLinks(parameter); if (!links.type) { links.type = instantiateType(contextualType, mapper); + assignBindingElementTypes(parameter.valueDeclaration); } else if (isInferentialContext(mapper)) { // Even if the parameter already has a type, it might be because it was given a type while @@ -10566,7 +10822,7 @@ namespace ts { } if (!superCallStatement) { error(node, Diagnostics.A_super_call_must_be_the_first_statement_in_the_constructor_when_a_class_contains_initialized_properties_or_has_parameter_properties); - } + } else { // In such a required super call, it is a compile-time error for argument expressions to reference this. markThisReferencesAsErrors(superCallStatement.expression); @@ -11005,7 +11261,7 @@ namespace ts { // Spaces for anyting not declared a 'default export'. let nonDefaultExportedDeclarationSpaces = exportedDeclarationSpaces | nonExportedDeclarationSpaces; - + let commonDeclarationSpacesForExportsAndLocals = exportedDeclarationSpaces & nonExportedDeclarationSpaces; let commonDeclarationSpacesForDefaultAndNonDefault = defaultExportedDeclarationSpaces & nonDefaultExportedDeclarationSpaces; @@ -11013,7 +11269,7 @@ namespace ts { // declaration spaces for exported and non-exported declarations intersect for (let d of symbol.declarations) { let declarationSpaces = getDeclarationSpaces(d); - + // Only error on the declarations that conributed to the intersecting spaces. if (declarationSpaces & commonDeclarationSpacesForDefaultAndNonDefault) { error(d.name, Diagnostics.Merged_declaration_0_cannot_include_a_default_export_declaration_Consider_adding_a_separate_export_default_0_declaration_instead, declarationNameToString(d.name)); @@ -11840,7 +12096,7 @@ namespace ts { function checkGrammarDisallowedModifiersOnObjectLiteralExpressionMethod(node: Node) { // We only disallow modifier on a method declaration if it is a property of object-literal-expression - if (node.modifiers && node.parent.kind === SyntaxKind.ObjectLiteralExpression){ + if (node.modifiers && node.parent.kind === SyntaxKind.ObjectLiteralExpression) { if (isAsyncFunctionLike(node)) { if (node.modifiers.length > 1) { return grammarErrorOnFirstToken(node, Diagnostics.Modifiers_cannot_appear_here); @@ -12567,6 +12823,7 @@ namespace ts { checkExportsOnMergedDeclarations(node); let symbol = getSymbolOfNode(node); let type = getDeclaredTypeOfSymbol(symbol); + let typeWithThis = getTypeWithThisArgument(type); let staticType = getTypeOfSymbol(symbol); let baseTypeNode = getClassExtendsHeritageClauseElement(node); @@ -12585,7 +12842,7 @@ namespace ts { } } } - checkTypeAssignableTo(type, baseType, node.name || node, Diagnostics.Class_0_incorrectly_extends_base_class_1); + checkTypeAssignableTo(typeWithThis, getTypeWithThisArgument(baseType, type.thisType), node.name || node, Diagnostics.Class_0_incorrectly_extends_base_class_1); checkTypeAssignableTo(staticType, getTypeWithoutSignatures(staticBaseType), node.name || node, Diagnostics.Class_static_side_0_incorrectly_extends_base_class_static_side_1); @@ -12605,7 +12862,7 @@ namespace ts { let implementedTypeNodes = getClassImplementsHeritageClauseElements(node); if (implementedTypeNodes) { - forEach(implementedTypeNodes, typeRefNode => { + for (let typeRefNode of implementedTypeNodes) { if (!isSupportedExpressionWithTypeArguments(typeRefNode)) { error(typeRefNode.expression, Diagnostics.A_class_can_only_implement_an_identifier_Slashqualified_name_with_optional_type_arguments); } @@ -12615,14 +12872,14 @@ namespace ts { if (t !== unknownType) { let declaredType = (t.flags & TypeFlags.Reference) ? (t).target : t; if (declaredType.flags & (TypeFlags.Class | TypeFlags.Interface)) { - checkTypeAssignableTo(type, t, node.name || node, Diagnostics.Class_0_incorrectly_implements_interface_1); + checkTypeAssignableTo(typeWithThis, getTypeWithThisArgument(t, type.thisType), node.name || node, Diagnostics.Class_0_incorrectly_implements_interface_1); } else { error(typeRefNode, Diagnostics.A_class_may_only_implement_another_class_or_interface); } } } - }); + } } if (produceDiagnostics) { @@ -12782,7 +13039,7 @@ namespace ts { let ok = true; for (let base of baseTypes) { - let properties = getPropertiesOfObjectType(base); + let properties = getPropertiesOfObjectType(getTypeWithThisArgument(base, type.thisType)); for (let prop of properties) { if (!hasProperty(seen, prop.name)) { seen[prop.name] = { prop: prop, containingType: base }; @@ -12827,11 +13084,12 @@ namespace ts { // Only check this symbol once if (node === firstInterfaceDecl) { let type = getDeclaredTypeOfSymbol(symbol); + let typeWithThis = getTypeWithThisArgument(type); // run subsequent checks only if first set succeeded if (checkInheritedPropertiesAreIdentical(type, node.name)) { - forEach(getBaseTypes(type), baseType => { - checkTypeAssignableTo(type, baseType, node.name, Diagnostics.Interface_0_incorrectly_extends_interface_1); - }); + for (let baseType of getBaseTypes(type)) { + checkTypeAssignableTo(typeWithThis, getTypeWithThisArgument(baseType, type.thisType), node.name, Diagnostics.Interface_0_incorrectly_extends_interface_1); + } checkIndexConstraints(type); } } @@ -12874,26 +13132,41 @@ namespace ts { if (!(nodeLinks.flags & NodeCheckFlags.EnumValuesComputed)) { let enumSymbol = getSymbolOfNode(node); let enumType = getDeclaredTypeOfSymbol(enumSymbol); - let autoValue = 0; + let autoValue = 0; // set to undefined when enum member is non-constant let ambient = isInAmbientContext(node); let enumIsConst = isConst(node); - forEach(node.members, member => { - if (member.name.kind !== SyntaxKind.ComputedPropertyName && isNumericLiteralName((member.name).text)) { + for (const member of node.members) { + if (member.name.kind === SyntaxKind.ComputedPropertyName) { + error(member.name, Diagnostics.Computed_property_names_are_not_allowed_in_enums); + } + else if (isNumericLiteralName((member.name).text)) { error(member.name, Diagnostics.An_enum_member_cannot_have_a_numeric_name); } + + const previousEnumMemberIsNonConstant = autoValue === undefined; + let initializer = member.initializer; if (initializer) { autoValue = computeConstantValueForEnumMemberInitializer(initializer, enumType, enumIsConst, ambient); } else if (ambient && !enumIsConst) { + // In ambient enum declarations that specify no const modifier, enum member declarations + // that omit a value are considered computed members (as opposed to having auto-incremented values assigned). autoValue = undefined; } + else if (previousEnumMemberIsNonConstant) { + // If the member declaration specifies no value, the member is considered a constant enum member. + // If the member is the first member in the enum declaration, it is assigned the value zero. + // Otherwise, it is assigned the value of the immediately preceding member plus one, + // and an error occurs if the immediately preceding member is not a constant enum member + error(member.name, Diagnostics.Enum_member_must_have_initializer); + } if (autoValue !== undefined) { getNodeLinks(member).enumMemberValue = autoValue++; } - }); + } nodeLinks.flags |= NodeCheckFlags.EnumValuesComputed; } @@ -12909,11 +13182,11 @@ namespace ts { if (enumIsConst) { error(initializer, Diagnostics.In_const_enum_declarations_member_initializer_must_be_constant_expression); } - else if (!ambient) { + else if (ambient) { + error(initializer, Diagnostics.In_ambient_enum_declarations_member_initializer_must_be_constant_expression); + } + else { // 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. - // 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); } } @@ -13053,7 +13326,7 @@ namespace ts { } // Grammar checking - checkGrammarDecorators(node) || checkGrammarModifiers(node) || checkGrammarEnumDeclaration(node); + checkGrammarDecorators(node) || checkGrammarModifiers(node); checkTypeNameIsReserved(node.name, Diagnostics.Enum_name_cannot_be_0); checkCollisionWithCapturedThisVariable(node, node.name); @@ -13186,7 +13459,7 @@ namespace ts { // Checks for ambient external modules. if (isAmbientExternalModule) { if (!isGlobalSourceFile(node.parent)) { - error(node.name, Diagnostics.Ambient_modules_cannot_be_nested_in_other_modules); + error(node.name, Diagnostics.Ambient_modules_cannot_be_nested_in_other_modules_or_namespaces); } if (isExternalModuleNameRelative(node.name.text)) { error(node.name, Diagnostics.Ambient_module_declaration_cannot_specify_relative_module_name); @@ -13211,7 +13484,7 @@ namespace ts { Debug.assert(node.kind === SyntaxKind.Identifier); return node; } - + function checkExternalImportOrExportDeclaration(node: ImportDeclaration | ImportEqualsDeclaration | ExportDeclaration): boolean { let moduleName = getExternalModuleName(node); if (!nodeIsMissing(moduleName) && moduleName.kind !== SyntaxKind.StringLiteral) { @@ -13313,9 +13586,9 @@ namespace ts { } } else { - if (languageVersion >= ScriptTarget.ES6 && !isInAmbientContext(node)) { + if (modulekind === ModuleKind.ES6 && !isInAmbientContext(node)) { // 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); + grammarErrorOnNode(node, Diagnostics.Import_assignment_cannot_be_used_when_targeting_ECMAScript_6_modules_Consider_using_import_Asterisk_as_ns_from_mod_import_a_from_mod_import_d_from_mod_or_another_module_format_instead); } } } @@ -13390,11 +13663,11 @@ namespace ts { checkExternalModuleExports(container); if (node.isExportEquals && !isInAmbientContext(node)) { - if (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); + if (modulekind === ModuleKind.ES6) { + // export assignment is not supported in es6 modules + grammarErrorOnNode(node, Diagnostics.Export_assignment_cannot_be_used_when_targeting_ECMAScript_6_modules_Consider_using_export_default_or_another_module_format_instead); } - else if (compilerOptions.module === ModuleKind.System) { + else if (modulekind === ModuleKind.System) { // system modules does not support export assignment grammarErrorOnNode(node, Diagnostics.Export_assignment_is_not_supported_when_module_flag_is_system); } @@ -13590,7 +13863,7 @@ namespace ts { forEach(node.decorators, checkFunctionAndClassExpressionBodies); forEach((node).parameters, checkFunctionAndClassExpressionBodies); if (isObjectLiteralMethod(node)) { - checkFunctionExpressionOrObjectLiteralMethodBody(node); + checkFunctionExpressionOrObjectLiteralMethodBody(node); } break; case SyntaxKind.Constructor: @@ -13838,11 +14111,11 @@ namespace ts { } break; } - + if (introducesArgumentsExoticObject(location)) { copySymbol(argumentsSymbol, meaning); } - + memberFlags = location.flags; location = location.parent; } @@ -13957,7 +14230,21 @@ namespace ts { } if (isHeritageClauseElementIdentifier(entityName)) { - let meaning = entityName.parent.kind === SyntaxKind.ExpressionWithTypeArguments ? SymbolFlags.Type : SymbolFlags.Namespace; + let meaning = SymbolFlags.None; + + // In an interface or class, we're definitely interested in a type. + if (entityName.parent.kind === SyntaxKind.ExpressionWithTypeArguments) { + meaning = SymbolFlags.Type; + + // In a class 'extends' clause we are also looking for a value. + if (isExpressionWithTypeArgumentsInClassExtendsClause(entityName.parent)) { + meaning |= SymbolFlags.Value; + } + } + else { + meaning = SymbolFlags.Namespace; + } + meaning |= SymbolFlags.Alias; return resolveEntityName(entityName, meaning); } @@ -14049,7 +14336,7 @@ namespace ts { case SyntaxKind.ThisKeyword: case SyntaxKind.SuperKeyword: - let type = checkExpression(node); + let type = isExpression(node) ? checkExpression(node) : getTypeFromTypeNode(node); return type.symbol; case SyntaxKind.ConstructorKeyword: @@ -14188,7 +14475,10 @@ namespace ts { let symbols: Symbol[] = []; let name = symbol.name; forEach(getSymbolLinks(symbol).containingType.types, t => { - symbols.push(getPropertyOfType(t, name)); + let symbol = getPropertyOfType(t, name); + if (symbol) { + symbols.push(symbol); + } }); return symbols; } @@ -14311,9 +14601,9 @@ namespace ts { } // const enums and modules that contain only const enums are not considered values from the emit perespective // unless 'preserveConstEnums' option is set to true - return target !== unknownSymbol && - target && - target.flags & SymbolFlags.Value && + return target !== unknownSymbol && + target && + target.flags & SymbolFlags.Value && (compilerOptions.preserveConstEnums || !isConstEnumOrConstEnumOnlyModule(target)); } @@ -14384,7 +14674,7 @@ namespace ts { function isFunctionType(type: Type): boolean { return type.flags & TypeFlags.ObjectType && getSignaturesOfType(type, SignatureKind.Call).length > 0; } - + function getTypeReferenceSerializationKind(typeName: EntityName): TypeReferenceSerializationKind { // Resolve the symbol as a value to ensure the type can be reached at runtime during emit. let valueSymbol = resolveEntityName(typeName, SymbolFlags.Value, /*ignoreErrors*/ true); @@ -14397,7 +14687,7 @@ namespace ts { let typeSymbol = resolveEntityName(typeName, SymbolFlags.Type, /*ignoreErrors*/ true); // We might not be able to resolve type symbol so use unknown type in that case (eg error case) if (!typeSymbol) { - return TypeReferenceSerializationKind.ObjectType; + return TypeReferenceSerializationKind.ObjectType; } let type = getDeclaredTypeOfSymbol(typeSymbol); if (type === unknownType) { @@ -15547,40 +15837,6 @@ namespace ts { return false; } - function checkGrammarEnumDeclaration(enumDecl: EnumDeclaration): boolean { - let enumIsConst = (enumDecl.flags & NodeFlags.Const) !== 0; - - 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) { - 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. - if (node.name.kind === SyntaxKind.ComputedPropertyName) { - hasError = grammarErrorOnNode(node.name, Diagnostics.Computed_property_names_are_not_allowed_in_enums); - } - else if (inAmbientContext) { - if (node.initializer && !isIntegerLiteral(node.initializer)) { - hasError = grammarErrorOnNode(node.name, 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, Diagnostics.Enum_member_must_have_initializer) || hasError; - } - } - } - - return hasError; - } - function hasParseDiagnostics(sourceFile: SourceFile): boolean { return sourceFile.parseDiagnostics.length > 0; } diff --git a/src/compiler/commandLineParser.ts b/src/compiler/commandLineParser.ts index d22bc986688..11062983aaa 100644 --- a/src/compiler/commandLineParser.ts +++ b/src/compiler/commandLineParser.ts @@ -76,10 +76,11 @@ namespace ts { "amd": ModuleKind.AMD, "system": ModuleKind.System, "umd": ModuleKind.UMD, + "es6": ModuleKind.ES6, }, - description: Diagnostics.Specify_module_code_generation_Colon_commonjs_amd_system_or_umd, + description: Diagnostics.Specify_module_code_generation_Colon_commonjs_amd_system_umd_or_es6, paramType: Diagnostics.KIND, - error: Diagnostics.Argument_for_module_option_must_be_commonjs_amd_system_or_umd + error: Diagnostics.Argument_for_module_option_must_be_commonjs_amd_system_umd_or_es6 }, { name: "newLine", @@ -243,8 +244,9 @@ namespace ts { "node": ModuleResolutionKind.NodeJs, "classic": ModuleResolutionKind.Classic }, - description: Diagnostics.Specifies_module_resolution_strategy_Colon_node_Node_or_classic_TypeScript_pre_1_6 - } + description: Diagnostics.Specifies_module_resolution_strategy_Colon_node_Node_js_or_classic_TypeScript_pre_1_6, + error: Diagnostics.Argument_for_moduleResolution_option_must_be_node_or_classic, + } ]; /* @internal */ @@ -327,7 +329,7 @@ namespace ts { options[opt.name] = map[key]; } else { - errors.push(createCompilerDiagnostic(opt.error)); + errors.push(createCompilerDiagnostic((opt).error)); } } } @@ -440,7 +442,7 @@ namespace ts { value = optType[key]; } else { - errors.push(createCompilerDiagnostic(opt.error)); + errors.push(createCompilerDiagnostic((opt).error)); value = 0; } } @@ -468,7 +470,7 @@ namespace ts { fileNames = map(json["files"], s => combinePaths(basePath, s)); } else { - errors.push(createCompilerDiagnostic(Diagnostics.Compiler_option_0_requires_a_value_of_type_1, "files", "Array")); + errors.push(createCompilerDiagnostic(Diagnostics.Compiler_option_0_requires_a_value_of_type_1, "files", "Array")); } } else { diff --git a/src/compiler/core.ts b/src/compiler/core.ts index a1f6565ed1f..ce59c3b3bc6 100644 --- a/src/compiler/core.ts +++ b/src/compiler/core.ts @@ -52,7 +52,7 @@ namespace ts { function normalizeKey(key: string) { return getCanonicalFileName(normalizeSlashes(key)); } - + function clear() { files = {}; } @@ -117,7 +117,7 @@ namespace 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) { result = []; @@ -130,7 +130,7 @@ namespace 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) { result = []; @@ -148,7 +148,7 @@ namespace ts { return array1.concat(array2); } - export function deduplicate(array: T[]): T[]{ + export function deduplicate(array: T[]): T[] { let result: T[]; if (array) { result = []; @@ -486,7 +486,7 @@ namespace ts { return text1 ? Comparison.GreaterThan : Comparison.LessThan; } - export function sortAndDeduplicateDiagnostics(diagnostics: Diagnostic[]): Diagnostic[]{ + export function sortAndDeduplicateDiagnostics(diagnostics: Diagnostic[]): Diagnostic[] { return deduplicateSortedDiagnostics(diagnostics.sort(compareDiagnostics)); } @@ -795,7 +795,7 @@ namespace ts { VeryAggressive = 3, } - export module Debug { + export namespace Debug { let currentAssertionLevel = AssertionLevel.None; export function shouldAssert(level: AssertionLevel): boolean { diff --git a/src/compiler/declarationEmitter.ts b/src/compiler/declarationEmitter.ts index e5914d10060..00085f16086 100644 --- a/src/compiler/declarationEmitter.ts +++ b/src/compiler/declarationEmitter.ts @@ -52,6 +52,7 @@ namespace ts { let enclosingDeclaration: Node; let currentSourceFile: SourceFile; let reportedDeclarationError = false; + let errorNameNode: DeclarationName; let emitJsDocComments = compilerOptions.removeComments ? function (declaration: Node) { } : writeJsDocComments; let emit = compilerOptions.stripInternal ? stripInternal : emitNode; @@ -152,6 +153,7 @@ namespace ts { function createAndSetNewTextWriterWithSymbolWriter(): EmitTextWriterWithSymbolWriter { let writer = createTextWriter(newLine); writer.trackSymbol = trackSymbol; + writer.reportInaccessibleThisError = reportInaccessibleThisError; writer.writeKeyword = writer.write; writer.writeOperator = writer.write; writer.writePunctuation = writer.write; @@ -178,9 +180,11 @@ namespace ts { 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) { + } + 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 { + } + else { nodeToCheck = declaration; } @@ -257,6 +261,13 @@ namespace ts { handleSymbolAccessibilityError(resolver.isSymbolAccessible(symbol, enclosingDeclaration, meaning)); } + function reportInaccessibleThisError() { + if (errorNameNode) { + diagnostics.push(createDiagnosticForNode(errorNameNode, Diagnostics.The_inferred_type_of_0_references_an_inaccessible_this_type_A_type_annotation_is_necessary, + declarationNameToString(errorNameNode))); + } + } + function writeTypeOfDeclaration(declaration: AccessorDeclaration | VariableLikeDeclaration, type: TypeNode, getSymbolAccessibilityDiagnostic: GetSymbolAccessibilityDiagnostic) { writer.getSymbolAccessibilityDiagnostic = getSymbolAccessibilityDiagnostic; write(": "); @@ -265,7 +276,9 @@ namespace ts { emitType(type); } else { + errorNameNode = declaration.name; resolver.writeTypeOfDeclaration(declaration, enclosingDeclaration, TypeFormatFlags.UseTypeOfFunction, writer); + errorNameNode = undefined; } } @@ -277,7 +290,9 @@ namespace ts { emitType(signature.type); } else { + errorNameNode = signature.name; resolver.writeReturnTypeOfSignatureDeclaration(signature, enclosingDeclaration, TypeFormatFlags.UseTypeOfFunction, writer); + errorNameNode = undefined; } } @@ -326,6 +341,7 @@ namespace ts { case SyntaxKind.BooleanKeyword: case SyntaxKind.SymbolKeyword: case SyntaxKind.VoidKeyword: + case SyntaxKind.ThisKeyword: case SyntaxKind.StringLiteral: return writeTextOfNode(currentSourceFile, type); case SyntaxKind.ExpressionWithTypeArguments: @@ -1068,7 +1084,7 @@ namespace ts { // 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){ + if (element.kind !== SyntaxKind.OmittedExpression) { elements.push(element); } } diff --git a/src/compiler/diagnosticInformationMap.generated.ts b/src/compiler/diagnosticInformationMap.generated.ts deleted file mode 100644 index c6be478d576..00000000000 --- a/src/compiler/diagnosticInformationMap.generated.ts +++ /dev/null @@ -1,616 +0,0 @@ -// -/// -/* @internal */ -namespace ts { - export var Diagnostics = { - Unterminated_string_literal: { code: 1002, category: DiagnosticCategory.Error, key: "Unterminated string literal." }, - Identifier_expected: { code: 1003, category: DiagnosticCategory.Error, key: "Identifier expected." }, - _0_expected: { code: 1005, category: DiagnosticCategory.Error, key: "'{0}' expected." }, - A_file_cannot_have_a_reference_to_itself: { code: 1006, category: DiagnosticCategory.Error, key: "A file cannot have a reference to itself." }, - 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." }, - 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." }, - An_index_signature_cannot_have_a_rest_parameter: { code: 1017, category: DiagnosticCategory.Error, key: "An index signature cannot have a rest parameter." }, - An_index_signature_parameter_cannot_have_an_accessibility_modifier: { code: 1018, category: DiagnosticCategory.Error, key: "An index signature parameter cannot have an accessibility modifier." }, - An_index_signature_parameter_cannot_have_a_question_mark: { code: 1019, category: DiagnosticCategory.Error, key: "An index signature parameter cannot have a question mark." }, - An_index_signature_parameter_cannot_have_an_initializer: { code: 1020, category: DiagnosticCategory.Error, key: "An index signature parameter cannot have an initializer." }, - An_index_signature_must_have_a_type_annotation: { code: 1021, category: DiagnosticCategory.Error, key: "An index signature must have a type annotation." }, - An_index_signature_parameter_must_have_a_type_annotation: { code: 1022, category: 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: DiagnosticCategory.Error, key: "An index signature parameter type must be 'string' or 'number'." }, - Accessibility_modifier_already_seen: { code: 1028, category: DiagnosticCategory.Error, key: "Accessibility modifier already seen." }, - _0_modifier_must_precede_1_modifier: { code: 1029, category: DiagnosticCategory.Error, key: "'{0}' modifier must precede '{1}' modifier." }, - _0_modifier_already_seen: { code: 1030, category: DiagnosticCategory.Error, key: "'{0}' modifier already seen." }, - _0_modifier_cannot_appear_on_a_class_element: { code: 1031, category: DiagnosticCategory.Error, key: "'{0}' modifier cannot appear on a class element." }, - super_must_be_followed_by_an_argument_list_or_member_access: { code: 1034, category: DiagnosticCategory.Error, key: "'super' must be followed by an argument list or member access." }, - Only_ambient_modules_can_use_quoted_names: { code: 1035, category: DiagnosticCategory.Error, key: "Only ambient modules can use quoted names." }, - Statements_are_not_allowed_in_ambient_contexts: { code: 1036, category: DiagnosticCategory.Error, key: "Statements are not allowed in ambient contexts." }, - A_declare_modifier_cannot_be_used_in_an_already_ambient_context: { code: 1038, category: DiagnosticCategory.Error, key: "A 'declare' modifier cannot be used in an already ambient context." }, - Initializers_are_not_allowed_in_ambient_contexts: { code: 1039, category: DiagnosticCategory.Error, key: "Initializers are not allowed in ambient contexts." }, - _0_modifier_cannot_be_used_in_an_ambient_context: { code: 1040, category: DiagnosticCategory.Error, key: "'{0}' modifier cannot be used in an ambient context." }, - _0_modifier_cannot_be_used_with_a_class_declaration: { code: 1041, category: DiagnosticCategory.Error, key: "'{0}' modifier cannot be used with a class declaration." }, - _0_modifier_cannot_be_used_here: { code: 1042, category: DiagnosticCategory.Error, key: "'{0}' modifier cannot be used here." }, - _0_modifier_cannot_appear_on_a_data_property: { code: 1043, category: DiagnosticCategory.Error, key: "'{0}' modifier cannot appear on a data property." }, - _0_modifier_cannot_appear_on_a_module_element: { code: 1044, category: DiagnosticCategory.Error, key: "'{0}' modifier cannot appear on a module element." }, - A_0_modifier_cannot_be_used_with_an_interface_declaration: { code: 1045, category: DiagnosticCategory.Error, key: "A '{0}' 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: 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: DiagnosticCategory.Error, key: "A rest parameter cannot be optional." }, - A_rest_parameter_cannot_have_an_initializer: { code: 1048, category: DiagnosticCategory.Error, key: "A rest parameter cannot have an initializer." }, - A_set_accessor_must_have_exactly_one_parameter: { code: 1049, category: DiagnosticCategory.Error, key: "A 'set' accessor must have exactly one parameter." }, - A_set_accessor_cannot_have_an_optional_parameter: { code: 1051, category: DiagnosticCategory.Error, key: "A 'set' accessor cannot have an optional parameter." }, - A_set_accessor_parameter_cannot_have_an_initializer: { code: 1052, category: DiagnosticCategory.Error, key: "A 'set' accessor parameter cannot have an initializer." }, - A_set_accessor_cannot_have_rest_parameter: { code: 1053, category: DiagnosticCategory.Error, key: "A 'set' accessor cannot have rest parameter." }, - A_get_accessor_cannot_have_parameters: { code: 1054, category: DiagnosticCategory.Error, key: "A 'get' accessor cannot have parameters." }, - Type_0_is_not_a_valid_async_function_return_type: { code: 1055, category: DiagnosticCategory.Error, key: "Type '{0}' is not a valid async function return type." }, - Accessors_are_only_available_when_targeting_ECMAScript_5_and_higher: { code: 1056, category: DiagnosticCategory.Error, key: "Accessors are only available when targeting ECMAScript 5 and higher." }, - An_async_function_or_method_must_have_a_valid_awaitable_return_type: { code: 1057, category: DiagnosticCategory.Error, key: "An async function or method must have a valid awaitable return type." }, - Operand_for_await_does_not_have_a_valid_callable_then_member: { code: 1058, category: DiagnosticCategory.Error, key: "Operand for 'await' does not have a valid callable 'then' member." }, - Return_expression_in_async_function_does_not_have_a_valid_callable_then_member: { code: 1059, category: DiagnosticCategory.Error, key: "Return expression in async function does not have a valid callable 'then' member." }, - Expression_body_for_async_arrow_function_does_not_have_a_valid_callable_then_member: { code: 1060, category: DiagnosticCategory.Error, key: "Expression body for async arrow function does not have a valid callable 'then' member." }, - Enum_member_must_have_initializer: { code: 1061, category: DiagnosticCategory.Error, key: "Enum member must have initializer." }, - _0_is_referenced_directly_or_indirectly_in_the_fulfillment_callback_of_its_own_then_method: { code: 1062, category: DiagnosticCategory.Error, key: "{0} is referenced directly or indirectly in the fulfillment callback of its own 'then' method." }, - An_export_assignment_cannot_be_used_in_a_namespace: { code: 1063, category: DiagnosticCategory.Error, key: "An export assignment cannot be used in a namespace." }, - Ambient_enum_elements_can_only_have_integer_literal_initializers: { code: 1066, category: 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: DiagnosticCategory.Error, key: "Unexpected token. A constructor, method, accessor, or property was expected." }, - A_0_modifier_cannot_be_used_with_an_import_declaration: { code: 1079, category: DiagnosticCategory.Error, key: "A '{0}' modifier cannot be used with an import declaration." }, - Invalid_reference_directive_syntax: { code: 1084, category: DiagnosticCategory.Error, key: "Invalid 'reference' directive syntax." }, - Octal_literals_are_not_available_when_targeting_ECMAScript_5_and_higher: { code: 1085, category: 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: DiagnosticCategory.Error, key: "An accessor cannot be declared in an ambient context." }, - _0_modifier_cannot_appear_on_a_constructor_declaration: { code: 1089, category: DiagnosticCategory.Error, key: "'{0}' modifier cannot appear on a constructor declaration." }, - _0_modifier_cannot_appear_on_a_parameter: { code: 1090, category: 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: 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: DiagnosticCategory.Error, key: "Type parameters cannot appear on a constructor declaration." }, - Type_annotation_cannot_appear_on_a_constructor_declaration: { code: 1093, category: DiagnosticCategory.Error, key: "Type annotation cannot appear on a constructor declaration." }, - An_accessor_cannot_have_type_parameters: { code: 1094, category: DiagnosticCategory.Error, key: "An accessor cannot have type parameters." }, - A_set_accessor_cannot_have_a_return_type_annotation: { code: 1095, category: DiagnosticCategory.Error, key: "A 'set' accessor cannot have a return type annotation." }, - An_index_signature_must_have_exactly_one_parameter: { code: 1096, category: DiagnosticCategory.Error, key: "An index signature must have exactly one parameter." }, - _0_list_cannot_be_empty: { code: 1097, category: DiagnosticCategory.Error, key: "'{0}' list cannot be empty." }, - Type_parameter_list_cannot_be_empty: { code: 1098, category: DiagnosticCategory.Error, key: "Type parameter list cannot be empty." }, - Type_argument_list_cannot_be_empty: { code: 1099, category: DiagnosticCategory.Error, key: "Type argument list cannot be empty." }, - Invalid_use_of_0_in_strict_mode: { code: 1100, category: DiagnosticCategory.Error, key: "Invalid use of '{0}' in strict mode." }, - with_statements_are_not_allowed_in_strict_mode: { code: 1101, category: DiagnosticCategory.Error, key: "'with' statements are not allowed in strict mode." }, - delete_cannot_be_called_on_an_identifier_in_strict_mode: { code: 1102, category: 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: 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: 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: DiagnosticCategory.Error, key: "Jump target cannot cross function boundary." }, - A_return_statement_can_only_be_used_within_a_function_body: { code: 1108, category: DiagnosticCategory.Error, key: "A 'return' statement can only be used within a function body." }, - Expression_expected: { code: 1109, category: DiagnosticCategory.Error, key: "Expression expected." }, - Type_expected: { code: 1110, category: DiagnosticCategory.Error, key: "Type expected." }, - A_class_member_cannot_be_declared_optional: { code: 1112, category: 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: DiagnosticCategory.Error, key: "A 'default' clause cannot appear more than once in a 'switch' statement." }, - Duplicate_label_0: { code: 1114, category: DiagnosticCategory.Error, key: "Duplicate label '{0}'" }, - A_continue_statement_can_only_jump_to_a_label_of_an_enclosing_iteration_statement: { code: 1115, category: 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: 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: 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: 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: DiagnosticCategory.Error, key: "An object literal cannot have property and accessor with the same name." }, - An_export_assignment_cannot_have_modifiers: { code: 1120, category: DiagnosticCategory.Error, key: "An export assignment cannot have modifiers." }, - Octal_literals_are_not_allowed_in_strict_mode: { code: 1121, category: DiagnosticCategory.Error, key: "Octal literals are not allowed in strict mode." }, - A_tuple_type_element_list_cannot_be_empty: { code: 1122, category: DiagnosticCategory.Error, key: "A tuple type element list cannot be empty." }, - Variable_declaration_list_cannot_be_empty: { code: 1123, category: DiagnosticCategory.Error, key: "Variable declaration list cannot be empty." }, - Digit_expected: { code: 1124, category: DiagnosticCategory.Error, key: "Digit expected." }, - Hexadecimal_digit_expected: { code: 1125, category: DiagnosticCategory.Error, key: "Hexadecimal digit expected." }, - Unexpected_end_of_text: { code: 1126, category: DiagnosticCategory.Error, key: "Unexpected end of text." }, - Invalid_character: { code: 1127, category: DiagnosticCategory.Error, key: "Invalid character." }, - Declaration_or_statement_expected: { code: 1128, category: DiagnosticCategory.Error, key: "Declaration or statement expected." }, - Statement_expected: { code: 1129, category: DiagnosticCategory.Error, key: "Statement expected." }, - case_or_default_expected: { code: 1130, category: DiagnosticCategory.Error, key: "'case' or 'default' expected." }, - Property_or_signature_expected: { code: 1131, category: DiagnosticCategory.Error, key: "Property or signature expected." }, - Enum_member_expected: { code: 1132, category: DiagnosticCategory.Error, key: "Enum member expected." }, - Variable_declaration_expected: { code: 1134, category: DiagnosticCategory.Error, key: "Variable declaration expected." }, - Argument_expression_expected: { code: 1135, category: DiagnosticCategory.Error, key: "Argument expression expected." }, - Property_assignment_expected: { code: 1136, category: DiagnosticCategory.Error, key: "Property assignment expected." }, - Expression_or_comma_expected: { code: 1137, category: DiagnosticCategory.Error, key: "Expression or comma expected." }, - Parameter_declaration_expected: { code: 1138, category: DiagnosticCategory.Error, key: "Parameter declaration expected." }, - Type_parameter_declaration_expected: { code: 1139, category: DiagnosticCategory.Error, key: "Type parameter declaration expected." }, - Type_argument_expected: { code: 1140, category: DiagnosticCategory.Error, key: "Type argument expected." }, - String_literal_expected: { code: 1141, category: DiagnosticCategory.Error, key: "String literal expected." }, - Line_break_not_permitted_here: { code: 1142, category: DiagnosticCategory.Error, key: "Line break not permitted here." }, - or_expected: { code: 1144, category: DiagnosticCategory.Error, key: "'{' or ';' expected." }, - Modifiers_not_permitted_on_index_signature_members: { code: 1145, category: DiagnosticCategory.Error, key: "Modifiers not permitted on index signature members." }, - Declaration_expected: { code: 1146, category: DiagnosticCategory.Error, key: "Declaration expected." }, - Import_declarations_in_a_namespace_cannot_reference_a_module: { code: 1147, category: DiagnosticCategory.Error, key: "Import declarations in a namespace cannot reference a module." }, - Cannot_compile_modules_unless_the_module_flag_is_provided: { code: 1148, category: DiagnosticCategory.Error, key: "Cannot compile modules unless the '--module' flag is provided." }, - File_name_0_differs_from_already_included_file_name_1_only_in_casing: { code: 1149, category: 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: DiagnosticCategory.Error, key: "'new T[]' cannot be used to create an array. Use 'new Array()' instead." }, - 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." }, - 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." }, - A_yield_expression_is_only_allowed_in_a_generator_body: { code: 1163, category: DiagnosticCategory.Error, key: "A 'yield' expression is only allowed in a generator body." }, - Computed_property_names_are_not_allowed_in_enums: { code: 1164, category: 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: 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: DiagnosticCategory.Error, key: "A computed property name in a class property declaration must directly refer to a built-in symbol." }, - A_computed_property_name_in_a_method_overload_must_directly_refer_to_a_built_in_symbol: { code: 1168, category: 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: 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: 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: DiagnosticCategory.Error, key: "A comma expression is not allowed in a computed property name." }, - extends_clause_already_seen: { code: 1172, category: DiagnosticCategory.Error, key: "'extends' clause already seen." }, - extends_clause_must_precede_implements_clause: { code: 1173, category: DiagnosticCategory.Error, key: "'extends' clause must precede 'implements' clause." }, - Classes_can_only_extend_a_single_class: { code: 1174, category: DiagnosticCategory.Error, key: "Classes can only extend a single class." }, - implements_clause_already_seen: { code: 1175, category: DiagnosticCategory.Error, key: "'implements' clause already seen." }, - Interface_declaration_cannot_have_implements_clause: { code: 1176, category: DiagnosticCategory.Error, key: "Interface declaration cannot have 'implements' clause." }, - Binary_digit_expected: { code: 1177, category: DiagnosticCategory.Error, key: "Binary digit expected." }, - Octal_digit_expected: { code: 1178, category: DiagnosticCategory.Error, key: "Octal digit expected." }, - Unexpected_token_expected: { code: 1179, category: DiagnosticCategory.Error, key: "Unexpected token. '{' expected." }, - Property_destructuring_pattern_expected: { code: 1180, category: DiagnosticCategory.Error, key: "Property destructuring pattern expected." }, - Array_element_destructuring_pattern_expected: { code: 1181, category: DiagnosticCategory.Error, key: "Array element destructuring pattern expected." }, - A_destructuring_declaration_must_have_an_initializer: { code: 1182, category: DiagnosticCategory.Error, key: "A destructuring declaration must have an initializer." }, - An_implementation_cannot_be_declared_in_ambient_contexts: { code: 1184, category: DiagnosticCategory.Error, key: "An implementation cannot be declared in ambient contexts." }, - Modifiers_cannot_appear_here: { code: 1184, category: DiagnosticCategory.Error, key: "Modifiers cannot appear here." }, - Merge_conflict_marker_encountered: { code: 1185, category: DiagnosticCategory.Error, key: "Merge conflict marker encountered." }, - A_rest_element_cannot_have_an_initializer: { code: 1186, category: DiagnosticCategory.Error, key: "A rest element cannot have an initializer." }, - A_parameter_property_may_not_be_a_binding_pattern: { code: 1187, category: 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: 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: 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." }, - Module_0_has_no_default_export: { code: 1192, category: DiagnosticCategory.Error, key: "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_a_namespace: { code: 1194, category: DiagnosticCategory.Error, key: "Export declarations are not permitted in a namespace." }, - 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." }, - 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_modules_into_commonjs_amd_system_or_umd_when_targeting_ES6_or_higher: { code: 1204, category: DiagnosticCategory.Error, key: "Cannot compile modules into 'commonjs', 'amd', 'system' or 'umd' when targeting 'ES6' or 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_namespaces_when_the_isolatedModules_flag_is_provided: { code: 1208, category: DiagnosticCategory.Error, key: "Cannot compile namespaces when the '--isolatedModules' flag is provided." }, - Ambient_const_enums_are_not_allowed_when_the_isolatedModules_flag_is_provided: { code: 1209, category: DiagnosticCategory.Error, key: "Ambient const enums are not allowed when the '--isolatedModules' 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" }, - Identifier_expected_0_is_a_reserved_word_in_strict_mode: { code: 1212, category: DiagnosticCategory.Error, key: "Identifier expected. '{0}' is a reserved word in strict mode" }, - Identifier_expected_0_is_a_reserved_word_in_strict_mode_Class_definitions_are_automatically_in_strict_mode: { code: 1213, category: DiagnosticCategory.Error, key: "Identifier expected. '{0}' is a reserved word in strict mode. Class definitions are automatically in strict mode." }, - Identifier_expected_0_is_a_reserved_word_in_strict_mode_Modules_are_automatically_in_strict_mode: { code: 1214, category: DiagnosticCategory.Error, key: "Identifier expected. '{0}' is a reserved word in strict mode. Modules are automatically in strict mode." }, - Invalid_use_of_0_Modules_are_automatically_in_strict_mode: { code: 1215, category: DiagnosticCategory.Error, key: "Invalid use of '{0}'. Modules are automatically in strict mode." }, - Export_assignment_is_not_supported_when_module_flag_is_system: { code: 1218, category: DiagnosticCategory.Error, key: "Export assignment is not supported when '--module' flag is 'system'." }, - Experimental_support_for_decorators_is_a_feature_that_is_subject_to_change_in_a_future_release_Specify_experimentalDecorators_to_remove_this_warning: { code: 1219, category: DiagnosticCategory.Error, key: "Experimental support for decorators is a feature that is subject to change in a future release. Specify '--experimentalDecorators' to remove this warning." }, - Generators_are_only_available_when_targeting_ECMAScript_6_or_higher: { code: 1220, category: DiagnosticCategory.Error, key: "Generators are only available when targeting ECMAScript 6 or higher." }, - Generators_are_not_allowed_in_an_ambient_context: { code: 1221, category: DiagnosticCategory.Error, key: "Generators are not allowed in an ambient context." }, - An_overload_signature_cannot_be_declared_as_a_generator: { code: 1222, category: DiagnosticCategory.Error, key: "An overload signature cannot be declared as a generator." }, - _0_tag_already_specified: { code: 1223, category: DiagnosticCategory.Error, key: "'{0}' tag already specified." }, - Signature_0_must_have_a_type_predicate: { code: 1224, category: DiagnosticCategory.Error, key: "Signature '{0}' must have a type predicate." }, - Cannot_find_parameter_0: { code: 1225, category: DiagnosticCategory.Error, key: "Cannot find parameter '{0}'." }, - Type_predicate_0_is_not_assignable_to_1: { code: 1226, category: DiagnosticCategory.Error, key: "Type predicate '{0}' is not assignable to '{1}'." }, - Parameter_0_is_not_in_the_same_position_as_parameter_1: { code: 1227, category: DiagnosticCategory.Error, key: "Parameter '{0}' is not in the same position as parameter '{1}'." }, - A_type_predicate_is_only_allowed_in_return_type_position_for_functions_and_methods: { code: 1228, category: DiagnosticCategory.Error, key: "A type predicate is only allowed in return type position for functions and methods." }, - A_type_predicate_cannot_reference_a_rest_parameter: { code: 1229, category: DiagnosticCategory.Error, key: "A type predicate cannot reference a rest parameter." }, - A_type_predicate_cannot_reference_element_0_in_a_binding_pattern: { code: 1230, category: DiagnosticCategory.Error, key: "A type predicate cannot reference element '{0}' in a binding pattern." }, - An_export_assignment_can_only_be_used_in_a_module: { code: 1231, category: DiagnosticCategory.Error, key: "An export assignment can only be used in a module." }, - An_import_declaration_can_only_be_used_in_a_namespace_or_module: { code: 1232, category: DiagnosticCategory.Error, key: "An import declaration can only be used in a namespace or module." }, - An_export_declaration_can_only_be_used_in_a_module: { code: 1233, category: DiagnosticCategory.Error, key: "An export declaration can only be used in a module." }, - An_ambient_module_declaration_is_only_allowed_at_the_top_level_in_a_file: { code: 1234, category: DiagnosticCategory.Error, key: "An ambient module declaration is only allowed at the top level in a file." }, - A_namespace_declaration_is_only_allowed_in_a_namespace_or_module: { code: 1235, category: DiagnosticCategory.Error, key: "A namespace declaration is only allowed in a namespace or module." }, - Experimental_support_for_async_functions_is_a_feature_that_is_subject_to_change_in_a_future_release_Specify_experimentalAsyncFunctions_to_remove_this_warning: { code: 1236, category: DiagnosticCategory.Error, key: "Experimental support for async functions is a feature that is subject to change in a future release. Specify '--experimentalAsyncFunctions' to remove this warning." }, - with_statements_are_not_allowed_in_an_async_function_block: { code: 1300, category: DiagnosticCategory.Error, key: "'with' statements are not allowed in an async function block." }, - await_expression_is_only_allowed_within_an_async_function: { code: 1308, category: DiagnosticCategory.Error, key: "'await' expression is only allowed within an async function." }, - Async_functions_are_only_available_when_targeting_ECMAScript_6_and_higher: { code: 1311, category: DiagnosticCategory.Error, key: "Async functions are only available when targeting ECMAScript 6 and higher." }, - The_return_type_of_a_property_decorator_function_must_be_either_void_or_any: { code: 1236, category: DiagnosticCategory.Error, key: "The return type of a property decorator function must be either 'void' or 'any'." }, - The_return_type_of_a_parameter_decorator_function_must_be_either_void_or_any: { code: 1237, category: DiagnosticCategory.Error, key: "The return type of a parameter decorator function must be either 'void' or 'any'." }, - Unable_to_resolve_signature_of_class_decorator_when_called_as_an_expression: { code: 1238, category: DiagnosticCategory.Error, key: "Unable to resolve signature of class decorator when called as an expression." }, - Unable_to_resolve_signature_of_parameter_decorator_when_called_as_an_expression: { code: 1239, category: DiagnosticCategory.Error, key: "Unable to resolve signature of parameter decorator when called as an expression." }, - Unable_to_resolve_signature_of_property_decorator_when_called_as_an_expression: { code: 1240, category: DiagnosticCategory.Error, key: "Unable to resolve signature of property decorator when called as an expression." }, - Unable_to_resolve_signature_of_method_decorator_when_called_as_an_expression: { code: 1241, category: DiagnosticCategory.Error, key: "Unable to resolve signature of method decorator when called as an expression." }, - abstract_modifier_can_only_appear_on_a_class_or_method_declaration: { code: 1242, category: DiagnosticCategory.Error, key: "'abstract' modifier can only appear on a class or method declaration." }, - _0_modifier_cannot_be_used_with_1_modifier: { code: 1243, category: DiagnosticCategory.Error, key: "'{0}' modifier cannot be used with '{1}' modifier." }, - Abstract_methods_can_only_appear_within_an_abstract_class: { code: 1244, category: DiagnosticCategory.Error, key: "Abstract methods can only appear within an abstract class." }, - Method_0_cannot_have_an_implementation_because_it_is_marked_abstract: { code: 1245, category: DiagnosticCategory.Error, key: "Method '{0}' cannot have an implementation because it is marked abstract." }, - 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." }, - Circular_definition_of_import_alias_0: { code: 2303, category: DiagnosticCategory.Error, key: "Circular definition of import alias '{0}'." }, - Cannot_find_name_0: { code: 2304, category: DiagnosticCategory.Error, key: "Cannot find name '{0}'." }, - Module_0_has_no_exported_member_1: { code: 2305, category: DiagnosticCategory.Error, key: "Module '{0}' has no exported member '{1}'." }, - File_0_is_not_a_module: { code: 2306, category: DiagnosticCategory.Error, key: "File '{0}' is not a module." }, - Cannot_find_module_0: { code: 2307, category: DiagnosticCategory.Error, key: "Cannot find module '{0}'." }, - An_export_assignment_cannot_be_used_in_a_module_with_other_exported_elements: { code: 2309, category: 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: DiagnosticCategory.Error, key: "Type '{0}' recursively references itself as a base type." }, - A_class_may_only_extend_another_class: { code: 2311, category: DiagnosticCategory.Error, key: "A class may only extend another class." }, - An_interface_may_only_extend_a_class_or_another_interface: { code: 2312, category: 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: 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: DiagnosticCategory.Error, key: "Generic type '{0}' requires {1} type argument(s)." }, - Type_0_is_not_generic: { code: 2315, category: DiagnosticCategory.Error, key: "Type '{0}' is not generic." }, - Global_type_0_must_be_a_class_or_interface_type: { code: 2316, category: 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: DiagnosticCategory.Error, key: "Global type '{0}' must have {1} type parameter(s)." }, - Cannot_find_global_type_0: { code: 2318, category: DiagnosticCategory.Error, key: "Cannot find global type '{0}'." }, - Named_property_0_of_types_1_and_2_are_not_identical: { code: 2319, category: 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: DiagnosticCategory.Error, key: "Interface '{0}' cannot simultaneously extend types '{1}' and '{2}'." }, - Excessive_stack_depth_comparing_types_0_and_1: { code: 2321, category: DiagnosticCategory.Error, key: "Excessive stack depth comparing types '{0}' and '{1}'." }, - Type_0_is_not_assignable_to_type_1: { code: 2322, category: DiagnosticCategory.Error, key: "Type '{0}' is not assignable to type '{1}'." }, - Property_0_is_missing_in_type_1: { code: 2324, category: 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: DiagnosticCategory.Error, key: "Property '{0}' is private in type '{1}' but not in type '{2}'." }, - Types_of_property_0_are_incompatible: { code: 2326, category: DiagnosticCategory.Error, key: "Types of property '{0}' are incompatible." }, - Property_0_is_optional_in_type_1_but_required_in_type_2: { code: 2327, category: 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: DiagnosticCategory.Error, key: "Types of parameters '{0}' and '{1}' are incompatible." }, - Index_signature_is_missing_in_type_0: { code: 2329, category: DiagnosticCategory.Error, key: "Index signature is missing in type '{0}'." }, - Index_signatures_are_incompatible: { code: 2330, category: DiagnosticCategory.Error, key: "Index signatures are incompatible." }, - this_cannot_be_referenced_in_a_module_or_namespace_body: { code: 2331, category: DiagnosticCategory.Error, key: "'this' cannot be referenced in a module or namespace body." }, - this_cannot_be_referenced_in_current_location: { code: 2332, category: DiagnosticCategory.Error, key: "'this' cannot be referenced in current location." }, - this_cannot_be_referenced_in_constructor_arguments: { code: 2333, category: DiagnosticCategory.Error, key: "'this' cannot be referenced in constructor arguments." }, - this_cannot_be_referenced_in_a_static_property_initializer: { code: 2334, category: DiagnosticCategory.Error, key: "'this' cannot be referenced in a static property initializer." }, - super_can_only_be_referenced_in_a_derived_class: { code: 2335, category: DiagnosticCategory.Error, key: "'super' can only be referenced in a derived class." }, - super_cannot_be_referenced_in_constructor_arguments: { code: 2336, category: 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: 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: 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: 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: 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: 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: 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: 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: 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: DiagnosticCategory.Error, key: "Supplied parameters do not match any signature of call target." }, - Untyped_function_calls_may_not_accept_type_arguments: { code: 2347, category: 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: 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: 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: 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: 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: DiagnosticCategory.Error, key: "Neither type '{0}' nor type '{1}' is assignable to the other." }, - Object_literal_may_only_specify_known_properties_and_0_does_not_exist_in_type_1: { code: 2353, category: DiagnosticCategory.Error, key: "Object literal may only specify known properties, and '{0}' does not exist in type '{1}'." }, - No_best_common_type_exists_among_return_expressions: { code: 2354, category: 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: 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: 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: 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: 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: 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: 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: 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: 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: 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: DiagnosticCategory.Error, key: "Invalid left-hand side of assignment expression." }, - Operator_0_cannot_be_applied_to_types_1_and_2: { code: 2365, category: DiagnosticCategory.Error, key: "Operator '{0}' cannot be applied to types '{1}' and '{2}'." }, - Type_parameter_name_cannot_be_0: { code: 2368, category: DiagnosticCategory.Error, key: "Type parameter name cannot be '{0}'" }, - A_parameter_property_is_only_allowed_in_a_constructor_implementation: { code: 2369, category: 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: 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: 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: 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: DiagnosticCategory.Error, key: "Initializer of parameter '{0}' cannot reference identifier '{1}' declared after it." }, - Duplicate_string_index_signature: { code: 2374, category: DiagnosticCategory.Error, key: "Duplicate string index signature." }, - Duplicate_number_index_signature: { code: 2375, category: 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: 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: 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: 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: DiagnosticCategory.Error, key: "Getter and setter accessors do not agree in visibility." }, - get_and_set_accessor_must_have_the_same_type: { code: 2380, category: 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: 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: 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: DiagnosticCategory.Error, key: "Overload signatures must all be exported or not exported." }, - Overload_signatures_must_all_be_ambient_or_non_ambient: { code: 2384, category: DiagnosticCategory.Error, key: "Overload signatures must all be ambient or non-ambient." }, - Overload_signatures_must_all_be_public_private_or_protected: { code: 2385, category: DiagnosticCategory.Error, key: "Overload signatures must all be public, private or protected." }, - Overload_signatures_must_all_be_optional_or_required: { code: 2386, category: DiagnosticCategory.Error, key: "Overload signatures must all be optional or required." }, - Function_overload_must_be_static: { code: 2387, category: DiagnosticCategory.Error, key: "Function overload must be static." }, - Function_overload_must_not_be_static: { code: 2388, category: DiagnosticCategory.Error, key: "Function overload must not be static." }, - Function_implementation_name_must_be_0: { code: 2389, category: DiagnosticCategory.Error, key: "Function implementation name must be '{0}'." }, - Constructor_implementation_is_missing: { code: 2390, category: DiagnosticCategory.Error, key: "Constructor implementation is missing." }, - Function_implementation_is_missing_or_not_immediately_following_the_declaration: { code: 2391, category: DiagnosticCategory.Error, key: "Function implementation is missing or not immediately following the declaration." }, - Multiple_constructor_implementations_are_not_allowed: { code: 2392, category: DiagnosticCategory.Error, key: "Multiple constructor implementations are not allowed." }, - Duplicate_function_implementation: { code: 2393, category: DiagnosticCategory.Error, key: "Duplicate function implementation." }, - Overload_signature_is_not_compatible_with_function_implementation: { code: 2394, category: 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: 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: 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: 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: 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: 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: 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: 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: 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: 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: 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: 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: 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: 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: 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: 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: 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: DiagnosticCategory.Error, key: "Numeric index type '{0}' is not assignable to string index type '{1}'." }, - Class_name_cannot_be_0: { code: 2414, category: DiagnosticCategory.Error, key: "Class name cannot be '{0}'" }, - Class_0_incorrectly_extends_base_class_1: { code: 2415, category: DiagnosticCategory.Error, key: "Class '{0}' incorrectly extends base class '{1}'." }, - Class_static_side_0_incorrectly_extends_base_class_static_side_1: { code: 2417, category: 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: 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: DiagnosticCategory.Error, key: "Class '{0}' incorrectly implements interface '{1}'." }, - A_class_may_only_implement_another_class_or_interface: { code: 2422, category: 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: 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: 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: 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: 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: DiagnosticCategory.Error, key: "Interface name cannot be '{0}'" }, - All_declarations_of_an_interface_must_have_identical_type_parameters: { code: 2428, category: DiagnosticCategory.Error, key: "All declarations of an interface must have identical type parameters." }, - Interface_0_incorrectly_extends_interface_1: { code: 2430, category: DiagnosticCategory.Error, key: "Interface '{0}' incorrectly extends interface '{1}'." }, - Enum_name_cannot_be_0: { code: 2431, category: 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: DiagnosticCategory.Error, key: "In an enum with multiple declarations, only one declaration can omit an initializer for its first enum element." }, - A_namespace_declaration_cannot_be_in_a_different_file_from_a_class_or_function_with_which_it_is_merged: { code: 2433, category: DiagnosticCategory.Error, key: "A namespace declaration cannot be in a different file from a class or function with which it is merged" }, - A_namespace_declaration_cannot_be_located_prior_to_a_class_or_function_with_which_it_is_merged: { code: 2434, category: DiagnosticCategory.Error, key: "A namespace declaration cannot be located prior to a class or function with which it is merged" }, - Ambient_modules_cannot_be_nested_in_other_modules: { code: 2435, category: DiagnosticCategory.Error, key: "Ambient modules cannot be nested in other modules." }, - Ambient_module_declaration_cannot_specify_relative_module_name: { code: 2436, category: DiagnosticCategory.Error, key: "Ambient module declaration cannot specify relative module name." }, - Module_0_is_hidden_by_a_local_declaration_with_the_same_name: { code: 2437, category: DiagnosticCategory.Error, key: "Module '{0}' is hidden by a local declaration with the same name" }, - Import_name_cannot_be_0: { code: 2438, category: DiagnosticCategory.Error, key: "Import name cannot be '{0}'" }, - Import_or_export_declaration_in_an_ambient_module_declaration_cannot_reference_module_through_relative_module_name: { code: 2439, category: DiagnosticCategory.Error, key: "Import or export declaration in an ambient module declaration cannot reference module through relative module name." }, - Import_declaration_conflicts_with_local_declaration_of_0: { code: 2440, category: DiagnosticCategory.Error, key: "Import declaration conflicts with local declaration of '{0}'" }, - Duplicate_identifier_0_Compiler_reserves_name_1_in_top_level_scope_of_a_module: { code: 2441, category: DiagnosticCategory.Error, key: "Duplicate identifier '{0}'. Compiler reserves name '{1}' in top level scope of a module." }, - Types_have_separate_declarations_of_a_private_property_0: { code: 2442, category: 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: 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: 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: 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: 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: 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: 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: 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: DiagnosticCategory.Error, key: "Left-hand side of assignment expression cannot be a constant." }, - Cannot_redeclare_block_scoped_variable_0: { code: 2451, category: DiagnosticCategory.Error, key: "Cannot redeclare block-scoped variable '{0}'." }, - An_enum_member_cannot_have_a_numeric_name: { code: 2452, category: 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: 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: 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: DiagnosticCategory.Error, key: "Type alias '{0}' circularly references itself." }, - Type_alias_name_cannot_be_0: { code: 2457, category: DiagnosticCategory.Error, key: "Type alias name cannot be '{0}'" }, - An_AMD_module_cannot_have_multiple_name_assignments: { code: 2458, category: 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: DiagnosticCategory.Error, key: "Type '{0}' has no property '{1}' and no string index signature." }, - Type_0_has_no_property_1: { code: 2460, category: DiagnosticCategory.Error, key: "Type '{0}' has no property '{1}'." }, - Type_0_is_not_an_array_type: { code: 2461, category: DiagnosticCategory.Error, key: "Type '{0}' is not an array type." }, - A_rest_element_must_be_last_in_an_array_destructuring_pattern: { code: 2462, category: 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: 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: 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: DiagnosticCategory.Error, key: "'this' cannot be referenced in a computed property name." }, - super_cannot_be_referenced_in_a_computed_property_name: { code: 2466, category: 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: DiagnosticCategory.Error, key: "A computed property name cannot reference a type parameter from its containing type." }, - Cannot_find_global_value_0: { code: 2468, category: DiagnosticCategory.Error, key: "Cannot find global value '{0}'." }, - The_0_operator_cannot_be_applied_to_type_symbol: { code: 2469, category: 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: 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: 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_5_and_higher: { code: 2472, category: DiagnosticCategory.Error, key: "Spread operator in 'new' expressions is only available when targeting ECMAScript 5 and higher." }, - Enum_declarations_must_all_be_const_or_non_const: { code: 2473, category: 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: 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: 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: 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: 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: 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: 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}'." }, - 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." }, - Type_must_have_a_Symbol_iterator_method_that_returns_an_iterator: { code: 2488, category: DiagnosticCategory.Error, key: "Type must have a '[Symbol.iterator]()' method that returns an iterator." }, - An_iterator_must_have_a_next_method: { code: 2489, category: DiagnosticCategory.Error, key: "An iterator 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_in_ES3_and_ES5_Consider_using_a_standard_function_expression: { code: 2496, category: DiagnosticCategory.Error, key: "The 'arguments' object cannot be referenced in an arrow function in ES3 and ES5. Consider using a standard function expression." }, - Module_0_resolves_to_a_non_module_entity_and_cannot_be_imported_using_this_construct: { code: 2497, category: DiagnosticCategory.Error, key: "Module '{0}' resolves to a non-module entity and cannot be imported using this construct." }, - Module_0_uses_export_and_cannot_be_used_with_export_Asterisk: { code: 2498, category: DiagnosticCategory.Error, key: "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." }, - A_rest_element_cannot_contain_a_binding_pattern: { code: 2501, category: DiagnosticCategory.Error, key: "A rest element cannot contain a binding pattern." }, - _0_is_referenced_directly_or_indirectly_in_its_own_type_annotation: { code: 2502, category: DiagnosticCategory.Error, key: "'{0}' is referenced directly or indirectly in its own type annotation." }, - Cannot_find_namespace_0: { code: 2503, category: DiagnosticCategory.Error, key: "Cannot find namespace '{0}'." }, - No_best_common_type_exists_among_yield_expressions: { code: 2504, category: DiagnosticCategory.Error, key: "No best common type exists among yield expressions." }, - A_generator_cannot_have_a_void_type_annotation: { code: 2505, category: DiagnosticCategory.Error, key: "A generator cannot have a 'void' type annotation." }, - _0_is_referenced_directly_or_indirectly_in_its_own_base_expression: { code: 2506, category: DiagnosticCategory.Error, key: "'{0}' is referenced directly or indirectly in its own base expression." }, - Type_0_is_not_a_constructor_function_type: { code: 2507, category: DiagnosticCategory.Error, key: "Type '{0}' is not a constructor function type." }, - No_base_constructor_has_the_specified_number_of_type_arguments: { code: 2508, category: DiagnosticCategory.Error, key: "No base constructor has the specified number of type arguments." }, - Base_constructor_return_type_0_is_not_a_class_or_interface_type: { code: 2509, category: DiagnosticCategory.Error, key: "Base constructor return type '{0}' is not a class or interface type." }, - Base_constructors_must_all_have_the_same_return_type: { code: 2510, category: DiagnosticCategory.Error, key: "Base constructors must all have the same return type." }, - Cannot_create_an_instance_of_the_abstract_class_0: { code: 2511, category: DiagnosticCategory.Error, key: "Cannot create an instance of the abstract class '{0}'." }, - Overload_signatures_must_all_be_abstract_or_not_abstract: { code: 2512, category: DiagnosticCategory.Error, key: "Overload signatures must all be abstract or not abstract." }, - Abstract_method_0_in_class_1_cannot_be_accessed_via_super_expression: { code: 2513, category: DiagnosticCategory.Error, key: "Abstract method '{0}' in class '{1}' cannot be accessed via super expression." }, - Classes_containing_abstract_methods_must_be_marked_abstract: { code: 2514, category: DiagnosticCategory.Error, key: "Classes containing abstract methods must be marked abstract." }, - Non_abstract_class_0_does_not_implement_inherited_abstract_member_1_from_class_2: { code: 2515, category: DiagnosticCategory.Error, key: "Non-abstract class '{0}' does not implement inherited abstract member '{1}' from class '{2}'." }, - All_declarations_of_an_abstract_method_must_be_consecutive: { code: 2516, category: DiagnosticCategory.Error, key: "All declarations of an abstract method must be consecutive." }, - Cannot_assign_an_abstract_constructor_type_to_a_non_abstract_constructor_type: { code: 2517, category: DiagnosticCategory.Error, key: "Cannot assign an abstract constructor type to a non-abstract constructor type." }, - Only_an_ambient_class_can_be_merged_with_an_interface: { code: 2518, category: DiagnosticCategory.Error, key: "Only an ambient class can be merged with an interface." }, - Duplicate_identifier_0_Compiler_uses_declaration_1_to_support_async_functions: { code: 2520, category: DiagnosticCategory.Error, key: "Duplicate identifier '{0}'. Compiler uses declaration '{1}' to support async functions." }, - Expression_resolves_to_variable_declaration_0_that_compiler_uses_to_support_async_functions: { code: 2521, category: DiagnosticCategory.Error, key: "Expression resolves to variable declaration '{0}' that compiler uses to support async functions." }, - The_arguments_object_cannot_be_referenced_in_an_async_arrow_function_Consider_using_a_standard_async_function_expression: { code: 2522, category: DiagnosticCategory.Error, key: "The 'arguments' object cannot be referenced in an async arrow function. Consider using a standard async function expression." }, - yield_expressions_cannot_be_used_in_a_parameter_initializer: { code: 2523, category: DiagnosticCategory.Error, key: "'yield' expressions cannot be used in a parameter initializer." }, - await_expressions_cannot_be_used_in_a_parameter_initializer: { code: 2524, category: DiagnosticCategory.Error, key: "'await' expressions cannot be used in a parameter initializer." }, - JSX_element_attributes_type_0_must_be_an_object_type: { code: 2600, category: DiagnosticCategory.Error, key: "JSX element attributes type '{0}' must be an object type." }, - The_return_type_of_a_JSX_element_constructor_must_return_an_object_type: { code: 2601, category: DiagnosticCategory.Error, key: "The return type of a JSX element constructor must return an object type." }, - JSX_element_implicitly_has_type_any_because_the_global_type_JSX_Element_does_not_exist: { code: 2602, category: DiagnosticCategory.Error, key: "JSX element implicitly has type 'any' because the global type 'JSX.Element' does not exist." }, - Property_0_in_type_1_is_not_assignable_to_type_2: { code: 2603, category: DiagnosticCategory.Error, key: "Property '{0}' in type '{1}' is not assignable to type '{2}'" }, - JSX_element_type_0_does_not_have_any_construct_or_call_signatures: { code: 2604, category: DiagnosticCategory.Error, key: "JSX element type '{0}' does not have any construct or call signatures." }, - JSX_element_type_0_is_not_a_constructor_function_for_JSX_elements: { code: 2605, category: DiagnosticCategory.Error, key: "JSX element type '{0}' is not a constructor function for JSX elements." }, - Property_0_of_JSX_spread_attribute_is_not_assignable_to_target_property: { code: 2606, category: DiagnosticCategory.Error, key: "Property '{0}' of JSX spread attribute is not assignable to target property." }, - JSX_element_class_does_not_support_attributes_because_it_does_not_have_a_0_property: { code: 2607, category: DiagnosticCategory.Error, key: "JSX element class does not support attributes because it does not have a '{0}' property" }, - The_global_type_JSX_0_may_not_have_more_than_one_property: { code: 2608, category: DiagnosticCategory.Error, key: "The global type 'JSX.{0}' may not have more than one property" }, - Cannot_emit_namespaced_JSX_elements_in_React: { code: 2650, category: DiagnosticCategory.Error, key: "Cannot emit namespaced JSX elements in React" }, - A_member_initializer_in_a_enum_declaration_cannot_reference_members_declared_after_it_including_members_defined_in_other_enums: { code: 2651, category: DiagnosticCategory.Error, key: "A member initializer in a enum declaration cannot reference members declared after it, including members defined in other enums." }, - Merged_declaration_0_cannot_include_a_default_export_declaration_Consider_adding_a_separate_export_default_0_declaration_instead: { code: 2652, category: DiagnosticCategory.Error, key: "Merged declaration '{0}' cannot include a default export declaration. Consider adding a separate 'export default {0}' declaration instead." }, - Non_abstract_class_expression_does_not_implement_inherited_abstract_member_0_from_class_1: { code: 2653, category: DiagnosticCategory.Error, key: "Non-abstract class expression does not implement inherited abstract member '{0}' from class '{1}'." }, - 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}'." }, - Type_parameter_0_of_constructor_signature_from_exported_interface_has_or_is_using_private_name_1: { code: 4006, category: 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: 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: 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: 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: 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: 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: 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: 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: 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: 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: 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: 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: 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: 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: 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: 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: 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: 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: 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: 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: 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: 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: 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: 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: 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: 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: 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: 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: 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: 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: 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: 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: 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: 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: 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: 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: 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: 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: 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: 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: 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: 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: 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: 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: 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: 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: 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: 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: 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: 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: 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: 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: 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: 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: 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: 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: 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: 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: 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: 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: 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: 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: 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: 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}" }, - Unsupported_file_encoding: { code: 5013, category: DiagnosticCategory.Error, key: "Unsupported file encoding." }, - Failed_to_parse_file_0_Colon_1: { code: 5014, category: DiagnosticCategory.Error, key: "Failed to parse file '{0}': {1}." }, - Unknown_compiler_option_0: { code: 5023, category: DiagnosticCategory.Error, key: "Unknown compiler option '{0}'." }, - Compiler_option_0_requires_a_value_of_type_1: { code: 5024, category: DiagnosticCategory.Error, key: "Compiler option '{0}' requires a value of type {1}." }, - Could_not_write_file_0_Colon_1: { code: 5033, category: DiagnosticCategory.Error, key: "Could not write file '{0}': {1}" }, - 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_isolatedModules_can_only_be_used_when_either_option_module_is_provided_or_option_target_is_ES6_or_higher: { code: 5047, category: DiagnosticCategory.Error, key: "Option 'isolatedModules' can only be used when either option'--module' is provided or option 'target' is 'ES6' or higher." }, - Option_inlineSources_can_only_be_used_when_either_option_inlineSourceMap_or_option_sourceMap_is_provided: { code: 5051, category: DiagnosticCategory.Error, key: "Option 'inlineSources' can only be used when either option '--inlineSourceMap' or option '--sourceMap' is provided." }, - Option_0_cannot_be_specified_without_specifying_option_1: { code: 5052, category: DiagnosticCategory.Error, key: "Option '{0}' cannot be specified without specifying option '{1}'." }, - Option_0_cannot_be_specified_with_option_1: { code: 5053, category: DiagnosticCategory.Error, key: "Option '{0}' cannot be specified with option '{1}'." }, - A_tsconfig_json_file_is_already_defined_at_Colon_0: { code: 5053, category: DiagnosticCategory.Error, key: "A 'tsconfig.json' file is already defined at: '{0}'." }, - 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." }, - Specifies_the_location_where_debugger_should_locate_TypeScript_files_instead_of_source_locations: { code: 6004, category: DiagnosticCategory.Message, key: "Specifies the location where debugger should locate TypeScript files instead of source locations." }, - Watch_input_files: { code: 6005, category: DiagnosticCategory.Message, key: "Watch input files." }, - Redirect_output_structure_to_the_directory: { code: 6006, category: DiagnosticCategory.Message, key: "Redirect output structure to the directory." }, - Do_not_erase_const_enum_declarations_in_generated_code: { code: 6007, category: DiagnosticCategory.Message, key: "Do not erase const enum declarations in generated code." }, - Do_not_emit_outputs_if_any_errors_were_reported: { code: 6008, category: DiagnosticCategory.Message, key: "Do not emit outputs if any errors were reported." }, - Do_not_emit_comments_to_output: { code: 6009, category: DiagnosticCategory.Message, key: "Do not emit comments to output." }, - Do_not_emit_outputs: { code: 6010, category: DiagnosticCategory.Message, key: "Do not emit outputs." }, - Specify_ECMAScript_target_version_Colon_ES3_default_ES5_or_ES6_experimental: { code: 6015, category: DiagnosticCategory.Message, key: "Specify ECMAScript target version: 'ES3' (default), 'ES5', or 'ES6' (experimental)" }, - Specify_module_code_generation_Colon_commonjs_amd_system_or_umd: { code: 6016, category: DiagnosticCategory.Message, key: "Specify module code generation: 'commonjs', 'amd', 'system' or 'umd'" }, - Print_this_message: { code: 6017, category: DiagnosticCategory.Message, key: "Print this message." }, - Print_the_compiler_s_version: { code: 6019, category: DiagnosticCategory.Message, key: "Print the compiler's version." }, - Compile_the_project_in_the_given_directory: { code: 6020, category: DiagnosticCategory.Message, key: "Compile the project in the given directory." }, - Syntax_Colon_0: { code: 6023, category: DiagnosticCategory.Message, key: "Syntax: {0}" }, - options: { code: 6024, category: DiagnosticCategory.Message, key: "options" }, - file: { code: 6025, category: DiagnosticCategory.Message, key: "file" }, - Examples_Colon_0: { code: 6026, category: DiagnosticCategory.Message, key: "Examples: {0}" }, - Options_Colon: { code: 6027, category: DiagnosticCategory.Message, key: "Options:" }, - Version_0: { code: 6029, category: DiagnosticCategory.Message, key: "Version {0}" }, - Insert_command_line_options_and_files_from_a_file: { code: 6030, category: DiagnosticCategory.Message, key: "Insert command line options and files from a file." }, - File_change_detected_Starting_incremental_compilation: { code: 6032, category: DiagnosticCategory.Message, key: "File change detected. Starting incremental compilation..." }, - KIND: { code: 6034, category: DiagnosticCategory.Message, key: "KIND" }, - FILE: { code: 6035, category: DiagnosticCategory.Message, key: "FILE" }, - VERSION: { code: 6036, category: DiagnosticCategory.Message, key: "VERSION" }, - LOCATION: { code: 6037, category: DiagnosticCategory.Message, key: "LOCATION" }, - DIRECTORY: { code: 6038, category: DiagnosticCategory.Message, key: "DIRECTORY" }, - Compilation_complete_Watching_for_file_changes: { code: 6042, category: DiagnosticCategory.Message, key: "Compilation complete. Watching for file changes." }, - Generates_corresponding_map_file: { code: 6043, category: DiagnosticCategory.Message, key: "Generates corresponding '.map' file." }, - Compiler_option_0_expects_an_argument: { code: 6044, category: DiagnosticCategory.Error, key: "Compiler option '{0}' expects an argument." }, - Unterminated_quoted_string_in_response_file_0: { code: 6045, category: DiagnosticCategory.Error, key: "Unterminated quoted string in response file '{0}'." }, - Argument_for_module_option_must_be_commonjs_amd_system_or_umd: { code: 6046, category: DiagnosticCategory.Error, key: "Argument for '--module' option must be 'commonjs', 'amd', 'system' or 'umd'." }, - Argument_for_target_option_must_be_ES3_ES5_or_ES6: { code: 6047, category: 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: DiagnosticCategory.Error, key: "Locale must be of the form or -. For example '{0}' or '{1}'." }, - Unsupported_locale_0: { code: 6049, category: DiagnosticCategory.Error, key: "Unsupported locale '{0}'." }, - Unable_to_open_file_0: { code: 6050, category: DiagnosticCategory.Error, key: "Unable to open file '{0}'." }, - Corrupted_locale_file_0: { code: 6051, category: DiagnosticCategory.Error, key: "Corrupted locale file {0}." }, - Raise_error_on_expressions_and_declarations_with_an_implied_any_type: { code: 6052, category: DiagnosticCategory.Message, key: "Raise error on expressions and declarations with an implied 'any' type." }, - File_0_not_found: { code: 6053, category: DiagnosticCategory.Error, key: "File '{0}' not found." }, - File_0_has_unsupported_extension_The_only_supported_extensions_are_1: { code: 6054, category: DiagnosticCategory.Error, key: "File '{0}' has unsupported extension. The only supported extensions are {1}." }, - 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." }, - Specifies_the_root_directory_of_input_files_Use_to_control_the_output_directory_structure_with_outDir: { code: 6058, category: DiagnosticCategory.Message, key: "Specifies the root directory of input files. Use to control the output directory structure with --outDir." }, - File_0_is_not_under_rootDir_1_rootDir_is_expected_to_contain_all_source_files: { code: 6059, category: DiagnosticCategory.Error, key: "File '{0}' is not under 'rootDir' '{1}'. 'rootDir' is expected to contain all source files." }, - Specifies_the_end_of_line_sequence_to_be_used_when_emitting_files_Colon_CRLF_dos_or_LF_unix: { code: 6060, category: DiagnosticCategory.Message, key: "Specifies the end of line sequence to be used when emitting files: 'CRLF' (dos) or 'LF' (unix)." }, - NEWLINE: { code: 6061, category: DiagnosticCategory.Message, key: "NEWLINE" }, - Argument_for_newLine_option_must_be_CRLF_or_LF: { code: 6062, category: DiagnosticCategory.Error, key: "Argument for '--newLine' option must be 'CRLF' or 'LF'." }, - Specify_JSX_code_generation_Colon_preserve_or_react: { code: 6080, category: DiagnosticCategory.Message, key: "Specify JSX code generation: 'preserve' or 'react'" }, - Argument_for_jsx_must_be_preserve_or_react: { code: 6081, category: DiagnosticCategory.Message, key: "Argument for '--jsx' must be 'preserve' or 'react'." }, - Enables_experimental_support_for_ES7_decorators: { code: 6065, category: DiagnosticCategory.Message, key: "Enables experimental support for ES7 decorators." }, - Enables_experimental_support_for_emitting_type_metadata_for_decorators: { code: 6066, category: DiagnosticCategory.Message, key: "Enables experimental support for emitting type metadata for decorators." }, - Option_experimentalAsyncFunctions_cannot_be_specified_when_targeting_ES5_or_lower: { code: 6067, category: DiagnosticCategory.Message, key: "Option 'experimentalAsyncFunctions' cannot be specified when targeting ES5 or lower." }, - Enables_experimental_support_for_ES7_async_functions: { code: 6068, category: DiagnosticCategory.Message, key: "Enables experimental support for ES7 async functions." }, - Specifies_module_resolution_strategy_Colon_node_Node_or_classic_TypeScript_pre_1_6: { code: 6069, category: DiagnosticCategory.Message, key: "Specifies module resolution strategy: 'node' (Node) or 'classic' (TypeScript pre 1.6) ." }, - Initializes_a_TypeScript_project_and_creates_a_tsconfig_json_file: { code: 6070, category: DiagnosticCategory.Message, key: "Initializes a TypeScript project and creates a tsconfig.json file." }, - Successfully_created_a_tsconfig_json_file: { code: 6071, category: DiagnosticCategory.Message, key: "Successfully created a tsconfig.json file." }, - Suppress_excess_property_checks_for_object_literals: { code: 6072, category: DiagnosticCategory.Message, key: "Suppress excess property checks for object literals." }, - 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." }, - new_expression_whose_target_lacks_a_construct_signature_implicitly_has_an_any_type: { code: 7009, category: 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: 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: 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: 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: 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: 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: DiagnosticCategory.Error, key: "Object literal's property '{0}' implicitly has an '{1}' type." }, - Rest_parameter_0_implicitly_has_an_any_type: { code: 7019, category: 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: DiagnosticCategory.Error, key: "Call signature, which lacks return-type annotation, implicitly has an 'any' return type." }, - _0_implicitly_has_type_any_because_it_does_not_have_a_type_annotation_and_is_referenced_directly_or_indirectly_in_its_own_initializer: { code: 7022, category: DiagnosticCategory.Error, key: "'{0}' implicitly has type 'any' because it 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: 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: 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." }, - Generator_implicitly_has_type_0_because_it_does_not_yield_any_values_Consider_supplying_a_return_type: { code: 7025, category: DiagnosticCategory.Error, key: "Generator implicitly has type '{0}' because it does not yield any values. Consider supplying a return type." }, - JSX_element_implicitly_has_type_any_because_no_interface_JSX_0_exists: { code: 7026, category: DiagnosticCategory.Error, key: "JSX element implicitly has type 'any' because no interface 'JSX.{0}' exists" }, - 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." }, - 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." }, - 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." }, - JSX_attributes_must_only_be_assigned_a_non_empty_expression: { code: 17000, category: DiagnosticCategory.Error, key: "JSX attributes must only be assigned a non-empty 'expression'." }, - JSX_elements_cannot_have_multiple_attributes_with_the_same_name: { code: 17001, category: DiagnosticCategory.Error, key: "JSX elements cannot have multiple attributes with the same name." }, - Expected_corresponding_JSX_closing_tag_for_0: { code: 17002, category: DiagnosticCategory.Error, key: "Expected corresponding JSX closing tag for '{0}'." }, - JSX_attribute_expected: { code: 17003, category: DiagnosticCategory.Error, key: "JSX attribute expected." }, - Cannot_use_JSX_unless_the_jsx_flag_is_provided: { code: 17004, category: DiagnosticCategory.Error, key: "Cannot use JSX unless the '--jsx' flag is provided." }, - A_constructor_cannot_contain_a_super_call_when_its_class_extends_null: { code: 17005, category: DiagnosticCategory.Error, key: "A constructor cannot contain a 'super' call when its class extends 'null'" }, - }; -} \ No newline at end of file diff --git a/src/compiler/diagnosticMessages.json b/src/compiler/diagnosticMessages.json index 24508a4fe56..f6656edb250 100644 --- a/src/compiler/diagnosticMessages.json +++ b/src/compiler/diagnosticMessages.json @@ -195,7 +195,7 @@ "category": "Error", "code": 1063 }, - "Ambient enum elements can only have integer literal initializers.": { + "In ambient enum declarations member initializer must be constant expression.": { "category": "Error", "code": 1066 }, @@ -549,7 +549,7 @@ }, "An implementation cannot be declared in ambient contexts.": { "category": "Error", - "code": 1184 + "code": 1183 }, "Modifiers cannot appear here.": { "category": "Error", @@ -619,15 +619,15 @@ "category": "Error", "code": 1200 }, - "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.": { + "Import assignment cannot be used when targeting ECMAScript 6 modules. Consider using 'import * as ns from \"mod\"', 'import {a} from \"mod\"', 'import d from \"mod\"', or another module format instead.": { "category": "Error", "code": 1202 }, - "Export assignment cannot be used when targeting ECMAScript 6 or higher. Consider using 'export default' instead.": { + "Export assignment cannot be used when targeting ECMAScript 6 modules. Consider using 'export default' or another module format instead.": { "category": "Error", "code": 1203 }, - "Cannot compile modules into 'commonjs', 'amd', 'system' or 'umd' when targeting 'ES6' or higher.": { + "Cannot compile modules into 'es6' when targeting 'ES5' or lower.": { "category": "Error", "code": 1204 }, @@ -743,24 +743,6 @@ "category": "Error", "code": 1235 }, - "Experimental support for async functions is a feature that is subject to change in a future release. Specify '--experimentalAsyncFunctions' to remove this warning.": { - "category": "Error", - "code": 1236 - }, - - - "'with' statements are not allowed in an async function block.": { - "category": "Error", - "code": 1300 - }, - "'await' expression is only allowed within an async function.": { - "category": "Error", - "code": 1308 - }, - "Async functions are only available when targeting ECMAScript 6 and higher.": { - "category": "Error", - "code": 1311 - }, "The return type of a property decorator function must be either 'void' or 'any'.": { "category": "Error", "code": 1236 @@ -801,6 +783,23 @@ "category": "Error", "code": 1245 }, + "Experimental support for async functions is a feature that is subject to change in a future release. Specify '--experimentalAsyncFunctions' to remove this warning.": { + "category": "Error", + "code": 1246 + }, + + "'with' statements are not allowed in an async function block.": { + "category": "Error", + "code": 1300 + }, + "'await' expression is only allowed within an async function.": { + "category": "Error", + "code": 1308 + }, + "Async functions are only available when targeting ECMAScript 6 and higher.": { + "category": "Error", + "code": 1311 + }, "Duplicate identifier '{0}'.": { "category": "Error", "code": 2300 @@ -1297,7 +1296,7 @@ "category": "Error", "code": 2434 }, - "Ambient modules cannot be nested in other modules.": { + "Ambient modules cannot be nested in other modules or namespaces.": { "category": "Error", "code": 2435 }, @@ -1645,6 +1644,18 @@ "category": "Error", "code": 2524 }, + "Initializer provides no value for this binding element and the binding element has no default value.": { + "category": "Error", + "code": 2525 + }, + "A 'this' type is available only in a non-static member of a class or interface.": { + "category": "Error", + "code": 2526 + }, + "The inferred type of '{0}' references an inaccessible 'this' type. A type annotation is necessary.": { + "category": "Error", + "code": 2527 + }, "JSX element attributes type '{0}' must be an object type.": { "category": "Error", "code": 2600 @@ -1697,7 +1708,18 @@ "category": "Error", "code": 2653 }, - + "Exported external package typings file cannot contain tripleslash references. Please contact the package author to update the package definition.": { + "category": "Error", + "code": 2654 + }, + "Exported external package typings can only be in '.d.ts' files. Please contact the package author to update the package definition.": { + "category": "Error", + "code": 2655 + }, + "Exported external package typings file '{0}' is not a module. Please contact the package author to update the package definition.": { + "category": "Error", + "code": 2656 + }, "Import declaration '{0}' is using private name '{1}'.": { "category": "Error", "code": 4000 @@ -2036,7 +2058,7 @@ }, "A 'tsconfig.json' file is already defined at: '{0}'.": { "category": "Error", - "code": 5053 + "code": 5054 }, "Concatenate and emit output to single file.": { @@ -2083,7 +2105,7 @@ "category": "Message", "code": 6015 }, - "Specify module code generation: 'commonjs', 'amd', 'system' or 'umd'": { + "Specify module code generation: 'commonjs', 'amd', 'system', 'umd' or 'es6'": { "category": "Message", "code": 6016 }, @@ -2167,7 +2189,7 @@ "category": "Error", "code": 6045 }, - "Argument for '--module' option must be 'commonjs', 'amd', 'system' or 'umd'.": { + "Argument for '--module' option must be 'commonjs', 'amd', 'system', 'umd', or 'es6'.": { "category": "Error", "code": 6046 }, @@ -2231,6 +2253,11 @@ "category": "Error", "code": 6062 }, + "Argument for '--moduleResolution' option must be 'node' or 'classic'.": { + "category": "Error", + "code": 6063 + }, + "Specify JSX code generation: 'preserve' or 'react'": { "category": "Message", "code": 6080 @@ -2255,7 +2282,7 @@ "category": "Message", "code": 6068 }, - "Specifies module resolution strategy: 'node' (Node) or 'classic' (TypeScript pre 1.6) .": { + "Specifies module resolution strategy: 'node' (Node.js) or 'classic' (TypeScript pre-1.6).": { "category": "Message", "code": 6069 }, diff --git a/src/compiler/emitter.ts b/src/compiler/emitter.ts index 5ff5973a2f4..11942562dcb 100644 --- a/src/compiler/emitter.ts +++ b/src/compiler/emitter.ts @@ -7,6 +7,264 @@ namespace ts { return isExternalModule(sourceFile) || isDeclarationFile(sourceFile); } + type DependencyGroup = Array; + + let entities: Map = { + "quot": 0x0022, + "amp": 0x0026, + "apos": 0x0027, + "lt": 0x003C, + "gt": 0x003E, + "nbsp": 0x00A0, + "iexcl": 0x00A1, + "cent": 0x00A2, + "pound": 0x00A3, + "curren": 0x00A4, + "yen": 0x00A5, + "brvbar": 0x00A6, + "sect": 0x00A7, + "uml": 0x00A8, + "copy": 0x00A9, + "ordf": 0x00AA, + "laquo": 0x00AB, + "not": 0x00AC, + "shy": 0x00AD, + "reg": 0x00AE, + "macr": 0x00AF, + "deg": 0x00B0, + "plusmn": 0x00B1, + "sup2": 0x00B2, + "sup3": 0x00B3, + "acute": 0x00B4, + "micro": 0x00B5, + "para": 0x00B6, + "middot": 0x00B7, + "cedil": 0x00B8, + "sup1": 0x00B9, + "ordm": 0x00BA, + "raquo": 0x00BB, + "frac14": 0x00BC, + "frac12": 0x00BD, + "frac34": 0x00BE, + "iquest": 0x00BF, + "Agrave": 0x00C0, + "Aacute": 0x00C1, + "Acirc": 0x00C2, + "Atilde": 0x00C3, + "Auml": 0x00C4, + "Aring": 0x00C5, + "AElig": 0x00C6, + "Ccedil": 0x00C7, + "Egrave": 0x00C8, + "Eacute": 0x00C9, + "Ecirc": 0x00CA, + "Euml": 0x00CB, + "Igrave": 0x00CC, + "Iacute": 0x00CD, + "Icirc": 0x00CE, + "Iuml": 0x00CF, + "ETH": 0x00D0, + "Ntilde": 0x00D1, + "Ograve": 0x00D2, + "Oacute": 0x00D3, + "Ocirc": 0x00D4, + "Otilde": 0x00D5, + "Ouml": 0x00D6, + "times": 0x00D7, + "Oslash": 0x00D8, + "Ugrave": 0x00D9, + "Uacute": 0x00DA, + "Ucirc": 0x00DB, + "Uuml": 0x00DC, + "Yacute": 0x00DD, + "THORN": 0x00DE, + "szlig": 0x00DF, + "agrave": 0x00E0, + "aacute": 0x00E1, + "acirc": 0x00E2, + "atilde": 0x00E3, + "auml": 0x00E4, + "aring": 0x00E5, + "aelig": 0x00E6, + "ccedil": 0x00E7, + "egrave": 0x00E8, + "eacute": 0x00E9, + "ecirc": 0x00EA, + "euml": 0x00EB, + "igrave": 0x00EC, + "iacute": 0x00ED, + "icirc": 0x00EE, + "iuml": 0x00EF, + "eth": 0x00F0, + "ntilde": 0x00F1, + "ograve": 0x00F2, + "oacute": 0x00F3, + "ocirc": 0x00F4, + "otilde": 0x00F5, + "ouml": 0x00F6, + "divide": 0x00F7, + "oslash": 0x00F8, + "ugrave": 0x00F9, + "uacute": 0x00FA, + "ucirc": 0x00FB, + "uuml": 0x00FC, + "yacute": 0x00FD, + "thorn": 0x00FE, + "yuml": 0x00FF, + "OElig": 0x0152, + "oelig": 0x0153, + "Scaron": 0x0160, + "scaron": 0x0161, + "Yuml": 0x0178, + "fnof": 0x0192, + "circ": 0x02C6, + "tilde": 0x02DC, + "Alpha": 0x0391, + "Beta": 0x0392, + "Gamma": 0x0393, + "Delta": 0x0394, + "Epsilon": 0x0395, + "Zeta": 0x0396, + "Eta": 0x0397, + "Theta": 0x0398, + "Iota": 0x0399, + "Kappa": 0x039A, + "Lambda": 0x039B, + "Mu": 0x039C, + "Nu": 0x039D, + "Xi": 0x039E, + "Omicron": 0x039F, + "Pi": 0x03A0, + "Rho": 0x03A1, + "Sigma": 0x03A3, + "Tau": 0x03A4, + "Upsilon": 0x03A5, + "Phi": 0x03A6, + "Chi": 0x03A7, + "Psi": 0x03A8, + "Omega": 0x03A9, + "alpha": 0x03B1, + "beta": 0x03B2, + "gamma": 0x03B3, + "delta": 0x03B4, + "epsilon": 0x03B5, + "zeta": 0x03B6, + "eta": 0x03B7, + "theta": 0x03B8, + "iota": 0x03B9, + "kappa": 0x03BA, + "lambda": 0x03BB, + "mu": 0x03BC, + "nu": 0x03BD, + "xi": 0x03BE, + "omicron": 0x03BF, + "pi": 0x03C0, + "rho": 0x03C1, + "sigmaf": 0x03C2, + "sigma": 0x03C3, + "tau": 0x03C4, + "upsilon": 0x03C5, + "phi": 0x03C6, + "chi": 0x03C7, + "psi": 0x03C8, + "omega": 0x03C9, + "thetasym": 0x03D1, + "upsih": 0x03D2, + "piv": 0x03D6, + "ensp": 0x2002, + "emsp": 0x2003, + "thinsp": 0x2009, + "zwnj": 0x200C, + "zwj": 0x200D, + "lrm": 0x200E, + "rlm": 0x200F, + "ndash": 0x2013, + "mdash": 0x2014, + "lsquo": 0x2018, + "rsquo": 0x2019, + "sbquo": 0x201A, + "ldquo": 0x201C, + "rdquo": 0x201D, + "bdquo": 0x201E, + "dagger": 0x2020, + "Dagger": 0x2021, + "bull": 0x2022, + "hellip": 0x2026, + "permil": 0x2030, + "prime": 0x2032, + "Prime": 0x2033, + "lsaquo": 0x2039, + "rsaquo": 0x203A, + "oline": 0x203E, + "frasl": 0x2044, + "euro": 0x20AC, + "image": 0x2111, + "weierp": 0x2118, + "real": 0x211C, + "trade": 0x2122, + "alefsym": 0x2135, + "larr": 0x2190, + "uarr": 0x2191, + "rarr": 0x2192, + "darr": 0x2193, + "harr": 0x2194, + "crarr": 0x21B5, + "lArr": 0x21D0, + "uArr": 0x21D1, + "rArr": 0x21D2, + "dArr": 0x21D3, + "hArr": 0x21D4, + "forall": 0x2200, + "part": 0x2202, + "exist": 0x2203, + "empty": 0x2205, + "nabla": 0x2207, + "isin": 0x2208, + "notin": 0x2209, + "ni": 0x220B, + "prod": 0x220F, + "sum": 0x2211, + "minus": 0x2212, + "lowast": 0x2217, + "radic": 0x221A, + "prop": 0x221D, + "infin": 0x221E, + "ang": 0x2220, + "and": 0x2227, + "or": 0x2228, + "cap": 0x2229, + "cup": 0x222A, + "int": 0x222B, + "there4": 0x2234, + "sim": 0x223C, + "cong": 0x2245, + "asymp": 0x2248, + "ne": 0x2260, + "equiv": 0x2261, + "le": 0x2264, + "ge": 0x2265, + "sub": 0x2282, + "sup": 0x2283, + "nsub": 0x2284, + "sube": 0x2286, + "supe": 0x2287, + "oplus": 0x2295, + "otimes": 0x2297, + "perp": 0x22A5, + "sdot": 0x22C5, + "lceil": 0x2308, + "rceil": 0x2309, + "lfloor": 0x230A, + "rfloor": 0x230B, + "lang": 0x2329, + "rang": 0x232A, + "loz": 0x25CA, + "spades": 0x2660, + "clubs": 0x2663, + "hearts": 0x2665, + "diams": 0x2666 + }; + // Flags enum to track count of temp variables and a few dedicated names const enum TempFlags { Auto = 0x00000000, // No preferred name @@ -62,6 +320,7 @@ var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, Promi let compilerOptions = host.getCompilerOptions(); let languageVersion = compilerOptions.target || ScriptTarget.ES3; + let modulekind = compilerOptions.module ? compilerOptions.module : languageVersion === ScriptTarget.ES6 ? ModuleKind.ES6 : ModuleKind.None; let sourceMapDataList: SourceMapData[] = compilerOptions.sourceMap || compilerOptions.inlineSourceMap ? [] : undefined; let diagnostics: Diagnostic[] = []; let newLine = host.getNewLine(); @@ -184,6 +443,17 @@ var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, Promi /** Sourcemap data that will get encoded */ let sourceMapData: SourceMapData; + /** If removeComments is true, no leading-comments needed to be emitted **/ + let emitLeadingCommentsOfPosition = compilerOptions.removeComments ? function (pos: number) { } : emitLeadingCommentsOfPositionWorker; + + let moduleEmitDelegates: Map<(node: SourceFile, startIndex: number) => void> = { + [ModuleKind.ES6]: emitES6Module, + [ModuleKind.AMD]: emitAMDModule, + [ModuleKind.System]: emitSystemModule, + [ModuleKind.UMD]: emitUMDModule, + [ModuleKind.CommonJS]: emitCommonJSModule, + }; + if (compilerOptions.sourceMap || compilerOptions.inlineSourceMap) { initializeEmitterWithSourceMaps(); } @@ -681,7 +951,7 @@ var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, Promi } } } - + function emitNodeWithCommentsAndWithSourcemap(node: Node) { emitNodeConsideringCommentsOption(node, emitNodeWithSourceMap); } @@ -1176,7 +1446,7 @@ var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, Promi function emitJsxElement(openingNode: JsxOpeningLikeElement, children?: JsxChild[]) { let syntheticReactRef = createSynthesizedNode(SyntaxKind.Identifier); - syntheticReactRef.text = 'React'; + syntheticReactRef.text = "React"; syntheticReactRef.parent = openingNode; // Call React.createElement(tag, ... @@ -1420,6 +1690,7 @@ var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, Promi let parent = node.parent; switch (parent.kind) { case SyntaxKind.ArrayLiteralExpression: + case SyntaxKind.AsExpression: case SyntaxKind.BinaryExpression: case SyntaxKind.CallExpression: case SyntaxKind.CaseClause: @@ -1488,7 +1759,7 @@ var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, Promi if (container) { if (container.kind === SyntaxKind.SourceFile) { // Identifier references module export - if (languageVersion < ScriptTarget.ES6 && compilerOptions.module !== ModuleKind.System) { + if (modulekind !== ModuleKind.ES6 && modulekind !== ModuleKind.System) { write("exports."); } } @@ -1498,7 +1769,7 @@ var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, Promi write("."); } } - else if (languageVersion < ScriptTarget.ES6) { + else if (modulekind !== ModuleKind.ES6) { let declaration = resolver.getReferencedImportDeclaration(node); if (declaration) { if (declaration.kind === SyntaxKind.ImportClause) { @@ -1510,8 +1781,15 @@ var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, Promi else if (declaration.kind === SyntaxKind.ImportSpecifier) { // Identifier references named import write(getGeneratedNameForNode(declaration.parent.parent.parent)); - write("."); - writeTextOfNode(currentSourceFile, (declaration).propertyName || (declaration).name); + let name = (declaration).propertyName || (declaration).name; + let identifier = getSourceTextOfNodeFromSourceFile(currentSourceFile, name); + if (languageVersion === ScriptTarget.ES3 && identifier === "default") { + write(`["default"]`); + } + else { + write("."); + write(identifier); + } return; } } @@ -2047,15 +2325,15 @@ var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, Promi } return false; } - + function tryGetConstEnumValue(node: Node): number { if (compilerOptions.isolatedModules) { return undefined; } - - return node.kind === SyntaxKind.PropertyAccessExpression || node.kind === SyntaxKind.ElementAccessExpression + + return node.kind === SyntaxKind.PropertyAccessExpression || node.kind === SyntaxKind.ElementAccessExpression ? resolver.getConstantValue(node) - : undefined + : undefined; } // Returns 'true' if the code was actually indented, false otherwise. @@ -3044,7 +3322,7 @@ var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, Promi write(getGeneratedNameForNode(container)); write("."); } - else if (languageVersion < ScriptTarget.ES6 && compilerOptions.module !== ModuleKind.System) { + else if (modulekind !== ModuleKind.ES6 && modulekind !== ModuleKind.System) { write("exports."); } } @@ -3064,7 +3342,7 @@ var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, Promi if (node.parent.kind === SyntaxKind.SourceFile) { Debug.assert(!!(node.flags & NodeFlags.Default) || node.kind === SyntaxKind.ExportAssignment); // only allow export default at a source file level - if (compilerOptions.module === ModuleKind.CommonJS || compilerOptions.module === ModuleKind.AMD || compilerOptions.module === ModuleKind.UMD) { + if (modulekind === ModuleKind.CommonJS || modulekind === ModuleKind.AMD || modulekind === ModuleKind.UMD) { if (!currentSourceFile.symbol.exports["___esModule"]) { if (languageVersion === ScriptTarget.ES5) { // default value of configurable, enumerable, writable are `false`. @@ -3086,7 +3364,7 @@ var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, Promi emitStart(node); // emit call to exporter only for top level nodes - if (compilerOptions.module === ModuleKind.System && node.parent === currentSourceFile) { + if (modulekind === ModuleKind.System && node.parent === currentSourceFile) { // emit export default as // export("default", ) write(`${exportFunctionForFile}("`); @@ -3122,10 +3400,10 @@ var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, Promi } function emitExportMemberAssignments(name: Identifier) { - if (compilerOptions.module === ModuleKind.System) { + if (modulekind === ModuleKind.System) { return; } - + if (!exportEquals && exportSpecifiers && hasProperty(exportSpecifiers, name.text)) { for (let specifier of exportSpecifiers[name.text]) { writeLine(); @@ -3140,10 +3418,14 @@ var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, Promi } } } - + function emitExportSpecifierInSystemModule(specifier: ExportSpecifier): void { - Debug.assert(compilerOptions.module === ModuleKind.System); - + Debug.assert(modulekind === ModuleKind.System); + + if (!resolver.getReferencedValueDeclaration(specifier.propertyName || specifier.name) && !resolver.isValueAliasDeclaration(specifier) ) { + return; + } + writeLine(); emitStart(specifier.name); write(`${exportFunctionForFile}("`); @@ -3211,22 +3493,32 @@ var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, Promi } } - function ensureIdentifier(expr: Expression): Expression { - if (expr.kind !== SyntaxKind.Identifier) { - let identifier = createTempVariable(TempFlags.Auto); - if (!canDefineTempVariablesInPlace) { - recordTempDeclaration(identifier); - } - emitAssignment(identifier, expr); - expr = identifier; + /** + * Ensures that there exists a declared identifier whose value holds the given expression. + * This function is useful to ensure that the expression's value can be read from in subsequent expressions. + * Unless 'reuseIdentifierExpressions' is false, 'expr' will be returned if it is just an identifier. + * + * @param expr the expression whose value needs to be bound. + * @param reuseIdentifierExpressions true if identifier expressions can simply be returned; + * false if it is necessary to always emit an identifier. + */ + function ensureIdentifier(expr: Expression, reuseIdentifierExpressions: boolean): Expression { + if (expr.kind === SyntaxKind.Identifier && reuseIdentifierExpressions) { + return expr; } - return expr; + + let identifier = createTempVariable(TempFlags.Auto); + if (!canDefineTempVariablesInPlace) { + recordTempDeclaration(identifier); + } + emitAssignment(identifier, expr); + return identifier; } 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); + value = ensureIdentifier(value, /*reuseIdentifierExpressions*/ true); // Return the expression 'value === void 0 ? defaultValue : value' let equals = createSynthesizedNode(SyntaxKind.BinaryExpression); equals.left = value; @@ -3277,7 +3569,7 @@ var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, Promi 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); + value = ensureIdentifier(value, /*reuseIdentifierExpressions*/ true); } for (let p of properties) { if (p.kind === SyntaxKind.PropertyAssignment || p.kind === SyntaxKind.ShorthandPropertyAssignment) { @@ -3292,7 +3584,7 @@ var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, Promi 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); + value = ensureIdentifier(value, /*reuseIdentifierExpressions*/ true); } for (let i = 0; i < elements.length; i++) { let e = elements[i]; @@ -3337,7 +3629,7 @@ var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, Promi if (root.parent.kind !== SyntaxKind.ParenthesizedExpression) { write("("); } - value = ensureIdentifier(value); + value = ensureIdentifier(value, /*reuseIdentifierExpressions*/ true); emitDestructuringAssignment(target, value); write(", "); emit(value); @@ -3347,7 +3639,7 @@ var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, Promi } } - function emitBindingElement(target: BindingElement, value: Expression) { + function emitBindingElement(target: BindingElement | VariableDeclaration, value: Expression) { if (target.initializer) { // Combine value and initializer value = value ? createDefaultValueCheck(value, target.initializer) : target.initializer; @@ -3357,14 +3649,19 @@ var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, Promi value = createVoidZero(); } if (isBindingPattern(target.name)) { - 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); + const pattern = target.name; + const elements = pattern.elements; + const numElements = elements.length; + + if (numElements !== 1) { + // For anything other than a single-element destructuring we need to generate a temporary + // to ensure value is evaluated exactly once. Additionally, if we have zero elements + // we need to emit *something* to ensure that in case a 'var' keyword was already emitted, + // so in that case, we'll intentionally create that temporary. + value = ensureIdentifier(value, /*reuseIdentifierExpressions*/ numElements !== 0); } - for (let i = 0; i < elements.length; i++) { + + for (let i = 0; i < numElements; i++) { let element = elements[i]; if (pattern.kind === SyntaxKind.ObjectBindingPattern) { // Rewrite element to a declaration with an initializer that fetches property @@ -3376,7 +3673,7 @@ var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, Promi // Rewrite element to a declaration that accesses array element at index i emitBindingElement(element, createElementAccessExpression(value, createNumericLiteral(i))); } - else if (i === elements.length - 1) { + else if (i === numElements - 1) { emitBindingElement(element, createSliceCall(value, i)); } } @@ -3460,7 +3757,7 @@ var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, Promi function isES6ExportedDeclaration(node: Node) { return !!(node.flags & NodeFlags.Export) && - languageVersion >= ScriptTarget.ES6 && + modulekind === ModuleKind.ES6 && node.parent.kind === SyntaxKind.SourceFile; } @@ -3667,7 +3964,7 @@ var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, Promi function emitFunctionDeclaration(node: FunctionLikeDeclaration) { if (nodeIsMissing(node.body)) { - return emitOnlyPinnedOrTripleSlashComments(node); + return emitCommentsOnNotEmittedNode(node); } // TODO (yuisu) : we should not have special cases to condition emitting comments @@ -4144,7 +4441,7 @@ var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, Promi } else if (member.kind === SyntaxKind.MethodDeclaration || node.kind === SyntaxKind.MethodSignature) { if (!(member).body) { - return emitOnlyPinnedOrTripleSlashComments(member); + return emitCommentsOnNotEmittedNode(member); } writeLine(); @@ -4211,7 +4508,7 @@ var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, Promi function emitMemberFunctionsForES6AndHigher(node: ClassLikeDeclaration) { for (let member of node.members) { if ((member.kind === SyntaxKind.MethodDeclaration || node.kind === SyntaxKind.MethodSignature) && !(member).body) { - emitOnlyPinnedOrTripleSlashComments(member); + emitCommentsOnNotEmittedNode(member); } else if (member.kind === SyntaxKind.MethodDeclaration || member.kind === SyntaxKind.GetAccessor || @@ -4268,7 +4565,7 @@ var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, Promi // Emit the constructor overload pinned comments forEach(node.members, member => { if (member.kind === SyntaxKind.Constructor && !(member).body) { - emitOnlyPinnedOrTripleSlashComments(member); + emitCommentsOnNotEmittedNode(member); } // Check if there is any non-static property assignment if (member.kind === SyntaxKind.PropertyDeclaration && (member).initializer && (member.flags & NodeFlags.Static) === 0) { @@ -4486,8 +4783,10 @@ var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, Promi 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) { + // emit name if + // - node has a name + // - this is default export and target is not ES6 (for ES6 `export default` does not need to be compiled downlevel) + if ((node.name || (node.flags & NodeFlags.Default && languageVersion < ScriptTarget.ES6)) && !thisNodeIsDecorated) { write(" "); emitDeclarationName(node); } @@ -5152,7 +5451,7 @@ var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, Promi } function emitInterfaceDeclaration(node: InterfaceDeclaration) { - emitOnlyPinnedOrTripleSlashComments(node); + emitCommentsOnNotEmittedNode(node); } function shouldEmitEnumDeclaration(node: EnumDeclaration) { @@ -5211,7 +5510,7 @@ var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, Promi write(";"); } if (languageVersion < ScriptTarget.ES6 && node.parent === currentSourceFile) { - if (compilerOptions.module === ModuleKind.System && (node.flags & NodeFlags.Export)) { + if (modulekind === ModuleKind.System && (node.flags & NodeFlags.Export)) { // write the call to exporter for enum writeLine(); write(`${exportFunctionForFile}("`); @@ -5274,7 +5573,7 @@ var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, Promi let shouldEmit = shouldEmitModuleDeclaration(node); if (!shouldEmit) { - return emitOnlyPinnedOrTripleSlashComments(node); + return emitCommentsOnNotEmittedNode(node); } let hoistedInDeclarationScope = shouldHoistDeclarationInSystemJsModule(node); let emitVarForModule = !hoistedInDeclarationScope && !isModuleMergedWithES6Class(node); @@ -5333,7 +5632,7 @@ var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, Promi write(" = {}));"); emitEnd(node); if (!isES6ExportedDeclaration(node) && node.name.kind === SyntaxKind.Identifier && node.parent === currentSourceFile) { - if (compilerOptions.module === ModuleKind.System && (node.flags & NodeFlags.Export)) { + if (modulekind === ModuleKind.System && (node.flags & NodeFlags.Export)) { writeLine(); write(`${exportFunctionForFile}("`); emitDeclarationName(node); @@ -5344,14 +5643,14 @@ var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, Promi emitExportMemberAssignments(node.name); } } - + /* * Some bundlers (SystemJS builder) sometimes want to rename dependencies. * Here we check if alternative name was provided for a given moduleName and return it if possible. */ function tryRenameExternalModule(moduleName: LiteralExpression): string { if (currentSourceFile.renamedDependencies && hasProperty(currentSourceFile.renamedDependencies, moduleName.text)) { - return `"${currentSourceFile.renamedDependencies[moduleName.text]}"` + return `"${currentSourceFile.renamedDependencies[moduleName.text]}"`; } return undefined; } @@ -5397,7 +5696,7 @@ var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, Promi } function emitImportDeclaration(node: ImportDeclaration) { - if (languageVersion < ScriptTarget.ES6) { + if (modulekind !== ModuleKind.ES6) { return emitExternalImportDeclaration(node); } @@ -5448,7 +5747,7 @@ var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, Promi let isExportedImport = node.kind === SyntaxKind.ImportEqualsDeclaration && (node.flags & NodeFlags.Export) !== 0; let namespaceDeclaration = getNamespaceDeclarationNode(node); - if (compilerOptions.module !== ModuleKind.AMD) { + if (modulekind !== ModuleKind.AMD) { emitLeadingComments(node); emitStart(node); if (namespaceDeclaration && !isDefaultImport(node)) { @@ -5560,15 +5859,15 @@ var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, Promi } function emitExportDeclaration(node: ExportDeclaration) { - Debug.assert(compilerOptions.module !== ModuleKind.System); + Debug.assert(modulekind !== ModuleKind.System); - if (languageVersion < ScriptTarget.ES6) { + if (modulekind !== ModuleKind.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) { + if (modulekind !== ModuleKind.AMD) { write("var "); write(generatedName); write(" = "); @@ -5595,7 +5894,7 @@ var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, Promi // export * from "foo" writeLine(); write("__export("); - if (compilerOptions.module !== ModuleKind.AMD) { + if (modulekind !== ModuleKind.AMD) { emitRequire(getExternalModuleName(node)); } else { @@ -5628,7 +5927,7 @@ var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, Promi } function emitExportOrImportSpecifierList(specifiers: ImportOrExportSpecifier[], shouldEmit: (node: Node) => boolean) { - Debug.assert(languageVersion >= ScriptTarget.ES6); + Debug.assert(modulekind === ModuleKind.ES6); let needsComma = false; for (let specifier of specifiers) { @@ -5648,7 +5947,7 @@ var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, Promi function emitExportAssignment(node: ExportAssignment) { if (!node.isExportEquals && resolver.isValueAliasDeclaration(node)) { - if (languageVersion >= ScriptTarget.ES6) { + if (modulekind === ModuleKind.ES6) { writeLine(); emitStart(node); write("export default "); @@ -5663,7 +5962,7 @@ var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, Promi else { writeLine(); emitStart(node); - if (compilerOptions.module === ModuleKind.System) { + if (modulekind === ModuleKind.System) { write(`${exportFunctionForFile}("default",`); emit(node.expression); write(")"); @@ -5673,7 +5972,8 @@ var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, Promi emitContainingModuleName(node); if (languageVersion === ScriptTarget.ES3) { write("[\"default\"] = "); - } else { + } + else { write(".default = "); } emit(node.expression); @@ -5766,7 +6066,7 @@ var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, Promi function getExternalModuleNameText(importNode: ImportDeclaration | ExportDeclaration | ImportEqualsDeclaration): string { let moduleName = getExternalModuleName(importNode); if (moduleName.kind === SyntaxKind.StringLiteral) { - return tryRenameExternalModule(moduleName) || getLiteralText(moduleName); + return tryRenameExternalModule(moduleName) || getLiteralText(moduleName); } return undefined; @@ -6075,7 +6375,7 @@ var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, Promi return; } - if (isInternalModuleImportEqualsDeclaration(node)) { + if (isInternalModuleImportEqualsDeclaration(node) && resolver.isValueAliasDeclaration(node)) { if (!hoistedVars) { hoistedVars = []; } @@ -6109,7 +6409,7 @@ var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, Promi } function isCurrentFileSystemExternalModule() { - return compilerOptions.module === ModuleKind.System && isExternalModule(currentSourceFile); + return modulekind === ModuleKind.System && isExternalModule(currentSourceFile); } function emitSystemModuleBody(node: SourceFile, dependencyGroups: DependencyGroup[], startIndex: number): void { @@ -6168,7 +6468,7 @@ var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, Promi function emitSetters(exportStarFunction: string, dependencyGroups: DependencyGroup[]) { write("setters:["); - + for (let i = 0; i < dependencyGroups.length; ++i) { if (i !== 0) { write(","); @@ -6176,17 +6476,17 @@ var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, Promi writeLine(); increaseIndent(); - + let group = dependencyGroups[i]; - + // derive a unique name for parameter from the first named entry in the group let parameterName = makeUniqueName(forEach(group, getLocalNameForExternalImport) || ""); write(`function (${parameterName}) {`); increaseIndent(); - - for(let entry of group) { + + for (let entry of group) { let importVariableName = getLocalNameForExternalImport(entry) || ""; - + switch (entry.kind) { case SyntaxKind.ImportDeclaration: if (!(entry).importClause) { @@ -6222,7 +6522,7 @@ var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, Promi write(","); writeLine(); } - + let e = (entry).exportClause.elements[i]; write(`"`); emitNodeWithCommentsAndWithoutSourcemap(e.name); @@ -6232,7 +6532,7 @@ var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, Promi } decreaseIndent(); writeLine(); - write("});") + write("});"); } else { writeLine(); @@ -6267,7 +6567,7 @@ var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, Promi // - import declarations are not emitted since they are already handled in setters // - export declarations with module specifiers are not emitted since they were already written in setters // - export declarations without module specifiers are emitted preserving the order - case SyntaxKind.FunctionDeclaration: + case SyntaxKind.FunctionDeclaration: case SyntaxKind.ImportDeclaration: continue; case SyntaxKind.ExportDeclaration: @@ -6287,15 +6587,13 @@ var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, Promi default: writeLine(); emit(statement); - } + } } decreaseIndent(); writeLine(); write("}"); // execute } - - type DependencyGroup = Array; - + function emitSystemModule(node: SourceFile, startIndex: number): void { collectExternalModuleInfo(node); // System modules has the following shape @@ -6315,7 +6613,7 @@ var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, Promi write(`"${node.moduleName}", `); } write("["); - + let groupIndices: Map = {}; let dependencyGroups: DependencyGroup[] = []; @@ -6335,7 +6633,7 @@ var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, Promi if (i !== 0) { write(", "); } - + write(text); } write(`], function(${exportFunctionForFile}) {`); @@ -6349,19 +6647,13 @@ var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, Promi write("});"); } - function emitAMDDependencies(node: SourceFile, includeNonAmdDependencies: boolean) { - // An AMD define function has the following shape: - // define(id?, dependencies?, factory); - // - // This has the shape of - // define(name, ["module1", "module2"], function (module1Alias) { - // The location of the alias in the parameter list in the factory function needs to - // match the position of the module name in the dependency list. - // - // To ensure this is true in cases of modules with no aliases, e.g.: - // `import "module"` or `` - // we need to add modules without alias names to the end of the dependencies list + interface AMDDependencyNames { + aliasedModuleNames: string[]; + unaliasedModuleNames: string[]; + importAliasNames: string[]; + } + function getAMDDependencyNames(node: SourceFile, includeNonAmdDependencies: boolean): AMDDependencyNames { // names of modules with corresponding parameter in the factory function let aliasedModuleNames: string[] = []; // names of modules with no corresponding parameters in factory function @@ -6396,6 +6688,29 @@ var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, Promi } } + return { aliasedModuleNames, unaliasedModuleNames, importAliasNames }; + } + + function emitAMDDependencies(node: SourceFile, includeNonAmdDependencies: boolean) { + // An AMD define function has the following shape: + // define(id?, dependencies?, factory); + // + // This has the shape of + // define(name, ["module1", "module2"], function (module1Alias) { + // The location of the alias in the parameter list in the factory function needs to + // match the position of the module name in the dependency list. + // + // To ensure this is true in cases of modules with no aliases, e.g.: + // `import "module"` or `` + // we need to add modules without alias names to the end of the dependencies list + + let dependencyNames = getAMDDependencyNames(node, includeNonAmdDependencies); + emitAMDDependencyList(dependencyNames); + write(", "); + emitAMDFactoryHeader(dependencyNames); + } + + function emitAMDDependencyList({ aliasedModuleNames, unaliasedModuleNames }: AMDDependencyNames) { write("[\"require\", \"exports\""); if (aliasedModuleNames.length) { write(", "); @@ -6405,11 +6720,16 @@ var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, Promi write(", "); write(unaliasedModuleNames.join(", ")); } - write("], function (require, exports"); + write("]"); + } + + function emitAMDFactoryHeader({ importAliasNames }: AMDDependencyNames) { + write("function (require, exports"); if (importAliasNames.length) { write(", "); write(importAliasNames.join(", ")); } + write(") {"); } function emitAMDModule(node: SourceFile, startIndex: number) { @@ -6422,7 +6742,6 @@ var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, Promi write("\"" + node.moduleName + "\", "); } emitAMDDependencies(node, /*includeNonAmdDependencies*/ true); - write(") {"); increaseIndent(); emitExportStarHelper(); emitCaptureThisForNodeIfNecessary(node); @@ -6448,17 +6767,20 @@ var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, Promi emitEmitHelpers(node); collectExternalModuleInfo(node); + let dependencyNames = getAMDDependencyNames(node, /*includeNonAmdDependencies*/ false); + // Module is detected first to support Browserify users that load into a browser with an AMD loader - writeLines(`(function (deps, factory) { + writeLines(`(function (factory) { if (typeof module === 'object' && typeof module.exports === 'object') { var v = factory(require, exports); if (v !== undefined) module.exports = v; } else if (typeof define === 'function' && define.amd) { - define(deps, factory); - } + define(`); + emitAMDDependencyList(dependencyNames); + write(", factory);"); + writeLines(` } })(`); - emitAMDDependencies(node, false); - write(") {"); + emitAMDFactoryHeader(dependencyNames); increaseIndent(); emitExportStarHelper(); emitCaptureThisForNodeIfNecessary(node); @@ -6667,21 +6989,8 @@ var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, Promi let startIndex = emitDirectivePrologues(node.statements, /*startWithNewLine*/ false); if (isExternalModule(node) || compilerOptions.isolatedModules) { - if (languageVersion >= ScriptTarget.ES6) { - emitES6Module(node, startIndex); - } - else if (compilerOptions.module === ModuleKind.AMD) { - emitAMDModule(node, startIndex); - } - else if (compilerOptions.module === ModuleKind.System) { - emitSystemModule(node, startIndex); - } - else if (compilerOptions.module === ModuleKind.UMD) { - emitUMDModule(node, startIndex); - } - else { - emitCommonJSModule(node, startIndex); - } + let emitModule = moduleEmitDelegates[modulekind] || moduleEmitDelegates[ModuleKind.CommonJS]; + emitModule(node, startIndex); } else { externalImports = undefined; @@ -6704,7 +7013,7 @@ var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, Promi function emitNodeConsideringCommentsOption(node: Node, emitNodeConsideringSourcemap: (node: Node) => void): void { if (node) { if (node.flags & NodeFlags.Ambient) { - return emitOnlyPinnedOrTripleSlashComments(node); + return emitCommentsOnNotEmittedNode(node); } if (isSpecializedCommentHandling(node)) { @@ -6971,22 +7280,28 @@ var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, Promi return leadingComments; } - /** - * Removes all but the pinned or triple slash comments. - * @param ranges The array to be filtered - * @param onlyPinnedOrTripleSlashComments whether the filtering should be performed. - */ - 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; - } - } + function isPinnedComments(comment: CommentRange) { + return currentSourceFile.text.charCodeAt(comment.pos + 1) === CharacterCodes.asterisk && + currentSourceFile.text.charCodeAt(comment.pos + 2) === CharacterCodes.exclamation; + } - return ranges; + /** + * Determine if the given comment is a triple-slash + * + * @return true if the comment is a triple-slash comment else false + **/ + function isTripleSlashComment(comment: CommentRange) { + // 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 + if (currentSourceFile.text.charCodeAt(comment.pos + 1) === CharacterCodes.slash && + comment.pos + 2 < comment.end && + currentSourceFile.text.charCodeAt(comment.pos + 2) === CharacterCodes.slash) { + let textSubStr = currentSourceFile.text.substring(comment.pos, comment.end); + return textSubStr.match(fullTripleSlashReferencePathRegEx) || + textSubStr.match(fullTripleSlashAMDReferencePathRegEx) ? + true : false; + } + return false; } function getLeadingCommentsToEmit(node: Node) { @@ -7014,28 +7329,53 @@ var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, Promi } } - function emitOnlyPinnedOrTripleSlashComments(node: Node) { - emitLeadingCommentsWorker(node, /*onlyPinnedOrTripleSlashComments:*/ true); + /** + * Emit comments associated with node that will not be emitted into JS file + */ + function emitCommentsOnNotEmittedNode(node: Node) { + emitLeadingCommentsWorker(node, /*isEmittedNode:*/ false); } function emitLeadingComments(node: Node) { - return emitLeadingCommentsWorker(node, /*onlyPinnedOrTripleSlashComments:*/ compilerOptions.removeComments); + return emitLeadingCommentsWorker(node, /*isEmittedNode:*/ true); } - 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); + function emitLeadingCommentsWorker(node: Node, isEmittedNode: boolean) { + if (compilerOptions.removeComments) { + return; + } + + let leadingComments: CommentRange[]; + if (isEmittedNode) { + leadingComments = getLeadingCommentsToEmit(node); + } + else { + // If the node will not be emitted in JS, remove all the comments(normal, pinned and ///) associated with the node, + // unless it is a triple slash comment at the top of the file. + // For Example: + // /// + // declare var x; + // /// + // interface F {} + // The first /// will NOT be removed while the second one will be removed eventhough both node will not be emitted + if (node.pos === 0) { + leadingComments = filter(getLeadingCommentsToEmit(node), isTripleSlashComment); + } + } emitNewLineBeforeLeadingComments(currentSourceFile, writer, node, leadingComments); // Leading comments are emitted at /*leading comment1 */space/*leading comment*/space - emitComments(currentSourceFile, writer, leadingComments, /*trailingSeparator*/ true, newLine, writeComment); + emitComments(currentSourceFile, writer, leadingComments, /*trailingSeparator:*/ true, newLine, writeComment); } function emitTrailingComments(node: Node) { + if (compilerOptions.removeComments) { + return; + } + // Emit the trailing comments only if the parent's end doesn't match - let trailingComments = filterComments(getTrailingCommentsToEmit(node), /*onlyPinnedOrTripleSlashComments:*/ compilerOptions.removeComments); + let trailingComments = getTrailingCommentsToEmit(node); // trailing comments are emitted at space/*trailing comment1 */space/*trailing comment*/ emitComments(currentSourceFile, writer, trailingComments, /*trailingSeparator*/ false, newLine, writeComment); @@ -7047,13 +7387,21 @@ var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, Promi * ^ => pos; the function will emit "comment1" in the emitJS */ function emitTrailingCommentsOfPosition(pos: number) { - let trailingComments = filterComments(getTrailingCommentRanges(currentSourceFile.text, pos), /*onlyPinnedOrTripleSlashComments:*/ compilerOptions.removeComments); + if (compilerOptions.removeComments) { + return; + } + + let trailingComments = getTrailingCommentRanges(currentSourceFile.text, pos); // trailing comments are emitted at space/*trailing comment1 */space/*trailing comment*/ emitComments(currentSourceFile, writer, trailingComments, /*trailingSeparator*/ true, newLine, writeComment); } - function emitLeadingCommentsOfPosition(pos: number) { + function emitLeadingCommentsOfPositionWorker(pos: number) { + if (compilerOptions.removeComments) { + return; + } + let leadingComments: CommentRange[]; if (hasDetachedComments(pos)) { // get comments without detached comments @@ -7064,7 +7412,6 @@ var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, Promi 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 @@ -7072,7 +7419,22 @@ var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, Promi } function emitDetachedComments(node: TextRange) { - let leadingComments = getLeadingCommentRanges(currentSourceFile.text, node.pos); + let leadingComments: CommentRange[]; + if (compilerOptions.removeComments) { + // removeComments is true, only reserve pinned comment at the top of file + // For example: + // /*! Pinned Comment */ + // + // var x = 10; + if (node.pos === 0) { + leadingComments = filter(getLeadingCommentRanges(currentSourceFile.text, node.pos), isPinnedComments); + } + } + else { + // removeComments is false, just get detached as normal and bypass the process to filter comment + leadingComments = getLeadingCommentRanges(currentSourceFile.text, node.pos); + } + if (leadingComments) { let detachedComments: CommentRange[] = []; let lastComment: CommentRange; @@ -7115,27 +7477,13 @@ var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, Promi } } } - + function emitShebang() { let shebang = getShebang(currentSourceFile.text); if (shebang) { write(shebang); } } - - 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 emitFile(jsFilePath: string, sourceFile?: SourceFile) { @@ -7146,260 +7494,4 @@ var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, Promi } } } - - var entities: Map = { - "quot": 0x0022, - "amp": 0x0026, - "apos": 0x0027, - "lt": 0x003C, - "gt": 0x003E, - "nbsp": 0x00A0, - "iexcl": 0x00A1, - "cent": 0x00A2, - "pound": 0x00A3, - "curren": 0x00A4, - "yen": 0x00A5, - "brvbar": 0x00A6, - "sect": 0x00A7, - "uml": 0x00A8, - "copy": 0x00A9, - "ordf": 0x00AA, - "laquo": 0x00AB, - "not": 0x00AC, - "shy": 0x00AD, - "reg": 0x00AE, - "macr": 0x00AF, - "deg": 0x00B0, - "plusmn": 0x00B1, - "sup2": 0x00B2, - "sup3": 0x00B3, - "acute": 0x00B4, - "micro": 0x00B5, - "para": 0x00B6, - "middot": 0x00B7, - "cedil": 0x00B8, - "sup1": 0x00B9, - "ordm": 0x00BA, - "raquo": 0x00BB, - "frac14": 0x00BC, - "frac12": 0x00BD, - "frac34": 0x00BE, - "iquest": 0x00BF, - "Agrave": 0x00C0, - "Aacute": 0x00C1, - "Acirc": 0x00C2, - "Atilde": 0x00C3, - "Auml": 0x00C4, - "Aring": 0x00C5, - "AElig": 0x00C6, - "Ccedil": 0x00C7, - "Egrave": 0x00C8, - "Eacute": 0x00C9, - "Ecirc": 0x00CA, - "Euml": 0x00CB, - "Igrave": 0x00CC, - "Iacute": 0x00CD, - "Icirc": 0x00CE, - "Iuml": 0x00CF, - "ETH": 0x00D0, - "Ntilde": 0x00D1, - "Ograve": 0x00D2, - "Oacute": 0x00D3, - "Ocirc": 0x00D4, - "Otilde": 0x00D5, - "Ouml": 0x00D6, - "times": 0x00D7, - "Oslash": 0x00D8, - "Ugrave": 0x00D9, - "Uacute": 0x00DA, - "Ucirc": 0x00DB, - "Uuml": 0x00DC, - "Yacute": 0x00DD, - "THORN": 0x00DE, - "szlig": 0x00DF, - "agrave": 0x00E0, - "aacute": 0x00E1, - "acirc": 0x00E2, - "atilde": 0x00E3, - "auml": 0x00E4, - "aring": 0x00E5, - "aelig": 0x00E6, - "ccedil": 0x00E7, - "egrave": 0x00E8, - "eacute": 0x00E9, - "ecirc": 0x00EA, - "euml": 0x00EB, - "igrave": 0x00EC, - "iacute": 0x00ED, - "icirc": 0x00EE, - "iuml": 0x00EF, - "eth": 0x00F0, - "ntilde": 0x00F1, - "ograve": 0x00F2, - "oacute": 0x00F3, - "ocirc": 0x00F4, - "otilde": 0x00F5, - "ouml": 0x00F6, - "divide": 0x00F7, - "oslash": 0x00F8, - "ugrave": 0x00F9, - "uacute": 0x00FA, - "ucirc": 0x00FB, - "uuml": 0x00FC, - "yacute": 0x00FD, - "thorn": 0x00FE, - "yuml": 0x00FF, - "OElig": 0x0152, - "oelig": 0x0153, - "Scaron": 0x0160, - "scaron": 0x0161, - "Yuml": 0x0178, - "fnof": 0x0192, - "circ": 0x02C6, - "tilde": 0x02DC, - "Alpha": 0x0391, - "Beta": 0x0392, - "Gamma": 0x0393, - "Delta": 0x0394, - "Epsilon": 0x0395, - "Zeta": 0x0396, - "Eta": 0x0397, - "Theta": 0x0398, - "Iota": 0x0399, - "Kappa": 0x039A, - "Lambda": 0x039B, - "Mu": 0x039C, - "Nu": 0x039D, - "Xi": 0x039E, - "Omicron": 0x039F, - "Pi": 0x03A0, - "Rho": 0x03A1, - "Sigma": 0x03A3, - "Tau": 0x03A4, - "Upsilon": 0x03A5, - "Phi": 0x03A6, - "Chi": 0x03A7, - "Psi": 0x03A8, - "Omega": 0x03A9, - "alpha": 0x03B1, - "beta": 0x03B2, - "gamma": 0x03B3, - "delta": 0x03B4, - "epsilon": 0x03B5, - "zeta": 0x03B6, - "eta": 0x03B7, - "theta": 0x03B8, - "iota": 0x03B9, - "kappa": 0x03BA, - "lambda": 0x03BB, - "mu": 0x03BC, - "nu": 0x03BD, - "xi": 0x03BE, - "omicron": 0x03BF, - "pi": 0x03C0, - "rho": 0x03C1, - "sigmaf": 0x03C2, - "sigma": 0x03C3, - "tau": 0x03C4, - "upsilon": 0x03C5, - "phi": 0x03C6, - "chi": 0x03C7, - "psi": 0x03C8, - "omega": 0x03C9, - "thetasym": 0x03D1, - "upsih": 0x03D2, - "piv": 0x03D6, - "ensp": 0x2002, - "emsp": 0x2003, - "thinsp": 0x2009, - "zwnj": 0x200C, - "zwj": 0x200D, - "lrm": 0x200E, - "rlm": 0x200F, - "ndash": 0x2013, - "mdash": 0x2014, - "lsquo": 0x2018, - "rsquo": 0x2019, - "sbquo": 0x201A, - "ldquo": 0x201C, - "rdquo": 0x201D, - "bdquo": 0x201E, - "dagger": 0x2020, - "Dagger": 0x2021, - "bull": 0x2022, - "hellip": 0x2026, - "permil": 0x2030, - "prime": 0x2032, - "Prime": 0x2033, - "lsaquo": 0x2039, - "rsaquo": 0x203A, - "oline": 0x203E, - "frasl": 0x2044, - "euro": 0x20AC, - "image": 0x2111, - "weierp": 0x2118, - "real": 0x211C, - "trade": 0x2122, - "alefsym": 0x2135, - "larr": 0x2190, - "uarr": 0x2191, - "rarr": 0x2192, - "darr": 0x2193, - "harr": 0x2194, - "crarr": 0x21B5, - "lArr": 0x21D0, - "uArr": 0x21D1, - "rArr": 0x21D2, - "dArr": 0x21D3, - "hArr": 0x21D4, - "forall": 0x2200, - "part": 0x2202, - "exist": 0x2203, - "empty": 0x2205, - "nabla": 0x2207, - "isin": 0x2208, - "notin": 0x2209, - "ni": 0x220B, - "prod": 0x220F, - "sum": 0x2211, - "minus": 0x2212, - "lowast": 0x2217, - "radic": 0x221A, - "prop": 0x221D, - "infin": 0x221E, - "ang": 0x2220, - "and": 0x2227, - "or": 0x2228, - "cap": 0x2229, - "cup": 0x222A, - "int": 0x222B, - "there4": 0x2234, - "sim": 0x223C, - "cong": 0x2245, - "asymp": 0x2248, - "ne": 0x2260, - "equiv": 0x2261, - "le": 0x2264, - "ge": 0x2265, - "sub": 0x2282, - "sup": 0x2283, - "nsub": 0x2284, - "sube": 0x2286, - "supe": 0x2287, - "oplus": 0x2295, - "otimes": 0x2297, - "perp": 0x22A5, - "sdot": 0x22C5, - "lceil": 0x2308, - "rceil": 0x2309, - "lfloor": 0x230A, - "rfloor": 0x230B, - "lang": 0x2329, - "rang": 0x232A, - "loz": 0x25CA, - "spades": 0x2660, - "clubs": 0x2663, - "hearts": 0x2665, - "diams": 0x2666 - } } diff --git a/src/compiler/parser.ts b/src/compiler/parser.ts index 350b9d450b8..08f21e80e14 100644 --- a/src/compiler/parser.ts +++ b/src/compiler/parser.ts @@ -425,7 +425,7 @@ namespace ts { // Implement the parser as a singleton module. We do this for perf reasons because creating // parser instances can actually be expensive enough to impact us on projects with many source // files. - module Parser { + namespace Parser { // Share a single scanner across all calls to parse a source file. This helps speed things // up by avoiding the cost of creating/compiling scanners over and over again. const scanner = createScanner(ScriptTarget.Latest, /*skipTrivia*/ true); @@ -518,7 +518,7 @@ namespace ts { // // Note: any errors at the end of the file that do not precede a regular node, should get // attached to the EOF token. - let parseErrorBeforeNextFinishedNode: boolean = false; + let parseErrorBeforeNextFinishedNode = false; export function parseSourceFile(fileName: string, _sourceText: string, languageVersion: ScriptTarget, _syntaxCursor: IncrementalParser.SyntaxCursor, setParentNodes?: boolean): SourceFile { initializeState(fileName, _sourceText, languageVersion, _syntaxCursor); @@ -1058,11 +1058,11 @@ namespace ts { } function parseIdentifierName(): Identifier { - return createIdentifier(isIdentifierOrKeyword()); + return createIdentifier(tokenIsIdentifierOrKeyword(token)); } function isLiteralPropertyName(): boolean { - return isIdentifierOrKeyword() || + return tokenIsIdentifierOrKeyword(token) || token === SyntaxKind.StringLiteral || token === SyntaxKind.NumericLiteral; } @@ -1086,7 +1086,7 @@ namespace ts { } function isSimplePropertyName() { - return token === SyntaxKind.StringLiteral || token === SyntaxKind.NumericLiteral || isIdentifierOrKeyword(); + return token === SyntaxKind.StringLiteral || token === SyntaxKind.NumericLiteral || tokenIsIdentifierOrKeyword(token); } function parseComputedPropertyName(): ComputedPropertyName { @@ -1213,9 +1213,9 @@ namespace ts { case ParsingContext.HeritageClauses: return isHeritageClause(); case ParsingContext.ImportOrExportSpecifiers: - return isIdentifierOrKeyword(); + return tokenIsIdentifierOrKeyword(token); case ParsingContext.JsxAttributes: - return isIdentifierOrKeyword() || token === SyntaxKind.OpenBraceToken; + return tokenIsIdentifierOrKeyword(token) || token === SyntaxKind.OpenBraceToken; case ParsingContext.JsxChildren: return true; case ParsingContext.JSDocFunctionParameters: @@ -1254,7 +1254,7 @@ namespace ts { function nextTokenIsIdentifierOrKeyword() { nextToken(); - return isIdentifierOrKeyword(); + return tokenIsIdentifierOrKeyword(token); } function isHeritageClauseExtendsOrImplementsKeyword(): boolean { @@ -1824,7 +1824,7 @@ namespace ts { // the code would be implicitly: "name.identifierOrKeyword; identifierNameOrKeyword". // In the first case though, ASI will not take effect because there is not a // line terminator after the identifier or keyword. - if (scanner.hasPrecedingLineBreak() && isIdentifierOrKeyword()) { + if (scanner.hasPrecedingLineBreak() && tokenIsIdentifierOrKeyword(token)) { let matchesPattern = lookAhead(nextTokenIsIdentifierOrKeywordOnSameLine); if (matchesPattern) { @@ -2282,7 +2282,7 @@ namespace ts { } } - if (isIdentifierOrKeyword()) { + if (tokenIsIdentifierOrKeyword(token)) { return parsePropertyOrMethodSignature(); } } @@ -2360,6 +2360,7 @@ namespace ts { let node = tryParse(parseKeywordAndNoDot); return node || parseTypeReferenceOrTypePredicate(); case SyntaxKind.VoidKeyword: + case SyntaxKind.ThisKeyword: return parseTokenNode(); case SyntaxKind.TypeOfKeyword: return parseTypeQuery(); @@ -2382,6 +2383,7 @@ namespace ts { case SyntaxKind.BooleanKeyword: case SyntaxKind.SymbolKeyword: case SyntaxKind.VoidKeyword: + case SyntaxKind.ThisKeyword: case SyntaxKind.TypeOfKeyword: case SyntaxKind.OpenBraceToken: case SyntaxKind.OpenBracketToken: @@ -3938,7 +3940,8 @@ namespace ts { forOfStatement.expression = allowInAnd(parseAssignmentExpressionOrHigher); parseExpected(SyntaxKind.CloseParenToken); forOrForInOrForOfStatement = forOfStatement; - } else { + } + else { let forStatement = createNode(SyntaxKind.ForStatement, pos); forStatement.initializer = initializer; parseExpected(SyntaxKind.SemicolonToken); @@ -4101,13 +4104,9 @@ namespace ts { } } - function isIdentifierOrKeyword() { - return token >= SyntaxKind.Identifier; - } - function nextTokenIsIdentifierOrKeywordOnSameLine() { nextToken(); - return isIdentifierOrKeyword() && !scanner.hasPrecedingLineBreak(); + return tokenIsIdentifierOrKeyword(token) && !scanner.hasPrecedingLineBreak(); } function nextTokenIsFunctionKeywordOnSameLine() { @@ -4117,7 +4116,7 @@ namespace ts { function nextTokenIsIdentifierOrKeywordOrNumberOnSameLine() { nextToken(); - return (isIdentifierOrKeyword() || token === SyntaxKind.NumericLiteral) && !scanner.hasPrecedingLineBreak(); + return (tokenIsIdentifierOrKeyword(token) || token === SyntaxKind.NumericLiteral) && !scanner.hasPrecedingLineBreak(); } function isDeclaration(): boolean { @@ -4170,7 +4169,7 @@ namespace ts { case SyntaxKind.ImportKeyword: nextToken(); return token === SyntaxKind.StringLiteral || token === SyntaxKind.AsteriskToken || - token === SyntaxKind.OpenBraceToken || isIdentifierOrKeyword(); + token === SyntaxKind.OpenBraceToken || tokenIsIdentifierOrKeyword(token); case SyntaxKind.ExportKeyword: nextToken(); if (token === SyntaxKind.EqualsToken || token === SyntaxKind.AsteriskToken || @@ -4777,7 +4776,7 @@ namespace ts { // It is very important that we check this *after* checking indexers because // the [ token can start an index signature or a computed property name - if (isIdentifierOrKeyword() || + if (tokenIsIdentifierOrKeyword(token) || token === SyntaxKind.StringLiteral || token === SyntaxKind.NumericLiteral || token === SyntaxKind.AsteriskToken || @@ -4813,7 +4812,7 @@ namespace ts { node.decorators = decorators; setModifiers(node, modifiers); parseExpected(SyntaxKind.ClassKeyword); - node.name = parseOptionalIdentifier(); + node.name = parseNameOfClassDeclarationOrExpression(); node.typeParameters = parseTypeParameters(); node.heritageClauses = parseHeritageClauses(/*isClassHeritageClause*/ true); @@ -4830,6 +4829,21 @@ namespace ts { return finishNode(node); } + function parseNameOfClassDeclarationOrExpression(): Identifier { + // implements is a future reserved word so + // 'class implements' might mean either + // - class expression with omitted name, 'implements' starts heritage clause + // - class with name 'implements' + // 'isImplementsClause' helps to disambiguate between these two cases + return isIdentifier() && !isImplementsClause() + ? parseIdentifier() + : undefined; + } + + function isImplementsClause() { + return token === SyntaxKind.ImplementsKeyword && lookAhead(nextTokenIsIdentifierOrKeyword); + } + function parseHeritageClauses(isClassHeritageClause: boolean): NodeArray { // ClassTail[Yield,Await] : (Modified) See 14.5 // ClassHeritage[?Yield,?Await]opt { ClassBody[?Yield,?Await]opt } @@ -5304,7 +5318,7 @@ namespace ts { Unknown } - export module JSDocParser { + export namespace JSDocParser { export function isJSDocType() { switch (token) { case SyntaxKind.AsteriskToken: @@ -5320,7 +5334,7 @@ namespace ts { return true; } - return isIdentifierOrKeyword(); + return tokenIsIdentifierOrKeyword(token); } export function parseJSDocTypeExpressionForTests(content: string, start: number, length: number) { @@ -5949,7 +5963,7 @@ namespace ts { } } - module IncrementalParser { + namespace IncrementalParser { export function updateSourceFile(sourceFile: SourceFile, newText: string, textChangeRange: TextChangeRange, aggressiveChecks: boolean): SourceFile { aggressiveChecks = aggressiveChecks || Debug.shouldAssert(AssertionLevel.Aggressive); diff --git a/src/compiler/program.ts b/src/compiler/program.ts index d86a80a5387..c6d3a245a8d 100644 --- a/src/compiler/program.ts +++ b/src/compiler/program.ts @@ -9,10 +9,10 @@ namespace ts { /* @internal */ export let ioWriteTime = 0; /** The version of the TypeScript compiler release */ - + let emptyArray: any[] = []; - - export const version = "1.6.0"; + + export const version = "1.7.0"; export function findConfigFile(searchPath: string): string { let fileName = "tsconfig.json"; @@ -29,44 +29,46 @@ namespace ts { } return undefined; } - + export function resolveTripleslashReference(moduleName: string, containingFile: string): string { let basePath = getDirectoryPath(containingFile); let referencedFileName = isRootedDiskPath(moduleName) ? moduleName : combinePaths(basePath, moduleName); return normalizePath(referencedFileName); } - - export function resolveModuleName(moduleName: string, containingFile: string, compilerOptions: CompilerOptions, host: ModuleResolutionHost): ResolvedModule { - let moduleResolution = compilerOptions.moduleResolution !== undefined + + export function resolveModuleName(moduleName: string, containingFile: string, compilerOptions: CompilerOptions, host: ModuleResolutionHost): ResolvedModuleWithFailedLookupLocations { + let moduleResolution = compilerOptions.moduleResolution !== undefined ? compilerOptions.moduleResolution : compilerOptions.module === ModuleKind.CommonJS ? ModuleResolutionKind.NodeJs : ModuleResolutionKind.Classic; - + switch (moduleResolution) { case ModuleResolutionKind.NodeJs: return nodeModuleNameResolver(moduleName, containingFile, host); case ModuleResolutionKind.Classic: return classicNameResolver(moduleName, containingFile, compilerOptions, host); } } - - export function nodeModuleNameResolver(moduleName: string, containingFile: string, host: ModuleResolutionHost): ResolvedModule { - let containingDirectory = getDirectoryPath(containingFile); + + export function nodeModuleNameResolver(moduleName: string, containingFile: string, host: ModuleResolutionHost): ResolvedModuleWithFailedLookupLocations { + let containingDirectory = getDirectoryPath(containingFile); if (getRootLength(moduleName) !== 0 || nameStartsWithDotSlashOrDotDotSlash(moduleName)) { let failedLookupLocations: string[] = []; let candidate = normalizePath(combinePaths(containingDirectory, moduleName)); let resolvedFileName = loadNodeModuleFromFile(candidate, /* loadOnlyDts */ false, failedLookupLocations, host); - + if (resolvedFileName) { - return { resolvedFileName, failedLookupLocations }; + return { resolvedModule: { resolvedFileName }, failedLookupLocations }; } - + resolvedFileName = loadNodeModuleFromDirectory(candidate, /* loadOnlyDts */ false, failedLookupLocations, host); - return { resolvedFileName, failedLookupLocations }; + return resolvedFileName + ? { resolvedModule: { resolvedFileName }, failedLookupLocations } + : { resolvedModule: undefined, failedLookupLocations }; } else { return loadModuleFromNodeModules(moduleName, containingDirectory, host); } } - + function loadNodeModuleFromFile(candidate: string, loadOnlyDts: boolean, failedLookupLocation: string[], host: ModuleResolutionHost): string { if (loadOnlyDts) { return tryLoad(".d.ts"); @@ -74,7 +76,7 @@ namespace ts { else { return forEach(supportedExtensions, tryLoad); } - + function tryLoad(ext: string): string { let fileName = fileExtensionIs(candidate, ext) ? candidate : candidate + ext; if (host.fileExists(fileName)) { @@ -86,13 +88,13 @@ namespace ts { } } } - + function loadNodeModuleFromDirectory(candidate: string, loadOnlyDts: boolean, failedLookupLocation: string[], host: ModuleResolutionHost): string { let packageJsonPath = combinePaths(candidate, "package.json"); if (host.fileExists(packageJsonPath)) { - + let jsonContent: { typings?: string }; - + try { let jsonText = host.readFile(packageJsonPath); jsonContent = jsonText ? <{ typings?: string }>JSON.parse(jsonText) : { typings: undefined }; @@ -101,7 +103,7 @@ namespace ts { // gracefully handle if readFile fails or returns not JSON jsonContent = { typings: undefined }; } - + if (jsonContent.typings) { let result = loadNodeModuleFromFile(normalizePath(combinePaths(candidate, jsonContent.typings)), loadOnlyDts, failedLookupLocation, host); if (result) { @@ -113,12 +115,12 @@ namespace ts { // record package json as one of failed lookup locations - in the future if this file will appear it will invalidate resolution results failedLookupLocation.push(packageJsonPath); } - + return loadNodeModuleFromFile(combinePaths(candidate, "index"), loadOnlyDts, failedLookupLocation, host); } - - function loadModuleFromNodeModules(moduleName: string, directory: string, host: ModuleResolutionHost): ResolvedModule { - let failedLookupLocations: string[] = []; + + function loadModuleFromNodeModules(moduleName: string, directory: string, host: ModuleResolutionHost): ResolvedModuleWithFailedLookupLocations { + let failedLookupLocations: string[] = []; directory = normalizeSlashes(directory); while (true) { let baseName = getBaseFileName(directory); @@ -127,66 +129,38 @@ namespace ts { let candidate = normalizePath(combinePaths(nodeModulesFolder, moduleName)); let result = loadNodeModuleFromFile(candidate, /* loadOnlyDts */ true, failedLookupLocations, host); if (result) { - return { resolvedFileName: result, failedLookupLocations }; + return { resolvedModule: { resolvedFileName: result, isExternalLibraryImport: true }, failedLookupLocations }; } - + result = loadNodeModuleFromDirectory(candidate, /* loadOnlyDts */ true, failedLookupLocations, host); if (result) { - return { resolvedFileName: result, failedLookupLocations }; + return { resolvedModule: { resolvedFileName: result, isExternalLibraryImport: true }, failedLookupLocations }; } } - + let parentPath = getDirectoryPath(directory); if (parentPath === directory) { break; } - + directory = parentPath; } - - return { resolvedFileName: undefined, failedLookupLocations }; + + return { resolvedModule: undefined, failedLookupLocations }; } - - export function baseUrlModuleNameResolver(moduleName: string, containingFile: string, baseUrl: string, host: ModuleResolutionHost): ResolvedModule { - Debug.assert(baseUrl !== undefined); - - let normalizedModuleName = normalizeSlashes(moduleName); - let basePart = useBaseUrl(moduleName) ? baseUrl : getDirectoryPath(containingFile); - let candidate = normalizePath(combinePaths(basePart, moduleName)); - - let failedLookupLocations: string[] = []; - - return forEach(supportedExtensions, ext => tryLoadFile(candidate + ext)) || { resolvedFileName: undefined, failedLookupLocations }; - - function tryLoadFile(location: string): ResolvedModule { - if (host.fileExists(location)) { - return { resolvedFileName: location, failedLookupLocations }; - } - else { - failedLookupLocations.push(location); - return undefined; - } - } - } - + function nameStartsWithDotSlashOrDotDotSlash(name: string) { let i = name.lastIndexOf("./", 1); return i === 0 || (i === 1 && name.charCodeAt(0) === CharacterCodes.dot); } - - function useBaseUrl(moduleName: string): boolean { - // path is not rooted - // module name does not start with './' or '../' - return getRootLength(moduleName) === 0 && !nameStartsWithDotSlashOrDotDotSlash(moduleName); - } - export function classicNameResolver(moduleName: string, containingFile: string, compilerOptions: CompilerOptions, host: ModuleResolutionHost): ResolvedModule { - + export function classicNameResolver(moduleName: string, containingFile: string, compilerOptions: CompilerOptions, host: ModuleResolutionHost): ResolvedModuleWithFailedLookupLocations { + // module names that contain '!' are used to reference resources and are not resolved to actual files on disk - if (moduleName.indexOf('!') != -1) { - return { resolvedFileName: undefined, failedLookupLocations: [] }; + if (moduleName.indexOf("!") != -1) { + return { resolvedModule: undefined, failedLookupLocations: [] }; } - + let searchPath = getDirectoryPath(containingFile); let searchName: string; @@ -201,7 +175,7 @@ namespace ts { // 'logical not' handles both undefined and None cases return undefined; } - + let candidate = searchName + extension; if (host.fileExists(candidate)) { return candidate; @@ -222,7 +196,9 @@ namespace ts { searchPath = parentPath; } - return { resolvedFileName: referencedSourceFile, failedLookupLocations }; + return referencedSourceFile + ? { resolvedModule: { resolvedFileName: referencedSourceFile }, failedLookupLocations } + : { resolvedModule: undefined, failedLookupLocations }; } /* @internal */ @@ -301,8 +277,7 @@ namespace ts { } const newLine = getNewLineCharacter(options); - - + return { getSourceFile, getDefaultLibFileName: options => combinePaths(getDirectoryPath(normalizePath(sys.getExecutingFilePath())), getDefaultLibFileName(options)), @@ -371,26 +346,26 @@ namespace ts { let start = new Date().getTime(); host = host || createCompilerHost(options); - - const resolveModuleNamesWorker = - host.resolveModuleNames || - ((moduleNames, containingFile) => map(moduleNames, moduleName => resolveModuleName(moduleName, containingFile, options, host).resolvedFileName)); + + const resolveModuleNamesWorker = host.resolveModuleNames + ? ((moduleNames: string[], containingFile: string) => host.resolveModuleNames(moduleNames, containingFile)) + : ((moduleNames: string[], containingFile: string) => map(moduleNames, moduleName => resolveModuleName(moduleName, containingFile, options, host).resolvedModule)); let filesByName = createFileMap(fileName => host.getCanonicalFileName(fileName)); - + if (oldProgram) { // check properties that can affect structure of the program or module resolution strategy // if any of these properties has changed - structure cannot be reused let oldOptions = oldProgram.getCompilerOptions(); - if ((oldOptions.module !== options.module) || - (oldOptions.noResolve !== options.noResolve) || - (oldOptions.target !== options.target) || + if ((oldOptions.module !== options.module) || + (oldOptions.noResolve !== options.noResolve) || + (oldOptions.target !== options.target) || (oldOptions.noLib !== options.noLib) || (oldOptions.jsx !== options.jsx)) { oldProgram = undefined; } } - + if (!tryReuseStructureFromOldProgram()) { forEach(rootNames, name => processRootFile(name, false)); // Do not process the default library if: @@ -451,7 +426,7 @@ namespace ts { if (!oldProgram) { return false; } - + Debug.assert(!oldProgram.structureIsReused); // there is an old program, check if we can reuse its structure @@ -459,7 +434,7 @@ namespace ts { if (!arrayIsEqualTo(oldRootNames, rootNames)) { return false; } - + // check if program source files has changed in the way that can affect structure of the program let newSourceFiles: SourceFile[] = []; let modifiedSourceFiles: SourceFile[] = []; @@ -469,7 +444,7 @@ namespace ts { return false; } - if (oldSourceFile !== newSourceFile) { + if (oldSourceFile !== newSourceFile) { if (oldSourceFile.hasNoDefaultLib !== newSourceFile.hasNoDefaultLib) { // value of no-default-lib has changed // this will affect if default library is injected into the list of files @@ -481,23 +456,30 @@ namespace ts { // tripleslash references has changed return false; } - + // check imports collectExternalModuleReferences(newSourceFile); if (!arrayIsEqualTo(oldSourceFile.imports, newSourceFile.imports, moduleNameIsEqualTo)) { // imports has changed return false; } - + if (resolveModuleNamesWorker) { let moduleNames = map(newSourceFile.imports, name => name.text); let resolutions = resolveModuleNamesWorker(moduleNames, newSourceFile.fileName); // ensure that module resolution results are still correct for (let i = 0; i < moduleNames.length; ++i) { - let oldResolution = getResolvedModuleFileName(oldSourceFile, moduleNames[i]); - if (oldResolution !== resolutions[i]) { + let newResolution = resolutions[i]; + let oldResolution = getResolvedModule(oldSourceFile, moduleNames[i]); + let resolutionChanged = oldResolution + ? !newResolution || + oldResolution.resolvedFileName !== newResolution.resolvedFileName || + !!oldResolution.isExternalLibraryImport !== !!newResolution.isExternalLibraryImport + : newResolution; + + if (resolutionChanged) { return false; - } + } } } // pass the cache of module resolutions from the old source file @@ -508,24 +490,24 @@ namespace ts { // file has no changes - use it as is newSourceFile = oldSourceFile; } - + // if file has passed all checks it should be safe to reuse it newSourceFiles.push(newSourceFile); } - + // update fileName -> file mapping for (let file of newSourceFiles) { filesByName.set(file.fileName, file); } - + files = newSourceFiles; fileProcessingDiagnostics = oldProgram.getFileProcessingDiagnostics(); - + for (let modifiedFile of modifiedSourceFiles) { fileProcessingDiagnostics.reattachFileDiagnostics(modifiedFile); } oldProgram.structureIsReused = true; - + return true; } @@ -571,7 +553,7 @@ namespace ts { // This is because in the -out scenario all files need to be emitted, and therefore all // files need to be type checked. And the way to specify that all files need to be type // checked is to not pass the file to getEmitResolver. - let emitResolver = getDiagnosticsProducingTypeChecker().getEmitResolver((options.outFile || options.out)? undefined : sourceFile); + let emitResolver = getDiagnosticsProducingTypeChecker().getEmitResolver((options.outFile || options.out) ? undefined : sourceFile); let start = new Date().getTime(); @@ -585,7 +567,9 @@ namespace ts { } function getSourceFile(fileName: string) { - return filesByName.get(fileName); + // first try to use file name as is to find file + // then try to convert relative file name to absolute and use it to retrieve source file + return filesByName.get(fileName) || filesByName.get(getNormalizedAbsolutePath(fileName, host.getCurrentDirectory())); } function getDiagnosticsHelper( @@ -673,7 +657,7 @@ namespace ts { function getOptionsDiagnostics(): Diagnostic[] { let allDiagnostics: Diagnostic[] = []; - addRange(allDiagnostics, fileProcessingDiagnostics.getGlobalDiagnostics()) + addRange(allDiagnostics, fileProcessingDiagnostics.getGlobalDiagnostics()); addRange(allDiagnostics, programDiagnostics.getGlobalDiagnostics()); return sortAndDeduplicateDiagnostics(allDiagnostics); } @@ -690,23 +674,29 @@ namespace ts { function processRootFile(fileName: string, isDefaultLib: boolean) { processSourceFile(normalizePath(fileName), isDefaultLib); - } - + } + function fileReferenceIsEqualTo(a: FileReference, b: FileReference): boolean { return a.fileName === b.fileName; } - + function moduleNameIsEqualTo(a: LiteralExpression, b: LiteralExpression): boolean { return a.text === b.text; } - + function collectExternalModuleReferences(file: SourceFile): void { if (file.imports) { return; } - + let imports: LiteralExpression[]; for (let node of file.statements) { + collect(node, /* allowRelativeModuleNames */ true); + } + + file.imports = imports || emptyArray; + + function collect(node: Node, allowRelativeModuleNames: boolean): void { switch (node.kind) { case SyntaxKind.ImportDeclaration: case SyntaxKind.ImportEqualsDeclaration: @@ -719,7 +709,9 @@ namespace ts { break; } - (imports || (imports = [])).push(moduleNameExpr); + if (allowRelativeModuleNames || !isExternalModuleNameRelative((moduleNameExpr).text)) { + (imports || (imports = [])).push(moduleNameExpr); + } break; case SyntaxKind.ModuleDeclaration: if ((node).name.kind === SyntaxKind.StringLiteral && (node.flags & NodeFlags.Ambient || isDeclarationFile(file))) { @@ -729,23 +721,15 @@ namespace ts { // The StringLiteral must specify a top - level external module name. // Relative external module names are not permitted forEachChild((node).body, node => { - if (isExternalModuleImportEqualsDeclaration(node) && - getExternalModuleImportEqualsDeclarationExpression(node).kind === SyntaxKind.StringLiteral) { - let moduleName = getExternalModuleImportEqualsDeclarationExpression(node); - // 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. - if (moduleName) { - (imports || (imports = [])).push(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. + collect(node, /* allowRelativeModuleNames */ false); }); } break; } } - - file.imports = imports || emptyArray; } function processSourceFile(fileName: string, isDefaultLib: boolean, refFile?: SourceFile, refPos?: number, refEnd?: number) { @@ -792,60 +776,62 @@ namespace ts { // Get source file from normalized fileName function findSourceFile(fileName: string, isDefaultLib: boolean, refFile?: SourceFile, refPos?: number, refEnd?: number): SourceFile { - let canonicalName = host.getCanonicalFileName(normalizeSlashes(fileName)); - if (filesByName.contains(canonicalName)) { + if (filesByName.contains(fileName)) { // We've already looked for this file, use cached result - return getSourceFileFromCache(fileName, canonicalName, /*useAbsolutePath*/ false); + return getSourceFileFromCache(fileName, /*useAbsolutePath*/ false); } - else { - let normalizedAbsolutePath = getNormalizedAbsolutePath(fileName, host.getCurrentDirectory()); - let canonicalAbsolutePath = host.getCanonicalFileName(normalizedAbsolutePath); - if (filesByName.contains(canonicalAbsolutePath)) { - return getSourceFileFromCache(normalizedAbsolutePath, canonicalAbsolutePath, /*useAbsolutePath*/ true); - } - - // We haven't looked for this file, do so now and cache result - let file = host.getSourceFile(fileName, options.target, hostErrorMessage => { - if (refFile !== undefined && refPos !== undefined && refEnd !== undefined) { - fileProcessingDiagnostics.add(createFileDiagnostic(refFile, refPos, refEnd - refPos, - Diagnostics.Cannot_read_file_0_Colon_1, fileName, hostErrorMessage)); - } - else { - fileProcessingDiagnostics.add(createCompilerDiagnostic(Diagnostics.Cannot_read_file_0_Colon_1, fileName, hostErrorMessage)); - } - }); - filesByName.set(canonicalName, file); - if (file) { - skipDefaultLib = skipDefaultLib || file.hasNoDefaultLib; - - // Set the source file for normalized absolute path - filesByName.set(canonicalAbsolutePath, file); - - let basePath = getDirectoryPath(fileName); - if (!options.noResolve) { - processReferencedFiles(file, basePath); - } - - // always process imported modules to record module name resolutions - processImportedModules(file, basePath); - - if (isDefaultLib) { - file.isDefaultLib = true; - files.unshift(file); - } - else { - files.push(file); - } - } + let normalizedAbsolutePath = getNormalizedAbsolutePath(fileName, host.getCurrentDirectory()); + if (filesByName.contains(normalizedAbsolutePath)) { + const file = getSourceFileFromCache(normalizedAbsolutePath, /*useAbsolutePath*/ true); + // we don't have resolution for this relative file name but the match was found by absolute file name + // store resolution for relative name as well + filesByName.set(fileName, file); return file; } - function getSourceFileFromCache(fileName: string, canonicalName: string, useAbsolutePath: boolean): SourceFile { - let file = filesByName.get(canonicalName); + // We haven't looked for this file, do so now and cache result + let file = host.getSourceFile(fileName, options.target, hostErrorMessage => { + if (refFile !== undefined && refPos !== undefined && refEnd !== undefined) { + fileProcessingDiagnostics.add(createFileDiagnostic(refFile, refPos, refEnd - refPos, + Diagnostics.Cannot_read_file_0_Colon_1, fileName, hostErrorMessage)); + } + else { + fileProcessingDiagnostics.add(createCompilerDiagnostic(Diagnostics.Cannot_read_file_0_Colon_1, fileName, hostErrorMessage)); + } + }); + + filesByName.set(fileName, file); + if (file) { + skipDefaultLib = skipDefaultLib || file.hasNoDefaultLib; + + // Set the source file for normalized absolute path + filesByName.set(normalizedAbsolutePath, file); + + let basePath = getDirectoryPath(fileName); + if (!options.noResolve) { + processReferencedFiles(file, basePath); + } + + // always process imported modules to record module name resolutions + processImportedModules(file, basePath); + + if (isDefaultLib) { + file.isDefaultLib = true; + files.unshift(file); + } + else { + files.push(file); + } + } + + return file; + + function getSourceFileFromCache(fileName: string, useAbsolutePath: boolean): SourceFile { + let file = filesByName.get(fileName); if (file && host.useCaseSensitiveFileNames()) { let sourceFileName = useAbsolutePath ? getNormalizedAbsolutePath(file.fileName, host.getCurrentDirectory()) : file.fileName; - if (canonicalName !== sourceFileName) { + if (normalizeSlashes(fileName) !== normalizeSlashes(sourceFileName)) { if (refFile !== undefined && refPos !== undefined && refEnd !== undefined) { fileProcessingDiagnostics.add(createFileDiagnostic(refFile, refPos, refEnd - refPos, Diagnostics.File_name_0_differs_from_already_included_file_name_1_only_in_casing, fileName, sourceFileName)); @@ -865,7 +851,7 @@ namespace ts { processSourceFile(referencedFileName, /* isDefaultLib */ false, file, ref.pos, ref.end); }); } - + function processImportedModules(file: SourceFile, basePath: string) { collectExternalModuleReferences(file); if (file.imports.length) { @@ -874,9 +860,23 @@ namespace ts { let resolutions = resolveModuleNamesWorker(moduleNames, file.fileName); for (let i = 0; i < file.imports.length; ++i) { let resolution = resolutions[i]; - setResolvedModuleName(file, moduleNames[i], resolution); + setResolvedModule(file, moduleNames[i], resolution); if (resolution && !options.noResolve) { - findModuleSourceFile(resolution, file.imports[i]); + const importedFile = findModuleSourceFile(resolution.resolvedFileName, file.imports[i]); + if (importedFile && resolution.isExternalLibraryImport) { + if (!isExternalModule(importedFile)) { + let start = getTokenPosOfNode(file.imports[i], file); + fileProcessingDiagnostics.add(createFileDiagnostic(file, start, file.imports[i].end - start, Diagnostics.Exported_external_package_typings_file_0_is_not_a_module_Please_contact_the_package_author_to_update_the_package_definition, importedFile.fileName)); + } + else if (!fileExtensionIs(importedFile.fileName, ".d.ts")) { + let start = getTokenPosOfNode(file.imports[i], file); + fileProcessingDiagnostics.add(createFileDiagnostic(file, start, file.imports[i].end - start, Diagnostics.Exported_external_package_typings_can_only_be_in_d_ts_files_Please_contact_the_package_author_to_update_the_package_definition)); + } + else if (importedFile.referencedFiles.length) { + let firstRef = importedFile.referencedFiles[0]; + fileProcessingDiagnostics.add(createFileDiagnostic(importedFile, firstRef.pos, firstRef.end - firstRef.pos, Diagnostics.Exported_external_package_typings_file_cannot_contain_tripleslash_references_Please_contact_the_package_author_to_update_the_package_definition)); + } + } } } } @@ -1025,9 +1025,9 @@ namespace ts { programDiagnostics.add(createFileDiagnostic(firstExternalModuleSourceFile, span.start, span.length, Diagnostics.Cannot_compile_modules_unless_the_module_flag_is_provided)); } - // Cannot specify module gen target when in es6 or above - if (options.module && languageVersion >= ScriptTarget.ES6) { - programDiagnostics.add(createCompilerDiagnostic(Diagnostics.Cannot_compile_modules_into_commonjs_amd_system_or_umd_when_targeting_ES6_or_higher)); + // Cannot specify module gen target of es6 when below es6 + if (options.module === ModuleKind.ES6 && languageVersion < ScriptTarget.ES6) { + programDiagnostics.add(createCompilerDiagnostic(Diagnostics.Cannot_compile_modules_into_es6_when_targeting_ES5_or_lower)); } // there has to be common source directory if user specified --outdir || --sourceRoot diff --git a/src/compiler/scanner.ts b/src/compiler/scanner.ts index 199e7e9b638..ee4dea04f09 100644 --- a/src/compiler/scanner.ts +++ b/src/compiler/scanner.ts @@ -6,6 +6,11 @@ namespace ts { (message: DiagnosticMessage, length: number): void; } + /* @internal */ + export function tokenIsIdentifierOrKeyword(token: SyntaxKind): boolean { + return token >= SyntaxKind.Identifier; + } + export interface Scanner { getStartPos(): number; getToken(): SyntaxKind; @@ -219,7 +224,7 @@ namespace ts { } // Perform binary search in one of the Unicode range maps - let lo: number = 0; + let lo = 0; let hi: number = map.length; let mid: number; @@ -652,7 +657,7 @@ namespace ts { export function getTrailingCommentRanges(text: string, pos: number): CommentRange[] { return getCommentRanges(text, pos, /*trailing*/ true); } - + /** Optionally, get the shebang */ export function getShebang(text: string): string { return shebangTriviaRegex.test(text) @@ -734,18 +739,6 @@ namespace ts { } } - function isIdentifierStart(ch: number): boolean { - return ch >= CharacterCodes.A && ch <= CharacterCodes.Z || ch >= CharacterCodes.a && ch <= CharacterCodes.z || - ch === CharacterCodes.$ || ch === CharacterCodes._ || - ch > CharacterCodes.maxAsciiCharacter && isUnicodeIdentifierStart(ch, languageVersion); - } - - function isIdentifierPart(ch: number): boolean { - return ch >= CharacterCodes.A && ch <= CharacterCodes.Z || ch >= CharacterCodes.a && ch <= CharacterCodes.z || - ch >= CharacterCodes._0 && ch <= CharacterCodes._9 || ch === CharacterCodes.$ || ch === CharacterCodes._ || - ch > CharacterCodes.maxAsciiCharacter && isUnicodeIdentifierPart(ch, languageVersion); - } - function scanNumber(): number { let start = pos; while (isDigit(text.charCodeAt(pos))) pos++; @@ -1059,12 +1052,12 @@ namespace ts { let start = pos; while (pos < end) { let ch = text.charCodeAt(pos); - if (isIdentifierPart(ch)) { + if (isIdentifierPart(ch, languageVersion)) { pos++; } else if (ch === CharacterCodes.backslash) { ch = peekUnicodeEscape(); - if (!(ch >= 0 && isIdentifierPart(ch))) { + if (!(ch >= 0 && isIdentifierPart(ch, languageVersion))) { break; } result += text.substring(start, pos); @@ -1368,7 +1361,9 @@ namespace ts { if (text.charCodeAt(pos + 1) === CharacterCodes.equals) { return pos += 2, token = SyntaxKind.LessThanEqualsToken; } - if (text.charCodeAt(pos + 1) === CharacterCodes.slash && languageVariant === LanguageVariant.JSX) { + if (languageVariant === LanguageVariant.JSX && + text.charCodeAt(pos + 1) === CharacterCodes.slash && + text.charCodeAt(pos + 2) !== CharacterCodes.asterisk) { return pos += 2, token = SyntaxKind.LessThanSlashToken; } return pos++, token = SyntaxKind.LessThanToken; @@ -1434,7 +1429,7 @@ namespace ts { return pos++, token = SyntaxKind.AtToken; case CharacterCodes.backslash: let cookedChar = peekUnicodeEscape(); - if (cookedChar >= 0 && isIdentifierStart(cookedChar)) { + if (cookedChar >= 0 && isIdentifierStart(cookedChar, languageVersion)) { pos += 6; tokenValue = String.fromCharCode(cookedChar) + scanIdentifierParts(); return token = getIdentifierToken(); @@ -1442,9 +1437,9 @@ namespace ts { error(Diagnostics.Invalid_character); return pos++, token = SyntaxKind.Unknown; default: - if (isIdentifierStart(ch)) { + if (isIdentifierStart(ch, languageVersion)) { pos++; - while (pos < end && isIdentifierPart(ch = text.charCodeAt(pos))) pos++; + while (pos < end && isIdentifierPart(ch = text.charCodeAt(pos), languageVersion)) pos++; tokenValue = text.substring(tokenPos, pos); if (ch === CharacterCodes.backslash) { tokenValue += scanIdentifierParts(); @@ -1531,7 +1526,7 @@ namespace ts { p++; } - while (p < end && isIdentifierPart(text.charCodeAt(p))) { + while (p < end && isIdentifierPart(text.charCodeAt(p), languageVersion)) { p++; } pos = p; @@ -1590,11 +1585,11 @@ namespace ts { // Scans a JSX identifier; these differ from normal identifiers in that // they allow dashes function scanJsxIdentifier(): SyntaxKind { - if (token === SyntaxKind.Identifier) { + if (tokenIsIdentifierOrKeyword(token)) { let firstCharPosition = pos; while (pos < end) { let ch = text.charCodeAt(pos); - if (ch === CharacterCodes.minus || ((firstCharPosition === pos) ? isIdentifierStart(ch) : isIdentifierPart(ch))) { + if (ch === CharacterCodes.minus || ((firstCharPosition === pos) ? isIdentifierStart(ch, languageVersion) : isIdentifierPart(ch, languageVersion))) { pos++; } else { diff --git a/src/compiler/sys.ts b/src/compiler/sys.ts index 5b46324601b..76f12666878 100644 --- a/src/compiler/sys.ts +++ b/src/compiler/sys.ts @@ -8,7 +8,7 @@ namespace ts { write(s: string): void; readFile(path: string, encoding?: string): string; writeFile(path: string, data: string, writeByteOrderMark?: boolean): void; - watchFile?(path: string, callback: (path: string) => void): FileWatcher; + watchFile?(path: string, callback: (path: string, removed: boolean) => void): FileWatcher; resolvePath(path: string): string; fileExists(path: string): boolean; directoryExists(path: string): boolean; @@ -29,8 +29,8 @@ namespace ts { declare var process: any; declare var global: any; declare var __filename: string; - declare var Buffer: { - new (str: string, encoding?: string): any; + declare var Buffer: { + new (str: string, encoding?: string): any; }; declare class Enumerator { @@ -116,7 +116,7 @@ namespace ts { return path.toLowerCase(); } - function getNames(collection: any): string[]{ + function getNames(collection: any): string[] { let result: string[] = []; for (let e = new Enumerator(collection); !e.atEnd(); e.moveNext()) { result.push(e.item().Name); @@ -270,9 +270,9 @@ namespace ts { args: process.argv.slice(2), newLine: _os.EOL, useCaseSensitiveFileNames: useCaseSensitiveFileNames, - write(s: string): void { - const buffer = new Buffer(s, "utf8"); - let offset: number = 0; + write(s: string): void { + const buffer = new Buffer(s, "utf8"); + let offset = 0; let toWrite: number = buffer.length; let written = 0; // 1 is a standard descriptor for stdout @@ -280,7 +280,7 @@ namespace ts { offset += written; toWrite -= written; } - }, + }, readFile, writeFile, watchFile: (fileName, callback) => { @@ -292,11 +292,16 @@ namespace ts { }; function fileChanged(curr: any, prev: any) { + // mtime.getTime() equals 0 if file was removed + if (curr.mtime.getTime() === 0) { + callback(fileName, /* removed */ true); + return; + } if (+curr.mtime <= +prev.mtime) { return; } - callback(fileName); + callback(fileName, /* removed */ false); } }, resolvePath: function (path: string): string { diff --git a/src/compiler/tsc.ts b/src/compiler/tsc.ts index 96759b68250..d0f888cfa02 100644 --- a/src/compiler/tsc.ts +++ b/src/compiler/tsc.ts @@ -86,7 +86,6 @@ namespace ts { if (diagnostic.file) { let loc = getLineAndCharacterOfPosition(diagnostic.file, diagnostic.start); - output += `${ diagnostic.file.fileName }(${ loc.line + 1 },${ loc.character + 1 }): `; } @@ -102,6 +101,19 @@ namespace ts { } } + function reportWatchDiagnostic(diagnostic: Diagnostic) { + let output = new Date().toLocaleTimeString() + " - "; + + if (diagnostic.file) { + let loc = getLineAndCharacterOfPosition(diagnostic.file, diagnostic.start); + output += `${ diagnostic.file.fileName }(${ loc.line + 1 },${ loc.character + 1 }): `; + } + + output += `${ flattenDiagnosticMessageText(diagnostic.messageText, sys.newLine) }${ sys.newLine }`; + + sys.write(output); + } + function padLeft(s: string, length: number) { while (s.length < length) { s = " " + s; @@ -218,7 +230,7 @@ namespace ts { let result = readConfigFile(configFileName, sys.readFile); if (result.error) { - reportDiagnostic(result.error); + reportWatchDiagnostic(result.error); return sys.exit(ExitStatus.DiagnosticsPresent_OutputsSkipped); } @@ -247,7 +259,7 @@ namespace ts { } setCachedProgram(compileResult.program); - reportDiagnostic(createCompilerDiagnostic(Diagnostics.Compilation_complete_Watching_for_file_changes)); + reportWatchDiagnostic(createCompilerDiagnostic(Diagnostics.Compilation_complete_Watching_for_file_changes)); } function getSourceFile(fileName: string, languageVersion: ScriptTarget, onError?: (message: string) => void) { @@ -263,7 +275,7 @@ namespace ts { let sourceFile = hostGetSourceFile(fileName, languageVersion, onError); if (sourceFile && compilerOptions.watch) { // Attach a file watcher - sourceFile.fileWatcher = sys.watchFile(sourceFile.fileName, () => sourceFileChanged(sourceFile)); + sourceFile.fileWatcher = sys.watchFile(sourceFile.fileName, (fileName, removed) => sourceFileChanged(sourceFile, removed)); } return sourceFile; } @@ -285,9 +297,15 @@ namespace ts { } // If a source file changes, mark it as unwatched and start the recompilation timer - function sourceFileChanged(sourceFile: SourceFile) { + function sourceFileChanged(sourceFile: SourceFile, removed: boolean) { sourceFile.fileWatcher.close(); sourceFile.fileWatcher = undefined; + if (removed) { + var index = rootFileNames.indexOf(sourceFile.fileName); + if (index >= 0) { + rootFileNames.splice(index, 1); + } + } startTimer(); } @@ -309,7 +327,7 @@ namespace ts { function recompile() { timerHandle = undefined; - reportDiagnostic(createCompilerDiagnostic(Diagnostics.File_change_detected_Starting_incremental_compilation)); + reportWatchDiagnostic(createCompilerDiagnostic(Diagnostics.File_change_detected_Starting_incremental_compilation)); performCompilation(); } } @@ -361,7 +379,7 @@ namespace ts { function compileProgram(): ExitStatus { let diagnostics: Diagnostic[]; - + // First get and report any syntactic errors. diagnostics = program.getSyntacticDiagnostics(); @@ -497,7 +515,7 @@ namespace ts { function writeConfigFile(options: CompilerOptions, fileNames: string[]) { let currentDirectory = sys.getCurrentDirectory(); - let file = combinePaths(currentDirectory, 'tsconfig.json'); + let file = combinePaths(currentDirectory, "tsconfig.json"); if (sys.fileExists(file)) { reportDiagnostic(createCompilerDiagnostic(Diagnostics.A_tsconfig_json_file_is_already_defined_at_Colon_0, file)); } @@ -519,8 +537,8 @@ namespace ts { return; - function serializeCompilerOptions(options: CompilerOptions): Map { - let result: Map = {}; + function serializeCompilerOptions(options: CompilerOptions): Map { + let result: Map = {}; let optionsNameMap = getOptionNameMap().optionNameMap; for (let name in options) { diff --git a/src/compiler/types.ts b/src/compiler/types.ts index 265fa5c86fb..5979c4246b1 100644 --- a/src/compiler/types.ts +++ b/src/compiler/types.ts @@ -376,6 +376,7 @@ namespace ts { OctalLiteral = 0x00010000, // Octal numeric literal Namespace = 0x00020000, // Namespace declaration ExportContext = 0x00040000, // Export context (initialized by binding) + ContainsThis = 0x00080000, // Interface contains references to "this" Modifier = Export | Ambient | Public | Private | Protected | Static | Abstract | Default | Async, AccessibilityModifier = Public | Private | Protected, @@ -1244,7 +1245,7 @@ namespace ts { moduleName: string; referencedFiles: FileReference[]; languageVariant: LanguageVariant; - + // this map is used by transpiler to supply alternative names for dependencies (i.e. in case of bundling) /* @internal */ renamedDependencies?: Map; @@ -1284,7 +1285,7 @@ namespace ts { // Stores a mapping 'external module reference text' -> 'resolved file name' | undefined // It is used to resolve module names in the checker. // Content of this fiels should never be used directly - use getResolvedModuleFileName/setResolvedModuleFileName functions instead - /* @internal */ resolvedModules: Map; + /* @internal */ resolvedModules: Map; /* @internal */ imports: LiteralExpression[]; } @@ -1312,12 +1313,12 @@ namespace ts { } export interface Program extends ScriptReferenceHost { - + /** * Get a list of root file names that were passed to a 'createProgram' */ - getRootFileNames(): string[] - + getRootFileNames(): string[]; + /** * Get a list of files in the program */ @@ -1496,6 +1497,7 @@ namespace ts { // declaration emitter to help determine if it should patch up the final declaration file // with import statements it previously saw (but chose not to emit). trackSymbol(symbol: Symbol, enclosingDeclaration?: Node, meaning?: SymbolFlags): void; + reportInaccessibleThisError(): void; } export const enum TypeFormatFlags { @@ -1598,7 +1600,7 @@ namespace ts { getConstantValue(node: EnumMember | PropertyAccessExpression | ElementAccessExpression): number; getBlockScopedVariableId(node: Identifier): number; getReferencedValueDeclaration(reference: Identifier): Declaration; - getTypeReferenceSerializationKind(typeName: EntityName): TypeReferenceSerializationKind; + getTypeReferenceSerializationKind(typeName: EntityName): TypeReferenceSerializationKind; isOptionalParameter(node: ParameterDeclaration): boolean; } @@ -1715,6 +1717,7 @@ namespace ts { resolvedExports?: SymbolTable; // Resolved exports of module exportsChecked?: boolean; // True if exports of external module have been checked isNestedRedeclaration?: boolean; // True if symbol is block scoped redeclaration + bindingElement?: BindingElement; // Binding element associated with property symbol } /* @internal */ @@ -1796,6 +1799,7 @@ namespace ts { /* @internal */ ContainsAnyFunctionType = 0x00800000, // Type is or contains object literal type ESSymbol = 0x01000000, // Type of symbol primitive introduced in ES6 + ThisType = 0x02000000, // This type /* @internal */ Intrinsic = Any | String | Number | Boolean | ESSymbol | Void | Undefined | Null, @@ -1812,11 +1816,14 @@ namespace ts { PropagatingFlags = ContainsUndefinedOrNull | ContainsObjectLiteral | ContainsAnyFunctionType } + export type DestructuringPattern = BindingPattern | ObjectLiteralExpression | ArrayLiteralExpression; + // Properties common to all types export interface Type { - flags: TypeFlags; // Flags - /* @internal */ id: number; // Unique ID - symbol?: Symbol; // Symbol associated with type (if any) + flags: TypeFlags; // Flags + /* @internal */ id: number; // Unique ID + symbol?: Symbol; // Symbol associated with type (if any) + pattern?: DestructuringPattern; // Destructuring pattern represented by type (if any) } /* @internal */ @@ -1838,6 +1845,7 @@ namespace ts { typeParameters: TypeParameter[]; // Type parameters (undefined if non-generic) outerTypeParameters: TypeParameter[]; // Outer type parameters (undefined if none) localTypeParameters: TypeParameter[]; // Local type parameters (undefined if none) + thisType: TypeParameter; // The "this" type (undefined if none) /* @internal */ resolvedBaseConstructorType?: Type; // Resolved base constructor type of class /* @internal */ @@ -1852,10 +1860,17 @@ namespace ts { declaredNumberIndexType: Type; // Declared numeric index type } - // Type references (TypeFlags.Reference) + // Type references (TypeFlags.Reference). When a class or interface has type parameters or + // a "this" type, references to the class or interface are made using type references. The + // typeArguments property specififes the types to substitute for the type parameters of the + // class or interface and optionally includes an extra element that specifies the type to + // substitute for "this" in the resulting instantiation. When no extra argument is present, + // the type reference itself is substituted for "this". The typeArguments property is undefined + // if the class or interface has no type parameters and the reference isn't specifying an + // explicit "this" argument. export interface TypeReference extends ObjectType { target: GenericType; // Type reference target - typeArguments: Type[]; // Type reference type arguments + typeArguments: Type[]; // Type reference type arguments (undefined if none) } // Generic class and interface types @@ -1865,8 +1880,7 @@ namespace ts { } export interface TupleType extends ObjectType { - elementTypes: Type[]; // Element types - baseArrayType: TypeReference; // Array where T is best common type of element types + elementTypes: Type[]; // Element types } export interface UnionOrIntersectionType extends Type { @@ -2011,12 +2025,12 @@ namespace ts { Error, Message, } - + export const enum ModuleResolutionKind { Classic = 1, NodeJs = 2 } - + export interface CompilerOptions { allowNonTsExtensions?: boolean; charset?: string; @@ -2058,7 +2072,7 @@ namespace ts { experimentalDecorators?: boolean; experimentalAsyncFunctions?: boolean; emitDecoratorMetadata?: boolean; - moduleResolution?: ModuleResolutionKind + moduleResolution?: ModuleResolutionKind; /* @internal */ stripInternal?: boolean; // Skip checking lib.d.ts to help speed up tests. @@ -2073,6 +2087,7 @@ namespace ts { AMD = 2, UMD = 3, System = 4, + ES6 = 5, } export const enum JsxEmit { @@ -2113,17 +2128,30 @@ namespace ts { } /* @internal */ - export interface CommandLineOption { + export interface CommandLineOptionBase { name: string; type: string | Map; // "string", "number", "boolean", or an object literal mapping named values to actual values isFilePath?: boolean; // True if option value is a path or fileName shortName?: string; // A short mnemonic for convenience - for instance, 'h' can be used in place of 'help' description?: DiagnosticMessage; // The message describing what the command line switch does paramType?: DiagnosticMessage; // The name to be used for a non-boolean option's parameter - error?: DiagnosticMessage; // The error given when the argument does not fit a customized 'type' experimental?: boolean; } + /* @internal */ + export interface CommandLineOptionOfPrimitiveType extends CommandLineOptionBase { + type: string; // "string" | "number" | "boolean" + } + + /* @internal */ + export interface CommandLineOptionOfCustomType extends CommandLineOptionBase { + type: Map; // an object literal mapping named values to actual values + error: DiagnosticMessage; // The error given when the argument does not fit a customized 'type' + } + + /* @internal */ + export type CommandLineOption = CommandLineOptionOfCustomType | CommandLineOptionOfPrimitiveType; + /* @internal */ export const enum CharacterCodes { nullCharacter = 0, @@ -2259,21 +2287,30 @@ namespace ts { byteOrderMark = 0xFEFF, tab = 0x09, // \t verticalTab = 0x0B, // \v - } - + } + export interface ModuleResolutionHost { fileExists(fileName: string): boolean; // readFile function is used to read arbitrary text files on disk, i.e. when resolution procedure needs the content of 'package.json' // to determine location of bundled typings for node module readFile(fileName: string): string; } - + export interface ResolvedModule { resolvedFileName: string; + /* + * Denotes if 'resolvedFileName' is isExternalLibraryImport and thus should be proper external module: + * - be a .d.ts file + * - use top level imports\exports + * - don't use tripleslash references + */ + isExternalLibraryImport?: boolean; + } + + export interface ResolvedModuleWithFailedLookupLocations { + resolvedModule: ResolvedModule; failedLookupLocations: string[]; } - - export type ModuleNameResolver = (moduleName: string, containingFile: string, options: CompilerOptions, host: ModuleResolutionHost) => ResolvedModule; export interface CompilerHost extends ModuleResolutionHost { getSourceFile(fileName: string, languageVersion: ScriptTarget, onError?: (message: string) => void): SourceFile; @@ -2284,7 +2321,7 @@ namespace ts { getCanonicalFileName(fileName: string): string; useCaseSensitiveFileNames(): boolean; getNewLine(): string; - + /* * CompilerHost must either implement resolveModuleNames (in case if it wants to be completely in charge of * module name resolution) or provide implementation for methods from ModuleResolutionHost (in this case compiler @@ -2292,7 +2329,7 @@ namespace ts { * If resolveModuleNames is implemented then implementation for members from ModuleResolutionHost can be just * 'throw new Error("NotImplemented")' */ - resolveModuleNames?(moduleNames: string[], containingFile: string): string[]; + resolveModuleNames?(moduleNames: string[], containingFile: string): ResolvedModule[]; } export interface TextSpan { @@ -2323,7 +2360,7 @@ namespace ts { // operation caused diagnostics to be returned by storing and comparing the return value // of this method before/after the operation is performed. getModificationCount(): number; - + /* @internal */ reattachFileDiagnostics(newFile: SourceFile): void; } } diff --git a/src/compiler/utilities.ts b/src/compiler/utilities.ts index 6c5bd8df95d..452f59f0f03 100644 --- a/src/compiler/utilities.ts +++ b/src/compiler/utilities.ts @@ -1,4 +1,5 @@ /// +/// /* @internal */ namespace ts { @@ -64,7 +65,8 @@ namespace ts { increaseIndent: () => { }, decreaseIndent: () => { }, clear: () => str = "", - trackSymbol: () => { } + trackSymbol: () => { }, + reportInaccessibleThisError: () => { } }; } @@ -97,22 +99,22 @@ namespace ts { } return true; - } - - export function hasResolvedModuleName(sourceFile: SourceFile, moduleNameText: string): boolean { + } + + export function hasResolvedModule(sourceFile: SourceFile, moduleNameText: string): boolean { return sourceFile.resolvedModules && hasProperty(sourceFile.resolvedModules, moduleNameText); } - export function getResolvedModuleFileName(sourceFile: SourceFile, moduleNameText: string): string { - return hasResolvedModuleName(sourceFile, moduleNameText) ? sourceFile.resolvedModules[moduleNameText] : undefined; + export function getResolvedModule(sourceFile: SourceFile, moduleNameText: string): ResolvedModule { + return hasResolvedModule(sourceFile, moduleNameText) ? sourceFile.resolvedModules[moduleNameText] : undefined; } - export function setResolvedModuleName(sourceFile: SourceFile, moduleNameText: string, resolvedFileName: string): void { + export function setResolvedModule(sourceFile: SourceFile, moduleNameText: string, resolvedModule: ResolvedModule): void { if (!sourceFile.resolvedModules) { sourceFile.resolvedModules = {}; } - sourceFile.resolvedModules[moduleNameText] = resolvedFileName; + sourceFile.resolvedModules[moduleNameText] = resolvedModule; } // Returns true if this node contains a parse error anywhere underneath it. @@ -164,16 +166,16 @@ namespace ts { return node.pos; } - // Returns true if this node is missing from the actual source code. 'missing' is different - // from 'undefined/defined'. When a node is undefined (which can happen for optional nodes - // in the tree), it is definitel missing. HOwever, a node may be defined, but still be + // Returns true if this node is missing from the actual source code. A 'missing' node is different + // from 'undefined/defined'. When a node is undefined (which can happen for optional nodes + // in the tree), it is definitely missing. However, a node may be defined, but still be // 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: + // get anything in the source code that it expects at that location. For example: // // 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. + // code). So the parser will attempt to parse out a type, and will create an actual node. // However, this node will be 'missing' in the sense that no actual source-code/tokens are // contained within it. export function nodeIsMissing(node: Node) { @@ -435,6 +437,7 @@ namespace ts { } export let fullTripleSlashReferencePathRegEx = /^(\/\/\/\s*/; + export let fullTripleSlashAMDReferencePathRegEx = /^(\/\/\/\s*/; export function isTypeNode(node: Node): boolean { if (SyntaxKind.FirstTypeNode <= node.kind && node.kind <= SyntaxKind.LastTypeNode) { @@ -466,13 +469,12 @@ namespace ts { 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.kind === SyntaxKind.PropertyAccessExpression, "'node' was expected to be a qualified name, identifier or property access in 'isTypeNode'."); - + case SyntaxKind.QualifiedName: + case SyntaxKind.PropertyAccessExpression: + case SyntaxKind.ThisKeyword: let parent = node.parent; if (parent.kind === SyntaxKind.TypeQuery) { return false; @@ -619,7 +621,7 @@ namespace ts { return node && (node.kind === SyntaxKind.ClassDeclaration || node.kind === SyntaxKind.ClassExpression); } - export function isFunctionLike(node: Node): boolean { + export function isFunctionLike(node: Node): node is FunctionLikeDeclaration { if (node) { switch (node.kind) { case SyntaxKind.Constructor: @@ -659,7 +661,7 @@ namespace ts { return node && node.kind === SyntaxKind.Block && isFunctionLike(node.parent); } - export function isObjectLiteralMethod(node: Node) { + export function isObjectLiteralMethod(node: Node): node is MethodDeclaration { return node && node.kind === SyntaxKind.MethodDeclaration && node.parent.kind === SyntaxKind.ObjectLiteralExpression; } @@ -731,6 +733,9 @@ namespace ts { case SyntaxKind.Constructor: case SyntaxKind.GetAccessor: case SyntaxKind.SetAccessor: + case SyntaxKind.CallSignature: + case SyntaxKind.ConstructSignature: + case SyntaxKind.IndexSignature: case SyntaxKind.EnumDeclaration: case SyntaxKind.SourceFile: return node; @@ -893,7 +898,6 @@ namespace ts { export function isExpression(node: Node): boolean { switch (node.kind) { - case SyntaxKind.ThisKeyword: case SyntaxKind.SuperKeyword: case SyntaxKind.NullKeyword: case SyntaxKind.TrueKeyword: @@ -926,6 +930,7 @@ namespace ts { case SyntaxKind.JsxElement: case SyntaxKind.JsxSelfClosingElement: case SyntaxKind.YieldExpression: + case SyntaxKind.AwaitExpression: return true; case SyntaxKind.QualifiedName: while (node.parent.kind === SyntaxKind.QualifiedName) { @@ -939,6 +944,7 @@ namespace ts { // fall through case SyntaxKind.NumericLiteral: case SyntaxKind.StringLiteral: + case SyntaxKind.ThisKeyword: let parent = node.parent; switch (parent.kind) { case SyntaxKind.VariableDeclaration: @@ -991,6 +997,12 @@ namespace ts { return false; } + export function isExternalModuleNameRelative(moduleName: string): boolean { + // TypeScript 1.0 spec (April 2014): 11.2.1 + // An external module name is "relative" if the first term is "." or "..". + return moduleName.substr(0, 2) === "./" || moduleName.substr(0, 3) === "../" || moduleName.substr(0, 2) === ".\\" || moduleName.substr(0, 3) === "..\\"; + } + export function isInstantiatedModule(node: ModuleDeclaration, preserveConstEnums: boolean) { let moduleState = getModuleInstanceState(node); return moduleState === ModuleInstanceState.Instantiated || @@ -1514,12 +1526,12 @@ namespace ts { function getModificationCount() { return modificationCount; } - + function reattachFileDiagnostics(newFile: SourceFile): void { if (!hasProperty(fileDiagnostics, newFile.fileName)) { return; } - + for (let diagnostic of fileDiagnostics[newFile.fileName]) { diagnostic.file = newFile; } diff --git a/src/harness/compilerRunner.ts b/src/harness/compilerRunner.ts index 87e22e08cfa..108c6f4518a 100644 --- a/src/harness/compilerRunner.ts +++ b/src/harness/compilerRunner.ts @@ -1,6 +1,7 @@ /// /// /// +/* tslint:disable:no-null */ const enum CompilerTestType { Conformance, @@ -32,7 +33,8 @@ class CompilerBaselineRunner extends RunnerBase { } else if (testType === CompilerTestType.Test262) { this.testSuiteName = "test262"; - } else { + } + else { this.testSuiteName = "compiler"; // default to this for historical reasons } this.basePath += "/" + this.testSuiteName; @@ -44,10 +46,10 @@ class CompilerBaselineRunner extends RunnerBase { // Everything declared here should be cleared out in the "after" callback. let justName: string; let content: string; - let testCaseContent: { settings: Harness.TestCaseParser.CompilerSetting[]; testUnitData: Harness.TestCaseParser.TestUnitData[]; }; + let testCaseContent: { settings: Harness.TestCaseParser.CompilerSettings; testUnitData: Harness.TestCaseParser.TestUnitData[]; }; let units: Harness.TestCaseParser.TestUnitData[]; - let tcSettings: Harness.TestCaseParser.CompilerSetting[]; + let tcSettings: Harness.TestCaseParser.CompilerSettings; let lastUnit: Harness.TestCaseParser.TestUnitData; let rootDir: string; @@ -61,15 +63,12 @@ class CompilerBaselineRunner extends RunnerBase { let otherFiles: { unitName: string; content: string }[]; let harnessCompiler: Harness.Compiler.HarnessCompiler; - let createNewInstance = false; - before(() => { justName = fileName.replace(/^.*[\\\/]/, ""); // strips the fileName from the path. content = Harness.IO.readFile(fileName); testCaseContent = Harness.TestCaseParser.makeUnitsFromTest(content, fileName); units = testCaseContent.testUnitData; tcSettings = testCaseContent.settings; - createNewInstance = false; lastUnit = units[units.length - 1]; rootDir = lastUnit.originalFilePath.indexOf("conformance") === -1 ? "tests/cases/compiler/" : lastUnit.originalFilePath.substring(0, lastUnit.originalFilePath.lastIndexOf("/")) + "/"; harnessCompiler = Harness.Compiler.getCompiler(); @@ -85,7 +84,8 @@ class CompilerBaselineRunner extends RunnerBase { otherFiles.push({ unitName: rootDir + unit.name, content: unit.content }); } }); - } else { + } + else { toBeCompiled = units.map(unit => { return { unitName: rootDir + unit.name, content: unit.content }; }); @@ -100,27 +100,6 @@ class CompilerBaselineRunner extends RunnerBase { }); }); - beforeEach(() => { - /* The compiler doesn't handle certain flags flipping during a single compilation setting. Tests on these flags will need - a fresh compiler instance for themselves and then create a fresh one for the next test. Would be nice to get dev fixes - eventually to remove this limitation. */ - for (let i = 0; i < tcSettings.length; ++i) { - // noImplicitAny is passed to getCompiler, but target is just passed in the settings blob to setCompilerSettings - if (!createNewInstance && (tcSettings[i].flag == "noimplicitany" || tcSettings[i].flag === "target")) { - harnessCompiler = Harness.Compiler.getCompiler(); - harnessCompiler.setCompilerSettings(tcSettings); - createNewInstance = true; - } - } - }); - - afterEach(() => { - if (createNewInstance) { - harnessCompiler = Harness.Compiler.getCompiler(); - createNewInstance = false; - } - }); - after(() => { // Mocha holds onto the closure environment of the describe callback even after the test is done. // Therefore we have to clean out large objects after the test is done. @@ -217,7 +196,8 @@ class CompilerBaselineRunner extends RunnerBase { if (jsCode.length > 0) { return tsCode + "\r\n\r\n" + jsCode; - } else { + } + else { return null; } }); @@ -402,10 +382,6 @@ class CompilerBaselineRunner extends RunnerBase { else { this.tests.forEach(test => this.checkTestCodeOutput(test)); } - - describe("Cleanup after compiler baselines", () => { - let harnessCompiler = Harness.Compiler.getCompiler(); - }); }); } diff --git a/src/harness/fourslash.ts b/src/harness/fourslash.ts index 5bfac3d9bb5..3042f0c4647 100644 --- a/src/harness/fourslash.ts +++ b/src/harness/fourslash.ts @@ -18,8 +18,9 @@ /// /// /// +/* tslint:disable:no-null */ -module FourSlash { +namespace FourSlash { ts.disableIncrementalParsing = false; // Represents a parsed source file with metadata @@ -29,13 +30,13 @@ module FourSlash { fileName: string; version: number; // File-specific options (name/value pairs) - fileOptions: { [index: string]: string; }; + fileOptions: Harness.TestCaseParser.CompilerSettings; } // Represents a set of parsed source files and options export interface FourSlashData { // Global options (name/value pairs) - globalOptions: { [index: string]: string; }; + globalOptions: Harness.TestCaseParser.CompilerSettings; files: FourSlashFile[]; @@ -117,89 +118,17 @@ module FourSlash { // Add cases into convertGlobalOptionsToCompilationsSettings function for the compiler to acknowledge such option from meta data let 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 fileName: "Filename", - mapRoot: "mapRoot", - module: "module", - out: "out", - outFile: "outFile", - 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 - jsx: "jsx", }; // List of allowed metadata names let fileMetadataNames = [metadataOptionNames.fileName, metadataOptionNames.emitThisFile, metadataOptionNames.resolveReference]; - let globalMetadataNames = [metadataOptionNames.allowNonTsExtensions, metadataOptionNames.baselineFile, metadataOptionNames.declaration, - metadataOptionNames.mapRoot, metadataOptionNames.module, metadataOptionNames.out,metadataOptionNames.outFile, - metadataOptionNames.outDir, metadataOptionNames.sourceMap, metadataOptionNames.sourceRoot, metadataOptionNames.jsx]; - function convertGlobalOptionsToCompilerOptions(globalOptions: { [idx: string]: string }): ts.CompilerOptions { + function convertGlobalOptionsToCompilerOptions(globalOptions: Harness.TestCaseParser.CompilerSettings): ts.CompilerOptions { let settings: ts.CompilerOptions = { target: ts.ScriptTarget.ES5 }; - // Convert all property in globalOptions into ts.CompilationSettings - for (let prop in globalOptions) { - if (globalOptions.hasOwnProperty(prop)) { - switch (prop) { - case metadataOptionNames.allowNonTsExtensions: - settings.allowNonTsExtensions = globalOptions[prop] === "true"; - break; - case metadataOptionNames.declaration: - settings.declaration = globalOptions[prop] === "true"; - break; - case metadataOptionNames.mapRoot: - settings.mapRoot = globalOptions[prop]; - break; - case metadataOptionNames.module: - // create appropriate external module target for CompilationSettings - switch (globalOptions[prop]) { - case "AMD": - settings.module = ts.ModuleKind.AMD; - break; - case "CommonJS": - settings.module = ts.ModuleKind.CommonJS; - break; - default: - ts.Debug.assert(globalOptions[prop] === undefined || globalOptions[prop] === "None"); - settings.module = ts.ModuleKind.None; - break; - } - break; - case metadataOptionNames.out: - settings.out = globalOptions[prop]; - break; - case metadataOptionNames.outFile: - settings.outFile = globalOptions[prop]; - break; - case metadataOptionNames.outDir: - settings.outDir = globalOptions[prop]; - break; - case metadataOptionNames.sourceMap: - settings.sourceMap = globalOptions[prop] === "true"; - break; - case metadataOptionNames.sourceRoot: - settings.sourceRoot = globalOptions[prop]; - break; - case metadataOptionNames.jsx: - switch (globalOptions[prop].toLowerCase()) { - case "react": - settings.jsx = ts.JsxEmit.React; - break; - case "preserve": - settings.jsx = ts.JsxEmit.Preserve; - break; - default: - ts.Debug.assert(globalOptions[prop] === undefined || globalOptions[prop] === "None"); - settings.jsx = ts.JsxEmit.None; - break; - } - break; - } - } - } + Harness.Compiler.setCompilerOptionsFromHarnessSetting(globalOptions, settings); return settings; } @@ -330,7 +259,8 @@ module FourSlash { this.inputFiles[file.fileName] = file.content; if (!startResolveFileRef && file.fileOptions[metadataOptionNames.resolveReference] === "true") { startResolveFileRef = file; - } else if (startResolveFileRef) { + } + else if (startResolveFileRef) { // If entry point for resolving file references is already specified, report duplication error throw new Error("There exists a Fourslash file which has resolveReference flag specified; remove duplicated resolveReference flag"); } @@ -433,7 +363,8 @@ module FourSlash { this.currentCaretPosition = Math.min(this.currentCaretPosition, this.getFileContent(this.activeFile.fileName).length); if (count > 0) { this.scenarioActions.push(``); - } else { + } + else { this.scenarioActions.push(``); } } @@ -508,7 +439,8 @@ module FourSlash { predicate = function (errorMinChar: number, errorLimChar: number, startPos: number, endPos: number) { return ((errorMinChar >= startPos) && (errorLimChar >= startPos)) ? true : false; }; - } else { + } + else { predicate = function (errorMinChar: number, errorLimChar: number, startPos: number, endPos: number) { return ((errorMinChar <= startPos) && (errorLimChar <= startPos)) ? true : false; }; @@ -548,7 +480,8 @@ module FourSlash { private printErrorLog(expectErrors: boolean, errors: ts.Diagnostic[]) { if (expectErrors) { Harness.IO.log("Expected error not found. Error list is:"); - } else { + } + else { Harness.IO.log("Unexpected error(s) found. Error list is:"); } @@ -621,10 +554,12 @@ module FourSlash { if (negative) { this.verifyMemberListIsEmpty(false); return; - } else { + } + else { this.scenarioActions.push(""); } - } else { + } + else { this.scenarioActions.push(""); this.scenarioActions.push(``); } @@ -667,14 +602,16 @@ module FourSlash { public verifyMemberListIsEmpty(negative: boolean) { if (negative) { this.scenarioActions.push(""); - } else { + } + else { this.scenarioActions.push(""); } let members = this.getMemberListAtCaret(); if ((!members || members.entries.length === 0) && negative) { this.raiseError("Member list is empty at Caret"); - } else if ((members && members.entries.length !== 0) && !negative) { + } + else if ((members && members.entries.length !== 0) && !negative) { let errorMsg = "\n" + "Member List contains: [" + members.entries[0].name; for (let i = 1; i < members.entries.length; i++) { @@ -711,7 +648,8 @@ module FourSlash { if ((completions && !completions.isNewIdentifierLocation) && !negative) { this.raiseError("Expected builder completion entry"); - } else if ((completions && completions.isNewIdentifierLocation) && negative) { + } + else if ((completions && completions.isNewIdentifierLocation) && negative) { this.raiseError("Un-expected builder completion entry"); } } @@ -904,7 +842,8 @@ module FourSlash { if (expectedDocumentation != undefined) { assert.notEqual(actualQuickInfoDocumentation, expectedDocumentation, this.messageAtLastKnownMarker("quick info doc comment")); } - } else { + } + else { if (expectedText !== undefined) { assert.equal(actualQuickInfoText, expectedText, this.messageAtLastKnownMarker("quick info text")); } @@ -1086,7 +1025,8 @@ module FourSlash { if (!actual) { this.raiseError("Expected signature help to be present, but it wasn't"); } - } else { + } + else { if (actual) { this.raiseError(`Expected no signature help, but got "${JSON.stringify(actual)}"`); } @@ -1443,7 +1383,8 @@ module FourSlash { public type(text: string) { if (text === "") { this.taoInvalidReason = "Test used empty-insert workaround."; - } else { + } + else { this.scenarioActions.push(``); } @@ -1470,7 +1411,8 @@ module FourSlash { if (ch === "(" || ch === ",") { /* Signature help*/ this.languageService.getSignatureHelpItems(this.activeFile.fileName, offset); - } else if (prevChar === " " && /A-Za-z_/.test(ch)) { + } + else if (prevChar === " " && /A-Za-z_/.test(ch)) { /* Completions */ this.languageService.getCompletionsAtPosition(this.activeFile.fileName, offset); } @@ -1619,7 +1561,8 @@ module FourSlash { if (marker.position < limChar) { // Marker is inside the edit - mark it as invalidated (?) marker.position = -1; - } else { + } + else { // Move marker back/forward by the appropriate amount marker.position += (minChar - limChar) + text.length; } @@ -1640,7 +1583,8 @@ module FourSlash { public goToDefinition(definitionIndex: number) { if (definitionIndex === 0) { this.scenarioActions.push(""); - } else { + } + else { this.taoInvalidReason = "GoToDefinition not supported for non-zero definition indices"; } @@ -1722,7 +1666,8 @@ module FourSlash { if (negative) { assert.notEqual(actualDefinitionName, expectedName, this.messageAtLastKnownMarker("Definition Info Name")); assert.notEqual(actualDefinitionContainerName, expectedContainerName, this.messageAtLastKnownMarker("Definition Info Container Name")); - } else { + } + else { assert.equal(actualDefinitionName, expectedName, this.messageAtLastKnownMarker("Definition Info Name")); assert.equal(actualDefinitionContainerName, expectedContainerName, this.messageAtLastKnownMarker("Definition Info Container Name")); } @@ -1969,26 +1914,33 @@ module FourSlash { if (expected === undefined) { if (actual) { - this.raiseError(name + ' failed - expected no template but got {newText: \"' + actual.newText + '\" caretOffset: ' + actual.caretOffset + '}'); + this.raiseError(name + " failed - expected no template but got {newText: \"" + actual.newText + "\" caretOffset: " + actual.caretOffset + "}"); } return; } else { if (actual === undefined) { - this.raiseError(name + ' failed - expected the template {newText: \"' + actual.newText + '\" caretOffset: ' + actual.caretOffset + '} but got nothing instead'); + this.raiseError(name + " failed - expected the template {newText: \"" + actual.newText + "\" caretOffset: " + actual.caretOffset + "} but got nothing instead"); } if (actual.newText !== expected.newText) { - this.raiseError(name + ' failed - expected insertion:\n' + expected.newText + '\nactual insertion:\n' + actual.newText); + this.raiseError(name + " failed - expected insertion:\n" + this.clarifyNewlines(expected.newText) + "\nactual insertion:\n" + this.clarifyNewlines(actual.newText)); } if (actual.caretOffset !== expected.caretOffset) { - this.raiseError(name + ' failed - expected caretOffset: ' + expected.caretOffset + ',\nactual caretOffset:' + actual.caretOffset); + this.raiseError(name + " failed - expected caretOffset: " + expected.caretOffset + ",\nactual caretOffset:" + actual.caretOffset); } } } + private clarifyNewlines(str: string) { + return str.replace(/\r?\n/g, lineEnding => { + const representation = lineEnding === "\r\n" ? "CRLF" : "LF"; + return "# - " + representation + lineEnding; + }); + } + public verifyMatchingBracePosition(bracePosition: number, expectedMatchPosition: number) { this.taoInvalidReason = "verifyMatchingBracePosition NYI"; @@ -2001,9 +1953,11 @@ module FourSlash { let actualMatchPosition = -1; if (bracePosition === actual[0].start) { actualMatchPosition = actual[1].start; - } else if (bracePosition === actual[1].start) { + } + else if (bracePosition === actual[1].start) { actualMatchPosition = actual[0].start; - } else { + } + else { this.raiseError(`verifyMatchingBracePosition failed - could not find the brace position: ${bracePosition} in the returned list: (${actual[0].start},${ts.textSpanEnd(actual[0])}) and (${actual[1].start},${ts.textSpanEnd(actual[1])})`); } @@ -2173,7 +2127,7 @@ module FourSlash { let occurrences = this.getOccurrencesAtCurrentPosition(); if (!occurrences || occurrences.length === 0) { - this.raiseError('verifyOccurrencesAtPositionListContains failed - found 0 references, expected at least one.'); + this.raiseError("verifyOccurrencesAtPositionListContains failed - found 0 references, expected at least one."); } for (let occurrence of occurrences) { @@ -2205,12 +2159,12 @@ module FourSlash { } public verifyDocumentHighlightsAtPositionListContains(fileName: string, start: number, end: number, fileNamesToSearch: string[], kind?: string) { - this.taoInvalidReason = 'verifyDocumentHighlightsAtPositionListContains NYI'; + this.taoInvalidReason = "verifyDocumentHighlightsAtPositionListContains NYI"; let documentHighlights = this.getDocumentHighlightsAtCurrentPosition(fileNamesToSearch); if (!documentHighlights || documentHighlights.length === 0) { - this.raiseError('verifyDocumentHighlightsAtPositionListContains failed - found 0 highlights, expected at least one.'); + this.raiseError("verifyDocumentHighlightsAtPositionListContains failed - found 0 highlights, expected at least one."); } for (let documentHighlight of documentHighlights) { @@ -2233,15 +2187,15 @@ module FourSlash { } public verifyDocumentHighlightsAtPositionListCount(expectedCount: number, fileNamesToSearch: string[]) { - this.taoInvalidReason = 'verifyDocumentHighlightsAtPositionListCount NYI'; + this.taoInvalidReason = "verifyDocumentHighlightsAtPositionListCount NYI"; let documentHighlights = this.getDocumentHighlightsAtCurrentPosition(fileNamesToSearch); - let actualCount = documentHighlights - ? documentHighlights.reduce((currentCount, { highlightSpans }) => currentCount + highlightSpans.length, 0) + let actualCount = documentHighlights + ? documentHighlights.reduce((currentCount, { highlightSpans }) => currentCount + highlightSpans.length, 0) : 0; if (expectedCount !== actualCount) { - this.raiseError('verifyDocumentHighlightsAtPositionListCount failed - actual: ' + actualCount + ', expected:' + expectedCount); + this.raiseError("verifyDocumentHighlightsAtPositionListCount failed - actual: " + actualCount + ", expected:" + expectedCount); } } @@ -2315,10 +2269,12 @@ module FourSlash { let index = indexOrName; if (index >= this.testData.files.length) { throw new Error(`File index (${index}) in openFile was out of range. There are only ${this.testData.files.length} files in this test.`); - } else { + } + else { result = this.testData.files[index]; } - } else if (typeof indexOrName === "string") { + } + else if (typeof indexOrName === "string") { let name = indexOrName; // names are stored in the compiler with this relative path, this allows people to use goTo.file on just the fileName @@ -2341,7 +2297,8 @@ module FourSlash { if (!foundIt) { throw new Error(`No test file named "${name}" exists. Available file names are: ${availableNames.join(", ")}`); } - } else { + } + else { throw new Error("Unknown argument type"); } @@ -2359,7 +2316,8 @@ module FourSlash { let markerNames: string[] = []; for (let m in this.testData.markerPositions) markerNames.push(m); throw new Error(`Unknown marker "${markerName}" Available markers: ${markerNames.map(m => "\"" + m + "\"").join(", ")}`); - } else { + } + else { return markerPos; } } @@ -2504,22 +2462,28 @@ module FourSlash { // Append to the current subfile content, inserting a newline needed if (currentFileContent === null) { currentFileContent = ""; - } else { + } + else { // End-of-line currentFileContent = currentFileContent + "\n"; } currentFileContent = currentFileContent + line.substr(4); - } else if (line.substr(0, 2) === "//") { + } + else if (line.substr(0, 2) === "//") { // Comment line, check for global/file @options and record them let match = optionRegex.exec(line.substr(2)); if (match) { - let globalMetadataNamesIndex = globalMetadataNames.indexOf(match[1]); let fileMetadataNamesIndex = fileMetadataNames.indexOf(match[1]); - 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(metadataOptionNames.fileName)) { + if (fileMetadataNamesIndex === -1) { + // Check if the match is already existed in the global options + if (globalOptions[match[1]] !== undefined) { + throw new Error("Global Option : '" + match[1] + "' is already existed"); + } + globalOptions[match[1]] = match[2]; + } + else { + if (fileMetadataNamesIndex === fileMetadataNames.indexOf(metadataOptionNames.fileName)) { // Found an @FileName directive, if this is not the first then create a new subfile if (currentFileContent) { let file = parseFileContent(currentFileContent, currentFileName, markerPositions, markers, ranges); @@ -2536,23 +2500,20 @@ module FourSlash { currentFileName = basePath + "/" + match[2]; currentFileOptions[match[1]] = match[2]; - } else { + } + else { // Add other fileMetadata flag currentFileOptions[match[1]] = match[2]; } - } else { - // Check if the match is already existed in the global options - if (globalOptions[match[1]] !== undefined) { - throw new Error("Global Option : '" + match[1] + "' is already existed"); - } - globalOptions[match[1]] = match[2]; } } // TODO: should be '==='? - } else if (line == "" || lineLength === 0) { + } + else if (line == "" || lineLength === 0) { // Previously blank lines between fourslash content caused it to be considered as 2 files, // Remove this behavior since it just causes errors now - } else { + } + else { // Empty line or code line, terminate current subfile if there is one if (currentFileContent) { let file = parseFileContent(currentFileContent, currentFileName, markerPositions, markers, ranges); @@ -2622,7 +2583,8 @@ module FourSlash { try { // Attempt to parse the marker value as JSON markerValue = JSON.parse("{ " + text + " }"); - } catch (e) { + } + catch (e) { reportError(fileName, location.sourceLine, location.sourceColumn, "Unable to parse marker text " + e.message); } @@ -2658,7 +2620,8 @@ module FourSlash { let message = "Marker '" + name + "' is duplicated in the source file contents."; reportError(marker.fileName, location.sourceLine, location.sourceColumn, message); return null; - } else { + } + else { markerMap[name] = marker; markers.push(marker); return marker; @@ -2672,7 +2635,7 @@ module FourSlash { let validMarkerChars = "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz$1234567890_"; /// The file content (minus metacharacters) so far - let output: string = ""; + let output = ""; /// The current marker (or maybe multi-line comment?) we're parsing, possibly let openMarker: ILocationInformation = null; @@ -2684,22 +2647,23 @@ module FourSlash { let localRanges: Range[] = []; /// The latest position of the start of an unflushed plain text area - let lastNormalCharPosition: number = 0; + let lastNormalCharPosition = 0; /// The total number of metacharacters removed from the file (so far) - let difference: number = 0; + let difference = 0; /// The fourslash file state object we are generating let state: State = State.none; /// Current position data - let line: number = 1; - let column: number = 1; + let line = 1; + let column = 1; let flush = (lastSafeCharIndex: number) => { if (lastSafeCharIndex === undefined) { output = output + content.substr(lastNormalCharPosition); - } else { + } + else { output = output + content.substr(lastNormalCharPosition, lastSafeCharIndex - lastNormalCharPosition); } }; @@ -2722,7 +2686,8 @@ module FourSlash { flush(i - 1); lastNormalCharPosition = i + 1; difference += 2; - } else if (previousChar === "|" && currentChar === "]") { + } + else if (previousChar === "|" && currentChar === "]") { // found a range end let rangeStart = openRanges.pop(); if (!rangeStart) { @@ -2741,7 +2706,8 @@ module FourSlash { flush(i - 1); lastNormalCharPosition = i + 1; difference += 2; - } else if (previousChar === "/" && currentChar === "*") { + } + else if (previousChar === "/" && currentChar === "*") { // found a possible marker start state = State.inSlashStarMarker; openMarker = { @@ -2750,7 +2716,8 @@ module FourSlash { sourceLine: line, sourceColumn: column, }; - } else if (previousChar === "{" && currentChar === "|") { + } + else if (previousChar === "{" && currentChar === "|") { // found an object marker start state = State.inObjectMarker; openMarker = { @@ -2803,10 +2770,12 @@ module FourSlash { // Reset the state openMarker = null; state = State.none; - } else if (validMarkerChars.indexOf(currentChar) < 0) { + } + else if (validMarkerChars.indexOf(currentChar) < 0) { if (currentChar === "*" && i < content.length - 1 && content.charAt(i + 1) === "/") { // The marker is about to be closed, ignore the 'invalid' char - } else { + } + else { // We've hit a non-valid marker character, so we were actually in a block comment // Bail out the text we've gathered so far back into the output flush(i); @@ -2822,7 +2791,8 @@ module FourSlash { if (currentChar === "\n" && previousChar === "\r") { // Ignore trailing \n after a \r continue; - } else if (currentChar === "\n" || currentChar === "\r") { + } + else if (currentChar === "\n" || currentChar === "\r") { line++; column = 1; continue; diff --git a/src/harness/fourslashRunner.ts b/src/harness/fourslashRunner.ts index d30a30d88e3..867c0d5a4d6 100644 --- a/src/harness/fourslashRunner.ts +++ b/src/harness/fourslashRunner.ts @@ -1,6 +1,7 @@ /// /// /// +/* tslint:disable:no-null */ const enum FourSlashTestType { Native, @@ -25,8 +26,8 @@ class FourSlashRunner extends RunnerBase { this.testSuiteName = "fourslash-shims"; break; case FourSlashTestType.ShimsWithPreprocess: - this.basePath = 'tests/cases/fourslash/shims-pp'; - this.testSuiteName = 'fourslash-shims-pp'; + this.basePath = "tests/cases/fourslash/shims-pp"; + this.testSuiteName = "fourslash-shims-pp"; break; case FourSlashTestType.Server: this.basePath = "tests/cases/fourslash/server"; @@ -87,7 +88,8 @@ class FourSlashRunner extends RunnerBase { FourSlash.xmlData.forEach(xml => { if (xml.invalidReason !== null) { lines.push(""); - } else { + } + else { lines.push(" "); xml.actions.forEach(action => { lines.push(" " + action); diff --git a/src/harness/harness.ts b/src/harness/harness.ts index f65a4f88730..a37b647a124 100644 --- a/src/harness/harness.ts +++ b/src/harness/harness.ts @@ -23,6 +23,7 @@ /// /// /// +/* tslint:disable:no-null */ // Block scoped definitions work poorly for global variables, temporarily enable var /* tslint:disable:no-var-keyword */ @@ -35,7 +36,7 @@ declare var __dirname: string; // Node-specific var global = Function("return this").call(null); /* tslint:enable:no-var-keyword */ -module Utils { +namespace Utils { // Setup some globals based on the current environment export const enum ExecutionEnvironment { Node, @@ -54,17 +55,17 @@ module Utils { return ExecutionEnvironment.Node; } } - + export let currentExecutionEnvironment = getExecutionEnvironment(); - const Buffer: BufferConstructor = currentExecutionEnvironment !== ExecutionEnvironment.Browser - ? require("buffer").Buffer + const Buffer: BufferConstructor = currentExecutionEnvironment !== ExecutionEnvironment.Browser + ? require("buffer").Buffer : undefined; export function encodeString(s: string): string { return Buffer ? (new Buffer(s)).toString("utf8") : s; } - + export function evalFile(fileContents: string, fileName: string, nodeContext?: any) { let environment = getExecutionEnvironment(); switch (environment) { @@ -76,7 +77,8 @@ module Utils { let vm = require("vm"); if (nodeContext) { vm.runInNewContext(fileContents, nodeContext, fileName); - } else { + } + else { vm.runInThisContext(fileContents, fileName); } break; @@ -126,7 +128,8 @@ module Utils { let cachedResult = cache[key]; if (cachedResult) { return cachedResult; - } else { + } + else { return cache[key] = f.apply(this, arguments); } }); @@ -396,7 +399,7 @@ module Utils { } } -module Harness.Path { +namespace Harness.Path { export function getFileName(fullPath: string) { return fullPath.replace(/^.*[\\\/]/, ""); } @@ -409,7 +412,7 @@ module Harness.Path { } } -module Harness { +namespace Harness { export interface IO { newLine(): string; getCurrentDirectory(): string; @@ -428,13 +431,14 @@ module Harness { args(): string[]; getExecutingFilePath(): string; exit(exitCode?: number): void; + readDirectory(path: string, extension?: string, exclude?: string[]): string[]; } export var IO: IO; - + // harness always uses one kind of new line const harnessNewLine = "\r\n"; - - module IOImpl { + + namespace IOImpl { declare class Enumerator { public atEnd(): boolean; public moveNext(): boolean; @@ -442,14 +446,15 @@ module Harness { constructor(o: any); } - export module CScript { + export namespace CScript { let fso: any; if (global.ActiveXObject) { fso = new global.ActiveXObject("Scripting.FileSystemObject"); - } else { + } + else { fso = {}; } - + export const args = () => ts.sys.args; export const getExecutingFilePath = () => ts.sys.getExecutingFilePath(); export const exit = (exitCode: number) => ts.sys.exit(exitCode); @@ -464,6 +469,7 @@ module Harness { export const directoryExists: typeof IO.directoryExists = fso.FolderExists; export const fileExists: typeof IO.fileExists = fso.FileExists; export const log: typeof IO.log = global.WScript && global.WScript.StdOut.WriteLine; + export const readDirectory: typeof IO.readDirectory = (path, extension, exclude) => ts.sys.readDirectory(path, extension, exclude); export function createDirectory(path: string) { if (directoryExists(path)) { @@ -509,16 +515,17 @@ module Harness { }; } - export module Node { + export namespace Node { declare let require: any; let fs: any, pathModule: any; if (require) { fs = require("fs"); pathModule = require("path"); - } else { + } + else { fs = pathModule = {}; } - + export const resolvePath = (path: string) => ts.sys.resolvePath(path); export const getCurrentDirectory = () => ts.sys.getCurrentDirectory(); export const newLine = () => harnessNewLine; @@ -532,6 +539,8 @@ module Harness { export const fileExists: typeof IO.fileExists = fs.existsSync; export const log: typeof IO.log = s => console.log(s); + export const readDirectory: typeof IO.readDirectory = (path, extension, exclude) => ts.sys.readDirectory(path, extension, exclude); + export function createDirectory(path: string) { if (!directoryExists(path)) { fs.mkdirSync(path); @@ -541,7 +550,8 @@ module Harness { export function deleteFile(path: string) { try { fs.unlinkSync(path); - } catch (e) { + } + catch (e) { } } @@ -555,7 +565,8 @@ module Harness { // Node will just continue to repeat the root path, rather than return null if (dirPath === path) { dirPath = null; - } else { + } + else { return dirPath; } } @@ -592,7 +603,7 @@ module Harness { }; } - export module Network { + export namespace Network { let serverRoot = "http://localhost:8888/"; export const newLine = () => harnessNewLine; @@ -601,10 +612,11 @@ module Harness { export const args = () => []; export const getExecutingFilePath = () => ""; export const exit = (exitCode: number) => {}; - - let supportsCodePage = () => false; - module Http { + let supportsCodePage = () => false; + export let log = (s: string) => console.log(s); + + namespace Http { function waitForXHR(xhr: XMLHttpRequest) { while (xhr.readyState !== 4) { } return { status: xhr.status, responseText: xhr.responseText }; @@ -679,10 +691,12 @@ module Harness { if (dirPath.match(/localhost:\d+$/) || dirPath.match(/localhost:\d+\/$/)) { dirPath = null; // path + fileName - } else if (dirPath.indexOf(".") === -1) { + } + else if (dirPath.indexOf(".") === -1) { dirPath = dirPath.substring(0, dirPath.lastIndexOf("/")); // path - } else { + } + else { // strip any trailing slash if (dirPath.match(/.*\/$/)) { dirPath = dirPath.substring(0, dirPath.length - 2); @@ -706,7 +720,8 @@ module Harness { let results = response.responseText.split(","); if (spec) { return results.filter(file => spec.test(file)); - } else { + } + else { return results; } } @@ -716,13 +731,12 @@ module Harness { }; export let listFiles = Utils.memoize(_listFilesImpl); - export let log = (s: string) => console.log(s); - export function readFile(file: string) { let response = Http.getFileFromServerSync(serverRoot + file); if (response.status === 200) { return response.responseText; - } else { + } + else { return null; } } @@ -730,6 +744,10 @@ module Harness { export function writeFile(path: string, contents: string) { Http.writeToServerSync(serverRoot + path, "WRITE", contents); } + + export function readDirectory(path: string, extension?: string, exclude?: string[]) { + return listFiles(path).filter(f => !extension || ts.fileExtensionIs(f, extension)); + } } } @@ -746,7 +764,7 @@ module Harness { } } -module Harness { +namespace Harness { let tcServicesFileName = "typescriptServices.js"; export let libFolder: string; @@ -777,7 +795,7 @@ module Harness { export let lightMode = false; /** Functionality for compiling TypeScript code */ - export module Compiler { + export namespace Compiler { /** Aggregate various writes into a single array of lines. Useful for passing to the * TypeScript compiler to fill with source code or errors. */ @@ -851,12 +869,12 @@ module Harness { } export function createSourceFileAndAssertInvariants( - fileName: string, - sourceText: string, - languageVersion: ts.ScriptTarget) { + fileName: string, + sourceText: string, + languageVersion: ts.ScriptTarget) { // We'll only assert inletiants outside of light mode. const shouldAssertInvariants = !Harness.lightMode; - + // Only set the parent nodes if we're asserting inletiants. We don't need them otherwise. let result = ts.createSourceFile(fileName, sourceText, languageVersion, /*setParentNodes:*/ shouldAssertInvariants); @@ -883,13 +901,13 @@ module Harness { } export function createCompilerHost( - inputFiles: { unitName: string; content: string; }[], - writeFile: (fn: string, contents: string, writeByteOrderMark: boolean) => void, - scriptTarget: ts.ScriptTarget, - useCaseSensitiveFileNames: boolean, - // the currentDirectory is needed for rwcRunner to passed in specified current directory to compiler host - currentDirectory?: string, - newLineKind?: ts.NewLineKind): ts.CompilerHost { + inputFiles: { unitName: string; content: string; }[], + writeFile: (fn: string, contents: string, writeByteOrderMark: boolean) => void, + scriptTarget: ts.ScriptTarget, + useCaseSensitiveFileNames: boolean, + // the currentDirectory is needed for rwcRunner to passed in specified current directory to compiler host + currentDirectory?: string, + newLineKind?: ts.NewLineKind): ts.CompilerHost { // Local get canonical file name function, that depends on passed in parameter for useCaseSensitiveFileNames function getCanonicalFileName(fileName: string): string { @@ -907,7 +925,7 @@ module Harness { } }; inputFiles.forEach(register); - + function getSourceFile(fn: string, languageVersion: ts.ScriptTarget) { fn = ts.normalizePath(fn); if (Object.prototype.hasOwnProperty.call(filemap, getCanonicalFileName(fn))) { @@ -949,16 +967,79 @@ module Harness { }; } + interface HarnessOptions { + useCaseSensitiveFileNames?: boolean; + includeBuiltFile?: string; + baselineFile?: string; + } + + // Additional options not already in ts.optionDeclarations + const harnessOptionDeclarations: ts.CommandLineOption[] = [ + { name: "allowNonTsExtensions", type: "boolean" }, + { name: "useCaseSensitiveFileNames", type: "boolean" }, + { name: "baselineFile", type: "string" }, + { name: "includeBuiltFile", type: "string" }, + { name: "fileName", type: "string" }, + { name: "noErrorTruncation", type: "boolean" } + ]; + + let optionsIndex: ts.Map; + function getCommandLineOption(name: string): ts.CommandLineOption { + if (!optionsIndex) { + optionsIndex = {}; + let optionDeclarations = harnessOptionDeclarations.concat(ts.optionDeclarations); + for (let option of optionDeclarations) { + optionsIndex[option.name.toLowerCase()] = option; + } + } + return ts.lookUp(optionsIndex, name.toLowerCase()); + } + + export function setCompilerOptionsFromHarnessSetting(settings: Harness.TestCaseParser.CompilerSettings, options: ts.CompilerOptions & HarnessOptions): void { + for (let name in settings) { + if (settings.hasOwnProperty(name)) { + let value = settings[name]; + if (value === undefined) { + throw new Error(`Cannot have undefined value for compiler option '${name}'.`); + } + let option = getCommandLineOption(name); + if (option) { + switch (option.type) { + case "boolean": + options[option.name] = value.toLowerCase() === "true"; + break; + case "string": + options[option.name] = value; + break; + // If not a primitive, the possible types are specified in what is effectively a map of options. + default: + let map = >option.type; + let key = value.toLowerCase(); + if (ts.hasProperty(map, key)) { + options[option.name] = map[key]; + } + else { + throw new Error(`Unknown value '${value}' for compiler option '${name}'.`); + } + } + } + else { + throw new Error(`Unknown compiler option '${name}'.`); + } + } + } + } + export class HarnessCompiler { private inputFiles: { unitName: string; content: string }[] = []; private compileOptions: ts.CompilerOptions; - private settings: Harness.TestCaseParser.CompilerSetting[] = []; + private settings: Harness.TestCaseParser.CompilerSettings = {}; private lastErrors: ts.Diagnostic[]; public reset() { this.inputFiles = []; - this.settings = []; + this.settings = {}; this.lastErrors = []; } @@ -966,11 +1047,7 @@ module Harness { return this.lastErrors; } - public setCompilerSettingsFromOptions(tcSettings: ts.CompilerOptions) { - this.settings = Object.keys(tcSettings).map(k => ({ flag: k, value: (tcSettings)[k] })); - } - - public setCompilerSettings(tcSettings: Harness.TestCaseParser.CompilerSetting[]) { + public setCompilerSettings(tcSettings: Harness.TestCaseParser.CompilerSettings) { this.settings = tcSettings; } @@ -1006,7 +1083,7 @@ module Harness { otherFiles: { unitName: string; content: string }[], onComplete: (result: CompilerResult, program: ts.Program) => void, settingsCallback?: (settings: ts.CompilerOptions) => void, - options?: ts.CompilerOptions, + options?: ts.CompilerOptions & HarnessOptions, // Current directory is needed for rwcRunner to be able to use currentDirectory defined in json file currentDirectory?: string) { @@ -1015,20 +1092,26 @@ module Harness { options.module = options.module || ts.ModuleKind.None; options.newLine = options.newLine || ts.NewLineKind.CarriageReturnLineFeed; options.noErrorTruncation = true; + options.skipDefaultLibCheck = true; if (settingsCallback) { settingsCallback(null); } let newLine = "\r\n"; - options.skipDefaultLibCheck = true; + + // Parse settings + setCompilerOptionsFromHarnessSetting(this.settings, options); // Files from built\local that are requested by test "@includeBuiltFiles" to be in the context. // Treat them as library files, so include them in build, but not in baselines. let includeBuiltFiles: { unitName: string; content: string }[] = []; + if (options.includeBuiltFile) { + let builtFileName = libFolder + options.includeBuiltFile; + includeBuiltFiles.push({ unitName: builtFileName, content: normalizeLineEndings(IO.readFile(builtFileName), newLine) }); + } - let useCaseSensitiveFileNames = Harness.IO.useCaseSensitiveFileNames(); - this.settings.forEach(setCompilerOptionForSetting); + let useCaseSensitiveFileNames = options.useCaseSensitiveFileNames !== undefined ? options.useCaseSensitiveFileNames : Harness.IO.useCaseSensitiveFileNames(); let fileOutputs: GeneratedFile[] = []; @@ -1049,204 +1132,6 @@ module Harness { onComplete(result, program); return options; - - function setCompilerOptionForSetting(setting: Harness.TestCaseParser.CompilerSetting) { - switch (setting.flag.toLowerCase()) { - // "fileName", "comments", "declaration", "module", "nolib", "sourcemap", "target", "out", "outdir", "noimplicitany", "noresolve" - case "module": - case "modulegentarget": - if (typeof setting.value === "string") { - if (setting.value.toLowerCase() === "amd") { - options.module = ts.ModuleKind.AMD; - } else if (setting.value.toLowerCase() === "umd") { - options.module = ts.ModuleKind.UMD; - } else if (setting.value.toLowerCase() === "commonjs") { - options.module = ts.ModuleKind.CommonJS; - if (options.moduleResolution === undefined) { - // TODO: currently we have relative module names pretty much in all tests that use CommonJS module target. - // Such names could never be resolved in Node however classic resolution strategy still can handle them. - // Changing all module names to relative will be a major overhaul in code (but we'll do this anyway) so as a temporary measure - // we'll use ts.ModuleResolutionKind.Classic for CommonJS modules. - options.moduleResolution = ts.ModuleResolutionKind.Classic; - } - } else if (setting.value.toLowerCase() === "system") { - options.module = ts.ModuleKind.System; - } else if (setting.value.toLowerCase() === "unspecified") { - options.module = ts.ModuleKind.None; - } else { - throw new Error("Unknown module type " + setting.value); - } - } else { - options.module = setting.value; - } - break; - case "moduleresolution": - switch((setting.value || "").toLowerCase()) { - case "classic": - options.moduleResolution = ts.ModuleResolutionKind.Classic; - break; - case "node": - options.moduleResolution = ts.ModuleResolutionKind.NodeJs; - break; - } - break; - case "target": - case "codegentarget": - if (typeof setting.value === "string") { - if (setting.value.toLowerCase() === "es3") { - options.target = ts.ScriptTarget.ES3; - } else if (setting.value.toLowerCase() === "es5") { - options.target = ts.ScriptTarget.ES5; - } else if (setting.value.toLowerCase() === "es6") { - options.target = ts.ScriptTarget.ES6; - } else { - throw new Error("Unknown compile target " + setting.value); - } - } else { - options.target = setting.value; - } - break; - - case "experimentaldecorators": - options.experimentalDecorators = setting.value === "true"; - break; - - case "emitdecoratormetadata": - options.emitDecoratorMetadata = setting.value === "true"; - break; - - case "experimentalasyncfunctions": - options.experimentalAsyncFunctions = setting.value === "true"; - break; - - case "noemithelpers": - options.noEmitHelpers = setting.value === "true"; - break; - - case "noemitonerror": - options.noEmitOnError = setting.value === "true"; - break; - - case "noresolve": - options.noResolve = setting.value === "true"; - break; - - case "noimplicitany": - options.noImplicitAny = setting.value === "true"; - break; - - case "nolib": - options.noLib = setting.value === "true"; - break; - - case "out": - case "outfileoption": - options.out = setting.value; - break; - - case "outfile": - options.outFile = setting.value; - break; - - case "outdiroption": - case "outdir": - options.outDir = setting.value; - break; - - case "skipdefaultlibcheck": - options.skipDefaultLibCheck = setting.value === "true"; - break; - - case "sourceroot": - options.sourceRoot = setting.value; - break; - - case "maproot": - options.mapRoot = setting.value; - break; - - case "sourcemap": - options.sourceMap = setting.value === "true"; - break; - - case "declaration": - options.declaration = setting.value === "true"; - break; - - case "newline": - if (setting.value.toLowerCase() === "crlf") { - options.newLine = ts.NewLineKind.CarriageReturnLineFeed; - } - else if (setting.value.toLowerCase() === "lf") { - options.newLine = ts.NewLineKind.LineFeed; - } - else { - throw new Error("Unknown option for newLine: " + setting.value); - } - break; - - case "comments": - options.removeComments = setting.value === "false"; - break; - - case "stripinternal": - options.stripInternal = setting.value === "true"; - - case "usecasesensitivefilenames": - useCaseSensitiveFileNames = setting.value === "true"; - break; - - case "filename": - // Not supported yet - break; - - case "emitbom": - options.emitBOM = setting.value === "true"; - break; - - case "errortruncation": - options.noErrorTruncation = setting.value === "false"; - break; - - case "preserveconstenums": - options.preserveConstEnums = setting.value === "true"; - break; - - case "isolatedmodules": - options.isolatedModules = setting.value === "true"; - break; - - case "suppressexcesspropertyerrors": - options.suppressExcessPropertyErrors = setting.value === "true"; - break; - - case "suppressimplicitanyindexerrors": - options.suppressImplicitAnyIndexErrors = setting.value === "true"; - break; - - case "includebuiltfile": - let builtFileName = libFolder + setting.value; - includeBuiltFiles.push({ unitName: builtFileName, content: normalizeLineEndings(IO.readFile(builtFileName), newLine) }); - break; - - case "inlinesourcemap": - options.inlineSourceMap = setting.value === "true"; - break; - - case "inlinesources": - options.inlineSources = setting.value === "true"; - break; - - case "jsx": - options.jsx = setting.value.toLowerCase() === "react" ? ts.JsxEmit.React : - setting.value.toLowerCase() === "preserve" ? ts.JsxEmit.Preserve : - ts.JsxEmit.None; - break; - - default: - throw new Error("Unsupported compiler setting " + setting.flag); - } - } } public compileDeclarationFiles(inputFiles: { unitName: string; content: string; }[], @@ -1356,12 +1241,12 @@ module Harness { .filter(s => s.length > 0) .map(s => "!!! " + ts.DiagnosticCategory[error.category].toLowerCase() + " TS" + error.code + ": " + s); errLines.forEach(e => outputLines.push(e)); - + // do not count errors from lib.d.ts here, they are computed separately as numLibraryDiagnostics // if lib.d.ts is explicitly included in input files and there are some errors in it (i.e. because of duplicate identifiers) // then they will be added twice thus triggering 'total errors' assertion with condition // 'totalErrorsReportedInNonLibraryFiles + numLibraryDiagnostics + numTest262HarnessDiagnostics, diagnostics.length - + if (!error.file || !isLibraryFile(error.file.fileName)) { totalErrorsReportedInNonLibraryFiles++; } @@ -1405,7 +1290,8 @@ module Harness { // On the last line of the file, fake the next line start number so that we handle errors on the last character of the file correctly if (lineIndex === lines.length - 1) { nextLineStart = inputFile.content.length; - } else { + } + else { nextLineStart = lineStarts[lineIndex + 1]; } // Emit this line from the original file @@ -1469,7 +1355,7 @@ module Harness { // FileName header + content result += "/*====== " + outputFile.fileName + " ======*/\r\n"; - + result += outputFile.code; } @@ -1569,11 +1455,10 @@ module Harness { } } - export module TestCaseParser { + export namespace TestCaseParser { /** all the necessary information to set the right compiler settings */ - export interface CompilerSetting { - flag: string; - value: string; + export interface CompilerSettings { + [name: string]: string; } /** All the necessary information to turn a multi file test into useful units for later compilation */ @@ -1588,30 +1473,19 @@ module Harness { // Regex for parsing options in the format "@Alpha: Value of any sort" let optionRegex = /^[\/]{2}\s*@(\w+)\s*:\s*(\S*)/gm; // multiple matches on multiple lines - // List of allowed metadata names - let fileMetadataNames = ["filename", "comments", "declaration", "module", - "nolib", "sourcemap", "target", "out", "outdir", "noemithelpers", "noemitonerror", - "noimplicitany", "noresolve", "newline", "normalizenewline", "emitbom", - "errortruncation", "usecasesensitivefilenames", "preserveconstenums", - "includebuiltfile", "suppressexcesspropertyerrors", "suppressimplicitanyindexerrors", "stripinternal", - "isolatedmodules", "inlinesourcemap", "maproot", "sourceroot", - "inlinesources", "emitdecoratormetadata", "experimentaldecorators", - "skipdefaultlibcheck", "jsx"]; - - function extractCompilerSettings(content: string): CompilerSetting[] { - - let opts: CompilerSetting[] = []; + function extractCompilerSettings(content: string): CompilerSettings { + let opts: CompilerSettings = {}; let match: RegExpExecArray; while ((match = optionRegex.exec(content)) != null) { - opts.push({ flag: match[1], value: match[2] }); + opts[match[1]] = match[2]; } return opts; } /** Given a test file containing // @FileName directives, return an array of named units of code to be added to an existing compiler instance */ - export function makeUnitsFromTest(code: string, fileName: string): { settings: CompilerSetting[]; testUnitData: TestUnitData[]; } { + export function makeUnitsFromTest(code: string, fileName: string): { settings: CompilerSettings; testUnitData: TestUnitData[]; } { let settings = extractCompilerSettings(code); // List of all the subfiles we've parsed out @@ -1634,7 +1508,8 @@ module Harness { let metaDataName = testMetaData[1].toLowerCase(); if (metaDataName === "filename") { currentFileOptions[testMetaData[1]] = testMetaData[2]; - } else { + } + else { continue; } @@ -1655,16 +1530,19 @@ module Harness { currentFileOptions = {}; currentFileName = testMetaData[2]; refs = []; - } else { + } + else { // First metadata marker in the file currentFileName = testMetaData[2]; } - } else { + } + else { // Subfile content line // Append to the current subfile content, inserting a newline needed if (currentFileContent === null) { currentFileContent = ""; - } else { + } + else { // End-of-line currentFileContent = currentFileContent + "\n"; } @@ -1690,7 +1568,7 @@ module Harness { } /** Support class for baseline files */ - export module Baseline { + export namespace Baseline { export interface BaselineOptions { Subfolder?: string; @@ -1718,7 +1596,8 @@ module Harness { function baselinePath(fileName: string, type: string, baselineFolder: string, subfolder?: string) { if (subfolder !== undefined) { return Harness.userSpecifiedRoot + baselineFolder + "/" + subfolder + "/" + type + "/" + fileName; - } else { + } + else { return Harness.userSpecifiedRoot + baselineFolder + "/" + type + "/" + fileName; } } @@ -1810,7 +1689,8 @@ module Harness { actual = generateActual(actualFileName, generateContent); let comparison = compareToBaseline(actual, relativeFileName, opts); writeComparison(comparison.expected, comparison.actual, relativeFileName, actualFileName, descriptionForDescribe); - } else { + } + else { actual = generateActual(actualFileName, generateContent); let comparison = compareToBaseline(actual, relativeFileName, opts); diff --git a/src/harness/harnessLanguageService.ts b/src/harness/harnessLanguageService.ts index f228bc862d8..dfde2bd1c08 100644 --- a/src/harness/harnessLanguageService.ts +++ b/src/harness/harnessLanguageService.ts @@ -3,11 +3,11 @@ /// /// -module Harness.LanguageService { +namespace Harness.LanguageService { export class ScriptInfo { public version: number = 1; public editRanges: { length: number; textChangeRange: ts.TextChangeRange; }[] = []; - public lineMap: number[] = null; + public lineMap: number[] = undefined; constructor(public fileName: string, public content: string) { this.setContent(content); @@ -95,8 +95,8 @@ module Harness.LanguageService { let oldShim = oldScript; let range = this.scriptSnapshot.getChangeRange(oldShim.scriptSnapshot); - if (range === null) { - return null; + if (range === undefined) { + return undefined; } return JSON.stringify({ span: { start: range.span.start, length: range.span.length }, newLength: range.newLength }); @@ -118,11 +118,11 @@ module Harness.LanguageService { getPreProcessedFileInfo(fileName: string, fileContents: string): ts.PreProcessedFileInfo; } - export class LanguageServiceAdapterHost { + export class LanguageServiceAdapterHost { protected fileNameToScript: ts.Map = {}; - + constructor(protected cancellationToken = DefaultHostCancellationToken.Instance, - protected settings = ts.getDefaultCompilerOptions()) { + protected settings = ts.getDefaultCompilerOptions()) { } public getNewLine(): string { @@ -145,7 +145,7 @@ module Harness.LanguageService { public editScript(fileName: string, start: number, end: number, newText: string) { let script = this.getScriptInfo(fileName); - if (script !== null) { + if (script !== undefined) { script.editContent(start, end, newText); return; } @@ -169,7 +169,7 @@ module Harness.LanguageService { } /// Native adapter - class NativeLanguageServiceHost extends LanguageServiceAdapterHost implements ts.LanguageServiceHost { + class NativeLanguageServiceHost extends LanguageServiceAdapterHost implements ts.LanguageServiceHost { getCompilationSettings() { return this.settings; } getCancellationToken() { return this.cancellationToken; } getCurrentDirectory(): string { return ""; } @@ -191,7 +191,7 @@ module Harness.LanguageService { export class NativeLanugageServiceAdapter implements LanguageServiceAdapter { private host: NativeLanguageServiceHost; - constructor(cancellationToken?: ts.HostCancellationToken, options?: ts.CompilerOptions) { + constructor(cancellationToken?: ts.HostCancellationToken, options?: ts.CompilerOptions) { this.host = new NativeLanguageServiceHost(cancellationToken, options); } getHost() { return this.host; } @@ -204,14 +204,14 @@ module Harness.LanguageService { class ShimLanguageServiceHost extends LanguageServiceAdapterHost implements ts.LanguageServiceShimHost, ts.CoreServicesShimHost { private nativeHost: NativeLanguageServiceHost; - public getModuleResolutionsForFile: (fileName: string)=> string; + public getModuleResolutionsForFile: (fileName: string) => string; constructor(preprocessToResolve: boolean, cancellationToken?: ts.HostCancellationToken, options?: ts.CompilerOptions) { super(cancellationToken, options); this.nativeHost = new NativeLanguageServiceHost(cancellationToken, options); if (preprocessToResolve) { - let compilerOptions = this.nativeHost.getCompilationSettings() + let compilerOptions = this.nativeHost.getCompilationSettings(); let moduleResolutionHost: ts.ModuleResolutionHost = { fileExists: fileName => this.getScriptInfo(fileName) !== undefined, readFile: fileName => { @@ -225,12 +225,12 @@ module Harness.LanguageService { let imports: ts.Map = {}; for (let module of preprocessInfo.importedFiles) { let resolutionInfo = ts.resolveModuleName(module.fileName, fileName, compilerOptions, moduleResolutionHost); - if (resolutionInfo.resolvedFileName) { - imports[module.fileName] = resolutionInfo.resolvedFileName; + if (resolutionInfo.resolvedModule) { + imports[module.fileName] = resolutionInfo.resolvedModule.resolvedFileName; } } return JSON.stringify(imports); - } + }; } } @@ -247,7 +247,7 @@ module Harness.LanguageService { getScriptFileNames(): string { return JSON.stringify(this.nativeHost.getScriptFileNames()); } getScriptSnapshot(fileName: string): ts.ScriptSnapshotShim { let nativeScriptSnapshot = this.nativeHost.getScriptSnapshot(fileName); - return nativeScriptSnapshot && new ScriptSnapshotProxy(nativeScriptSnapshot); + return nativeScriptSnapshot && new ScriptSnapshotProxy(nativeScriptSnapshot); } getScriptVersion(fileName: string): string { return this.nativeHost.getScriptVersion(fileName); } getLocalizedDiagnosticMessages(): string { return JSON.stringify({}); } @@ -255,17 +255,17 @@ module Harness.LanguageService { readDirectory(rootDir: string, extension: string): string { throw new Error("NYI"); } - fileExists(fileName: string) { return this.getScriptInfo(fileName) !== undefined; } - readFile(fileName: string) { + fileExists(fileName: string) { return this.getScriptInfo(fileName) !== undefined; } + readFile(fileName: string) { let snapshot = this.nativeHost.getScriptSnapshot(fileName); return snapshot && snapshot.getText(0, snapshot.getLength()); - } + } log(s: string): void { this.nativeHost.log(s); } trace(s: string): void { this.nativeHost.trace(s); } error(s: string): void { this.nativeHost.error(s); } } - class ClassifierShimProxy implements ts.Classifier { + class ClassifierShimProxy implements ts.Classifier { constructor(private shim: ts.ClassifierShim) { } getEncodedLexicalClassifications(text: string, lexState: ts.EndOfLineState, classifyKeywordsInGenerics?: boolean): ts.Classifications { @@ -302,7 +302,7 @@ module Harness.LanguageService { if (parsedResult.error) { throw new Error("Language Service Shim Error: " + JSON.stringify(parsedResult.error)); } - else if (parsedResult.canceled) { + else if (parsedResult.canceled) { throw new ts.OperationCanceledException(); } return parsedResult.result; @@ -369,7 +369,7 @@ module Harness.LanguageService { getDefinitionAtPosition(fileName: string, position: number): ts.DefinitionInfo[] { return unwrapJSONCallResult(this.shim.getDefinitionAtPosition(fileName, position)); } - getTypeDefinitionAtPosition(fileName: string, position: number): ts.DefinitionInfo[]{ + getTypeDefinitionAtPosition(fileName: string, position: number): ts.DefinitionInfo[] { return unwrapJSONCallResult(this.shim.getTypeDefinitionAtPosition(fileName, position)); } getReferencesAtPosition(fileName: string, position: number): ts.ReferenceEntry[] { @@ -474,19 +474,19 @@ module Harness.LanguageService { } // Server adapter - class SessionClientHost extends NativeLanguageServiceHost implements ts.server.SessionClientHost { + class SessionClientHost extends NativeLanguageServiceHost implements ts.server.SessionClientHost { private client: ts.server.SessionClient; constructor(cancellationToken: ts.HostCancellationToken, settings: ts.CompilerOptions) { super(cancellationToken, settings); } - onMessage(message: string): void { - + onMessage(message: string): void { + } - writeMessage(message: string): void { - + writeMessage(message: string): void { + } setClient(client: ts.server.SessionClient) { @@ -504,7 +504,7 @@ module Harness.LanguageService { } } - class SessionServerHost implements ts.server.ServerHost, ts.server.Logger { + class SessionServerHost implements ts.server.ServerHost, ts.server.Logger { args: string[] = []; newLine: string; useCaseSensitiveFileNames: boolean = false; @@ -513,23 +513,23 @@ module Harness.LanguageService { this.newLine = this.host.getNewLine(); } - onMessage(message: string): void { - + onMessage(message: string): void { + } writeMessage(message: string): void { } - write(message: string): void { + write(message: string): void { this.writeMessage(message); } readFile(fileName: string): string { - if (fileName.indexOf(Harness.Compiler.defaultLibFileName) >= 0) { + if (fileName.indexOf(Harness.Compiler.defaultLibFileName) >= 0) { fileName = Harness.Compiler.defaultLibFileName; } - + let snapshot = this.host.getScriptSnapshot(fileName); return snapshot && snapshot.getText(0, snapshot.getLength()); } @@ -567,8 +567,8 @@ module Harness.LanguageService { readDirectory(path: string, extension?: string): string[] { throw new Error("Not implemented Yet."); } - - watchFile(fileName: string, callback: (fileName: string) => void): ts.FileWatcher { + + watchFile(fileName: string, callback: (fileName: string) => void): ts.FileWatcher { return { close() { } }; } @@ -582,7 +582,7 @@ module Harness.LanguageService { msg(message: string) { return this.host.log(message); } - + loggingEnabled() { return true; } @@ -602,7 +602,7 @@ module Harness.LanguageService { startGroup(): void { } } - + export class ServerLanugageServiceAdapter implements LanguageServiceAdapter { private host: SessionClientHost; private client: ts.server.SessionClient; diff --git a/src/harness/instrumenter.ts b/src/harness/instrumenter.ts index 1c9b9af78d2..b1b1750b8a8 100644 --- a/src/harness/instrumenter.ts +++ b/src/harness/instrumenter.ts @@ -3,11 +3,15 @@ var fs: any = require('fs'); var path: any = require('path'); function instrumentForRecording(fn: string, tscPath: string) { - instrument(tscPath, 'ts.sys = Playback.wrapSystem(ts.sys); ts.sys.startRecord("' + fn + '");', 'ts.sys.endRecord();'); + instrument(tscPath, ` +ts.sys = Playback.wrapSystem(ts.sys); +ts.sys.startRecord("${ fn }");`, `ts.sys.endRecord();`); } function instrumentForReplay(logFilename: string, tscPath: string) { - instrument(tscPath, 'ts.sys = Playback.wrapSystem(ts.sys); ts.sys.startReplay("' + logFilename + '");'); + instrument(tscPath, ` +ts.sys = Playback.wrapSystem(ts.sys); +ts.sys.startReplay("${ logFilename }");`); } function instrument(tscPath: string, prepareCode: string, cleanupCode: string = '') { diff --git a/src/harness/loggedIO.ts b/src/harness/loggedIO.ts index 5a572e220b3..d60756edf19 100644 --- a/src/harness/loggedIO.ts +++ b/src/harness/loggedIO.ts @@ -1,6 +1,7 @@ /// /// /// +/* tslint:disable:no-null */ interface FileInformation { contents: string; @@ -59,6 +60,12 @@ interface IOLog { path: string; result?: string; }[]; + directoriesRead: { + path: string, + extension: string, + exclude: string[], + result: string[] + }[]; } interface PlaybackControl { @@ -70,7 +77,7 @@ interface PlaybackControl { endRecord(): void; } -module Playback { +namespace Playback { let recordLog: IOLog = undefined; let replayLog: IOLog = undefined; let recordLogFileNameBase = ""; @@ -89,18 +96,21 @@ module Playback { run.reset = () => { lookup = null; }; - + return run; } export interface PlaybackIO extends Harness.IO, PlaybackControl { } + export interface PlaybackSystem extends ts.System, PlaybackControl { } + function createEmptyLog(): IOLog { return { timestamp: (new Date()).toString(), arguments: [], currentDirectory: "", filesRead: [], + directoriesRead: [], filesWritten: [], filesDeleted: [], filesAppended: [], @@ -114,8 +124,10 @@ module Playback { }; } - function initWrapper(wrapper: PlaybackControl, underlying: T) { - Object.keys(underlying).forEach(prop => { + function initWrapper(wrapper: PlaybackSystem, underlying: ts.System): void; + function initWrapper(wrapper: PlaybackIO, underlying: Harness.IO): void; + function initWrapper(wrapper: PlaybackSystem | PlaybackIO, underlying: ts.System | Harness.IO): void { + ts.forEach(Object.keys(underlying), prop => { (wrapper)[prop] = (underlying)[prop]; }); @@ -135,6 +147,93 @@ module Playback { wrapper.startRecord = (fileNameBase) => { recordLogFileNameBase = fileNameBase; recordLog = createEmptyLog(); + + if (typeof underlying.args !== "function") { + recordLog.arguments = underlying.args; + } + }; + + wrapper.startReplayFromFile = logFn => { + wrapper.startReplayFromString(underlying.readFile(logFn)); + }; + wrapper.endRecord = () => { + if (recordLog !== undefined) { + let i = 0; + let fn = () => recordLogFileNameBase + i + ".json"; + while (underlying.fileExists(fn())) i++; + underlying.writeFile(fn(), JSON.stringify(recordLog)); + recordLog = undefined; + } + }; + + wrapper.fileExists = recordReplay(wrapper.fileExists, underlying)( + path => callAndRecord(underlying.fileExists(path), recordLog.fileExists, { path }), + memoize(path => { + // If we read from the file, it must exist + if (findResultByPath(wrapper, replayLog.filesRead, path, null) !== null) { + return true; + } + else { + return findResultByFields(replayLog.fileExists, { path }, false); + } + }) + ); + + wrapper.getExecutingFilePath = () => { + if (replayLog !== undefined) { + return replayLog.executingPath; + } + else if (recordLog !== undefined) { + return recordLog.executingPath = underlying.getExecutingFilePath(); + } + else { + return underlying.getExecutingFilePath(); + } + }; + + wrapper.getCurrentDirectory = () => { + if (replayLog !== undefined) { + return replayLog.currentDirectory || ""; + } + else if (recordLog !== undefined) { + return recordLog.currentDirectory = underlying.getCurrentDirectory(); + } + else { + return underlying.getCurrentDirectory(); + } + }; + + wrapper.resolvePath = recordReplay(wrapper.resolvePath, underlying)( + path => callAndRecord(underlying.resolvePath(path), recordLog.pathsResolved, { path }), + memoize(path => findResultByFields(replayLog.pathsResolved, { path }, !ts.isRootedDiskPath(ts.normalizeSlashes(path)) && replayLog.currentDirectory ? replayLog.currentDirectory + "/" + path : ts.normalizeSlashes(path)))); + + wrapper.readFile = recordReplay(wrapper.readFile, underlying)( + path => { + let result = underlying.readFile(path); + let logEntry = { path, codepage: 0, result: { contents: result, codepage: 0 } }; + recordLog.filesRead.push(logEntry); + return result; + }, + memoize(path => findResultByPath(wrapper, replayLog.filesRead, path).contents)); + + wrapper.readDirectory = recordReplay(wrapper.readDirectory, underlying)( + (path, extension, exclude) => { + let result = (underlying).readDirectory(path, extension, exclude); + let logEntry = { path, extension, exclude, result }; + recordLog.directoriesRead.push(logEntry); + return result; + }, + (path, extension, exclude) => findResultByPath(wrapper, replayLog.directoriesRead.filter(d => d.extension === extension && ts.arrayIsEqualTo(d.exclude, exclude)), path)); + + wrapper.writeFile = recordReplay(wrapper.writeFile, underlying)( + (path, contents) => callAndRecord(underlying.writeFile(path, contents), recordLog.filesWritten, { path, contents, bom: false }), + (path, contents) => noOpReplay("writeFile")); + + wrapper.exit = (exitCode) => { + if (recordLog !== undefined) { + wrapper.endRecord(); + } + underlying.exit(exitCode); }; } @@ -143,9 +242,11 @@ module Playback { return (function () { if (replayLog !== undefined) { return replay.apply(undefined, arguments); - } else if (recordLog !== undefined) { + } + else if (recordLog !== undefined) { return record.apply(undefined, arguments); - } else { + } + else { return original.apply(underlying, arguments); } }); @@ -169,7 +270,8 @@ module Playback { if (results.length === 0) { if (defaultValue !== undefined) { return defaultValue; - } else { + } + else { throw new Error("No matching result in log array for: " + JSON.stringify(expectedFields)); } } @@ -177,7 +279,7 @@ module Playback { } function findResultByPath(wrapper: { resolvePath(s: string): string }, logArray: { path: string; result?: T }[], expectedPath: string, defaultValue?: T): T { - let normalizedName = ts.normalizeSlashes(expectedPath).toLowerCase(); + let normalizedName = ts.normalizePath(expectedPath).toLowerCase(); // Try to find the result through normal fileName for (let i = 0; i < logArray.length; i++) { if (ts.normalizeSlashes(logArray[i].path).toLowerCase() === normalizedName) { @@ -193,10 +295,12 @@ module Playback { } } } + // If we got here, we didn't find a match if (defaultValue === undefined) { throw new Error("No matching result in log array for path: " + expectedPath); - } else { + } + else { return defaultValue; } } @@ -214,7 +318,8 @@ module Playback { } if (pathEquivCache.hasOwnProperty(key)) { return pathEquivCache[key]; - } else { + } + else { return pathEquivCache[key] = check(); } } @@ -227,93 +332,18 @@ module Playback { let wrapper: PlaybackIO = {}; initWrapper(wrapper, underlying); - wrapper.startReplayFromFile = logFn => { - wrapper.startReplayFromString(underlying.readFile(logFn)); - }; - wrapper.endRecord = () => { - if (recordLog !== undefined) { - let i = 0; - let fn = () => recordLogFileNameBase + i + ".json"; - while (underlying.fileExists(fn())) i++; - underlying.writeFile(fn(), JSON.stringify(recordLog)); - recordLog = undefined; - } - }; - - wrapper.args = () => { - if (replayLog !== undefined) { - return replayLog.arguments; - } else if (recordLog !== undefined) { - recordLog.arguments = underlying.args(); - } - return underlying.args(); - } - - wrapper.newLine = () => underlying.newLine(); - wrapper.useCaseSensitiveFileNames = () => underlying.useCaseSensitiveFileNames(); wrapper.directoryName = (path): string => { throw new Error("NotSupported"); }; - wrapper.createDirectory = path => { throw new Error("NotSupported"); }; + wrapper.createDirectory = (path): void => { throw new Error("NotSupported"); }; wrapper.directoryExists = (path): boolean => { throw new Error("NotSupported"); }; - wrapper.deleteFile = path => { throw new Error("NotSupported"); }; + wrapper.deleteFile = (path): void => { throw new Error("NotSupported"); }; wrapper.listFiles = (path, filter, options): string[] => { throw new Error("NotSupported"); }; - wrapper.log = text => underlying.log(text); - - wrapper.fileExists = recordReplay(wrapper.fileExists, underlying)( - (path) => callAndRecord(underlying.fileExists(path), recordLog.fileExists, { path: path }), - memoize((path) => { - // If we read from the file, it must exist - if (findResultByPath(wrapper, replayLog.filesRead, path, null) !== null) { - return true; - } else { - return findResultByFields(replayLog.fileExists, { path: path }, false); - } - }) - ); - - wrapper.getExecutingFilePath = () => { - if (replayLog !== undefined) { - return replayLog.executingPath; - } else if (recordLog !== undefined) { - return recordLog.executingPath = underlying.getExecutingFilePath(); - } else { - return underlying.getExecutingFilePath(); - } - }; - - wrapper.getCurrentDirectory = () => { - if (replayLog !== undefined) { - return replayLog.currentDirectory || ""; - } else if (recordLog !== undefined) { - return recordLog.currentDirectory = underlying.getCurrentDirectory(); - } else { - return underlying.getCurrentDirectory(); - } - }; - - wrapper.resolvePath = recordReplay(wrapper.resolvePath, underlying)( - (path) => callAndRecord(underlying.resolvePath(path), recordLog.pathsResolved, { path: path }), - memoize((path) => findResultByFields(replayLog.pathsResolved, { path: path }, !ts.isRootedDiskPath(ts.normalizeSlashes(path)) && replayLog.currentDirectory ? replayLog.currentDirectory + "/" + path : ts.normalizeSlashes(path)))); - - wrapper.readFile = recordReplay(wrapper.readFile, underlying)( - (path) => { - let result = underlying.readFile(path); - let logEntry = { path: path, codepage: 0, result: { contents: result, codepage: 0 } }; - recordLog.filesRead.push(logEntry); - return result; - }, - memoize((path) => findResultByPath(wrapper, replayLog.filesRead, path).contents)); - - wrapper.writeFile = recordReplay(wrapper.writeFile, underlying)( - (path, contents) => callAndRecord(underlying.writeFile(path, contents), recordLog.filesWritten, { path: path, contents: contents, bom: false }), - (path, contents) => noOpReplay("writeFile")); - - wrapper.exit = (exitCode) => { - if (recordLog !== undefined) { - wrapper.endRecord(); - } - underlying.exit(exitCode); - }; return wrapper; } + + export function wrapSystem(underlying: ts.System): PlaybackSystem { + let wrapper: PlaybackSystem = {}; + initWrapper(wrapper, underlying); + return wrapper; + } } \ No newline at end of file diff --git a/src/harness/projectsRunner.ts b/src/harness/projectsRunner.ts index fe4ab8ea8ea..862e446352d 100644 --- a/src/harness/projectsRunner.ts +++ b/src/harness/projectsRunner.ts @@ -1,5 +1,6 @@ /// /// +/* tslint:disable:no-null */ // Test case is json of below type in tests/cases/project/ interface ProjectRunnerTestCase { @@ -199,7 +200,7 @@ class ProjectRunner extends RunnerBase { } } - function batchCompilerProjectTestCase(moduleKind: ts.ModuleKind): BatchCompileProjectTestCaseResult{ + function batchCompilerProjectTestCase(moduleKind: ts.ModuleKind): BatchCompileProjectTestCaseResult { let nonSubfolderDiskFiles = 0; let outputFiles: BatchCompileProjectTestCaseEmittedFile[] = []; @@ -300,7 +301,7 @@ class ProjectRunner extends RunnerBase { allInputFiles.unshift(findOutpuDtsFile(outputDtsFileName)); } else { - let outputDtsFileName = ts.removeFileExtension(compilerOptions.outFile|| compilerOptions.out) + ".d.ts"; + let outputDtsFileName = ts.removeFileExtension(compilerOptions.outFile || compilerOptions.out) + ".d.ts"; let outputDtsFile = findOutpuDtsFile(outputDtsFileName); if (!ts.contains(allInputFiles, outputDtsFile)) { allInputFiles.unshift(outputDtsFile); diff --git a/src/harness/runner.ts b/src/harness/runner.ts index 822fcdebe8c..366355520a2 100644 --- a/src/harness/runner.ts +++ b/src/harness/runner.ts @@ -20,8 +20,10 @@ /// /// +/* tslint:disable:no-null */ + let runners: RunnerBase[] = []; -let iterations: number = 1; +let iterations = 1; function runTests(runners: RunnerBase[]) { for (let i = iterations; i > 0; i--) { @@ -68,10 +70,10 @@ if (testConfigFile !== "") { case "fourslash-shims": runners.push(new FourSlashRunner(FourSlashTestType.Shims)); break; - case 'fourslash-shims-pp': + case "fourslash-shims-pp": runners.push(new FourSlashRunner(FourSlashTestType.ShimsWithPreprocess)); break; - case 'fourslash-server': + case "fourslash-server": runners.push(new FourSlashRunner(FourSlashTestType.Server)); break; case "fourslash-generated": diff --git a/src/harness/runnerbase.ts b/src/harness/runnerbase.ts index afe757ea829..7469325475a 100644 --- a/src/harness/runnerbase.ts +++ b/src/harness/runnerbase.ts @@ -25,12 +25,12 @@ abstract class RunnerBase { let fixedPath = path; // full paths either start with a drive letter or / for *nix, shouldn't have \ in the path at this point - let fullPath = /(\w+:|\/)?([\w+\-\.]|\/)*\.tsx?/g; + let fullPath = /(\w+:|\/)?([\w+\-\.]|\/)*\.tsx?/g; let fullPathList = fixedPath.match(fullPath); if (fullPathList) { fullPathList.forEach((match: string) => fixedPath = fixedPath.replace(match, Harness.Path.getFileName(match))); } - + // when running in the browser the 'full path' is the host name, shows up in error baselines let localHost = /http:\/localhost:\d+/g; fixedPath = fixedPath.replace(localHost, ""); diff --git a/src/harness/rwcRunner.ts b/src/harness/rwcRunner.ts index a1aaeed3d55..3027afae9dc 100644 --- a/src/harness/rwcRunner.ts +++ b/src/harness/rwcRunner.ts @@ -2,8 +2,9 @@ /// /// /// +/* tslint:disable:no-null */ -module RWC { +namespace RWC { function runWithIOLog(ioLog: IOLog, fn: (oldIO: Harness.IO) => void) { let oldIO = Harness.IO; @@ -19,6 +20,11 @@ module RWC { } } + function isTsConfigFile(file: { path: string }): boolean { + const tsConfigFileName = "tsconfig.json"; + return file.path.substr(file.path.length - tsConfigFileName.length).toLowerCase() === tsConfigFileName; + } + export function runRWCTest(jsonPath: string) { describe("Testing a RWC project: " + jsonPath, () => { let inputFiles: { unitName: string; content: string; }[] = []; @@ -67,10 +73,21 @@ module RWC { runWithIOLog(ioLog, oldIO => { harnessCompiler.reset(); + let fileNames = opts.fileNames; + + let tsconfigFile = ts.forEach(ioLog.filesRead, f => isTsConfigFile(f) ? f : undefined); + if (tsconfigFile) { + let tsconfigFileContents = getHarnessCompilerInputUnit(tsconfigFile.path); + let parsedTsconfigFileContents = ts.parseConfigFileText(tsconfigFile.path, tsconfigFileContents.content); + let configParseResult = ts.parseConfigFile(parsedTsconfigFileContents.config, Harness.IO, ts.getDirectoryPath(tsconfigFile.path)); + fileNames = configParseResult.fileNames; + opts.options = ts.extend(opts.options, configParseResult.options); + } + // Load the files - ts.forEach(opts.fileNames, fileName => { + for (let fileName of fileNames) { inputFiles.push(getHarnessCompilerInputUnit(fileName)); - }); + } // Add files to compilation let isInInputList = (resolvedPath: string) => (inputFile: { unitName: string; content: string; }) => inputFile.unitName === resolvedPath; @@ -79,13 +96,17 @@ module RWC { const resolvedPath = ts.normalizeSlashes(Harness.IO.resolvePath(fileRead.path)); let inInputList = ts.forEach(inputFiles, isInInputList(resolvedPath)); + if (isTsConfigFile(fileRead)) { + continue; + } + if (!Harness.isLibraryFile(fileRead.path)) { if (inInputList) { continue; } otherFiles.push(getHarnessCompilerInputUnit(fileRead.path)); } - else if (!opts.options.noLib && Harness.isLibraryFile(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 diff --git a/src/harness/sourceMapRecorder.ts b/src/harness/sourceMapRecorder.ts index 55ca9ea9651..dcdc59a2a40 100644 --- a/src/harness/sourceMapRecorder.ts +++ b/src/harness/sourceMapRecorder.ts @@ -15,14 +15,14 @@ /// -module Harness.SourceMapRecoder { +namespace Harness.SourceMapRecoder { interface SourceMapSpanWithDecodeErrors { sourceMapSpan: ts.SourceMapSpan; decodeErrors: string[]; } - module SourceMapDecoder { + namespace SourceMapDecoder { let sourceMapMappings: string; let sourceMapNames: string[]; let decodingIndex: number; @@ -202,7 +202,7 @@ module Harness.SourceMapRecoder { } } - module SourceMapSpanWriter { + namespace SourceMapSpanWriter { let sourceMapRecoder: Compiler.WriterAggregator; let sourceMapSources: string[]; let sourceMapNames: string[]; @@ -442,7 +442,7 @@ module Harness.SourceMapRecoder { for (let i = 0; i < sourceMapDataList.length; i++) { let sourceMapData = sourceMapDataList[i]; - let prevSourceFile: ts.SourceFile = null; + let prevSourceFile: ts.SourceFile; SourceMapSpanWriter.intializeSourceMapSpanWriter(sourceMapRecoder, sourceMapData, jsFiles[i]); for (let j = 0; j < sourceMapData.sourceMapDecodedMappings.length; j++) { diff --git a/src/harness/test262Runner.ts b/src/harness/test262Runner.ts index d9bbd55e7a3..491c71a5839 100644 --- a/src/harness/test262Runner.ts +++ b/src/harness/test262Runner.ts @@ -1,5 +1,6 @@ /// /// +/* tslint:disable:no-null */ class Test262BaselineRunner extends RunnerBase { private static basePath = "internal/cases/test262"; diff --git a/src/lib/dom.generated.d.ts b/src/lib/dom.generated.d.ts index 90075a290a4..e34ce36633f 100644 --- a/src/lib/dom.generated.d.ts +++ b/src/lib/dom.generated.d.ts @@ -202,8 +202,8 @@ interface AnalyserNode extends AudioNode { smoothingTimeConstant: number; getByteFrequencyData(array: Uint8Array): void; getByteTimeDomainData(array: Uint8Array): void; - getFloatFrequencyData(array: any): void; - getFloatTimeDomainData(array: any): void; + getFloatFrequencyData(array: Float32Array): void; + getFloatTimeDomainData(array: Float32Array): void; } declare var AnalyserNode: { @@ -290,7 +290,7 @@ interface AudioBuffer { length: number; numberOfChannels: number; sampleRate: number; - getChannelData(channel: number): any; + getChannelData(channel: number): Float32Array; } declare var AudioBuffer: { @@ -334,7 +334,7 @@ interface AudioContext extends EventTarget { createMediaElementSource(mediaElement: HTMLMediaElement): MediaElementAudioSourceNode; createOscillator(): OscillatorNode; createPanner(): PannerNode; - createPeriodicWave(real: any, imag: any): PeriodicWave; + createPeriodicWave(real: Float32Array, imag: Float32Array): PeriodicWave; createScriptProcessor(bufferSize?: number, numberOfInputChannels?: number, numberOfOutputChannels?: number): ScriptProcessorNode; createStereoPanner(): StereoPannerNode; createWaveShaper(): WaveShaperNode; @@ -392,7 +392,7 @@ interface AudioParam { linearRampToValueAtTime(value: number, endTime: number): void; setTargetAtTime(target: number, startTime: number, timeConstant: number): void; setValueAtTime(value: number, startTime: number): void; - setValueCurveAtTime(values: any, startTime: number, duration: number): void; + setValueCurveAtTime(values: Float32Array, startTime: number, duration: number): void; } declare var AudioParam: { @@ -468,7 +468,7 @@ interface BiquadFilterNode extends AudioNode { frequency: AudioParam; gain: AudioParam; type: string; - getFrequencyResponse(frequencyHz: any, magResponse: any, phaseResponse: any): void; + getFrequencyResponse(frequencyHz: Float32Array, magResponse: Float32Array, phaseResponse: Float32Array): void; } declare var BiquadFilterNode: { @@ -10893,7 +10893,7 @@ declare var WEBGL_depth_texture: { } interface WaveShaperNode extends AudioNode { - curve: any; + curve: Float32Array; oversample: string; } @@ -11080,34 +11080,34 @@ interface WebGLRenderingContext { texSubImage2D(target: number, level: number, xoffset: number, yoffset: number, format: number, type: number, video: HTMLVideoElement): void; texSubImage2D(target: number, level: number, xoffset: number, yoffset: number, format: number, type: number, pixels: ImageData): void; uniform1f(location: WebGLUniformLocation, x: number): void; - uniform1fv(location: WebGLUniformLocation, v: any): void; + uniform1fv(location: WebGLUniformLocation, v: Float32Array): void; uniform1i(location: WebGLUniformLocation, x: number): void; uniform1iv(location: WebGLUniformLocation, v: Int32Array): void; uniform2f(location: WebGLUniformLocation, x: number, y: number): void; - uniform2fv(location: WebGLUniformLocation, v: any): void; + uniform2fv(location: WebGLUniformLocation, v: Float32Array): void; uniform2i(location: WebGLUniformLocation, x: number, y: number): void; uniform2iv(location: WebGLUniformLocation, v: Int32Array): void; uniform3f(location: WebGLUniformLocation, x: number, y: number, z: number): void; - uniform3fv(location: WebGLUniformLocation, v: any): void; + uniform3fv(location: WebGLUniformLocation, v: Float32Array): void; uniform3i(location: WebGLUniformLocation, x: number, y: number, z: number): void; uniform3iv(location: WebGLUniformLocation, v: Int32Array): void; uniform4f(location: WebGLUniformLocation, x: number, y: number, z: number, w: number): void; - uniform4fv(location: WebGLUniformLocation, v: any): void; + uniform4fv(location: WebGLUniformLocation, v: Float32Array): void; uniform4i(location: WebGLUniformLocation, x: number, y: number, z: number, w: number): void; uniform4iv(location: WebGLUniformLocation, v: Int32Array): void; - uniformMatrix2fv(location: WebGLUniformLocation, transpose: boolean, value: any): void; - uniformMatrix3fv(location: WebGLUniformLocation, transpose: boolean, value: any): void; - uniformMatrix4fv(location: WebGLUniformLocation, transpose: boolean, value: any): void; + uniformMatrix2fv(location: WebGLUniformLocation, transpose: boolean, value: Float32Array): void; + uniformMatrix3fv(location: WebGLUniformLocation, transpose: boolean, value: Float32Array): void; + uniformMatrix4fv(location: WebGLUniformLocation, transpose: boolean, value: Float32Array): void; useProgram(program: WebGLProgram): void; validateProgram(program: WebGLProgram): void; vertexAttrib1f(indx: number, x: number): void; - vertexAttrib1fv(indx: number, values: any): void; + vertexAttrib1fv(indx: number, values: Float32Array): void; vertexAttrib2f(indx: number, x: number, y: number): void; - vertexAttrib2fv(indx: number, values: any): void; + vertexAttrib2fv(indx: number, values: Float32Array): void; vertexAttrib3f(indx: number, x: number, y: number, z: number): void; - vertexAttrib3fv(indx: number, values: any): void; + vertexAttrib3fv(indx: number, values: Float32Array): void; vertexAttrib4f(indx: number, x: number, y: number, z: number, w: number): void; - vertexAttrib4fv(indx: number, values: any): void; + vertexAttrib4fv(indx: number, values: Float32Array): void; vertexAttribPointer(indx: number, size: number, type: number, normalized: boolean, stride: number, offset: number): void; viewport(x: number, y: number, width: number, height: number): void; ACTIVE_ATTRIBUTES: number; diff --git a/src/lib/es6.d.ts b/src/lib/es6.d.ts index c07d047b58e..e2b26747516 100644 --- a/src/lib/es6.d.ts +++ b/src/lib/es6.d.ts @@ -125,7 +125,34 @@ interface ObjectConstructor { * Copy the values of all of the enumerable own properties from one or more source objects to a * target object. Returns the target object. * @param target The target object to copy to. - * @param sources One or more source objects to copy properties from. + * @param source The source object from which to copy properties. + */ + assign(target: T, source: U): T & U; + + /** + * Copy the values of all of the enumerable own properties from one or more source objects to a + * target object. Returns the target object. + * @param target The target object to copy to. + * @param source1 The first source object from which to copy properties. + * @param source2 The second source object from which to copy properties. + */ + assign(target: T, source1: U, source2: V): T & U & V; + + /** + * Copy the values of all of the enumerable own properties from one or more source objects to a + * target object. Returns the target object. + * @param target The target object to copy to. + * @param source1 The first source object from which to copy properties. + * @param source2 The second source object from which to copy properties. + * @param source3 The third source object from which to copy properties. + */ + assign(target: T, source1: U, source2: V, source3: W): T & U & V & W; + + /** + * Copy the values of all of the enumerable own properties from one or more source objects to a + * target object. Returns the target object. + * @param target The target object to copy to. + * @param sources One or more source objects from which to copy properties */ assign(target: any, ...sources: any[]): any; diff --git a/src/lib/intl.d.ts b/src/lib/intl.d.ts index b5291306b87..53894587259 100644 --- a/src/lib/intl.d.ts +++ b/src/lib/intl.d.ts @@ -41,7 +41,7 @@ declare module Intl { currency?: string; currencyDisplay?: string; useGrouping?: boolean; - minimumintegerDigits?: number; + minimumIntegerDigits?: number; minimumFractionDigits?: number; maximumFractionDigits?: number; minimumSignificantDigits?: number; @@ -54,7 +54,7 @@ declare module Intl { style: string; currency?: string; currencyDisplay?: string; - minimumintegerDigits: number; + minimumIntegerDigits: number; minimumFractionDigits: number; maximumFractionDigits: number; minimumSignificantDigits?: number; diff --git a/src/lib/webworker.generated.d.ts b/src/lib/webworker.generated.d.ts index 9353047e9c6..f37ea5c6ed2 100644 --- a/src/lib/webworker.generated.d.ts +++ b/src/lib/webworker.generated.d.ts @@ -17,7 +17,7 @@ interface AudioBuffer { length: number; numberOfChannels: number; sampleRate: number; - getChannelData(channel: number): any; + getChannelData(channel: number): Float32Array; } declare var AudioBuffer: { diff --git a/src/server/editorServices.ts b/src/server/editorServices.ts index 76bc586b8bb..7ab46fc689e 100644 --- a/src/server/editorServices.ts +++ b/src/server/editorServices.ts @@ -79,7 +79,7 @@ namespace ts.server { } } - interface TimestampedResolvedModule extends ResolvedModule { + interface TimestampedResolvedModule extends ResolvedModuleWithFailedLookupLocations { lastCheckTime: number; } @@ -99,11 +99,11 @@ namespace ts.server { } } - resolveModuleNames(moduleNames: string[], containingFile: string): string[] { + resolveModuleNames(moduleNames: string[], containingFile: string): ResolvedModule[] { let currentResolutionsInFile = this.resolvedModuleNames.get(containingFile); let newResolutions: Map = {}; - let resolvedFileNames: string[] = []; + let resolvedModules: ResolvedModule[] = []; let compilerOptions = this.getCompilationSettings(); @@ -119,25 +119,25 @@ namespace ts.server { else { resolution = resolveModuleName(moduleName, containingFile, compilerOptions, this.moduleResolutionHost); resolution.lastCheckTime = Date.now(); - newResolutions[moduleName] = resolution; + newResolutions[moduleName] = resolution; } } ts.Debug.assert(resolution !== undefined); - resolvedFileNames.push(resolution.resolvedFileName); + resolvedModules.push(resolution.resolvedModule); } // replace old results with a new one this.resolvedModuleNames.set(containingFile, newResolutions); - return resolvedFileNames; + return resolvedModules; function moduleResolutionIsValid(resolution: TimestampedResolvedModule): boolean { if (!resolution) { return false; } - if (resolution.resolvedFileName) { + if (resolution.resolvedModule) { // TODO: consider checking failedLookupLocations // TODO: use lastCheckTime to track expiration for module name resolution return true; diff --git a/src/server/server.ts b/src/server/server.ts index 843197b918a..c3942b01a39 100644 --- a/src/server/server.ts +++ b/src/server/server.ts @@ -11,7 +11,7 @@ namespace ts.server { input: process.stdin, output: process.stdout, terminal: false, - }); + }); class Logger implements ts.server.Logger { fd = -1; @@ -58,7 +58,7 @@ namespace ts.server { isVerbose() { return this.loggingEnabled() && (this.level == "verbose"); } - + msg(s: string, type = "Err") { if (this.fd < 0) { @@ -85,7 +85,7 @@ namespace ts.server { interface WatchedFile { fileName: string; - callback: (fileName: string) => void; + callback: (fileName: string, removed: boolean) => void; mtime: Date; } @@ -121,11 +121,11 @@ namespace ts.server { fs.stat(watchedFile.fileName,(err, stats) => { if (err) { - watchedFile.callback(watchedFile.fileName); + watchedFile.callback(watchedFile.fileName, /* removed */ false); } else if (watchedFile.mtime.getTime() !== stats.mtime.getTime()) { watchedFile.mtime = WatchedFileSet.getModifiedTime(watchedFile.fileName); - watchedFile.callback(watchedFile.fileName); + watchedFile.callback(watchedFile.fileName, watchedFile.mtime.getTime() === 0); } }); } @@ -153,7 +153,7 @@ namespace ts.server { }, this.interval); } - addFile(fileName: string, callback: (fileName: string) => void ): WatchedFile { + addFile(fileName: string, callback: (fileName: string, removed: boolean) => void ): WatchedFile { var file: WatchedFile = { fileName, callback, @@ -170,7 +170,7 @@ namespace ts.server { removeFile(file: WatchedFile) { this.watchedFiles = WatchedFileSet.copyListRemovingItem(file, this.watchedFiles); } - } + } class IOSession extends Session { constructor(host: ServerHost, logger: ts.server.Logger) { @@ -243,11 +243,11 @@ namespace ts.server { // TODO: check that this location is writable var logger = createLoggerFromEnv(); - + // REVIEW: for now this implementation uses polling. // The advantage of polling is that it works reliably // on all os and with network mounted files. - // For 90 referenced files, the average time to detect + // For 90 referenced files, the average time to detect // changes is 2*msInterval (by default 5 seconds). // The overhead of this is .04 percent (1/2500) with // average pause of < 1 millisecond (and max @@ -271,4 +271,4 @@ namespace ts.server { }); // Start listening ioSession.listen(); -} \ No newline at end of file +} diff --git a/src/services/formatting/formatting.ts b/src/services/formatting/formatting.ts index fad3ebe6e2b..4a7033c6f3e 100644 --- a/src/services/formatting/formatting.ts +++ b/src/services/formatting/formatting.ts @@ -325,7 +325,7 @@ namespace ts.formatting { let lastIndentedLine: number; let indentationOnLastIndentedLine: number; - + let edits: TextChange[] = []; formattingScanner.advance(); @@ -354,12 +354,12 @@ namespace ts.formatting { * If list element is in the range - its indentation will be equal * to inherited indentation from its predecessors. */ - function tryComputeIndentationForListItem(startPos: number, - endPos: number, - parentStartLine: number, - range: TextRange, + function tryComputeIndentationForListItem(startPos: number, + endPos: number, + parentStartLine: number, + range: TextRange, inheritedIndentation: number): number { - + if (rangeOverlapsWithStartEnd(range, startPos, endPos)) { if (inheritedIndentation !== Constants.Unknown) { return inheritedIndentation; @@ -376,7 +376,7 @@ namespace ts.formatting { return Constants.Unknown; } - + function computeIndentation( node: TextRangeWithKind, startLine: number, @@ -419,8 +419,8 @@ namespace ts.formatting { // if node is located on the same line with the parent // - inherit indentation from the parent // - push children if either parent of node itself has non-zero delta - indentation = startLine === lastIndentedLine - ? indentationOnLastIndentedLine + indentation = startLine === lastIndentedLine + ? indentationOnLastIndentedLine : parentDynamicIndentation.getIndentation(); delta = Math.min(options.IndentSize, parentDynamicIndentation.getDelta() + delta); } @@ -586,7 +586,7 @@ namespace ts.formatting { if (!rangeOverlapsWithStartEnd(originalRange, child.pos, child.end)) { return inheritedIndentation; } - + if (child.getFullWidth() === 0) { return inheritedIndentation; } @@ -624,8 +624,8 @@ namespace ts.formatting { return inheritedIndentation; } - function processChildNodes(nodes: NodeArray, - parent: Node, + function processChildNodes(nodes: NodeArray, + parent: Node, parentStartLine: number, parentDynamicIndentation: DynamicIndentation): void { @@ -751,7 +751,7 @@ namespace ts.formatting { // indent token only if is it is in target range and does not overlap with any error ranges if (tokenIndentation !== Constants.Unknown) { insertIndentation(currentTokenInfo.token.pos, tokenIndentation, lineAdded); - + lastIndentedLine = tokenStart.line; indentationOnLastIndentedLine = tokenIndentation; } @@ -772,12 +772,12 @@ namespace ts.formatting { } } - function processRange(range: TextRangeWithKind, - rangeStart: LineAndCharacter, - parent: Node, - contextNode: Node, + function processRange(range: TextRangeWithKind, + rangeStart: LineAndCharacter, + parent: Node, + contextNode: Node, dynamicIndentation: DynamicIndentation): boolean { - + let rangeHasError = rangeContainsError(range); let lineAdded: boolean; if (!rangeHasError && !previousRangeHasError) { @@ -787,7 +787,7 @@ namespace ts.formatting { trimTrailingWhitespacesForLines(originalStart.line, rangeStart.line); } else { - lineAdded = + lineAdded = processPair(range, rangeStart.line, parent, previousRange, previousRangeStartLine, previousParent, contextNode, dynamicIndentation) } } @@ -933,8 +933,8 @@ namespace ts.formatting { 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) { + // do not trim whitespaces in comments or template expression + if (range && (isComment(range.kind) || isStringOrRegularExpressionOrTemplateLiteral(range.kind)) && range.pos <= lineEndPosition && range.end > lineEndPosition) { continue; } diff --git a/src/services/formatting/formattingScanner.ts b/src/services/formatting/formattingScanner.ts index 6f6167d6ba9..58e2f304482 100644 --- a/src/services/formatting/formattingScanner.ts +++ b/src/services/formatting/formattingScanner.ts @@ -3,8 +3,14 @@ /* @internal */ namespace ts.formatting { - let scanner = createScanner(ScriptTarget.Latest, /*skipTrivia*/ false); - + const standardScanner = createScanner(ScriptTarget.Latest, /*skipTrivia*/ false, LanguageVariant.Standard); + const jsxScanner = createScanner(ScriptTarget.Latest, /*skipTrivia*/ false, LanguageVariant.JSX); + + /** + * Scanner that is currently used for formatting + */ + let scanner: Scanner; + export interface FormattingScanner { advance(): void; isOnToken(): boolean; @@ -22,6 +28,8 @@ namespace ts.formatting { } export function getFormattingScanner(sourceFile: SourceFile, startPos: number, endPos: number): FormattingScanner { + Debug.assert(scanner === undefined); + scanner = sourceFile.languageVariant === LanguageVariant.JSX ? jsxScanner : standardScanner; scanner.setText(sourceFile.text); scanner.setTextPos(startPos); @@ -40,12 +48,17 @@ namespace ts.formatting { isOnToken: isOnToken, lastTrailingTriviaWasNewLine: () => wasNewLine, close: () => { + Debug.assert(scanner !== undefined); + lastTokenInfo = undefined; scanner.setText(undefined); + scanner = undefined; } } function advance(): void { + Debug.assert(scanner !== undefined); + lastTokenInfo = undefined; let isStarted = scanner.getStartPos() !== startPos; @@ -138,6 +151,8 @@ namespace ts.formatting { } function readTokenInfo(n: Node): TokenInfo { + Debug.assert(scanner !== undefined); + if (!isOnToken()) { // scanner is not on the token (either advance was not called yet or scanner is already past the end position) return { @@ -245,6 +260,8 @@ namespace ts.formatting { } function isOnToken(): boolean { + Debug.assert(scanner !== undefined); + 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/smartIndenter.ts b/src/services/formatting/smartIndenter.ts index 8355fac03f5..8035c963cf3 100644 --- a/src/services/formatting/smartIndenter.ts +++ b/src/services/formatting/smartIndenter.ts @@ -19,13 +19,7 @@ namespace ts.formatting { } // no indentation in string \regex\template literals - let precedingTokenIsLiteral = - precedingToken.kind === SyntaxKind.StringLiteral || - precedingToken.kind === SyntaxKind.RegularExpressionLiteral || - precedingToken.kind === SyntaxKind.NoSubstitutionTemplateLiteral || - precedingToken.kind === SyntaxKind.TemplateHead || - precedingToken.kind === SyntaxKind.TemplateMiddle || - precedingToken.kind === SyntaxKind.TemplateTail; + let precedingTokenIsLiteral = isStringOrRegularExpressionOrTemplateLiteral(precedingToken.kind); if (precedingTokenIsLiteral && precedingToken.getStart(sourceFile) <= position && precedingToken.end > position) { return 0; } @@ -405,6 +399,7 @@ namespace ts.formatting { function nodeContentIsAlwaysIndented(kind: SyntaxKind): boolean { switch (kind) { + case SyntaxKind.ExpressionStatement: case SyntaxKind.ClassDeclaration: case SyntaxKind.ClassExpression: case SyntaxKind.InterfaceDeclaration: diff --git a/src/services/services.ts b/src/services/services.ts index d5ede917b8f..82fa9de5203 100644 --- a/src/services/services.ts +++ b/src/services/services.ts @@ -725,7 +725,7 @@ namespace ts { } getBaseTypes(): ObjectType[] { return this.flags & (TypeFlags.Class | TypeFlags.Interface) - ? this.checker.getBaseTypes(this) + ? this.checker.getBaseTypes(this) : undefined; } } @@ -802,7 +802,7 @@ namespace ts { public languageVariant: LanguageVariant; public identifiers: Map; public nameTable: Map; - public resolvedModules: Map; + public resolvedModules: Map; public imports: LiteralExpression[]; private namedDeclarations: Map; @@ -1022,7 +1022,7 @@ namespace ts { * if implementation is omitted then language service will use built-in module resolution logic and get answers to * host specific questions using 'getScriptSnapshot'. */ - resolveModuleNames?(moduleNames: string[], containingFile: string): string[]; + resolveModuleNames?(moduleNames: string[], containingFile: string): ResolvedModule[]; } // @@ -2152,6 +2152,7 @@ namespace ts { // // export * from "mod" // export {a as b} from "mod" + // export import i = require("mod") while (token !== SyntaxKind.EndOfFileToken) { if (token === SyntaxKind.DeclareKeyword) { @@ -2276,6 +2277,25 @@ namespace ts { } } } + else if (token === SyntaxKind.ImportKeyword) { + token = scanner.scan(); + if (token === SyntaxKind.Identifier || isKeyword(token)) { + token = scanner.scan(); + if (token === SyntaxKind.EqualsToken) { + token = scanner.scan(); + if (token === SyntaxKind.RequireKeyword) { + token = scanner.scan(); + if (token === SyntaxKind.OpenParenToken) { + token = scanner.scan(); + if (token === SyntaxKind.StringLiteral) { + // export import i = require("mod"); + recordModuleName(); + } + } + } + } + } + } } token = scanner.scan(); } @@ -3529,6 +3549,9 @@ namespace ts { if (parent && (parent.kind === SyntaxKind.JsxSelfClosingElement || parent.kind === SyntaxKind.JsxOpeningElement)) { return parent; } + else if (parent.kind === SyntaxKind.JsxAttribute) { + return parent.parent; + } break; // The context token is the closing } or " of an attribute, which means @@ -3639,9 +3662,9 @@ namespace ts { return containingNodeKind === SyntaxKind.Parameter; case SyntaxKind.AsKeyword: - containingNodeKind === SyntaxKind.ImportSpecifier || - containingNodeKind === SyntaxKind.ExportSpecifier || - containingNodeKind === SyntaxKind.NamespaceImport; + return containingNodeKind === SyntaxKind.ImportSpecifier || + containingNodeKind === SyntaxKind.ExportSpecifier || + containingNodeKind === SyntaxKind.NamespaceImport; case SyntaxKind.ClassKeyword: case SyntaxKind.EnumKeyword: @@ -6229,7 +6252,8 @@ namespace ts { } return node.parent.kind === SyntaxKind.TypeReference || - (node.parent.kind === SyntaxKind.ExpressionWithTypeArguments && !isExpressionWithTypeArgumentsInClassExtendsClause(node.parent)); + (node.parent.kind === SyntaxKind.ExpressionWithTypeArguments && !isExpressionWithTypeArgumentsInClassExtendsClause(node.parent)) || + node.kind === SyntaxKind.ThisKeyword && !isExpression(node); } function isNamespaceReference(node: Node): boolean { @@ -6977,8 +7001,12 @@ namespace ts { * Checks if position points to a valid position to add JSDoc comments, and if so, * returns the appropriate template. Otherwise returns an empty string. * Valid positions are - * - outside of comments, statements, and expressions, and - * - preceding a function declaration. + * - outside of comments, statements, and expressions, and + * - preceding a: + * - function/constructor/method declaration + * - class declarations + * - variable statements + * - namespace declarations * * Hosts should ideally check that: * - The line is all whitespace up to 'position' before performing the insertion. @@ -7005,16 +7033,37 @@ namespace ts { } // TODO: add support for: - // - methods - // - constructors - // - class decls - let containingFunction = getAncestor(tokenAtPos, SyntaxKind.FunctionDeclaration); + // - enums/enum members + // - interfaces + // - property declarations + // - potentially property assignments + let commentOwner: Node; + findOwner: for (commentOwner = tokenAtPos; commentOwner; commentOwner = commentOwner.parent) { + switch (commentOwner.kind) { + case SyntaxKind.FunctionDeclaration: + case SyntaxKind.MethodDeclaration: + case SyntaxKind.Constructor: + case SyntaxKind.ClassDeclaration: + case SyntaxKind.VariableStatement: + break findOwner; + case SyntaxKind.SourceFile: + return undefined; + case SyntaxKind.ModuleDeclaration: + // If in walking up the tree, we hit a a nested namespace declaration, + // then we must be somewhere within a dotted namespace name; however we don't + // want to give back a JSDoc template for the 'b' or 'c' in 'namespace a.b.c { }'. + if (commentOwner.parent.kind === SyntaxKind.ModuleDeclaration) { + return undefined; + } + break findOwner; + } + } - if (!containingFunction || containingFunction.getStart() < position) { + if (!commentOwner || commentOwner.getStart() < position) { return undefined; } - let parameters = containingFunction.parameters; + let parameters = getParametersForJsDocOwningNode(commentOwner); let posLineAndChar = sourceFile.getLineAndCharacterOfPosition(position); let lineStart = sourceFile.getLineStarts()[posLineAndChar.line]; @@ -7023,9 +7072,15 @@ namespace ts { // TODO: call a helper method instead once PR #4133 gets merged in. const newLine = host.getNewLine ? host.getNewLine() : "\r\n"; - let docParams = parameters.reduce((prev, cur, index) => - prev + - indentationStr + " * @param " + (cur.name.kind === SyntaxKind.Identifier ? (cur.name).text : "param" + index) + newLine, ""); + let docParams = ""; + for (let i = 0, numParams = parameters.length; i < numParams; i++) { + const currentName = parameters[i].name; + const paramName = currentName.kind === SyntaxKind.Identifier ? + (currentName).text : + "param" + i; + + docParams += `${indentationStr} * @param ${paramName}${newLine}`; + } // A doc comment consists of the following // * The opening comment line @@ -7045,6 +7100,52 @@ namespace ts { return { newText: result, caretOffset: preamble.length }; } + function getParametersForJsDocOwningNode(commentOwner: Node): ParameterDeclaration[] { + if (isFunctionLike(commentOwner)) { + return commentOwner.parameters; + } + + if (commentOwner.kind === SyntaxKind.VariableStatement) { + const varStatement = commentOwner; + const varDeclarations = varStatement.declarationList.declarations; + + if (varDeclarations.length === 1 && varDeclarations[0].initializer) { + return getParametersFromRightHandSideOfAssignment(varDeclarations[0].initializer); + } + } + + return emptyArray; + } + + /** + * Digs into an an initializer or RHS operand of an assignment operation + * to get the parameters of an apt signature corresponding to a + * function expression or a class expression. + * + * @param rightHandSide the expression which may contain an appropriate set of parameters + * @returns the parameters of a signature found on the RHS if one exists; otherwise 'emptyArray'. + */ + function getParametersFromRightHandSideOfAssignment(rightHandSide: Expression): ParameterDeclaration[] { + while (rightHandSide.kind === SyntaxKind.ParenthesizedExpression) { + rightHandSide = (rightHandSide).expression; + } + + switch (rightHandSide.kind) { + case SyntaxKind.FunctionExpression: + case SyntaxKind.ArrowFunction: + return (rightHandSide).parameters; + case SyntaxKind.ClassExpression: + for (let member of (rightHandSide).members) { + if (member.kind === SyntaxKind.Constructor) { + return (member).parameters; + } + } + break; + } + + return emptyArray; + } + function getTodoComments(fileName: string, descriptors: TodoCommentDescriptor[]): TodoComment[] { // Note: while getting todo comments seems like a syntactic operation, we actually // treat it as a semantic operation here. This is because we expect our host to call @@ -7714,6 +7815,7 @@ namespace ts { case SyntaxKind.GreaterThanEqualsToken: case SyntaxKind.InstanceOfKeyword: case SyntaxKind.InKeyword: + case SyntaxKind.AsKeyword: case SyntaxKind.EqualsEqualsToken: case SyntaxKind.ExclamationEqualsToken: case SyntaxKind.EqualsEqualsEqualsToken: diff --git a/src/services/shims.ts b/src/services/shims.ts index 307062cebd8..351514a1499 100644 --- a/src/services/shims.ts +++ b/src/services/shims.ts @@ -273,7 +273,7 @@ namespace ts { private loggingEnabled = false; private tracingEnabled = false; - public resolveModuleNames: (moduleName: string[], containingFile: string) => string[]; + public resolveModuleNames: (moduleName: string[], containingFile: string) => ResolvedModule[]; constructor(private shimHost: LanguageServiceShimHost) { // if shimHost is a COM object then property check will become method call with no arguments. @@ -281,7 +281,10 @@ namespace ts { if ("getModuleResolutionsForFile" in this.shimHost) { this.resolveModuleNames = (moduleNames: string[], containingFile: string) => { let resolutionsInFile = >JSON.parse(this.shimHost.getModuleResolutionsForFile(containingFile)); - return map(moduleNames, name => lookUp(resolutionsInFile, name)); + return map(moduleNames, name => { + const result = lookUp(resolutionsInFile, name); + return result ? { resolvedFileName: result } : undefined; + }); }; } } @@ -942,7 +945,11 @@ namespace ts { public resolveModuleName(fileName: string, moduleName: string, compilerOptionsJson: string): string { return this.forwardJSONCall(`resolveModuleName('${fileName}')`, () => { let compilerOptions = JSON.parse(compilerOptionsJson); - return resolveModuleName(moduleName, normalizeSlashes(fileName), compilerOptions, this.host); + const result = resolveModuleName(moduleName, normalizeSlashes(fileName), compilerOptions, this.host); + return { + resolvedFileName: result.resolvedModule ? result.resolvedModule.resolvedFileName: undefined, + failedLookupLocations: result.failedLookupLocations + }; }); } diff --git a/src/services/utilities.ts b/src/services/utilities.ts index 8b77dcb953b..a7198b4cc6d 100644 --- a/src/services/utilities.ts +++ b/src/services/utilities.ts @@ -9,7 +9,7 @@ namespace ts { export function getEndLinePosition(line: number, sourceFile: SourceFile): number { Debug.assert(line >= 0); let lineStarts = sourceFile.getLineStarts(); - + let lineIndex = line; if (lineIndex + 1 === lineStarts.length) { // last line - return EOF @@ -128,7 +128,8 @@ namespace ts { return isCompletedNode((n).thenStatement, sourceFile); case SyntaxKind.ExpressionStatement: - return isCompletedNode((n).expression, sourceFile); + return isCompletedNode((n).expression, sourceFile) || + hasChildOfKind(n, SyntaxKind.SemicolonToken); case SyntaxKind.ArrayLiteralExpression: case SyntaxKind.ArrayBindingPattern: @@ -170,7 +171,7 @@ namespace ts { case SyntaxKind.VoidExpression: case SyntaxKind.YieldExpression: case SyntaxKind.SpreadElementExpression: - let unaryWordExpression = (n); + let unaryWordExpression = (n); return isCompletedNode(unaryWordExpression.expression, sourceFile); case SyntaxKind.TaggedTemplateExpression: @@ -252,7 +253,7 @@ namespace ts { }); // Either we didn't find an appropriate list, or the list must contain us. - Debug.assert(!syntaxList || contains(syntaxList.getChildren(), node)); + Debug.assert(!syntaxList || contains(syntaxList.getChildren(), node)); return syntaxList; } @@ -388,7 +389,7 @@ namespace ts { // if this is the case - then we should assume that token in question is located in previous child. if (position < child.end && (nodeHasTokens(child) || child.kind === SyntaxKind.JsxText)) { const start = child.getStart(sourceFile); - const lookInPreviousChild = + const lookInPreviousChild = (start >= position) || // cursor in the leading trivia (child.kind === SyntaxKind.JsxText && start === child.end); // whitespace only JsxText @@ -425,7 +426,7 @@ namespace ts { } } } - + export function isInString(sourceFile: SourceFile, position: number) { let token = getTokenAtPosition(sourceFile, position); return token && token.kind === SyntaxKind.StringLiteral && position > token.getStart(); @@ -473,7 +474,7 @@ namespace ts { let commentRanges = getLeadingCommentRanges(sourceFile.text, token.pos); return forEach(commentRanges, jsDocPrefix); - + function jsDocPrefix(c: CommentRange): boolean { var text = sourceFile.text; return text.length >= c.pos + 3 && text[c.pos] === '/' && text[c.pos + 1] === '*' && text[c.pos + 2] === '*'; @@ -562,6 +563,15 @@ namespace ts { return kind === SyntaxKind.SingleLineCommentTrivia || kind === SyntaxKind.MultiLineCommentTrivia; } + export function isStringOrRegularExpressionOrTemplateLiteral(kind: SyntaxKind): boolean { + if (kind === SyntaxKind.StringLiteral + || kind === SyntaxKind.RegularExpressionLiteral + || isTemplateLiteralKind(kind)) { + return true; + } + return false; + } + export function isPunctuation(kind: SyntaxKind): boolean { return SyntaxKind.FirstPunctuation <= kind && kind <= SyntaxKind.LastPunctuation; } @@ -626,7 +636,8 @@ namespace ts { increaseIndent: () => { indent++; }, decreaseIndent: () => { indent--; }, clear: resetWriter, - trackSymbol: () => { } + trackSymbol: () => { }, + reportInaccessibleThisError: () => { } }; function writeIndent() { @@ -689,7 +700,7 @@ namespace ts { } export function displayPart(text: string, kind: SymbolDisplayPartKind, symbol?: Symbol): SymbolDisplayPart { - return { + return { text: text, kind: SymbolDisplayPartKind[kind] }; diff --git a/tests/baselines/reference/2dArrays.types b/tests/baselines/reference/2dArrays.types index b113ccdce7b..00805899294 100644 --- a/tests/baselines/reference/2dArrays.types +++ b/tests/baselines/reference/2dArrays.types @@ -28,7 +28,7 @@ class Board { >this.ships.every(function (val) { return val.isSunk; }) : boolean >this.ships.every : (callbackfn: (value: Ship, index: number, array: Ship[]) => boolean, thisArg?: any) => boolean >this.ships : Ship[] ->this : Board +>this : this >ships : Ship[] >every : (callbackfn: (value: Ship, index: number, array: Ship[]) => boolean, thisArg?: any) => boolean >function (val) { return val.isSunk; } : (val: Ship) => boolean diff --git a/tests/baselines/reference/accessOverriddenBaseClassMember1.types b/tests/baselines/reference/accessOverriddenBaseClassMember1.types index 2aeb541d723..f444544ea48 100644 --- a/tests/baselines/reference/accessOverriddenBaseClassMember1.types +++ b/tests/baselines/reference/accessOverriddenBaseClassMember1.types @@ -15,11 +15,11 @@ class Point { >"x=" + this.x : string >"x=" : string >this.x : number ->this : Point +>this : this >x : number >" y=" : string >this.y : number ->this : Point +>this : this >y : number } } @@ -50,7 +50,7 @@ class ColoredPoint extends Point { >toString : () => string >" color=" : string >this.color : string ->this : ColoredPoint +>this : this >color : string } } diff --git a/tests/baselines/reference/aliasAssignments.errors.txt b/tests/baselines/reference/aliasAssignments.errors.txt index 90a3672780f..fe13faba581 100644 --- a/tests/baselines/reference/aliasAssignments.errors.txt +++ b/tests/baselines/reference/aliasAssignments.errors.txt @@ -4,7 +4,7 @@ tests/cases/compiler/aliasAssignments_1.ts(5,1): error TS2322: Type 'typeof "tes ==== tests/cases/compiler/aliasAssignments_1.ts (2 errors) ==== - import moduleA = require("aliasAssignments_moduleA"); + import moduleA = require("./aliasAssignments_moduleA"); var x = moduleA; x = 1; // Should be error ~ diff --git a/tests/baselines/reference/aliasAssignments.js b/tests/baselines/reference/aliasAssignments.js index a019d03f990..5283fe1bd99 100644 --- a/tests/baselines/reference/aliasAssignments.js +++ b/tests/baselines/reference/aliasAssignments.js @@ -6,7 +6,7 @@ export class someClass { } //// [aliasAssignments_1.ts] -import moduleA = require("aliasAssignments_moduleA"); +import moduleA = require("./aliasAssignments_moduleA"); var x = moduleA; x = 1; // Should be error var y = 1; @@ -21,7 +21,7 @@ var someClass = (function () { })(); exports.someClass = someClass; //// [aliasAssignments_1.js] -var moduleA = require("aliasAssignments_moduleA"); +var moduleA = require("./aliasAssignments_moduleA"); var x = moduleA; x = 1; // Should be error var y = 1; diff --git a/tests/baselines/reference/aliasUsageInAccessorsOfClass.js b/tests/baselines/reference/aliasUsageInAccessorsOfClass.js index 11e02297e47..bf7a7280f35 100644 --- a/tests/baselines/reference/aliasUsageInAccessorsOfClass.js +++ b/tests/baselines/reference/aliasUsageInAccessorsOfClass.js @@ -6,14 +6,14 @@ export class Model { } //// [aliasUsage1_moduleA.ts] -import Backbone = require("aliasUsage1_backbone"); +import Backbone = require("./aliasUsage1_backbone"); export class VisualizationModel extends Backbone.Model { // interesting stuff here } //// [aliasUsage1_main.ts] -import Backbone = require("aliasUsage1_backbone"); -import moduleA = require("aliasUsage1_moduleA"); +import Backbone = require("./aliasUsage1_backbone"); +import moduleA = require("./aliasUsage1_moduleA"); interface IHasVisualizationModel { VisualizationModel: typeof Backbone.Model; } @@ -40,7 +40,7 @@ var __extends = (this && this.__extends) || function (d, b) { function __() { this.constructor = d; } d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __()); }; -var Backbone = require("aliasUsage1_backbone"); +var Backbone = require("./aliasUsage1_backbone"); var VisualizationModel = (function (_super) { __extends(VisualizationModel, _super); function VisualizationModel() { @@ -50,7 +50,7 @@ var VisualizationModel = (function (_super) { })(Backbone.Model); exports.VisualizationModel = VisualizationModel; //// [aliasUsage1_main.js] -var moduleA = require("aliasUsage1_moduleA"); +var moduleA = require("./aliasUsage1_moduleA"); var C2 = (function () { function C2() { } diff --git a/tests/baselines/reference/aliasUsageInAccessorsOfClass.symbols b/tests/baselines/reference/aliasUsageInAccessorsOfClass.symbols index 3524b1ce31e..62a2396e2b2 100644 --- a/tests/baselines/reference/aliasUsageInAccessorsOfClass.symbols +++ b/tests/baselines/reference/aliasUsageInAccessorsOfClass.symbols @@ -1,12 +1,12 @@ === tests/cases/compiler/aliasUsage1_main.ts === -import Backbone = require("aliasUsage1_backbone"); +import Backbone = require("./aliasUsage1_backbone"); >Backbone : Symbol(Backbone, Decl(aliasUsage1_main.ts, 0, 0)) -import moduleA = require("aliasUsage1_moduleA"); ->moduleA : Symbol(moduleA, Decl(aliasUsage1_main.ts, 0, 50)) +import moduleA = require("./aliasUsage1_moduleA"); +>moduleA : Symbol(moduleA, Decl(aliasUsage1_main.ts, 0, 52)) interface IHasVisualizationModel { ->IHasVisualizationModel : Symbol(IHasVisualizationModel, Decl(aliasUsage1_main.ts, 1, 48)) +>IHasVisualizationModel : Symbol(IHasVisualizationModel, Decl(aliasUsage1_main.ts, 1, 50)) VisualizationModel: typeof Backbone.Model; >VisualizationModel : Symbol(VisualizationModel, Decl(aliasUsage1_main.ts, 2, 34)) @@ -19,7 +19,7 @@ class C2 { x: IHasVisualizationModel; >x : Symbol(x, Decl(aliasUsage1_main.ts, 5, 10)) ->IHasVisualizationModel : Symbol(IHasVisualizationModel, Decl(aliasUsage1_main.ts, 1, 48)) +>IHasVisualizationModel : Symbol(IHasVisualizationModel, Decl(aliasUsage1_main.ts, 1, 50)) get A() { >A : Symbol(A, Decl(aliasUsage1_main.ts, 6, 30), Decl(aliasUsage1_main.ts, 9, 5)) @@ -35,7 +35,7 @@ class C2 { x = moduleA; >x : Symbol(x, Decl(aliasUsage1_main.ts, 10, 10)) ->moduleA : Symbol(moduleA, Decl(aliasUsage1_main.ts, 0, 50)) +>moduleA : Symbol(moduleA, Decl(aliasUsage1_main.ts, 0, 52)) } } === tests/cases/compiler/aliasUsage1_backbone.ts === @@ -47,11 +47,11 @@ export class Model { } === tests/cases/compiler/aliasUsage1_moduleA.ts === -import Backbone = require("aliasUsage1_backbone"); +import Backbone = require("./aliasUsage1_backbone"); >Backbone : Symbol(Backbone, Decl(aliasUsage1_moduleA.ts, 0, 0)) export class VisualizationModel extends Backbone.Model { ->VisualizationModel : Symbol(VisualizationModel, Decl(aliasUsage1_moduleA.ts, 0, 50)) +>VisualizationModel : Symbol(VisualizationModel, Decl(aliasUsage1_moduleA.ts, 0, 52)) >Backbone.Model : Symbol(Backbone.Model, Decl(aliasUsage1_backbone.ts, 0, 0)) >Backbone : Symbol(Backbone, Decl(aliasUsage1_moduleA.ts, 0, 0)) >Model : Symbol(Backbone.Model, Decl(aliasUsage1_backbone.ts, 0, 0)) diff --git a/tests/baselines/reference/aliasUsageInAccessorsOfClass.types b/tests/baselines/reference/aliasUsageInAccessorsOfClass.types index 092643002e4..c66f4c5c193 100644 --- a/tests/baselines/reference/aliasUsageInAccessorsOfClass.types +++ b/tests/baselines/reference/aliasUsageInAccessorsOfClass.types @@ -1,8 +1,8 @@ === tests/cases/compiler/aliasUsage1_main.ts === -import Backbone = require("aliasUsage1_backbone"); +import Backbone = require("./aliasUsage1_backbone"); >Backbone : typeof Backbone -import moduleA = require("aliasUsage1_moduleA"); +import moduleA = require("./aliasUsage1_moduleA"); >moduleA : typeof moduleA interface IHasVisualizationModel { @@ -26,7 +26,7 @@ class C2 { return this.x; >this.x : IHasVisualizationModel ->this : C2 +>this : this >x : IHasVisualizationModel } set A(x) { @@ -48,7 +48,7 @@ export class Model { } === tests/cases/compiler/aliasUsage1_moduleA.ts === -import Backbone = require("aliasUsage1_backbone"); +import Backbone = require("./aliasUsage1_backbone"); >Backbone : typeof Backbone export class VisualizationModel extends Backbone.Model { diff --git a/tests/baselines/reference/aliasUsageInArray.js b/tests/baselines/reference/aliasUsageInArray.js index ba0c954a3c2..108407345b7 100644 --- a/tests/baselines/reference/aliasUsageInArray.js +++ b/tests/baselines/reference/aliasUsageInArray.js @@ -6,14 +6,14 @@ export class Model { } //// [aliasUsageInArray_moduleA.ts] -import Backbone = require("aliasUsageInArray_backbone"); +import Backbone = require("./aliasUsageInArray_backbone"); export class VisualizationModel extends Backbone.Model { // interesting stuff here } //// [aliasUsageInArray_main.ts] -import Backbone = require("aliasUsageInArray_backbone"); -import moduleA = require("aliasUsageInArray_moduleA"); +import Backbone = require("./aliasUsageInArray_backbone"); +import moduleA = require("./aliasUsageInArray_moduleA"); interface IHasVisualizationModel { VisualizationModel: typeof Backbone.Model; } @@ -34,7 +34,7 @@ var __extends = (this && this.__extends) || function (d, b) { function __() { this.constructor = d; } d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __()); }; -var Backbone = require("aliasUsageInArray_backbone"); +var Backbone = require("./aliasUsageInArray_backbone"); var VisualizationModel = (function (_super) { __extends(VisualizationModel, _super); function VisualizationModel() { @@ -44,6 +44,6 @@ var VisualizationModel = (function (_super) { })(Backbone.Model); exports.VisualizationModel = VisualizationModel; //// [aliasUsageInArray_main.js] -var moduleA = require("aliasUsageInArray_moduleA"); +var moduleA = require("./aliasUsageInArray_moduleA"); var xs = [moduleA]; var xs2 = [moduleA]; diff --git a/tests/baselines/reference/aliasUsageInArray.symbols b/tests/baselines/reference/aliasUsageInArray.symbols index 7f1e31d2277..9bca1bc8864 100644 --- a/tests/baselines/reference/aliasUsageInArray.symbols +++ b/tests/baselines/reference/aliasUsageInArray.symbols @@ -1,12 +1,12 @@ === tests/cases/compiler/aliasUsageInArray_main.ts === -import Backbone = require("aliasUsageInArray_backbone"); +import Backbone = require("./aliasUsageInArray_backbone"); >Backbone : Symbol(Backbone, Decl(aliasUsageInArray_main.ts, 0, 0)) -import moduleA = require("aliasUsageInArray_moduleA"); ->moduleA : Symbol(moduleA, Decl(aliasUsageInArray_main.ts, 0, 56)) +import moduleA = require("./aliasUsageInArray_moduleA"); +>moduleA : Symbol(moduleA, Decl(aliasUsageInArray_main.ts, 0, 58)) interface IHasVisualizationModel { ->IHasVisualizationModel : Symbol(IHasVisualizationModel, Decl(aliasUsageInArray_main.ts, 1, 54)) +>IHasVisualizationModel : Symbol(IHasVisualizationModel, Decl(aliasUsageInArray_main.ts, 1, 56)) VisualizationModel: typeof Backbone.Model; >VisualizationModel : Symbol(VisualizationModel, Decl(aliasUsageInArray_main.ts, 2, 34)) @@ -17,13 +17,13 @@ interface IHasVisualizationModel { var xs: IHasVisualizationModel[] = [moduleA]; >xs : Symbol(xs, Decl(aliasUsageInArray_main.ts, 6, 3)) ->IHasVisualizationModel : Symbol(IHasVisualizationModel, Decl(aliasUsageInArray_main.ts, 1, 54)) ->moduleA : Symbol(moduleA, Decl(aliasUsageInArray_main.ts, 0, 56)) +>IHasVisualizationModel : Symbol(IHasVisualizationModel, Decl(aliasUsageInArray_main.ts, 1, 56)) +>moduleA : Symbol(moduleA, Decl(aliasUsageInArray_main.ts, 0, 58)) var xs2: typeof moduleA[] = [moduleA]; >xs2 : Symbol(xs2, Decl(aliasUsageInArray_main.ts, 7, 3)) ->moduleA : Symbol(moduleA, Decl(aliasUsageInArray_main.ts, 0, 56)) ->moduleA : Symbol(moduleA, Decl(aliasUsageInArray_main.ts, 0, 56)) +>moduleA : Symbol(moduleA, Decl(aliasUsageInArray_main.ts, 0, 58)) +>moduleA : Symbol(moduleA, Decl(aliasUsageInArray_main.ts, 0, 58)) === tests/cases/compiler/aliasUsageInArray_backbone.ts === export class Model { @@ -34,11 +34,11 @@ export class Model { } === tests/cases/compiler/aliasUsageInArray_moduleA.ts === -import Backbone = require("aliasUsageInArray_backbone"); +import Backbone = require("./aliasUsageInArray_backbone"); >Backbone : Symbol(Backbone, Decl(aliasUsageInArray_moduleA.ts, 0, 0)) export class VisualizationModel extends Backbone.Model { ->VisualizationModel : Symbol(VisualizationModel, Decl(aliasUsageInArray_moduleA.ts, 0, 56)) +>VisualizationModel : Symbol(VisualizationModel, Decl(aliasUsageInArray_moduleA.ts, 0, 58)) >Backbone.Model : Symbol(Backbone.Model, Decl(aliasUsageInArray_backbone.ts, 0, 0)) >Backbone : Symbol(Backbone, Decl(aliasUsageInArray_moduleA.ts, 0, 0)) >Model : Symbol(Backbone.Model, Decl(aliasUsageInArray_backbone.ts, 0, 0)) diff --git a/tests/baselines/reference/aliasUsageInArray.types b/tests/baselines/reference/aliasUsageInArray.types index 488cc97d07f..218df8e10ed 100644 --- a/tests/baselines/reference/aliasUsageInArray.types +++ b/tests/baselines/reference/aliasUsageInArray.types @@ -1,8 +1,8 @@ === tests/cases/compiler/aliasUsageInArray_main.ts === -import Backbone = require("aliasUsageInArray_backbone"); +import Backbone = require("./aliasUsageInArray_backbone"); >Backbone : typeof Backbone -import moduleA = require("aliasUsageInArray_moduleA"); +import moduleA = require("./aliasUsageInArray_moduleA"); >moduleA : typeof moduleA interface IHasVisualizationModel { @@ -36,7 +36,7 @@ export class Model { } === tests/cases/compiler/aliasUsageInArray_moduleA.ts === -import Backbone = require("aliasUsageInArray_backbone"); +import Backbone = require("./aliasUsageInArray_backbone"); >Backbone : typeof Backbone export class VisualizationModel extends Backbone.Model { diff --git a/tests/baselines/reference/aliasUsageInFunctionExpression.js b/tests/baselines/reference/aliasUsageInFunctionExpression.js index 702cbe4d53f..4229491c4c5 100644 --- a/tests/baselines/reference/aliasUsageInFunctionExpression.js +++ b/tests/baselines/reference/aliasUsageInFunctionExpression.js @@ -6,14 +6,14 @@ export class Model { } //// [aliasUsageInFunctionExpression_moduleA.ts] -import Backbone = require("aliasUsageInFunctionExpression_backbone"); +import Backbone = require("./aliasUsageInFunctionExpression_backbone"); export class VisualizationModel extends Backbone.Model { // interesting stuff here } //// [aliasUsageInFunctionExpression_main.ts] -import Backbone = require("aliasUsageInFunctionExpression_backbone"); -import moduleA = require("aliasUsageInFunctionExpression_moduleA"); +import Backbone = require("./aliasUsageInFunctionExpression_backbone"); +import moduleA = require("./aliasUsageInFunctionExpression_moduleA"); interface IHasVisualizationModel { VisualizationModel: typeof Backbone.Model; } @@ -33,7 +33,7 @@ var __extends = (this && this.__extends) || function (d, b) { function __() { this.constructor = d; } d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __()); }; -var Backbone = require("aliasUsageInFunctionExpression_backbone"); +var Backbone = require("./aliasUsageInFunctionExpression_backbone"); var VisualizationModel = (function (_super) { __extends(VisualizationModel, _super); function VisualizationModel() { @@ -43,6 +43,6 @@ var VisualizationModel = (function (_super) { })(Backbone.Model); exports.VisualizationModel = VisualizationModel; //// [aliasUsageInFunctionExpression_main.js] -var moduleA = require("aliasUsageInFunctionExpression_moduleA"); +var moduleA = require("./aliasUsageInFunctionExpression_moduleA"); var f = function (x) { return x; }; f = function (x) { return moduleA; }; diff --git a/tests/baselines/reference/aliasUsageInFunctionExpression.symbols b/tests/baselines/reference/aliasUsageInFunctionExpression.symbols index 2afb6be55c5..bd791d4d38f 100644 --- a/tests/baselines/reference/aliasUsageInFunctionExpression.symbols +++ b/tests/baselines/reference/aliasUsageInFunctionExpression.symbols @@ -1,12 +1,12 @@ === tests/cases/compiler/aliasUsageInFunctionExpression_main.ts === -import Backbone = require("aliasUsageInFunctionExpression_backbone"); +import Backbone = require("./aliasUsageInFunctionExpression_backbone"); >Backbone : Symbol(Backbone, Decl(aliasUsageInFunctionExpression_main.ts, 0, 0)) -import moduleA = require("aliasUsageInFunctionExpression_moduleA"); ->moduleA : Symbol(moduleA, Decl(aliasUsageInFunctionExpression_main.ts, 0, 69)) +import moduleA = require("./aliasUsageInFunctionExpression_moduleA"); +>moduleA : Symbol(moduleA, Decl(aliasUsageInFunctionExpression_main.ts, 0, 71)) interface IHasVisualizationModel { ->IHasVisualizationModel : Symbol(IHasVisualizationModel, Decl(aliasUsageInFunctionExpression_main.ts, 1, 67)) +>IHasVisualizationModel : Symbol(IHasVisualizationModel, Decl(aliasUsageInFunctionExpression_main.ts, 1, 69)) VisualizationModel: typeof Backbone.Model; >VisualizationModel : Symbol(VisualizationModel, Decl(aliasUsageInFunctionExpression_main.ts, 2, 34)) @@ -17,13 +17,13 @@ interface IHasVisualizationModel { var f = (x: IHasVisualizationModel) => x; >f : Symbol(f, Decl(aliasUsageInFunctionExpression_main.ts, 5, 3)) >x : Symbol(x, Decl(aliasUsageInFunctionExpression_main.ts, 5, 9)) ->IHasVisualizationModel : Symbol(IHasVisualizationModel, Decl(aliasUsageInFunctionExpression_main.ts, 1, 67)) +>IHasVisualizationModel : Symbol(IHasVisualizationModel, Decl(aliasUsageInFunctionExpression_main.ts, 1, 69)) >x : Symbol(x, Decl(aliasUsageInFunctionExpression_main.ts, 5, 9)) f = (x) => moduleA; >f : Symbol(f, Decl(aliasUsageInFunctionExpression_main.ts, 5, 3)) >x : Symbol(x, Decl(aliasUsageInFunctionExpression_main.ts, 6, 5)) ->moduleA : Symbol(moduleA, Decl(aliasUsageInFunctionExpression_main.ts, 0, 69)) +>moduleA : Symbol(moduleA, Decl(aliasUsageInFunctionExpression_main.ts, 0, 71)) === tests/cases/compiler/aliasUsageInFunctionExpression_backbone.ts === export class Model { @@ -34,11 +34,11 @@ export class Model { } === tests/cases/compiler/aliasUsageInFunctionExpression_moduleA.ts === -import Backbone = require("aliasUsageInFunctionExpression_backbone"); +import Backbone = require("./aliasUsageInFunctionExpression_backbone"); >Backbone : Symbol(Backbone, Decl(aliasUsageInFunctionExpression_moduleA.ts, 0, 0)) export class VisualizationModel extends Backbone.Model { ->VisualizationModel : Symbol(VisualizationModel, Decl(aliasUsageInFunctionExpression_moduleA.ts, 0, 69)) +>VisualizationModel : Symbol(VisualizationModel, Decl(aliasUsageInFunctionExpression_moduleA.ts, 0, 71)) >Backbone.Model : Symbol(Backbone.Model, Decl(aliasUsageInFunctionExpression_backbone.ts, 0, 0)) >Backbone : Symbol(Backbone, Decl(aliasUsageInFunctionExpression_moduleA.ts, 0, 0)) >Model : Symbol(Backbone.Model, Decl(aliasUsageInFunctionExpression_backbone.ts, 0, 0)) diff --git a/tests/baselines/reference/aliasUsageInFunctionExpression.types b/tests/baselines/reference/aliasUsageInFunctionExpression.types index eec4341fd67..15716de5330 100644 --- a/tests/baselines/reference/aliasUsageInFunctionExpression.types +++ b/tests/baselines/reference/aliasUsageInFunctionExpression.types @@ -1,8 +1,8 @@ === tests/cases/compiler/aliasUsageInFunctionExpression_main.ts === -import Backbone = require("aliasUsageInFunctionExpression_backbone"); +import Backbone = require("./aliasUsageInFunctionExpression_backbone"); >Backbone : typeof Backbone -import moduleA = require("aliasUsageInFunctionExpression_moduleA"); +import moduleA = require("./aliasUsageInFunctionExpression_moduleA"); >moduleA : typeof moduleA interface IHasVisualizationModel { @@ -37,7 +37,7 @@ export class Model { } === tests/cases/compiler/aliasUsageInFunctionExpression_moduleA.ts === -import Backbone = require("aliasUsageInFunctionExpression_backbone"); +import Backbone = require("./aliasUsageInFunctionExpression_backbone"); >Backbone : typeof Backbone export class VisualizationModel extends Backbone.Model { diff --git a/tests/baselines/reference/aliasUsageInGenericFunction.js b/tests/baselines/reference/aliasUsageInGenericFunction.js index 8706dd592eb..7091c6d27c6 100644 --- a/tests/baselines/reference/aliasUsageInGenericFunction.js +++ b/tests/baselines/reference/aliasUsageInGenericFunction.js @@ -6,14 +6,14 @@ export class Model { } //// [aliasUsageInGenericFunction_moduleA.ts] -import Backbone = require("aliasUsageInGenericFunction_backbone"); +import Backbone = require("./aliasUsageInGenericFunction_backbone"); export class VisualizationModel extends Backbone.Model { // interesting stuff here } //// [aliasUsageInGenericFunction_main.ts] -import Backbone = require("aliasUsageInGenericFunction_backbone"); -import moduleA = require("aliasUsageInGenericFunction_moduleA"); +import Backbone = require("./aliasUsageInGenericFunction_backbone"); +import moduleA = require("./aliasUsageInGenericFunction_moduleA"); interface IHasVisualizationModel { VisualizationModel: typeof Backbone.Model; } @@ -37,7 +37,7 @@ var __extends = (this && this.__extends) || function (d, b) { function __() { this.constructor = d; } d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __()); }; -var Backbone = require("aliasUsageInGenericFunction_backbone"); +var Backbone = require("./aliasUsageInGenericFunction_backbone"); var VisualizationModel = (function (_super) { __extends(VisualizationModel, _super); function VisualizationModel() { @@ -47,7 +47,7 @@ var VisualizationModel = (function (_super) { })(Backbone.Model); exports.VisualizationModel = VisualizationModel; //// [aliasUsageInGenericFunction_main.js] -var moduleA = require("aliasUsageInGenericFunction_moduleA"); +var moduleA = require("./aliasUsageInGenericFunction_moduleA"); function foo(x) { return x; } diff --git a/tests/baselines/reference/aliasUsageInGenericFunction.symbols b/tests/baselines/reference/aliasUsageInGenericFunction.symbols index 3f001e8bd1a..fccf60c3514 100644 --- a/tests/baselines/reference/aliasUsageInGenericFunction.symbols +++ b/tests/baselines/reference/aliasUsageInGenericFunction.symbols @@ -1,12 +1,12 @@ === tests/cases/compiler/aliasUsageInGenericFunction_main.ts === -import Backbone = require("aliasUsageInGenericFunction_backbone"); +import Backbone = require("./aliasUsageInGenericFunction_backbone"); >Backbone : Symbol(Backbone, Decl(aliasUsageInGenericFunction_main.ts, 0, 0)) -import moduleA = require("aliasUsageInGenericFunction_moduleA"); ->moduleA : Symbol(moduleA, Decl(aliasUsageInGenericFunction_main.ts, 0, 66)) +import moduleA = require("./aliasUsageInGenericFunction_moduleA"); +>moduleA : Symbol(moduleA, Decl(aliasUsageInGenericFunction_main.ts, 0, 68)) interface IHasVisualizationModel { ->IHasVisualizationModel : Symbol(IHasVisualizationModel, Decl(aliasUsageInGenericFunction_main.ts, 1, 64)) +>IHasVisualizationModel : Symbol(IHasVisualizationModel, Decl(aliasUsageInGenericFunction_main.ts, 1, 66)) VisualizationModel: typeof Backbone.Model; >VisualizationModel : Symbol(VisualizationModel, Decl(aliasUsageInGenericFunction_main.ts, 2, 34)) @@ -18,7 +18,7 @@ function foo(x: T) { >foo : Symbol(foo, Decl(aliasUsageInGenericFunction_main.ts, 4, 1)) >T : Symbol(T, Decl(aliasUsageInGenericFunction_main.ts, 5, 13)) >a : Symbol(a, Decl(aliasUsageInGenericFunction_main.ts, 5, 24)) ->IHasVisualizationModel : Symbol(IHasVisualizationModel, Decl(aliasUsageInGenericFunction_main.ts, 1, 64)) +>IHasVisualizationModel : Symbol(IHasVisualizationModel, Decl(aliasUsageInGenericFunction_main.ts, 1, 66)) >x : Symbol(x, Decl(aliasUsageInGenericFunction_main.ts, 5, 54)) >T : Symbol(T, Decl(aliasUsageInGenericFunction_main.ts, 5, 13)) @@ -29,13 +29,13 @@ var r = foo({ a: moduleA }); >r : Symbol(r, Decl(aliasUsageInGenericFunction_main.ts, 8, 3)) >foo : Symbol(foo, Decl(aliasUsageInGenericFunction_main.ts, 4, 1)) >a : Symbol(a, Decl(aliasUsageInGenericFunction_main.ts, 8, 13)) ->moduleA : Symbol(moduleA, Decl(aliasUsageInGenericFunction_main.ts, 0, 66)) +>moduleA : Symbol(moduleA, Decl(aliasUsageInGenericFunction_main.ts, 0, 68)) var r2 = foo({ a: null }); >r2 : Symbol(r2, Decl(aliasUsageInGenericFunction_main.ts, 9, 3)) >foo : Symbol(foo, Decl(aliasUsageInGenericFunction_main.ts, 4, 1)) >a : Symbol(a, Decl(aliasUsageInGenericFunction_main.ts, 9, 14)) ->IHasVisualizationModel : Symbol(IHasVisualizationModel, Decl(aliasUsageInGenericFunction_main.ts, 1, 64)) +>IHasVisualizationModel : Symbol(IHasVisualizationModel, Decl(aliasUsageInGenericFunction_main.ts, 1, 66)) === tests/cases/compiler/aliasUsageInGenericFunction_backbone.ts === export class Model { @@ -46,11 +46,11 @@ export class Model { } === tests/cases/compiler/aliasUsageInGenericFunction_moduleA.ts === -import Backbone = require("aliasUsageInGenericFunction_backbone"); +import Backbone = require("./aliasUsageInGenericFunction_backbone"); >Backbone : Symbol(Backbone, Decl(aliasUsageInGenericFunction_moduleA.ts, 0, 0)) export class VisualizationModel extends Backbone.Model { ->VisualizationModel : Symbol(VisualizationModel, Decl(aliasUsageInGenericFunction_moduleA.ts, 0, 66)) +>VisualizationModel : Symbol(VisualizationModel, Decl(aliasUsageInGenericFunction_moduleA.ts, 0, 68)) >Backbone.Model : Symbol(Backbone.Model, Decl(aliasUsageInGenericFunction_backbone.ts, 0, 0)) >Backbone : Symbol(Backbone, Decl(aliasUsageInGenericFunction_moduleA.ts, 0, 0)) >Model : Symbol(Backbone.Model, Decl(aliasUsageInGenericFunction_backbone.ts, 0, 0)) diff --git a/tests/baselines/reference/aliasUsageInGenericFunction.types b/tests/baselines/reference/aliasUsageInGenericFunction.types index c21e691d773..5fe7a3e49ef 100644 --- a/tests/baselines/reference/aliasUsageInGenericFunction.types +++ b/tests/baselines/reference/aliasUsageInGenericFunction.types @@ -1,8 +1,8 @@ === tests/cases/compiler/aliasUsageInGenericFunction_main.ts === -import Backbone = require("aliasUsageInGenericFunction_backbone"); +import Backbone = require("./aliasUsageInGenericFunction_backbone"); >Backbone : typeof Backbone -import moduleA = require("aliasUsageInGenericFunction_moduleA"); +import moduleA = require("./aliasUsageInGenericFunction_moduleA"); >moduleA : typeof moduleA interface IHasVisualizationModel { @@ -52,7 +52,7 @@ export class Model { } === tests/cases/compiler/aliasUsageInGenericFunction_moduleA.ts === -import Backbone = require("aliasUsageInGenericFunction_backbone"); +import Backbone = require("./aliasUsageInGenericFunction_backbone"); >Backbone : typeof Backbone export class VisualizationModel extends Backbone.Model { diff --git a/tests/baselines/reference/aliasUsageInIndexerOfClass.js b/tests/baselines/reference/aliasUsageInIndexerOfClass.js index 78ddd2d4a94..82490739687 100644 --- a/tests/baselines/reference/aliasUsageInIndexerOfClass.js +++ b/tests/baselines/reference/aliasUsageInIndexerOfClass.js @@ -6,14 +6,14 @@ export class Model { } //// [aliasUsageInIndexerOfClass_moduleA.ts] -import Backbone = require("aliasUsageInIndexerOfClass_backbone"); +import Backbone = require("./aliasUsageInIndexerOfClass_backbone"); export class VisualizationModel extends Backbone.Model { // interesting stuff here } //// [aliasUsageInIndexerOfClass_main.ts] -import Backbone = require("aliasUsageInIndexerOfClass_backbone"); -import moduleA = require("aliasUsageInIndexerOfClass_moduleA"); +import Backbone = require("./aliasUsageInIndexerOfClass_backbone"); +import moduleA = require("./aliasUsageInIndexerOfClass_moduleA"); interface IHasVisualizationModel { VisualizationModel: typeof Backbone.Model; } @@ -39,7 +39,7 @@ var __extends = (this && this.__extends) || function (d, b) { function __() { this.constructor = d; } d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __()); }; -var Backbone = require("aliasUsageInIndexerOfClass_backbone"); +var Backbone = require("./aliasUsageInIndexerOfClass_backbone"); var VisualizationModel = (function (_super) { __extends(VisualizationModel, _super); function VisualizationModel() { @@ -49,7 +49,7 @@ var VisualizationModel = (function (_super) { })(Backbone.Model); exports.VisualizationModel = VisualizationModel; //// [aliasUsageInIndexerOfClass_main.js] -var moduleA = require("aliasUsageInIndexerOfClass_moduleA"); +var moduleA = require("./aliasUsageInIndexerOfClass_moduleA"); var N = (function () { function N() { this.x = moduleA; diff --git a/tests/baselines/reference/aliasUsageInIndexerOfClass.symbols b/tests/baselines/reference/aliasUsageInIndexerOfClass.symbols index 900653c7fd1..37529d2ead2 100644 --- a/tests/baselines/reference/aliasUsageInIndexerOfClass.symbols +++ b/tests/baselines/reference/aliasUsageInIndexerOfClass.symbols @@ -1,12 +1,12 @@ === tests/cases/compiler/aliasUsageInIndexerOfClass_main.ts === -import Backbone = require("aliasUsageInIndexerOfClass_backbone"); +import Backbone = require("./aliasUsageInIndexerOfClass_backbone"); >Backbone : Symbol(Backbone, Decl(aliasUsageInIndexerOfClass_main.ts, 0, 0)) -import moduleA = require("aliasUsageInIndexerOfClass_moduleA"); ->moduleA : Symbol(moduleA, Decl(aliasUsageInIndexerOfClass_main.ts, 0, 65)) +import moduleA = require("./aliasUsageInIndexerOfClass_moduleA"); +>moduleA : Symbol(moduleA, Decl(aliasUsageInIndexerOfClass_main.ts, 0, 67)) interface IHasVisualizationModel { ->IHasVisualizationModel : Symbol(IHasVisualizationModel, Decl(aliasUsageInIndexerOfClass_main.ts, 1, 63)) +>IHasVisualizationModel : Symbol(IHasVisualizationModel, Decl(aliasUsageInIndexerOfClass_main.ts, 1, 65)) VisualizationModel: typeof Backbone.Model; >VisualizationModel : Symbol(VisualizationModel, Decl(aliasUsageInIndexerOfClass_main.ts, 2, 34)) @@ -19,22 +19,22 @@ class N { [idx: string]: IHasVisualizationModel >idx : Symbol(idx, Decl(aliasUsageInIndexerOfClass_main.ts, 6, 5)) ->IHasVisualizationModel : Symbol(IHasVisualizationModel, Decl(aliasUsageInIndexerOfClass_main.ts, 1, 63)) +>IHasVisualizationModel : Symbol(IHasVisualizationModel, Decl(aliasUsageInIndexerOfClass_main.ts, 1, 65)) x = moduleA; >x : Symbol(x, Decl(aliasUsageInIndexerOfClass_main.ts, 6, 41)) ->moduleA : Symbol(moduleA, Decl(aliasUsageInIndexerOfClass_main.ts, 0, 65)) +>moduleA : Symbol(moduleA, Decl(aliasUsageInIndexerOfClass_main.ts, 0, 67)) } class N2 { >N2 : Symbol(N2, Decl(aliasUsageInIndexerOfClass_main.ts, 8, 1)) [idx: string]: typeof moduleA >idx : Symbol(idx, Decl(aliasUsageInIndexerOfClass_main.ts, 10, 5)) ->moduleA : Symbol(moduleA, Decl(aliasUsageInIndexerOfClass_main.ts, 0, 65)) +>moduleA : Symbol(moduleA, Decl(aliasUsageInIndexerOfClass_main.ts, 0, 67)) x: IHasVisualizationModel; >x : Symbol(x, Decl(aliasUsageInIndexerOfClass_main.ts, 10, 33)) ->IHasVisualizationModel : Symbol(IHasVisualizationModel, Decl(aliasUsageInIndexerOfClass_main.ts, 1, 63)) +>IHasVisualizationModel : Symbol(IHasVisualizationModel, Decl(aliasUsageInIndexerOfClass_main.ts, 1, 65)) } === tests/cases/compiler/aliasUsageInIndexerOfClass_backbone.ts === export class Model { @@ -45,11 +45,11 @@ export class Model { } === tests/cases/compiler/aliasUsageInIndexerOfClass_moduleA.ts === -import Backbone = require("aliasUsageInIndexerOfClass_backbone"); +import Backbone = require("./aliasUsageInIndexerOfClass_backbone"); >Backbone : Symbol(Backbone, Decl(aliasUsageInIndexerOfClass_moduleA.ts, 0, 0)) export class VisualizationModel extends Backbone.Model { ->VisualizationModel : Symbol(VisualizationModel, Decl(aliasUsageInIndexerOfClass_moduleA.ts, 0, 65)) +>VisualizationModel : Symbol(VisualizationModel, Decl(aliasUsageInIndexerOfClass_moduleA.ts, 0, 67)) >Backbone.Model : Symbol(Backbone.Model, Decl(aliasUsageInIndexerOfClass_backbone.ts, 0, 0)) >Backbone : Symbol(Backbone, Decl(aliasUsageInIndexerOfClass_moduleA.ts, 0, 0)) >Model : Symbol(Backbone.Model, Decl(aliasUsageInIndexerOfClass_backbone.ts, 0, 0)) diff --git a/tests/baselines/reference/aliasUsageInIndexerOfClass.types b/tests/baselines/reference/aliasUsageInIndexerOfClass.types index b7e4873ba34..d6040a90410 100644 --- a/tests/baselines/reference/aliasUsageInIndexerOfClass.types +++ b/tests/baselines/reference/aliasUsageInIndexerOfClass.types @@ -1,8 +1,8 @@ === tests/cases/compiler/aliasUsageInIndexerOfClass_main.ts === -import Backbone = require("aliasUsageInIndexerOfClass_backbone"); +import Backbone = require("./aliasUsageInIndexerOfClass_backbone"); >Backbone : typeof Backbone -import moduleA = require("aliasUsageInIndexerOfClass_moduleA"); +import moduleA = require("./aliasUsageInIndexerOfClass_moduleA"); >moduleA : typeof moduleA interface IHasVisualizationModel { @@ -45,7 +45,7 @@ export class Model { } === tests/cases/compiler/aliasUsageInIndexerOfClass_moduleA.ts === -import Backbone = require("aliasUsageInIndexerOfClass_backbone"); +import Backbone = require("./aliasUsageInIndexerOfClass_backbone"); >Backbone : typeof Backbone export class VisualizationModel extends Backbone.Model { diff --git a/tests/baselines/reference/aliasUsageInObjectLiteral.js b/tests/baselines/reference/aliasUsageInObjectLiteral.js index f38cdf2111c..f1bb99018df 100644 --- a/tests/baselines/reference/aliasUsageInObjectLiteral.js +++ b/tests/baselines/reference/aliasUsageInObjectLiteral.js @@ -6,14 +6,14 @@ export class Model { } //// [aliasUsageInObjectLiteral_moduleA.ts] -import Backbone = require("aliasUsageInObjectLiteral_backbone"); +import Backbone = require("./aliasUsageInObjectLiteral_backbone"); export class VisualizationModel extends Backbone.Model { // interesting stuff here } //// [aliasUsageInObjectLiteral_main.ts] -import Backbone = require("aliasUsageInObjectLiteral_backbone"); -import moduleA = require("aliasUsageInObjectLiteral_moduleA"); +import Backbone = require("./aliasUsageInObjectLiteral_backbone"); +import moduleA = require("./aliasUsageInObjectLiteral_moduleA"); interface IHasVisualizationModel { VisualizationModel: typeof Backbone.Model; } @@ -34,7 +34,7 @@ var __extends = (this && this.__extends) || function (d, b) { function __() { this.constructor = d; } d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __()); }; -var Backbone = require("aliasUsageInObjectLiteral_backbone"); +var Backbone = require("./aliasUsageInObjectLiteral_backbone"); var VisualizationModel = (function (_super) { __extends(VisualizationModel, _super); function VisualizationModel() { @@ -44,7 +44,7 @@ var VisualizationModel = (function (_super) { })(Backbone.Model); exports.VisualizationModel = VisualizationModel; //// [aliasUsageInObjectLiteral_main.js] -var moduleA = require("aliasUsageInObjectLiteral_moduleA"); +var moduleA = require("./aliasUsageInObjectLiteral_moduleA"); var a = { x: moduleA }; var b = { x: moduleA }; var c = { y: { z: moduleA } }; diff --git a/tests/baselines/reference/aliasUsageInObjectLiteral.symbols b/tests/baselines/reference/aliasUsageInObjectLiteral.symbols index a508e9fafc1..ef94a9037ad 100644 --- a/tests/baselines/reference/aliasUsageInObjectLiteral.symbols +++ b/tests/baselines/reference/aliasUsageInObjectLiteral.symbols @@ -1,12 +1,12 @@ === tests/cases/compiler/aliasUsageInObjectLiteral_main.ts === -import Backbone = require("aliasUsageInObjectLiteral_backbone"); +import Backbone = require("./aliasUsageInObjectLiteral_backbone"); >Backbone : Symbol(Backbone, Decl(aliasUsageInObjectLiteral_main.ts, 0, 0)) -import moduleA = require("aliasUsageInObjectLiteral_moduleA"); ->moduleA : Symbol(moduleA, Decl(aliasUsageInObjectLiteral_main.ts, 0, 64)) +import moduleA = require("./aliasUsageInObjectLiteral_moduleA"); +>moduleA : Symbol(moduleA, Decl(aliasUsageInObjectLiteral_main.ts, 0, 66)) interface IHasVisualizationModel { ->IHasVisualizationModel : Symbol(IHasVisualizationModel, Decl(aliasUsageInObjectLiteral_main.ts, 1, 62)) +>IHasVisualizationModel : Symbol(IHasVisualizationModel, Decl(aliasUsageInObjectLiteral_main.ts, 1, 64)) VisualizationModel: typeof Backbone.Model; >VisualizationModel : Symbol(VisualizationModel, Decl(aliasUsageInObjectLiteral_main.ts, 2, 34)) @@ -17,25 +17,25 @@ interface IHasVisualizationModel { var a: { x: typeof moduleA } = { x: moduleA }; >a : Symbol(a, Decl(aliasUsageInObjectLiteral_main.ts, 5, 3)) >x : Symbol(x, Decl(aliasUsageInObjectLiteral_main.ts, 5, 8)) ->moduleA : Symbol(moduleA, Decl(aliasUsageInObjectLiteral_main.ts, 0, 64)) +>moduleA : Symbol(moduleA, Decl(aliasUsageInObjectLiteral_main.ts, 0, 66)) >x : Symbol(x, Decl(aliasUsageInObjectLiteral_main.ts, 5, 32)) ->moduleA : Symbol(moduleA, Decl(aliasUsageInObjectLiteral_main.ts, 0, 64)) +>moduleA : Symbol(moduleA, Decl(aliasUsageInObjectLiteral_main.ts, 0, 66)) var b: { x: IHasVisualizationModel } = { x: moduleA }; >b : Symbol(b, Decl(aliasUsageInObjectLiteral_main.ts, 6, 3)) >x : Symbol(x, Decl(aliasUsageInObjectLiteral_main.ts, 6, 8)) ->IHasVisualizationModel : Symbol(IHasVisualizationModel, Decl(aliasUsageInObjectLiteral_main.ts, 1, 62)) +>IHasVisualizationModel : Symbol(IHasVisualizationModel, Decl(aliasUsageInObjectLiteral_main.ts, 1, 64)) >x : Symbol(x, Decl(aliasUsageInObjectLiteral_main.ts, 6, 40)) ->moduleA : Symbol(moduleA, Decl(aliasUsageInObjectLiteral_main.ts, 0, 64)) +>moduleA : Symbol(moduleA, Decl(aliasUsageInObjectLiteral_main.ts, 0, 66)) var c: { y: { z: IHasVisualizationModel } } = { y: { z: moduleA } }; >c : Symbol(c, Decl(aliasUsageInObjectLiteral_main.ts, 7, 3)) >y : Symbol(y, Decl(aliasUsageInObjectLiteral_main.ts, 7, 8)) >z : Symbol(z, Decl(aliasUsageInObjectLiteral_main.ts, 7, 13)) ->IHasVisualizationModel : Symbol(IHasVisualizationModel, Decl(aliasUsageInObjectLiteral_main.ts, 1, 62)) +>IHasVisualizationModel : Symbol(IHasVisualizationModel, Decl(aliasUsageInObjectLiteral_main.ts, 1, 64)) >y : Symbol(y, Decl(aliasUsageInObjectLiteral_main.ts, 7, 47)) >z : Symbol(z, Decl(aliasUsageInObjectLiteral_main.ts, 7, 52)) ->moduleA : Symbol(moduleA, Decl(aliasUsageInObjectLiteral_main.ts, 0, 64)) +>moduleA : Symbol(moduleA, Decl(aliasUsageInObjectLiteral_main.ts, 0, 66)) === tests/cases/compiler/aliasUsageInObjectLiteral_backbone.ts === export class Model { @@ -46,11 +46,11 @@ export class Model { } === tests/cases/compiler/aliasUsageInObjectLiteral_moduleA.ts === -import Backbone = require("aliasUsageInObjectLiteral_backbone"); +import Backbone = require("./aliasUsageInObjectLiteral_backbone"); >Backbone : Symbol(Backbone, Decl(aliasUsageInObjectLiteral_moduleA.ts, 0, 0)) export class VisualizationModel extends Backbone.Model { ->VisualizationModel : Symbol(VisualizationModel, Decl(aliasUsageInObjectLiteral_moduleA.ts, 0, 64)) +>VisualizationModel : Symbol(VisualizationModel, Decl(aliasUsageInObjectLiteral_moduleA.ts, 0, 66)) >Backbone.Model : Symbol(Backbone.Model, Decl(aliasUsageInObjectLiteral_backbone.ts, 0, 0)) >Backbone : Symbol(Backbone, Decl(aliasUsageInObjectLiteral_moduleA.ts, 0, 0)) >Model : Symbol(Backbone.Model, Decl(aliasUsageInObjectLiteral_backbone.ts, 0, 0)) diff --git a/tests/baselines/reference/aliasUsageInObjectLiteral.types b/tests/baselines/reference/aliasUsageInObjectLiteral.types index 5ab294b7350..5c8f08a6af2 100644 --- a/tests/baselines/reference/aliasUsageInObjectLiteral.types +++ b/tests/baselines/reference/aliasUsageInObjectLiteral.types @@ -1,8 +1,8 @@ === tests/cases/compiler/aliasUsageInObjectLiteral_main.ts === -import Backbone = require("aliasUsageInObjectLiteral_backbone"); +import Backbone = require("./aliasUsageInObjectLiteral_backbone"); >Backbone : typeof Backbone -import moduleA = require("aliasUsageInObjectLiteral_moduleA"); +import moduleA = require("./aliasUsageInObjectLiteral_moduleA"); >moduleA : typeof moduleA interface IHasVisualizationModel { @@ -50,7 +50,7 @@ export class Model { } === tests/cases/compiler/aliasUsageInObjectLiteral_moduleA.ts === -import Backbone = require("aliasUsageInObjectLiteral_backbone"); +import Backbone = require("./aliasUsageInObjectLiteral_backbone"); >Backbone : typeof Backbone export class VisualizationModel extends Backbone.Model { diff --git a/tests/baselines/reference/aliasUsageInOrExpression.js b/tests/baselines/reference/aliasUsageInOrExpression.js index 906a2c019d7..817ad95aaea 100644 --- a/tests/baselines/reference/aliasUsageInOrExpression.js +++ b/tests/baselines/reference/aliasUsageInOrExpression.js @@ -6,14 +6,14 @@ export class Model { } //// [aliasUsageInOrExpression_moduleA.ts] -import Backbone = require("aliasUsageInOrExpression_backbone"); +import Backbone = require("./aliasUsageInOrExpression_backbone"); export class VisualizationModel extends Backbone.Model { // interesting stuff here } //// [aliasUsageInOrExpression_main.ts] -import Backbone = require("aliasUsageInOrExpression_backbone"); -import moduleA = require("aliasUsageInOrExpression_moduleA"); +import Backbone = require("./aliasUsageInOrExpression_backbone"); +import moduleA = require("./aliasUsageInOrExpression_moduleA"); interface IHasVisualizationModel { VisualizationModel: typeof Backbone.Model; } @@ -37,7 +37,7 @@ var __extends = (this && this.__extends) || function (d, b) { function __() { this.constructor = d; } d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __()); }; -var Backbone = require("aliasUsageInOrExpression_backbone"); +var Backbone = require("./aliasUsageInOrExpression_backbone"); var VisualizationModel = (function (_super) { __extends(VisualizationModel, _super); function VisualizationModel() { @@ -47,7 +47,7 @@ var VisualizationModel = (function (_super) { })(Backbone.Model); exports.VisualizationModel = VisualizationModel; //// [aliasUsageInOrExpression_main.js] -var moduleA = require("aliasUsageInOrExpression_moduleA"); +var moduleA = require("./aliasUsageInOrExpression_moduleA"); var i; var d1 = i || moduleA; var d2 = i || moduleA; diff --git a/tests/baselines/reference/aliasUsageInOrExpression.symbols b/tests/baselines/reference/aliasUsageInOrExpression.symbols index adfba01a119..3d9331b1fa9 100644 --- a/tests/baselines/reference/aliasUsageInOrExpression.symbols +++ b/tests/baselines/reference/aliasUsageInOrExpression.symbols @@ -1,12 +1,12 @@ === tests/cases/compiler/aliasUsageInOrExpression_main.ts === -import Backbone = require("aliasUsageInOrExpression_backbone"); +import Backbone = require("./aliasUsageInOrExpression_backbone"); >Backbone : Symbol(Backbone, Decl(aliasUsageInOrExpression_main.ts, 0, 0)) -import moduleA = require("aliasUsageInOrExpression_moduleA"); ->moduleA : Symbol(moduleA, Decl(aliasUsageInOrExpression_main.ts, 0, 63)) +import moduleA = require("./aliasUsageInOrExpression_moduleA"); +>moduleA : Symbol(moduleA, Decl(aliasUsageInOrExpression_main.ts, 0, 65)) interface IHasVisualizationModel { ->IHasVisualizationModel : Symbol(IHasVisualizationModel, Decl(aliasUsageInOrExpression_main.ts, 1, 61)) +>IHasVisualizationModel : Symbol(IHasVisualizationModel, Decl(aliasUsageInOrExpression_main.ts, 1, 63)) VisualizationModel: typeof Backbone.Model; >VisualizationModel : Symbol(VisualizationModel, Decl(aliasUsageInOrExpression_main.ts, 2, 34)) @@ -16,42 +16,42 @@ interface IHasVisualizationModel { } var i: IHasVisualizationModel; >i : Symbol(i, Decl(aliasUsageInOrExpression_main.ts, 5, 3)) ->IHasVisualizationModel : Symbol(IHasVisualizationModel, Decl(aliasUsageInOrExpression_main.ts, 1, 61)) +>IHasVisualizationModel : Symbol(IHasVisualizationModel, Decl(aliasUsageInOrExpression_main.ts, 1, 63)) var d1 = i || moduleA; >d1 : Symbol(d1, Decl(aliasUsageInOrExpression_main.ts, 6, 3)) >i : Symbol(i, Decl(aliasUsageInOrExpression_main.ts, 5, 3)) ->moduleA : Symbol(moduleA, Decl(aliasUsageInOrExpression_main.ts, 0, 63)) +>moduleA : Symbol(moduleA, Decl(aliasUsageInOrExpression_main.ts, 0, 65)) var d2: IHasVisualizationModel = i || moduleA; >d2 : Symbol(d2, Decl(aliasUsageInOrExpression_main.ts, 7, 3), Decl(aliasUsageInOrExpression_main.ts, 8, 3)) ->IHasVisualizationModel : Symbol(IHasVisualizationModel, Decl(aliasUsageInOrExpression_main.ts, 1, 61)) +>IHasVisualizationModel : Symbol(IHasVisualizationModel, Decl(aliasUsageInOrExpression_main.ts, 1, 63)) >i : Symbol(i, Decl(aliasUsageInOrExpression_main.ts, 5, 3)) ->moduleA : Symbol(moduleA, Decl(aliasUsageInOrExpression_main.ts, 0, 63)) +>moduleA : Symbol(moduleA, Decl(aliasUsageInOrExpression_main.ts, 0, 65)) var d2: IHasVisualizationModel = moduleA || i; >d2 : Symbol(d2, Decl(aliasUsageInOrExpression_main.ts, 7, 3), Decl(aliasUsageInOrExpression_main.ts, 8, 3)) ->IHasVisualizationModel : Symbol(IHasVisualizationModel, Decl(aliasUsageInOrExpression_main.ts, 1, 61)) ->moduleA : Symbol(moduleA, Decl(aliasUsageInOrExpression_main.ts, 0, 63)) +>IHasVisualizationModel : Symbol(IHasVisualizationModel, Decl(aliasUsageInOrExpression_main.ts, 1, 63)) +>moduleA : Symbol(moduleA, Decl(aliasUsageInOrExpression_main.ts, 0, 65)) >i : Symbol(i, Decl(aliasUsageInOrExpression_main.ts, 5, 3)) var e: { x: IHasVisualizationModel } = <{ x: IHasVisualizationModel }>null || { x: moduleA }; >e : Symbol(e, Decl(aliasUsageInOrExpression_main.ts, 9, 3)) >x : Symbol(x, Decl(aliasUsageInOrExpression_main.ts, 9, 8)) ->IHasVisualizationModel : Symbol(IHasVisualizationModel, Decl(aliasUsageInOrExpression_main.ts, 1, 61)) +>IHasVisualizationModel : Symbol(IHasVisualizationModel, Decl(aliasUsageInOrExpression_main.ts, 1, 63)) >x : Symbol(x, Decl(aliasUsageInOrExpression_main.ts, 9, 41)) ->IHasVisualizationModel : Symbol(IHasVisualizationModel, Decl(aliasUsageInOrExpression_main.ts, 1, 61)) +>IHasVisualizationModel : Symbol(IHasVisualizationModel, Decl(aliasUsageInOrExpression_main.ts, 1, 63)) >x : Symbol(x, Decl(aliasUsageInOrExpression_main.ts, 9, 79)) ->moduleA : Symbol(moduleA, Decl(aliasUsageInOrExpression_main.ts, 0, 63)) +>moduleA : Symbol(moduleA, Decl(aliasUsageInOrExpression_main.ts, 0, 65)) var f: { x: IHasVisualizationModel } = <{ x: IHasVisualizationModel }>null ? { x: moduleA } : null; >f : Symbol(f, Decl(aliasUsageInOrExpression_main.ts, 10, 3)) >x : Symbol(x, Decl(aliasUsageInOrExpression_main.ts, 10, 8)) ->IHasVisualizationModel : Symbol(IHasVisualizationModel, Decl(aliasUsageInOrExpression_main.ts, 1, 61)) +>IHasVisualizationModel : Symbol(IHasVisualizationModel, Decl(aliasUsageInOrExpression_main.ts, 1, 63)) >x : Symbol(x, Decl(aliasUsageInOrExpression_main.ts, 10, 41)) ->IHasVisualizationModel : Symbol(IHasVisualizationModel, Decl(aliasUsageInOrExpression_main.ts, 1, 61)) +>IHasVisualizationModel : Symbol(IHasVisualizationModel, Decl(aliasUsageInOrExpression_main.ts, 1, 63)) >x : Symbol(x, Decl(aliasUsageInOrExpression_main.ts, 10, 78)) ->moduleA : Symbol(moduleA, Decl(aliasUsageInOrExpression_main.ts, 0, 63)) +>moduleA : Symbol(moduleA, Decl(aliasUsageInOrExpression_main.ts, 0, 65)) === tests/cases/compiler/aliasUsageInOrExpression_backbone.ts === export class Model { @@ -62,11 +62,11 @@ export class Model { } === tests/cases/compiler/aliasUsageInOrExpression_moduleA.ts === -import Backbone = require("aliasUsageInOrExpression_backbone"); +import Backbone = require("./aliasUsageInOrExpression_backbone"); >Backbone : Symbol(Backbone, Decl(aliasUsageInOrExpression_moduleA.ts, 0, 0)) export class VisualizationModel extends Backbone.Model { ->VisualizationModel : Symbol(VisualizationModel, Decl(aliasUsageInOrExpression_moduleA.ts, 0, 63)) +>VisualizationModel : Symbol(VisualizationModel, Decl(aliasUsageInOrExpression_moduleA.ts, 0, 65)) >Backbone.Model : Symbol(Backbone.Model, Decl(aliasUsageInOrExpression_backbone.ts, 0, 0)) >Backbone : Symbol(Backbone, Decl(aliasUsageInOrExpression_moduleA.ts, 0, 0)) >Model : Symbol(Backbone.Model, Decl(aliasUsageInOrExpression_backbone.ts, 0, 0)) diff --git a/tests/baselines/reference/aliasUsageInOrExpression.types b/tests/baselines/reference/aliasUsageInOrExpression.types index f009e7084eb..c43b7889cc5 100644 --- a/tests/baselines/reference/aliasUsageInOrExpression.types +++ b/tests/baselines/reference/aliasUsageInOrExpression.types @@ -1,8 +1,8 @@ === tests/cases/compiler/aliasUsageInOrExpression_main.ts === -import Backbone = require("aliasUsageInOrExpression_backbone"); +import Backbone = require("./aliasUsageInOrExpression_backbone"); >Backbone : typeof Backbone -import moduleA = require("aliasUsageInOrExpression_moduleA"); +import moduleA = require("./aliasUsageInOrExpression_moduleA"); >moduleA : typeof moduleA interface IHasVisualizationModel { @@ -74,7 +74,7 @@ export class Model { } === tests/cases/compiler/aliasUsageInOrExpression_moduleA.ts === -import Backbone = require("aliasUsageInOrExpression_backbone"); +import Backbone = require("./aliasUsageInOrExpression_backbone"); >Backbone : typeof Backbone export class VisualizationModel extends Backbone.Model { diff --git a/tests/baselines/reference/aliasUsageInTypeArgumentOfExtendsClause.js b/tests/baselines/reference/aliasUsageInTypeArgumentOfExtendsClause.js index 27f85bb5fcd..270a2807319 100644 --- a/tests/baselines/reference/aliasUsageInTypeArgumentOfExtendsClause.js +++ b/tests/baselines/reference/aliasUsageInTypeArgumentOfExtendsClause.js @@ -6,14 +6,14 @@ export class Model { } //// [aliasUsageInTypeArgumentOfExtendsClause_moduleA.ts] -import Backbone = require("aliasUsageInTypeArgumentOfExtendsClause_backbone"); +import Backbone = require("./aliasUsageInTypeArgumentOfExtendsClause_backbone"); export class VisualizationModel extends Backbone.Model { // interesting stuff here } //// [aliasUsageInTypeArgumentOfExtendsClause_main.ts] -import Backbone = require("aliasUsageInTypeArgumentOfExtendsClause_backbone"); -import moduleA = require("aliasUsageInTypeArgumentOfExtendsClause_moduleA"); +import Backbone = require("./aliasUsageInTypeArgumentOfExtendsClause_backbone"); +import moduleA = require("./aliasUsageInTypeArgumentOfExtendsClause_moduleA"); interface IHasVisualizationModel { VisualizationModel: typeof Backbone.Model; } @@ -37,7 +37,7 @@ var __extends = (this && this.__extends) || function (d, b) { function __() { this.constructor = d; } d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __()); }; -var Backbone = require("aliasUsageInTypeArgumentOfExtendsClause_backbone"); +var Backbone = require("./aliasUsageInTypeArgumentOfExtendsClause_backbone"); var VisualizationModel = (function (_super) { __extends(VisualizationModel, _super); function VisualizationModel() { @@ -52,7 +52,7 @@ var __extends = (this && this.__extends) || function (d, b) { function __() { this.constructor = d; } d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __()); }; -var moduleA = require("aliasUsageInTypeArgumentOfExtendsClause_moduleA"); +var moduleA = require("./aliasUsageInTypeArgumentOfExtendsClause_moduleA"); var C = (function () { function C() { } diff --git a/tests/baselines/reference/aliasUsageInTypeArgumentOfExtendsClause.symbols b/tests/baselines/reference/aliasUsageInTypeArgumentOfExtendsClause.symbols index f3ca1f7ec37..6fc639da2c1 100644 --- a/tests/baselines/reference/aliasUsageInTypeArgumentOfExtendsClause.symbols +++ b/tests/baselines/reference/aliasUsageInTypeArgumentOfExtendsClause.symbols @@ -1,12 +1,12 @@ === tests/cases/compiler/aliasUsageInTypeArgumentOfExtendsClause_main.ts === -import Backbone = require("aliasUsageInTypeArgumentOfExtendsClause_backbone"); +import Backbone = require("./aliasUsageInTypeArgumentOfExtendsClause_backbone"); >Backbone : Symbol(Backbone, Decl(aliasUsageInTypeArgumentOfExtendsClause_main.ts, 0, 0)) -import moduleA = require("aliasUsageInTypeArgumentOfExtendsClause_moduleA"); ->moduleA : Symbol(moduleA, Decl(aliasUsageInTypeArgumentOfExtendsClause_main.ts, 0, 78)) +import moduleA = require("./aliasUsageInTypeArgumentOfExtendsClause_moduleA"); +>moduleA : Symbol(moduleA, Decl(aliasUsageInTypeArgumentOfExtendsClause_main.ts, 0, 80)) interface IHasVisualizationModel { ->IHasVisualizationModel : Symbol(IHasVisualizationModel, Decl(aliasUsageInTypeArgumentOfExtendsClause_main.ts, 1, 76)) +>IHasVisualizationModel : Symbol(IHasVisualizationModel, Decl(aliasUsageInTypeArgumentOfExtendsClause_main.ts, 1, 78)) VisualizationModel: typeof Backbone.Model; >VisualizationModel : Symbol(VisualizationModel, Decl(aliasUsageInTypeArgumentOfExtendsClause_main.ts, 2, 34)) @@ -17,7 +17,7 @@ interface IHasVisualizationModel { class C { >C : Symbol(C, Decl(aliasUsageInTypeArgumentOfExtendsClause_main.ts, 4, 1)) >T : Symbol(T, Decl(aliasUsageInTypeArgumentOfExtendsClause_main.ts, 5, 8)) ->IHasVisualizationModel : Symbol(IHasVisualizationModel, Decl(aliasUsageInTypeArgumentOfExtendsClause_main.ts, 1, 76)) +>IHasVisualizationModel : Symbol(IHasVisualizationModel, Decl(aliasUsageInTypeArgumentOfExtendsClause_main.ts, 1, 78)) x: T; >x : Symbol(x, Decl(aliasUsageInTypeArgumentOfExtendsClause_main.ts, 5, 43)) @@ -26,11 +26,11 @@ class C { class D extends C { >D : Symbol(D, Decl(aliasUsageInTypeArgumentOfExtendsClause_main.ts, 7, 1)) >C : Symbol(C, Decl(aliasUsageInTypeArgumentOfExtendsClause_main.ts, 4, 1)) ->IHasVisualizationModel : Symbol(IHasVisualizationModel, Decl(aliasUsageInTypeArgumentOfExtendsClause_main.ts, 1, 76)) +>IHasVisualizationModel : Symbol(IHasVisualizationModel, Decl(aliasUsageInTypeArgumentOfExtendsClause_main.ts, 1, 78)) x = moduleA; >x : Symbol(x, Decl(aliasUsageInTypeArgumentOfExtendsClause_main.ts, 8, 43)) ->moduleA : Symbol(moduleA, Decl(aliasUsageInTypeArgumentOfExtendsClause_main.ts, 0, 78)) +>moduleA : Symbol(moduleA, Decl(aliasUsageInTypeArgumentOfExtendsClause_main.ts, 0, 80)) } === tests/cases/compiler/aliasUsageInTypeArgumentOfExtendsClause_backbone.ts === export class Model { @@ -41,11 +41,11 @@ export class Model { } === tests/cases/compiler/aliasUsageInTypeArgumentOfExtendsClause_moduleA.ts === -import Backbone = require("aliasUsageInTypeArgumentOfExtendsClause_backbone"); +import Backbone = require("./aliasUsageInTypeArgumentOfExtendsClause_backbone"); >Backbone : Symbol(Backbone, Decl(aliasUsageInTypeArgumentOfExtendsClause_moduleA.ts, 0, 0)) export class VisualizationModel extends Backbone.Model { ->VisualizationModel : Symbol(VisualizationModel, Decl(aliasUsageInTypeArgumentOfExtendsClause_moduleA.ts, 0, 78)) +>VisualizationModel : Symbol(VisualizationModel, Decl(aliasUsageInTypeArgumentOfExtendsClause_moduleA.ts, 0, 80)) >Backbone.Model : Symbol(Backbone.Model, Decl(aliasUsageInTypeArgumentOfExtendsClause_backbone.ts, 0, 0)) >Backbone : Symbol(Backbone, Decl(aliasUsageInTypeArgumentOfExtendsClause_moduleA.ts, 0, 0)) >Model : Symbol(Backbone.Model, Decl(aliasUsageInTypeArgumentOfExtendsClause_backbone.ts, 0, 0)) diff --git a/tests/baselines/reference/aliasUsageInTypeArgumentOfExtendsClause.types b/tests/baselines/reference/aliasUsageInTypeArgumentOfExtendsClause.types index ae20caa9c37..3d3d3b6d3f5 100644 --- a/tests/baselines/reference/aliasUsageInTypeArgumentOfExtendsClause.types +++ b/tests/baselines/reference/aliasUsageInTypeArgumentOfExtendsClause.types @@ -1,8 +1,8 @@ === tests/cases/compiler/aliasUsageInTypeArgumentOfExtendsClause_main.ts === -import Backbone = require("aliasUsageInTypeArgumentOfExtendsClause_backbone"); +import Backbone = require("./aliasUsageInTypeArgumentOfExtendsClause_backbone"); >Backbone : typeof Backbone -import moduleA = require("aliasUsageInTypeArgumentOfExtendsClause_moduleA"); +import moduleA = require("./aliasUsageInTypeArgumentOfExtendsClause_moduleA"); >moduleA : typeof moduleA interface IHasVisualizationModel { @@ -41,7 +41,7 @@ export class Model { } === tests/cases/compiler/aliasUsageInTypeArgumentOfExtendsClause_moduleA.ts === -import Backbone = require("aliasUsageInTypeArgumentOfExtendsClause_backbone"); +import Backbone = require("./aliasUsageInTypeArgumentOfExtendsClause_backbone"); >Backbone : typeof Backbone export class VisualizationModel extends Backbone.Model { diff --git a/tests/baselines/reference/aliasUsageInVarAssignment.js b/tests/baselines/reference/aliasUsageInVarAssignment.js index bfc63868ff4..f7949348cdd 100644 --- a/tests/baselines/reference/aliasUsageInVarAssignment.js +++ b/tests/baselines/reference/aliasUsageInVarAssignment.js @@ -6,14 +6,14 @@ export class Model { } //// [aliasUsageInVarAssignment_moduleA.ts] -import Backbone = require("aliasUsageInVarAssignment_backbone"); +import Backbone = require("./aliasUsageInVarAssignment_backbone"); export class VisualizationModel extends Backbone.Model { // interesting stuff here } //// [aliasUsageInVarAssignment_main.ts] -import Backbone = require("aliasUsageInVarAssignment_backbone"); -import moduleA = require("aliasUsageInVarAssignment_moduleA"); +import Backbone = require("./aliasUsageInVarAssignment_backbone"); +import moduleA = require("./aliasUsageInVarAssignment_moduleA"); interface IHasVisualizationModel { VisualizationModel: typeof Backbone.Model; } @@ -33,7 +33,7 @@ var __extends = (this && this.__extends) || function (d, b) { function __() { this.constructor = d; } d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __()); }; -var Backbone = require("aliasUsageInVarAssignment_backbone"); +var Backbone = require("./aliasUsageInVarAssignment_backbone"); var VisualizationModel = (function (_super) { __extends(VisualizationModel, _super); function VisualizationModel() { diff --git a/tests/baselines/reference/aliasUsageInVarAssignment.symbols b/tests/baselines/reference/aliasUsageInVarAssignment.symbols index d1996fe8ecb..d0e7f6b7d05 100644 --- a/tests/baselines/reference/aliasUsageInVarAssignment.symbols +++ b/tests/baselines/reference/aliasUsageInVarAssignment.symbols @@ -1,12 +1,12 @@ === tests/cases/compiler/aliasUsageInVarAssignment_main.ts === -import Backbone = require("aliasUsageInVarAssignment_backbone"); +import Backbone = require("./aliasUsageInVarAssignment_backbone"); >Backbone : Symbol(Backbone, Decl(aliasUsageInVarAssignment_main.ts, 0, 0)) -import moduleA = require("aliasUsageInVarAssignment_moduleA"); ->moduleA : Symbol(moduleA, Decl(aliasUsageInVarAssignment_main.ts, 0, 64)) +import moduleA = require("./aliasUsageInVarAssignment_moduleA"); +>moduleA : Symbol(moduleA, Decl(aliasUsageInVarAssignment_main.ts, 0, 66)) interface IHasVisualizationModel { ->IHasVisualizationModel : Symbol(IHasVisualizationModel, Decl(aliasUsageInVarAssignment_main.ts, 1, 62)) +>IHasVisualizationModel : Symbol(IHasVisualizationModel, Decl(aliasUsageInVarAssignment_main.ts, 1, 64)) VisualizationModel: typeof Backbone.Model; >VisualizationModel : Symbol(VisualizationModel, Decl(aliasUsageInVarAssignment_main.ts, 2, 34)) @@ -16,11 +16,11 @@ interface IHasVisualizationModel { } var i: IHasVisualizationModel; >i : Symbol(i, Decl(aliasUsageInVarAssignment_main.ts, 5, 3)) ->IHasVisualizationModel : Symbol(IHasVisualizationModel, Decl(aliasUsageInVarAssignment_main.ts, 1, 62)) +>IHasVisualizationModel : Symbol(IHasVisualizationModel, Decl(aliasUsageInVarAssignment_main.ts, 1, 64)) var m: typeof moduleA = i; >m : Symbol(m, Decl(aliasUsageInVarAssignment_main.ts, 6, 3)) ->moduleA : Symbol(moduleA, Decl(aliasUsageInVarAssignment_main.ts, 0, 64)) +>moduleA : Symbol(moduleA, Decl(aliasUsageInVarAssignment_main.ts, 0, 66)) >i : Symbol(i, Decl(aliasUsageInVarAssignment_main.ts, 5, 3)) === tests/cases/compiler/aliasUsageInVarAssignment_backbone.ts === @@ -32,11 +32,11 @@ export class Model { } === tests/cases/compiler/aliasUsageInVarAssignment_moduleA.ts === -import Backbone = require("aliasUsageInVarAssignment_backbone"); +import Backbone = require("./aliasUsageInVarAssignment_backbone"); >Backbone : Symbol(Backbone, Decl(aliasUsageInVarAssignment_moduleA.ts, 0, 0)) export class VisualizationModel extends Backbone.Model { ->VisualizationModel : Symbol(VisualizationModel, Decl(aliasUsageInVarAssignment_moduleA.ts, 0, 64)) +>VisualizationModel : Symbol(VisualizationModel, Decl(aliasUsageInVarAssignment_moduleA.ts, 0, 66)) >Backbone.Model : Symbol(Backbone.Model, Decl(aliasUsageInVarAssignment_backbone.ts, 0, 0)) >Backbone : Symbol(Backbone, Decl(aliasUsageInVarAssignment_moduleA.ts, 0, 0)) >Model : Symbol(Backbone.Model, Decl(aliasUsageInVarAssignment_backbone.ts, 0, 0)) diff --git a/tests/baselines/reference/aliasUsageInVarAssignment.types b/tests/baselines/reference/aliasUsageInVarAssignment.types index 6a23293ea7c..cf636a15240 100644 --- a/tests/baselines/reference/aliasUsageInVarAssignment.types +++ b/tests/baselines/reference/aliasUsageInVarAssignment.types @@ -1,8 +1,8 @@ === tests/cases/compiler/aliasUsageInVarAssignment_main.ts === -import Backbone = require("aliasUsageInVarAssignment_backbone"); +import Backbone = require("./aliasUsageInVarAssignment_backbone"); >Backbone : typeof Backbone -import moduleA = require("aliasUsageInVarAssignment_moduleA"); +import moduleA = require("./aliasUsageInVarAssignment_moduleA"); >moduleA : typeof moduleA interface IHasVisualizationModel { @@ -32,7 +32,7 @@ export class Model { } === tests/cases/compiler/aliasUsageInVarAssignment_moduleA.ts === -import Backbone = require("aliasUsageInVarAssignment_backbone"); +import Backbone = require("./aliasUsageInVarAssignment_backbone"); >Backbone : typeof Backbone export class VisualizationModel extends Backbone.Model { diff --git a/tests/baselines/reference/aliasUsedAsNameValue.js b/tests/baselines/reference/aliasUsedAsNameValue.js index c93acb43fa6..9893eae6e1c 100644 --- a/tests/baselines/reference/aliasUsedAsNameValue.js +++ b/tests/baselines/reference/aliasUsedAsNameValue.js @@ -9,8 +9,8 @@ export function b(a: any): any { return null; } //// [aliasUsedAsNameValue_2.ts] /// /// -import mod = require("aliasUsedAsNameValue_0"); -import b = require("aliasUsedAsNameValue_1"); +import mod = require("./aliasUsedAsNameValue_0"); +import b = require("./aliasUsedAsNameValue_1"); export var a = function () { //var x = mod.id; // TODO needed hack that mod is loaded @@ -25,8 +25,8 @@ exports.b = b; //// [aliasUsedAsNameValue_2.js] /// /// -var mod = require("aliasUsedAsNameValue_0"); -var b = require("aliasUsedAsNameValue_1"); +var mod = require("./aliasUsedAsNameValue_0"); +var b = require("./aliasUsedAsNameValue_1"); exports.a = function () { //var x = mod.id; // TODO needed hack that mod is loaded b.b(mod); diff --git a/tests/baselines/reference/aliasUsedAsNameValue.symbols b/tests/baselines/reference/aliasUsedAsNameValue.symbols index a816e2b2c63..314780eba7c 100644 --- a/tests/baselines/reference/aliasUsedAsNameValue.symbols +++ b/tests/baselines/reference/aliasUsedAsNameValue.symbols @@ -1,11 +1,11 @@ === tests/cases/compiler/aliasUsedAsNameValue_2.ts === /// /// -import mod = require("aliasUsedAsNameValue_0"); +import mod = require("./aliasUsedAsNameValue_0"); >mod : Symbol(mod, Decl(aliasUsedAsNameValue_2.ts, 0, 0)) -import b = require("aliasUsedAsNameValue_1"); ->b : Symbol(b, Decl(aliasUsedAsNameValue_2.ts, 2, 47)) +import b = require("./aliasUsedAsNameValue_1"); +>b : Symbol(b, Decl(aliasUsedAsNameValue_2.ts, 2, 49)) export var a = function () { >a : Symbol(a, Decl(aliasUsedAsNameValue_2.ts, 5, 10)) @@ -13,7 +13,7 @@ export var a = function () { //var x = mod.id; // TODO needed hack that mod is loaded b.b(mod); >b.b : Symbol(b.b, Decl(aliasUsedAsNameValue_1.ts, 0, 0)) ->b : Symbol(b, Decl(aliasUsedAsNameValue_2.ts, 2, 47)) +>b : Symbol(b, Decl(aliasUsedAsNameValue_2.ts, 2, 49)) >b : Symbol(b.b, Decl(aliasUsedAsNameValue_1.ts, 0, 0)) >mod : Symbol(mod, Decl(aliasUsedAsNameValue_2.ts, 0, 0)) } diff --git a/tests/baselines/reference/aliasUsedAsNameValue.types b/tests/baselines/reference/aliasUsedAsNameValue.types index 9c519786c76..86e1eeee9f5 100644 --- a/tests/baselines/reference/aliasUsedAsNameValue.types +++ b/tests/baselines/reference/aliasUsedAsNameValue.types @@ -1,10 +1,10 @@ === tests/cases/compiler/aliasUsedAsNameValue_2.ts === /// /// -import mod = require("aliasUsedAsNameValue_0"); +import mod = require("./aliasUsedAsNameValue_0"); >mod : typeof mod -import b = require("aliasUsedAsNameValue_1"); +import b = require("./aliasUsedAsNameValue_1"); >b : typeof b export var a = function () { diff --git a/tests/baselines/reference/aliasWithInterfaceExportAssignmentUsedInVarInitializer.errors.txt b/tests/baselines/reference/aliasWithInterfaceExportAssignmentUsedInVarInitializer.errors.txt index a2532be9344..1a9d7d26168 100644 --- a/tests/baselines/reference/aliasWithInterfaceExportAssignmentUsedInVarInitializer.errors.txt +++ b/tests/baselines/reference/aliasWithInterfaceExportAssignmentUsedInVarInitializer.errors.txt @@ -2,7 +2,7 @@ tests/cases/compiler/aliasWithInterfaceExportAssignmentUsedInVarInitializer_1.ts ==== tests/cases/compiler/aliasWithInterfaceExportAssignmentUsedInVarInitializer_1.ts (1 errors) ==== - import moduleA = require("aliasWithInterfaceExportAssignmentUsedInVarInitializer_0"); + import moduleA = require("./aliasWithInterfaceExportAssignmentUsedInVarInitializer_0"); var d = b.q3; ~ !!! error TS2304: Cannot find name 'b'. diff --git a/tests/baselines/reference/aliasWithInterfaceExportAssignmentUsedInVarInitializer.js b/tests/baselines/reference/aliasWithInterfaceExportAssignmentUsedInVarInitializer.js index bd76945438f..19534b279c0 100644 --- a/tests/baselines/reference/aliasWithInterfaceExportAssignmentUsedInVarInitializer.js +++ b/tests/baselines/reference/aliasWithInterfaceExportAssignmentUsedInVarInitializer.js @@ -7,7 +7,7 @@ interface c { export = c; //// [aliasWithInterfaceExportAssignmentUsedInVarInitializer_1.ts] -import moduleA = require("aliasWithInterfaceExportAssignmentUsedInVarInitializer_0"); +import moduleA = require("./aliasWithInterfaceExportAssignmentUsedInVarInitializer_0"); var d = b.q3; //// [aliasWithInterfaceExportAssignmentUsedInVarInitializer_0.js] diff --git a/tests/baselines/reference/ambientEnum1.errors.txt b/tests/baselines/reference/ambientEnum1.errors.txt index b4bb534f5dd..be8a19b34ba 100644 --- a/tests/baselines/reference/ambientEnum1.errors.txt +++ b/tests/baselines/reference/ambientEnum1.errors.txt @@ -1,17 +1,14 @@ -tests/cases/compiler/ambientEnum1.ts(2,9): error TS1066: Ambient enum elements can only have integer literal initializers. -tests/cases/compiler/ambientEnum1.ts(7,9): error TS1066: Ambient enum elements can only have integer literal initializers. +tests/cases/compiler/ambientEnum1.ts(7,13): error TS1066: In ambient enum declarations member initializer must be constant expression. -==== tests/cases/compiler/ambientEnum1.ts (2 errors) ==== +==== tests/cases/compiler/ambientEnum1.ts (1 errors) ==== declare enum E1 { y = 4.23 - ~ -!!! error TS1066: Ambient enum elements can only have integer literal initializers. } // Ambient enum with computer member declare enum E2 { x = 'foo'.length - ~ -!!! error TS1066: Ambient enum elements can only have integer literal initializers. + ~~~~~~~~~~~~ +!!! error TS1066: In ambient enum declarations member initializer must be constant expression. } \ No newline at end of file diff --git a/tests/baselines/reference/ambientEnumDeclaration1.errors.txt b/tests/baselines/reference/ambientEnumDeclaration1.errors.txt deleted file mode 100644 index 419f7e184ac..00000000000 --- a/tests/baselines/reference/ambientEnumDeclaration1.errors.txt +++ /dev/null @@ -1,24 +0,0 @@ -tests/cases/conformance/ambient/ambientEnumDeclaration1.ts(5,5): error TS1066: Ambient enum elements can only have integer literal initializers. -tests/cases/conformance/ambient/ambientEnumDeclaration1.ts(6,5): error TS1066: Ambient enum elements can only have integer literal initializers. -tests/cases/conformance/ambient/ambientEnumDeclaration1.ts(7,5): error TS1066: Ambient enum elements can only have integer literal initializers. -tests/cases/conformance/ambient/ambientEnumDeclaration1.ts(8,5): error TS1066: Ambient enum elements can only have integer literal initializers. - - -==== tests/cases/conformance/ambient/ambientEnumDeclaration1.ts (4 errors) ==== - // In ambient enum declarations, all values specified in enum member declarations must be classified as constant enum expressions. - - declare enum E { - a = 10, - b = 10 + 1, - ~ -!!! error TS1066: Ambient enum elements can only have integer literal initializers. - c = b, - ~ -!!! error TS1066: Ambient enum elements can only have integer literal initializers. - d = (c) + 1, - ~ -!!! error TS1066: Ambient enum elements can only have integer literal initializers. - e = 10 << 2 * 8, - ~ -!!! error TS1066: Ambient enum elements can only have integer literal initializers. - } \ No newline at end of file diff --git a/tests/baselines/reference/ambientEnumDeclaration1.symbols b/tests/baselines/reference/ambientEnumDeclaration1.symbols new file mode 100644 index 00000000000..62e6250cf95 --- /dev/null +++ b/tests/baselines/reference/ambientEnumDeclaration1.symbols @@ -0,0 +1,23 @@ +=== tests/cases/conformance/ambient/ambientEnumDeclaration1.ts === +// In ambient enum declarations, all values specified in enum member declarations must be classified as constant enum expressions. + +declare enum E { +>E : Symbol(E, Decl(ambientEnumDeclaration1.ts, 0, 0)) + + a = 10, +>a : Symbol(E.a, Decl(ambientEnumDeclaration1.ts, 2, 16)) + + b = 10 + 1, +>b : Symbol(E.b, Decl(ambientEnumDeclaration1.ts, 3, 11)) + + c = b, +>c : Symbol(E.c, Decl(ambientEnumDeclaration1.ts, 4, 15)) +>b : Symbol(E.b, Decl(ambientEnumDeclaration1.ts, 3, 11)) + + d = (c) + 1, +>d : Symbol(E.d, Decl(ambientEnumDeclaration1.ts, 5, 10)) +>c : Symbol(E.c, Decl(ambientEnumDeclaration1.ts, 4, 15)) + + e = 10 << 2 * 8, +>e : Symbol(E.e, Decl(ambientEnumDeclaration1.ts, 6, 16)) +} diff --git a/tests/baselines/reference/ambientEnumDeclaration1.types b/tests/baselines/reference/ambientEnumDeclaration1.types new file mode 100644 index 00000000000..3ef30e458da --- /dev/null +++ b/tests/baselines/reference/ambientEnumDeclaration1.types @@ -0,0 +1,35 @@ +=== tests/cases/conformance/ambient/ambientEnumDeclaration1.ts === +// In ambient enum declarations, all values specified in enum member declarations must be classified as constant enum expressions. + +declare enum E { +>E : E + + a = 10, +>a : E +>10 : number + + b = 10 + 1, +>b : E +>10 + 1 : number +>10 : number +>1 : number + + c = b, +>c : E +>b : E + + d = (c) + 1, +>d : E +>(c) + 1 : number +>(c) : E +>c : E +>1 : number + + e = 10 << 2 * 8, +>e : E +>10 << 2 * 8 : number +>10 : number +>2 * 8 : number +>2 : number +>8 : number +} diff --git a/tests/baselines/reference/ambientEnumElementInitializer3.errors.txt b/tests/baselines/reference/ambientEnumElementInitializer3.errors.txt deleted file mode 100644 index 56058210c16..00000000000 --- a/tests/baselines/reference/ambientEnumElementInitializer3.errors.txt +++ /dev/null @@ -1,9 +0,0 @@ -tests/cases/compiler/ambientEnumElementInitializer3.ts(2,2): error TS1066: Ambient enum elements can only have integer literal initializers. - - -==== tests/cases/compiler/ambientEnumElementInitializer3.ts (1 errors) ==== - declare enum E { - e = 3.3 // Decimal - ~ -!!! error TS1066: Ambient enum elements can only have integer literal initializers. - } \ No newline at end of file diff --git a/tests/baselines/reference/ambientEnumElementInitializer3.symbols b/tests/baselines/reference/ambientEnumElementInitializer3.symbols new file mode 100644 index 00000000000..ee0d5e4daea --- /dev/null +++ b/tests/baselines/reference/ambientEnumElementInitializer3.symbols @@ -0,0 +1,7 @@ +=== tests/cases/compiler/ambientEnumElementInitializer3.ts === +declare enum E { +>E : Symbol(E, Decl(ambientEnumElementInitializer3.ts, 0, 0)) + + e = 3.3 // Decimal +>e : Symbol(E.e, Decl(ambientEnumElementInitializer3.ts, 0, 16)) +} diff --git a/tests/baselines/reference/ambientEnumElementInitializer3.types b/tests/baselines/reference/ambientEnumElementInitializer3.types new file mode 100644 index 00000000000..f3d3b8f3ae2 --- /dev/null +++ b/tests/baselines/reference/ambientEnumElementInitializer3.types @@ -0,0 +1,8 @@ +=== tests/cases/compiler/ambientEnumElementInitializer3.ts === +declare enum E { +>E : E + + e = 3.3 // Decimal +>e : E +>3.3 : number +} diff --git a/tests/baselines/reference/ambientErrors.errors.txt b/tests/baselines/reference/ambientErrors.errors.txt index 16ce79a05dd..5e257c2de3f 100644 --- a/tests/baselines/reference/ambientErrors.errors.txt +++ b/tests/baselines/reference/ambientErrors.errors.txt @@ -1,22 +1,21 @@ tests/cases/conformance/ambient/ambientErrors.ts(2,15): error TS1039: Initializers are not allowed in ambient contexts. 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. -tests/cases/conformance/ambient/ambientErrors.ts(29,5): error TS1066: Ambient enum elements can only have integer literal initializers. +tests/cases/conformance/ambient/ambientErrors.ts(20,24): error TS1183: An implementation cannot be declared in ambient contexts. +tests/cases/conformance/ambient/ambientErrors.ts(29,9): error TS1066: In ambient enum declarations member initializer must be constant expression. tests/cases/conformance/ambient/ambientErrors.ts(34,11): error TS1039: Initializers are not allowed in ambient contexts. -tests/cases/conformance/ambient/ambientErrors.ts(35,19): error TS1184: An implementation cannot be declared in ambient contexts. +tests/cases/conformance/ambient/ambientErrors.ts(35,19): error TS1183: An implementation cannot be declared in ambient contexts. tests/cases/conformance/ambient/ambientErrors.ts(37,20): error TS1039: Initializers are not allowed in ambient contexts. tests/cases/conformance/ambient/ambientErrors.ts(38,13): error TS1039: Initializers are not allowed in ambient contexts. -tests/cases/conformance/ambient/ambientErrors.ts(39,23): error TS1184: An implementation cannot be declared in ambient contexts. -tests/cases/conformance/ambient/ambientErrors.ts(40,14): error TS1184: An implementation cannot be declared in ambient contexts. -tests/cases/conformance/ambient/ambientErrors.ts(41,22): error TS1184: An implementation cannot be declared in ambient contexts. -tests/cases/conformance/ambient/ambientErrors.ts(47,20): error TS2435: Ambient modules cannot be nested in other modules. +tests/cases/conformance/ambient/ambientErrors.ts(39,23): error TS1183: An implementation cannot be declared in ambient contexts. +tests/cases/conformance/ambient/ambientErrors.ts(40,14): error TS1183: An implementation cannot be declared in ambient contexts. +tests/cases/conformance/ambient/ambientErrors.ts(41,22): error TS1183: An implementation cannot be declared in ambient contexts. +tests/cases/conformance/ambient/ambientErrors.ts(47,20): error TS2435: Ambient modules cannot be nested in other modules or namespaces. tests/cases/conformance/ambient/ambientErrors.ts(51,16): error TS2436: Ambient module declaration cannot specify relative module name. tests/cases/conformance/ambient/ambientErrors.ts(57,5): error TS2309: An export assignment cannot be used in a module with other exported elements. -==== tests/cases/conformance/ambient/ambientErrors.ts (16 errors) ==== +==== tests/cases/conformance/ambient/ambientErrors.ts (15 errors) ==== // Ambient variable with an initializer declare var x = 4; ~ @@ -44,20 +43,18 @@ tests/cases/conformance/ambient/ambientErrors.ts(57,5): error TS2309: An export // Ambient function with function body declare function fn4() { }; ~ -!!! error TS1184: An implementation cannot be declared in ambient contexts. +!!! error TS1183: An implementation cannot be declared in ambient contexts. // Ambient enum with non - integer literal constant member declare enum E1 { y = 4.23 - ~ -!!! error TS1066: Ambient enum elements can only have integer literal initializers. } // Ambient enum with computer member declare enum E2 { x = 'foo'.length - ~ -!!! error TS1066: Ambient enum elements can only have integer literal initializers. + ~~~~~~~~~~~~ +!!! error TS1066: In ambient enum declarations member initializer must be constant expression. } // Ambient module with initializers for values, bodies for functions / classes @@ -67,7 +64,7 @@ tests/cases/conformance/ambient/ambientErrors.ts(57,5): error TS2309: An export !!! error TS1039: Initializers are not allowed in ambient contexts. function fn() { } ~ -!!! error TS1184: An implementation cannot be declared in ambient contexts. +!!! error TS1183: An implementation cannot be declared in ambient contexts. class C { static x = 3; ~ @@ -77,13 +74,13 @@ tests/cases/conformance/ambient/ambientErrors.ts(57,5): error TS2309: An export !!! error TS1039: Initializers are not allowed in ambient contexts. constructor() { } ~ -!!! error TS1184: An implementation cannot be declared in ambient contexts. +!!! error TS1183: An implementation cannot be declared in ambient contexts. fn() { } ~ -!!! error TS1184: An implementation cannot be declared in ambient contexts. +!!! error TS1183: An implementation cannot be declared in ambient contexts. static sfn() { } ~ -!!! error TS1184: An implementation cannot be declared in ambient contexts. +!!! error TS1183: An implementation cannot be declared in ambient contexts. } } @@ -91,7 +88,7 @@ tests/cases/conformance/ambient/ambientErrors.ts(57,5): error TS2309: An export module M2 { declare module 'nope' { } ~~~~~~ -!!! error TS2435: Ambient modules cannot be nested in other modules. +!!! error TS2435: Ambient modules cannot be nested in other modules or namespaces. } // Ambient external module with a string literal name that isn't a top level external module name diff --git a/tests/baselines/reference/ambientExternalModuleInAnotherExternalModule.errors.txt b/tests/baselines/reference/ambientExternalModuleInAnotherExternalModule.errors.txt index 79f37c4764e..0e508470b13 100644 --- a/tests/baselines/reference/ambientExternalModuleInAnotherExternalModule.errors.txt +++ b/tests/baselines/reference/ambientExternalModuleInAnotherExternalModule.errors.txt @@ -1,4 +1,4 @@ -tests/cases/compiler/ambientExternalModuleInAnotherExternalModule.ts(5,16): error TS2435: Ambient modules cannot be nested in other modules. +tests/cases/compiler/ambientExternalModuleInAnotherExternalModule.ts(5,16): error TS2435: Ambient modules cannot be nested in other modules or namespaces. tests/cases/compiler/ambientExternalModuleInAnotherExternalModule.ts(10,22): error TS2307: Cannot find module 'ext'. @@ -9,7 +9,7 @@ tests/cases/compiler/ambientExternalModuleInAnotherExternalModule.ts(10,22): err declare module "ext" { ~~~~~ -!!! error TS2435: Ambient modules cannot be nested in other modules. +!!! error TS2435: Ambient modules cannot be nested in other modules or namespaces. export class C { } } diff --git a/tests/baselines/reference/ambientExternalModuleInsideNonAmbient.errors.txt b/tests/baselines/reference/ambientExternalModuleInsideNonAmbient.errors.txt index 87aae44840e..7e4ac795d0d 100644 --- a/tests/baselines/reference/ambientExternalModuleInsideNonAmbient.errors.txt +++ b/tests/baselines/reference/ambientExternalModuleInsideNonAmbient.errors.txt @@ -1,9 +1,9 @@ -tests/cases/conformance/ambient/ambientExternalModuleInsideNonAmbient.ts(2,27): error TS2435: Ambient modules cannot be nested in other modules. +tests/cases/conformance/ambient/ambientExternalModuleInsideNonAmbient.ts(2,27): error TS2435: Ambient modules cannot be nested in other modules or namespaces. ==== tests/cases/conformance/ambient/ambientExternalModuleInsideNonAmbient.ts (1 errors) ==== module M { export declare module "M" { } ~~~ -!!! error TS2435: Ambient modules cannot be nested in other modules. +!!! error TS2435: Ambient modules cannot be nested in other modules or namespaces. } \ No newline at end of file diff --git a/tests/baselines/reference/ambientExternalModuleInsideNonAmbientExternalModule.errors.txt b/tests/baselines/reference/ambientExternalModuleInsideNonAmbientExternalModule.errors.txt index 763317ecc0c..e5905aaaf8f 100644 --- a/tests/baselines/reference/ambientExternalModuleInsideNonAmbientExternalModule.errors.txt +++ b/tests/baselines/reference/ambientExternalModuleInsideNonAmbientExternalModule.errors.txt @@ -1,7 +1,7 @@ -tests/cases/conformance/ambient/ambientExternalModuleInsideNonAmbientExternalModule.ts(1,23): error TS2435: Ambient modules cannot be nested in other modules. +tests/cases/conformance/ambient/ambientExternalModuleInsideNonAmbientExternalModule.ts(1,23): error TS2435: Ambient modules cannot be nested in other modules or namespaces. ==== tests/cases/conformance/ambient/ambientExternalModuleInsideNonAmbientExternalModule.ts (1 errors) ==== export declare module "M" { } ~~~ -!!! error TS2435: Ambient modules cannot be nested in other modules. \ No newline at end of file +!!! error TS2435: Ambient modules cannot be nested in other modules or namespaces. \ No newline at end of file diff --git a/tests/baselines/reference/ambiguousCallsWhereReturnTypesAgree.types b/tests/baselines/reference/ambiguousCallsWhereReturnTypesAgree.types index d4df0f75d16..65f26f25770 100644 --- a/tests/baselines/reference/ambiguousCallsWhereReturnTypesAgree.types +++ b/tests/baselines/reference/ambiguousCallsWhereReturnTypesAgree.types @@ -31,7 +31,7 @@ class TestClass { this.bar(x); // should not error >this.bar(x) : void >this.bar : { (x: string): void; (x: string[]): void; } ->this : TestClass +>this : this >bar : { (x: string): void; (x: string[]): void; } >x : any } @@ -71,7 +71,7 @@ class TestClass2 { return this.bar(x); // should not error >this.bar(x) : number >this.bar : { (x: string): number; (x: string[]): number; } ->this : TestClass2 +>this : this >bar : { (x: string): number; (x: string[]): number; } >x : any } diff --git a/tests/baselines/reference/amdModuleName1.types b/tests/baselines/reference/amdModuleName1.types index 64bc7842451..c0db9c8b1b5 100644 --- a/tests/baselines/reference/amdModuleName1.types +++ b/tests/baselines/reference/amdModuleName1.types @@ -10,7 +10,7 @@ class Foo { this.x = 5; >this.x = 5 : number >this.x : number ->this : Foo +>this : this >x : number >5 : number } diff --git a/tests/baselines/reference/arityAndOrderCompatibility01.errors.txt b/tests/baselines/reference/arityAndOrderCompatibility01.errors.txt index d13e0a265f7..d60f0b7d03c 100644 --- a/tests/baselines/reference/arityAndOrderCompatibility01.errors.txt +++ b/tests/baselines/reference/arityAndOrderCompatibility01.errors.txt @@ -34,6 +34,8 @@ tests/cases/conformance/types/tuple/arityAndOrderCompatibility01.ts(25,5): error 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'. + Type 'string | number' is not assignable to type 'string'. + Type '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]'. @@ -125,6 +127,8 @@ tests/cases/conformance/types/tuple/arityAndOrderCompatibility01.ts(30,5): error !!! 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'. +!!! error TS2322: Type 'string | number' is not assignable to type 'string'. +!!! error TS2322: Type 'number' is not assignable to type 'string'. var m3: [string] = z; ~~ !!! error TS2322: Type '{ 0: string; 1: number; }' is not assignable to type '[string]'. diff --git a/tests/baselines/reference/arrayBestCommonTypes.types b/tests/baselines/reference/arrayBestCommonTypes.types index 20f36e5c459..fca66793f40 100644 --- a/tests/baselines/reference/arrayBestCommonTypes.types +++ b/tests/baselines/reference/arrayBestCommonTypes.types @@ -51,7 +51,7 @@ module EmptyTypes { >(this.voidIfAny([4, 2][0])) : number >this.voidIfAny([4, 2][0]) : number >this.voidIfAny : { (x: boolean, y?: boolean): number; (x: string, y?: boolean): number; (x: number, y?: boolean): number; } ->this : f +>this : this >voidIfAny : { (x: boolean, y?: boolean): number; (x: string, y?: boolean): number; (x: number, y?: boolean): number; } >[4, 2][0] : number >[4, 2] : number[] @@ -64,7 +64,7 @@ module EmptyTypes { >(this.voidIfAny([4, 2, undefined][0])) : number >this.voidIfAny([4, 2, undefined][0]) : number >this.voidIfAny : { (x: boolean, y?: boolean): number; (x: string, y?: boolean): number; (x: number, y?: boolean): number; } ->this : f +>this : this >voidIfAny : { (x: boolean, y?: boolean): number; (x: string, y?: boolean): number; (x: number, y?: boolean): number; } >[4, 2, undefined][0] : number >[4, 2, undefined] : number[] @@ -78,7 +78,7 @@ module EmptyTypes { >(this.voidIfAny([undefined, 2, 4][0])) : number >this.voidIfAny([undefined, 2, 4][0]) : number >this.voidIfAny : { (x: boolean, y?: boolean): number; (x: string, y?: boolean): number; (x: number, y?: boolean): number; } ->this : f +>this : this >voidIfAny : { (x: boolean, y?: boolean): number; (x: string, y?: boolean): number; (x: number, y?: boolean): number; } >[undefined, 2, 4][0] : number >[undefined, 2, 4] : number[] @@ -92,7 +92,7 @@ module EmptyTypes { >(this.voidIfAny([null, 2, 4][0])) : number >this.voidIfAny([null, 2, 4][0]) : number >this.voidIfAny : { (x: boolean, y?: boolean): number; (x: string, y?: boolean): number; (x: number, y?: boolean): number; } ->this : f +>this : this >voidIfAny : { (x: boolean, y?: boolean): number; (x: string, y?: boolean): number; (x: number, y?: boolean): number; } >[null, 2, 4][0] : number >[null, 2, 4] : number[] @@ -106,7 +106,7 @@ module EmptyTypes { >(this.voidIfAny([2, 4, null][0])) : number >this.voidIfAny([2, 4, null][0]) : number >this.voidIfAny : { (x: boolean, y?: boolean): number; (x: string, y?: boolean): number; (x: number, y?: boolean): number; } ->this : f +>this : this >voidIfAny : { (x: boolean, y?: boolean): number; (x: string, y?: boolean): number; (x: number, y?: boolean): number; } >[2, 4, null][0] : number >[2, 4, null] : number[] @@ -120,7 +120,7 @@ module EmptyTypes { >(this.voidIfAny([undefined, 4, null][0])) : number >this.voidIfAny([undefined, 4, null][0]) : number >this.voidIfAny : { (x: boolean, y?: boolean): number; (x: string, y?: boolean): number; (x: number, y?: boolean): number; } ->this : f +>this : this >voidIfAny : { (x: boolean, y?: boolean): number; (x: string, y?: boolean): number; (x: number, y?: boolean): number; } >[undefined, 4, null][0] : number >[undefined, 4, null] : number[] @@ -134,7 +134,7 @@ module EmptyTypes { >(this.voidIfAny(['', "q"][0])) : number >this.voidIfAny(['', "q"][0]) : number >this.voidIfAny : { (x: boolean, y?: boolean): number; (x: string, y?: boolean): number; (x: number, y?: boolean): number; } ->this : f +>this : this >voidIfAny : { (x: boolean, y?: boolean): number; (x: string, y?: boolean): number; (x: number, y?: boolean): number; } >['', "q"][0] : string >['', "q"] : string[] @@ -147,7 +147,7 @@ module EmptyTypes { >(this.voidIfAny(['', "q", undefined][0])) : number >this.voidIfAny(['', "q", undefined][0]) : number >this.voidIfAny : { (x: boolean, y?: boolean): number; (x: string, y?: boolean): number; (x: number, y?: boolean): number; } ->this : f +>this : this >voidIfAny : { (x: boolean, y?: boolean): number; (x: string, y?: boolean): number; (x: number, y?: boolean): number; } >['', "q", undefined][0] : string >['', "q", undefined] : string[] @@ -161,7 +161,7 @@ module EmptyTypes { >(this.voidIfAny([undefined, "q", ''][0])) : number >this.voidIfAny([undefined, "q", ''][0]) : number >this.voidIfAny : { (x: boolean, y?: boolean): number; (x: string, y?: boolean): number; (x: number, y?: boolean): number; } ->this : f +>this : this >voidIfAny : { (x: boolean, y?: boolean): number; (x: string, y?: boolean): number; (x: number, y?: boolean): number; } >[undefined, "q", ''][0] : string >[undefined, "q", ''] : string[] @@ -175,7 +175,7 @@ module EmptyTypes { >(this.voidIfAny([null, "q", ''][0])) : number >this.voidIfAny([null, "q", ''][0]) : number >this.voidIfAny : { (x: boolean, y?: boolean): number; (x: string, y?: boolean): number; (x: number, y?: boolean): number; } ->this : f +>this : this >voidIfAny : { (x: boolean, y?: boolean): number; (x: string, y?: boolean): number; (x: number, y?: boolean): number; } >[null, "q", ''][0] : string >[null, "q", ''] : string[] @@ -189,7 +189,7 @@ module EmptyTypes { >(this.voidIfAny(["q", '', null][0])) : number >this.voidIfAny(["q", '', null][0]) : number >this.voidIfAny : { (x: boolean, y?: boolean): number; (x: string, y?: boolean): number; (x: number, y?: boolean): number; } ->this : f +>this : this >voidIfAny : { (x: boolean, y?: boolean): number; (x: string, y?: boolean): number; (x: number, y?: boolean): number; } >["q", '', null][0] : string >["q", '', null] : string[] @@ -203,7 +203,7 @@ module EmptyTypes { >(this.voidIfAny([undefined, '', null][0])) : number >this.voidIfAny([undefined, '', null][0]) : number >this.voidIfAny : { (x: boolean, y?: boolean): number; (x: string, y?: boolean): number; (x: number, y?: boolean): number; } ->this : f +>this : this >voidIfAny : { (x: boolean, y?: boolean): number; (x: string, y?: boolean): number; (x: number, y?: boolean): number; } >[undefined, '', null][0] : string >[undefined, '', null] : string[] @@ -217,7 +217,7 @@ module EmptyTypes { >(this.voidIfAny([[3, 4], [null]][0][0])) : number >this.voidIfAny([[3, 4], [null]][0][0]) : number >this.voidIfAny : { (x: boolean, y?: boolean): number; (x: string, y?: boolean): number; (x: number, y?: boolean): number; } ->this : f +>this : this >voidIfAny : { (x: boolean, y?: boolean): number; (x: string, y?: boolean): number; (x: number, y?: boolean): number; } >[[3, 4], [null]][0][0] : number >[[3, 4], [null]][0] : number[] @@ -454,7 +454,7 @@ module NonEmptyTypes { >(this.voidIfAny([4, 2][0])) : number >this.voidIfAny([4, 2][0]) : number >this.voidIfAny : { (x: boolean, y?: boolean): number; (x: string, y?: boolean): number; (x: number, y?: boolean): number; } ->this : f +>this : this >voidIfAny : { (x: boolean, y?: boolean): number; (x: string, y?: boolean): number; (x: number, y?: boolean): number; } >[4, 2][0] : number >[4, 2] : number[] @@ -467,7 +467,7 @@ module NonEmptyTypes { >(this.voidIfAny([4, 2, undefined][0])) : number >this.voidIfAny([4, 2, undefined][0]) : number >this.voidIfAny : { (x: boolean, y?: boolean): number; (x: string, y?: boolean): number; (x: number, y?: boolean): number; } ->this : f +>this : this >voidIfAny : { (x: boolean, y?: boolean): number; (x: string, y?: boolean): number; (x: number, y?: boolean): number; } >[4, 2, undefined][0] : number >[4, 2, undefined] : number[] @@ -481,7 +481,7 @@ module NonEmptyTypes { >(this.voidIfAny([undefined, 2, 4][0])) : number >this.voidIfAny([undefined, 2, 4][0]) : number >this.voidIfAny : { (x: boolean, y?: boolean): number; (x: string, y?: boolean): number; (x: number, y?: boolean): number; } ->this : f +>this : this >voidIfAny : { (x: boolean, y?: boolean): number; (x: string, y?: boolean): number; (x: number, y?: boolean): number; } >[undefined, 2, 4][0] : number >[undefined, 2, 4] : number[] @@ -495,7 +495,7 @@ module NonEmptyTypes { >(this.voidIfAny([null, 2, 4][0])) : number >this.voidIfAny([null, 2, 4][0]) : number >this.voidIfAny : { (x: boolean, y?: boolean): number; (x: string, y?: boolean): number; (x: number, y?: boolean): number; } ->this : f +>this : this >voidIfAny : { (x: boolean, y?: boolean): number; (x: string, y?: boolean): number; (x: number, y?: boolean): number; } >[null, 2, 4][0] : number >[null, 2, 4] : number[] @@ -509,7 +509,7 @@ module NonEmptyTypes { >(this.voidIfAny([2, 4, null][0])) : number >this.voidIfAny([2, 4, null][0]) : number >this.voidIfAny : { (x: boolean, y?: boolean): number; (x: string, y?: boolean): number; (x: number, y?: boolean): number; } ->this : f +>this : this >voidIfAny : { (x: boolean, y?: boolean): number; (x: string, y?: boolean): number; (x: number, y?: boolean): number; } >[2, 4, null][0] : number >[2, 4, null] : number[] @@ -523,7 +523,7 @@ module NonEmptyTypes { >(this.voidIfAny([undefined, 4, null][0])) : number >this.voidIfAny([undefined, 4, null][0]) : number >this.voidIfAny : { (x: boolean, y?: boolean): number; (x: string, y?: boolean): number; (x: number, y?: boolean): number; } ->this : f +>this : this >voidIfAny : { (x: boolean, y?: boolean): number; (x: string, y?: boolean): number; (x: number, y?: boolean): number; } >[undefined, 4, null][0] : number >[undefined, 4, null] : number[] @@ -537,7 +537,7 @@ module NonEmptyTypes { >(this.voidIfAny(['', "q"][0])) : number >this.voidIfAny(['', "q"][0]) : number >this.voidIfAny : { (x: boolean, y?: boolean): number; (x: string, y?: boolean): number; (x: number, y?: boolean): number; } ->this : f +>this : this >voidIfAny : { (x: boolean, y?: boolean): number; (x: string, y?: boolean): number; (x: number, y?: boolean): number; } >['', "q"][0] : string >['', "q"] : string[] @@ -550,7 +550,7 @@ module NonEmptyTypes { >(this.voidIfAny(['', "q", undefined][0])) : number >this.voidIfAny(['', "q", undefined][0]) : number >this.voidIfAny : { (x: boolean, y?: boolean): number; (x: string, y?: boolean): number; (x: number, y?: boolean): number; } ->this : f +>this : this >voidIfAny : { (x: boolean, y?: boolean): number; (x: string, y?: boolean): number; (x: number, y?: boolean): number; } >['', "q", undefined][0] : string >['', "q", undefined] : string[] @@ -564,7 +564,7 @@ module NonEmptyTypes { >(this.voidIfAny([undefined, "q", ''][0])) : number >this.voidIfAny([undefined, "q", ''][0]) : number >this.voidIfAny : { (x: boolean, y?: boolean): number; (x: string, y?: boolean): number; (x: number, y?: boolean): number; } ->this : f +>this : this >voidIfAny : { (x: boolean, y?: boolean): number; (x: string, y?: boolean): number; (x: number, y?: boolean): number; } >[undefined, "q", ''][0] : string >[undefined, "q", ''] : string[] @@ -578,7 +578,7 @@ module NonEmptyTypes { >(this.voidIfAny([null, "q", ''][0])) : number >this.voidIfAny([null, "q", ''][0]) : number >this.voidIfAny : { (x: boolean, y?: boolean): number; (x: string, y?: boolean): number; (x: number, y?: boolean): number; } ->this : f +>this : this >voidIfAny : { (x: boolean, y?: boolean): number; (x: string, y?: boolean): number; (x: number, y?: boolean): number; } >[null, "q", ''][0] : string >[null, "q", ''] : string[] @@ -592,7 +592,7 @@ module NonEmptyTypes { >(this.voidIfAny(["q", '', null][0])) : number >this.voidIfAny(["q", '', null][0]) : number >this.voidIfAny : { (x: boolean, y?: boolean): number; (x: string, y?: boolean): number; (x: number, y?: boolean): number; } ->this : f +>this : this >voidIfAny : { (x: boolean, y?: boolean): number; (x: string, y?: boolean): number; (x: number, y?: boolean): number; } >["q", '', null][0] : string >["q", '', null] : string[] @@ -606,7 +606,7 @@ module NonEmptyTypes { >(this.voidIfAny([undefined, '', null][0])) : number >this.voidIfAny([undefined, '', null][0]) : number >this.voidIfAny : { (x: boolean, y?: boolean): number; (x: string, y?: boolean): number; (x: number, y?: boolean): number; } ->this : f +>this : this >voidIfAny : { (x: boolean, y?: boolean): number; (x: string, y?: boolean): number; (x: number, y?: boolean): number; } >[undefined, '', null][0] : string >[undefined, '', null] : string[] @@ -620,7 +620,7 @@ module NonEmptyTypes { >(this.voidIfAny([[3, 4], [null]][0][0])) : number >this.voidIfAny([[3, 4], [null]][0][0]) : number >this.voidIfAny : { (x: boolean, y?: boolean): number; (x: string, y?: boolean): number; (x: number, y?: boolean): number; } ->this : f +>this : this >voidIfAny : { (x: boolean, y?: boolean): number; (x: string, y?: boolean): number; (x: number, y?: boolean): number; } >[[3, 4], [null]][0][0] : number >[[3, 4], [null]][0] : number[] diff --git a/tests/baselines/reference/arrayLiterals2ES6.symbols b/tests/baselines/reference/arrayLiterals2ES6.symbols index fd31800e840..75202d69690 100644 --- a/tests/baselines/reference/arrayLiterals2ES6.symbols +++ b/tests/baselines/reference/arrayLiterals2ES6.symbols @@ -72,14 +72,14 @@ var temp2: [number[], string[]] = [[1, 2, 3], ["hello", "string"]]; interface myArray extends Array { } >myArray : Symbol(myArray, Decl(arrayLiterals2ES6.ts, 40, 67)) ->Array : Symbol(Array, Decl(lib.d.ts, 1000, 23), Decl(lib.d.ts, 1171, 11), Decl(lib.d.ts, 4091, 1)) +>Array : Symbol(Array, Decl(lib.d.ts, 1000, 23), Decl(lib.d.ts, 1171, 11), Decl(lib.d.ts, 4118, 1)) >Number : Symbol(Number, Decl(lib.d.ts, 456, 40), Decl(lib.d.ts, 518, 11)) interface myArray2 extends Array { } >myArray2 : Symbol(myArray2, Decl(arrayLiterals2ES6.ts, 42, 43)) ->Array : Symbol(Array, Decl(lib.d.ts, 1000, 23), Decl(lib.d.ts, 1171, 11), Decl(lib.d.ts, 4091, 1)) +>Array : Symbol(Array, Decl(lib.d.ts, 1000, 23), Decl(lib.d.ts, 1171, 11), Decl(lib.d.ts, 4118, 1)) >Number : Symbol(Number, Decl(lib.d.ts, 456, 40), Decl(lib.d.ts, 518, 11)) ->String : Symbol(String, Decl(lib.d.ts, 275, 1), Decl(lib.d.ts, 443, 11), Decl(lib.d.ts, 4209, 1)) +>String : Symbol(String, Decl(lib.d.ts, 275, 1), Decl(lib.d.ts, 443, 11), Decl(lib.d.ts, 4236, 1)) var d0 = [1, true, ...temp, ]; // has type (string|number|boolean)[] >d0 : Symbol(d0, Decl(arrayLiterals2ES6.ts, 44, 3)) diff --git a/tests/baselines/reference/arrayOfExportedClass.js b/tests/baselines/reference/arrayOfExportedClass.js index 7fde4aa6775..c3f81aca7b0 100644 --- a/tests/baselines/reference/arrayOfExportedClass.js +++ b/tests/baselines/reference/arrayOfExportedClass.js @@ -9,7 +9,7 @@ export = Car; //// [arrayOfExportedClass_1.ts] /// -import Car = require('arrayOfExportedClass_0'); +import Car = require('./arrayOfExportedClass_0'); class Road { diff --git a/tests/baselines/reference/arrayOfExportedClass.symbols b/tests/baselines/reference/arrayOfExportedClass.symbols index 3d0905a1e2d..bdcaf98eb0d 100644 --- a/tests/baselines/reference/arrayOfExportedClass.symbols +++ b/tests/baselines/reference/arrayOfExportedClass.symbols @@ -1,10 +1,10 @@ === tests/cases/compiler/arrayOfExportedClass_1.ts === /// -import Car = require('arrayOfExportedClass_0'); +import Car = require('./arrayOfExportedClass_0'); >Car : Symbol(Car, Decl(arrayOfExportedClass_1.ts, 0, 0)) class Road { ->Road : Symbol(Road, Decl(arrayOfExportedClass_1.ts, 1, 47)) +>Road : Symbol(Road, Decl(arrayOfExportedClass_1.ts, 1, 49)) public cars: Car[]; >cars : Symbol(cars, Decl(arrayOfExportedClass_1.ts, 3, 12)) @@ -17,14 +17,14 @@ class Road { this.cars = cars; >this.cars : Symbol(cars, Decl(arrayOfExportedClass_1.ts, 3, 12)) ->this : Symbol(Road, Decl(arrayOfExportedClass_1.ts, 1, 47)) +>this : Symbol(Road, Decl(arrayOfExportedClass_1.ts, 1, 49)) >cars : Symbol(cars, Decl(arrayOfExportedClass_1.ts, 3, 12)) >cars : Symbol(cars, Decl(arrayOfExportedClass_1.ts, 7, 19)) } } export = Road; ->Road : Symbol(Road, Decl(arrayOfExportedClass_1.ts, 1, 47)) +>Road : Symbol(Road, Decl(arrayOfExportedClass_1.ts, 1, 49)) === tests/cases/compiler/arrayOfExportedClass_0.ts === class Car { diff --git a/tests/baselines/reference/arrayOfExportedClass.types b/tests/baselines/reference/arrayOfExportedClass.types index 3d542b88d80..8447ed2841f 100644 --- a/tests/baselines/reference/arrayOfExportedClass.types +++ b/tests/baselines/reference/arrayOfExportedClass.types @@ -1,6 +1,6 @@ === tests/cases/compiler/arrayOfExportedClass_1.ts === /// -import Car = require('arrayOfExportedClass_0'); +import Car = require('./arrayOfExportedClass_0'); >Car : typeof Car class Road { @@ -18,7 +18,7 @@ class Road { this.cars = cars; >this.cars = cars : Car[] >this.cars : Car[] ->this : Road +>this : this >cars : Car[] >cars : Car[] } diff --git a/tests/baselines/reference/arrayconcat.types b/tests/baselines/reference/arrayconcat.types index 3560272a363..45615cd63b8 100644 --- a/tests/baselines/reference/arrayconcat.types +++ b/tests/baselines/reference/arrayconcat.types @@ -38,12 +38,12 @@ class parser { this.options = this.options.sort(function(a, b) { >this.options = this.options.sort(function(a, b) { var aName = a.name.toLowerCase(); var bName = b.name.toLowerCase(); if (aName > bName) { return 1; } else if (aName < bName) { return -1; } else { return 0; } }) : IOptions[] >this.options : IOptions[] ->this : parser +>this : this >options : IOptions[] >this.options.sort(function(a, b) { var aName = a.name.toLowerCase(); var bName = b.name.toLowerCase(); if (aName > bName) { return 1; } else if (aName < bName) { return -1; } else { return 0; } }) : IOptions[] >this.options.sort : (compareFn?: (a: IOptions, b: IOptions) => number) => IOptions[] >this.options : IOptions[] ->this : parser +>this : this >options : IOptions[] >sort : (compareFn?: (a: IOptions, b: IOptions) => number) => IOptions[] >function(a, b) { var aName = a.name.toLowerCase(); var bName = b.name.toLowerCase(); if (aName > bName) { return 1; } else if (aName < bName) { return -1; } else { return 0; } } : (a: IOptions, b: IOptions) => number diff --git a/tests/baselines/reference/arrowFunctionExpressions.types b/tests/baselines/reference/arrowFunctionExpressions.types index fc9fdb8a3bd..eedd20944fe 100644 --- a/tests/baselines/reference/arrowFunctionExpressions.types +++ b/tests/baselines/reference/arrowFunctionExpressions.types @@ -100,12 +100,12 @@ var p8 = ({ a = 1 }) => { }; >1 : number var p9 = ({ a: { b = 1 } = { b: 1 } }) => { }; ->p9 : ({ a: { b = 1 } = { b: 1 } }: { a?: { b: number; }; }) => void ->({ a: { b = 1 } = { b: 1 } }) => { } : ({ a: { b = 1 } = { b: 1 } }: { a?: { b: number; }; }) => void +>p9 : ({ a: { b = 1 } = { b: 1 } }: { a?: { b?: number; }; }) => void +>({ a: { b = 1 } = { b: 1 } }) => { } : ({ a: { b = 1 } = { b: 1 } }: { a?: { b?: number; }; }) => void >a : any >b : number >1 : number ->{ b: 1 } : { b: number; } +>{ b: 1 } : { b?: number; } >b : number >1 : number @@ -129,12 +129,12 @@ class MyClass { >1 : number p = (n) => n && this; ->p : (n: any) => MyClass ->(n) => n && this : (n: any) => MyClass +>p : (n: any) => this +>(n) => n && this : (n: any) => this >n : any ->n && this : MyClass +>n && this : this >n : any ->this : MyClass +>this : this fn() { >fn : () => void @@ -148,12 +148,12 @@ class MyClass { >1 : number var p = (n) => n && this; ->p : (n: any) => MyClass ->(n) => n && this : (n: any) => MyClass +>p : (n: any) => this +>(n) => n && this : (n: any) => this >n : any ->n && this : MyClass +>n && this : this >n : any ->this : MyClass +>this : this } } diff --git a/tests/baselines/reference/asOperator4.js b/tests/baselines/reference/asOperator4.js new file mode 100644 index 00000000000..906b807fe73 --- /dev/null +++ b/tests/baselines/reference/asOperator4.js @@ -0,0 +1,22 @@ +//// [tests/cases/conformance/expressions/asOperator/asOperator4.ts] //// + +//// [foo.ts] + +export function foo() { } + +//// [bar.ts] +import { foo } from './foo'; + +// These should emit identically +foo; +(foo as any); + + +//// [foo.js] +function foo() { } +exports.foo = foo; +//// [bar.js] +var foo_1 = require('./foo'); +// These should emit identically +foo_1.foo; +foo_1.foo; diff --git a/tests/baselines/reference/asOperator4.symbols b/tests/baselines/reference/asOperator4.symbols new file mode 100644 index 00000000000..4ee5f6fe83f --- /dev/null +++ b/tests/baselines/reference/asOperator4.symbols @@ -0,0 +1,16 @@ +=== tests/cases/conformance/expressions/asOperator/foo.ts === + +export function foo() { } +>foo : Symbol(foo, Decl(foo.ts, 0, 0)) + +=== tests/cases/conformance/expressions/asOperator/bar.ts === +import { foo } from './foo'; +>foo : Symbol(foo, Decl(bar.ts, 0, 8)) + +// These should emit identically +foo; +>foo : Symbol(foo, Decl(bar.ts, 0, 8)) + +(foo as any); +>foo : Symbol(foo, Decl(bar.ts, 0, 8)) + diff --git a/tests/baselines/reference/asOperator4.types b/tests/baselines/reference/asOperator4.types new file mode 100644 index 00000000000..0dc6be46a2c --- /dev/null +++ b/tests/baselines/reference/asOperator4.types @@ -0,0 +1,19 @@ +=== tests/cases/conformance/expressions/asOperator/foo.ts === + +export function foo() { } +>foo : () => void + +=== tests/cases/conformance/expressions/asOperator/bar.ts === +import { foo } from './foo'; +>foo : () => void + +// These should emit identically +foo; +>foo : any +>foo : () => void + +(foo as any); +>(foo as any) : any +>foo as any : any +>foo : () => void + diff --git a/tests/baselines/reference/asyncArrowFunction1_es6.symbols b/tests/baselines/reference/asyncArrowFunction1_es6.symbols index 0da7c4433b3..349a51c43ba 100644 --- a/tests/baselines/reference/asyncArrowFunction1_es6.symbols +++ b/tests/baselines/reference/asyncArrowFunction1_es6.symbols @@ -2,6 +2,6 @@ var foo = async (): Promise => { >foo : Symbol(foo, Decl(asyncArrowFunction1_es6.ts, 1, 3)) ->Promise : Symbol(Promise, Decl(lib.d.ts, 5041, 1), Decl(lib.d.ts, 5127, 11)) +>Promise : Symbol(Promise, Decl(lib.d.ts, 5068, 1), Decl(lib.d.ts, 5154, 11)) }; diff --git a/tests/baselines/reference/asyncArrowFunctionCapturesArguments_es6.types b/tests/baselines/reference/asyncArrowFunctionCapturesArguments_es6.types index b3f6f18cde8..76853858c5c 100644 --- a/tests/baselines/reference/asyncArrowFunctionCapturesArguments_es6.types +++ b/tests/baselines/reference/asyncArrowFunctionCapturesArguments_es6.types @@ -11,11 +11,12 @@ class C { var fn = async () => await other.apply(this, arguments); >fn : () => Promise >async () => await other.apply(this, arguments) : () => Promise +>await other.apply(this, arguments) : any >other.apply(this, arguments) : any >other.apply : (thisArg: any, argArray?: any) => any >other : () => void >apply : (thisArg: any, argArray?: any) => any ->this : C +>this : this >arguments : IArguments } } diff --git a/tests/baselines/reference/asyncArrowFunctionCapturesThis_es6.types b/tests/baselines/reference/asyncArrowFunctionCapturesThis_es6.types index f3cd0f2d2de..5386a956ada 100644 --- a/tests/baselines/reference/asyncArrowFunctionCapturesThis_es6.types +++ b/tests/baselines/reference/asyncArrowFunctionCapturesThis_es6.types @@ -6,9 +6,10 @@ class C { >method : () => void var fn = async () => await this; ->fn : () => Promise ->async () => await this : () => Promise ->this : C +>fn : () => Promise +>async () => await this : () => Promise +>await this : this +>this : this } } diff --git a/tests/baselines/reference/asyncAwait_es6.symbols b/tests/baselines/reference/asyncAwait_es6.symbols index 6f492b07d1b..2eb28e12211 100644 --- a/tests/baselines/reference/asyncAwait_es6.symbols +++ b/tests/baselines/reference/asyncAwait_es6.symbols @@ -2,16 +2,16 @@ type MyPromise = Promise; >MyPromise : Symbol(MyPromise, Decl(asyncAwait_es6.ts, 0, 0), Decl(asyncAwait_es6.ts, 1, 11)) >T : Symbol(T, Decl(asyncAwait_es6.ts, 0, 15)) ->Promise : Symbol(Promise, Decl(lib.d.ts, 5041, 1), Decl(lib.d.ts, 5127, 11)) +>Promise : Symbol(Promise, Decl(lib.d.ts, 5068, 1), Decl(lib.d.ts, 5154, 11)) >T : Symbol(T, Decl(asyncAwait_es6.ts, 0, 15)) declare var MyPromise: typeof Promise; >MyPromise : Symbol(MyPromise, Decl(asyncAwait_es6.ts, 0, 0), Decl(asyncAwait_es6.ts, 1, 11)) ->Promise : Symbol(Promise, Decl(lib.d.ts, 5041, 1), Decl(lib.d.ts, 5127, 11)) +>Promise : Symbol(Promise, Decl(lib.d.ts, 5068, 1), Decl(lib.d.ts, 5154, 11)) declare var p: Promise; >p : Symbol(p, Decl(asyncAwait_es6.ts, 2, 11)) ->Promise : Symbol(Promise, Decl(lib.d.ts, 5041, 1), Decl(lib.d.ts, 5127, 11)) +>Promise : Symbol(Promise, Decl(lib.d.ts, 5068, 1), Decl(lib.d.ts, 5154, 11)) declare var mp: MyPromise; >mp : Symbol(mp, Decl(asyncAwait_es6.ts, 3, 11)) @@ -22,7 +22,7 @@ async function f0() { } async function f1(): Promise { } >f1 : Symbol(f1, Decl(asyncAwait_es6.ts, 5, 23)) ->Promise : Symbol(Promise, Decl(lib.d.ts, 5041, 1), Decl(lib.d.ts, 5127, 11)) +>Promise : Symbol(Promise, Decl(lib.d.ts, 5068, 1), Decl(lib.d.ts, 5154, 11)) async function f3(): MyPromise { } >f3 : Symbol(f3, Decl(asyncAwait_es6.ts, 6, 38)) @@ -33,7 +33,7 @@ let f4 = async function() { } let f5 = async function(): Promise { } >f5 : Symbol(f5, Decl(asyncAwait_es6.ts, 10, 3)) ->Promise : Symbol(Promise, Decl(lib.d.ts, 5041, 1), Decl(lib.d.ts, 5127, 11)) +>Promise : Symbol(Promise, Decl(lib.d.ts, 5068, 1), Decl(lib.d.ts, 5154, 11)) let f6 = async function(): MyPromise { } >f6 : Symbol(f6, Decl(asyncAwait_es6.ts, 11, 3)) @@ -44,7 +44,7 @@ let f7 = async () => { }; let f8 = async (): Promise => { }; >f8 : Symbol(f8, Decl(asyncAwait_es6.ts, 14, 3)) ->Promise : Symbol(Promise, Decl(lib.d.ts, 5041, 1), Decl(lib.d.ts, 5127, 11)) +>Promise : Symbol(Promise, Decl(lib.d.ts, 5068, 1), Decl(lib.d.ts, 5154, 11)) let f9 = async (): MyPromise => { }; >f9 : Symbol(f9, Decl(asyncAwait_es6.ts, 15, 3)) @@ -60,7 +60,7 @@ let f11 = async () => mp; let f12 = async (): Promise => mp; >f12 : Symbol(f12, Decl(asyncAwait_es6.ts, 18, 3)) ->Promise : Symbol(Promise, Decl(lib.d.ts, 5041, 1), Decl(lib.d.ts, 5127, 11)) +>Promise : Symbol(Promise, Decl(lib.d.ts, 5068, 1), Decl(lib.d.ts, 5154, 11)) >mp : Symbol(mp, Decl(asyncAwait_es6.ts, 3, 11)) let f13 = async (): MyPromise => p; @@ -76,7 +76,7 @@ let o = { async m2(): Promise { }, >m2 : Symbol(m2, Decl(asyncAwait_es6.ts, 22, 16)) ->Promise : Symbol(Promise, Decl(lib.d.ts, 5041, 1), Decl(lib.d.ts, 5127, 11)) +>Promise : Symbol(Promise, Decl(lib.d.ts, 5068, 1), Decl(lib.d.ts, 5154, 11)) async m3(): MyPromise { } >m3 : Symbol(m3, Decl(asyncAwait_es6.ts, 23, 31)) @@ -92,7 +92,7 @@ class C { async m2(): Promise { } >m2 : Symbol(m2, Decl(asyncAwait_es6.ts, 28, 15)) ->Promise : Symbol(Promise, Decl(lib.d.ts, 5041, 1), Decl(lib.d.ts, 5127, 11)) +>Promise : Symbol(Promise, Decl(lib.d.ts, 5068, 1), Decl(lib.d.ts, 5154, 11)) async m3(): MyPromise { } >m3 : Symbol(m3, Decl(asyncAwait_es6.ts, 29, 30)) @@ -103,7 +103,7 @@ class C { static async m5(): Promise { } >m5 : Symbol(C.m5, Decl(asyncAwait_es6.ts, 31, 22)) ->Promise : Symbol(Promise, Decl(lib.d.ts, 5041, 1), Decl(lib.d.ts, 5127, 11)) +>Promise : Symbol(Promise, Decl(lib.d.ts, 5068, 1), Decl(lib.d.ts, 5154, 11)) static async m6(): MyPromise { } >m6 : Symbol(C.m6, Decl(asyncAwait_es6.ts, 32, 37)) diff --git a/tests/baselines/reference/asyncFunctionDeclaration11_es6.symbols b/tests/baselines/reference/asyncFunctionDeclaration11_es6.symbols index f7574402c80..b970dbbf888 100644 --- a/tests/baselines/reference/asyncFunctionDeclaration11_es6.symbols +++ b/tests/baselines/reference/asyncFunctionDeclaration11_es6.symbols @@ -1,5 +1,5 @@ === tests/cases/conformance/async/es6/functionDeclarations/asyncFunctionDeclaration11_es6.ts === async function await(): Promise { >await : Symbol(await, Decl(asyncFunctionDeclaration11_es6.ts, 0, 0)) ->Promise : Symbol(Promise, Decl(lib.d.ts, 5041, 1), Decl(lib.d.ts, 5127, 11)) +>Promise : Symbol(Promise, Decl(lib.d.ts, 5068, 1), Decl(lib.d.ts, 5154, 11)) } diff --git a/tests/baselines/reference/asyncFunctionDeclaration14_es6.symbols b/tests/baselines/reference/asyncFunctionDeclaration14_es6.symbols index 97dc419ba47..d17f4bf899e 100644 --- a/tests/baselines/reference/asyncFunctionDeclaration14_es6.symbols +++ b/tests/baselines/reference/asyncFunctionDeclaration14_es6.symbols @@ -1,7 +1,7 @@ === tests/cases/conformance/async/es6/functionDeclarations/asyncFunctionDeclaration14_es6.ts === async function foo(): Promise { >foo : Symbol(foo, Decl(asyncFunctionDeclaration14_es6.ts, 0, 0)) ->Promise : Symbol(Promise, Decl(lib.d.ts, 5041, 1), Decl(lib.d.ts, 5127, 11)) +>Promise : Symbol(Promise, Decl(lib.d.ts, 5068, 1), Decl(lib.d.ts, 5154, 11)) return; } diff --git a/tests/baselines/reference/asyncFunctionDeclaration1_es6.symbols b/tests/baselines/reference/asyncFunctionDeclaration1_es6.symbols index 35e4394c82d..c99ae35266b 100644 --- a/tests/baselines/reference/asyncFunctionDeclaration1_es6.symbols +++ b/tests/baselines/reference/asyncFunctionDeclaration1_es6.symbols @@ -1,5 +1,5 @@ === tests/cases/conformance/async/es6/functionDeclarations/asyncFunctionDeclaration1_es6.ts === async function foo(): Promise { >foo : Symbol(foo, Decl(asyncFunctionDeclaration1_es6.ts, 0, 0)) ->Promise : Symbol(Promise, Decl(lib.d.ts, 5041, 1), Decl(lib.d.ts, 5127, 11)) +>Promise : Symbol(Promise, Decl(lib.d.ts, 5068, 1), Decl(lib.d.ts, 5154, 11)) } diff --git a/tests/baselines/reference/awaitBinaryExpression1_es6.symbols b/tests/baselines/reference/awaitBinaryExpression1_es6.symbols index b91d8bf9492..6ee2b1de415 100644 --- a/tests/baselines/reference/awaitBinaryExpression1_es6.symbols +++ b/tests/baselines/reference/awaitBinaryExpression1_es6.symbols @@ -4,15 +4,16 @@ declare var a: boolean; declare var p: Promise; >p : Symbol(p, Decl(awaitBinaryExpression1_es6.ts, 1, 11)) ->Promise : Symbol(Promise, Decl(lib.d.ts, 5041, 1), Decl(lib.d.ts, 5127, 11)) +>Promise : Symbol(Promise, Decl(lib.d.ts, 5068, 1), Decl(lib.d.ts, 5154, 11)) async function func(): Promise { >func : Symbol(func, Decl(awaitBinaryExpression1_es6.ts, 1, 32)) ->Promise : Symbol(Promise, Decl(lib.d.ts, 5041, 1), Decl(lib.d.ts, 5127, 11)) +>Promise : Symbol(Promise, Decl(lib.d.ts, 5068, 1), Decl(lib.d.ts, 5154, 11)) "before"; var b = await p || a; >b : Symbol(b, Decl(awaitBinaryExpression1_es6.ts, 4, 7)) +>p : Symbol(p, Decl(awaitBinaryExpression1_es6.ts, 1, 11)) >a : Symbol(a, Decl(awaitBinaryExpression1_es6.ts, 0, 11)) "after"; diff --git a/tests/baselines/reference/awaitBinaryExpression1_es6.types b/tests/baselines/reference/awaitBinaryExpression1_es6.types index 59370dda14b..4718f5f8fe9 100644 --- a/tests/baselines/reference/awaitBinaryExpression1_es6.types +++ b/tests/baselines/reference/awaitBinaryExpression1_es6.types @@ -16,7 +16,8 @@ async function func(): Promise { var b = await p || a; >b : boolean >await p || a : boolean ->p : any +>await p : boolean +>p : Promise >a : boolean "after"; diff --git a/tests/baselines/reference/awaitBinaryExpression2_es6.symbols b/tests/baselines/reference/awaitBinaryExpression2_es6.symbols index 60127a06b90..9c65780cfad 100644 --- a/tests/baselines/reference/awaitBinaryExpression2_es6.symbols +++ b/tests/baselines/reference/awaitBinaryExpression2_es6.symbols @@ -4,15 +4,16 @@ declare var a: boolean; declare var p: Promise; >p : Symbol(p, Decl(awaitBinaryExpression2_es6.ts, 1, 11)) ->Promise : Symbol(Promise, Decl(lib.d.ts, 5041, 1), Decl(lib.d.ts, 5127, 11)) +>Promise : Symbol(Promise, Decl(lib.d.ts, 5068, 1), Decl(lib.d.ts, 5154, 11)) async function func(): Promise { >func : Symbol(func, Decl(awaitBinaryExpression2_es6.ts, 1, 32)) ->Promise : Symbol(Promise, Decl(lib.d.ts, 5041, 1), Decl(lib.d.ts, 5127, 11)) +>Promise : Symbol(Promise, Decl(lib.d.ts, 5068, 1), Decl(lib.d.ts, 5154, 11)) "before"; var b = await p && a; >b : Symbol(b, Decl(awaitBinaryExpression2_es6.ts, 4, 7)) +>p : Symbol(p, Decl(awaitBinaryExpression2_es6.ts, 1, 11)) >a : Symbol(a, Decl(awaitBinaryExpression2_es6.ts, 0, 11)) "after"; diff --git a/tests/baselines/reference/awaitBinaryExpression2_es6.types b/tests/baselines/reference/awaitBinaryExpression2_es6.types index c3f33bca2fa..6154377a6f1 100644 --- a/tests/baselines/reference/awaitBinaryExpression2_es6.types +++ b/tests/baselines/reference/awaitBinaryExpression2_es6.types @@ -16,7 +16,8 @@ async function func(): Promise { var b = await p && a; >b : boolean >await p && a : boolean ->p : any +>await p : boolean +>p : Promise >a : boolean "after"; diff --git a/tests/baselines/reference/awaitBinaryExpression3_es6.symbols b/tests/baselines/reference/awaitBinaryExpression3_es6.symbols index 83f006bc285..69d02403e85 100644 --- a/tests/baselines/reference/awaitBinaryExpression3_es6.symbols +++ b/tests/baselines/reference/awaitBinaryExpression3_es6.symbols @@ -4,15 +4,16 @@ declare var a: number; declare var p: Promise; >p : Symbol(p, Decl(awaitBinaryExpression3_es6.ts, 1, 11)) ->Promise : Symbol(Promise, Decl(lib.d.ts, 5041, 1), Decl(lib.d.ts, 5127, 11)) +>Promise : Symbol(Promise, Decl(lib.d.ts, 5068, 1), Decl(lib.d.ts, 5154, 11)) async function func(): Promise { >func : Symbol(func, Decl(awaitBinaryExpression3_es6.ts, 1, 31)) ->Promise : Symbol(Promise, Decl(lib.d.ts, 5041, 1), Decl(lib.d.ts, 5127, 11)) +>Promise : Symbol(Promise, Decl(lib.d.ts, 5068, 1), Decl(lib.d.ts, 5154, 11)) "before"; var b = await p + a; >b : Symbol(b, Decl(awaitBinaryExpression3_es6.ts, 4, 7)) +>p : Symbol(p, Decl(awaitBinaryExpression3_es6.ts, 1, 11)) >a : Symbol(a, Decl(awaitBinaryExpression3_es6.ts, 0, 11)) "after"; diff --git a/tests/baselines/reference/awaitBinaryExpression3_es6.types b/tests/baselines/reference/awaitBinaryExpression3_es6.types index 786eabadae4..2d5b087d6e3 100644 --- a/tests/baselines/reference/awaitBinaryExpression3_es6.types +++ b/tests/baselines/reference/awaitBinaryExpression3_es6.types @@ -16,7 +16,8 @@ async function func(): Promise { var b = await p + a; >b : number >await p + a : number ->p : any +>await p : number +>p : Promise >a : number "after"; diff --git a/tests/baselines/reference/awaitBinaryExpression4_es6.symbols b/tests/baselines/reference/awaitBinaryExpression4_es6.symbols index 38e9ccfe608..c88e0f247a5 100644 --- a/tests/baselines/reference/awaitBinaryExpression4_es6.symbols +++ b/tests/baselines/reference/awaitBinaryExpression4_es6.symbols @@ -4,15 +4,16 @@ declare var a: boolean; declare var p: Promise; >p : Symbol(p, Decl(awaitBinaryExpression4_es6.ts, 1, 11)) ->Promise : Symbol(Promise, Decl(lib.d.ts, 5041, 1), Decl(lib.d.ts, 5127, 11)) +>Promise : Symbol(Promise, Decl(lib.d.ts, 5068, 1), Decl(lib.d.ts, 5154, 11)) async function func(): Promise { >func : Symbol(func, Decl(awaitBinaryExpression4_es6.ts, 1, 32)) ->Promise : Symbol(Promise, Decl(lib.d.ts, 5041, 1), Decl(lib.d.ts, 5127, 11)) +>Promise : Symbol(Promise, Decl(lib.d.ts, 5068, 1), Decl(lib.d.ts, 5154, 11)) "before"; var b = await p, a; >b : Symbol(b, Decl(awaitBinaryExpression4_es6.ts, 4, 7)) +>p : Symbol(p, Decl(awaitBinaryExpression4_es6.ts, 1, 11)) >a : Symbol(a, Decl(awaitBinaryExpression4_es6.ts, 4, 20)) "after"; diff --git a/tests/baselines/reference/awaitBinaryExpression4_es6.types b/tests/baselines/reference/awaitBinaryExpression4_es6.types index 73126b7797d..80135203a82 100644 --- a/tests/baselines/reference/awaitBinaryExpression4_es6.types +++ b/tests/baselines/reference/awaitBinaryExpression4_es6.types @@ -15,7 +15,8 @@ async function func(): Promise { var b = await p, a; >b : boolean ->p : any +>await p : boolean +>p : Promise >a : any "after"; diff --git a/tests/baselines/reference/awaitBinaryExpression5_es6.symbols b/tests/baselines/reference/awaitBinaryExpression5_es6.symbols index 161d697b75b..0ee4a03f3c5 100644 --- a/tests/baselines/reference/awaitBinaryExpression5_es6.symbols +++ b/tests/baselines/reference/awaitBinaryExpression5_es6.symbols @@ -4,11 +4,11 @@ declare var a: boolean; declare var p: Promise; >p : Symbol(p, Decl(awaitBinaryExpression5_es6.ts, 1, 11)) ->Promise : Symbol(Promise, Decl(lib.d.ts, 5041, 1), Decl(lib.d.ts, 5127, 11)) +>Promise : Symbol(Promise, Decl(lib.d.ts, 5068, 1), Decl(lib.d.ts, 5154, 11)) async function func(): Promise { >func : Symbol(func, Decl(awaitBinaryExpression5_es6.ts, 1, 32)) ->Promise : Symbol(Promise, Decl(lib.d.ts, 5041, 1), Decl(lib.d.ts, 5127, 11)) +>Promise : Symbol(Promise, Decl(lib.d.ts, 5068, 1), Decl(lib.d.ts, 5154, 11)) "before"; var o: { a: boolean; }; @@ -19,6 +19,7 @@ async function func(): Promise { >o.a : Symbol(a, Decl(awaitBinaryExpression5_es6.ts, 4, 12)) >o : Symbol(o, Decl(awaitBinaryExpression5_es6.ts, 4, 7)) >a : Symbol(a, Decl(awaitBinaryExpression5_es6.ts, 4, 12)) +>p : Symbol(p, Decl(awaitBinaryExpression5_es6.ts, 1, 11)) "after"; } diff --git a/tests/baselines/reference/awaitBinaryExpression5_es6.types b/tests/baselines/reference/awaitBinaryExpression5_es6.types index 922e5887a77..8b76b6f8b88 100644 --- a/tests/baselines/reference/awaitBinaryExpression5_es6.types +++ b/tests/baselines/reference/awaitBinaryExpression5_es6.types @@ -22,7 +22,8 @@ async function func(): Promise { >o.a : boolean >o : { a: boolean; } >a : boolean ->p : any +>await p : boolean +>p : Promise "after"; >"after" : string diff --git a/tests/baselines/reference/awaitCallExpression1_es6.symbols b/tests/baselines/reference/awaitCallExpression1_es6.symbols index 8c6494d34af..d70728a5b2d 100644 --- a/tests/baselines/reference/awaitCallExpression1_es6.symbols +++ b/tests/baselines/reference/awaitCallExpression1_es6.symbols @@ -4,7 +4,7 @@ declare var a: boolean; declare var p: Promise; >p : Symbol(p, Decl(awaitCallExpression1_es6.ts, 1, 11)) ->Promise : Symbol(Promise, Decl(lib.d.ts, 5041, 1), Decl(lib.d.ts, 5127, 11)) +>Promise : Symbol(Promise, Decl(lib.d.ts, 5068, 1), Decl(lib.d.ts, 5154, 11)) declare function fn(arg0: boolean, arg1: boolean, arg2: boolean): void; >fn : Symbol(fn, Decl(awaitCallExpression1_es6.ts, 1, 32)) @@ -21,14 +21,14 @@ declare var o: { fn(arg0: boolean, arg1: boolean, arg2: boolean): void; }; declare var pfn: Promise<{ (arg0: boolean, arg1: boolean, arg2: boolean): void; }>; >pfn : Symbol(pfn, Decl(awaitCallExpression1_es6.ts, 4, 11)) ->Promise : Symbol(Promise, Decl(lib.d.ts, 5041, 1), Decl(lib.d.ts, 5127, 11)) +>Promise : Symbol(Promise, Decl(lib.d.ts, 5068, 1), Decl(lib.d.ts, 5154, 11)) >arg0 : Symbol(arg0, Decl(awaitCallExpression1_es6.ts, 4, 28)) >arg1 : Symbol(arg1, Decl(awaitCallExpression1_es6.ts, 4, 42)) >arg2 : Symbol(arg2, Decl(awaitCallExpression1_es6.ts, 4, 57)) declare var po: Promise<{ fn(arg0: boolean, arg1: boolean, arg2: boolean): void; }>; >po : Symbol(po, Decl(awaitCallExpression1_es6.ts, 5, 11)) ->Promise : Symbol(Promise, Decl(lib.d.ts, 5041, 1), Decl(lib.d.ts, 5127, 11)) +>Promise : Symbol(Promise, Decl(lib.d.ts, 5068, 1), Decl(lib.d.ts, 5154, 11)) >fn : Symbol(fn, Decl(awaitCallExpression1_es6.ts, 5, 25)) >arg0 : Symbol(arg0, Decl(awaitCallExpression1_es6.ts, 5, 29)) >arg1 : Symbol(arg1, Decl(awaitCallExpression1_es6.ts, 5, 43)) @@ -36,7 +36,7 @@ declare var po: Promise<{ fn(arg0: boolean, arg1: boolean, arg2: boolean): void; async function func(): Promise { >func : Symbol(func, Decl(awaitCallExpression1_es6.ts, 5, 84)) ->Promise : Symbol(Promise, Decl(lib.d.ts, 5041, 1), Decl(lib.d.ts, 5127, 11)) +>Promise : Symbol(Promise, Decl(lib.d.ts, 5068, 1), Decl(lib.d.ts, 5154, 11)) "before"; var b = fn(a, a, a); diff --git a/tests/baselines/reference/awaitCallExpression2_es6.symbols b/tests/baselines/reference/awaitCallExpression2_es6.symbols index db8cff67f01..a3fd474060a 100644 --- a/tests/baselines/reference/awaitCallExpression2_es6.symbols +++ b/tests/baselines/reference/awaitCallExpression2_es6.symbols @@ -4,7 +4,7 @@ declare var a: boolean; declare var p: Promise; >p : Symbol(p, Decl(awaitCallExpression2_es6.ts, 1, 11)) ->Promise : Symbol(Promise, Decl(lib.d.ts, 5041, 1), Decl(lib.d.ts, 5127, 11)) +>Promise : Symbol(Promise, Decl(lib.d.ts, 5068, 1), Decl(lib.d.ts, 5154, 11)) declare function fn(arg0: boolean, arg1: boolean, arg2: boolean): void; >fn : Symbol(fn, Decl(awaitCallExpression2_es6.ts, 1, 32)) @@ -21,14 +21,14 @@ declare var o: { fn(arg0: boolean, arg1: boolean, arg2: boolean): void; }; declare var pfn: Promise<{ (arg0: boolean, arg1: boolean, arg2: boolean): void; }>; >pfn : Symbol(pfn, Decl(awaitCallExpression2_es6.ts, 4, 11)) ->Promise : Symbol(Promise, Decl(lib.d.ts, 5041, 1), Decl(lib.d.ts, 5127, 11)) +>Promise : Symbol(Promise, Decl(lib.d.ts, 5068, 1), Decl(lib.d.ts, 5154, 11)) >arg0 : Symbol(arg0, Decl(awaitCallExpression2_es6.ts, 4, 28)) >arg1 : Symbol(arg1, Decl(awaitCallExpression2_es6.ts, 4, 42)) >arg2 : Symbol(arg2, Decl(awaitCallExpression2_es6.ts, 4, 57)) declare var po: Promise<{ fn(arg0: boolean, arg1: boolean, arg2: boolean): void; }>; >po : Symbol(po, Decl(awaitCallExpression2_es6.ts, 5, 11)) ->Promise : Symbol(Promise, Decl(lib.d.ts, 5041, 1), Decl(lib.d.ts, 5127, 11)) +>Promise : Symbol(Promise, Decl(lib.d.ts, 5068, 1), Decl(lib.d.ts, 5154, 11)) >fn : Symbol(fn, Decl(awaitCallExpression2_es6.ts, 5, 25)) >arg0 : Symbol(arg0, Decl(awaitCallExpression2_es6.ts, 5, 29)) >arg1 : Symbol(arg1, Decl(awaitCallExpression2_es6.ts, 5, 43)) @@ -36,12 +36,13 @@ declare var po: Promise<{ fn(arg0: boolean, arg1: boolean, arg2: boolean): void; async function func(): Promise { >func : Symbol(func, Decl(awaitCallExpression2_es6.ts, 5, 84)) ->Promise : Symbol(Promise, Decl(lib.d.ts, 5041, 1), Decl(lib.d.ts, 5127, 11)) +>Promise : Symbol(Promise, Decl(lib.d.ts, 5068, 1), Decl(lib.d.ts, 5154, 11)) "before"; var b = fn(await p, a, a); >b : Symbol(b, Decl(awaitCallExpression2_es6.ts, 8, 7)) >fn : Symbol(fn, Decl(awaitCallExpression2_es6.ts, 1, 32)) +>p : Symbol(p, Decl(awaitCallExpression2_es6.ts, 1, 11)) >a : Symbol(a, Decl(awaitCallExpression2_es6.ts, 0, 11)) >a : Symbol(a, Decl(awaitCallExpression2_es6.ts, 0, 11)) diff --git a/tests/baselines/reference/awaitCallExpression2_es6.types b/tests/baselines/reference/awaitCallExpression2_es6.types index 6c7f02a578a..1617f4a14ff 100644 --- a/tests/baselines/reference/awaitCallExpression2_es6.types +++ b/tests/baselines/reference/awaitCallExpression2_es6.types @@ -45,7 +45,8 @@ async function func(): Promise { >b : void >fn(await p, a, a) : void >fn : (arg0: boolean, arg1: boolean, arg2: boolean) => void ->p : any +>await p : boolean +>p : Promise >a : boolean >a : boolean diff --git a/tests/baselines/reference/awaitCallExpression3_es6.symbols b/tests/baselines/reference/awaitCallExpression3_es6.symbols index e2b0e8a9137..6dde8fc7f58 100644 --- a/tests/baselines/reference/awaitCallExpression3_es6.symbols +++ b/tests/baselines/reference/awaitCallExpression3_es6.symbols @@ -4,7 +4,7 @@ declare var a: boolean; declare var p: Promise; >p : Symbol(p, Decl(awaitCallExpression3_es6.ts, 1, 11)) ->Promise : Symbol(Promise, Decl(lib.d.ts, 5041, 1), Decl(lib.d.ts, 5127, 11)) +>Promise : Symbol(Promise, Decl(lib.d.ts, 5068, 1), Decl(lib.d.ts, 5154, 11)) declare function fn(arg0: boolean, arg1: boolean, arg2: boolean): void; >fn : Symbol(fn, Decl(awaitCallExpression3_es6.ts, 1, 32)) @@ -21,14 +21,14 @@ declare var o: { fn(arg0: boolean, arg1: boolean, arg2: boolean): void; }; declare var pfn: Promise<{ (arg0: boolean, arg1: boolean, arg2: boolean): void; }>; >pfn : Symbol(pfn, Decl(awaitCallExpression3_es6.ts, 4, 11)) ->Promise : Symbol(Promise, Decl(lib.d.ts, 5041, 1), Decl(lib.d.ts, 5127, 11)) +>Promise : Symbol(Promise, Decl(lib.d.ts, 5068, 1), Decl(lib.d.ts, 5154, 11)) >arg0 : Symbol(arg0, Decl(awaitCallExpression3_es6.ts, 4, 28)) >arg1 : Symbol(arg1, Decl(awaitCallExpression3_es6.ts, 4, 42)) >arg2 : Symbol(arg2, Decl(awaitCallExpression3_es6.ts, 4, 57)) declare var po: Promise<{ fn(arg0: boolean, arg1: boolean, arg2: boolean): void; }>; >po : Symbol(po, Decl(awaitCallExpression3_es6.ts, 5, 11)) ->Promise : Symbol(Promise, Decl(lib.d.ts, 5041, 1), Decl(lib.d.ts, 5127, 11)) +>Promise : Symbol(Promise, Decl(lib.d.ts, 5068, 1), Decl(lib.d.ts, 5154, 11)) >fn : Symbol(fn, Decl(awaitCallExpression3_es6.ts, 5, 25)) >arg0 : Symbol(arg0, Decl(awaitCallExpression3_es6.ts, 5, 29)) >arg1 : Symbol(arg1, Decl(awaitCallExpression3_es6.ts, 5, 43)) @@ -36,13 +36,14 @@ declare var po: Promise<{ fn(arg0: boolean, arg1: boolean, arg2: boolean): void; async function func(): Promise { >func : Symbol(func, Decl(awaitCallExpression3_es6.ts, 5, 84)) ->Promise : Symbol(Promise, Decl(lib.d.ts, 5041, 1), Decl(lib.d.ts, 5127, 11)) +>Promise : Symbol(Promise, Decl(lib.d.ts, 5068, 1), Decl(lib.d.ts, 5154, 11)) "before"; var b = fn(a, await p, a); >b : Symbol(b, Decl(awaitCallExpression3_es6.ts, 8, 7)) >fn : Symbol(fn, Decl(awaitCallExpression3_es6.ts, 1, 32)) >a : Symbol(a, Decl(awaitCallExpression3_es6.ts, 0, 11)) +>p : Symbol(p, Decl(awaitCallExpression3_es6.ts, 1, 11)) >a : Symbol(a, Decl(awaitCallExpression3_es6.ts, 0, 11)) "after"; diff --git a/tests/baselines/reference/awaitCallExpression3_es6.types b/tests/baselines/reference/awaitCallExpression3_es6.types index 24d22db3c8c..6304a803f64 100644 --- a/tests/baselines/reference/awaitCallExpression3_es6.types +++ b/tests/baselines/reference/awaitCallExpression3_es6.types @@ -46,7 +46,8 @@ async function func(): Promise { >fn(a, await p, a) : void >fn : (arg0: boolean, arg1: boolean, arg2: boolean) => void >a : boolean ->p : any +>await p : boolean +>p : Promise >a : boolean "after"; diff --git a/tests/baselines/reference/awaitCallExpression4_es6.symbols b/tests/baselines/reference/awaitCallExpression4_es6.symbols index 75067422152..ca563274b51 100644 --- a/tests/baselines/reference/awaitCallExpression4_es6.symbols +++ b/tests/baselines/reference/awaitCallExpression4_es6.symbols @@ -4,7 +4,7 @@ declare var a: boolean; declare var p: Promise; >p : Symbol(p, Decl(awaitCallExpression4_es6.ts, 1, 11)) ->Promise : Symbol(Promise, Decl(lib.d.ts, 5041, 1), Decl(lib.d.ts, 5127, 11)) +>Promise : Symbol(Promise, Decl(lib.d.ts, 5068, 1), Decl(lib.d.ts, 5154, 11)) declare function fn(arg0: boolean, arg1: boolean, arg2: boolean): void; >fn : Symbol(fn, Decl(awaitCallExpression4_es6.ts, 1, 32)) @@ -21,14 +21,14 @@ declare var o: { fn(arg0: boolean, arg1: boolean, arg2: boolean): void; }; declare var pfn: Promise<{ (arg0: boolean, arg1: boolean, arg2: boolean): void; }>; >pfn : Symbol(pfn, Decl(awaitCallExpression4_es6.ts, 4, 11)) ->Promise : Symbol(Promise, Decl(lib.d.ts, 5041, 1), Decl(lib.d.ts, 5127, 11)) +>Promise : Symbol(Promise, Decl(lib.d.ts, 5068, 1), Decl(lib.d.ts, 5154, 11)) >arg0 : Symbol(arg0, Decl(awaitCallExpression4_es6.ts, 4, 28)) >arg1 : Symbol(arg1, Decl(awaitCallExpression4_es6.ts, 4, 42)) >arg2 : Symbol(arg2, Decl(awaitCallExpression4_es6.ts, 4, 57)) declare var po: Promise<{ fn(arg0: boolean, arg1: boolean, arg2: boolean): void; }>; >po : Symbol(po, Decl(awaitCallExpression4_es6.ts, 5, 11)) ->Promise : Symbol(Promise, Decl(lib.d.ts, 5041, 1), Decl(lib.d.ts, 5127, 11)) +>Promise : Symbol(Promise, Decl(lib.d.ts, 5068, 1), Decl(lib.d.ts, 5154, 11)) >fn : Symbol(fn, Decl(awaitCallExpression4_es6.ts, 5, 25)) >arg0 : Symbol(arg0, Decl(awaitCallExpression4_es6.ts, 5, 29)) >arg1 : Symbol(arg1, Decl(awaitCallExpression4_es6.ts, 5, 43)) @@ -36,11 +36,12 @@ declare var po: Promise<{ fn(arg0: boolean, arg1: boolean, arg2: boolean): void; async function func(): Promise { >func : Symbol(func, Decl(awaitCallExpression4_es6.ts, 5, 84)) ->Promise : Symbol(Promise, Decl(lib.d.ts, 5041, 1), Decl(lib.d.ts, 5127, 11)) +>Promise : Symbol(Promise, Decl(lib.d.ts, 5068, 1), Decl(lib.d.ts, 5154, 11)) "before"; var b = (await pfn)(a, a, a); >b : Symbol(b, Decl(awaitCallExpression4_es6.ts, 8, 7)) +>pfn : Symbol(pfn, Decl(awaitCallExpression4_es6.ts, 4, 11)) >a : Symbol(a, Decl(awaitCallExpression4_es6.ts, 0, 11)) >a : Symbol(a, Decl(awaitCallExpression4_es6.ts, 0, 11)) >a : Symbol(a, Decl(awaitCallExpression4_es6.ts, 0, 11)) diff --git a/tests/baselines/reference/awaitCallExpression4_es6.types b/tests/baselines/reference/awaitCallExpression4_es6.types index 04115466427..ff5d8f4012b 100644 --- a/tests/baselines/reference/awaitCallExpression4_es6.types +++ b/tests/baselines/reference/awaitCallExpression4_es6.types @@ -45,7 +45,8 @@ async function func(): Promise { >b : void >(await pfn)(a, a, a) : void >(await pfn) : (arg0: boolean, arg1: boolean, arg2: boolean) => void ->pfn : any +>await pfn : (arg0: boolean, arg1: boolean, arg2: boolean) => void +>pfn : Promise<(arg0: boolean, arg1: boolean, arg2: boolean) => void> >a : boolean >a : boolean >a : boolean diff --git a/tests/baselines/reference/awaitCallExpression5_es6.symbols b/tests/baselines/reference/awaitCallExpression5_es6.symbols index d9c9cb9ed9a..4c75a6fec6d 100644 --- a/tests/baselines/reference/awaitCallExpression5_es6.symbols +++ b/tests/baselines/reference/awaitCallExpression5_es6.symbols @@ -4,7 +4,7 @@ declare var a: boolean; declare var p: Promise; >p : Symbol(p, Decl(awaitCallExpression5_es6.ts, 1, 11)) ->Promise : Symbol(Promise, Decl(lib.d.ts, 5041, 1), Decl(lib.d.ts, 5127, 11)) +>Promise : Symbol(Promise, Decl(lib.d.ts, 5068, 1), Decl(lib.d.ts, 5154, 11)) declare function fn(arg0: boolean, arg1: boolean, arg2: boolean): void; >fn : Symbol(fn, Decl(awaitCallExpression5_es6.ts, 1, 32)) @@ -21,14 +21,14 @@ declare var o: { fn(arg0: boolean, arg1: boolean, arg2: boolean): void; }; declare var pfn: Promise<{ (arg0: boolean, arg1: boolean, arg2: boolean): void; }>; >pfn : Symbol(pfn, Decl(awaitCallExpression5_es6.ts, 4, 11)) ->Promise : Symbol(Promise, Decl(lib.d.ts, 5041, 1), Decl(lib.d.ts, 5127, 11)) +>Promise : Symbol(Promise, Decl(lib.d.ts, 5068, 1), Decl(lib.d.ts, 5154, 11)) >arg0 : Symbol(arg0, Decl(awaitCallExpression5_es6.ts, 4, 28)) >arg1 : Symbol(arg1, Decl(awaitCallExpression5_es6.ts, 4, 42)) >arg2 : Symbol(arg2, Decl(awaitCallExpression5_es6.ts, 4, 57)) declare var po: Promise<{ fn(arg0: boolean, arg1: boolean, arg2: boolean): void; }>; >po : Symbol(po, Decl(awaitCallExpression5_es6.ts, 5, 11)) ->Promise : Symbol(Promise, Decl(lib.d.ts, 5041, 1), Decl(lib.d.ts, 5127, 11)) +>Promise : Symbol(Promise, Decl(lib.d.ts, 5068, 1), Decl(lib.d.ts, 5154, 11)) >fn : Symbol(fn, Decl(awaitCallExpression5_es6.ts, 5, 25)) >arg0 : Symbol(arg0, Decl(awaitCallExpression5_es6.ts, 5, 29)) >arg1 : Symbol(arg1, Decl(awaitCallExpression5_es6.ts, 5, 43)) @@ -36,7 +36,7 @@ declare var po: Promise<{ fn(arg0: boolean, arg1: boolean, arg2: boolean): void; async function func(): Promise { >func : Symbol(func, Decl(awaitCallExpression5_es6.ts, 5, 84)) ->Promise : Symbol(Promise, Decl(lib.d.ts, 5041, 1), Decl(lib.d.ts, 5127, 11)) +>Promise : Symbol(Promise, Decl(lib.d.ts, 5068, 1), Decl(lib.d.ts, 5154, 11)) "before"; var b = o.fn(a, a, a); diff --git a/tests/baselines/reference/awaitCallExpression6_es6.symbols b/tests/baselines/reference/awaitCallExpression6_es6.symbols index ee9779e68e8..effed91ec06 100644 --- a/tests/baselines/reference/awaitCallExpression6_es6.symbols +++ b/tests/baselines/reference/awaitCallExpression6_es6.symbols @@ -4,7 +4,7 @@ declare var a: boolean; declare var p: Promise; >p : Symbol(p, Decl(awaitCallExpression6_es6.ts, 1, 11)) ->Promise : Symbol(Promise, Decl(lib.d.ts, 5041, 1), Decl(lib.d.ts, 5127, 11)) +>Promise : Symbol(Promise, Decl(lib.d.ts, 5068, 1), Decl(lib.d.ts, 5154, 11)) declare function fn(arg0: boolean, arg1: boolean, arg2: boolean): void; >fn : Symbol(fn, Decl(awaitCallExpression6_es6.ts, 1, 32)) @@ -21,14 +21,14 @@ declare var o: { fn(arg0: boolean, arg1: boolean, arg2: boolean): void; }; declare var pfn: Promise<{ (arg0: boolean, arg1: boolean, arg2: boolean): void; }>; >pfn : Symbol(pfn, Decl(awaitCallExpression6_es6.ts, 4, 11)) ->Promise : Symbol(Promise, Decl(lib.d.ts, 5041, 1), Decl(lib.d.ts, 5127, 11)) +>Promise : Symbol(Promise, Decl(lib.d.ts, 5068, 1), Decl(lib.d.ts, 5154, 11)) >arg0 : Symbol(arg0, Decl(awaitCallExpression6_es6.ts, 4, 28)) >arg1 : Symbol(arg1, Decl(awaitCallExpression6_es6.ts, 4, 42)) >arg2 : Symbol(arg2, Decl(awaitCallExpression6_es6.ts, 4, 57)) declare var po: Promise<{ fn(arg0: boolean, arg1: boolean, arg2: boolean): void; }>; >po : Symbol(po, Decl(awaitCallExpression6_es6.ts, 5, 11)) ->Promise : Symbol(Promise, Decl(lib.d.ts, 5041, 1), Decl(lib.d.ts, 5127, 11)) +>Promise : Symbol(Promise, Decl(lib.d.ts, 5068, 1), Decl(lib.d.ts, 5154, 11)) >fn : Symbol(fn, Decl(awaitCallExpression6_es6.ts, 5, 25)) >arg0 : Symbol(arg0, Decl(awaitCallExpression6_es6.ts, 5, 29)) >arg1 : Symbol(arg1, Decl(awaitCallExpression6_es6.ts, 5, 43)) @@ -36,7 +36,7 @@ declare var po: Promise<{ fn(arg0: boolean, arg1: boolean, arg2: boolean): void; async function func(): Promise { >func : Symbol(func, Decl(awaitCallExpression6_es6.ts, 5, 84)) ->Promise : Symbol(Promise, Decl(lib.d.ts, 5041, 1), Decl(lib.d.ts, 5127, 11)) +>Promise : Symbol(Promise, Decl(lib.d.ts, 5068, 1), Decl(lib.d.ts, 5154, 11)) "before"; var b = o.fn(await p, a, a); @@ -44,6 +44,7 @@ async function func(): Promise { >o.fn : Symbol(fn, Decl(awaitCallExpression6_es6.ts, 3, 16)) >o : Symbol(o, Decl(awaitCallExpression6_es6.ts, 3, 11)) >fn : Symbol(fn, Decl(awaitCallExpression6_es6.ts, 3, 16)) +>p : Symbol(p, Decl(awaitCallExpression6_es6.ts, 1, 11)) >a : Symbol(a, Decl(awaitCallExpression6_es6.ts, 0, 11)) >a : Symbol(a, Decl(awaitCallExpression6_es6.ts, 0, 11)) diff --git a/tests/baselines/reference/awaitCallExpression6_es6.types b/tests/baselines/reference/awaitCallExpression6_es6.types index d18377cebbb..3266733fab0 100644 --- a/tests/baselines/reference/awaitCallExpression6_es6.types +++ b/tests/baselines/reference/awaitCallExpression6_es6.types @@ -47,7 +47,8 @@ async function func(): Promise { >o.fn : (arg0: boolean, arg1: boolean, arg2: boolean) => void >o : { fn(arg0: boolean, arg1: boolean, arg2: boolean): void; } >fn : (arg0: boolean, arg1: boolean, arg2: boolean) => void ->p : any +>await p : boolean +>p : Promise >a : boolean >a : boolean diff --git a/tests/baselines/reference/awaitCallExpression7_es6.symbols b/tests/baselines/reference/awaitCallExpression7_es6.symbols index 51ce2db20a2..3393d2a0759 100644 --- a/tests/baselines/reference/awaitCallExpression7_es6.symbols +++ b/tests/baselines/reference/awaitCallExpression7_es6.symbols @@ -4,7 +4,7 @@ declare var a: boolean; declare var p: Promise; >p : Symbol(p, Decl(awaitCallExpression7_es6.ts, 1, 11)) ->Promise : Symbol(Promise, Decl(lib.d.ts, 5041, 1), Decl(lib.d.ts, 5127, 11)) +>Promise : Symbol(Promise, Decl(lib.d.ts, 5068, 1), Decl(lib.d.ts, 5154, 11)) declare function fn(arg0: boolean, arg1: boolean, arg2: boolean): void; >fn : Symbol(fn, Decl(awaitCallExpression7_es6.ts, 1, 32)) @@ -21,14 +21,14 @@ declare var o: { fn(arg0: boolean, arg1: boolean, arg2: boolean): void; }; declare var pfn: Promise<{ (arg0: boolean, arg1: boolean, arg2: boolean): void; }>; >pfn : Symbol(pfn, Decl(awaitCallExpression7_es6.ts, 4, 11)) ->Promise : Symbol(Promise, Decl(lib.d.ts, 5041, 1), Decl(lib.d.ts, 5127, 11)) +>Promise : Symbol(Promise, Decl(lib.d.ts, 5068, 1), Decl(lib.d.ts, 5154, 11)) >arg0 : Symbol(arg0, Decl(awaitCallExpression7_es6.ts, 4, 28)) >arg1 : Symbol(arg1, Decl(awaitCallExpression7_es6.ts, 4, 42)) >arg2 : Symbol(arg2, Decl(awaitCallExpression7_es6.ts, 4, 57)) declare var po: Promise<{ fn(arg0: boolean, arg1: boolean, arg2: boolean): void; }>; >po : Symbol(po, Decl(awaitCallExpression7_es6.ts, 5, 11)) ->Promise : Symbol(Promise, Decl(lib.d.ts, 5041, 1), Decl(lib.d.ts, 5127, 11)) +>Promise : Symbol(Promise, Decl(lib.d.ts, 5068, 1), Decl(lib.d.ts, 5154, 11)) >fn : Symbol(fn, Decl(awaitCallExpression7_es6.ts, 5, 25)) >arg0 : Symbol(arg0, Decl(awaitCallExpression7_es6.ts, 5, 29)) >arg1 : Symbol(arg1, Decl(awaitCallExpression7_es6.ts, 5, 43)) @@ -36,7 +36,7 @@ declare var po: Promise<{ fn(arg0: boolean, arg1: boolean, arg2: boolean): void; async function func(): Promise { >func : Symbol(func, Decl(awaitCallExpression7_es6.ts, 5, 84)) ->Promise : Symbol(Promise, Decl(lib.d.ts, 5041, 1), Decl(lib.d.ts, 5127, 11)) +>Promise : Symbol(Promise, Decl(lib.d.ts, 5068, 1), Decl(lib.d.ts, 5154, 11)) "before"; var b = o.fn(a, await p, a); @@ -45,6 +45,7 @@ async function func(): Promise { >o : Symbol(o, Decl(awaitCallExpression7_es6.ts, 3, 11)) >fn : Symbol(fn, Decl(awaitCallExpression7_es6.ts, 3, 16)) >a : Symbol(a, Decl(awaitCallExpression7_es6.ts, 0, 11)) +>p : Symbol(p, Decl(awaitCallExpression7_es6.ts, 1, 11)) >a : Symbol(a, Decl(awaitCallExpression7_es6.ts, 0, 11)) "after"; diff --git a/tests/baselines/reference/awaitCallExpression7_es6.types b/tests/baselines/reference/awaitCallExpression7_es6.types index b213a75dcd6..b1b382f7325 100644 --- a/tests/baselines/reference/awaitCallExpression7_es6.types +++ b/tests/baselines/reference/awaitCallExpression7_es6.types @@ -48,7 +48,8 @@ async function func(): Promise { >o : { fn(arg0: boolean, arg1: boolean, arg2: boolean): void; } >fn : (arg0: boolean, arg1: boolean, arg2: boolean) => void >a : boolean ->p : any +>await p : boolean +>p : Promise >a : boolean "after"; diff --git a/tests/baselines/reference/awaitCallExpression8_es6.symbols b/tests/baselines/reference/awaitCallExpression8_es6.symbols index be3a841cce1..331ebbdb7e1 100644 --- a/tests/baselines/reference/awaitCallExpression8_es6.symbols +++ b/tests/baselines/reference/awaitCallExpression8_es6.symbols @@ -4,7 +4,7 @@ declare var a: boolean; declare var p: Promise; >p : Symbol(p, Decl(awaitCallExpression8_es6.ts, 1, 11)) ->Promise : Symbol(Promise, Decl(lib.d.ts, 5041, 1), Decl(lib.d.ts, 5127, 11)) +>Promise : Symbol(Promise, Decl(lib.d.ts, 5068, 1), Decl(lib.d.ts, 5154, 11)) declare function fn(arg0: boolean, arg1: boolean, arg2: boolean): void; >fn : Symbol(fn, Decl(awaitCallExpression8_es6.ts, 1, 32)) @@ -21,14 +21,14 @@ declare var o: { fn(arg0: boolean, arg1: boolean, arg2: boolean): void; }; declare var pfn: Promise<{ (arg0: boolean, arg1: boolean, arg2: boolean): void; }>; >pfn : Symbol(pfn, Decl(awaitCallExpression8_es6.ts, 4, 11)) ->Promise : Symbol(Promise, Decl(lib.d.ts, 5041, 1), Decl(lib.d.ts, 5127, 11)) +>Promise : Symbol(Promise, Decl(lib.d.ts, 5068, 1), Decl(lib.d.ts, 5154, 11)) >arg0 : Symbol(arg0, Decl(awaitCallExpression8_es6.ts, 4, 28)) >arg1 : Symbol(arg1, Decl(awaitCallExpression8_es6.ts, 4, 42)) >arg2 : Symbol(arg2, Decl(awaitCallExpression8_es6.ts, 4, 57)) declare var po: Promise<{ fn(arg0: boolean, arg1: boolean, arg2: boolean): void; }>; >po : Symbol(po, Decl(awaitCallExpression8_es6.ts, 5, 11)) ->Promise : Symbol(Promise, Decl(lib.d.ts, 5041, 1), Decl(lib.d.ts, 5127, 11)) +>Promise : Symbol(Promise, Decl(lib.d.ts, 5068, 1), Decl(lib.d.ts, 5154, 11)) >fn : Symbol(fn, Decl(awaitCallExpression8_es6.ts, 5, 25)) >arg0 : Symbol(arg0, Decl(awaitCallExpression8_es6.ts, 5, 29)) >arg1 : Symbol(arg1, Decl(awaitCallExpression8_es6.ts, 5, 43)) @@ -36,12 +36,13 @@ declare var po: Promise<{ fn(arg0: boolean, arg1: boolean, arg2: boolean): void; async function func(): Promise { >func : Symbol(func, Decl(awaitCallExpression8_es6.ts, 5, 84)) ->Promise : Symbol(Promise, Decl(lib.d.ts, 5041, 1), Decl(lib.d.ts, 5127, 11)) +>Promise : Symbol(Promise, Decl(lib.d.ts, 5068, 1), Decl(lib.d.ts, 5154, 11)) "before"; var b = (await po).fn(a, a, a); >b : Symbol(b, Decl(awaitCallExpression8_es6.ts, 8, 7)) >(await po).fn : Symbol(fn, Decl(awaitCallExpression8_es6.ts, 5, 25)) +>po : Symbol(po, Decl(awaitCallExpression8_es6.ts, 5, 11)) >fn : Symbol(fn, Decl(awaitCallExpression8_es6.ts, 5, 25)) >a : Symbol(a, Decl(awaitCallExpression8_es6.ts, 0, 11)) >a : Symbol(a, Decl(awaitCallExpression8_es6.ts, 0, 11)) diff --git a/tests/baselines/reference/awaitCallExpression8_es6.types b/tests/baselines/reference/awaitCallExpression8_es6.types index 37511a7e3d7..76719c09c85 100644 --- a/tests/baselines/reference/awaitCallExpression8_es6.types +++ b/tests/baselines/reference/awaitCallExpression8_es6.types @@ -46,7 +46,8 @@ async function func(): Promise { >(await po).fn(a, a, a) : void >(await po).fn : (arg0: boolean, arg1: boolean, arg2: boolean) => void >(await po) : { fn(arg0: boolean, arg1: boolean, arg2: boolean): void; } ->po : any +>await po : { fn(arg0: boolean, arg1: boolean, arg2: boolean): void; } +>po : Promise<{ fn(arg0: boolean, arg1: boolean, arg2: boolean): void; }> >fn : (arg0: boolean, arg1: boolean, arg2: boolean) => void >a : boolean >a : boolean diff --git a/tests/baselines/reference/awaitUnion_es6.symbols b/tests/baselines/reference/awaitUnion_es6.symbols index ca0b9afaf92..2db3b1a2fdb 100644 --- a/tests/baselines/reference/awaitUnion_es6.symbols +++ b/tests/baselines/reference/awaitUnion_es6.symbols @@ -24,16 +24,21 @@ async function f() { let await_a = await a; >await_a : Symbol(await_a, Decl(awaitUnion_es6.ts, 6, 4)) +>a : Symbol(a, Decl(awaitUnion_es6.ts, 0, 11)) let await_b = await b; >await_b : Symbol(await_b, Decl(awaitUnion_es6.ts, 7, 4)) +>b : Symbol(b, Decl(awaitUnion_es6.ts, 1, 11)) let await_c = await c; >await_c : Symbol(await_c, Decl(awaitUnion_es6.ts, 8, 4)) +>c : Symbol(c, Decl(awaitUnion_es6.ts, 2, 11)) let await_d = await d; >await_d : Symbol(await_d, Decl(awaitUnion_es6.ts, 9, 4)) +>d : Symbol(d, Decl(awaitUnion_es6.ts, 3, 11)) let await_e = await e; >await_e : Symbol(await_e, Decl(awaitUnion_es6.ts, 10, 4)) +>e : Symbol(e, Decl(awaitUnion_es6.ts, 4, 11)) } diff --git a/tests/baselines/reference/awaitUnion_es6.types b/tests/baselines/reference/awaitUnion_es6.types index d0b5b6ccfd0..97d4bd2fc57 100644 --- a/tests/baselines/reference/awaitUnion_es6.types +++ b/tests/baselines/reference/awaitUnion_es6.types @@ -24,21 +24,26 @@ async function f() { let await_a = await a; >await_a : number | string ->a : any +>await a : number | string +>a : number | string let await_b = await b; >await_b : number | string ->b : any +>await b : number | string +>b : PromiseLike | PromiseLike let await_c = await c; >await_c : number | string ->c : any +>await c : number | string +>c : PromiseLike let await_d = await d; >await_d : number | string ->d : any +>await d : number | string +>d : number | PromiseLike let await_e = await e; >await_e : number | string ->e : any +>await e : number | string +>e : number | PromiseLike } diff --git a/tests/baselines/reference/badThisBinding.types b/tests/baselines/reference/badThisBinding.types index a6b1c478d53..201f3e70288 100644 --- a/tests/baselines/reference/badThisBinding.types +++ b/tests/baselines/reference/badThisBinding.types @@ -22,8 +22,8 @@ class Greeter { >() => { var x = this; } : () => void var x = this; ->x : Greeter ->this : Greeter +>x : this +>this : this }); }); diff --git a/tests/baselines/reference/baseTypeWrappingInstantiationChain.types b/tests/baselines/reference/baseTypeWrappingInstantiationChain.types index 747b672dd0d..ba702171de9 100644 --- a/tests/baselines/reference/baseTypeWrappingInstantiationChain.types +++ b/tests/baselines/reference/baseTypeWrappingInstantiationChain.types @@ -13,7 +13,7 @@ class C extends CBase { >CBaseBase : typeof CBaseBase >Wrapper : Wrapper >T1 : T1 ->this : C +>this : this } public alsoWorks() { >alsoWorks : () => void @@ -22,7 +22,7 @@ class C extends CBase { >new CBase(this) : CBase >CBase : typeof CBase >T1 : T1 ->this : C +>this : this } public method(t: Wrapper) { } diff --git a/tests/baselines/reference/binopAssignmentShouldHaveType.types b/tests/baselines/reference/binopAssignmentShouldHaveType.types index fdef2fbcabd..d09138bbb88 100644 --- a/tests/baselines/reference/binopAssignmentShouldHaveType.types +++ b/tests/baselines/reference/binopAssignmentShouldHaveType.types @@ -32,7 +32,7 @@ module Test { >name : string >this.getName() : string >this.getName : () => string ->this : Bug +>this : this >getName : () => string >length : number >0 : number diff --git a/tests/baselines/reference/callWithSpread.types b/tests/baselines/reference/callWithSpread.types index 8964708c05e..eae92c471e9 100644 --- a/tests/baselines/reference/callWithSpread.types +++ b/tests/baselines/reference/callWithSpread.types @@ -180,7 +180,7 @@ class C { this.foo(x, y); >this.foo(x, y) : void >this.foo : (x: number, y: number, ...z: string[]) => void ->this : C +>this : this >foo : (x: number, y: number, ...z: string[]) => void >x : number >y : number @@ -188,7 +188,7 @@ class C { this.foo(x, y, ...z); >this.foo(x, y, ...z) : void >this.foo : (x: number, y: number, ...z: string[]) => void ->this : C +>this : this >foo : (x: number, y: number, ...z: string[]) => void >x : number >y : number diff --git a/tests/baselines/reference/callWithSpreadES6.symbols b/tests/baselines/reference/callWithSpreadES6.symbols index 8e84f48948f..d8604d8358a 100644 --- a/tests/baselines/reference/callWithSpreadES6.symbols +++ b/tests/baselines/reference/callWithSpreadES6.symbols @@ -94,7 +94,7 @@ xa[1].foo(1, 2, ...a, "abc"); >a : Symbol(a, Decl(callWithSpreadES6.ts, 8, 3)) (xa[1].foo)(...[1, 2, "abc"]); ->Function : Symbol(Function, Decl(lib.d.ts, 223, 38), Decl(lib.d.ts, 269, 11), Decl(lib.d.ts, 4009, 1)) +>Function : Symbol(Function, Decl(lib.d.ts, 223, 38), Decl(lib.d.ts, 269, 11), Decl(lib.d.ts, 4036, 1)) >xa[1].foo : Symbol(X.foo, Decl(callWithSpreadES6.ts, 1, 13)) >xa : Symbol(xa, Decl(callWithSpreadES6.ts, 11, 3)) >foo : Symbol(X.foo, Decl(callWithSpreadES6.ts, 1, 13)) diff --git a/tests/baselines/reference/callWithSpreadES6.types b/tests/baselines/reference/callWithSpreadES6.types index 9c9e795ce24..b0c118855fe 100644 --- a/tests/baselines/reference/callWithSpreadES6.types +++ b/tests/baselines/reference/callWithSpreadES6.types @@ -181,7 +181,7 @@ class C { this.foo(x, y); >this.foo(x, y) : void >this.foo : (x: number, y: number, ...z: string[]) => void ->this : C +>this : this >foo : (x: number, y: number, ...z: string[]) => void >x : number >y : number @@ -189,7 +189,7 @@ class C { this.foo(x, y, ...z); >this.foo(x, y, ...z) : void >this.foo : (x: number, y: number, ...z: string[]) => void ->this : C +>this : this >foo : (x: number, y: number, ...z: string[]) => void >x : number >y : number diff --git a/tests/baselines/reference/captureThisInSuperCall.types b/tests/baselines/reference/captureThisInSuperCall.types index faa7d2ad97e..4a0902e9f1e 100644 --- a/tests/baselines/reference/captureThisInSuperCall.types +++ b/tests/baselines/reference/captureThisInSuperCall.types @@ -18,7 +18,7 @@ class B extends A { >() => this.someMethod() : () => void >this.someMethod() : void >this.someMethod : () => void ->this : B +>this : this >someMethod : () => void someMethod() {} diff --git a/tests/baselines/reference/chainedImportAlias.js b/tests/baselines/reference/chainedImportAlias.js index 077a92d7450..ec751b0329a 100644 --- a/tests/baselines/reference/chainedImportAlias.js +++ b/tests/baselines/reference/chainedImportAlias.js @@ -6,7 +6,7 @@ export module m { } //// [chainedImportAlias_file1.ts] -import x = require('chainedImportAlias_file0'); +import x = require('./chainedImportAlias_file0'); import y = x; y.m.foo(); @@ -18,6 +18,6 @@ var m; m.foo = foo; })(m = exports.m || (exports.m = {})); //// [chainedImportAlias_file1.js] -var x = require('chainedImportAlias_file0'); +var x = require('./chainedImportAlias_file0'); var y = x; y.m.foo(); diff --git a/tests/baselines/reference/chainedImportAlias.symbols b/tests/baselines/reference/chainedImportAlias.symbols index 3aebb4502f8..0f374305aeb 100644 --- a/tests/baselines/reference/chainedImportAlias.symbols +++ b/tests/baselines/reference/chainedImportAlias.symbols @@ -1,15 +1,15 @@ === tests/cases/compiler/chainedImportAlias_file1.ts === -import x = require('chainedImportAlias_file0'); +import x = require('./chainedImportAlias_file0'); >x : Symbol(x, Decl(chainedImportAlias_file1.ts, 0, 0)) import y = x; ->y : Symbol(y, Decl(chainedImportAlias_file1.ts, 0, 47)) +>y : Symbol(y, Decl(chainedImportAlias_file1.ts, 0, 49)) >x : Symbol(x, Decl(chainedImportAlias_file0.ts, 0, 0)) y.m.foo(); >y.m.foo : Symbol(x.m.foo, Decl(chainedImportAlias_file0.ts, 0, 17)) >y.m : Symbol(x.m, Decl(chainedImportAlias_file0.ts, 0, 0)) ->y : Symbol(y, Decl(chainedImportAlias_file1.ts, 0, 47)) +>y : Symbol(y, Decl(chainedImportAlias_file1.ts, 0, 49)) >m : Symbol(x.m, Decl(chainedImportAlias_file0.ts, 0, 0)) >foo : Symbol(x.m.foo, Decl(chainedImportAlias_file0.ts, 0, 17)) diff --git a/tests/baselines/reference/chainedImportAlias.types b/tests/baselines/reference/chainedImportAlias.types index 1435776fff2..db06c833d0b 100644 --- a/tests/baselines/reference/chainedImportAlias.types +++ b/tests/baselines/reference/chainedImportAlias.types @@ -1,5 +1,5 @@ === tests/cases/compiler/chainedImportAlias_file1.ts === -import x = require('chainedImportAlias_file0'); +import x = require('./chainedImportAlias_file0'); >x : typeof x import y = x; diff --git a/tests/baselines/reference/classAbstractDeclarations.d.errors.txt b/tests/baselines/reference/classAbstractDeclarations.d.errors.txt index 20d5ca46933..a1c0e55152c 100644 --- a/tests/baselines/reference/classAbstractDeclarations.d.errors.txt +++ b/tests/baselines/reference/classAbstractDeclarations.d.errors.txt @@ -1,5 +1,5 @@ tests/cases/conformance/classes/classDeclarations/classAbstractKeyword/classAbstractDeclarations.d.ts(2,5): error TS1242: 'abstract' modifier can only appear on a class or method declaration. -tests/cases/conformance/classes/classDeclarations/classAbstractKeyword/classAbstractDeclarations.d.ts(2,28): error TS1184: An implementation cannot be declared in ambient contexts. +tests/cases/conformance/classes/classDeclarations/classAbstractKeyword/classAbstractDeclarations.d.ts(2,28): error TS1183: An implementation cannot be declared in ambient contexts. tests/cases/conformance/classes/classDeclarations/classAbstractKeyword/classAbstractDeclarations.d.ts(11,15): error TS2515: Non-abstract class 'CC' does not implement inherited abstract member 'foo' from class 'AA'. tests/cases/conformance/classes/classDeclarations/classAbstractKeyword/classAbstractDeclarations.d.ts(13,15): error TS2515: Non-abstract class 'DD' does not implement inherited abstract member 'foo' from class 'BB'. tests/cases/conformance/classes/classDeclarations/classAbstractKeyword/classAbstractDeclarations.d.ts(17,15): error TS2515: Non-abstract class 'FF' does not implement inherited abstract member 'foo' from class 'CC'. @@ -11,7 +11,7 @@ tests/cases/conformance/classes/classDeclarations/classAbstractKeyword/classAbst ~~~~~~~~ !!! error TS1242: 'abstract' modifier can only appear on a class or method declaration. ~ -!!! error TS1184: An implementation cannot be declared in ambient contexts. +!!! error TS1183: An implementation cannot be declared in ambient contexts. } declare abstract class AA { diff --git a/tests/baselines/reference/classConstructorParametersAccessibility3.types b/tests/baselines/reference/classConstructorParametersAccessibility3.types index 3372044569c..d664aaf3172 100644 --- a/tests/baselines/reference/classConstructorParametersAccessibility3.types +++ b/tests/baselines/reference/classConstructorParametersAccessibility3.types @@ -20,7 +20,7 @@ class Derived extends Base { this.p; // OK >this.p : number ->this : Derived +>this : this >p : number } } diff --git a/tests/baselines/reference/classExpressionES63.js b/tests/baselines/reference/classExpressionES63.js index 6d357af7c5a..6b3a06cf7c3 100644 --- a/tests/baselines/reference/classExpressionES63.js +++ b/tests/baselines/reference/classExpressionES63.js @@ -7,7 +7,7 @@ c.c; //// [classExpressionES63.js] -let C = class class_1 extends class class_2 extends class class_3 { +let C = class extends class extends class { constructor() { this.a = 1; } diff --git a/tests/baselines/reference/classOrder2.types b/tests/baselines/reference/classOrder2.types index 07bd6ba45a5..ac65da2ec9d 100644 --- a/tests/baselines/reference/classOrder2.types +++ b/tests/baselines/reference/classOrder2.types @@ -8,7 +8,7 @@ class A extends B { >foo : () => void >this.bar() : void >this.bar : () => void ->this : A +>this : this >bar : () => void } diff --git a/tests/baselines/reference/classOrderBug.types b/tests/baselines/reference/classOrderBug.types index 979b65b8008..703a87adc4f 100644 --- a/tests/baselines/reference/classOrderBug.types +++ b/tests/baselines/reference/classOrderBug.types @@ -11,7 +11,7 @@ class bar { this.baz = new foo(); >this.baz = new foo() : foo >this.baz : foo ->this : bar +>this : this >baz : foo >new foo() : foo >foo : typeof foo diff --git a/tests/baselines/reference/classSideInheritance2.types b/tests/baselines/reference/classSideInheritance2.types index 9c2d632ebbb..7a3ee630266 100644 --- a/tests/baselines/reference/classSideInheritance2.types +++ b/tests/baselines/reference/classSideInheritance2.types @@ -41,7 +41,7 @@ class TextBase implements IText { return new SubText(this, span); >new SubText(this, span) : SubText >SubText : typeof SubText ->this : TextBase +>this : this >span : TextSpan } } diff --git a/tests/baselines/reference/commentOnAmbientClass1.js b/tests/baselines/reference/commentOnAmbientClass1.js index beacc71335c..9837da4c371 100644 --- a/tests/baselines/reference/commentOnAmbientClass1.js +++ b/tests/baselines/reference/commentOnAmbientClass1.js @@ -1,7 +1,12 @@ //// [tests/cases/compiler/commentOnAmbientClass1.ts] //// //// [a.ts] -/*! Keep this pinned comment */ +/*!========= + Keep this pinned comment + ========= +*/ + +/*! Don't keep this pinned comment */ declare class C { } @@ -15,6 +20,9 @@ declare class E extends C { } //// [a.js] -/*! Keep this pinned comment */ +/*!========= + Keep this pinned comment + ========= +*/ //// [b.js] /// diff --git a/tests/baselines/reference/commentOnAmbientClass1.symbols b/tests/baselines/reference/commentOnAmbientClass1.symbols index 899c5f19a24..a08bb744df4 100644 --- a/tests/baselines/reference/commentOnAmbientClass1.symbols +++ b/tests/baselines/reference/commentOnAmbientClass1.symbols @@ -5,13 +5,18 @@ declare class E extends C { >C : Symbol(C, Decl(a.ts, 0, 0)) } === tests/cases/compiler/a.ts === -/*! Keep this pinned comment */ +/*!========= + Keep this pinned comment + ========= +*/ + +/*! Don't keep this pinned comment */ declare class C { >C : Symbol(C, Decl(a.ts, 0, 0)) } // Don't keep this comment. declare class D { ->D : Symbol(D, Decl(a.ts, 2, 1)) +>D : Symbol(D, Decl(a.ts, 7, 1)) } diff --git a/tests/baselines/reference/commentOnAmbientClass1.types b/tests/baselines/reference/commentOnAmbientClass1.types index 44c0334ef6c..b0212056505 100644 --- a/tests/baselines/reference/commentOnAmbientClass1.types +++ b/tests/baselines/reference/commentOnAmbientClass1.types @@ -5,7 +5,12 @@ declare class E extends C { >C : C } === tests/cases/compiler/a.ts === -/*! Keep this pinned comment */ +/*!========= + Keep this pinned comment + ========= +*/ + +/*! Don't keep this pinned comment */ declare class C { >C : C } diff --git a/tests/baselines/reference/commentOnAmbientEnum.js b/tests/baselines/reference/commentOnAmbientEnum.js index d602c68a0e5..f6c9d92ebff 100644 --- a/tests/baselines/reference/commentOnAmbientEnum.js +++ b/tests/baselines/reference/commentOnAmbientEnum.js @@ -1,7 +1,12 @@ //// [tests/cases/compiler/commentOnAmbientEnum.ts] //// //// [a.ts] -/*! Keep this pinned comment */ +/*!========= + Keep this pinned comment + ========= +*/ + +/*! Don't keep this pinned comment */ declare enum C { a, b, @@ -18,6 +23,9 @@ declare enum E { } //// [a.js] -/*! Keep this pinned comment */ +/*!========= + Keep this pinned comment + ========= +*/ //// [b.js] /// diff --git a/tests/baselines/reference/commentOnAmbientEnum.symbols b/tests/baselines/reference/commentOnAmbientEnum.symbols index d86d490113d..3a6e8089d4b 100644 --- a/tests/baselines/reference/commentOnAmbientEnum.symbols +++ b/tests/baselines/reference/commentOnAmbientEnum.symbols @@ -4,22 +4,27 @@ declare enum E { >E : Symbol(E, Decl(b.ts, 0, 0)) } === tests/cases/compiler/a.ts === -/*! Keep this pinned comment */ +/*!========= + Keep this pinned comment + ========= +*/ + +/*! Don't keep this pinned comment */ declare enum C { >C : Symbol(C, Decl(a.ts, 0, 0)) a, ->a : Symbol(C.a, Decl(a.ts, 1, 16)) +>a : Symbol(C.a, Decl(a.ts, 6, 16)) b, ->b : Symbol(C.b, Decl(a.ts, 2, 6)) +>b : Symbol(C.b, Decl(a.ts, 7, 6)) c ->c : Symbol(C.c, Decl(a.ts, 3, 6)) +>c : Symbol(C.c, Decl(a.ts, 8, 6)) } // Don't keep this comment. declare enum D { ->D : Symbol(D, Decl(a.ts, 5, 1)) +>D : Symbol(D, Decl(a.ts, 10, 1)) } diff --git a/tests/baselines/reference/commentOnAmbientEnum.types b/tests/baselines/reference/commentOnAmbientEnum.types index 4a0193b7937..95f3d61b75f 100644 --- a/tests/baselines/reference/commentOnAmbientEnum.types +++ b/tests/baselines/reference/commentOnAmbientEnum.types @@ -4,7 +4,12 @@ declare enum E { >E : E } === tests/cases/compiler/a.ts === -/*! Keep this pinned comment */ +/*!========= + Keep this pinned comment + ========= +*/ + +/*! Don't keep this pinned comment */ declare enum C { >C : C diff --git a/tests/baselines/reference/commentOnAmbientModule.js b/tests/baselines/reference/commentOnAmbientModule.js index d5a536302b5..2d43b502f29 100644 --- a/tests/baselines/reference/commentOnAmbientModule.js +++ b/tests/baselines/reference/commentOnAmbientModule.js @@ -1,7 +1,12 @@ //// [tests/cases/compiler/commentOnAmbientModule.ts] //// //// [a.ts] -/*! Keep this pinned comment */ +/*!========= + Keep this pinned comment + ========= +*/ + +/*! Don't keep this pinned comment */ declare module C { function foo(); } @@ -20,6 +25,9 @@ declare module E { } //// [a.js] -/*! Keep this pinned comment */ +/*!========= + Keep this pinned comment + ========= +*/ //// [b.js] /// diff --git a/tests/baselines/reference/commentOnAmbientModule.symbols b/tests/baselines/reference/commentOnAmbientModule.symbols index c1412c17880..e7525e6306f 100644 --- a/tests/baselines/reference/commentOnAmbientModule.symbols +++ b/tests/baselines/reference/commentOnAmbientModule.symbols @@ -5,28 +5,33 @@ declare module E { class foobar extends D.bar { >foobar : Symbol(foobar, Decl(b.ts, 1, 18)) ->D.bar : Symbol(D.bar, Decl(a.ts, 6, 18)) ->D : Symbol(D, Decl(a.ts, 3, 1)) ->bar : Symbol(D.bar, Decl(a.ts, 6, 18)) +>D.bar : Symbol(D.bar, Decl(a.ts, 11, 18)) +>D : Symbol(D, Decl(a.ts, 8, 1)) +>bar : Symbol(D.bar, Decl(a.ts, 11, 18)) foo(); >foo : Symbol(foo, Decl(b.ts, 2, 32)) } } === tests/cases/compiler/a.ts === -/*! Keep this pinned comment */ +/*!========= + Keep this pinned comment + ========= +*/ + +/*! Don't keep this pinned comment */ declare module C { >C : Symbol(C, Decl(a.ts, 0, 0)) function foo(); ->foo : Symbol(foo, Decl(a.ts, 1, 18)) +>foo : Symbol(foo, Decl(a.ts, 6, 18)) } // Don't keep this comment. declare module D { ->D : Symbol(D, Decl(a.ts, 3, 1)) +>D : Symbol(D, Decl(a.ts, 8, 1)) class bar { } ->bar : Symbol(bar, Decl(a.ts, 6, 18)) +>bar : Symbol(bar, Decl(a.ts, 11, 18)) } diff --git a/tests/baselines/reference/commentOnAmbientModule.types b/tests/baselines/reference/commentOnAmbientModule.types index 629395a4e80..f54d248b461 100644 --- a/tests/baselines/reference/commentOnAmbientModule.types +++ b/tests/baselines/reference/commentOnAmbientModule.types @@ -14,7 +14,12 @@ declare module E { } } === tests/cases/compiler/a.ts === -/*! Keep this pinned comment */ +/*!========= + Keep this pinned comment + ========= +*/ + +/*! Don't keep this pinned comment */ declare module C { >C : typeof C diff --git a/tests/baselines/reference/commentOnAmbientVariable1.js b/tests/baselines/reference/commentOnAmbientVariable1.js index b76fd3345b5..79c5dc85f23 100644 --- a/tests/baselines/reference/commentOnAmbientVariable1.js +++ b/tests/baselines/reference/commentOnAmbientVariable1.js @@ -1,9 +1,17 @@ //// [commentOnAmbientVariable1.ts] -/*! Keep this pinned comment */ +/*!========= + Keep this pinned comment + ========= +*/ + +/*! Don't keep this pinned comment */ declare var v: number; // Don't keep this comment. declare var y: number; //// [commentOnAmbientVariable1.js] -/*! Keep this pinned comment */ +/*!========= + Keep this pinned comment + ========= +*/ diff --git a/tests/baselines/reference/commentOnAmbientVariable1.symbols b/tests/baselines/reference/commentOnAmbientVariable1.symbols index 153653e7827..7847b4b85ad 100644 --- a/tests/baselines/reference/commentOnAmbientVariable1.symbols +++ b/tests/baselines/reference/commentOnAmbientVariable1.symbols @@ -1,9 +1,14 @@ === tests/cases/compiler/commentOnAmbientVariable1.ts === -/*! Keep this pinned comment */ +/*!========= + Keep this pinned comment + ========= +*/ + +/*! Don't keep this pinned comment */ declare var v: number; ->v : Symbol(v, Decl(commentOnAmbientVariable1.ts, 1, 11)) +>v : Symbol(v, Decl(commentOnAmbientVariable1.ts, 6, 11)) // Don't keep this comment. declare var y: number; ->y : Symbol(y, Decl(commentOnAmbientVariable1.ts, 4, 11)) +>y : Symbol(y, Decl(commentOnAmbientVariable1.ts, 9, 11)) diff --git a/tests/baselines/reference/commentOnAmbientVariable1.types b/tests/baselines/reference/commentOnAmbientVariable1.types index feff50f4293..645e1f099d4 100644 --- a/tests/baselines/reference/commentOnAmbientVariable1.types +++ b/tests/baselines/reference/commentOnAmbientVariable1.types @@ -1,5 +1,10 @@ === tests/cases/compiler/commentOnAmbientVariable1.ts === -/*! Keep this pinned comment */ +/*!========= + Keep this pinned comment + ========= +*/ + +/*! Don't keep this pinned comment */ declare var v: number; >v : number diff --git a/tests/baselines/reference/commentOnAmbientfunction.js b/tests/baselines/reference/commentOnAmbientfunction.js index 6290d407727..22613236941 100644 --- a/tests/baselines/reference/commentOnAmbientfunction.js +++ b/tests/baselines/reference/commentOnAmbientfunction.js @@ -1,7 +1,12 @@ //// [tests/cases/compiler/commentOnAmbientfunction.ts] //// //// [a.ts] -/*! Keep this pinned comment */ +/*!========= + Keep this pinned comment + ========= +*/ + +/*! Don't keep this pinned comment */ declare function foo(); // Don't keep this comment. @@ -12,6 +17,9 @@ declare function bar(); declare function foobar(a: typeof foo): typeof bar; //// [a.js] -/*! Keep this pinned comment */ +/*!========= + Keep this pinned comment + ========= +*/ //// [b.js] /// diff --git a/tests/baselines/reference/commentOnAmbientfunction.symbols b/tests/baselines/reference/commentOnAmbientfunction.symbols index c6afb72eb9c..4d83d2794a0 100644 --- a/tests/baselines/reference/commentOnAmbientfunction.symbols +++ b/tests/baselines/reference/commentOnAmbientfunction.symbols @@ -4,14 +4,19 @@ declare function foobar(a: typeof foo): typeof bar; >foobar : Symbol(foobar, Decl(b.ts, 0, 0)) >a : Symbol(a, Decl(b.ts, 1, 24)) >foo : Symbol(foo, Decl(a.ts, 0, 0)) ->bar : Symbol(bar, Decl(a.ts, 1, 23)) +>bar : Symbol(bar, Decl(a.ts, 6, 23)) === tests/cases/compiler/a.ts === -/*! Keep this pinned comment */ +/*!========= + Keep this pinned comment + ========= +*/ + +/*! Don't keep this pinned comment */ declare function foo(); >foo : Symbol(foo, Decl(a.ts, 0, 0)) // Don't keep this comment. declare function bar(); ->bar : Symbol(bar, Decl(a.ts, 1, 23)) +>bar : Symbol(bar, Decl(a.ts, 6, 23)) diff --git a/tests/baselines/reference/commentOnAmbientfunction.types b/tests/baselines/reference/commentOnAmbientfunction.types index f75f7b377fb..3347a55bf68 100644 --- a/tests/baselines/reference/commentOnAmbientfunction.types +++ b/tests/baselines/reference/commentOnAmbientfunction.types @@ -7,7 +7,12 @@ declare function foobar(a: typeof foo): typeof bar; >bar : () => any === tests/cases/compiler/a.ts === -/*! Keep this pinned comment */ +/*!========= + Keep this pinned comment + ========= +*/ + +/*! Don't keep this pinned comment */ declare function foo(); >foo : () => any diff --git a/tests/baselines/reference/commentOnElidedModule1.js b/tests/baselines/reference/commentOnElidedModule1.js index 8a7b8d91b4c..72585e6a9e8 100644 --- a/tests/baselines/reference/commentOnElidedModule1.js +++ b/tests/baselines/reference/commentOnElidedModule1.js @@ -1,7 +1,12 @@ //// [tests/cases/compiler/commentOnElidedModule1.ts] //// //// [a.ts] -/*! Keep this pinned comment */ +/*!================= + Keep this pinned + ================= +*/ + +/*! Don't keep this pinned comment */ module ElidedModule { } @@ -15,6 +20,9 @@ module ElidedModule3 { } //// [a.js] -/*! Keep this pinned comment */ +/*!================= + Keep this pinned + ================= +*/ //// [b.js] /// diff --git a/tests/baselines/reference/commentOnElidedModule1.symbols b/tests/baselines/reference/commentOnElidedModule1.symbols index 63ce4dadf97..57b55adeee4 100644 --- a/tests/baselines/reference/commentOnElidedModule1.symbols +++ b/tests/baselines/reference/commentOnElidedModule1.symbols @@ -4,13 +4,18 @@ module ElidedModule3 { >ElidedModule3 : Symbol(ElidedModule3, Decl(b.ts, 0, 0)) } === tests/cases/compiler/a.ts === -/*! Keep this pinned comment */ +/*!================= + Keep this pinned + ================= +*/ + +/*! Don't keep this pinned comment */ module ElidedModule { >ElidedModule : Symbol(ElidedModule, Decl(a.ts, 0, 0)) } // Don't keep this comment. module ElidedModule2 { ->ElidedModule2 : Symbol(ElidedModule2, Decl(a.ts, 2, 1)) +>ElidedModule2 : Symbol(ElidedModule2, Decl(a.ts, 7, 1)) } diff --git a/tests/baselines/reference/commentOnElidedModule1.types b/tests/baselines/reference/commentOnElidedModule1.types index 8e095b8102f..d028b62519a 100644 --- a/tests/baselines/reference/commentOnElidedModule1.types +++ b/tests/baselines/reference/commentOnElidedModule1.types @@ -4,7 +4,12 @@ module ElidedModule3 { >ElidedModule3 : any } === tests/cases/compiler/a.ts === -/*! Keep this pinned comment */ +/*!================= + Keep this pinned + ================= +*/ + +/*! Don't keep this pinned comment */ module ElidedModule { >ElidedModule : any } diff --git a/tests/baselines/reference/commentOnInterface1.js b/tests/baselines/reference/commentOnInterface1.js index bde6202f03f..c51658e2dfa 100644 --- a/tests/baselines/reference/commentOnInterface1.js +++ b/tests/baselines/reference/commentOnInterface1.js @@ -1,7 +1,12 @@ //// [tests/cases/compiler/commentOnInterface1.ts] //// //// [a.ts] -/*! Keep this pinned comment */ +/*!================= + Keep this pinned + ================= +*/ + +/*! Don't keep this pinned comment */ interface I { } @@ -15,6 +20,9 @@ interface I3 { } //// [a.js] -/*! Keep this pinned comment */ +/*!================= + Keep this pinned + ================= +*/ //// [b.js] /// diff --git a/tests/baselines/reference/commentOnInterface1.symbols b/tests/baselines/reference/commentOnInterface1.symbols index 9564d9b4cfa..8ed7e020712 100644 --- a/tests/baselines/reference/commentOnInterface1.symbols +++ b/tests/baselines/reference/commentOnInterface1.symbols @@ -4,13 +4,18 @@ interface I3 { >I3 : Symbol(I3, Decl(b.ts, 0, 0)) } === tests/cases/compiler/a.ts === -/*! Keep this pinned comment */ +/*!================= + Keep this pinned + ================= +*/ + +/*! Don't keep this pinned comment */ interface I { >I : Symbol(I, Decl(a.ts, 0, 0)) } // Don't keep this comment. interface I2 { ->I2 : Symbol(I2, Decl(a.ts, 2, 1)) +>I2 : Symbol(I2, Decl(a.ts, 7, 1)) } diff --git a/tests/baselines/reference/commentOnInterface1.types b/tests/baselines/reference/commentOnInterface1.types index d03b1939026..34b0e0ce14f 100644 --- a/tests/baselines/reference/commentOnInterface1.types +++ b/tests/baselines/reference/commentOnInterface1.types @@ -4,7 +4,12 @@ interface I3 { >I3 : I3 } === tests/cases/compiler/a.ts === -/*! Keep this pinned comment */ +/*!================= + Keep this pinned + ================= +*/ + +/*! Don't keep this pinned comment */ interface I { >I : I } diff --git a/tests/baselines/reference/commentOnSignature1.js b/tests/baselines/reference/commentOnSignature1.js index 1b2327f9861..d29710c631c 100644 --- a/tests/baselines/reference/commentOnSignature1.js +++ b/tests/baselines/reference/commentOnSignature1.js @@ -1,7 +1,12 @@ //// [tests/cases/compiler/commentOnSignature1.ts] //// //// [a.ts] -/*! Keep this pinned comment */ +/*!================= + Keep this pinned + ================= +*/ + +/*! Don't keep this pinned comment */ function foo(n: number): void; // Don't keep this comment. function foo(s: string): void; @@ -33,14 +38,15 @@ function foo2(a: any): void { } //// [a.js] -/*! Keep this pinned comment */ +/*!================= + Keep this pinned + ================= +*/ function foo(a) { } var c = (function () { - /*! keep this pinned comment */ function c(a) { } - /*! keep this pinned comment */ c.prototype.foo = function (a) { }; return c; diff --git a/tests/baselines/reference/commentOnSignature1.symbols b/tests/baselines/reference/commentOnSignature1.symbols index 0d39565fb61..7f0d48401cd 100644 --- a/tests/baselines/reference/commentOnSignature1.symbols +++ b/tests/baselines/reference/commentOnSignature1.symbols @@ -14,49 +14,54 @@ function foo2(a: any): void { >a : Symbol(a, Decl(b.ts, 4, 14)) } === tests/cases/compiler/a.ts === -/*! Keep this pinned comment */ +/*!================= + Keep this pinned + ================= +*/ + +/*! Don't keep this pinned comment */ function foo(n: number): void; ->foo : Symbol(foo, Decl(a.ts, 0, 0), Decl(a.ts, 1, 30), Decl(a.ts, 3, 30)) ->n : Symbol(n, Decl(a.ts, 1, 13)) +>foo : Symbol(foo, Decl(a.ts, 0, 0), Decl(a.ts, 6, 30), Decl(a.ts, 8, 30)) +>n : Symbol(n, Decl(a.ts, 6, 13)) // Don't keep this comment. function foo(s: string): void; ->foo : Symbol(foo, Decl(a.ts, 0, 0), Decl(a.ts, 1, 30), Decl(a.ts, 3, 30)) ->s : Symbol(s, Decl(a.ts, 3, 13)) +>foo : Symbol(foo, Decl(a.ts, 0, 0), Decl(a.ts, 6, 30), Decl(a.ts, 8, 30)) +>s : Symbol(s, Decl(a.ts, 8, 13)) function foo(a: any): void { ->foo : Symbol(foo, Decl(a.ts, 0, 0), Decl(a.ts, 1, 30), Decl(a.ts, 3, 30)) ->a : Symbol(a, Decl(a.ts, 4, 13)) +>foo : Symbol(foo, Decl(a.ts, 0, 0), Decl(a.ts, 6, 30), Decl(a.ts, 8, 30)) +>a : Symbol(a, Decl(a.ts, 9, 13)) } class c { ->c : Symbol(c, Decl(a.ts, 5, 1)) +>c : Symbol(c, Decl(a.ts, 10, 1)) // dont keep this comment constructor(a: string); ->a : Symbol(a, Decl(a.ts, 9, 16)) +>a : Symbol(a, Decl(a.ts, 14, 16)) /*! keep this pinned comment */ constructor(a: number); ->a : Symbol(a, Decl(a.ts, 11, 16)) +>a : Symbol(a, Decl(a.ts, 16, 16)) constructor(a: any) { ->a : Symbol(a, Decl(a.ts, 12, 16)) +>a : Symbol(a, Decl(a.ts, 17, 16)) } // dont keep this comment foo(a: string); ->foo : Symbol(foo, Decl(a.ts, 13, 5), Decl(a.ts, 16, 19), Decl(a.ts, 18, 19)) ->a : Symbol(a, Decl(a.ts, 16, 8)) +>foo : Symbol(foo, Decl(a.ts, 18, 5), Decl(a.ts, 21, 19), Decl(a.ts, 23, 19)) +>a : Symbol(a, Decl(a.ts, 21, 8)) /*! keep this pinned comment */ foo(a: number); ->foo : Symbol(foo, Decl(a.ts, 13, 5), Decl(a.ts, 16, 19), Decl(a.ts, 18, 19)) ->a : Symbol(a, Decl(a.ts, 18, 8)) +>foo : Symbol(foo, Decl(a.ts, 18, 5), Decl(a.ts, 21, 19), Decl(a.ts, 23, 19)) +>a : Symbol(a, Decl(a.ts, 23, 8)) foo(a: any) { ->foo : Symbol(foo, Decl(a.ts, 13, 5), Decl(a.ts, 16, 19), Decl(a.ts, 18, 19)) ->a : Symbol(a, Decl(a.ts, 19, 8)) +>foo : Symbol(foo, Decl(a.ts, 18, 5), Decl(a.ts, 21, 19), Decl(a.ts, 23, 19)) +>a : Symbol(a, Decl(a.ts, 24, 8)) } } diff --git a/tests/baselines/reference/commentOnSignature1.types b/tests/baselines/reference/commentOnSignature1.types index 790aaaf7523..30898e22851 100644 --- a/tests/baselines/reference/commentOnSignature1.types +++ b/tests/baselines/reference/commentOnSignature1.types @@ -14,7 +14,12 @@ function foo2(a: any): void { >a : any } === tests/cases/compiler/a.ts === -/*! Keep this pinned comment */ +/*!================= + Keep this pinned + ================= +*/ + +/*! Don't keep this pinned comment */ function foo(n: number): void; >foo : { (n: number): void; (s: string): void; } >n : number diff --git a/tests/baselines/reference/commentsClassMembers.types b/tests/baselines/reference/commentsClassMembers.types index fbd514bf77b..b599edc0463 100644 --- a/tests/baselines/reference/commentsClassMembers.types +++ b/tests/baselines/reference/commentsClassMembers.types @@ -16,7 +16,7 @@ class c1 { return this.p1 + b; >this.p1 + b : number >this.p1 : number ->this : c1 +>this : this >p1 : number >b : number @@ -28,10 +28,10 @@ class c1 { return this.p2(this.p1); >this.p2(this.p1) : number >this.p2 : (b: number) => number ->this : c1 +>this : this >p2 : (b: number) => number >this.p1 : number ->this : c1 +>this : this >p1 : number }// trailing comment Getter @@ -43,11 +43,11 @@ class c1 { this.p1 = this.p2(value); >this.p1 = this.p2(value) : number >this.p1 : number ->this : c1 +>this : this >p1 : number >this.p2(value) : number >this.p2 : (b: number) => number ->this : c1 +>this : this >p2 : (b: number) => number >value : number @@ -64,7 +64,7 @@ class c1 { return this.p1 + b; >this.p1 + b : number >this.p1 : number ->this : c1 +>this : this >p1 : number >b : number @@ -76,10 +76,10 @@ class c1 { return this.pp2(this.pp1); >this.pp2(this.pp1) : number >this.pp2 : (b: number) => number ->this : c1 +>this : this >pp2 : (b: number) => number >this.pp1 : number ->this : c1 +>this : this >pp1 : number } /** setter property*/ @@ -90,11 +90,11 @@ class c1 { this.pp1 = this.pp2(value); >this.pp1 = this.pp2(value) : number >this.pp1 : number ->this : c1 +>this : this >pp1 : number >this.pp2(value) : number >this.pp2 : (b: number) => number ->this : c1 +>this : this >pp2 : (b: number) => number >value : number } @@ -158,7 +158,7 @@ class c1 { return this.nc_p1 + b; >this.nc_p1 + b : number >this.nc_p1 : number ->this : c1 +>this : this >nc_p1 : number >b : number } @@ -168,10 +168,10 @@ class c1 { return this.nc_p2(this.nc_p1); >this.nc_p2(this.nc_p1) : number >this.nc_p2 : (b: number) => number ->this : c1 +>this : this >nc_p2 : (b: number) => number >this.nc_p1 : number ->this : c1 +>this : this >nc_p1 : number } public set nc_p3(value: number) { @@ -181,11 +181,11 @@ class c1 { this.nc_p1 = this.nc_p2(value); >this.nc_p1 = this.nc_p2(value) : number >this.nc_p1 : number ->this : c1 +>this : this >nc_p1 : number >this.nc_p2(value) : number >this.nc_p2 : (b: number) => number ->this : c1 +>this : this >nc_p2 : (b: number) => number >value : number } @@ -199,7 +199,7 @@ class c1 { return this.nc_pp1 + b; >this.nc_pp1 + b : number >this.nc_pp1 : number ->this : c1 +>this : this >nc_pp1 : number >b : number } @@ -209,10 +209,10 @@ class c1 { return this.nc_pp2(this.nc_pp1); >this.nc_pp2(this.nc_pp1) : number >this.nc_pp2 : (b: number) => number ->this : c1 +>this : this >nc_pp2 : (b: number) => number >this.nc_pp1 : number ->this : c1 +>this : this >nc_pp1 : number } private set nc_pp3(value: number) { @@ -222,11 +222,11 @@ class c1 { this.nc_pp1 = this.nc_pp2(value); >this.nc_pp1 = this.nc_pp2(value) : number >this.nc_pp1 : number ->this : c1 +>this : this >nc_pp1 : number >this.nc_pp2(value) : number >this.nc_pp2 : (b: number) => number ->this : c1 +>this : this >nc_pp2 : (b: number) => number >value : number } @@ -284,7 +284,7 @@ class c1 { return this.a_p1 + b; >this.a_p1 + b : number >this.a_p1 : number ->this : c1 +>this : this >a_p1 : number >b : number } @@ -295,10 +295,10 @@ class c1 { return this.a_p2(this.a_p1); >this.a_p2(this.a_p1) : number >this.a_p2 : (b: number) => number ->this : c1 +>this : this >a_p2 : (b: number) => number >this.a_p1 : number ->this : c1 +>this : this >a_p1 : number } // setter property @@ -309,11 +309,11 @@ class c1 { this.a_p1 = this.a_p2(value); >this.a_p1 = this.a_p2(value) : number >this.a_p1 : number ->this : c1 +>this : this >a_p1 : number >this.a_p2(value) : number >this.a_p2 : (b: number) => number ->this : c1 +>this : this >a_p2 : (b: number) => number >value : number } @@ -329,7 +329,7 @@ class c1 { return this.a_p1 + b; >this.a_p1 + b : number >this.a_p1 : number ->this : c1 +>this : this >a_p1 : number >b : number } @@ -340,10 +340,10 @@ class c1 { return this.a_pp2(this.a_pp1); >this.a_pp2(this.a_pp1) : number >this.a_pp2 : (b: number) => number ->this : c1 +>this : this >a_pp2 : (b: number) => number >this.a_pp1 : number ->this : c1 +>this : this >a_pp1 : number } // setter property @@ -354,11 +354,11 @@ class c1 { this.a_pp1 = this.a_pp2(value); >this.a_pp1 = this.a_pp2(value) : number >this.a_pp1 : number ->this : c1 +>this : this >a_pp1 : number >this.a_pp2(value) : number >this.a_pp2 : (b: number) => number ->this : c1 +>this : this >a_pp2 : (b: number) => number >value : number } @@ -422,7 +422,7 @@ class c1 { return this.b_p1 + b; >this.b_p1 + b : number >this.b_p1 : number ->this : c1 +>this : this >b_p1 : number >b : number } @@ -433,10 +433,10 @@ class c1 { return this.b_p2(this.b_p1); >this.b_p2(this.b_p1) : number >this.b_p2 : (b: number) => number ->this : c1 +>this : this >b_p2 : (b: number) => number >this.b_p1 : number ->this : c1 +>this : this >b_p1 : number } /** setter property */ @@ -447,11 +447,11 @@ class c1 { this.b_p1 = this.b_p2(value); >this.b_p1 = this.b_p2(value) : number >this.b_p1 : number ->this : c1 +>this : this >b_p1 : number >this.b_p2(value) : number >this.b_p2 : (b: number) => number ->this : c1 +>this : this >b_p2 : (b: number) => number >value : number } @@ -467,7 +467,7 @@ class c1 { return this.b_p1 + b; >this.b_p1 + b : number >this.b_p1 : number ->this : c1 +>this : this >b_p1 : number >b : number } @@ -478,10 +478,10 @@ class c1 { return this.b_pp2(this.b_pp1); >this.b_pp2(this.b_pp1) : number >this.b_pp2 : (b: number) => number ->this : c1 +>this : this >b_pp2 : (b: number) => number >this.b_pp1 : number ->this : c1 +>this : this >b_pp1 : number } /** setter property */ @@ -492,11 +492,11 @@ class c1 { this.b_pp1 = this.b_pp2(value); >this.b_pp1 = this.b_pp2(value) : number >this.b_pp1 : number ->this : c1 +>this : this >b_pp1 : number >this.b_pp2(value) : number >this.b_pp2 : (b: number) => number ->this : c1 +>this : this >b_pp2 : (b: number) => number >value : number } @@ -704,7 +704,7 @@ class cProperties { return this.val; >this.val : number ->this : cProperties +>this : this >val : number } // trailing comment of only getter @@ -713,7 +713,7 @@ class cProperties { return this.val; >this.val : number ->this : cProperties +>this : this >val : number } /**setter only property*/ @@ -724,7 +724,7 @@ class cProperties { this.val = value; >this.val = value : number >this.val : number ->this : cProperties +>this : this >val : number >value : number } @@ -735,7 +735,7 @@ class cProperties { this.val = value; >this.val = value : number >this.val : number ->this : cProperties +>this : this >val : number >value : number diff --git a/tests/baselines/reference/commentsExternalModules3.js b/tests/baselines/reference/commentsExternalModules3.js index 283e07ebc7f..2acf93296de 100644 --- a/tests/baselines/reference/commentsExternalModules3.js +++ b/tests/baselines/reference/commentsExternalModules3.js @@ -54,7 +54,7 @@ var myvar2 = new m4.m2.c(); //// [commentsExternalModules_1.ts] /**This is on import declaration*/ -import extMod = require("commentsExternalModules2_0"); // trailing comment 1 +import extMod = require("./commentsExternalModules2_0"); // trailing comment 1 extMod.m1.fooExport(); export var newVar = new extMod.m1.m2.c(); extMod.m4.fooExport(); @@ -124,7 +124,7 @@ m4.fooExport(); var myvar2 = new m4.m2.c(); //// [commentsExternalModules_1.js] /**This is on import declaration*/ -var extMod = require("commentsExternalModules2_0"); // trailing comment 1 +var extMod = require("./commentsExternalModules2_0"); // trailing comment 1 extMod.m1.fooExport(); exports.newVar = new extMod.m1.m2.c(); extMod.m4.fooExport(); @@ -165,6 +165,6 @@ export declare module m4 { } //// [commentsExternalModules_1.d.ts] /**This is on import declaration*/ -import extMod = require("commentsExternalModules2_0"); +import extMod = require("./commentsExternalModules2_0"); export declare var newVar: extMod.m1.m2.c; export declare var newVar2: extMod.m4.m2.c; diff --git a/tests/baselines/reference/commentsExternalModules3.symbols b/tests/baselines/reference/commentsExternalModules3.symbols index cfd01db377d..4cab3b0d28a 100644 --- a/tests/baselines/reference/commentsExternalModules3.symbols +++ b/tests/baselines/reference/commentsExternalModules3.symbols @@ -1,6 +1,6 @@ === tests/cases/compiler/commentsExternalModules_1.ts === /**This is on import declaration*/ -import extMod = require("commentsExternalModules2_0"); // trailing comment 1 +import extMod = require("./commentsExternalModules2_0"); // trailing comment 1 >extMod : Symbol(extMod, Decl(commentsExternalModules_1.ts, 0, 0)) extMod.m1.fooExport(); diff --git a/tests/baselines/reference/commentsExternalModules3.types b/tests/baselines/reference/commentsExternalModules3.types index 556b5d11d35..2898784b7ea 100644 --- a/tests/baselines/reference/commentsExternalModules3.types +++ b/tests/baselines/reference/commentsExternalModules3.types @@ -1,6 +1,6 @@ === tests/cases/compiler/commentsExternalModules_1.ts === /**This is on import declaration*/ -import extMod = require("commentsExternalModules2_0"); // trailing comment 1 +import extMod = require("./commentsExternalModules2_0"); // trailing comment 1 >extMod : typeof extMod extMod.m1.fooExport(); diff --git a/tests/baselines/reference/commentsInheritance.types b/tests/baselines/reference/commentsInheritance.types index 1c25f13937b..21dcde99dbf 100644 --- a/tests/baselines/reference/commentsInheritance.types +++ b/tests/baselines/reference/commentsInheritance.types @@ -170,7 +170,7 @@ class c2 { this.c2_p1 = a; >this.c2_p1 = a : number >this.c2_p1 : number ->this : c2 +>this : this >c2_p1 : number >a : number } diff --git a/tests/baselines/reference/commentsdoNotEmitComments.types b/tests/baselines/reference/commentsdoNotEmitComments.types index 024f1c2a21f..067275f2151 100644 --- a/tests/baselines/reference/commentsdoNotEmitComments.types +++ b/tests/baselines/reference/commentsdoNotEmitComments.types @@ -43,7 +43,7 @@ class c { return this.b; >this.b : number ->this : c +>this : this >b : number } @@ -53,7 +53,7 @@ class c { return this.b; >this.b : number ->this : c +>this : this >b : number } @@ -65,7 +65,7 @@ class c { this.b = val; >this.b = val : number >this.b : number ->this : c +>this : this >b : number >val : number } diff --git a/tests/baselines/reference/commentsemitComments.types b/tests/baselines/reference/commentsemitComments.types index 2311ca09dd0..2594fb53fe9 100644 --- a/tests/baselines/reference/commentsemitComments.types +++ b/tests/baselines/reference/commentsemitComments.types @@ -43,7 +43,7 @@ class c { return this.b; >this.b : number ->this : c +>this : this >b : number } @@ -53,7 +53,7 @@ class c { return this.b; >this.b : number ->this : c +>this : this >b : number } @@ -65,7 +65,7 @@ class c { this.b = val; >this.b = val : number >this.b : number ->this : c +>this : this >b : number >val : number } diff --git a/tests/baselines/reference/complexClassRelationships.types b/tests/baselines/reference/complexClassRelationships.types index 43d0232e30a..525baf5168a 100644 --- a/tests/baselines/reference/complexClassRelationships.types +++ b/tests/baselines/reference/complexClassRelationships.types @@ -79,14 +79,14 @@ class Foo { return new GenericType(this); >new GenericType(this) : GenericType >GenericType : typeof GenericType ->this : Foo +>this : this } public populate() { >populate : () => void this.prop2; >this.prop2 : BaseCollection ->this : Foo +>this : this >prop2 : BaseCollection } public get prop2(): BaseCollection { diff --git a/tests/baselines/reference/computedPropertyNames22_ES5.types b/tests/baselines/reference/computedPropertyNames22_ES5.types index d3008669b4d..ca59250825c 100644 --- a/tests/baselines/reference/computedPropertyNames22_ES5.types +++ b/tests/baselines/reference/computedPropertyNames22_ES5.types @@ -12,7 +12,7 @@ class C { [this.bar()]() { } >this.bar() : number >this.bar : () => number ->this : C +>this : this >bar : () => number }; diff --git a/tests/baselines/reference/computedPropertyNames22_ES6.types b/tests/baselines/reference/computedPropertyNames22_ES6.types index 0936eab29ab..d5fbce29f7d 100644 --- a/tests/baselines/reference/computedPropertyNames22_ES6.types +++ b/tests/baselines/reference/computedPropertyNames22_ES6.types @@ -12,7 +12,7 @@ class C { [this.bar()]() { } >this.bar() : number >this.bar : () => number ->this : C +>this : this >bar : () => number }; diff --git a/tests/baselines/reference/computedPropertyNames29_ES5.types b/tests/baselines/reference/computedPropertyNames29_ES5.types index 674343b3a1a..f3448f10857 100644 --- a/tests/baselines/reference/computedPropertyNames29_ES5.types +++ b/tests/baselines/reference/computedPropertyNames29_ES5.types @@ -15,7 +15,7 @@ class C { [this.bar()]() { } // needs capture >this.bar() : number >this.bar : () => number ->this : C +>this : this >bar : () => number }; diff --git a/tests/baselines/reference/computedPropertyNames29_ES6.types b/tests/baselines/reference/computedPropertyNames29_ES6.types index 52f06bb9d88..cd01d37556a 100644 --- a/tests/baselines/reference/computedPropertyNames29_ES6.types +++ b/tests/baselines/reference/computedPropertyNames29_ES6.types @@ -15,7 +15,7 @@ class C { [this.bar()]() { } // needs capture >this.bar() : number >this.bar : () => number ->this : C +>this : this >bar : () => number }; diff --git a/tests/baselines/reference/constDeclarationShadowedByVarDeclaration3.types b/tests/baselines/reference/constDeclarationShadowedByVarDeclaration3.types index c5b9ec9a6f2..1271d4ef869 100644 --- a/tests/baselines/reference/constDeclarationShadowedByVarDeclaration3.types +++ b/tests/baselines/reference/constDeclarationShadowedByVarDeclaration3.types @@ -20,7 +20,7 @@ class Rule { this.name = name; >this.name = name : string >this.name : string ->this : Rule +>this : this >name : string >name : string } diff --git a/tests/baselines/reference/constDeclarations-access5.errors.txt b/tests/baselines/reference/constDeclarations-access5.errors.txt index d58abfe6bd4..23200e50ee4 100644 --- a/tests/baselines/reference/constDeclarations-access5.errors.txt +++ b/tests/baselines/reference/constDeclarations-access5.errors.txt @@ -1,5 +1,3 @@ -error TS1204: Cannot compile modules into 'commonjs', 'amd', 'system' or 'umd' 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. @@ -20,12 +18,9 @@ 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. -!!! error TS1204: Cannot compile modules into 'commonjs', 'amd', 'system' or 'umd' when targeting 'ES6' or higher. -==== tests/cases/compiler/constDeclarations_access_2.ts (19 errors) ==== +==== tests/cases/compiler/constDeclarations_access_2.ts (18 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 7735e37d2b0..71b8c99ae58 100644 --- a/tests/baselines/reference/constDeclarations-access5.js +++ b/tests/baselines/reference/constDeclarations-access5.js @@ -49,35 +49,39 @@ m.x.toString(); //// [constDeclarations_access_1.js] -export const x = 0; +define(["require", "exports"], function (require, exports) { + exports.x = 0; +}); //// [constDeclarations_access_2.js] -// 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(); +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(); +}); diff --git a/tests/baselines/reference/constructorOverloads6.errors.txt b/tests/baselines/reference/constructorOverloads6.errors.txt index 65827007a8e..34beb264f45 100644 --- a/tests/baselines/reference/constructorOverloads6.errors.txt +++ b/tests/baselines/reference/constructorOverloads6.errors.txt @@ -1,4 +1,4 @@ -tests/cases/compiler/constructorOverloads6.ts(4,25): error TS1184: An implementation cannot be declared in ambient contexts. +tests/cases/compiler/constructorOverloads6.ts(4,25): error TS1183: An implementation cannot be declared in ambient contexts. ==== tests/cases/compiler/constructorOverloads6.ts (1 errors) ==== @@ -7,7 +7,7 @@ tests/cases/compiler/constructorOverloads6.ts(4,25): error TS1184: An implementa constructor(n: number); constructor(x: any) { ~ -!!! error TS1184: An implementation cannot be declared in ambient contexts. +!!! error TS1183: An implementation cannot be declared in ambient contexts. } bar1():void; diff --git a/tests/baselines/reference/contextualThisType.js b/tests/baselines/reference/contextualThisType.js new file mode 100644 index 00000000000..1fce0828edc --- /dev/null +++ b/tests/baselines/reference/contextualThisType.js @@ -0,0 +1,24 @@ +//// [contextualThisType.ts] +interface X { + a: (p: this) => this; +} + +interface Y extends X { +} + +var x: Y = { + a(p) { + return p; + } +} + +var y = x.a(x); + + +//// [contextualThisType.js] +var x = { + a: function (p) { + return p; + } +}; +var y = x.a(x); diff --git a/tests/baselines/reference/contextualThisType.symbols b/tests/baselines/reference/contextualThisType.symbols new file mode 100644 index 00000000000..5030a9bbcde --- /dev/null +++ b/tests/baselines/reference/contextualThisType.symbols @@ -0,0 +1,34 @@ +=== tests/cases/conformance/types/thisType/contextualThisType.ts === +interface X { +>X : Symbol(X, Decl(contextualThisType.ts, 0, 0)) + + a: (p: this) => this; +>a : Symbol(a, Decl(contextualThisType.ts, 0, 13)) +>p : Symbol(p, Decl(contextualThisType.ts, 1, 8)) +} + +interface Y extends X { +>Y : Symbol(Y, Decl(contextualThisType.ts, 2, 1)) +>X : Symbol(X, Decl(contextualThisType.ts, 0, 0)) +} + +var x: Y = { +>x : Symbol(x, Decl(contextualThisType.ts, 7, 3)) +>Y : Symbol(Y, Decl(contextualThisType.ts, 2, 1)) + + a(p) { +>a : Symbol(a, Decl(contextualThisType.ts, 7, 12)) +>p : Symbol(p, Decl(contextualThisType.ts, 8, 6)) + + return p; +>p : Symbol(p, Decl(contextualThisType.ts, 8, 6)) + } +} + +var y = x.a(x); +>y : Symbol(y, Decl(contextualThisType.ts, 13, 3)) +>x.a : Symbol(X.a, Decl(contextualThisType.ts, 0, 13)) +>x : Symbol(x, Decl(contextualThisType.ts, 7, 3)) +>a : Symbol(X.a, Decl(contextualThisType.ts, 0, 13)) +>x : Symbol(x, Decl(contextualThisType.ts, 7, 3)) + diff --git a/tests/baselines/reference/contextualThisType.types b/tests/baselines/reference/contextualThisType.types new file mode 100644 index 00000000000..fb4588c5fb0 --- /dev/null +++ b/tests/baselines/reference/contextualThisType.types @@ -0,0 +1,36 @@ +=== tests/cases/conformance/types/thisType/contextualThisType.ts === +interface X { +>X : X + + a: (p: this) => this; +>a : (p: this) => this +>p : this +} + +interface Y extends X { +>Y : Y +>X : X +} + +var x: Y = { +>x : Y +>Y : Y +>{ a(p) { return p; }} : { a(p: Y): Y; } + + a(p) { +>a : (p: Y) => Y +>p : Y + + return p; +>p : Y + } +} + +var y = x.a(x); +>y : Y +>x.a(x) : Y +>x.a : (p: Y) => Y +>x : Y +>a : (p: Y) => Y +>x : Y + diff --git a/tests/baselines/reference/contextualTypeAppliedToVarArgs.types b/tests/baselines/reference/contextualTypeAppliedToVarArgs.types index cbd16aea35f..df6ead16095 100644 --- a/tests/baselines/reference/contextualTypeAppliedToVarArgs.types +++ b/tests/baselines/reference/contextualTypeAppliedToVarArgs.types @@ -21,7 +21,7 @@ class Foo{ delegate(this, function (source, args2) >delegate(this, function (source, args2) { var a = source.node; var b = args2.node; } ) : (...args: any[]) => any >delegate : (instance: any, method: (...args: any[]) => any, data?: any) => (...args: any[]) => any ->this : Foo +>this : this >function (source, args2) { var a = source.node; var b = args2.node; } : (source: any, args2: any) => void >source : any >args2 : any diff --git a/tests/baselines/reference/contextuallyTypedClassExpressionMethodDeclaration01.errors.txt b/tests/baselines/reference/contextuallyTypedClassExpressionMethodDeclaration01.errors.txt new file mode 100644 index 00000000000..dab85baf2cf --- /dev/null +++ b/tests/baselines/reference/contextuallyTypedClassExpressionMethodDeclaration01.errors.txt @@ -0,0 +1,67 @@ +tests/cases/conformance/types/contextualTypes/methodDeclarations/contextuallyTypedClassExpressionMethodDeclaration01.ts(17,24): error TS7006: Parameter 'arg' implicitly has an 'any' type. +tests/cases/conformance/types/contextualTypes/methodDeclarations/contextuallyTypedClassExpressionMethodDeclaration01.ts(20,24): error TS7006: Parameter 'arg' implicitly has an 'any' type. +tests/cases/conformance/types/contextualTypes/methodDeclarations/contextuallyTypedClassExpressionMethodDeclaration01.ts(28,27): error TS7006: Parameter 'arg' implicitly has an 'any' type. +tests/cases/conformance/types/contextualTypes/methodDeclarations/contextuallyTypedClassExpressionMethodDeclaration01.ts(31,27): error TS7006: Parameter 'arg' implicitly has an 'any' type. +tests/cases/conformance/types/contextualTypes/methodDeclarations/contextuallyTypedClassExpressionMethodDeclaration01.ts(39,36): error TS7006: Parameter 'arg' implicitly has an 'any' type. +tests/cases/conformance/types/contextualTypes/methodDeclarations/contextuallyTypedClassExpressionMethodDeclaration01.ts(42,36): error TS7006: Parameter 'arg' implicitly has an 'any' type. + + +==== tests/cases/conformance/types/contextualTypes/methodDeclarations/contextuallyTypedClassExpressionMethodDeclaration01.ts (6 errors) ==== + + interface A { + numProp: number; + } + + interface B { + strProp: string; + } + + interface Foo { + method1(arg: A): void; + method2(arg: B): void; + } + + function getFoo1(): Foo { + return class { + static method1(arg) { + ~~~ +!!! error TS7006: Parameter 'arg' implicitly has an 'any' type. + arg.numProp = 10; + } + static method2(arg) { + ~~~ +!!! error TS7006: Parameter 'arg' implicitly has an 'any' type. + arg.strProp = "hello"; + } + } + } + + function getFoo2(): Foo { + return class { + static method1 = (arg) => { + ~~~ +!!! error TS7006: Parameter 'arg' implicitly has an 'any' type. + arg.numProp = 10; + } + static method2 = (arg) => { + ~~~ +!!! error TS7006: Parameter 'arg' implicitly has an 'any' type. + arg.strProp = "hello"; + } + } + } + + function getFoo3(): Foo { + return class { + static method1 = function (arg) { + ~~~ +!!! error TS7006: Parameter 'arg' implicitly has an 'any' type. + arg.numProp = 10; + } + static method2 = function (arg) { + ~~~ +!!! error TS7006: Parameter 'arg' implicitly has an 'any' type. + arg.strProp = "hello"; + } + } + } \ No newline at end of file diff --git a/tests/baselines/reference/contextuallyTypedClassExpressionMethodDeclaration01.js b/tests/baselines/reference/contextuallyTypedClassExpressionMethodDeclaration01.js new file mode 100644 index 00000000000..edbe8c4d338 --- /dev/null +++ b/tests/baselines/reference/contextuallyTypedClassExpressionMethodDeclaration01.js @@ -0,0 +1,88 @@ +//// [contextuallyTypedClassExpressionMethodDeclaration01.ts] + +interface A { + numProp: number; +} + +interface B { + strProp: string; +} + +interface Foo { + method1(arg: A): void; + method2(arg: B): void; +} + +function getFoo1(): Foo { + return class { + static method1(arg) { + arg.numProp = 10; + } + static method2(arg) { + arg.strProp = "hello"; + } + } +} + +function getFoo2(): Foo { + return class { + static method1 = (arg) => { + arg.numProp = 10; + } + static method2 = (arg) => { + arg.strProp = "hello"; + } + } +} + +function getFoo3(): Foo { + return class { + static method1 = function (arg) { + arg.numProp = 10; + } + static method2 = function (arg) { + arg.strProp = "hello"; + } + } +} + +//// [contextuallyTypedClassExpressionMethodDeclaration01.js] +function getFoo1() { + return (function () { + function class_1() { + } + class_1.method1 = function (arg) { + arg.numProp = 10; + }; + class_1.method2 = function (arg) { + arg.strProp = "hello"; + }; + return class_1; + })(); +} +function getFoo2() { + return (function () { + function class_2() { + } + class_2.method1 = function (arg) { + arg.numProp = 10; + }; + class_2.method2 = function (arg) { + arg.strProp = "hello"; + }; + return class_2; + })(); +} +function getFoo3() { + return (function () { + function class_3() { + } + class_3.method1 = function (arg) { + arg.numProp = 10; + }; + class_3.method2 = function (arg) { + arg.strProp = "hello"; + }; + return class_3; + })(); +} diff --git a/tests/baselines/reference/contextuallyTypedClassExpressionMethodDeclaration02.errors.txt b/tests/baselines/reference/contextuallyTypedClassExpressionMethodDeclaration02.errors.txt new file mode 100644 index 00000000000..ae6dfee4866 --- /dev/null +++ b/tests/baselines/reference/contextuallyTypedClassExpressionMethodDeclaration02.errors.txt @@ -0,0 +1,71 @@ +tests/cases/conformance/types/contextualTypes/methodDeclarations/contextuallyTypedClassExpressionMethodDeclaration02.ts(21,17): error TS7006: Parameter 'arg' implicitly has an 'any' type. +tests/cases/conformance/types/contextualTypes/methodDeclarations/contextuallyTypedClassExpressionMethodDeclaration02.ts(24,17): error TS7006: Parameter 'arg' implicitly has an 'any' type. +tests/cases/conformance/types/contextualTypes/methodDeclarations/contextuallyTypedClassExpressionMethodDeclaration02.ts(32,20): error TS7006: Parameter 'arg' implicitly has an 'any' type. +tests/cases/conformance/types/contextualTypes/methodDeclarations/contextuallyTypedClassExpressionMethodDeclaration02.ts(35,20): error TS7006: Parameter 'arg' implicitly has an 'any' type. +tests/cases/conformance/types/contextualTypes/methodDeclarations/contextuallyTypedClassExpressionMethodDeclaration02.ts(43,29): error TS7006: Parameter 'arg' implicitly has an 'any' type. +tests/cases/conformance/types/contextualTypes/methodDeclarations/contextuallyTypedClassExpressionMethodDeclaration02.ts(46,29): error TS7006: Parameter 'arg' implicitly has an 'any' type. + + +==== tests/cases/conformance/types/contextualTypes/methodDeclarations/contextuallyTypedClassExpressionMethodDeclaration02.ts (6 errors) ==== + + interface A { + numProp: number; + } + + interface B { + strProp: string; + } + + interface Foo { + new (): Bar; + } + + interface Bar { + method1(arg: A): void; + method2(arg: B): void; + } + + function getFoo1(): Foo { + return class { + method1(arg) { + ~~~ +!!! error TS7006: Parameter 'arg' implicitly has an 'any' type. + arg.numProp = 10; + } + method2(arg) { + ~~~ +!!! error TS7006: Parameter 'arg' implicitly has an 'any' type. + arg.strProp = "hello"; + } + } + } + + function getFoo2(): Foo { + return class { + method1 = (arg) => { + ~~~ +!!! error TS7006: Parameter 'arg' implicitly has an 'any' type. + arg.numProp = 10; + } + method2 = (arg) => { + ~~~ +!!! error TS7006: Parameter 'arg' implicitly has an 'any' type. + arg.strProp = "hello"; + } + } + } + + function getFoo3(): Foo { + return class { + method1 = function (arg) { + ~~~ +!!! error TS7006: Parameter 'arg' implicitly has an 'any' type. + arg.numProp = 10; + } + method2 = function (arg) { + ~~~ +!!! error TS7006: Parameter 'arg' implicitly has an 'any' type. + arg.strProp = "hello"; + } + } + } \ No newline at end of file diff --git a/tests/baselines/reference/contextuallyTypedClassExpressionMethodDeclaration02.js b/tests/baselines/reference/contextuallyTypedClassExpressionMethodDeclaration02.js new file mode 100644 index 00000000000..43e9134689f --- /dev/null +++ b/tests/baselines/reference/contextuallyTypedClassExpressionMethodDeclaration02.js @@ -0,0 +1,92 @@ +//// [contextuallyTypedClassExpressionMethodDeclaration02.ts] + +interface A { + numProp: number; +} + +interface B { + strProp: string; +} + +interface Foo { + new (): Bar; +} + +interface Bar { + method1(arg: A): void; + method2(arg: B): void; +} + +function getFoo1(): Foo { + return class { + method1(arg) { + arg.numProp = 10; + } + method2(arg) { + arg.strProp = "hello"; + } + } +} + +function getFoo2(): Foo { + return class { + method1 = (arg) => { + arg.numProp = 10; + } + method2 = (arg) => { + arg.strProp = "hello"; + } + } +} + +function getFoo3(): Foo { + return class { + method1 = function (arg) { + arg.numProp = 10; + } + method2 = function (arg) { + arg.strProp = "hello"; + } + } +} + +//// [contextuallyTypedClassExpressionMethodDeclaration02.js] +function getFoo1() { + return (function () { + function class_1() { + } + class_1.prototype.method1 = function (arg) { + arg.numProp = 10; + }; + class_1.prototype.method2 = function (arg) { + arg.strProp = "hello"; + }; + return class_1; + })(); +} +function getFoo2() { + return (function () { + function class_2() { + this.method1 = function (arg) { + arg.numProp = 10; + }; + this.method2 = function (arg) { + arg.strProp = "hello"; + }; + } + return class_2; + })(); +} +function getFoo3() { + return (function () { + function class_3() { + this.method1 = function (arg) { + arg.numProp = 10; + }; + this.method2 = function (arg) { + arg.strProp = "hello"; + }; + } + return class_3; + })(); +} diff --git a/tests/baselines/reference/contextuallyTypedObjectLiteralMethodDeclaration01.js b/tests/baselines/reference/contextuallyTypedObjectLiteralMethodDeclaration01.js new file mode 100644 index 00000000000..373854114d5 --- /dev/null +++ b/tests/baselines/reference/contextuallyTypedObjectLiteralMethodDeclaration01.js @@ -0,0 +1,79 @@ +//// [contextuallyTypedObjectLiteralMethodDeclaration01.ts] + +interface A { + numProp: number; +} + +interface B { + strProp: string; +} + +interface Foo { + method1(arg: A): void; + method2(arg: B): void; +} + +function getFoo1(): Foo { + return { + method1(arg) { + arg.numProp = 10; + }, + method2(arg) { + arg.strProp = "hello"; + } + } +} + +function getFoo2(): Foo { + return { + method1: (arg) => { + arg.numProp = 10; + }, + method2: (arg) => { + arg.strProp = "hello"; + } + } +} + +function getFoo3(): Foo { + return { + method1: function (arg) { + arg.numProp = 10; + }, + method2: function (arg) { + arg.strProp = "hello"; + } + } +} + +//// [contextuallyTypedObjectLiteralMethodDeclaration01.js] +function getFoo1() { + return { + method1: function (arg) { + arg.numProp = 10; + }, + method2: function (arg) { + arg.strProp = "hello"; + } + }; +} +function getFoo2() { + return { + method1: function (arg) { + arg.numProp = 10; + }, + method2: function (arg) { + arg.strProp = "hello"; + } + }; +} +function getFoo3() { + return { + method1: function (arg) { + arg.numProp = 10; + }, + method2: function (arg) { + arg.strProp = "hello"; + } + }; +} diff --git a/tests/baselines/reference/contextuallyTypedObjectLiteralMethodDeclaration01.symbols b/tests/baselines/reference/contextuallyTypedObjectLiteralMethodDeclaration01.symbols new file mode 100644 index 00000000000..3c26110157a --- /dev/null +++ b/tests/baselines/reference/contextuallyTypedObjectLiteralMethodDeclaration01.symbols @@ -0,0 +1,110 @@ +=== tests/cases/conformance/types/contextualTypes/methodDeclarations/contextuallyTypedObjectLiteralMethodDeclaration01.ts === + +interface A { +>A : Symbol(A, Decl(contextuallyTypedObjectLiteralMethodDeclaration01.ts, 0, 0)) + + numProp: number; +>numProp : Symbol(numProp, Decl(contextuallyTypedObjectLiteralMethodDeclaration01.ts, 1, 13)) +} + +interface B { +>B : Symbol(B, Decl(contextuallyTypedObjectLiteralMethodDeclaration01.ts, 3, 1)) + + strProp: string; +>strProp : Symbol(strProp, Decl(contextuallyTypedObjectLiteralMethodDeclaration01.ts, 5, 14)) +} + +interface Foo { +>Foo : Symbol(Foo, Decl(contextuallyTypedObjectLiteralMethodDeclaration01.ts, 7, 1)) + + method1(arg: A): void; +>method1 : Symbol(method1, Decl(contextuallyTypedObjectLiteralMethodDeclaration01.ts, 9, 15)) +>arg : Symbol(arg, Decl(contextuallyTypedObjectLiteralMethodDeclaration01.ts, 10, 12)) +>A : Symbol(A, Decl(contextuallyTypedObjectLiteralMethodDeclaration01.ts, 0, 0)) + + method2(arg: B): void; +>method2 : Symbol(method2, Decl(contextuallyTypedObjectLiteralMethodDeclaration01.ts, 10, 26)) +>arg : Symbol(arg, Decl(contextuallyTypedObjectLiteralMethodDeclaration01.ts, 11, 12)) +>B : Symbol(B, Decl(contextuallyTypedObjectLiteralMethodDeclaration01.ts, 3, 1)) +} + +function getFoo1(): Foo { +>getFoo1 : Symbol(getFoo1, Decl(contextuallyTypedObjectLiteralMethodDeclaration01.ts, 12, 1)) +>Foo : Symbol(Foo, Decl(contextuallyTypedObjectLiteralMethodDeclaration01.ts, 7, 1)) + + return { + method1(arg) { +>method1 : Symbol(method1, Decl(contextuallyTypedObjectLiteralMethodDeclaration01.ts, 15, 12)) +>arg : Symbol(arg, Decl(contextuallyTypedObjectLiteralMethodDeclaration01.ts, 16, 16)) + + arg.numProp = 10; +>arg.numProp : Symbol(A.numProp, Decl(contextuallyTypedObjectLiteralMethodDeclaration01.ts, 1, 13)) +>arg : Symbol(arg, Decl(contextuallyTypedObjectLiteralMethodDeclaration01.ts, 16, 16)) +>numProp : Symbol(A.numProp, Decl(contextuallyTypedObjectLiteralMethodDeclaration01.ts, 1, 13)) + + }, + method2(arg) { +>method2 : Symbol(method2, Decl(contextuallyTypedObjectLiteralMethodDeclaration01.ts, 18, 10)) +>arg : Symbol(arg, Decl(contextuallyTypedObjectLiteralMethodDeclaration01.ts, 19, 16)) + + arg.strProp = "hello"; +>arg.strProp : Symbol(B.strProp, Decl(contextuallyTypedObjectLiteralMethodDeclaration01.ts, 5, 14)) +>arg : Symbol(arg, Decl(contextuallyTypedObjectLiteralMethodDeclaration01.ts, 19, 16)) +>strProp : Symbol(B.strProp, Decl(contextuallyTypedObjectLiteralMethodDeclaration01.ts, 5, 14)) + } + } +} + +function getFoo2(): Foo { +>getFoo2 : Symbol(getFoo2, Decl(contextuallyTypedObjectLiteralMethodDeclaration01.ts, 23, 1)) +>Foo : Symbol(Foo, Decl(contextuallyTypedObjectLiteralMethodDeclaration01.ts, 7, 1)) + + return { + method1: (arg) => { +>method1 : Symbol(method1, Decl(contextuallyTypedObjectLiteralMethodDeclaration01.ts, 26, 12)) +>arg : Symbol(arg, Decl(contextuallyTypedObjectLiteralMethodDeclaration01.ts, 27, 18)) + + arg.numProp = 10; +>arg.numProp : Symbol(A.numProp, Decl(contextuallyTypedObjectLiteralMethodDeclaration01.ts, 1, 13)) +>arg : Symbol(arg, Decl(contextuallyTypedObjectLiteralMethodDeclaration01.ts, 27, 18)) +>numProp : Symbol(A.numProp, Decl(contextuallyTypedObjectLiteralMethodDeclaration01.ts, 1, 13)) + + }, + method2: (arg) => { +>method2 : Symbol(method2, Decl(contextuallyTypedObjectLiteralMethodDeclaration01.ts, 29, 10)) +>arg : Symbol(arg, Decl(contextuallyTypedObjectLiteralMethodDeclaration01.ts, 30, 18)) + + arg.strProp = "hello"; +>arg.strProp : Symbol(B.strProp, Decl(contextuallyTypedObjectLiteralMethodDeclaration01.ts, 5, 14)) +>arg : Symbol(arg, Decl(contextuallyTypedObjectLiteralMethodDeclaration01.ts, 30, 18)) +>strProp : Symbol(B.strProp, Decl(contextuallyTypedObjectLiteralMethodDeclaration01.ts, 5, 14)) + } + } +} + +function getFoo3(): Foo { +>getFoo3 : Symbol(getFoo3, Decl(contextuallyTypedObjectLiteralMethodDeclaration01.ts, 34, 1)) +>Foo : Symbol(Foo, Decl(contextuallyTypedObjectLiteralMethodDeclaration01.ts, 7, 1)) + + return { + method1: function (arg) { +>method1 : Symbol(method1, Decl(contextuallyTypedObjectLiteralMethodDeclaration01.ts, 37, 12)) +>arg : Symbol(arg, Decl(contextuallyTypedObjectLiteralMethodDeclaration01.ts, 38, 27)) + + arg.numProp = 10; +>arg.numProp : Symbol(A.numProp, Decl(contextuallyTypedObjectLiteralMethodDeclaration01.ts, 1, 13)) +>arg : Symbol(arg, Decl(contextuallyTypedObjectLiteralMethodDeclaration01.ts, 38, 27)) +>numProp : Symbol(A.numProp, Decl(contextuallyTypedObjectLiteralMethodDeclaration01.ts, 1, 13)) + + }, + method2: function (arg) { +>method2 : Symbol(method2, Decl(contextuallyTypedObjectLiteralMethodDeclaration01.ts, 40, 10)) +>arg : Symbol(arg, Decl(contextuallyTypedObjectLiteralMethodDeclaration01.ts, 41, 27)) + + arg.strProp = "hello"; +>arg.strProp : Symbol(B.strProp, Decl(contextuallyTypedObjectLiteralMethodDeclaration01.ts, 5, 14)) +>arg : Symbol(arg, Decl(contextuallyTypedObjectLiteralMethodDeclaration01.ts, 41, 27)) +>strProp : Symbol(B.strProp, Decl(contextuallyTypedObjectLiteralMethodDeclaration01.ts, 5, 14)) + } + } +} diff --git a/tests/baselines/reference/contextuallyTypedObjectLiteralMethodDeclaration01.types b/tests/baselines/reference/contextuallyTypedObjectLiteralMethodDeclaration01.types new file mode 100644 index 00000000000..dcb25792fe0 --- /dev/null +++ b/tests/baselines/reference/contextuallyTypedObjectLiteralMethodDeclaration01.types @@ -0,0 +1,132 @@ +=== tests/cases/conformance/types/contextualTypes/methodDeclarations/contextuallyTypedObjectLiteralMethodDeclaration01.ts === + +interface A { +>A : A + + numProp: number; +>numProp : number +} + +interface B { +>B : B + + strProp: string; +>strProp : string +} + +interface Foo { +>Foo : Foo + + method1(arg: A): void; +>method1 : (arg: A) => void +>arg : A +>A : A + + method2(arg: B): void; +>method2 : (arg: B) => void +>arg : B +>B : B +} + +function getFoo1(): Foo { +>getFoo1 : () => Foo +>Foo : Foo + + return { +>{ method1(arg) { arg.numProp = 10; }, method2(arg) { arg.strProp = "hello"; } } : { method1(arg: A): void; method2(arg: B): void; } + + method1(arg) { +>method1 : (arg: A) => void +>arg : A + + arg.numProp = 10; +>arg.numProp = 10 : number +>arg.numProp : number +>arg : A +>numProp : number +>10 : number + + }, + method2(arg) { +>method2 : (arg: B) => void +>arg : B + + arg.strProp = "hello"; +>arg.strProp = "hello" : string +>arg.strProp : string +>arg : B +>strProp : string +>"hello" : string + } + } +} + +function getFoo2(): Foo { +>getFoo2 : () => Foo +>Foo : Foo + + return { +>{ method1: (arg) => { arg.numProp = 10; }, method2: (arg) => { arg.strProp = "hello"; } } : { method1: (arg: A) => void; method2: (arg: B) => void; } + + method1: (arg) => { +>method1 : (arg: A) => void +>(arg) => { arg.numProp = 10; } : (arg: A) => void +>arg : A + + arg.numProp = 10; +>arg.numProp = 10 : number +>arg.numProp : number +>arg : A +>numProp : number +>10 : number + + }, + method2: (arg) => { +>method2 : (arg: B) => void +>(arg) => { arg.strProp = "hello"; } : (arg: B) => void +>arg : B + + arg.strProp = "hello"; +>arg.strProp = "hello" : string +>arg.strProp : string +>arg : B +>strProp : string +>"hello" : string + } + } +} + +function getFoo3(): Foo { +>getFoo3 : () => Foo +>Foo : Foo + + return { +>{ method1: function (arg) { arg.numProp = 10; }, method2: function (arg) { arg.strProp = "hello"; } } : { method1: (arg: A) => void; method2: (arg: B) => void; } + + method1: function (arg) { +>method1 : (arg: A) => void +>function (arg) { arg.numProp = 10; } : (arg: A) => void +>arg : A + + arg.numProp = 10; +>arg.numProp = 10 : number +>arg.numProp : number +>arg : A +>numProp : number +>10 : number + + }, + method2: function (arg) { +>method2 : (arg: B) => void +>function (arg) { arg.strProp = "hello"; } : (arg: B) => void +>arg : B + + arg.strProp = "hello"; +>arg.strProp = "hello" : string +>arg.strProp : string +>arg : B +>strProp : string +>"hello" : string + } + } +} diff --git a/tests/baselines/reference/declFileAliasUseBeforeDeclaration.js b/tests/baselines/reference/declFileAliasUseBeforeDeclaration.js index 7814e9641ba..2355d7bbc7a 100644 --- a/tests/baselines/reference/declFileAliasUseBeforeDeclaration.js +++ b/tests/baselines/reference/declFileAliasUseBeforeDeclaration.js @@ -6,7 +6,7 @@ export class Foo { } //// [declFileAliasUseBeforeDeclaration_test.ts] export function bar(a: foo.Foo) { } -import foo = require("declFileAliasUseBeforeDeclaration_foo"); +import foo = require("./declFileAliasUseBeforeDeclaration_foo"); //// [declFileAliasUseBeforeDeclaration_foo.js] var Foo = (function () { @@ -25,4 +25,4 @@ export declare class Foo { } //// [declFileAliasUseBeforeDeclaration_test.d.ts] export declare function bar(a: foo.Foo): void; -import foo = require("declFileAliasUseBeforeDeclaration_foo"); +import foo = require("./declFileAliasUseBeforeDeclaration_foo"); diff --git a/tests/baselines/reference/declFileAliasUseBeforeDeclaration.symbols b/tests/baselines/reference/declFileAliasUseBeforeDeclaration.symbols index ee7795ae455..ba74b6cdfb7 100644 --- a/tests/baselines/reference/declFileAliasUseBeforeDeclaration.symbols +++ b/tests/baselines/reference/declFileAliasUseBeforeDeclaration.symbols @@ -5,7 +5,7 @@ export function bar(a: foo.Foo) { } >foo : Symbol(foo, Decl(declFileAliasUseBeforeDeclaration_test.ts, 0, 35)) >Foo : Symbol(foo.Foo, Decl(declFileAliasUseBeforeDeclaration_foo.ts, 0, 0)) -import foo = require("declFileAliasUseBeforeDeclaration_foo"); +import foo = require("./declFileAliasUseBeforeDeclaration_foo"); >foo : Symbol(foo, Decl(declFileAliasUseBeforeDeclaration_test.ts, 0, 35)) === tests/cases/compiler/declFileAliasUseBeforeDeclaration_foo.ts === diff --git a/tests/baselines/reference/declFileAliasUseBeforeDeclaration.types b/tests/baselines/reference/declFileAliasUseBeforeDeclaration.types index c21d98d90d5..544efded5ee 100644 --- a/tests/baselines/reference/declFileAliasUseBeforeDeclaration.types +++ b/tests/baselines/reference/declFileAliasUseBeforeDeclaration.types @@ -5,7 +5,7 @@ export function bar(a: foo.Foo) { } >foo : any >Foo : foo.Foo -import foo = require("declFileAliasUseBeforeDeclaration_foo"); +import foo = require("./declFileAliasUseBeforeDeclaration_foo"); >foo : typeof foo === tests/cases/compiler/declFileAliasUseBeforeDeclaration_foo.ts === diff --git a/tests/baselines/reference/declFileForExportedImport.js b/tests/baselines/reference/declFileForExportedImport.js index af7cfa46b73..88967c4c2a4 100644 --- a/tests/baselines/reference/declFileForExportedImport.js +++ b/tests/baselines/reference/declFileForExportedImport.js @@ -5,7 +5,7 @@ export var x: number; //// [declFileForExportedImport_1.ts] /// -export import a = require('declFileForExportedImport_0'); +export import a = require('./declFileForExportedImport_0'); var y = a.x; export import b = a; @@ -14,7 +14,7 @@ var z = b.x; //// [declFileForExportedImport_0.js] //// [declFileForExportedImport_1.js] /// -exports.a = require('declFileForExportedImport_0'); +exports.a = require('./declFileForExportedImport_0'); var y = exports.a.x; exports.b = exports.a; var z = exports.b.x; @@ -24,5 +24,5 @@ var z = exports.b.x; export declare var x: number; //// [declFileForExportedImport_1.d.ts] /// -export import a = require('declFileForExportedImport_0'); +export import a = require('./declFileForExportedImport_0'); export import b = a; diff --git a/tests/baselines/reference/declFileForExportedImport.symbols b/tests/baselines/reference/declFileForExportedImport.symbols index fb7b7cd343f..fe14836199c 100644 --- a/tests/baselines/reference/declFileForExportedImport.symbols +++ b/tests/baselines/reference/declFileForExportedImport.symbols @@ -1,6 +1,6 @@ === tests/cases/compiler/declFileForExportedImport_1.ts === /// -export import a = require('declFileForExportedImport_0'); +export import a = require('./declFileForExportedImport_0'); >a : Symbol(a, Decl(declFileForExportedImport_1.ts, 0, 0)) var y = a.x; diff --git a/tests/baselines/reference/declFileForExportedImport.types b/tests/baselines/reference/declFileForExportedImport.types index 987f82bf5a0..0ff8c2f454b 100644 --- a/tests/baselines/reference/declFileForExportedImport.types +++ b/tests/baselines/reference/declFileForExportedImport.types @@ -1,6 +1,6 @@ === tests/cases/compiler/declFileForExportedImport_1.ts === /// -export import a = require('declFileForExportedImport_0'); +export import a = require('./declFileForExportedImport_0'); >a : typeof a var y = a.x; diff --git a/tests/baselines/reference/declFileForTypeParameters.types b/tests/baselines/reference/declFileForTypeParameters.types index 6308a0c92ba..fe69da2cd0f 100644 --- a/tests/baselines/reference/declFileForTypeParameters.types +++ b/tests/baselines/reference/declFileForTypeParameters.types @@ -16,7 +16,7 @@ class C { return this.x; >this.x : T ->this : C +>this : this >x : T } } diff --git a/tests/baselines/reference/declFileGenericType2.types b/tests/baselines/reference/declFileGenericType2.types index 07bcba3e85a..c2a43db1921 100644 --- a/tests/baselines/reference/declFileGenericType2.types +++ b/tests/baselines/reference/declFileGenericType2.types @@ -142,7 +142,7 @@ module templa.dom.mvc.composite { this._controllers = []; >this._controllers = [] : undefined[] >this._controllers : templa.mvc.IController[] ->this : AbstractCompositeElementController +>this : this >_controllers : templa.mvc.IController[] >[] : undefined[] } diff --git a/tests/baselines/reference/declFileImportModuleWithExportAssignment.js b/tests/baselines/reference/declFileImportModuleWithExportAssignment.js index 145d4ad3ff2..b070b67ad18 100644 --- a/tests/baselines/reference/declFileImportModuleWithExportAssignment.js +++ b/tests/baselines/reference/declFileImportModuleWithExportAssignment.js @@ -21,7 +21,7 @@ export = m2; //// [declFileImportModuleWithExportAssignment_1.ts] /**This is on import declaration*/ -import a1 = require("declFileImportModuleWithExportAssignment_0"); +import a1 = require("./declFileImportModuleWithExportAssignment_0"); export var a = a1; a.test1(null, null, null); @@ -31,7 +31,7 @@ var m2; module.exports = m2; //// [declFileImportModuleWithExportAssignment_1.js] /**This is on import declaration*/ -var a1 = require("declFileImportModuleWithExportAssignment_0"); +var a1 = require("./declFileImportModuleWithExportAssignment_0"); exports.a = a1; exports.a.test1(null, null, null); @@ -54,7 +54,7 @@ declare var m2: { export = m2; //// [declFileImportModuleWithExportAssignment_1.d.ts] /**This is on import declaration*/ -import a1 = require("declFileImportModuleWithExportAssignment_0"); +import a1 = require("./declFileImportModuleWithExportAssignment_0"); export declare var a: { (): a1.connectExport; test1: a1.connectModule; diff --git a/tests/baselines/reference/declFileImportModuleWithExportAssignment.symbols b/tests/baselines/reference/declFileImportModuleWithExportAssignment.symbols index 62d9d599939..a33e0fef758 100644 --- a/tests/baselines/reference/declFileImportModuleWithExportAssignment.symbols +++ b/tests/baselines/reference/declFileImportModuleWithExportAssignment.symbols @@ -1,6 +1,6 @@ === tests/cases/compiler/declFileImportModuleWithExportAssignment_1.ts === /**This is on import declaration*/ -import a1 = require("declFileImportModuleWithExportAssignment_0"); +import a1 = require("./declFileImportModuleWithExportAssignment_0"); >a1 : Symbol(a1, Decl(declFileImportModuleWithExportAssignment_1.ts, 0, 0)) export var a = a1; diff --git a/tests/baselines/reference/declFileImportModuleWithExportAssignment.types b/tests/baselines/reference/declFileImportModuleWithExportAssignment.types index d3082311c1d..123b7b56d4f 100644 --- a/tests/baselines/reference/declFileImportModuleWithExportAssignment.types +++ b/tests/baselines/reference/declFileImportModuleWithExportAssignment.types @@ -1,6 +1,6 @@ === tests/cases/compiler/declFileImportModuleWithExportAssignment_1.ts === /**This is on import declaration*/ -import a1 = require("declFileImportModuleWithExportAssignment_0"); +import a1 = require("./declFileImportModuleWithExportAssignment_0"); >a1 : { (): a1.connectExport; test1: a1.connectModule; test2(): a1.connectModule; } export var a = a1; diff --git a/tests/baselines/reference/declarationEmitDestructuring2.js b/tests/baselines/reference/declarationEmitDestructuring2.js index eeabbf1ff37..09980c5c9dd 100644 --- a/tests/baselines/reference/declarationEmitDestructuring2.js +++ b/tests/baselines/reference/declarationEmitDestructuring2.js @@ -21,8 +21,8 @@ function h1(_a) { //// [declarationEmitDestructuring2.d.ts] declare function f({x, y: [a, b, c, d]}?: { - x: number; - y: [number, number, number, number]; + 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]], { diff --git a/tests/baselines/reference/declarationEmitDestructuring4.errors.txt b/tests/baselines/reference/declarationEmitDestructuring4.errors.txt new file mode 100644 index 00000000000..2787d5e6674 --- /dev/null +++ b/tests/baselines/reference/declarationEmitDestructuring4.errors.txt @@ -0,0 +1,17 @@ +tests/cases/compiler/declarationEmitDestructuring4.ts(9,22): error TS2353: Object literal may only specify known properties, and 'x' does not exist in type '{}'. + + +==== tests/cases/compiler/declarationEmitDestructuring4.ts (1 errors) ==== + // 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 }) { } + ~ +!!! error TS2353: Object literal may only specify known properties, and 'x' does not exist in type '{}'. + + \ No newline at end of file diff --git a/tests/baselines/reference/declarationEmitDestructuring4.symbols b/tests/baselines/reference/declarationEmitDestructuring4.symbols deleted file mode 100644 index 9f2eb162b6f..00000000000 --- a/tests/baselines/reference/declarationEmitDestructuring4.symbols +++ /dev/null @@ -1,21 +0,0 @@ -=== 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 : Symbol(baz, Decl(declarationEmitDestructuring4.ts, 0, 0)) - -function baz1([] = [1,2,3]) { } ->baz1 : Symbol(baz1, Decl(declarationEmitDestructuring4.ts, 3, 20)) - -function baz2([[]] = [[1,2,3]]) { } ->baz2 : Symbol(baz2, Decl(declarationEmitDestructuring4.ts, 4, 31)) - -function baz3({}) { } ->baz3 : Symbol(baz3, Decl(declarationEmitDestructuring4.ts, 5, 35)) - -function baz4({} = { x: 10 }) { } ->baz4 : Symbol(baz4, Decl(declarationEmitDestructuring4.ts, 7, 21)) ->x : Symbol(x, Decl(declarationEmitDestructuring4.ts, 8, 20)) - - diff --git a/tests/baselines/reference/declarationEmitDestructuring4.types b/tests/baselines/reference/declarationEmitDestructuring4.types deleted file mode 100644 index 9621d61e02b..00000000000 --- a/tests/baselines/reference/declarationEmitDestructuring4.types +++ /dev/null @@ -1,32 +0,0 @@ -=== 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[] ->1 : number ->2 : number ->3 : number - -function baz2([[]] = [[1,2,3]]) { } ->baz2 : ([[]]?: [number[]]) => void ->[[1,2,3]] : [number[]] ->[1,2,3] : number[] ->1 : number ->2 : number ->3 : number - -function baz3({}) { } ->baz3 : ({}: {}) => void - -function baz4({} = { x: 10 }) { } ->baz4 : ({}?: { x: number; }) => void ->{ x: 10 } : { x: number; } ->x : number ->10 : number - - diff --git a/tests/baselines/reference/declarationEmitDestructuringArrayPattern2.errors.txt b/tests/baselines/reference/declarationEmitDestructuringArrayPattern2.errors.txt new file mode 100644 index 00000000000..26998fd83ae --- /dev/null +++ b/tests/baselines/reference/declarationEmitDestructuringArrayPattern2.errors.txt @@ -0,0 +1,22 @@ +tests/cases/compiler/declarationEmitDestructuringArrayPattern2.ts(4,6): error TS2525: Initializer provides no value for this binding element and the binding element has no default value. +tests/cases/compiler/declarationEmitDestructuringArrayPattern2.ts(4,11): error TS2525: Initializer provides no value for this binding element and the binding element has no default value. +tests/cases/compiler/declarationEmitDestructuringArrayPattern2.ts(4,16): error TS2525: Initializer provides no value for this binding element and the binding element has no default value. + + +==== tests/cases/compiler/declarationEmitDestructuringArrayPattern2.ts (3 errors) ==== + var [x10, [y10, [z10]]] = [1, ["hello", [true]]]; + + var [x11 = 0, y11 = ""] = [1, "hello"]; + var [a11, b11, c11] = []; + ~~~ +!!! error TS2525: Initializer provides no value for this binding element and the binding element has no default value. + ~~~ +!!! error TS2525: Initializer provides no value for this binding element and the binding element has no default value. + ~~~ +!!! error TS2525: Initializer provides no value for this binding element and the binding element has no default value. + + 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 }]; + \ No newline at end of file diff --git a/tests/baselines/reference/declarationEmitDestructuringArrayPattern2.symbols b/tests/baselines/reference/declarationEmitDestructuringArrayPattern2.symbols deleted file mode 100644 index 0a3c6f4044d..00000000000 --- a/tests/baselines/reference/declarationEmitDestructuringArrayPattern2.symbols +++ /dev/null @@ -1,40 +0,0 @@ -=== tests/cases/compiler/declarationEmitDestructuringArrayPattern2.ts === -var [x10, [y10, [z10]]] = [1, ["hello", [true]]]; ->x10 : Symbol(x10, Decl(declarationEmitDestructuringArrayPattern2.ts, 0, 5)) ->y10 : Symbol(y10, Decl(declarationEmitDestructuringArrayPattern2.ts, 0, 11)) ->z10 : Symbol(z10, Decl(declarationEmitDestructuringArrayPattern2.ts, 0, 17)) - -var [x11 = 0, y11 = ""] = [1, "hello"]; ->x11 : Symbol(x11, Decl(declarationEmitDestructuringArrayPattern2.ts, 2, 5)) ->y11 : Symbol(y11, Decl(declarationEmitDestructuringArrayPattern2.ts, 2, 13)) - -var [a11, b11, c11] = []; ->a11 : Symbol(a11, Decl(declarationEmitDestructuringArrayPattern2.ts, 3, 5)) ->b11 : Symbol(b11, Decl(declarationEmitDestructuringArrayPattern2.ts, 3, 9)) ->c11 : Symbol(c11, Decl(declarationEmitDestructuringArrayPattern2.ts, 3, 14)) - -var [a2, [b2, { x12, y12: c2 }]=["abc", { x12: 10, y12: false }]] = [1, ["hello", { x12: 5, y12: true }]]; ->a2 : Symbol(a2, Decl(declarationEmitDestructuringArrayPattern2.ts, 5, 5)) ->b2 : Symbol(b2, Decl(declarationEmitDestructuringArrayPattern2.ts, 5, 10)) ->x12 : Symbol(x12, Decl(declarationEmitDestructuringArrayPattern2.ts, 5, 15)) ->y12 : Symbol(y12, Decl(declarationEmitDestructuringArrayPattern2.ts, 5, 91)) ->c2 : Symbol(c2, Decl(declarationEmitDestructuringArrayPattern2.ts, 5, 20)) ->x12 : Symbol(x12, Decl(declarationEmitDestructuringArrayPattern2.ts, 5, 41)) ->y12 : Symbol(y12, Decl(declarationEmitDestructuringArrayPattern2.ts, 5, 50)) ->x12 : Symbol(x12, Decl(declarationEmitDestructuringArrayPattern2.ts, 5, 83)) ->y12 : Symbol(y12, Decl(declarationEmitDestructuringArrayPattern2.ts, 5, 91)) - -var [x13, y13] = [1, "hello"]; ->x13 : Symbol(x13, Decl(declarationEmitDestructuringArrayPattern2.ts, 7, 5)) ->y13 : Symbol(y13, Decl(declarationEmitDestructuringArrayPattern2.ts, 7, 9)) - -var [a3, b3] = [[x13, y13], { x: x13, y: y13 }]; ->a3 : Symbol(a3, Decl(declarationEmitDestructuringArrayPattern2.ts, 8, 5)) ->b3 : Symbol(b3, Decl(declarationEmitDestructuringArrayPattern2.ts, 8, 8)) ->x13 : Symbol(x13, Decl(declarationEmitDestructuringArrayPattern2.ts, 7, 5)) ->y13 : Symbol(y13, Decl(declarationEmitDestructuringArrayPattern2.ts, 7, 9)) ->x : Symbol(x, Decl(declarationEmitDestructuringArrayPattern2.ts, 8, 29)) ->x13 : Symbol(x13, Decl(declarationEmitDestructuringArrayPattern2.ts, 7, 5)) ->y : Symbol(y, Decl(declarationEmitDestructuringArrayPattern2.ts, 8, 37)) ->y13 : Symbol(y13, Decl(declarationEmitDestructuringArrayPattern2.ts, 7, 9)) - diff --git a/tests/baselines/reference/declarationEmitDestructuringArrayPattern2.types b/tests/baselines/reference/declarationEmitDestructuringArrayPattern2.types deleted file mode 100644 index eb028aacff4..00000000000 --- a/tests/baselines/reference/declarationEmitDestructuringArrayPattern2.types +++ /dev/null @@ -1,70 +0,0 @@ -=== tests/cases/compiler/declarationEmitDestructuringArrayPattern2.ts === -var [x10, [y10, [z10]]] = [1, ["hello", [true]]]; ->x10 : number ->y10 : string ->z10 : boolean ->[1, ["hello", [true]]] : [number, [string, [boolean]]] ->1 : number ->["hello", [true]] : [string, [boolean]] ->"hello" : string ->[true] : [boolean] ->true : boolean - -var [x11 = 0, y11 = ""] = [1, "hello"]; ->x11 : number ->0 : number ->y11 : string ->"" : string ->[1, "hello"] : [number, string] ->1 : number ->"hello" : 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 : any ->c2 : boolean ->["abc", { x12: 10, y12: false }] : [string, { x12: number; y12: boolean; }] ->"abc" : string ->{ x12: 10, y12: false } : { x12: number; y12: boolean; } ->x12 : number ->10 : number ->y12 : boolean ->false : boolean ->[1, ["hello", { x12: 5, y12: true }]] : [number, [string, { x12: number; y12: boolean; }]] ->1 : number ->["hello", { x12: 5, y12: true }] : [string, { x12: number; y12: boolean; }] ->"hello" : string ->{ x12: 5, y12: true } : { x12: number; y12: boolean; } ->x12 : number ->5 : number ->y12 : boolean ->true : boolean - -var [x13, y13] = [1, "hello"]; ->x13 : number ->y13 : string ->[1, "hello"] : [number, string] ->1 : number ->"hello" : string - -var [a3, b3] = [[x13, y13], { x: x13, y: y13 }]; ->a3 : (number | string)[] ->b3 : { x: number; y: string; } ->[[x13, y13], { x: x13, y: y13 }] : [(number | string)[], { x: number; y: string; }] ->[x13, y13] : (number | string)[] ->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/declarationEmitDestructuringObjectLiteralPattern.errors.txt b/tests/baselines/reference/declarationEmitDestructuringObjectLiteralPattern.errors.txt new file mode 100644 index 00000000000..92a8cba2d40 --- /dev/null +++ b/tests/baselines/reference/declarationEmitDestructuringObjectLiteralPattern.errors.txt @@ -0,0 +1,43 @@ +tests/cases/compiler/declarationEmitDestructuringObjectLiteralPattern.ts(2,13): error TS2353: Object literal may only specify known properties, and 'x' does not exist in type '{}'. +tests/cases/compiler/declarationEmitDestructuringObjectLiteralPattern.ts(2,19): error TS2353: Object literal may only specify known properties, and 'y' does not exist in type '{}'. +tests/cases/compiler/declarationEmitDestructuringObjectLiteralPattern.ts(3,23): error TS2353: Object literal may only specify known properties, and 'y4' does not exist in type '{ x4: any; }'. +tests/cases/compiler/declarationEmitDestructuringObjectLiteralPattern.ts(4,16): error TS2353: Object literal may only specify known properties, and 'x5' does not exist in type '{ y5: any; }'. +tests/cases/compiler/declarationEmitDestructuringObjectLiteralPattern.ts(6,27): error TS2353: Object literal may only specify known properties, and 'y7' does not exist in type '{ x7: any; }'. +tests/cases/compiler/declarationEmitDestructuringObjectLiteralPattern.ts(7,20): error TS2353: Object literal may only specify known properties, and 'x8' does not exist in type '{ y8: any; }'. + + +==== tests/cases/compiler/declarationEmitDestructuringObjectLiteralPattern.ts (6 errors) ==== + + var { } = { x: 5, y: "hello" }; + ~ +!!! error TS2353: Object literal may only specify known properties, and 'x' does not exist in type '{}'. + ~ +!!! error TS2353: Object literal may only specify known properties, and 'y' does not exist in type '{}'. + var { x4 } = { x4: 5, y4: "hello" }; + ~~ +!!! error TS2353: Object literal may only specify known properties, and 'y4' does not exist in type '{ x4: any; }'. + var { y5 } = { x5: 5, y5: "hello" }; + ~~ +!!! error TS2353: Object literal may only specify known properties, and 'x5' does not exist in type '{ y5: any; }'. + var { x6, y6 } = { x6: 5, y6: "hello" }; + var { x7: a1 } = { x7: 5, y7: "hello" }; + ~~ +!!! error TS2353: Object literal may only specify known properties, and 'y7' does not exist in type '{ x7: any; }'. + var { y8: b1 } = { x8: 5, y8: "hello" }; + ~~ +!!! error TS2353: Object literal may only specify known properties, and 'x8' does not exist in type '{ y8: any; }'. + 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(); + } \ No newline at end of file diff --git a/tests/baselines/reference/declarationEmitDestructuringObjectLiteralPattern.symbols b/tests/baselines/reference/declarationEmitDestructuringObjectLiteralPattern.symbols deleted file mode 100644 index 0a57a93f3d0..00000000000 --- a/tests/baselines/reference/declarationEmitDestructuringObjectLiteralPattern.symbols +++ /dev/null @@ -1,89 +0,0 @@ -=== tests/cases/compiler/declarationEmitDestructuringObjectLiteralPattern.ts === - -var { } = { x: 5, y: "hello" }; ->x : Symbol(x, Decl(declarationEmitDestructuringObjectLiteralPattern.ts, 1, 11)) ->y : Symbol(y, Decl(declarationEmitDestructuringObjectLiteralPattern.ts, 1, 17)) - -var { x4 } = { x4: 5, y4: "hello" }; ->x4 : Symbol(x4, Decl(declarationEmitDestructuringObjectLiteralPattern.ts, 2, 5)) ->x4 : Symbol(x4, Decl(declarationEmitDestructuringObjectLiteralPattern.ts, 2, 14)) ->y4 : Symbol(y4, Decl(declarationEmitDestructuringObjectLiteralPattern.ts, 2, 21)) - -var { y5 } = { x5: 5, y5: "hello" }; ->y5 : Symbol(y5, Decl(declarationEmitDestructuringObjectLiteralPattern.ts, 3, 5)) ->x5 : Symbol(x5, Decl(declarationEmitDestructuringObjectLiteralPattern.ts, 3, 14)) ->y5 : Symbol(y5, Decl(declarationEmitDestructuringObjectLiteralPattern.ts, 3, 21)) - -var { x6, y6 } = { x6: 5, y6: "hello" }; ->x6 : Symbol(x6, Decl(declarationEmitDestructuringObjectLiteralPattern.ts, 4, 5)) ->y6 : Symbol(y6, Decl(declarationEmitDestructuringObjectLiteralPattern.ts, 4, 9)) ->x6 : Symbol(x6, Decl(declarationEmitDestructuringObjectLiteralPattern.ts, 4, 18)) ->y6 : Symbol(y6, Decl(declarationEmitDestructuringObjectLiteralPattern.ts, 4, 25)) - -var { x7: a1 } = { x7: 5, y7: "hello" }; ->x7 : Symbol(x7, Decl(declarationEmitDestructuringObjectLiteralPattern.ts, 5, 18)) ->a1 : Symbol(a1, Decl(declarationEmitDestructuringObjectLiteralPattern.ts, 5, 5)) ->x7 : Symbol(x7, Decl(declarationEmitDestructuringObjectLiteralPattern.ts, 5, 18)) ->y7 : Symbol(y7, Decl(declarationEmitDestructuringObjectLiteralPattern.ts, 5, 25)) - -var { y8: b1 } = { x8: 5, y8: "hello" }; ->y8 : Symbol(y8, Decl(declarationEmitDestructuringObjectLiteralPattern.ts, 6, 25)) ->b1 : Symbol(b1, Decl(declarationEmitDestructuringObjectLiteralPattern.ts, 6, 5)) ->x8 : Symbol(x8, Decl(declarationEmitDestructuringObjectLiteralPattern.ts, 6, 18)) ->y8 : Symbol(y8, Decl(declarationEmitDestructuringObjectLiteralPattern.ts, 6, 25)) - -var { x9: a2, y9: b2 } = { x9: 5, y9: "hello" }; ->x9 : Symbol(x9, Decl(declarationEmitDestructuringObjectLiteralPattern.ts, 7, 26)) ->a2 : Symbol(a2, Decl(declarationEmitDestructuringObjectLiteralPattern.ts, 7, 5)) ->y9 : Symbol(y9, Decl(declarationEmitDestructuringObjectLiteralPattern.ts, 7, 33)) ->b2 : Symbol(b2, Decl(declarationEmitDestructuringObjectLiteralPattern.ts, 7, 13)) ->x9 : Symbol(x9, Decl(declarationEmitDestructuringObjectLiteralPattern.ts, 7, 26)) ->y9 : Symbol(y9, Decl(declarationEmitDestructuringObjectLiteralPattern.ts, 7, 33)) - -var { a: x11, b: { a: y11, b: { a: z11 }}} = { a: 1, b: { a: "hello", b: { a: true } } }; ->a : Symbol(a, Decl(declarationEmitDestructuringObjectLiteralPattern.ts, 9, 46)) ->x11 : Symbol(x11, Decl(declarationEmitDestructuringObjectLiteralPattern.ts, 9, 5)) ->b : Symbol(b, Decl(declarationEmitDestructuringObjectLiteralPattern.ts, 9, 52)) ->a : Symbol(a, Decl(declarationEmitDestructuringObjectLiteralPattern.ts, 9, 57)) ->y11 : Symbol(y11, Decl(declarationEmitDestructuringObjectLiteralPattern.ts, 9, 18)) ->b : Symbol(b, Decl(declarationEmitDestructuringObjectLiteralPattern.ts, 9, 69)) ->a : Symbol(a, Decl(declarationEmitDestructuringObjectLiteralPattern.ts, 9, 74)) ->z11 : Symbol(z11, Decl(declarationEmitDestructuringObjectLiteralPattern.ts, 9, 31)) ->a : Symbol(a, Decl(declarationEmitDestructuringObjectLiteralPattern.ts, 9, 46)) ->b : Symbol(b, Decl(declarationEmitDestructuringObjectLiteralPattern.ts, 9, 52)) ->a : Symbol(a, Decl(declarationEmitDestructuringObjectLiteralPattern.ts, 9, 57)) ->b : Symbol(b, Decl(declarationEmitDestructuringObjectLiteralPattern.ts, 9, 69)) ->a : Symbol(a, Decl(declarationEmitDestructuringObjectLiteralPattern.ts, 9, 74)) - -function f15() { ->f15 : Symbol(f15, Decl(declarationEmitDestructuringObjectLiteralPattern.ts, 9, 89)) - - var a4 = "hello"; ->a4 : Symbol(a4, Decl(declarationEmitDestructuringObjectLiteralPattern.ts, 12, 7)) - - var b4 = 1; ->b4 : Symbol(b4, Decl(declarationEmitDestructuringObjectLiteralPattern.ts, 13, 7)) - - var c4 = true; ->c4 : Symbol(c4, Decl(declarationEmitDestructuringObjectLiteralPattern.ts, 14, 7)) - - return { a4, b4, c4 }; ->a4 : Symbol(a4, Decl(declarationEmitDestructuringObjectLiteralPattern.ts, 15, 12)) ->b4 : Symbol(b4, Decl(declarationEmitDestructuringObjectLiteralPattern.ts, 15, 16)) ->c4 : Symbol(c4, Decl(declarationEmitDestructuringObjectLiteralPattern.ts, 15, 20)) -} -var { a4, b4, c4 } = f15(); ->a4 : Symbol(a4, Decl(declarationEmitDestructuringObjectLiteralPattern.ts, 17, 5)) ->b4 : Symbol(b4, Decl(declarationEmitDestructuringObjectLiteralPattern.ts, 17, 9)) ->c4 : Symbol(c4, Decl(declarationEmitDestructuringObjectLiteralPattern.ts, 17, 13)) ->f15 : Symbol(f15, Decl(declarationEmitDestructuringObjectLiteralPattern.ts, 9, 89)) - -module m { ->m : Symbol(m, Decl(declarationEmitDestructuringObjectLiteralPattern.ts, 17, 27)) - - export var { a4, b4, c4 } = f15(); ->a4 : Symbol(a4, Decl(declarationEmitDestructuringObjectLiteralPattern.ts, 20, 16)) ->b4 : Symbol(b4, Decl(declarationEmitDestructuringObjectLiteralPattern.ts, 20, 20)) ->c4 : Symbol(c4, Decl(declarationEmitDestructuringObjectLiteralPattern.ts, 20, 24)) ->f15 : Symbol(f15, Decl(declarationEmitDestructuringObjectLiteralPattern.ts, 9, 89)) -} diff --git a/tests/baselines/reference/declarationEmitDestructuringObjectLiteralPattern.types b/tests/baselines/reference/declarationEmitDestructuringObjectLiteralPattern.types deleted file mode 100644 index 0911a27838b..00000000000 --- a/tests/baselines/reference/declarationEmitDestructuringObjectLiteralPattern.types +++ /dev/null @@ -1,122 +0,0 @@ -=== tests/cases/compiler/declarationEmitDestructuringObjectLiteralPattern.ts === - -var { } = { x: 5, y: "hello" }; ->{ x: 5, y: "hello" } : { x: number; y: string; } ->x : number ->5 : number ->y : string ->"hello" : string - -var { x4 } = { x4: 5, y4: "hello" }; ->x4 : number ->{ x4: 5, y4: "hello" } : { x4: number; y4: string; } ->x4 : number ->5 : number ->y4 : string ->"hello" : string - -var { y5 } = { x5: 5, y5: "hello" }; ->y5 : string ->{ x5: 5, y5: "hello" } : { x5: number; y5: string; } ->x5 : number ->5 : number ->y5 : string ->"hello" : string - -var { x6, y6 } = { x6: 5, y6: "hello" }; ->x6 : number ->y6 : string ->{ x6: 5, y6: "hello" } : { x6: number; y6: string; } ->x6 : number ->5 : number ->y6 : string ->"hello" : string - -var { x7: a1 } = { x7: 5, y7: "hello" }; ->x7 : any ->a1 : number ->{ x7: 5, y7: "hello" } : { x7: number; y7: string; } ->x7 : number ->5 : number ->y7 : string ->"hello" : string - -var { y8: b1 } = { x8: 5, y8: "hello" }; ->y8 : any ->b1 : string ->{ x8: 5, y8: "hello" } : { x8: number; y8: string; } ->x8 : number ->5 : number ->y8 : string ->"hello" : string - -var { x9: a2, y9: b2 } = { x9: 5, y9: "hello" }; ->x9 : any ->a2 : number ->y9 : any ->b2 : string ->{ x9: 5, y9: "hello" } : { x9: number; y9: string; } ->x9 : number ->5 : number ->y9 : string ->"hello" : string - -var { a: x11, b: { a: y11, b: { a: z11 }}} = { a: 1, b: { a: "hello", b: { a: true } } }; ->a : any ->x11 : number ->b : any ->a : any ->y11 : string ->b : any ->a : any ->z11 : boolean ->{ a: 1, b: { a: "hello", b: { a: true } } } : { a: number; b: { a: string; b: { a: boolean; }; }; } ->a : number ->1 : number ->b : { a: string; b: { a: boolean; }; } ->{ a: "hello", b: { a: true } } : { a: string; b: { a: boolean; }; } ->a : string ->"hello" : string ->b : { a: boolean; } ->{ a: true } : { a: boolean; } ->a : boolean ->true : boolean - -function f15() { ->f15 : () => { a4: string; b4: number; c4: boolean; } - - var a4 = "hello"; ->a4 : string ->"hello" : string - - var b4 = 1; ->b4 : number ->1 : number - - var c4 = true; ->c4 : boolean ->true : 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.errors.txt b/tests/baselines/reference/declarationEmitDestructuringObjectLiteralPattern1.errors.txt new file mode 100644 index 00000000000..24fbcf99ad1 --- /dev/null +++ b/tests/baselines/reference/declarationEmitDestructuringObjectLiteralPattern1.errors.txt @@ -0,0 +1,29 @@ +tests/cases/compiler/declarationEmitDestructuringObjectLiteralPattern1.ts(2,13): error TS2353: Object literal may only specify known properties, and 'x' does not exist in type '{}'. +tests/cases/compiler/declarationEmitDestructuringObjectLiteralPattern1.ts(2,19): error TS2353: Object literal may only specify known properties, and 'y' does not exist in type '{}'. +tests/cases/compiler/declarationEmitDestructuringObjectLiteralPattern1.ts(3,23): error TS2353: Object literal may only specify known properties, and 'y4' does not exist in type '{ x4: any; }'. +tests/cases/compiler/declarationEmitDestructuringObjectLiteralPattern1.ts(4,16): error TS2353: Object literal may only specify known properties, and 'x5' does not exist in type '{ y5: any; }'. +tests/cases/compiler/declarationEmitDestructuringObjectLiteralPattern1.ts(6,27): error TS2353: Object literal may only specify known properties, and 'y7' does not exist in type '{ x7: any; }'. +tests/cases/compiler/declarationEmitDestructuringObjectLiteralPattern1.ts(7,20): error TS2353: Object literal may only specify known properties, and 'x8' does not exist in type '{ y8: any; }'. + + +==== tests/cases/compiler/declarationEmitDestructuringObjectLiteralPattern1.ts (6 errors) ==== + + var { } = { x: 5, y: "hello" }; + ~ +!!! error TS2353: Object literal may only specify known properties, and 'x' does not exist in type '{}'. + ~ +!!! error TS2353: Object literal may only specify known properties, and 'y' does not exist in type '{}'. + var { x4 } = { x4: 5, y4: "hello" }; + ~~ +!!! error TS2353: Object literal may only specify known properties, and 'y4' does not exist in type '{ x4: any; }'. + var { y5 } = { x5: 5, y5: "hello" }; + ~~ +!!! error TS2353: Object literal may only specify known properties, and 'x5' does not exist in type '{ y5: any; }'. + var { x6, y6 } = { x6: 5, y6: "hello" }; + var { x7: a1 } = { x7: 5, y7: "hello" }; + ~~ +!!! error TS2353: Object literal may only specify known properties, and 'y7' does not exist in type '{ x7: any; }'. + var { y8: b1 } = { x8: 5, y8: "hello" }; + ~~ +!!! error TS2353: Object literal may only specify known properties, and 'x8' does not exist in type '{ y8: any; }'. + var { x9: a2, y9: b2 } = { x9: 5, y9: "hello" }; \ No newline at end of file diff --git a/tests/baselines/reference/declarationEmitDestructuringObjectLiteralPattern1.symbols b/tests/baselines/reference/declarationEmitDestructuringObjectLiteralPattern1.symbols deleted file mode 100644 index cac2431411e..00000000000 --- a/tests/baselines/reference/declarationEmitDestructuringObjectLiteralPattern1.symbols +++ /dev/null @@ -1,42 +0,0 @@ -=== tests/cases/compiler/declarationEmitDestructuringObjectLiteralPattern1.ts === - -var { } = { x: 5, y: "hello" }; ->x : Symbol(x, Decl(declarationEmitDestructuringObjectLiteralPattern1.ts, 1, 11)) ->y : Symbol(y, Decl(declarationEmitDestructuringObjectLiteralPattern1.ts, 1, 17)) - -var { x4 } = { x4: 5, y4: "hello" }; ->x4 : Symbol(x4, Decl(declarationEmitDestructuringObjectLiteralPattern1.ts, 2, 5)) ->x4 : Symbol(x4, Decl(declarationEmitDestructuringObjectLiteralPattern1.ts, 2, 14)) ->y4 : Symbol(y4, Decl(declarationEmitDestructuringObjectLiteralPattern1.ts, 2, 21)) - -var { y5 } = { x5: 5, y5: "hello" }; ->y5 : Symbol(y5, Decl(declarationEmitDestructuringObjectLiteralPattern1.ts, 3, 5)) ->x5 : Symbol(x5, Decl(declarationEmitDestructuringObjectLiteralPattern1.ts, 3, 14)) ->y5 : Symbol(y5, Decl(declarationEmitDestructuringObjectLiteralPattern1.ts, 3, 21)) - -var { x6, y6 } = { x6: 5, y6: "hello" }; ->x6 : Symbol(x6, Decl(declarationEmitDestructuringObjectLiteralPattern1.ts, 4, 5)) ->y6 : Symbol(y6, Decl(declarationEmitDestructuringObjectLiteralPattern1.ts, 4, 9)) ->x6 : Symbol(x6, Decl(declarationEmitDestructuringObjectLiteralPattern1.ts, 4, 18)) ->y6 : Symbol(y6, Decl(declarationEmitDestructuringObjectLiteralPattern1.ts, 4, 25)) - -var { x7: a1 } = { x7: 5, y7: "hello" }; ->x7 : Symbol(x7, Decl(declarationEmitDestructuringObjectLiteralPattern1.ts, 5, 18)) ->a1 : Symbol(a1, Decl(declarationEmitDestructuringObjectLiteralPattern1.ts, 5, 5)) ->x7 : Symbol(x7, Decl(declarationEmitDestructuringObjectLiteralPattern1.ts, 5, 18)) ->y7 : Symbol(y7, Decl(declarationEmitDestructuringObjectLiteralPattern1.ts, 5, 25)) - -var { y8: b1 } = { x8: 5, y8: "hello" }; ->y8 : Symbol(y8, Decl(declarationEmitDestructuringObjectLiteralPattern1.ts, 6, 25)) ->b1 : Symbol(b1, Decl(declarationEmitDestructuringObjectLiteralPattern1.ts, 6, 5)) ->x8 : Symbol(x8, Decl(declarationEmitDestructuringObjectLiteralPattern1.ts, 6, 18)) ->y8 : Symbol(y8, Decl(declarationEmitDestructuringObjectLiteralPattern1.ts, 6, 25)) - -var { x9: a2, y9: b2 } = { x9: 5, y9: "hello" }; ->x9 : Symbol(x9, Decl(declarationEmitDestructuringObjectLiteralPattern1.ts, 7, 26)) ->a2 : Symbol(a2, Decl(declarationEmitDestructuringObjectLiteralPattern1.ts, 7, 5)) ->y9 : Symbol(y9, Decl(declarationEmitDestructuringObjectLiteralPattern1.ts, 7, 33)) ->b2 : Symbol(b2, Decl(declarationEmitDestructuringObjectLiteralPattern1.ts, 7, 13)) ->x9 : Symbol(x9, Decl(declarationEmitDestructuringObjectLiteralPattern1.ts, 7, 26)) ->y9 : Symbol(y9, Decl(declarationEmitDestructuringObjectLiteralPattern1.ts, 7, 33)) - diff --git a/tests/baselines/reference/declarationEmitDestructuringObjectLiteralPattern1.types b/tests/baselines/reference/declarationEmitDestructuringObjectLiteralPattern1.types deleted file mode 100644 index 5411f36fa9a..00000000000 --- a/tests/baselines/reference/declarationEmitDestructuringObjectLiteralPattern1.types +++ /dev/null @@ -1,63 +0,0 @@ -=== tests/cases/compiler/declarationEmitDestructuringObjectLiteralPattern1.ts === - -var { } = { x: 5, y: "hello" }; ->{ x: 5, y: "hello" } : { x: number; y: string; } ->x : number ->5 : number ->y : string ->"hello" : string - -var { x4 } = { x4: 5, y4: "hello" }; ->x4 : number ->{ x4: 5, y4: "hello" } : { x4: number; y4: string; } ->x4 : number ->5 : number ->y4 : string ->"hello" : string - -var { y5 } = { x5: 5, y5: "hello" }; ->y5 : string ->{ x5: 5, y5: "hello" } : { x5: number; y5: string; } ->x5 : number ->5 : number ->y5 : string ->"hello" : string - -var { x6, y6 } = { x6: 5, y6: "hello" }; ->x6 : number ->y6 : string ->{ x6: 5, y6: "hello" } : { x6: number; y6: string; } ->x6 : number ->5 : number ->y6 : string ->"hello" : string - -var { x7: a1 } = { x7: 5, y7: "hello" }; ->x7 : any ->a1 : number ->{ x7: 5, y7: "hello" } : { x7: number; y7: string; } ->x7 : number ->5 : number ->y7 : string ->"hello" : string - -var { y8: b1 } = { x8: 5, y8: "hello" }; ->y8 : any ->b1 : string ->{ x8: 5, y8: "hello" } : { x8: number; y8: string; } ->x8 : number ->5 : number ->y8 : string ->"hello" : string - -var { x9: a2, y9: b2 } = { x9: 5, y9: "hello" }; ->x9 : any ->a2 : number ->y9 : any ->b2 : string ->{ x9: 5, y9: "hello" } : { x9: number; y9: string; } ->x9 : number ->5 : number ->y9 : string ->"hello" : string - diff --git a/tests/baselines/reference/declarationEmit_exportAssignment.js b/tests/baselines/reference/declarationEmit_exportAssignment.js index 54f3eb5fd0e..d761e2c45eb 100644 --- a/tests/baselines/reference/declarationEmit_exportAssignment.js +++ b/tests/baselines/reference/declarationEmit_exportAssignment.js @@ -7,7 +7,7 @@ export function bar() { } export interface Buzz { } //// [index.ts] -import {foo} from "utils"; +import {foo} from "./utils"; export = foo; //// [utils.js] @@ -16,7 +16,7 @@ exports.foo = foo; function bar() { } exports.bar = bar; //// [index.js] -var utils_1 = require("utils"); +var utils_1 = require("./utils"); module.exports = utils_1.foo; @@ -26,5 +26,5 @@ export declare function bar(): void; export interface Buzz { } //// [index.d.ts] -import { foo } from "utils"; +import { foo } from "./utils"; export = foo; diff --git a/tests/baselines/reference/declarationEmit_exportAssignment.symbols b/tests/baselines/reference/declarationEmit_exportAssignment.symbols index b443ba6e797..d2131d27a8f 100644 --- a/tests/baselines/reference/declarationEmit_exportAssignment.symbols +++ b/tests/baselines/reference/declarationEmit_exportAssignment.symbols @@ -10,7 +10,7 @@ export interface Buzz { } >Buzz : Symbol(Buzz, Decl(utils.ts, 2, 25)) === tests/cases/compiler/index.ts === -import {foo} from "utils"; +import {foo} from "./utils"; >foo : Symbol(foo, Decl(index.ts, 0, 8)) export = foo; diff --git a/tests/baselines/reference/declarationEmit_exportAssignment.types b/tests/baselines/reference/declarationEmit_exportAssignment.types index 81c56da432f..763441b8a90 100644 --- a/tests/baselines/reference/declarationEmit_exportAssignment.types +++ b/tests/baselines/reference/declarationEmit_exportAssignment.types @@ -10,7 +10,7 @@ export interface Buzz { } >Buzz : Buzz === tests/cases/compiler/index.ts === -import {foo} from "utils"; +import {foo} from "./utils"; >foo : () => void export = foo; diff --git a/tests/baselines/reference/declarationEmit_exportDeclaration.js b/tests/baselines/reference/declarationEmit_exportDeclaration.js index f05639dc18f..e2cb15b408c 100644 --- a/tests/baselines/reference/declarationEmit_exportDeclaration.js +++ b/tests/baselines/reference/declarationEmit_exportDeclaration.js @@ -7,7 +7,7 @@ export function bar() { } export interface Buzz { } //// [index.ts] -import {foo, bar, Buzz} from "utils"; +import {foo, bar, Buzz} from "./utils"; foo(); let obj: Buzz; @@ -19,7 +19,7 @@ exports.foo = foo; function bar() { } exports.bar = bar; //// [index.js] -var utils_1 = require("utils"); +var utils_1 = require("./utils"); exports.bar = utils_1.bar; utils_1.foo(); var obj; @@ -31,5 +31,5 @@ export declare function bar(): void; export interface Buzz { } //// [index.d.ts] -import { bar } from "utils"; +import { bar } from "./utils"; export { bar }; diff --git a/tests/baselines/reference/declarationEmit_exportDeclaration.symbols b/tests/baselines/reference/declarationEmit_exportDeclaration.symbols index 5cd8c5fee99..40d6bafdee5 100644 --- a/tests/baselines/reference/declarationEmit_exportDeclaration.symbols +++ b/tests/baselines/reference/declarationEmit_exportDeclaration.symbols @@ -10,7 +10,7 @@ export interface Buzz { } >Buzz : Symbol(Buzz, Decl(utils.ts, 2, 25)) === tests/cases/compiler/index.ts === -import {foo, bar, Buzz} from "utils"; +import {foo, bar, Buzz} from "./utils"; >foo : Symbol(foo, Decl(index.ts, 0, 8)) >bar : Symbol(bar, Decl(index.ts, 0, 12)) >Buzz : Symbol(Buzz, Decl(index.ts, 0, 17)) diff --git a/tests/baselines/reference/declarationEmit_exportDeclaration.types b/tests/baselines/reference/declarationEmit_exportDeclaration.types index 058ee863c61..25a8f1d29bd 100644 --- a/tests/baselines/reference/declarationEmit_exportDeclaration.types +++ b/tests/baselines/reference/declarationEmit_exportDeclaration.types @@ -10,7 +10,7 @@ export interface Buzz { } >Buzz : Buzz === tests/cases/compiler/index.ts === -import {foo, bar, Buzz} from "utils"; +import {foo, bar, Buzz} from "./utils"; >foo : () => void >bar : () => void >Buzz : any diff --git a/tests/baselines/reference/declarationEmit_nameConflicts.js b/tests/baselines/reference/declarationEmit_nameConflicts.js index ae517bb7460..857fbee764d 100644 --- a/tests/baselines/reference/declarationEmit_nameConflicts.js +++ b/tests/baselines/reference/declarationEmit_nameConflicts.js @@ -5,7 +5,7 @@ module f { export class c { } } export = f; //// [declarationEmit_nameConflicts_0.ts] -import im = require('declarationEmit_nameConflicts_1'); +import im = require('./declarationEmit_nameConflicts_1'); export module M { export function f() { } export class C { } @@ -61,7 +61,7 @@ var f; })(f || (f = {})); module.exports = f; //// [declarationEmit_nameConflicts_0.js] -var im = require('declarationEmit_nameConflicts_1'); +var im = require('./declarationEmit_nameConflicts_1'); var M; (function (M) { function f() { } @@ -138,7 +138,7 @@ declare module f { } export = f; //// [declarationEmit_nameConflicts_0.d.ts] -import im = require('declarationEmit_nameConflicts_1'); +import im = require('./declarationEmit_nameConflicts_1'); export declare module M { function f(): void; class C { diff --git a/tests/baselines/reference/declarationEmit_nameConflicts.symbols b/tests/baselines/reference/declarationEmit_nameConflicts.symbols index a626ed05b15..1c5bb35b756 100644 --- a/tests/baselines/reference/declarationEmit_nameConflicts.symbols +++ b/tests/baselines/reference/declarationEmit_nameConflicts.symbols @@ -1,9 +1,9 @@ === tests/cases/compiler/declarationEmit_nameConflicts_0.ts === -import im = require('declarationEmit_nameConflicts_1'); +import im = require('./declarationEmit_nameConflicts_1'); >im : Symbol(im, Decl(declarationEmit_nameConflicts_0.ts, 0, 0)) export module M { ->M : Symbol(M, Decl(declarationEmit_nameConflicts_0.ts, 0, 55), Decl(declarationEmit_nameConflicts_0.ts, 13, 1), Decl(declarationEmit_nameConflicts_0.ts, 28, 1)) +>M : Symbol(M, Decl(declarationEmit_nameConflicts_0.ts, 0, 57), Decl(declarationEmit_nameConflicts_0.ts, 13, 1), Decl(declarationEmit_nameConflicts_0.ts, 28, 1)) export function f() { } >f : Symbol(f, Decl(declarationEmit_nameConflicts_0.ts, 1, 17)) @@ -23,12 +23,12 @@ export module M { export import a = M.f; >a : Symbol(a, Decl(declarationEmit_nameConflicts_0.ts, 7, 5)) ->M : Symbol(M, Decl(declarationEmit_nameConflicts_0.ts, 0, 55), Decl(declarationEmit_nameConflicts_0.ts, 13, 1), Decl(declarationEmit_nameConflicts_0.ts, 28, 1)) +>M : Symbol(M, Decl(declarationEmit_nameConflicts_0.ts, 0, 57), Decl(declarationEmit_nameConflicts_0.ts, 13, 1), Decl(declarationEmit_nameConflicts_0.ts, 28, 1)) >f : Symbol(f, Decl(declarationEmit_nameConflicts_0.ts, 1, 17)) export import b = M.C; >b : Symbol(b, Decl(declarationEmit_nameConflicts_0.ts, 9, 26)) ->M : Symbol(M, Decl(declarationEmit_nameConflicts_0.ts, 0, 55), Decl(declarationEmit_nameConflicts_0.ts, 13, 1), Decl(declarationEmit_nameConflicts_0.ts, 28, 1)) +>M : Symbol(M, Decl(declarationEmit_nameConflicts_0.ts, 0, 57), Decl(declarationEmit_nameConflicts_0.ts, 13, 1), Decl(declarationEmit_nameConflicts_0.ts, 28, 1)) >C : Symbol(C, Decl(declarationEmit_nameConflicts_0.ts, 2, 27)) export import c = N; @@ -41,7 +41,7 @@ export module M { } export module M.P { ->M : Symbol(M, Decl(declarationEmit_nameConflicts_0.ts, 0, 55), Decl(declarationEmit_nameConflicts_0.ts, 13, 1), Decl(declarationEmit_nameConflicts_0.ts, 28, 1)) +>M : Symbol(M, Decl(declarationEmit_nameConflicts_0.ts, 0, 57), Decl(declarationEmit_nameConflicts_0.ts, 13, 1), Decl(declarationEmit_nameConflicts_0.ts, 28, 1)) >P : Symbol(P, Decl(declarationEmit_nameConflicts_0.ts, 15, 16)) export function f() { } @@ -61,45 +61,45 @@ export module M.P { } export import im = M.P.f; >im : Symbol(im, Decl(declarationEmit_nameConflicts_0.ts, 21, 5)) ->M : Symbol(M, Decl(declarationEmit_nameConflicts_0.ts, 0, 55), Decl(declarationEmit_nameConflicts_0.ts, 13, 1), Decl(declarationEmit_nameConflicts_0.ts, 28, 1)) +>M : Symbol(M, Decl(declarationEmit_nameConflicts_0.ts, 0, 57), Decl(declarationEmit_nameConflicts_0.ts, 13, 1), Decl(declarationEmit_nameConflicts_0.ts, 28, 1)) >P : Symbol(P, Decl(declarationEmit_nameConflicts_0.ts, 15, 16)) >f : Symbol(f, Decl(declarationEmit_nameConflicts_0.ts, 15, 19)) export var a = M.a; // emitted incorrectly as typeof f >a : Symbol(a, Decl(declarationEmit_nameConflicts_0.ts, 23, 14)) >M.a : Symbol(a, Decl(declarationEmit_nameConflicts_0.ts, 7, 5)) ->M : Symbol(M, Decl(declarationEmit_nameConflicts_0.ts, 0, 55), Decl(declarationEmit_nameConflicts_0.ts, 13, 1), Decl(declarationEmit_nameConflicts_0.ts, 28, 1)) +>M : Symbol(M, Decl(declarationEmit_nameConflicts_0.ts, 0, 57), Decl(declarationEmit_nameConflicts_0.ts, 13, 1), Decl(declarationEmit_nameConflicts_0.ts, 28, 1)) >a : Symbol(a, Decl(declarationEmit_nameConflicts_0.ts, 7, 5)) export var b = M.b; // ok >b : Symbol(b, Decl(declarationEmit_nameConflicts_0.ts, 24, 14)) >M.b : Symbol(b, Decl(declarationEmit_nameConflicts_0.ts, 9, 26)) ->M : Symbol(M, Decl(declarationEmit_nameConflicts_0.ts, 0, 55), Decl(declarationEmit_nameConflicts_0.ts, 13, 1), Decl(declarationEmit_nameConflicts_0.ts, 28, 1)) +>M : Symbol(M, Decl(declarationEmit_nameConflicts_0.ts, 0, 57), Decl(declarationEmit_nameConflicts_0.ts, 13, 1), Decl(declarationEmit_nameConflicts_0.ts, 28, 1)) >b : Symbol(b, Decl(declarationEmit_nameConflicts_0.ts, 9, 26)) export var c = M.c; // ok >c : Symbol(c, Decl(declarationEmit_nameConflicts_0.ts, 25, 14)) >M.c : Symbol(c, Decl(declarationEmit_nameConflicts_0.ts, 10, 26)) ->M : Symbol(M, Decl(declarationEmit_nameConflicts_0.ts, 0, 55), Decl(declarationEmit_nameConflicts_0.ts, 13, 1), Decl(declarationEmit_nameConflicts_0.ts, 28, 1)) +>M : Symbol(M, Decl(declarationEmit_nameConflicts_0.ts, 0, 57), Decl(declarationEmit_nameConflicts_0.ts, 13, 1), Decl(declarationEmit_nameConflicts_0.ts, 28, 1)) >c : Symbol(c, Decl(declarationEmit_nameConflicts_0.ts, 10, 26)) export var g = M.c.g; // ok >g : Symbol(g, Decl(declarationEmit_nameConflicts_0.ts, 26, 14)) >M.c.g : Symbol(c.g, Decl(declarationEmit_nameConflicts_0.ts, 4, 21)) >M.c : Symbol(c, Decl(declarationEmit_nameConflicts_0.ts, 10, 26)) ->M : Symbol(M, Decl(declarationEmit_nameConflicts_0.ts, 0, 55), Decl(declarationEmit_nameConflicts_0.ts, 13, 1), Decl(declarationEmit_nameConflicts_0.ts, 28, 1)) +>M : Symbol(M, Decl(declarationEmit_nameConflicts_0.ts, 0, 57), Decl(declarationEmit_nameConflicts_0.ts, 13, 1), Decl(declarationEmit_nameConflicts_0.ts, 28, 1)) >c : Symbol(c, Decl(declarationEmit_nameConflicts_0.ts, 10, 26)) >g : Symbol(c.g, Decl(declarationEmit_nameConflicts_0.ts, 4, 21)) export var d = M.d; // emitted incorrectly as typeof im >d : Symbol(d, Decl(declarationEmit_nameConflicts_0.ts, 27, 14)) >M.d : Symbol(d, Decl(declarationEmit_nameConflicts_0.ts, 11, 24)) ->M : Symbol(M, Decl(declarationEmit_nameConflicts_0.ts, 0, 55), Decl(declarationEmit_nameConflicts_0.ts, 13, 1), Decl(declarationEmit_nameConflicts_0.ts, 28, 1)) +>M : Symbol(M, Decl(declarationEmit_nameConflicts_0.ts, 0, 57), Decl(declarationEmit_nameConflicts_0.ts, 13, 1), Decl(declarationEmit_nameConflicts_0.ts, 28, 1)) >d : Symbol(d, Decl(declarationEmit_nameConflicts_0.ts, 11, 24)) } export module M.Q { ->M : Symbol(M, Decl(declarationEmit_nameConflicts_0.ts, 0, 55), Decl(declarationEmit_nameConflicts_0.ts, 13, 1), Decl(declarationEmit_nameConflicts_0.ts, 28, 1)) +>M : Symbol(M, Decl(declarationEmit_nameConflicts_0.ts, 0, 57), Decl(declarationEmit_nameConflicts_0.ts, 13, 1), Decl(declarationEmit_nameConflicts_0.ts, 28, 1)) >Q : Symbol(Q, Decl(declarationEmit_nameConflicts_0.ts, 30, 16)) export function f() { } @@ -120,14 +120,14 @@ export module M.Q { export interface b extends M.b { } // ok >b : Symbol(b, Decl(declarationEmit_nameConflicts_0.ts, 36, 5)) >M.b : Symbol(b, Decl(declarationEmit_nameConflicts_0.ts, 9, 26)) ->M : Symbol(M, Decl(declarationEmit_nameConflicts_0.ts, 0, 55), Decl(declarationEmit_nameConflicts_0.ts, 13, 1), Decl(declarationEmit_nameConflicts_0.ts, 28, 1)) +>M : Symbol(M, Decl(declarationEmit_nameConflicts_0.ts, 0, 57), Decl(declarationEmit_nameConflicts_0.ts, 13, 1), Decl(declarationEmit_nameConflicts_0.ts, 28, 1)) >b : Symbol(b, Decl(declarationEmit_nameConflicts_0.ts, 9, 26)) export interface I extends M.c.I { } // ok >I : Symbol(I, Decl(declarationEmit_nameConflicts_0.ts, 37, 38)) >M.c.I : Symbol(M.c.I, Decl(declarationEmit_nameConflicts_0.ts, 5, 32)) >M.c : Symbol(c, Decl(declarationEmit_nameConflicts_0.ts, 10, 26)) ->M : Symbol(M, Decl(declarationEmit_nameConflicts_0.ts, 0, 55), Decl(declarationEmit_nameConflicts_0.ts, 13, 1), Decl(declarationEmit_nameConflicts_0.ts, 28, 1)) +>M : Symbol(M, Decl(declarationEmit_nameConflicts_0.ts, 0, 57), Decl(declarationEmit_nameConflicts_0.ts, 13, 1), Decl(declarationEmit_nameConflicts_0.ts, 28, 1)) >c : Symbol(c, Decl(declarationEmit_nameConflicts_0.ts, 10, 26)) >I : Symbol(M.c.I, Decl(declarationEmit_nameConflicts_0.ts, 5, 32)) @@ -138,7 +138,7 @@ export module M.Q { >I : Symbol(I, Decl(declarationEmit_nameConflicts_0.ts, 39, 21)) >M.c.I : Symbol(M.c.I, Decl(declarationEmit_nameConflicts_0.ts, 5, 32)) >M.c : Symbol(c, Decl(declarationEmit_nameConflicts_0.ts, 10, 26)) ->M : Symbol(M, Decl(declarationEmit_nameConflicts_0.ts, 0, 55), Decl(declarationEmit_nameConflicts_0.ts, 13, 1), Decl(declarationEmit_nameConflicts_0.ts, 28, 1)) +>M : Symbol(M, Decl(declarationEmit_nameConflicts_0.ts, 0, 57), Decl(declarationEmit_nameConflicts_0.ts, 13, 1), Decl(declarationEmit_nameConflicts_0.ts, 28, 1)) >c : Symbol(c, Decl(declarationEmit_nameConflicts_0.ts, 10, 26)) >I : Symbol(M.c.I, Decl(declarationEmit_nameConflicts_0.ts, 5, 32)) } diff --git a/tests/baselines/reference/declarationEmit_nameConflicts.types b/tests/baselines/reference/declarationEmit_nameConflicts.types index dacd657706d..6ea650946c5 100644 --- a/tests/baselines/reference/declarationEmit_nameConflicts.types +++ b/tests/baselines/reference/declarationEmit_nameConflicts.types @@ -1,5 +1,5 @@ === tests/cases/compiler/declarationEmit_nameConflicts_0.ts === -import im = require('declarationEmit_nameConflicts_1'); +import im = require('./declarationEmit_nameConflicts_1'); >im : typeof im export module M { diff --git a/tests/baselines/reference/declarationEmit_protectedMembers.types b/tests/baselines/reference/declarationEmit_protectedMembers.types index 89aa3f56332..d541e1d14d2 100644 --- a/tests/baselines/reference/declarationEmit_protectedMembers.types +++ b/tests/baselines/reference/declarationEmit_protectedMembers.types @@ -12,7 +12,7 @@ class C1 { return this.x; >this.x : number ->this : C1 +>this : this >x : number } @@ -60,7 +60,7 @@ class C2 extends C1 { >super : C1 >f : () => number >this.x : number ->this : C2 +>this : this >x : number } protected static sf() { diff --git a/tests/baselines/reference/declarationFiles.errors.txt b/tests/baselines/reference/declarationFiles.errors.txt new file mode 100644 index 00000000000..c55cac9000b --- /dev/null +++ b/tests/baselines/reference/declarationFiles.errors.txt @@ -0,0 +1,63 @@ +tests/cases/conformance/types/thisType/declarationFiles.ts(31,5): error TS2527: The inferred type of 'x1' references an inaccessible 'this' type. A type annotation is necessary. +tests/cases/conformance/types/thisType/declarationFiles.ts(33,5): error TS2527: The inferred type of 'x3' references an inaccessible 'this' type. A type annotation is necessary. +tests/cases/conformance/types/thisType/declarationFiles.ts(35,5): error TS2527: The inferred type of 'f1' references an inaccessible 'this' type. A type annotation is necessary. +tests/cases/conformance/types/thisType/declarationFiles.ts(41,5): error TS2527: The inferred type of 'f3' references an inaccessible 'this' type. A type annotation is necessary. + + +==== tests/cases/conformance/types/thisType/declarationFiles.ts (4 errors) ==== + + class C1 { + x: this; + f(x: this): this { return undefined; } + constructor(x: this) { } + } + + class C2 { + [x: string]: this; + } + + interface Foo { + x: T; + y: this; + } + + class C3 { + a: this[]; + b: [this, this]; + c: this | Date; + d: this & Date; + e: (((this))); + f: (x: this) => this; + g: new (x: this) => this; + h: Foo; + i: Foo this)>; + j: (x: any) => x is this; + } + + class C4 { + x1 = { a: this }; + ~~ +!!! error TS2527: The inferred type of 'x1' references an inaccessible 'this' type. A type annotation is necessary. + x2 = [this]; + x3 = [{ a: this }]; + ~~ +!!! error TS2527: The inferred type of 'x3' references an inaccessible 'this' type. A type annotation is necessary. + x4 = () => this; + f1() { + ~~ +!!! error TS2527: The inferred type of 'f1' references an inaccessible 'this' type. A type annotation is necessary. + return { a: this }; + } + f2() { + return [this]; + } + f3() { + ~~ +!!! error TS2527: The inferred type of 'f3' references an inaccessible 'this' type. A type annotation is necessary. + return [{ a: this }]; + } + f4() { + return () => this; + } + } + \ No newline at end of file diff --git a/tests/baselines/reference/declarationFiles.js b/tests/baselines/reference/declarationFiles.js new file mode 100644 index 00000000000..d7ed9bde8c7 --- /dev/null +++ b/tests/baselines/reference/declarationFiles.js @@ -0,0 +1,135 @@ +//// [declarationFiles.ts] + +class C1 { + x: this; + f(x: this): this { return undefined; } + constructor(x: this) { } +} + +class C2 { + [x: string]: this; +} + +interface Foo { + x: T; + y: this; +} + +class C3 { + a: this[]; + b: [this, this]; + c: this | Date; + d: this & Date; + e: (((this))); + f: (x: this) => this; + g: new (x: this) => this; + h: Foo; + i: Foo this)>; + j: (x: any) => x is this; +} + +class C4 { + x1 = { a: this }; + x2 = [this]; + x3 = [{ a: this }]; + x4 = () => this; + f1() { + return { a: this }; + } + f2() { + return [this]; + } + f3() { + return [{ a: this }]; + } + f4() { + return () => this; + } +} + + +//// [declarationFiles.js] +var C1 = (function () { + function C1(x) { + } + C1.prototype.f = function (x) { return undefined; }; + return C1; +})(); +var C2 = (function () { + function C2() { + } + return C2; +})(); +var C3 = (function () { + function C3() { + } + return C3; +})(); +var C4 = (function () { + function C4() { + var _this = this; + this.x1 = { a: this }; + this.x2 = [this]; + this.x3 = [{ a: this }]; + this.x4 = function () { return _this; }; + } + C4.prototype.f1 = function () { + return { a: this }; + }; + C4.prototype.f2 = function () { + return [this]; + }; + C4.prototype.f3 = function () { + return [{ a: this }]; + }; + C4.prototype.f4 = function () { + var _this = this; + return function () { return _this; }; + }; + return C4; +})(); + + +//// [declarationFiles.d.ts] +declare class C1 { + x: this; + f(x: this): this; + constructor(x: this); +} +declare class C2 { + [x: string]: this; +} +interface Foo { + x: T; + y: this; +} +declare class C3 { + a: this[]; + b: [this, this]; + c: this | Date; + d: this & Date; + e: (((this))); + f: (x: this) => this; + g: new (x: this) => this; + h: Foo; + i: Foo this)>; + j: (x: any) => x is this; +} +declare class C4 { + x1: { + a: this; + }; + x2: this[]; + x3: { + a: this; + }[]; + x4: () => this; + f1(): { + a: this; + }; + f2(): this[]; + f3(): { + a: this; + }[]; + f4(): () => this; +} diff --git a/tests/baselines/reference/declarationsAndAssignments.errors.txt b/tests/baselines/reference/declarationsAndAssignments.errors.txt index 828083e7687..7c4671022ea 100644 --- a/tests/baselines/reference/declarationsAndAssignments.errors.txt +++ b/tests/baselines/reference/declarationsAndAssignments.errors.txt @@ -1,11 +1,20 @@ -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(5,16): error TS2525: Initializer provides no value for this binding element and the binding element has no default value. +tests/cases/conformance/es6/destructuring/declarationsAndAssignments.ts(22,17): error TS2353: Object literal may only specify known properties, and 'x' does not exist in type '{}'. +tests/cases/conformance/es6/destructuring/declarationsAndAssignments.ts(22,23): error TS2353: Object literal may only specify known properties, and 'y' does not exist in type '{}'. +tests/cases/conformance/es6/destructuring/declarationsAndAssignments.ts(23,25): error TS2353: Object literal may only specify known properties, and 'y' does not exist in type '{ x: any; }'. +tests/cases/conformance/es6/destructuring/declarationsAndAssignments.ts(24,19): error TS2353: Object literal may only specify known properties, and 'x' does not exist in type '{ y: any; }'. +tests/cases/conformance/es6/destructuring/declarationsAndAssignments.ts(28,28): error TS2353: Object literal may only specify known properties, and 'y' does not exist in type '{ x: any; }'. +tests/cases/conformance/es6/destructuring/declarationsAndAssignments.ts(29,22): error TS2353: Object literal may only specify known properties, and 'x' does not exist in type '{ y: any; }'. 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 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(62,10): error TS2525: Initializer provides no value for this binding element and the binding element has no default value. +tests/cases/conformance/es6/destructuring/declarationsAndAssignments.ts(62,13): error TS2525: Initializer provides no value for this binding element and the binding element has no default value. +tests/cases/conformance/es6/destructuring/declarationsAndAssignments.ts(62,16): error TS2525: Initializer provides no value for this binding element and the binding element has no default value. +tests/cases/conformance/es6/destructuring/declarationsAndAssignments.ts(63,13): error TS2525: Initializer provides no value for this binding element and the binding element has no default value. +tests/cases/conformance/es6/destructuring/declarationsAndAssignments.ts(63,16): error TS2525: Initializer provides no value for this binding element and the binding element has no default value. 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. -tests/cases/conformance/es6/destructuring/declarationsAndAssignments.ts(73,14): error TS2459: Type '{}' has no property 'b' and no string index signature. +tests/cases/conformance/es6/destructuring/declarationsAndAssignments.ts(73,11): error TS2525: Initializer provides no value for this binding element and the binding element has no default value. +tests/cases/conformance/es6/destructuring/declarationsAndAssignments.ts(73,14): error TS2525: Initializer provides no value for this binding element and the binding element has no default value. tests/cases/conformance/es6/destructuring/declarationsAndAssignments.ts(74,11): error TS2459: Type 'undefined[]' has no property 'a' and no string index signature. tests/cases/conformance/es6/destructuring/declarationsAndAssignments.ts(74,14): error TS2459: Type 'undefined[]' has no property 'b' and no string index signature. tests/cases/conformance/es6/destructuring/declarationsAndAssignments.ts(106,5): error TS2345: Argument of type '[number, [string, { y: boolean; }]]' is not assignable to parameter of type '[number, [string, { x: any; y?: boolean; }]]'. @@ -18,15 +27,15 @@ tests/cases/conformance/es6/destructuring/declarationsAndAssignments.ts(138,6): tests/cases/conformance/es6/destructuring/declarationsAndAssignments.ts(138,9): error TS2322: Type 'number' is not assignable to type 'string'. -==== tests/cases/conformance/es6/destructuring/declarationsAndAssignments.ts (13 errors) ==== +==== tests/cases/conformance/es6/destructuring/declarationsAndAssignments.ts (22 errors) ==== function f0() { var [] = [1, "hello"]; var [x] = [1, "hello"]; var [x, y] = [1, "hello"]; - var [x, y, z] = [1, "hello"]; // Error + var [x, y, z] = [1, "hello"]; ~ -!!! error TS2493: Tuple type '[number, string]' with length '2' cannot be assigned to tuple with length '3'. - var [,, z] = [0, 1, 2]; +!!! error TS2525: Initializer provides no value for this binding element and the binding element has no default value. + var [,, x] = [0, 1, 2]; var x: number; var y: string; } @@ -42,14 +51,26 @@ tests/cases/conformance/es6/destructuring/declarationsAndAssignments.ts(138,9): } function f2() { - var { } = { x: 5, y: "hello" }; - var { x } = { x: 5, y: "hello" }; - var { y } = { x: 5, y: "hello" }; + var { } = { x: 5, y: "hello" }; // Error, no x and y in target + ~ +!!! error TS2353: Object literal may only specify known properties, and 'x' does not exist in type '{}'. + ~ +!!! error TS2353: Object literal may only specify known properties, and 'y' does not exist in type '{}'. + var { x } = { x: 5, y: "hello" }; // Error, no y in target + ~ +!!! error TS2353: Object literal may only specify known properties, and 'y' does not exist in type '{ x: any; }'. + var { y } = { x: 5, y: "hello" }; // Error, no x in target + ~ +!!! error TS2353: Object literal may only specify known properties, and 'x' does not exist in type '{ y: any; }'. var { x, y } = { x: 5, y: "hello" }; var x: number; var y: string; - var { x: a } = { x: 5, y: "hello" }; - var { y: b } = { x: 5, y: "hello" }; + var { x: a } = { x: 5, y: "hello" }; // Error, no y in target + ~ +!!! error TS2353: Object literal may only specify known properties, and 'y' does not exist in type '{ x: any; }'. + var { y: b } = { x: 5, y: "hello" }; // Error, no x in target + ~ +!!! error TS2353: Object literal may only specify known properties, and 'x' does not exist in type '{ y: any; }'. var { x: a, y: b } = { x: 5, y: "hello" }; var a: number; var b: string; @@ -85,11 +106,17 @@ tests/cases/conformance/es6/destructuring/declarationsAndAssignments.ts(138,9): function f8() { var [a, b, c] = []; // Ok, [] is an array + ~ +!!! error TS2525: Initializer provides no value for this binding element and the binding element has no default value. + ~ +!!! error TS2525: Initializer provides no value for this binding element and the binding element has no default value. + ~ +!!! error TS2525: Initializer provides no value for this binding element and the binding element has no default value. var [d, e, f] = [1]; // Error, [1] is a tuple ~ -!!! error TS2493: Tuple type '[number]' with length '1' cannot be assigned to tuple with length '3'. +!!! error TS2525: Initializer provides no value for this binding element and the binding element has no default value. ~ -!!! error TS2493: Tuple type '[number]' with length '1' cannot be assigned to tuple with length '3'. +!!! error TS2525: Initializer provides no value for this binding element and the binding element has no default value. } function f9() { @@ -105,9 +132,9 @@ tests/cases/conformance/es6/destructuring/declarationsAndAssignments.ts(138,9): function f10() { var { a, b } = {}; // Error ~ -!!! error TS2459: Type '{}' has no property 'a' and no string index signature. +!!! error TS2525: Initializer provides no value for this binding element and the binding element has no default value. ~ -!!! error TS2459: Type '{}' has no property 'b' and no string index signature. +!!! error TS2525: Initializer provides no value for this binding element and the binding element has no default value. var { a, b } = []; // Error ~ !!! error TS2459: Type 'undefined[]' has no property 'a' and no string index signature. diff --git a/tests/baselines/reference/declarationsAndAssignments.js b/tests/baselines/reference/declarationsAndAssignments.js index 5c47756e7fe..018aa5522ca 100644 --- a/tests/baselines/reference/declarationsAndAssignments.js +++ b/tests/baselines/reference/declarationsAndAssignments.js @@ -3,8 +3,8 @@ function f0() { var [] = [1, "hello"]; var [x] = [1, "hello"]; var [x, y] = [1, "hello"]; - var [x, y, z] = [1, "hello"]; // Error - var [,, z] = [0, 1, 2]; + var [x, y, z] = [1, "hello"]; + var [,, x] = [0, 1, 2]; var x: number; var y: string; } @@ -20,14 +20,14 @@ function f1() { } function f2() { - var { } = { x: 5, y: "hello" }; - var { x } = { x: 5, y: "hello" }; - var { y } = { x: 5, y: "hello" }; + var { } = { x: 5, y: "hello" }; // Error, no x and y in target + var { x } = { x: 5, y: "hello" }; // Error, no y in target + var { y } = { x: 5, y: "hello" }; // Error, no x in target var { x, y } = { x: 5, y: "hello" }; var x: number; var y: string; - var { x: a } = { x: 5, y: "hello" }; - var { y: b } = { x: 5, y: "hello" }; + var { x: a } = { x: 5, y: "hello" }; // Error, no y in target + var { y: b } = { x: 5, y: "hello" }; // Error, no x in target var { x: a, y: b } = { x: 5, y: "hello" }; var a: number; var b: string; @@ -185,8 +185,8 @@ function f0() { var _a = [1, "hello"]; var x = [1, "hello"][0]; var _b = [1, "hello"], x = _b[0], y = _b[1]; - var _c = [1, "hello"], x = _c[0], y = _c[1], z = _c[2]; // Error - var _d = [0, 1, 2], z = _d[2]; + var _c = [1, "hello"], x = _c[0], y = _c[1], z = _c[2]; + var _d = [0, 1, 2], x = _d[2]; var x; var y; } @@ -200,14 +200,14 @@ function f1() { var z; } function f2() { - var _a = { x: 5, y: "hello" }; - var x = { x: 5, y: "hello" }.x; - var y = { x: 5, y: "hello" }.y; + var _a = { x: 5, y: "hello" }; // Error, no x and y in target + var x = { x: 5, y: "hello" }.x; // Error, no y in target + var y = { x: 5, y: "hello" }.y; // Error, no x in target var _b = { x: 5, y: "hello" }, x = _b.x, y = _b.y; var x; var y; - var a = { x: 5, y: "hello" }.x; - var b = { x: 5, y: "hello" }.y; + var a = { x: 5, y: "hello" }.x; // Error, no y in target + var b = { x: 5, y: "hello" }.y; // Error, no x in target var _c = { x: 5, y: "hello" }, a = _c.x, b = _c.y; var a; var b; diff --git a/tests/baselines/reference/decoratorMetadataWithImportDeclarationNameCollision.types b/tests/baselines/reference/decoratorMetadataWithImportDeclarationNameCollision.types index 60cf7f10cea..aa705735f3e 100644 --- a/tests/baselines/reference/decoratorMetadataWithImportDeclarationNameCollision.types +++ b/tests/baselines/reference/decoratorMetadataWithImportDeclarationNameCollision.types @@ -35,7 +35,7 @@ class MyClass { this.db = db; >this.db = db : db >this.db : db ->this : MyClass +>this : this >db : db >db : db @@ -43,7 +43,7 @@ class MyClass { >this.db.doSomething() : void >this.db.doSomething : () => void >this.db : db ->this : MyClass +>this : this >db : db >doSomething : () => void } diff --git a/tests/baselines/reference/decoratorMetadataWithImportDeclarationNameCollision2.types b/tests/baselines/reference/decoratorMetadataWithImportDeclarationNameCollision2.types index 73005b4673f..3d8ad0937bc 100644 --- a/tests/baselines/reference/decoratorMetadataWithImportDeclarationNameCollision2.types +++ b/tests/baselines/reference/decoratorMetadataWithImportDeclarationNameCollision2.types @@ -36,7 +36,7 @@ class MyClass { this.db = db; >this.db = db : Database >this.db : Database ->this : MyClass +>this : this >db : Database >db : Database @@ -44,7 +44,7 @@ class MyClass { >this.db.doSomething() : void >this.db.doSomething : () => void >this.db : Database ->this : MyClass +>this : this >db : Database >doSomething : () => void } diff --git a/tests/baselines/reference/decoratorMetadataWithImportDeclarationNameCollision3.types b/tests/baselines/reference/decoratorMetadataWithImportDeclarationNameCollision3.types index 0eea3e13b66..634c45e650c 100644 --- a/tests/baselines/reference/decoratorMetadataWithImportDeclarationNameCollision3.types +++ b/tests/baselines/reference/decoratorMetadataWithImportDeclarationNameCollision3.types @@ -28,7 +28,7 @@ class MyClass { this.db = db; >this.db = db : db.db >this.db : db.db ->this : MyClass +>this : this >db : db.db >db : db.db @@ -36,7 +36,7 @@ class MyClass { >this.db.doSomething() : void >this.db.doSomething : () => void >this.db : db.db ->this : MyClass +>this : this >db : db.db >doSomething : () => void } diff --git a/tests/baselines/reference/decoratorMetadataWithImportDeclarationNameCollision5.types b/tests/baselines/reference/decoratorMetadataWithImportDeclarationNameCollision5.types index 0fbc48db157..987d7a532e8 100644 --- a/tests/baselines/reference/decoratorMetadataWithImportDeclarationNameCollision5.types +++ b/tests/baselines/reference/decoratorMetadataWithImportDeclarationNameCollision5.types @@ -35,7 +35,7 @@ class MyClass { this.db = db; >this.db = db : db >this.db : db ->this : MyClass +>this : this >db : db >db : db @@ -43,7 +43,7 @@ class MyClass { >this.db.doSomething() : void >this.db.doSomething : () => void >this.db : db ->this : MyClass +>this : this >db : db >doSomething : () => void } diff --git a/tests/baselines/reference/decoratorMetadataWithImportDeclarationNameCollision6.types b/tests/baselines/reference/decoratorMetadataWithImportDeclarationNameCollision6.types index e3a68882dfb..3bd8df0eff3 100644 --- a/tests/baselines/reference/decoratorMetadataWithImportDeclarationNameCollision6.types +++ b/tests/baselines/reference/decoratorMetadataWithImportDeclarationNameCollision6.types @@ -35,7 +35,7 @@ class MyClass { this.db = db; >this.db = db : database >this.db : database ->this : MyClass +>this : this >db : database >db : database @@ -43,7 +43,7 @@ class MyClass { >this.db.doSomething() : void >this.db.doSomething : () => void >this.db : database ->this : MyClass +>this : this >db : database >doSomething : () => void } diff --git a/tests/baselines/reference/decoratorMetadataWithImportDeclarationNameCollision8.types b/tests/baselines/reference/decoratorMetadataWithImportDeclarationNameCollision8.types index faaab056885..f0f1ca190aa 100644 --- a/tests/baselines/reference/decoratorMetadataWithImportDeclarationNameCollision8.types +++ b/tests/baselines/reference/decoratorMetadataWithImportDeclarationNameCollision8.types @@ -28,7 +28,7 @@ class MyClass { this.db = db; >this.db = db : database.db >this.db : database.db ->this : MyClass +>this : this >db : database.db >db : database.db @@ -36,7 +36,7 @@ class MyClass { >this.db.doSomething() : void >this.db.doSomething : () => void >this.db : database.db ->this : MyClass +>this : this >db : database.db >doSomething : () => void } diff --git a/tests/baselines/reference/defaultExportsCannotMerge01.errors.txt b/tests/baselines/reference/defaultExportsCannotMerge01.errors.txt index be08d976eeb..15c60e32d9f 100644 --- a/tests/baselines/reference/defaultExportsCannotMerge01.errors.txt +++ b/tests/baselines/reference/defaultExportsCannotMerge01.errors.txt @@ -1,9 +1,6 @@ tests/cases/conformance/es6/modules/m1.ts(2,25): error TS2652: Merged declaration 'Decl' cannot include a default export declaration. Consider adding a separate 'export default Decl' declaration instead. tests/cases/conformance/es6/modules/m1.ts(11,18): error TS2652: Merged declaration 'Decl' cannot include a default export declaration. Consider adding a separate 'export default Decl' declaration instead. -tests/cases/conformance/es6/modules/m2.ts(5,8): error TS2304: Cannot find name 'Entity'. -tests/cases/conformance/es6/modules/m2.ts(6,8): error TS2503: Cannot find namespace 'Entity'. -tests/cases/conformance/es6/modules/m2.ts(8,8): error TS2339: Property 'x' does not exist on type '() => number'. -tests/cases/conformance/es6/modules/m2.ts(9,8): error TS2339: Property 'y' does not exist on type '() => number'. +tests/cases/conformance/es6/modules/m2.ts(1,20): error TS2307: Cannot find module 'm1'. ==== tests/cases/conformance/es6/modules/m1.ts (2 errors) ==== @@ -29,21 +26,15 @@ tests/cases/conformance/es6/modules/m2.ts(9,8): error TS2339: Property 'y' does } } -==== tests/cases/conformance/es6/modules/m2.ts (4 errors) ==== +==== tests/cases/conformance/es6/modules/m2.ts (1 errors) ==== import Entity from "m1" + ~~~~ +!!! error TS2307: Cannot find module 'm1'. Entity(); var x: Entity; - ~~~~~~ -!!! error TS2304: Cannot find name 'Entity'. var y: Entity.I; - ~~~~~~ -!!! error TS2503: Cannot find namespace 'Entity'. Entity.x; - ~ -!!! error TS2339: Property 'x' does not exist on type '() => number'. - Entity.y; - ~ -!!! error TS2339: Property 'y' does not exist on type '() => number'. \ No newline at end of file + Entity.y; \ No newline at end of file diff --git a/tests/baselines/reference/defaultExportsCannotMerge02.errors.txt b/tests/baselines/reference/defaultExportsCannotMerge02.errors.txt index ad9b85c7e94..30bab504c7e 100644 --- a/tests/baselines/reference/defaultExportsCannotMerge02.errors.txt +++ b/tests/baselines/reference/defaultExportsCannotMerge02.errors.txt @@ -1,9 +1,6 @@ tests/cases/conformance/es6/modules/m1.ts(2,22): error TS2652: Merged declaration 'Decl' cannot include a default export declaration. Consider adding a separate 'export default Decl' declaration instead. tests/cases/conformance/es6/modules/m1.ts(5,18): error TS2652: Merged declaration 'Decl' cannot include a default export declaration. Consider adding a separate 'export default Decl' declaration instead. -tests/cases/conformance/es6/modules/m2.ts(3,1): error TS2348: Value of type 'typeof Decl' is not callable. Did you mean to include 'new'? -tests/cases/conformance/es6/modules/m2.ts(6,8): error TS2503: Cannot find namespace 'Entity'. -tests/cases/conformance/es6/modules/m2.ts(8,13): error TS2339: Property 'p1' does not exist on type 'Decl'. -tests/cases/conformance/es6/modules/m2.ts(8,20): error TS2339: Property 'p2' does not exist on type 'Decl'. +tests/cases/conformance/es6/modules/m2.ts(1,20): error TS2307: Cannot find module 'm1'. ==== tests/cases/conformance/es6/modules/m1.ts (2 errors) ==== @@ -25,20 +22,14 @@ tests/cases/conformance/es6/modules/m2.ts(8,20): error TS2339: Property 'p2' doe } } -==== tests/cases/conformance/es6/modules/m2.ts (4 errors) ==== +==== tests/cases/conformance/es6/modules/m2.ts (1 errors) ==== import Entity from "m1" + ~~~~ +!!! error TS2307: Cannot find module 'm1'. Entity(); - ~~~~~~~~ -!!! error TS2348: Value of type 'typeof Decl' is not callable. Did you mean to include 'new'? var x: Entity; var y: Entity.I; - ~~~~~~ -!!! error TS2503: Cannot find namespace 'Entity'. var z = new Entity(); - var sum = z.p1 + z.p2 - ~~ -!!! error TS2339: Property 'p1' does not exist on type 'Decl'. - ~~ -!!! error TS2339: Property 'p2' does not exist on type 'Decl'. \ No newline at end of file + var sum = z.p1 + z.p2 \ No newline at end of file diff --git a/tests/baselines/reference/defaultExportsCannotMerge03.errors.txt b/tests/baselines/reference/defaultExportsCannotMerge03.errors.txt index b1d405671e3..11e9c63b893 100644 --- a/tests/baselines/reference/defaultExportsCannotMerge03.errors.txt +++ b/tests/baselines/reference/defaultExportsCannotMerge03.errors.txt @@ -1,10 +1,7 @@ tests/cases/conformance/es6/modules/m1.ts(2,22): error TS2652: Merged declaration 'Decl' cannot include a default export declaration. Consider adding a separate 'export default Decl' declaration instead. tests/cases/conformance/es6/modules/m1.ts(5,11): error TS2518: Only an ambient class can be merged with an interface. tests/cases/conformance/es6/modules/m1.ts(5,11): error TS2652: Merged declaration 'Decl' cannot include a default export declaration. Consider adding a separate 'export default Decl' declaration instead. -tests/cases/conformance/es6/modules/m2.ts(3,1): error TS2348: Value of type 'typeof Decl' is not callable. Did you mean to include 'new'? -tests/cases/conformance/es6/modules/m2.ts(6,8): error TS2503: Cannot find namespace 'Entity'. -tests/cases/conformance/es6/modules/m2.ts(8,13): error TS2339: Property 'p1' does not exist on type 'Decl'. -tests/cases/conformance/es6/modules/m2.ts(8,20): error TS2339: Property 'p2' does not exist on type 'Decl'. +tests/cases/conformance/es6/modules/m2.ts(1,20): error TS2307: Cannot find module 'm1'. ==== tests/cases/conformance/es6/modules/m1.ts (3 errors) ==== @@ -28,20 +25,14 @@ tests/cases/conformance/es6/modules/m2.ts(8,20): error TS2339: Property 'p2' doe } } -==== tests/cases/conformance/es6/modules/m2.ts (4 errors) ==== +==== tests/cases/conformance/es6/modules/m2.ts (1 errors) ==== import Entity from "m1" + ~~~~ +!!! error TS2307: Cannot find module 'm1'. Entity(); - ~~~~~~~~ -!!! error TS2348: Value of type 'typeof Decl' is not callable. Did you mean to include 'new'? var x: Entity; var y: Entity.I; - ~~~~~~ -!!! error TS2503: Cannot find namespace 'Entity'. var z = new Entity(); - var sum = z.p1 + z.p2 - ~~ -!!! error TS2339: Property 'p1' does not exist on type 'Decl'. - ~~ -!!! error TS2339: Property 'p2' does not exist on type 'Decl'. \ No newline at end of file + var sum = z.p1 + z.p2 \ No newline at end of file diff --git a/tests/baselines/reference/derivedClasses.types b/tests/baselines/reference/derivedClasses.types index 906cfb2741c..7fc585e29ce 100644 --- a/tests/baselines/reference/derivedClasses.types +++ b/tests/baselines/reference/derivedClasses.types @@ -11,7 +11,7 @@ class Red extends Color { >() => { return this.hue(); } : () => string >this.hue() : string >this.hue : () => string ->this : Red +>this : this >hue : () => string return getHue() + " red"; @@ -46,7 +46,7 @@ class Blue extends Color { >() => { return this.hue(); } : () => string >this.hue() : string >this.hue : () => string ->this : Blue +>this : this >hue : () => string return getHue() + " blue"; diff --git a/tests/baselines/reference/destructuringArrayBindingPatternAndAssignment1ES5.errors.txt b/tests/baselines/reference/destructuringArrayBindingPatternAndAssignment1ES5.errors.txt new file mode 100644 index 00000000000..1f1bc85757b --- /dev/null +++ b/tests/baselines/reference/destructuringArrayBindingPatternAndAssignment1ES5.errors.txt @@ -0,0 +1,65 @@ +tests/cases/conformance/es6/destructuring/destructuringArrayBindingPatternAndAssignment1ES5.ts(43,6): error TS2525: Initializer provides no value for this binding element and the binding element has no default value. +tests/cases/conformance/es6/destructuring/destructuringArrayBindingPatternAndAssignment1ES5.ts(44,8): error TS2525: Initializer provides no value for this binding element and the binding element has no default value. +tests/cases/conformance/es6/destructuring/destructuringArrayBindingPatternAndAssignment1ES5.ts(44,18): error TS2525: Initializer provides no value for this binding element and the binding element has no default value. + + +==== tests/cases/conformance/es6/destructuring/destructuringArrayBindingPatternAndAssignment1ES5.ts (3 errors) ==== + /* AssignmentPattern: + * ObjectAssignmentPattern + * ArrayAssignmentPattern + * ArrayAssignmentPattern: + * [Elision AssignmentRestElementopt ] + * [AssignmentElementList] + * [AssignmentElementList, Elision AssignmentRestElementopt ] + * AssignmentElementList: + * Elision AssignmentElement + * AssignmentElementList, Elisionopt AssignmentElement + * AssignmentElement: + * LeftHandSideExpression Initialiseropt + * AssignmentPattern Initialiseropt + * AssignmentRestElement: + * ... LeftHandSideExpression + */ + + // In a destructuring assignment expression, the type of the expression on the right must be assignable to the assignment target on the left. + // An expression of type S is considered assignable to an assignment target V if one of the following is true + + // V is an array assignment pattern, S is the type Any or an array-like type (section 3.3.2), and, for each assignment element E in V, + // S is the type Any, or + + var [a0, a1]: any = undefined; + var [a2 = false, a3 = 1]: any = undefined; + + // V is an array assignment pattern, S is the type Any or an array-like type (section 3.3.2), and, for each assignment element E in V, + // S is a tuple- like type (section 3.3.3) with a property named N of a type that is assignable to the target given in E, + // where N is the numeric index of E in the array assignment pattern, or + var [b0, b1, b2] = [2, 3, 4]; + var [b3, b4, b5]: [number, number, string] = [1, 2, "string"]; + + function foo() { + return [1, 2, 3]; + } + + var [b6, b7] = foo(); + var [...b8] = foo(); + + // S is not a tuple- like type and the numeric index signature type of S is assignable to the target given in E. + var temp = [1,2,3] + var [c0, c1] = [...temp]; + var [c2] = []; + ~~ +!!! error TS2525: Initializer provides no value for this binding element and the binding element has no default value. + var [[[c3]], [[[[c4]]]]] = [[[]], [[[[]]]]] + ~~ +!!! error TS2525: Initializer provides no value for this binding element and the binding element has no default value. + ~~ +!!! error TS2525: Initializer provides no value for this binding element and the binding element has no default value. + var [[c5], c6]: [[string|number], boolean] = [[1], true]; + var [, c7] = [1, 2, 3]; + var [,,, c8] = [1, 2, 3, 4]; + var [,,, c9] = [1, 2, 3, 4]; + var [,,,...c10] = [1, 2, 3, 4, "hello"]; + var [c11, c12, ...c13] = [1, 2, "string"]; + var [c14, c15, c16] = [1, 2, "string"]; + + \ No newline at end of file diff --git a/tests/baselines/reference/destructuringArrayBindingPatternAndAssignment1ES5.symbols b/tests/baselines/reference/destructuringArrayBindingPatternAndAssignment1ES5.symbols deleted file mode 100644 index d8e319f4120..00000000000 --- a/tests/baselines/reference/destructuringArrayBindingPatternAndAssignment1ES5.symbols +++ /dev/null @@ -1,105 +0,0 @@ -=== tests/cases/conformance/es6/destructuring/destructuringArrayBindingPatternAndAssignment1ES5.ts === -/* AssignmentPattern: - * ObjectAssignmentPattern - * ArrayAssignmentPattern - * ArrayAssignmentPattern: - * [Elision AssignmentRestElementopt ] - * [AssignmentElementList] - * [AssignmentElementList, Elision AssignmentRestElementopt ] - * AssignmentElementList: - * Elision AssignmentElement - * AssignmentElementList, Elisionopt AssignmentElement - * AssignmentElement: - * LeftHandSideExpression Initialiseropt - * AssignmentPattern Initialiseropt - * AssignmentRestElement: - * ... LeftHandSideExpression - */ - -// In a destructuring assignment expression, the type of the expression on the right must be assignable to the assignment target on the left. -// An expression of type S is considered assignable to an assignment target V if one of the following is true - -// V is an array assignment pattern, S is the type Any or an array-like type (section 3.3.2), and, for each assignment element E in V, -// S is the type Any, or - -var [a0, a1]: any = undefined; ->a0 : Symbol(a0, Decl(destructuringArrayBindingPatternAndAssignment1ES5.ts, 23, 5)) ->a1 : Symbol(a1, Decl(destructuringArrayBindingPatternAndAssignment1ES5.ts, 23, 8)) ->undefined : Symbol(undefined) - -var [a2 = false, a3 = 1]: any = undefined; ->a2 : Symbol(a2, Decl(destructuringArrayBindingPatternAndAssignment1ES5.ts, 24, 5)) ->a3 : Symbol(a3, Decl(destructuringArrayBindingPatternAndAssignment1ES5.ts, 24, 16)) ->undefined : Symbol(undefined) - -// V is an array assignment pattern, S is the type Any or an array-like type (section 3.3.2), and, for each assignment element E in V, -// S is a tuple- like type (section 3.3.3) with a property named N of a type that is assignable to the target given in E, -// where N is the numeric index of E in the array assignment pattern, or -var [b0, b1, b2] = [2, 3, 4]; ->b0 : Symbol(b0, Decl(destructuringArrayBindingPatternAndAssignment1ES5.ts, 29, 5)) ->b1 : Symbol(b1, Decl(destructuringArrayBindingPatternAndAssignment1ES5.ts, 29, 8)) ->b2 : Symbol(b2, Decl(destructuringArrayBindingPatternAndAssignment1ES5.ts, 29, 12)) - -var [b3, b4, b5]: [number, number, string] = [1, 2, "string"]; ->b3 : Symbol(b3, Decl(destructuringArrayBindingPatternAndAssignment1ES5.ts, 30, 5)) ->b4 : Symbol(b4, Decl(destructuringArrayBindingPatternAndAssignment1ES5.ts, 30, 8)) ->b5 : Symbol(b5, Decl(destructuringArrayBindingPatternAndAssignment1ES5.ts, 30, 12)) - -function foo() { ->foo : Symbol(foo, Decl(destructuringArrayBindingPatternAndAssignment1ES5.ts, 30, 62)) - - return [1, 2, 3]; -} - -var [b6, b7] = foo(); ->b6 : Symbol(b6, Decl(destructuringArrayBindingPatternAndAssignment1ES5.ts, 36, 5)) ->b7 : Symbol(b7, Decl(destructuringArrayBindingPatternAndAssignment1ES5.ts, 36, 8)) ->foo : Symbol(foo, Decl(destructuringArrayBindingPatternAndAssignment1ES5.ts, 30, 62)) - -var [...b8] = foo(); ->b8 : Symbol(b8, Decl(destructuringArrayBindingPatternAndAssignment1ES5.ts, 37, 5)) ->foo : Symbol(foo, Decl(destructuringArrayBindingPatternAndAssignment1ES5.ts, 30, 62)) - -// S is not a tuple- like type and the numeric index signature type of S is assignable to the target given in E. -var temp = [1,2,3] ->temp : Symbol(temp, Decl(destructuringArrayBindingPatternAndAssignment1ES5.ts, 40, 3)) - -var [c0, c1] = [...temp]; ->c0 : Symbol(c0, Decl(destructuringArrayBindingPatternAndAssignment1ES5.ts, 41, 5)) ->c1 : Symbol(c1, Decl(destructuringArrayBindingPatternAndAssignment1ES5.ts, 41, 8)) ->temp : Symbol(temp, Decl(destructuringArrayBindingPatternAndAssignment1ES5.ts, 40, 3)) - -var [c2] = []; ->c2 : Symbol(c2, Decl(destructuringArrayBindingPatternAndAssignment1ES5.ts, 42, 5)) - -var [[[c3]], [[[[c4]]]]] = [[[]], [[[[]]]]] ->c3 : Symbol(c3, Decl(destructuringArrayBindingPatternAndAssignment1ES5.ts, 43, 7)) ->c4 : Symbol(c4, Decl(destructuringArrayBindingPatternAndAssignment1ES5.ts, 43, 17)) - -var [[c5], c6]: [[string|number], boolean] = [[1], true]; ->c5 : Symbol(c5, Decl(destructuringArrayBindingPatternAndAssignment1ES5.ts, 44, 6)) ->c6 : Symbol(c6, Decl(destructuringArrayBindingPatternAndAssignment1ES5.ts, 44, 10)) - -var [, c7] = [1, 2, 3]; ->c7 : Symbol(c7, Decl(destructuringArrayBindingPatternAndAssignment1ES5.ts, 45, 6)) - -var [,,, c8] = [1, 2, 3, 4]; ->c8 : Symbol(c8, Decl(destructuringArrayBindingPatternAndAssignment1ES5.ts, 46, 8)) - -var [,,, c9] = [1, 2, 3, 4]; ->c9 : Symbol(c9, Decl(destructuringArrayBindingPatternAndAssignment1ES5.ts, 47, 8)) - -var [,,,...c10] = [1, 2, 3, 4, "hello"]; ->c10 : Symbol(c10, Decl(destructuringArrayBindingPatternAndAssignment1ES5.ts, 48, 8)) - -var [c11, c12, ...c13] = [1, 2, "string"]; ->c11 : Symbol(c11, Decl(destructuringArrayBindingPatternAndAssignment1ES5.ts, 49, 5)) ->c12 : Symbol(c12, Decl(destructuringArrayBindingPatternAndAssignment1ES5.ts, 49, 9)) ->c13 : Symbol(c13, Decl(destructuringArrayBindingPatternAndAssignment1ES5.ts, 49, 14)) - -var [c14, c15, c16] = [1, 2, "string"]; ->c14 : Symbol(c14, Decl(destructuringArrayBindingPatternAndAssignment1ES5.ts, 50, 5)) ->c15 : Symbol(c15, Decl(destructuringArrayBindingPatternAndAssignment1ES5.ts, 50, 9)) ->c16 : Symbol(c16, Decl(destructuringArrayBindingPatternAndAssignment1ES5.ts, 50, 14)) - - diff --git a/tests/baselines/reference/destructuringArrayBindingPatternAndAssignment1ES5.types b/tests/baselines/reference/destructuringArrayBindingPatternAndAssignment1ES5.types deleted file mode 100644 index adff61e407c..00000000000 --- a/tests/baselines/reference/destructuringArrayBindingPatternAndAssignment1ES5.types +++ /dev/null @@ -1,177 +0,0 @@ -=== tests/cases/conformance/es6/destructuring/destructuringArrayBindingPatternAndAssignment1ES5.ts === -/* AssignmentPattern: - * ObjectAssignmentPattern - * ArrayAssignmentPattern - * ArrayAssignmentPattern: - * [Elision AssignmentRestElementopt ] - * [AssignmentElementList] - * [AssignmentElementList, Elision AssignmentRestElementopt ] - * AssignmentElementList: - * Elision AssignmentElement - * AssignmentElementList, Elisionopt AssignmentElement - * AssignmentElement: - * LeftHandSideExpression Initialiseropt - * AssignmentPattern Initialiseropt - * AssignmentRestElement: - * ... LeftHandSideExpression - */ - -// In a destructuring assignment expression, the type of the expression on the right must be assignable to the assignment target on the left. -// An expression of type S is considered assignable to an assignment target V if one of the following is true - -// V is an array assignment pattern, S is the type Any or an array-like type (section 3.3.2), and, for each assignment element E in V, -// S is the type Any, or - -var [a0, a1]: any = undefined; ->a0 : any ->a1 : any ->undefined : undefined - -var [a2 = false, a3 = 1]: any = undefined; ->a2 : boolean ->false : boolean ->a3 : number ->1 : number ->undefined : undefined - -// V is an array assignment pattern, S is the type Any or an array-like type (section 3.3.2), and, for each assignment element E in V, -// S is a tuple- like type (section 3.3.3) with a property named N of a type that is assignable to the target given in E, -// where N is the numeric index of E in the array assignment pattern, or -var [b0, b1, b2] = [2, 3, 4]; ->b0 : number ->b1 : number ->b2 : number ->[2, 3, 4] : [number, number, number] ->2 : number ->3 : number ->4 : number - -var [b3, b4, b5]: [number, number, string] = [1, 2, "string"]; ->b3 : number ->b4 : number ->b5 : string ->[1, 2, "string"] : [number, number, string] ->1 : number ->2 : number ->"string" : string - -function foo() { ->foo : () => number[] - - return [1, 2, 3]; ->[1, 2, 3] : number[] ->1 : number ->2 : number ->3 : number -} - -var [b6, b7] = foo(); ->b6 : number ->b7 : number ->foo() : number[] ->foo : () => number[] - -var [...b8] = foo(); ->b8 : number[] ->foo() : number[] ->foo : () => number[] - -// S is not a tuple- like type and the numeric index signature type of S is assignable to the target given in E. -var temp = [1,2,3] ->temp : number[] ->[1,2,3] : number[] ->1 : number ->2 : number ->3 : number - -var [c0, c1] = [...temp]; ->c0 : number ->c1 : number ->[...temp] : number[] ->...temp : number ->temp : number[] - -var [c2] = []; ->c2 : any ->[] : undefined[] - -var [[[c3]], [[[[c4]]]]] = [[[]], [[[[]]]]] ->c3 : any ->c4 : any ->[[[]], [[[[]]]]] : [[undefined[]], [[[undefined[]]]]] ->[[]] : [undefined[]] ->[] : undefined[] ->[[[[]]]] : [[[undefined[]]]] ->[[[]]] : [[undefined[]]] ->[[]] : [undefined[]] ->[] : undefined[] - -var [[c5], c6]: [[string|number], boolean] = [[1], true]; ->c5 : string | number ->c6 : boolean ->[[1], true] : [[number], boolean] ->[1] : [number] ->1 : number ->true : boolean - -var [, c7] = [1, 2, 3]; -> : undefined ->c7 : number ->[1, 2, 3] : [number, number, number] ->1 : number ->2 : number ->3 : number - -var [,,, c8] = [1, 2, 3, 4]; -> : undefined -> : undefined -> : undefined ->c8 : number ->[1, 2, 3, 4] : [number, number, number, number] ->1 : number ->2 : number ->3 : number ->4 : number - -var [,,, c9] = [1, 2, 3, 4]; -> : undefined -> : undefined -> : undefined ->c9 : number ->[1, 2, 3, 4] : [number, number, number, number] ->1 : number ->2 : number ->3 : number ->4 : number - -var [,,,...c10] = [1, 2, 3, 4, "hello"]; -> : undefined -> : undefined -> : undefined ->c10 : (number | string)[] ->[1, 2, 3, 4, "hello"] : (number | string)[] ->1 : number ->2 : number ->3 : number ->4 : number ->"hello" : string - -var [c11, c12, ...c13] = [1, 2, "string"]; ->c11 : number | string ->c12 : number | string ->c13 : (number | string)[] ->[1, 2, "string"] : (number | string)[] ->1 : number ->2 : number ->"string" : string - -var [c14, c15, c16] = [1, 2, "string"]; ->c14 : number ->c15 : number ->c16 : string ->[1, 2, "string"] : [number, number, string] ->1 : number ->2 : number ->"string" : string - - diff --git a/tests/baselines/reference/destructuringArrayBindingPatternAndAssignment1ES6.errors.txt b/tests/baselines/reference/destructuringArrayBindingPatternAndAssignment1ES6.errors.txt new file mode 100644 index 00000000000..beefbc9a85b --- /dev/null +++ b/tests/baselines/reference/destructuringArrayBindingPatternAndAssignment1ES6.errors.txt @@ -0,0 +1,64 @@ +tests/cases/conformance/es6/destructuring/destructuringArrayBindingPatternAndAssignment1ES6.ts(44,6): error TS2525: Initializer provides no value for this binding element and the binding element has no default value. +tests/cases/conformance/es6/destructuring/destructuringArrayBindingPatternAndAssignment1ES6.ts(45,8): error TS2525: Initializer provides no value for this binding element and the binding element has no default value. +tests/cases/conformance/es6/destructuring/destructuringArrayBindingPatternAndAssignment1ES6.ts(45,18): error TS2525: Initializer provides no value for this binding element and the binding element has no default value. + + +==== tests/cases/conformance/es6/destructuring/destructuringArrayBindingPatternAndAssignment1ES6.ts (3 errors) ==== + + /* AssignmentPattern: + * ObjectAssignmentPattern + * ArrayAssignmentPattern + * ArrayAssignmentPattern: + * [Elision AssignmentRestElementopt ] + * [AssignmentElementList] + * [AssignmentElementList, Elision AssignmentRestElementopt ] + * AssignmentElementList: + * Elision AssignmentElement + * AssignmentElementList, Elisionopt AssignmentElement + * AssignmentElement: + * LeftHandSideExpression Initialiseropt + * AssignmentPattern Initialiseropt + * AssignmentRestElement: + * ... LeftHandSideExpression + */ + + // In a destructuring assignment expression, the type of the expression on the right must be assignable to the assignment target on the left. + // An expression of type S is considered assignable to an assignment target V if one of the following is true + + // V is an array assignment pattern, S is the type Any or an array-like type (section 3.3.2), and, for each assignment element E in V, + // S is the type Any, or + + var [a0, a1]: any = undefined; + var [a2 = false, a3 = 1]: any = undefined; + + // V is an array assignment pattern, S is the type Any or an array-like type (section 3.3.2), and, for each assignment element E in V, + // S is a tuple- like type (section 3.3.3) with a property named N of a type that is assignable to the target given in E, + // where N is the numeric index of E in the array assignment pattern, or + var [b0, b1, b2] = [2, 3, 4]; + var [b3, b4, b5]: [number, number, string] = [1, 2, "string"]; + + function foo() { + return [1, 2, 3]; + } + + var [b6, b7] = foo(); + var [...b8] = foo(); + + // S is not a tuple- like type and the numeric index signature type of S is assignable to the target given in E. + var temp = [1,2,3] + var [c0, c1] = [...temp]; + var [c2] = []; + ~~ +!!! error TS2525: Initializer provides no value for this binding element and the binding element has no default value. + var [[[c3]], [[[[c4]]]]] = [[[]], [[[[]]]]] + ~~ +!!! error TS2525: Initializer provides no value for this binding element and the binding element has no default value. + ~~ +!!! error TS2525: Initializer provides no value for this binding element and the binding element has no default value. + var [[c5], c6]: [[string|number], boolean] = [[1], true]; + var [, c7] = [1, 2, 3]; + var [,,, c8] = [1, 2, 3, 4]; + var [,,, c9] = [1, 2, 3, 4]; + var [,,,...c10] = [1, 2, 3, 4, "hello"]; + var [c11, c12, ...c13] = [1, 2, "string"]; + var [c14, c15, c16] = [1, 2, "string"]; \ No newline at end of file diff --git a/tests/baselines/reference/destructuringArrayBindingPatternAndAssignment1ES6.symbols b/tests/baselines/reference/destructuringArrayBindingPatternAndAssignment1ES6.symbols deleted file mode 100644 index 33f9b4e88be..00000000000 --- a/tests/baselines/reference/destructuringArrayBindingPatternAndAssignment1ES6.symbols +++ /dev/null @@ -1,105 +0,0 @@ -=== tests/cases/conformance/es6/destructuring/destructuringArrayBindingPatternAndAssignment1ES6.ts === - -/* AssignmentPattern: - * ObjectAssignmentPattern - * ArrayAssignmentPattern - * ArrayAssignmentPattern: - * [Elision AssignmentRestElementopt ] - * [AssignmentElementList] - * [AssignmentElementList, Elision AssignmentRestElementopt ] - * AssignmentElementList: - * Elision AssignmentElement - * AssignmentElementList, Elisionopt AssignmentElement - * AssignmentElement: - * LeftHandSideExpression Initialiseropt - * AssignmentPattern Initialiseropt - * AssignmentRestElement: - * ... LeftHandSideExpression - */ - -// In a destructuring assignment expression, the type of the expression on the right must be assignable to the assignment target on the left. -// An expression of type S is considered assignable to an assignment target V if one of the following is true - -// V is an array assignment pattern, S is the type Any or an array-like type (section 3.3.2), and, for each assignment element E in V, -// S is the type Any, or - -var [a0, a1]: any = undefined; ->a0 : Symbol(a0, Decl(destructuringArrayBindingPatternAndAssignment1ES6.ts, 24, 5)) ->a1 : Symbol(a1, Decl(destructuringArrayBindingPatternAndAssignment1ES6.ts, 24, 8)) ->undefined : Symbol(undefined) - -var [a2 = false, a3 = 1]: any = undefined; ->a2 : Symbol(a2, Decl(destructuringArrayBindingPatternAndAssignment1ES6.ts, 25, 5)) ->a3 : Symbol(a3, Decl(destructuringArrayBindingPatternAndAssignment1ES6.ts, 25, 16)) ->undefined : Symbol(undefined) - -// V is an array assignment pattern, S is the type Any or an array-like type (section 3.3.2), and, for each assignment element E in V, -// S is a tuple- like type (section 3.3.3) with a property named N of a type that is assignable to the target given in E, -// where N is the numeric index of E in the array assignment pattern, or -var [b0, b1, b2] = [2, 3, 4]; ->b0 : Symbol(b0, Decl(destructuringArrayBindingPatternAndAssignment1ES6.ts, 30, 5)) ->b1 : Symbol(b1, Decl(destructuringArrayBindingPatternAndAssignment1ES6.ts, 30, 8)) ->b2 : Symbol(b2, Decl(destructuringArrayBindingPatternAndAssignment1ES6.ts, 30, 12)) - -var [b3, b4, b5]: [number, number, string] = [1, 2, "string"]; ->b3 : Symbol(b3, Decl(destructuringArrayBindingPatternAndAssignment1ES6.ts, 31, 5)) ->b4 : Symbol(b4, Decl(destructuringArrayBindingPatternAndAssignment1ES6.ts, 31, 8)) ->b5 : Symbol(b5, Decl(destructuringArrayBindingPatternAndAssignment1ES6.ts, 31, 12)) - -function foo() { ->foo : Symbol(foo, Decl(destructuringArrayBindingPatternAndAssignment1ES6.ts, 31, 62)) - - return [1, 2, 3]; -} - -var [b6, b7] = foo(); ->b6 : Symbol(b6, Decl(destructuringArrayBindingPatternAndAssignment1ES6.ts, 37, 5)) ->b7 : Symbol(b7, Decl(destructuringArrayBindingPatternAndAssignment1ES6.ts, 37, 8)) ->foo : Symbol(foo, Decl(destructuringArrayBindingPatternAndAssignment1ES6.ts, 31, 62)) - -var [...b8] = foo(); ->b8 : Symbol(b8, Decl(destructuringArrayBindingPatternAndAssignment1ES6.ts, 38, 5)) ->foo : Symbol(foo, Decl(destructuringArrayBindingPatternAndAssignment1ES6.ts, 31, 62)) - -// S is not a tuple- like type and the numeric index signature type of S is assignable to the target given in E. -var temp = [1,2,3] ->temp : Symbol(temp, Decl(destructuringArrayBindingPatternAndAssignment1ES6.ts, 41, 3)) - -var [c0, c1] = [...temp]; ->c0 : Symbol(c0, Decl(destructuringArrayBindingPatternAndAssignment1ES6.ts, 42, 5)) ->c1 : Symbol(c1, Decl(destructuringArrayBindingPatternAndAssignment1ES6.ts, 42, 8)) ->temp : Symbol(temp, Decl(destructuringArrayBindingPatternAndAssignment1ES6.ts, 41, 3)) - -var [c2] = []; ->c2 : Symbol(c2, Decl(destructuringArrayBindingPatternAndAssignment1ES6.ts, 43, 5)) - -var [[[c3]], [[[[c4]]]]] = [[[]], [[[[]]]]] ->c3 : Symbol(c3, Decl(destructuringArrayBindingPatternAndAssignment1ES6.ts, 44, 7)) ->c4 : Symbol(c4, Decl(destructuringArrayBindingPatternAndAssignment1ES6.ts, 44, 17)) - -var [[c5], c6]: [[string|number], boolean] = [[1], true]; ->c5 : Symbol(c5, Decl(destructuringArrayBindingPatternAndAssignment1ES6.ts, 45, 6)) ->c6 : Symbol(c6, Decl(destructuringArrayBindingPatternAndAssignment1ES6.ts, 45, 10)) - -var [, c7] = [1, 2, 3]; ->c7 : Symbol(c7, Decl(destructuringArrayBindingPatternAndAssignment1ES6.ts, 46, 6)) - -var [,,, c8] = [1, 2, 3, 4]; ->c8 : Symbol(c8, Decl(destructuringArrayBindingPatternAndAssignment1ES6.ts, 47, 8)) - -var [,,, c9] = [1, 2, 3, 4]; ->c9 : Symbol(c9, Decl(destructuringArrayBindingPatternAndAssignment1ES6.ts, 48, 8)) - -var [,,,...c10] = [1, 2, 3, 4, "hello"]; ->c10 : Symbol(c10, Decl(destructuringArrayBindingPatternAndAssignment1ES6.ts, 49, 8)) - -var [c11, c12, ...c13] = [1, 2, "string"]; ->c11 : Symbol(c11, Decl(destructuringArrayBindingPatternAndAssignment1ES6.ts, 50, 5)) ->c12 : Symbol(c12, Decl(destructuringArrayBindingPatternAndAssignment1ES6.ts, 50, 9)) ->c13 : Symbol(c13, Decl(destructuringArrayBindingPatternAndAssignment1ES6.ts, 50, 14)) - -var [c14, c15, c16] = [1, 2, "string"]; ->c14 : Symbol(c14, Decl(destructuringArrayBindingPatternAndAssignment1ES6.ts, 51, 5)) ->c15 : Symbol(c15, Decl(destructuringArrayBindingPatternAndAssignment1ES6.ts, 51, 9)) ->c16 : Symbol(c16, Decl(destructuringArrayBindingPatternAndAssignment1ES6.ts, 51, 14)) - diff --git a/tests/baselines/reference/destructuringArrayBindingPatternAndAssignment1ES6.types b/tests/baselines/reference/destructuringArrayBindingPatternAndAssignment1ES6.types deleted file mode 100644 index 0a9e75a8aed..00000000000 --- a/tests/baselines/reference/destructuringArrayBindingPatternAndAssignment1ES6.types +++ /dev/null @@ -1,177 +0,0 @@ -=== tests/cases/conformance/es6/destructuring/destructuringArrayBindingPatternAndAssignment1ES6.ts === - -/* AssignmentPattern: - * ObjectAssignmentPattern - * ArrayAssignmentPattern - * ArrayAssignmentPattern: - * [Elision AssignmentRestElementopt ] - * [AssignmentElementList] - * [AssignmentElementList, Elision AssignmentRestElementopt ] - * AssignmentElementList: - * Elision AssignmentElement - * AssignmentElementList, Elisionopt AssignmentElement - * AssignmentElement: - * LeftHandSideExpression Initialiseropt - * AssignmentPattern Initialiseropt - * AssignmentRestElement: - * ... LeftHandSideExpression - */ - -// In a destructuring assignment expression, the type of the expression on the right must be assignable to the assignment target on the left. -// An expression of type S is considered assignable to an assignment target V if one of the following is true - -// V is an array assignment pattern, S is the type Any or an array-like type (section 3.3.2), and, for each assignment element E in V, -// S is the type Any, or - -var [a0, a1]: any = undefined; ->a0 : any ->a1 : any ->undefined : undefined - -var [a2 = false, a3 = 1]: any = undefined; ->a2 : boolean ->false : boolean ->a3 : number ->1 : number ->undefined : undefined - -// V is an array assignment pattern, S is the type Any or an array-like type (section 3.3.2), and, for each assignment element E in V, -// S is a tuple- like type (section 3.3.3) with a property named N of a type that is assignable to the target given in E, -// where N is the numeric index of E in the array assignment pattern, or -var [b0, b1, b2] = [2, 3, 4]; ->b0 : number ->b1 : number ->b2 : number ->[2, 3, 4] : [number, number, number] ->2 : number ->3 : number ->4 : number - -var [b3, b4, b5]: [number, number, string] = [1, 2, "string"]; ->b3 : number ->b4 : number ->b5 : string ->[1, 2, "string"] : [number, number, string] ->1 : number ->2 : number ->"string" : string - -function foo() { ->foo : () => number[] - - return [1, 2, 3]; ->[1, 2, 3] : number[] ->1 : number ->2 : number ->3 : number -} - -var [b6, b7] = foo(); ->b6 : number ->b7 : number ->foo() : number[] ->foo : () => number[] - -var [...b8] = foo(); ->b8 : number[] ->foo() : number[] ->foo : () => number[] - -// S is not a tuple- like type and the numeric index signature type of S is assignable to the target given in E. -var temp = [1,2,3] ->temp : number[] ->[1,2,3] : number[] ->1 : number ->2 : number ->3 : number - -var [c0, c1] = [...temp]; ->c0 : number ->c1 : number ->[...temp] : number[] ->...temp : number ->temp : number[] - -var [c2] = []; ->c2 : any ->[] : undefined[] - -var [[[c3]], [[[[c4]]]]] = [[[]], [[[[]]]]] ->c3 : any ->c4 : any ->[[[]], [[[[]]]]] : [[undefined[]], [[[undefined[]]]]] ->[[]] : [undefined[]] ->[] : undefined[] ->[[[[]]]] : [[[undefined[]]]] ->[[[]]] : [[undefined[]]] ->[[]] : [undefined[]] ->[] : undefined[] - -var [[c5], c6]: [[string|number], boolean] = [[1], true]; ->c5 : string | number ->c6 : boolean ->[[1], true] : [[number], boolean] ->[1] : [number] ->1 : number ->true : boolean - -var [, c7] = [1, 2, 3]; -> : undefined ->c7 : number ->[1, 2, 3] : [number, number, number] ->1 : number ->2 : number ->3 : number - -var [,,, c8] = [1, 2, 3, 4]; -> : undefined -> : undefined -> : undefined ->c8 : number ->[1, 2, 3, 4] : [number, number, number, number] ->1 : number ->2 : number ->3 : number ->4 : number - -var [,,, c9] = [1, 2, 3, 4]; -> : undefined -> : undefined -> : undefined ->c9 : number ->[1, 2, 3, 4] : [number, number, number, number] ->1 : number ->2 : number ->3 : number ->4 : number - -var [,,,...c10] = [1, 2, 3, 4, "hello"]; -> : undefined -> : undefined -> : undefined ->c10 : (number | string)[] ->[1, 2, 3, 4, "hello"] : (number | string)[] ->1 : number ->2 : number ->3 : number ->4 : number ->"hello" : string - -var [c11, c12, ...c13] = [1, 2, "string"]; ->c11 : number | string ->c12 : number | string ->c13 : (number | string)[] ->[1, 2, "string"] : (number | string)[] ->1 : number ->2 : number ->"string" : string - -var [c14, c15, c16] = [1, 2, "string"]; ->c14 : number ->c15 : number ->c16 : string ->[1, 2, "string"] : [number, number, string] ->1 : number ->2 : number ->"string" : string - diff --git a/tests/baselines/reference/destructuringArrayBindingPatternAndAssignment2.errors.txt b/tests/baselines/reference/destructuringArrayBindingPatternAndAssignment2.errors.txt index a2e5cb7e17c..91405285973 100644 --- a/tests/baselines/reference/destructuringArrayBindingPatternAndAssignment2.errors.txt +++ b/tests/baselines/reference/destructuringArrayBindingPatternAndAssignment2.errors.txt @@ -1,5 +1,5 @@ -tests/cases/conformance/es6/destructuring/destructuringArrayBindingPatternAndAssignment2.ts(3,6): error TS2461: Type 'undefined' is not an array type. -tests/cases/conformance/es6/destructuring/destructuringArrayBindingPatternAndAssignment2.ts(3,12): error TS2461: Type 'undefined' is not an array type. +tests/cases/conformance/es6/destructuring/destructuringArrayBindingPatternAndAssignment2.ts(3,6): error TS2525: Initializer provides no value for this binding element and the binding element has no default value. +tests/cases/conformance/es6/destructuring/destructuringArrayBindingPatternAndAssignment2.ts(3,12): error TS2525: Initializer provides no value for this binding element and the binding element has no default value. tests/cases/conformance/es6/destructuring/destructuringArrayBindingPatternAndAssignment2.ts(4,5): error TS2461: Type 'undefined' is not an array type. tests/cases/conformance/es6/destructuring/destructuringArrayBindingPatternAndAssignment2.ts(9,5): error TS2322: Type '[number, number, string]' is not assignable to type '[number, boolean, string]'. Types of property '1' are incompatible. @@ -18,9 +18,9 @@ tests/cases/conformance/es6/destructuring/destructuringArrayBindingPatternAndAss // S is the type Any, or var [[a0], [[a1]]] = [] // Error ~~~~ -!!! error TS2461: Type 'undefined' is not an array type. +!!! error TS2525: Initializer provides no value for this binding element and the binding element has no default value. ~~~~~~ -!!! error TS2461: Type 'undefined' is not an array type. +!!! error TS2525: Initializer provides no value for this binding element and the binding element has no default value. var [[a2], [[a3]]] = undefined // Error ~~~~~~~~~~~~~~ !!! error TS2461: Type 'undefined' is not an array type. diff --git a/tests/baselines/reference/destructuringObjectBindingPatternAndAssignment1ES5.types b/tests/baselines/reference/destructuringObjectBindingPatternAndAssignment1ES5.types index f44adab359f..476b5bee0cc 100644 --- a/tests/baselines/reference/destructuringObjectBindingPatternAndAssignment1ES5.types +++ b/tests/baselines/reference/destructuringObjectBindingPatternAndAssignment1ES5.types @@ -27,7 +27,7 @@ var { b2: { b21 } = { b21: "string" } } = { b2: { b21: "world" } }; >{ b21: "string" } : { b21: string; } >b21 : string >"string" : string ->{ b2: { b21: "world" } } : { b2: { b21: string; }; } +>{ b2: { b21: "world" } } : { b2?: { b21: string; }; } >b2 : { b21: string; } >{ b21: "world" } : { b21: string; } >b21 : string diff --git a/tests/baselines/reference/destructuringObjectBindingPatternAndAssignment1ES6.types b/tests/baselines/reference/destructuringObjectBindingPatternAndAssignment1ES6.types index 47d4474b63e..7a7f631eddf 100644 --- a/tests/baselines/reference/destructuringObjectBindingPatternAndAssignment1ES6.types +++ b/tests/baselines/reference/destructuringObjectBindingPatternAndAssignment1ES6.types @@ -27,7 +27,7 @@ var { b2: { b21 } = { b21: "string" } } = { b2: { b21: "world" } }; >{ b21: "string" } : { b21: string; } >b21 : string >"string" : string ->{ b2: { b21: "world" } } : { b2: { b21: string; }; } +>{ b2: { b21: "world" } } : { b2?: { b21: string; }; } >b2 : { b21: string; } >{ b21: "world" } : { b21: string; } >b21 : string diff --git a/tests/baselines/reference/destructuringObjectBindingPatternAndAssignment3.errors.txt b/tests/baselines/reference/destructuringObjectBindingPatternAndAssignment3.errors.txt index 9025f24f992..bb4b79987e3 100644 --- a/tests/baselines/reference/destructuringObjectBindingPatternAndAssignment3.errors.txt +++ b/tests/baselines/reference/destructuringObjectBindingPatternAndAssignment3.errors.txt @@ -3,14 +3,18 @@ tests/cases/conformance/es6/destructuring/destructuringObjectBindingPatternAndAs Type '{ i: number; }' is not assignable to type 'number'. tests/cases/conformance/es6/destructuring/destructuringObjectBindingPatternAndAssignment3.ts(3,6): error TS2459: Type 'string | number' has no property 'i' and no string index signature. tests/cases/conformance/es6/destructuring/destructuringObjectBindingPatternAndAssignment3.ts(4,6): error TS2459: Type 'string | number | {}' has no property 'i1' and no string index signature. -tests/cases/conformance/es6/destructuring/destructuringObjectBindingPatternAndAssignment3.ts(5,12): error TS2459: Type '{ f212: string; }' has no property 'f21' and no string index signature. +tests/cases/conformance/es6/destructuring/destructuringObjectBindingPatternAndAssignment3.ts(5,12): error TS2525: Initializer provides no value for this binding element and the binding element has no default value. +tests/cases/conformance/es6/destructuring/destructuringObjectBindingPatternAndAssignment3.ts(5,21): error TS2353: Object literal may only specify known properties, and 'f212' does not exist in type '{ f21: any; }'. tests/cases/conformance/es6/destructuring/destructuringObjectBindingPatternAndAssignment3.ts(6,7): error TS1180: Property destructuring pattern expected. +tests/cases/conformance/es6/destructuring/destructuringObjectBindingPatternAndAssignment3.ts(7,5): error TS2353: Object literal may only specify known properties, and 'a' does not exist in type '{ d1: any; }'. +tests/cases/conformance/es6/destructuring/destructuringObjectBindingPatternAndAssignment3.ts(7,11): error TS2353: Object literal may only specify known properties, and 'b' does not exist in type '{ d1: any; }'. +tests/cases/conformance/es6/destructuring/destructuringObjectBindingPatternAndAssignment3.ts(7,24): error TS2353: Object literal may only specify known properties, and 'e' does not exist in type '{ d1: any; }'. tests/cases/conformance/es6/destructuring/destructuringObjectBindingPatternAndAssignment3.ts(9,7): error TS1005: ':' expected. tests/cases/conformance/es6/destructuring/destructuringObjectBindingPatternAndAssignment3.ts(9,15): error TS1005: ':' expected. tests/cases/conformance/es6/destructuring/destructuringObjectBindingPatternAndAssignment3.ts(10,12): error TS1005: ':' expected. -==== tests/cases/conformance/es6/destructuring/destructuringObjectBindingPatternAndAssignment3.ts (9 errors) ==== +==== tests/cases/conformance/es6/destructuring/destructuringObjectBindingPatternAndAssignment3.ts (13 errors) ==== // Error var {h?} = { h?: 1 }; ~ @@ -26,11 +30,19 @@ tests/cases/conformance/es6/destructuring/destructuringObjectBindingPatternAndAs !!! error TS2459: Type 'string | number | {}' has no property 'i1' and no string index signature. var { f2: {f21} = { f212: "string" } }: any = undefined; ~~~ -!!! error TS2459: Type '{ f212: string; }' has no property 'f21' and no string index signature. +!!! error TS2525: Initializer provides no value for this binding element and the binding element has no default value. + ~~~~ +!!! error TS2353: Object literal may only specify known properties, and 'f212' does not exist in type '{ f21: any; }'. var { ...d1 } = { ~~~ !!! error TS1180: Property destructuring pattern expected. a: 1, b: 1, d1: 9, e: 10 + ~ +!!! error TS2353: Object literal may only specify known properties, and 'a' does not exist in type '{ d1: any; }'. + ~ +!!! error TS2353: Object literal may only specify known properties, and 'b' does not exist in type '{ d1: any; }'. + ~ +!!! error TS2353: Object literal may only specify known properties, and 'e' does not exist in type '{ d1: any; }'. } var {1} = { 1 }; ~ diff --git a/tests/baselines/reference/destructuringParameterDeclaration3ES5.symbols b/tests/baselines/reference/destructuringParameterDeclaration3ES5.symbols index 24774958941..c2130f060ab 100644 --- a/tests/baselines/reference/destructuringParameterDeclaration3ES5.symbols +++ b/tests/baselines/reference/destructuringParameterDeclaration3ES5.symbols @@ -8,18 +8,18 @@ type arrayString = Array >arrayString : Symbol(arrayString, Decl(destructuringParameterDeclaration3ES5.ts, 0, 0)) ->Array : Symbol(Array, Decl(lib.d.ts, 1000, 23), Decl(lib.d.ts, 1171, 11), Decl(lib.d.ts, 4091, 1)) ->String : Symbol(String, Decl(lib.d.ts, 275, 1), Decl(lib.d.ts, 443, 11), Decl(lib.d.ts, 4209, 1)) +>Array : Symbol(Array, Decl(lib.d.ts, 1000, 23), Decl(lib.d.ts, 1171, 11), Decl(lib.d.ts, 4118, 1)) +>String : Symbol(String, Decl(lib.d.ts, 275, 1), Decl(lib.d.ts, 443, 11), Decl(lib.d.ts, 4236, 1)) type someArray = Array | number[]; >someArray : Symbol(someArray, Decl(destructuringParameterDeclaration3ES5.ts, 7, 32)) ->Array : Symbol(Array, Decl(lib.d.ts, 1000, 23), Decl(lib.d.ts, 1171, 11), Decl(lib.d.ts, 4091, 1)) ->String : Symbol(String, Decl(lib.d.ts, 275, 1), Decl(lib.d.ts, 443, 11), Decl(lib.d.ts, 4209, 1)) +>Array : Symbol(Array, Decl(lib.d.ts, 1000, 23), Decl(lib.d.ts, 1171, 11), Decl(lib.d.ts, 4118, 1)) +>String : Symbol(String, Decl(lib.d.ts, 275, 1), Decl(lib.d.ts, 443, 11), Decl(lib.d.ts, 4236, 1)) type stringOrNumArray = Array; >stringOrNumArray : Symbol(stringOrNumArray, Decl(destructuringParameterDeclaration3ES5.ts, 8, 42)) ->Array : Symbol(Array, Decl(lib.d.ts, 1000, 23), Decl(lib.d.ts, 1171, 11), Decl(lib.d.ts, 4091, 1)) ->String : Symbol(String, Decl(lib.d.ts, 275, 1), Decl(lib.d.ts, 443, 11), Decl(lib.d.ts, 4209, 1)) +>Array : Symbol(Array, Decl(lib.d.ts, 1000, 23), Decl(lib.d.ts, 1171, 11), Decl(lib.d.ts, 4118, 1)) +>String : Symbol(String, Decl(lib.d.ts, 275, 1), Decl(lib.d.ts, 443, 11), Decl(lib.d.ts, 4236, 1)) >Number : Symbol(Number, Decl(lib.d.ts, 456, 40), Decl(lib.d.ts, 518, 11)) function a1(...x: (number|string)[]) { } @@ -33,8 +33,8 @@ function a2(...a) { } function a3(...a: Array) { } >a3 : Symbol(a3, Decl(destructuringParameterDeclaration3ES5.ts, 12, 21)) >a : Symbol(a, Decl(destructuringParameterDeclaration3ES5.ts, 13, 12)) ->Array : Symbol(Array, Decl(lib.d.ts, 1000, 23), Decl(lib.d.ts, 1171, 11), Decl(lib.d.ts, 4091, 1)) ->String : Symbol(String, Decl(lib.d.ts, 275, 1), Decl(lib.d.ts, 443, 11), Decl(lib.d.ts, 4209, 1)) +>Array : Symbol(Array, Decl(lib.d.ts, 1000, 23), Decl(lib.d.ts, 1171, 11), Decl(lib.d.ts, 4118, 1)) +>String : Symbol(String, Decl(lib.d.ts, 275, 1), Decl(lib.d.ts, 443, 11), Decl(lib.d.ts, 4236, 1)) function a4(...a: arrayString) { } >a4 : Symbol(a4, Decl(destructuringParameterDeclaration3ES5.ts, 13, 36)) diff --git a/tests/baselines/reference/destructuringParameterDeclaration3ES6.symbols b/tests/baselines/reference/destructuringParameterDeclaration3ES6.symbols index e8cfc29f3a0..976c402d2b0 100644 --- a/tests/baselines/reference/destructuringParameterDeclaration3ES6.symbols +++ b/tests/baselines/reference/destructuringParameterDeclaration3ES6.symbols @@ -8,18 +8,18 @@ type arrayString = Array >arrayString : Symbol(arrayString, Decl(destructuringParameterDeclaration3ES6.ts, 0, 0)) ->Array : Symbol(Array, Decl(lib.d.ts, 1000, 23), Decl(lib.d.ts, 1171, 11), Decl(lib.d.ts, 4091, 1)) ->String : Symbol(String, Decl(lib.d.ts, 275, 1), Decl(lib.d.ts, 443, 11), Decl(lib.d.ts, 4209, 1)) +>Array : Symbol(Array, Decl(lib.d.ts, 1000, 23), Decl(lib.d.ts, 1171, 11), Decl(lib.d.ts, 4118, 1)) +>String : Symbol(String, Decl(lib.d.ts, 275, 1), Decl(lib.d.ts, 443, 11), Decl(lib.d.ts, 4236, 1)) type someArray = Array | number[]; >someArray : Symbol(someArray, Decl(destructuringParameterDeclaration3ES6.ts, 7, 32)) ->Array : Symbol(Array, Decl(lib.d.ts, 1000, 23), Decl(lib.d.ts, 1171, 11), Decl(lib.d.ts, 4091, 1)) ->String : Symbol(String, Decl(lib.d.ts, 275, 1), Decl(lib.d.ts, 443, 11), Decl(lib.d.ts, 4209, 1)) +>Array : Symbol(Array, Decl(lib.d.ts, 1000, 23), Decl(lib.d.ts, 1171, 11), Decl(lib.d.ts, 4118, 1)) +>String : Symbol(String, Decl(lib.d.ts, 275, 1), Decl(lib.d.ts, 443, 11), Decl(lib.d.ts, 4236, 1)) type stringOrNumArray = Array; >stringOrNumArray : Symbol(stringOrNumArray, Decl(destructuringParameterDeclaration3ES6.ts, 8, 42)) ->Array : Symbol(Array, Decl(lib.d.ts, 1000, 23), Decl(lib.d.ts, 1171, 11), Decl(lib.d.ts, 4091, 1)) ->String : Symbol(String, Decl(lib.d.ts, 275, 1), Decl(lib.d.ts, 443, 11), Decl(lib.d.ts, 4209, 1)) +>Array : Symbol(Array, Decl(lib.d.ts, 1000, 23), Decl(lib.d.ts, 1171, 11), Decl(lib.d.ts, 4118, 1)) +>String : Symbol(String, Decl(lib.d.ts, 275, 1), Decl(lib.d.ts, 443, 11), Decl(lib.d.ts, 4236, 1)) >Number : Symbol(Number, Decl(lib.d.ts, 456, 40), Decl(lib.d.ts, 518, 11)) function a1(...x: (number|string)[]) { } @@ -33,8 +33,8 @@ function a2(...a) { } function a3(...a: Array) { } >a3 : Symbol(a3, Decl(destructuringParameterDeclaration3ES6.ts, 12, 21)) >a : Symbol(a, Decl(destructuringParameterDeclaration3ES6.ts, 13, 12)) ->Array : Symbol(Array, Decl(lib.d.ts, 1000, 23), Decl(lib.d.ts, 1171, 11), Decl(lib.d.ts, 4091, 1)) ->String : Symbol(String, Decl(lib.d.ts, 275, 1), Decl(lib.d.ts, 443, 11), Decl(lib.d.ts, 4209, 1)) +>Array : Symbol(Array, Decl(lib.d.ts, 1000, 23), Decl(lib.d.ts, 1171, 11), Decl(lib.d.ts, 4118, 1)) +>String : Symbol(String, Decl(lib.d.ts, 275, 1), Decl(lib.d.ts, 443, 11), Decl(lib.d.ts, 4236, 1)) function a4(...a: arrayString) { } >a4 : Symbol(a4, Decl(destructuringParameterDeclaration3ES6.ts, 13, 36)) diff --git a/tests/baselines/reference/destructuringVariableDeclaration1ES5.types b/tests/baselines/reference/destructuringVariableDeclaration1ES5.types index a0630fee995..f8188147a79 100644 --- a/tests/baselines/reference/destructuringVariableDeclaration1ES5.types +++ b/tests/baselines/reference/destructuringVariableDeclaration1ES5.types @@ -31,7 +31,7 @@ var { b1: { b11 } = { b11: "string" } } = { b1: { b11: "world" } }; >{ b11: "string" } : { b11: string; } >b11 : string >"string" : string ->{ b1: { b11: "world" } } : { b1: { b11: string; }; } +>{ b1: { b11: "world" } } : { b1?: { b11: string; }; } >b1 : { b11: string; } >{ b11: "world" } : { b11: string; } >b11 : string @@ -151,9 +151,9 @@ var {f: [f1, f2, { f3: f4, f5 }, , ]} = { f: [1, 2, { f3: 4, f5: 0 }] }; >f4 : number >f5 : number > : undefined ->{ f: [1, 2, { f3: 4, f5: 0 }] } : { f: [number, number, { f3: number; f5: number; }]; } ->f : [number, number, { f3: number; f5: number; }] ->[1, 2, { f3: 4, f5: 0 }] : [number, number, { f3: number; f5: number; }] +>{ f: [1, 2, { f3: 4, f5: 0 }] } : { f: [number, number, { f3: number; f5: number; }, any]; } +>f : [number, number, { f3: number; f5: number; }, any] +>[1, 2, { f3: 4, f5: 0 }] : [number, number, { f3: number; f5: number; }, any] >1 : number >2 : number >{ f3: 4, f5: 0 } : { f3: number; f5: number; } diff --git a/tests/baselines/reference/destructuringVariableDeclaration1ES6.types b/tests/baselines/reference/destructuringVariableDeclaration1ES6.types index f9faf519b0a..7b4fe5409db 100644 --- a/tests/baselines/reference/destructuringVariableDeclaration1ES6.types +++ b/tests/baselines/reference/destructuringVariableDeclaration1ES6.types @@ -31,7 +31,7 @@ var { b1: { b11 } = { b11: "string" } } = { b1: { b11: "world" } }; >{ b11: "string" } : { b11: string; } >b11 : string >"string" : string ->{ b1: { b11: "world" } } : { b1: { b11: string; }; } +>{ b1: { b11: "world" } } : { b1?: { b11: string; }; } >b1 : { b11: string; } >{ b11: "world" } : { b11: string; } >b11 : string @@ -151,9 +151,9 @@ var {f: [f1, f2, { f3: f4, f5 }, , ]} = { f: [1, 2, { f3: 4, f5: 0 }] }; >f4 : number >f5 : number > : undefined ->{ f: [1, 2, { f3: 4, f5: 0 }] } : { f: [number, number, { f3: number; f5: number; }]; } ->f : [number, number, { f3: number; f5: number; }] ->[1, 2, { f3: 4, f5: 0 }] : [number, number, { f3: number; f5: number; }] +>{ f: [1, 2, { f3: 4, f5: 0 }] } : { f: [number, number, { f3: number; f5: number; }, any]; } +>f : [number, number, { f3: number; f5: number; }, any] +>[1, 2, { f3: 4, f5: 0 }] : [number, number, { f3: number; f5: number; }, any] >1 : number >2 : number >{ f3: 4, f5: 0 } : { f3: number; f5: number; } diff --git a/tests/baselines/reference/destructuringWithGenericParameter.js b/tests/baselines/reference/destructuringWithGenericParameter.js new file mode 100644 index 00000000000..61d523f81fa --- /dev/null +++ b/tests/baselines/reference/destructuringWithGenericParameter.js @@ -0,0 +1,30 @@ +//// [destructuringWithGenericParameter.ts] +class GenericClass { + payload: T; +} + +var genericObject = new GenericClass<{ greeting: string }>(); + +function genericFunction(object: GenericClass, callback: (payload: T) => void) { + callback(object.payload); +} + +genericFunction(genericObject, ({greeting}) => { + var s = greeting.toLocaleLowerCase(); // Greeting should be of type string +}); + + +//// [destructuringWithGenericParameter.js] +var GenericClass = (function () { + function GenericClass() { + } + return GenericClass; +})(); +var genericObject = new GenericClass(); +function genericFunction(object, callback) { + callback(object.payload); +} +genericFunction(genericObject, function (_a) { + var greeting = _a.greeting; + var s = greeting.toLocaleLowerCase(); // Greeting should be of type string +}); diff --git a/tests/baselines/reference/destructuringWithGenericParameter.symbols b/tests/baselines/reference/destructuringWithGenericParameter.symbols new file mode 100644 index 00000000000..941cb0bf237 --- /dev/null +++ b/tests/baselines/reference/destructuringWithGenericParameter.symbols @@ -0,0 +1,45 @@ +=== tests/cases/compiler/destructuringWithGenericParameter.ts === +class GenericClass { +>GenericClass : Symbol(GenericClass, Decl(destructuringWithGenericParameter.ts, 0, 0)) +>T : Symbol(T, Decl(destructuringWithGenericParameter.ts, 0, 19)) + + payload: T; +>payload : Symbol(payload, Decl(destructuringWithGenericParameter.ts, 0, 23)) +>T : Symbol(T, Decl(destructuringWithGenericParameter.ts, 0, 19)) +} + +var genericObject = new GenericClass<{ greeting: string }>(); +>genericObject : Symbol(genericObject, Decl(destructuringWithGenericParameter.ts, 4, 3)) +>GenericClass : Symbol(GenericClass, Decl(destructuringWithGenericParameter.ts, 0, 0)) +>greeting : Symbol(greeting, Decl(destructuringWithGenericParameter.ts, 4, 38)) + +function genericFunction(object: GenericClass, callback: (payload: T) => void) { +>genericFunction : Symbol(genericFunction, Decl(destructuringWithGenericParameter.ts, 4, 61)) +>T : Symbol(T, Decl(destructuringWithGenericParameter.ts, 6, 25)) +>object : Symbol(object, Decl(destructuringWithGenericParameter.ts, 6, 28)) +>GenericClass : Symbol(GenericClass, Decl(destructuringWithGenericParameter.ts, 0, 0)) +>T : Symbol(T, Decl(destructuringWithGenericParameter.ts, 6, 25)) +>callback : Symbol(callback, Decl(destructuringWithGenericParameter.ts, 6, 52)) +>payload : Symbol(payload, Decl(destructuringWithGenericParameter.ts, 6, 64)) +>T : Symbol(T, Decl(destructuringWithGenericParameter.ts, 6, 25)) + + callback(object.payload); +>callback : Symbol(callback, Decl(destructuringWithGenericParameter.ts, 6, 52)) +>object.payload : Symbol(GenericClass.payload, Decl(destructuringWithGenericParameter.ts, 0, 23)) +>object : Symbol(object, Decl(destructuringWithGenericParameter.ts, 6, 28)) +>payload : Symbol(GenericClass.payload, Decl(destructuringWithGenericParameter.ts, 0, 23)) +} + +genericFunction(genericObject, ({greeting}) => { +>genericFunction : Symbol(genericFunction, Decl(destructuringWithGenericParameter.ts, 4, 61)) +>genericObject : Symbol(genericObject, Decl(destructuringWithGenericParameter.ts, 4, 3)) +>greeting : Symbol(greeting, Decl(destructuringWithGenericParameter.ts, 10, 33)) + + var s = greeting.toLocaleLowerCase(); // Greeting should be of type string +>s : Symbol(s, Decl(destructuringWithGenericParameter.ts, 11, 7)) +>greeting.toLocaleLowerCase : Symbol(String.toLocaleLowerCase, Decl(lib.d.ts, 402, 26)) +>greeting : Symbol(greeting, Decl(destructuringWithGenericParameter.ts, 10, 33)) +>toLocaleLowerCase : Symbol(String.toLocaleLowerCase, Decl(lib.d.ts, 402, 26)) + +}); + diff --git a/tests/baselines/reference/destructuringWithGenericParameter.types b/tests/baselines/reference/destructuringWithGenericParameter.types new file mode 100644 index 00000000000..07a86e679a9 --- /dev/null +++ b/tests/baselines/reference/destructuringWithGenericParameter.types @@ -0,0 +1,50 @@ +=== tests/cases/compiler/destructuringWithGenericParameter.ts === +class GenericClass { +>GenericClass : GenericClass +>T : T + + payload: T; +>payload : T +>T : T +} + +var genericObject = new GenericClass<{ greeting: string }>(); +>genericObject : GenericClass<{ greeting: string; }> +>new GenericClass<{ greeting: string }>() : GenericClass<{ greeting: string; }> +>GenericClass : typeof GenericClass +>greeting : string + +function genericFunction(object: GenericClass, callback: (payload: T) => void) { +>genericFunction : (object: GenericClass, callback: (payload: T) => void) => void +>T : T +>object : GenericClass +>GenericClass : GenericClass +>T : T +>callback : (payload: T) => void +>payload : T +>T : T + + callback(object.payload); +>callback(object.payload) : void +>callback : (payload: T) => void +>object.payload : T +>object : GenericClass +>payload : T +} + +genericFunction(genericObject, ({greeting}) => { +>genericFunction(genericObject, ({greeting}) => { var s = greeting.toLocaleLowerCase(); // Greeting should be of type string}) : void +>genericFunction : (object: GenericClass, callback: (payload: T) => void) => void +>genericObject : GenericClass<{ greeting: string; }> +>({greeting}) => { var s = greeting.toLocaleLowerCase(); // Greeting should be of type string} : ({greeting}: { greeting: string; }) => void +>greeting : string + + var s = greeting.toLocaleLowerCase(); // Greeting should be of type string +>s : string +>greeting.toLocaleLowerCase() : string +>greeting.toLocaleLowerCase : () => string +>greeting : string +>toLocaleLowerCase : () => string + +}); + diff --git a/tests/baselines/reference/destructuringWithLiteralInitializers.js b/tests/baselines/reference/destructuringWithLiteralInitializers.js new file mode 100644 index 00000000000..740648b04e8 --- /dev/null +++ b/tests/baselines/reference/destructuringWithLiteralInitializers.js @@ -0,0 +1,147 @@ +//// [destructuringWithLiteralInitializers.ts] +// (arg: { x: any, y: any }) => void +function f1({ x, y }) { } +f1({ x: 1, y: 1 }); + +// (arg: { x: any, y?: number }) => void +function f2({ x, y = 0 }) { } +f2({ x: 1 }); +f2({ x: 1, y: 1 }); + +// (arg: { x?: number, y?: number }) => void +function f3({ x = 0, y = 0 }) { } +f3({}); +f3({ x: 1 }); +f3({ y: 1 }); +f3({ x: 1, y: 1 }); + +// (arg?: { x: number, y: number }) => void +function f4({ x, y } = { x: 0, y: 0 }) { } +f4(); +f4({ x: 1, y: 1 }); + +// (arg?: { x: number, y?: number }) => void +function f5({ x, y = 0 } = { x: 0 }) { } +f5(); +f5({ x: 1 }); +f5({ x: 1, y: 1 }); + +// (arg?: { x?: number, y?: number }) => void +function f6({ x = 0, y = 0 } = {}) { } +f6(); +f6({}); +f6({ x: 1 }); +f6({ y: 1 }); +f6({ x: 1, y: 1 }); + +// (arg?: { a: { x?: number, y?: number } }) => void +function f7({ a: { x = 0, y = 0 } } = { a: {} }) { } +f7(); +f7({ a: {} }); +f7({ a: { x: 1 } }); +f7({ a: { y: 1 } }); +f7({ a: { x: 1, y: 1 } }); + +// (arg: [any, any]) => void +function g1([x, y]) { } +g1([1, 1]); + +// (arg: [number, number]) => void +function g2([x = 0, y = 0]) { } +g2([1, 1]); + +// (arg?: [number, number]) => void +function g3([x, y] = [0, 0]) { } +g3(); +g3([1, 1]); + +// (arg?: [number, number]) => void +function g4([x, y = 0] = [0]) { } +g4(); +g4([1, 1]); + +// (arg?: [number, number]) => void +function g5([x = 0, y = 0] = []) { } +g5(); +g5([1, 1]); + + +//// [destructuringWithLiteralInitializers.js] +// (arg: { x: any, y: any }) => void +function f1(_a) { + var x = _a.x, y = _a.y; +} +f1({ x: 1, y: 1 }); +// (arg: { x: any, y?: number }) => void +function f2(_a) { + var x = _a.x, _b = _a.y, y = _b === void 0 ? 0 : _b; +} +f2({ x: 1 }); +f2({ x: 1, y: 1 }); +// (arg: { x?: number, y?: number }) => void +function f3(_a) { + var _b = _a.x, x = _b === void 0 ? 0 : _b, _c = _a.y, y = _c === void 0 ? 0 : _c; +} +f3({}); +f3({ x: 1 }); +f3({ y: 1 }); +f3({ x: 1, y: 1 }); +// (arg?: { x: number, y: number }) => void +function f4(_a) { + var _b = _a === void 0 ? { x: 0, y: 0 } : _a, x = _b.x, y = _b.y; +} +f4(); +f4({ x: 1, y: 1 }); +// (arg?: { x: number, y?: number }) => void +function f5(_a) { + var _b = _a === void 0 ? { x: 0 } : _a, x = _b.x, _c = _b.y, y = _c === void 0 ? 0 : _c; +} +f5(); +f5({ x: 1 }); +f5({ x: 1, y: 1 }); +// (arg?: { x?: number, y?: number }) => void +function f6(_a) { + var _b = _a === void 0 ? {} : _a, _c = _b.x, x = _c === void 0 ? 0 : _c, _d = _b.y, y = _d === void 0 ? 0 : _d; +} +f6(); +f6({}); +f6({ x: 1 }); +f6({ y: 1 }); +f6({ x: 1, y: 1 }); +// (arg?: { a: { x?: number, y?: number } }) => void +function f7(_a) { + var _b = (_a === void 0 ? { a: {} } : _a).a, _c = _b.x, x = _c === void 0 ? 0 : _c, _d = _b.y, y = _d === void 0 ? 0 : _d; +} +f7(); +f7({ a: {} }); +f7({ a: { x: 1 } }); +f7({ a: { y: 1 } }); +f7({ a: { x: 1, y: 1 } }); +// (arg: [any, any]) => void +function g1(_a) { + var x = _a[0], y = _a[1]; +} +g1([1, 1]); +// (arg: [number, number]) => void +function g2(_a) { + var _b = _a[0], x = _b === void 0 ? 0 : _b, _c = _a[1], y = _c === void 0 ? 0 : _c; +} +g2([1, 1]); +// (arg?: [number, number]) => void +function g3(_a) { + var _b = _a === void 0 ? [0, 0] : _a, x = _b[0], y = _b[1]; +} +g3(); +g3([1, 1]); +// (arg?: [number, number]) => void +function g4(_a) { + var _b = _a === void 0 ? [0] : _a, x = _b[0], _c = _b[1], y = _c === void 0 ? 0 : _c; +} +g4(); +g4([1, 1]); +// (arg?: [number, number]) => void +function g5(_a) { + var _b = _a === void 0 ? [] : _a, _c = _b[0], x = _c === void 0 ? 0 : _c, _d = _b[1], y = _d === void 0 ? 0 : _d; +} +g5(); +g5([1, 1]); diff --git a/tests/baselines/reference/destructuringWithLiteralInitializers.symbols b/tests/baselines/reference/destructuringWithLiteralInitializers.symbols new file mode 100644 index 00000000000..1141fc140c7 --- /dev/null +++ b/tests/baselines/reference/destructuringWithLiteralInitializers.symbols @@ -0,0 +1,194 @@ +=== tests/cases/conformance/es6/destructuring/destructuringWithLiteralInitializers.ts === +// (arg: { x: any, y: any }) => void +function f1({ x, y }) { } +>f1 : Symbol(f1, Decl(destructuringWithLiteralInitializers.ts, 0, 0)) +>x : Symbol(x, Decl(destructuringWithLiteralInitializers.ts, 1, 13)) +>y : Symbol(y, Decl(destructuringWithLiteralInitializers.ts, 1, 16)) + +f1({ x: 1, y: 1 }); +>f1 : Symbol(f1, Decl(destructuringWithLiteralInitializers.ts, 0, 0)) +>x : Symbol(x, Decl(destructuringWithLiteralInitializers.ts, 2, 4)) +>y : Symbol(y, Decl(destructuringWithLiteralInitializers.ts, 2, 10)) + +// (arg: { x: any, y?: number }) => void +function f2({ x, y = 0 }) { } +>f2 : Symbol(f2, Decl(destructuringWithLiteralInitializers.ts, 2, 19)) +>x : Symbol(x, Decl(destructuringWithLiteralInitializers.ts, 5, 13)) +>y : Symbol(y, Decl(destructuringWithLiteralInitializers.ts, 5, 16)) + +f2({ x: 1 }); +>f2 : Symbol(f2, Decl(destructuringWithLiteralInitializers.ts, 2, 19)) +>x : Symbol(x, Decl(destructuringWithLiteralInitializers.ts, 6, 4)) + +f2({ x: 1, y: 1 }); +>f2 : Symbol(f2, Decl(destructuringWithLiteralInitializers.ts, 2, 19)) +>x : Symbol(x, Decl(destructuringWithLiteralInitializers.ts, 7, 4)) +>y : Symbol(y, Decl(destructuringWithLiteralInitializers.ts, 7, 10)) + +// (arg: { x?: number, y?: number }) => void +function f3({ x = 0, y = 0 }) { } +>f3 : Symbol(f3, Decl(destructuringWithLiteralInitializers.ts, 7, 19)) +>x : Symbol(x, Decl(destructuringWithLiteralInitializers.ts, 10, 13)) +>y : Symbol(y, Decl(destructuringWithLiteralInitializers.ts, 10, 20)) + +f3({}); +>f3 : Symbol(f3, Decl(destructuringWithLiteralInitializers.ts, 7, 19)) + +f3({ x: 1 }); +>f3 : Symbol(f3, Decl(destructuringWithLiteralInitializers.ts, 7, 19)) +>x : Symbol(x, Decl(destructuringWithLiteralInitializers.ts, 12, 4)) + +f3({ y: 1 }); +>f3 : Symbol(f3, Decl(destructuringWithLiteralInitializers.ts, 7, 19)) +>y : Symbol(y, Decl(destructuringWithLiteralInitializers.ts, 13, 4)) + +f3({ x: 1, y: 1 }); +>f3 : Symbol(f3, Decl(destructuringWithLiteralInitializers.ts, 7, 19)) +>x : Symbol(x, Decl(destructuringWithLiteralInitializers.ts, 14, 4)) +>y : Symbol(y, Decl(destructuringWithLiteralInitializers.ts, 14, 10)) + +// (arg?: { x: number, y: number }) => void +function f4({ x, y } = { x: 0, y: 0 }) { } +>f4 : Symbol(f4, Decl(destructuringWithLiteralInitializers.ts, 14, 19)) +>x : Symbol(x, Decl(destructuringWithLiteralInitializers.ts, 17, 13)) +>y : Symbol(y, Decl(destructuringWithLiteralInitializers.ts, 17, 16)) +>x : Symbol(x, Decl(destructuringWithLiteralInitializers.ts, 17, 24)) +>y : Symbol(y, Decl(destructuringWithLiteralInitializers.ts, 17, 30)) + +f4(); +>f4 : Symbol(f4, Decl(destructuringWithLiteralInitializers.ts, 14, 19)) + +f4({ x: 1, y: 1 }); +>f4 : Symbol(f4, Decl(destructuringWithLiteralInitializers.ts, 14, 19)) +>x : Symbol(x, Decl(destructuringWithLiteralInitializers.ts, 19, 4)) +>y : Symbol(y, Decl(destructuringWithLiteralInitializers.ts, 19, 10)) + +// (arg?: { x: number, y?: number }) => void +function f5({ x, y = 0 } = { x: 0 }) { } +>f5 : Symbol(f5, Decl(destructuringWithLiteralInitializers.ts, 19, 19)) +>x : Symbol(x, Decl(destructuringWithLiteralInitializers.ts, 22, 13)) +>y : Symbol(y, Decl(destructuringWithLiteralInitializers.ts, 22, 16)) +>x : Symbol(x, Decl(destructuringWithLiteralInitializers.ts, 22, 28)) + +f5(); +>f5 : Symbol(f5, Decl(destructuringWithLiteralInitializers.ts, 19, 19)) + +f5({ x: 1 }); +>f5 : Symbol(f5, Decl(destructuringWithLiteralInitializers.ts, 19, 19)) +>x : Symbol(x, Decl(destructuringWithLiteralInitializers.ts, 24, 4)) + +f5({ x: 1, y: 1 }); +>f5 : Symbol(f5, Decl(destructuringWithLiteralInitializers.ts, 19, 19)) +>x : Symbol(x, Decl(destructuringWithLiteralInitializers.ts, 25, 4)) +>y : Symbol(y, Decl(destructuringWithLiteralInitializers.ts, 25, 10)) + +// (arg?: { x?: number, y?: number }) => void +function f6({ x = 0, y = 0 } = {}) { } +>f6 : Symbol(f6, Decl(destructuringWithLiteralInitializers.ts, 25, 19)) +>x : Symbol(x, Decl(destructuringWithLiteralInitializers.ts, 28, 13)) +>y : Symbol(y, Decl(destructuringWithLiteralInitializers.ts, 28, 20)) + +f6(); +>f6 : Symbol(f6, Decl(destructuringWithLiteralInitializers.ts, 25, 19)) + +f6({}); +>f6 : Symbol(f6, Decl(destructuringWithLiteralInitializers.ts, 25, 19)) + +f6({ x: 1 }); +>f6 : Symbol(f6, Decl(destructuringWithLiteralInitializers.ts, 25, 19)) +>x : Symbol(x, Decl(destructuringWithLiteralInitializers.ts, 31, 4)) + +f6({ y: 1 }); +>f6 : Symbol(f6, Decl(destructuringWithLiteralInitializers.ts, 25, 19)) +>y : Symbol(y, Decl(destructuringWithLiteralInitializers.ts, 32, 4)) + +f6({ x: 1, y: 1 }); +>f6 : Symbol(f6, Decl(destructuringWithLiteralInitializers.ts, 25, 19)) +>x : Symbol(x, Decl(destructuringWithLiteralInitializers.ts, 33, 4)) +>y : Symbol(y, Decl(destructuringWithLiteralInitializers.ts, 33, 10)) + +// (arg?: { a: { x?: number, y?: number } }) => void +function f7({ a: { x = 0, y = 0 } } = { a: {} }) { } +>f7 : Symbol(f7, Decl(destructuringWithLiteralInitializers.ts, 33, 19)) +>a : Symbol(a, Decl(destructuringWithLiteralInitializers.ts, 36, 39)) +>x : Symbol(x, Decl(destructuringWithLiteralInitializers.ts, 36, 18)) +>y : Symbol(y, Decl(destructuringWithLiteralInitializers.ts, 36, 25)) +>a : Symbol(a, Decl(destructuringWithLiteralInitializers.ts, 36, 39)) + +f7(); +>f7 : Symbol(f7, Decl(destructuringWithLiteralInitializers.ts, 33, 19)) + +f7({ a: {} }); +>f7 : Symbol(f7, Decl(destructuringWithLiteralInitializers.ts, 33, 19)) +>a : Symbol(a, Decl(destructuringWithLiteralInitializers.ts, 38, 4)) + +f7({ a: { x: 1 } }); +>f7 : Symbol(f7, Decl(destructuringWithLiteralInitializers.ts, 33, 19)) +>a : Symbol(a, Decl(destructuringWithLiteralInitializers.ts, 39, 4)) +>x : Symbol(x, Decl(destructuringWithLiteralInitializers.ts, 39, 9)) + +f7({ a: { y: 1 } }); +>f7 : Symbol(f7, Decl(destructuringWithLiteralInitializers.ts, 33, 19)) +>a : Symbol(a, Decl(destructuringWithLiteralInitializers.ts, 40, 4)) +>y : Symbol(y, Decl(destructuringWithLiteralInitializers.ts, 40, 9)) + +f7({ a: { x: 1, y: 1 } }); +>f7 : Symbol(f7, Decl(destructuringWithLiteralInitializers.ts, 33, 19)) +>a : Symbol(a, Decl(destructuringWithLiteralInitializers.ts, 41, 4)) +>x : Symbol(x, Decl(destructuringWithLiteralInitializers.ts, 41, 9)) +>y : Symbol(y, Decl(destructuringWithLiteralInitializers.ts, 41, 15)) + +// (arg: [any, any]) => void +function g1([x, y]) { } +>g1 : Symbol(g1, Decl(destructuringWithLiteralInitializers.ts, 41, 26)) +>x : Symbol(x, Decl(destructuringWithLiteralInitializers.ts, 44, 13)) +>y : Symbol(y, Decl(destructuringWithLiteralInitializers.ts, 44, 15)) + +g1([1, 1]); +>g1 : Symbol(g1, Decl(destructuringWithLiteralInitializers.ts, 41, 26)) + +// (arg: [number, number]) => void +function g2([x = 0, y = 0]) { } +>g2 : Symbol(g2, Decl(destructuringWithLiteralInitializers.ts, 45, 11)) +>x : Symbol(x, Decl(destructuringWithLiteralInitializers.ts, 48, 13)) +>y : Symbol(y, Decl(destructuringWithLiteralInitializers.ts, 48, 19)) + +g2([1, 1]); +>g2 : Symbol(g2, Decl(destructuringWithLiteralInitializers.ts, 45, 11)) + +// (arg?: [number, number]) => void +function g3([x, y] = [0, 0]) { } +>g3 : Symbol(g3, Decl(destructuringWithLiteralInitializers.ts, 49, 11)) +>x : Symbol(x, Decl(destructuringWithLiteralInitializers.ts, 52, 13)) +>y : Symbol(y, Decl(destructuringWithLiteralInitializers.ts, 52, 15)) + +g3(); +>g3 : Symbol(g3, Decl(destructuringWithLiteralInitializers.ts, 49, 11)) + +g3([1, 1]); +>g3 : Symbol(g3, Decl(destructuringWithLiteralInitializers.ts, 49, 11)) + +// (arg?: [number, number]) => void +function g4([x, y = 0] = [0]) { } +>g4 : Symbol(g4, Decl(destructuringWithLiteralInitializers.ts, 54, 11)) +>x : Symbol(x, Decl(destructuringWithLiteralInitializers.ts, 57, 13)) +>y : Symbol(y, Decl(destructuringWithLiteralInitializers.ts, 57, 15)) + +g4(); +>g4 : Symbol(g4, Decl(destructuringWithLiteralInitializers.ts, 54, 11)) + +g4([1, 1]); +>g4 : Symbol(g4, Decl(destructuringWithLiteralInitializers.ts, 54, 11)) + +// (arg?: [number, number]) => void +function g5([x = 0, y = 0] = []) { } +>g5 : Symbol(g5, Decl(destructuringWithLiteralInitializers.ts, 59, 11)) +>x : Symbol(x, Decl(destructuringWithLiteralInitializers.ts, 62, 13)) +>y : Symbol(y, Decl(destructuringWithLiteralInitializers.ts, 62, 19)) + +g5(); +>g5 : Symbol(g5, Decl(destructuringWithLiteralInitializers.ts, 59, 11)) + +g5([1, 1]); +>g5 : Symbol(g5, Decl(destructuringWithLiteralInitializers.ts, 59, 11)) + diff --git a/tests/baselines/reference/destructuringWithLiteralInitializers.types b/tests/baselines/reference/destructuringWithLiteralInitializers.types new file mode 100644 index 00000000000..da1e4bfd6f3 --- /dev/null +++ b/tests/baselines/reference/destructuringWithLiteralInitializers.types @@ -0,0 +1,310 @@ +=== tests/cases/conformance/es6/destructuring/destructuringWithLiteralInitializers.ts === +// (arg: { x: any, y: any }) => void +function f1({ x, y }) { } +>f1 : ({ x, y }: { x: any; y: any; }) => void +>x : any +>y : any + +f1({ x: 1, y: 1 }); +>f1({ x: 1, y: 1 }) : void +>f1 : ({ x, y }: { x: any; y: any; }) => void +>{ x: 1, y: 1 } : { x: number; y: number; } +>x : number +>1 : number +>y : number +>1 : number + +// (arg: { x: any, y?: number }) => void +function f2({ x, y = 0 }) { } +>f2 : ({ x, y = 0 }: { x: any; y?: number; }) => void +>x : any +>y : number +>0 : number + +f2({ x: 1 }); +>f2({ x: 1 }) : void +>f2 : ({ x, y = 0 }: { x: any; y?: number; }) => void +>{ x: 1 } : { x: number; } +>x : number +>1 : number + +f2({ x: 1, y: 1 }); +>f2({ x: 1, y: 1 }) : void +>f2 : ({ x, y = 0 }: { x: any; y?: number; }) => void +>{ x: 1, y: 1 } : { x: number; y: number; } +>x : number +>1 : number +>y : number +>1 : number + +// (arg: { x?: number, y?: number }) => void +function f3({ x = 0, y = 0 }) { } +>f3 : ({ x = 0, y = 0 }: { x?: number; y?: number; }) => void +>x : number +>0 : number +>y : number +>0 : number + +f3({}); +>f3({}) : void +>f3 : ({ x = 0, y = 0 }: { x?: number; y?: number; }) => void +>{} : {} + +f3({ x: 1 }); +>f3({ x: 1 }) : void +>f3 : ({ x = 0, y = 0 }: { x?: number; y?: number; }) => void +>{ x: 1 } : { x: number; } +>x : number +>1 : number + +f3({ y: 1 }); +>f3({ y: 1 }) : void +>f3 : ({ x = 0, y = 0 }: { x?: number; y?: number; }) => void +>{ y: 1 } : { y: number; } +>y : number +>1 : number + +f3({ x: 1, y: 1 }); +>f3({ x: 1, y: 1 }) : void +>f3 : ({ x = 0, y = 0 }: { x?: number; y?: number; }) => void +>{ x: 1, y: 1 } : { x: number; y: number; } +>x : number +>1 : number +>y : number +>1 : number + +// (arg?: { x: number, y: number }) => void +function f4({ x, y } = { x: 0, y: 0 }) { } +>f4 : ({ x, y }?: { x: number; y: number; }) => void +>x : number +>y : number +>{ x: 0, y: 0 } : { x: number; y: number; } +>x : number +>0 : number +>y : number +>0 : number + +f4(); +>f4() : void +>f4 : ({ x, y }?: { x: number; y: number; }) => void + +f4({ x: 1, y: 1 }); +>f4({ x: 1, y: 1 }) : void +>f4 : ({ x, y }?: { x: number; y: number; }) => void +>{ x: 1, y: 1 } : { x: number; y: number; } +>x : number +>1 : number +>y : number +>1 : number + +// (arg?: { x: number, y?: number }) => void +function f5({ x, y = 0 } = { x: 0 }) { } +>f5 : ({ x, y = 0 }?: { x: number; y?: number; }) => void +>x : number +>y : number +>0 : number +>{ x: 0 } : { x: number; y?: number; } +>x : number +>0 : number + +f5(); +>f5() : void +>f5 : ({ x, y = 0 }?: { x: number; y?: number; }) => void + +f5({ x: 1 }); +>f5({ x: 1 }) : void +>f5 : ({ x, y = 0 }?: { x: number; y?: number; }) => void +>{ x: 1 } : { x: number; } +>x : number +>1 : number + +f5({ x: 1, y: 1 }); +>f5({ x: 1, y: 1 }) : void +>f5 : ({ x, y = 0 }?: { x: number; y?: number; }) => void +>{ x: 1, y: 1 } : { x: number; y: number; } +>x : number +>1 : number +>y : number +>1 : number + +// (arg?: { x?: number, y?: number }) => void +function f6({ x = 0, y = 0 } = {}) { } +>f6 : ({ x = 0, y = 0 }?: { x?: number; y?: number; }) => void +>x : number +>0 : number +>y : number +>0 : number +>{} : { x?: number; y?: number; } + +f6(); +>f6() : void +>f6 : ({ x = 0, y = 0 }?: { x?: number; y?: number; }) => void + +f6({}); +>f6({}) : void +>f6 : ({ x = 0, y = 0 }?: { x?: number; y?: number; }) => void +>{} : {} + +f6({ x: 1 }); +>f6({ x: 1 }) : void +>f6 : ({ x = 0, y = 0 }?: { x?: number; y?: number; }) => void +>{ x: 1 } : { x: number; } +>x : number +>1 : number + +f6({ y: 1 }); +>f6({ y: 1 }) : void +>f6 : ({ x = 0, y = 0 }?: { x?: number; y?: number; }) => void +>{ y: 1 } : { y: number; } +>y : number +>1 : number + +f6({ x: 1, y: 1 }); +>f6({ x: 1, y: 1 }) : void +>f6 : ({ x = 0, y = 0 }?: { x?: number; y?: number; }) => void +>{ x: 1, y: 1 } : { x: number; y: number; } +>x : number +>1 : number +>y : number +>1 : number + +// (arg?: { a: { x?: number, y?: number } }) => void +function f7({ a: { x = 0, y = 0 } } = { a: {} }) { } +>f7 : ({ a: { x = 0, y = 0 } }?: { a: { x?: number; y?: number; }; }) => void +>a : any +>x : number +>0 : number +>y : number +>0 : number +>{ a: {} } : { a: { x?: number; y?: number; }; } +>a : { x?: number; y?: number; } +>{} : { x?: number; y?: number; } + +f7(); +>f7() : void +>f7 : ({ a: { x = 0, y = 0 } }?: { a: { x?: number; y?: number; }; }) => void + +f7({ a: {} }); +>f7({ a: {} }) : void +>f7 : ({ a: { x = 0, y = 0 } }?: { a: { x?: number; y?: number; }; }) => void +>{ a: {} } : { a: {}; } +>a : {} +>{} : {} + +f7({ a: { x: 1 } }); +>f7({ a: { x: 1 } }) : void +>f7 : ({ a: { x = 0, y = 0 } }?: { a: { x?: number; y?: number; }; }) => void +>{ a: { x: 1 } } : { a: { x: number; }; } +>a : { x: number; } +>{ x: 1 } : { x: number; } +>x : number +>1 : number + +f7({ a: { y: 1 } }); +>f7({ a: { y: 1 } }) : void +>f7 : ({ a: { x = 0, y = 0 } }?: { a: { x?: number; y?: number; }; }) => void +>{ a: { y: 1 } } : { a: { y: number; }; } +>a : { y: number; } +>{ y: 1 } : { y: number; } +>y : number +>1 : number + +f7({ a: { x: 1, y: 1 } }); +>f7({ a: { x: 1, y: 1 } }) : void +>f7 : ({ a: { x = 0, y = 0 } }?: { a: { x?: number; y?: number; }; }) => void +>{ a: { x: 1, y: 1 } } : { a: { x: number; y: number; }; } +>a : { x: number; y: number; } +>{ x: 1, y: 1 } : { x: number; y: number; } +>x : number +>1 : number +>y : number +>1 : number + +// (arg: [any, any]) => void +function g1([x, y]) { } +>g1 : ([x, y]: [any, any]) => void +>x : any +>y : any + +g1([1, 1]); +>g1([1, 1]) : void +>g1 : ([x, y]: [any, any]) => void +>[1, 1] : [number, number] +>1 : number +>1 : number + +// (arg: [number, number]) => void +function g2([x = 0, y = 0]) { } +>g2 : ([x = 0, y = 0]: [number, number]) => void +>x : number +>0 : number +>y : number +>0 : number + +g2([1, 1]); +>g2([1, 1]) : void +>g2 : ([x = 0, y = 0]: [number, number]) => void +>[1, 1] : [number, number] +>1 : number +>1 : number + +// (arg?: [number, number]) => void +function g3([x, y] = [0, 0]) { } +>g3 : ([x, y]?: [number, number]) => void +>x : number +>y : number +>[0, 0] : [number, number] +>0 : number +>0 : number + +g3(); +>g3() : void +>g3 : ([x, y]?: [number, number]) => void + +g3([1, 1]); +>g3([1, 1]) : void +>g3 : ([x, y]?: [number, number]) => void +>[1, 1] : [number, number] +>1 : number +>1 : number + +// (arg?: [number, number]) => void +function g4([x, y = 0] = [0]) { } +>g4 : ([x, y = 0]?: [number, number]) => void +>x : number +>y : number +>0 : number +>[0] : [number, number] +>0 : number + +g4(); +>g4() : void +>g4 : ([x, y = 0]?: [number, number]) => void + +g4([1, 1]); +>g4([1, 1]) : void +>g4 : ([x, y = 0]?: [number, number]) => void +>[1, 1] : [number, number] +>1 : number +>1 : number + +// (arg?: [number, number]) => void +function g5([x = 0, y = 0] = []) { } +>g5 : ([x = 0, y = 0]?: [number, number]) => void +>x : number +>0 : number +>y : number +>0 : number +>[] : [number, number] + +g5(); +>g5() : void +>g5 : ([x = 0, y = 0]?: [number, number]) => void + +g5([1, 1]); +>g5([1, 1]) : void +>g5 : ([x = 0, y = 0]?: [number, number]) => void +>[1, 1] : [number, number] +>1 : number +>1 : number + diff --git a/tests/baselines/reference/detachedCommentAtStartOfConstructor1.types b/tests/baselines/reference/detachedCommentAtStartOfConstructor1.types index 392821de751..7cbae62f83d 100644 --- a/tests/baselines/reference/detachedCommentAtStartOfConstructor1.types +++ b/tests/baselines/reference/detachedCommentAtStartOfConstructor1.types @@ -19,13 +19,13 @@ class TestFile { >message + this.name : string >message : string >this.name : any ->this : TestFile +>this : this >name : any this.message = getMessage(); >this.message = getMessage() : string >this.message : string ->this : TestFile +>this : this >message : string >getMessage() : string >getMessage : () => string diff --git a/tests/baselines/reference/detachedCommentAtStartOfConstructor2.types b/tests/baselines/reference/detachedCommentAtStartOfConstructor2.types index b413cd557a5..830be456e9a 100644 --- a/tests/baselines/reference/detachedCommentAtStartOfConstructor2.types +++ b/tests/baselines/reference/detachedCommentAtStartOfConstructor2.types @@ -20,13 +20,13 @@ class TestFile { >message + this.name : string >message : string >this.name : string ->this : TestFile +>this : this >name : string this.message = getMessage(); >this.message = getMessage() : string >this.message : string ->this : TestFile +>this : this >message : string >getMessage() : string >getMessage : () => string diff --git a/tests/baselines/reference/detachedCommentAtStartOfLambdaFunction1.types b/tests/baselines/reference/detachedCommentAtStartOfLambdaFunction1.types index 016a123c5c1..e05a4c083cb 100644 --- a/tests/baselines/reference/detachedCommentAtStartOfLambdaFunction1.types +++ b/tests/baselines/reference/detachedCommentAtStartOfLambdaFunction1.types @@ -20,7 +20,7 @@ class TestFile { >message + this.name : string >message : string >this.name : string ->this : TestFile +>this : this >name : string } } diff --git a/tests/baselines/reference/detachedCommentAtStartOfLambdaFunction2.types b/tests/baselines/reference/detachedCommentAtStartOfLambdaFunction2.types index 2199a4490b5..8dde223dad0 100644 --- a/tests/baselines/reference/detachedCommentAtStartOfLambdaFunction2.types +++ b/tests/baselines/reference/detachedCommentAtStartOfLambdaFunction2.types @@ -21,7 +21,7 @@ class TestFile { >message + this.name : string >message : string >this.name : string ->this : TestFile +>this : this >name : string } } diff --git a/tests/baselines/reference/doNotEmitDetachedComments.js b/tests/baselines/reference/doNotEmitDetachedComments.js new file mode 100644 index 00000000000..74acb537fa8 --- /dev/null +++ b/tests/baselines/reference/doNotEmitDetachedComments.js @@ -0,0 +1,33 @@ +//// [doNotEmitDetachedComments.ts] +/* + + multi line + comment +*/ + +var x = 10; + +// Single Line comment + +function foo() { } + + +/* + multi-line comment + +*/ + + +//======================== + + +function bar() { } + + +//======================== + + +//// [doNotEmitDetachedComments.js] +var x = 10; +function foo() { } +function bar() { } diff --git a/tests/baselines/reference/doNotEmitDetachedComments.symbols b/tests/baselines/reference/doNotEmitDetachedComments.symbols new file mode 100644 index 00000000000..c718da7bb9a --- /dev/null +++ b/tests/baselines/reference/doNotEmitDetachedComments.symbols @@ -0,0 +1,31 @@ +=== tests/cases/compiler/doNotEmitDetachedComments.ts === +/* + + multi line + comment +*/ + +var x = 10; +>x : Symbol(x, Decl(doNotEmitDetachedComments.ts, 6, 3)) + +// Single Line comment + +function foo() { } +>foo : Symbol(foo, Decl(doNotEmitDetachedComments.ts, 6, 11)) + + +/* + multi-line comment + +*/ + + +//======================== + + +function bar() { } +>bar : Symbol(bar, Decl(doNotEmitDetachedComments.ts, 10, 18)) + + +//======================== + diff --git a/tests/baselines/reference/doNotEmitDetachedComments.types b/tests/baselines/reference/doNotEmitDetachedComments.types new file mode 100644 index 00000000000..d9b5f0634c2 --- /dev/null +++ b/tests/baselines/reference/doNotEmitDetachedComments.types @@ -0,0 +1,32 @@ +=== tests/cases/compiler/doNotEmitDetachedComments.ts === +/* + + multi line + comment +*/ + +var x = 10; +>x : number +>10 : number + +// Single Line comment + +function foo() { } +>foo : () => void + + +/* + multi-line comment + +*/ + + +//======================== + + +function bar() { } +>bar : () => void + + +//======================== + diff --git a/tests/baselines/reference/doNotEmitDetachedCommentsAtStartOfConstructor.js b/tests/baselines/reference/doNotEmitDetachedCommentsAtStartOfConstructor.js new file mode 100644 index 00000000000..ba6dbf8b743 --- /dev/null +++ b/tests/baselines/reference/doNotEmitDetachedCommentsAtStartOfConstructor.js @@ -0,0 +1,64 @@ +//// [doNotEmitDetachedCommentsAtStartOfConstructor.ts] +class A { + constructor() { + // Single Line Comment + + var x = 10; + } +} + +class B { + constructor() { + /* + Multi-line comment + */ + + var y = 10; + } +} + +class C { + constructor() { + // Single Line Comment with more than one blank line + + + var x = 10; + } +} + +class D { + constructor() { + /* + Multi-line comment with more than one blank line + */ + + + var y = 10; + } +} + +//// [doNotEmitDetachedCommentsAtStartOfConstructor.js] +var A = (function () { + function A() { + var x = 10; + } + return A; +})(); +var B = (function () { + function B() { + var y = 10; + } + return B; +})(); +var C = (function () { + function C() { + var x = 10; + } + return C; +})(); +var D = (function () { + function D() { + var y = 10; + } + return D; +})(); diff --git a/tests/baselines/reference/doNotEmitDetachedCommentsAtStartOfConstructor.symbols b/tests/baselines/reference/doNotEmitDetachedCommentsAtStartOfConstructor.symbols new file mode 100644 index 00000000000..d7c4f5b2ca9 --- /dev/null +++ b/tests/baselines/reference/doNotEmitDetachedCommentsAtStartOfConstructor.symbols @@ -0,0 +1,50 @@ +=== tests/cases/compiler/doNotEmitDetachedCommentsAtStartOfConstructor.ts === +class A { +>A : Symbol(A, Decl(doNotEmitDetachedCommentsAtStartOfConstructor.ts, 0, 0)) + + constructor() { + // Single Line Comment + + var x = 10; +>x : Symbol(x, Decl(doNotEmitDetachedCommentsAtStartOfConstructor.ts, 4, 11)) + } +} + +class B { +>B : Symbol(B, Decl(doNotEmitDetachedCommentsAtStartOfConstructor.ts, 6, 1)) + + constructor() { + /* + Multi-line comment + */ + + var y = 10; +>y : Symbol(y, Decl(doNotEmitDetachedCommentsAtStartOfConstructor.ts, 14, 11)) + } +} + +class C { +>C : Symbol(C, Decl(doNotEmitDetachedCommentsAtStartOfConstructor.ts, 16, 1)) + + constructor() { + // Single Line Comment with more than one blank line + + + var x = 10; +>x : Symbol(x, Decl(doNotEmitDetachedCommentsAtStartOfConstructor.ts, 23, 11)) + } +} + +class D { +>D : Symbol(D, Decl(doNotEmitDetachedCommentsAtStartOfConstructor.ts, 25, 1)) + + constructor() { + /* + Multi-line comment with more than one blank line + */ + + + var y = 10; +>y : Symbol(y, Decl(doNotEmitDetachedCommentsAtStartOfConstructor.ts, 34, 11)) + } +} diff --git a/tests/baselines/reference/doNotEmitDetachedCommentsAtStartOfConstructor.types b/tests/baselines/reference/doNotEmitDetachedCommentsAtStartOfConstructor.types new file mode 100644 index 00000000000..c316c6403c0 --- /dev/null +++ b/tests/baselines/reference/doNotEmitDetachedCommentsAtStartOfConstructor.types @@ -0,0 +1,54 @@ +=== tests/cases/compiler/doNotEmitDetachedCommentsAtStartOfConstructor.ts === +class A { +>A : A + + constructor() { + // Single Line Comment + + var x = 10; +>x : number +>10 : number + } +} + +class B { +>B : B + + constructor() { + /* + Multi-line comment + */ + + var y = 10; +>y : number +>10 : number + } +} + +class C { +>C : C + + constructor() { + // Single Line Comment with more than one blank line + + + var x = 10; +>x : number +>10 : number + } +} + +class D { +>D : D + + constructor() { + /* + Multi-line comment with more than one blank line + */ + + + var y = 10; +>y : number +>10 : number + } +} diff --git a/tests/baselines/reference/doNotEmitDetachedCommentsAtStartOfFunctionBody.js b/tests/baselines/reference/doNotEmitDetachedCommentsAtStartOfFunctionBody.js new file mode 100644 index 00000000000..dbd0f0be783 --- /dev/null +++ b/tests/baselines/reference/doNotEmitDetachedCommentsAtStartOfFunctionBody.js @@ -0,0 +1,48 @@ +//// [doNotEmitDetachedCommentsAtStartOfFunctionBody.ts] +function foo1() { + // Single line comment + + return 42; +} + +function foo2() { + /* + + multi line + comment + */ + + return 42; +} + +function foo3() { + // Single line comment with more than one blank line + + + return 42; +} + +function foo4() { + /* + + multi line comment with more than one blank line + */ + + return 42; +} + + + +//// [doNotEmitDetachedCommentsAtStartOfFunctionBody.js] +function foo1() { + return 42; +} +function foo2() { + return 42; +} +function foo3() { + return 42; +} +function foo4() { + return 42; +} diff --git a/tests/baselines/reference/doNotEmitDetachedCommentsAtStartOfFunctionBody.symbols b/tests/baselines/reference/doNotEmitDetachedCommentsAtStartOfFunctionBody.symbols new file mode 100644 index 00000000000..c1680100369 --- /dev/null +++ b/tests/baselines/reference/doNotEmitDetachedCommentsAtStartOfFunctionBody.symbols @@ -0,0 +1,42 @@ +=== tests/cases/compiler/doNotEmitDetachedCommentsAtStartOfFunctionBody.ts === +function foo1() { +>foo1 : Symbol(foo1, Decl(doNotEmitDetachedCommentsAtStartOfFunctionBody.ts, 0, 0)) + + // Single line comment + + return 42; +} + +function foo2() { +>foo2 : Symbol(foo2, Decl(doNotEmitDetachedCommentsAtStartOfFunctionBody.ts, 4, 1)) + + /* + + multi line + comment + */ + + return 42; +} + +function foo3() { +>foo3 : Symbol(foo3, Decl(doNotEmitDetachedCommentsAtStartOfFunctionBody.ts, 14, 1)) + + // Single line comment with more than one blank line + + + return 42; +} + +function foo4() { +>foo4 : Symbol(foo4, Decl(doNotEmitDetachedCommentsAtStartOfFunctionBody.ts, 21, 1)) + + /* + + multi line comment with more than one blank line + */ + + return 42; +} + + diff --git a/tests/baselines/reference/doNotEmitDetachedCommentsAtStartOfFunctionBody.types b/tests/baselines/reference/doNotEmitDetachedCommentsAtStartOfFunctionBody.types new file mode 100644 index 00000000000..3b4814bbbb2 --- /dev/null +++ b/tests/baselines/reference/doNotEmitDetachedCommentsAtStartOfFunctionBody.types @@ -0,0 +1,46 @@ +=== tests/cases/compiler/doNotEmitDetachedCommentsAtStartOfFunctionBody.ts === +function foo1() { +>foo1 : () => number + + // Single line comment + + return 42; +>42 : number +} + +function foo2() { +>foo2 : () => number + + /* + + multi line + comment + */ + + return 42; +>42 : number +} + +function foo3() { +>foo3 : () => number + + // Single line comment with more than one blank line + + + return 42; +>42 : number +} + +function foo4() { +>foo4 : () => number + + /* + + multi line comment with more than one blank line + */ + + return 42; +>42 : number +} + + diff --git a/tests/baselines/reference/doNotEmitDetachedCommentsAtStartOfLambdaFunction.js b/tests/baselines/reference/doNotEmitDetachedCommentsAtStartOfLambdaFunction.js new file mode 100644 index 00000000000..7fd5c2b8f8e --- /dev/null +++ b/tests/baselines/reference/doNotEmitDetachedCommentsAtStartOfLambdaFunction.js @@ -0,0 +1,45 @@ +//// [doNotEmitDetachedCommentsAtStartOfLambdaFunction.ts] +() => { + // Single line comment + + return 0; +} + +() => { + /* + multi-line comment + */ + + return 0; +} + +() => { + // Single line comment with more than one blank line + + + return 0; +} + +() => { + /* + multi-line comment with more than one blank line + */ + + + return 0; +} + + +//// [doNotEmitDetachedCommentsAtStartOfLambdaFunction.js] +(function () { + return 0; +}); +(function () { + return 0; +}); +(function () { + return 0; +}); +(function () { + return 0; +}); diff --git a/tests/baselines/reference/doNotEmitDetachedCommentsAtStartOfLambdaFunction.symbols b/tests/baselines/reference/doNotEmitDetachedCommentsAtStartOfLambdaFunction.symbols new file mode 100644 index 00000000000..e57fc793920 --- /dev/null +++ b/tests/baselines/reference/doNotEmitDetachedCommentsAtStartOfLambdaFunction.symbols @@ -0,0 +1,32 @@ +=== tests/cases/compiler/doNotEmitDetachedCommentsAtStartOfLambdaFunction.ts === +() => { +No type information for this code. // Single line comment +No type information for this code. +No type information for this code. return 0; +No type information for this code.} +No type information for this code. +No type information for this code.() => { +No type information for this code. /* +No type information for this code. multi-line comment +No type information for this code. */ +No type information for this code. +No type information for this code. return 0; +No type information for this code.} +No type information for this code. +No type information for this code.() => { +No type information for this code. // Single line comment with more than one blank line +No type information for this code. +No type information for this code. +No type information for this code. return 0; +No type information for this code.} +No type information for this code. +No type information for this code.() => { +No type information for this code. /* +No type information for this code. multi-line comment with more than one blank line +No type information for this code. */ +No type information for this code. +No type information for this code. +No type information for this code. return 0; +No type information for this code.} +No type information for this code. +No type information for this code. \ No newline at end of file diff --git a/tests/baselines/reference/doNotEmitDetachedCommentsAtStartOfLambdaFunction.types b/tests/baselines/reference/doNotEmitDetachedCommentsAtStartOfLambdaFunction.types new file mode 100644 index 00000000000..d90e93d84c5 --- /dev/null +++ b/tests/baselines/reference/doNotEmitDetachedCommentsAtStartOfLambdaFunction.types @@ -0,0 +1,43 @@ +=== tests/cases/compiler/doNotEmitDetachedCommentsAtStartOfLambdaFunction.ts === +() => { +>() => { // Single line comment return 0;} : () => number + + // Single line comment + + return 0; +>0 : number +} + +() => { +>() => { /* multi-line comment */ return 0;} : () => number + + /* + multi-line comment + */ + + return 0; +>0 : number +} + +() => { +>() => { // Single line comment with more than one blank line return 0;} : () => number + + // Single line comment with more than one blank line + + + return 0; +>0 : number +} + +() => { +>() => { /* multi-line comment with more than one blank line */ return 0;} : () => number + + /* + multi-line comment with more than one blank line + */ + + + return 0; +>0 : number +} + diff --git a/tests/baselines/reference/doNotEmitPinnedCommentNotOnTopOfFile.js b/tests/baselines/reference/doNotEmitPinnedCommentNotOnTopOfFile.js new file mode 100644 index 00000000000..8232ad66ef5 --- /dev/null +++ b/tests/baselines/reference/doNotEmitPinnedCommentNotOnTopOfFile.js @@ -0,0 +1,14 @@ +//// [doNotEmitPinnedCommentNotOnTopOfFile.ts] +var x = 10; + +/*! + + multi line + comment +*/ + +var x = 10; + +//// [doNotEmitPinnedCommentNotOnTopOfFile.js] +var x = 10; +var x = 10; diff --git a/tests/baselines/reference/doNotEmitPinnedCommentNotOnTopOfFile.symbols b/tests/baselines/reference/doNotEmitPinnedCommentNotOnTopOfFile.symbols new file mode 100644 index 00000000000..97cfb5df214 --- /dev/null +++ b/tests/baselines/reference/doNotEmitPinnedCommentNotOnTopOfFile.symbols @@ -0,0 +1,13 @@ +=== tests/cases/compiler/doNotEmitPinnedCommentNotOnTopOfFile.ts === +var x = 10; +>x : Symbol(x, Decl(doNotEmitPinnedCommentNotOnTopOfFile.ts, 0, 3), Decl(doNotEmitPinnedCommentNotOnTopOfFile.ts, 8, 3)) + +/*! + + multi line + comment +*/ + +var x = 10; +>x : Symbol(x, Decl(doNotEmitPinnedCommentNotOnTopOfFile.ts, 0, 3), Decl(doNotEmitPinnedCommentNotOnTopOfFile.ts, 8, 3)) + diff --git a/tests/baselines/reference/doNotEmitPinnedCommentNotOnTopOfFile.types b/tests/baselines/reference/doNotEmitPinnedCommentNotOnTopOfFile.types new file mode 100644 index 00000000000..3426c70dfb9 --- /dev/null +++ b/tests/baselines/reference/doNotEmitPinnedCommentNotOnTopOfFile.types @@ -0,0 +1,15 @@ +=== tests/cases/compiler/doNotEmitPinnedCommentNotOnTopOfFile.ts === +var x = 10; +>x : number +>10 : number + +/*! + + multi line + comment +*/ + +var x = 10; +>x : number +>10 : number + diff --git a/tests/baselines/reference/doNotEmitPinnedCommentOnNotEmittedNode.js b/tests/baselines/reference/doNotEmitPinnedCommentOnNotEmittedNode.js new file mode 100644 index 00000000000..99e50801d50 --- /dev/null +++ b/tests/baselines/reference/doNotEmitPinnedCommentOnNotEmittedNode.js @@ -0,0 +1,21 @@ +//// [doNotEmitPinnedCommentOnNotEmittedNode.ts] + +class C { + /*! remove pinned comment anywhere else */ + public foo(x: string, y: any) + public foo(x: string, y: number) { } +} + +var x = 10; + +/*! remove pinned comment anywhere else */ +declare var OData: any; + +//// [doNotEmitPinnedCommentOnNotEmittedNode.js] +var C = (function () { + function C() { + } + C.prototype.foo = function (x, y) { }; + return C; +})(); +var x = 10; diff --git a/tests/baselines/reference/doNotEmitPinnedCommentOnNotEmittedNode.symbols b/tests/baselines/reference/doNotEmitPinnedCommentOnNotEmittedNode.symbols new file mode 100644 index 00000000000..64609266044 --- /dev/null +++ b/tests/baselines/reference/doNotEmitPinnedCommentOnNotEmittedNode.symbols @@ -0,0 +1,24 @@ +=== tests/cases/compiler/doNotEmitPinnedCommentOnNotEmittedNode.ts === + +class C { +>C : Symbol(C, Decl(doNotEmitPinnedCommentOnNotEmittedNode.ts, 0, 0)) + + /*! remove pinned comment anywhere else */ + public foo(x: string, y: any) +>foo : Symbol(foo, Decl(doNotEmitPinnedCommentOnNotEmittedNode.ts, 1, 9), Decl(doNotEmitPinnedCommentOnNotEmittedNode.ts, 3, 33)) +>x : Symbol(x, Decl(doNotEmitPinnedCommentOnNotEmittedNode.ts, 3, 15)) +>y : Symbol(y, Decl(doNotEmitPinnedCommentOnNotEmittedNode.ts, 3, 25)) + + public foo(x: string, y: number) { } +>foo : Symbol(foo, Decl(doNotEmitPinnedCommentOnNotEmittedNode.ts, 1, 9), Decl(doNotEmitPinnedCommentOnNotEmittedNode.ts, 3, 33)) +>x : Symbol(x, Decl(doNotEmitPinnedCommentOnNotEmittedNode.ts, 4, 15)) +>y : Symbol(y, Decl(doNotEmitPinnedCommentOnNotEmittedNode.ts, 4, 25)) +} + +var x = 10; +>x : Symbol(x, Decl(doNotEmitPinnedCommentOnNotEmittedNode.ts, 7, 3)) + +/*! remove pinned comment anywhere else */ +declare var OData: any; +>OData : Symbol(OData, Decl(doNotEmitPinnedCommentOnNotEmittedNode.ts, 10, 11)) + diff --git a/tests/baselines/reference/doNotEmitPinnedCommentOnNotEmittedNode.types b/tests/baselines/reference/doNotEmitPinnedCommentOnNotEmittedNode.types new file mode 100644 index 00000000000..b0f71137c2d --- /dev/null +++ b/tests/baselines/reference/doNotEmitPinnedCommentOnNotEmittedNode.types @@ -0,0 +1,25 @@ +=== tests/cases/compiler/doNotEmitPinnedCommentOnNotEmittedNode.ts === + +class C { +>C : C + + /*! remove pinned comment anywhere else */ + public foo(x: string, y: any) +>foo : (x: string, y: any) => any +>x : string +>y : any + + public foo(x: string, y: number) { } +>foo : (x: string, y: any) => any +>x : string +>y : number +} + +var x = 10; +>x : number +>10 : number + +/*! remove pinned comment anywhere else */ +declare var OData: any; +>OData : any + diff --git a/tests/baselines/reference/doNotEmitPinnedCommentOnNotEmittedNodets.js b/tests/baselines/reference/doNotEmitPinnedCommentOnNotEmittedNodets.js new file mode 100644 index 00000000000..66896350e6d --- /dev/null +++ b/tests/baselines/reference/doNotEmitPinnedCommentOnNotEmittedNodets.js @@ -0,0 +1,18 @@ +//// [doNotEmitPinnedCommentOnNotEmittedNodets.ts] + +class C { + /*! remove pinned comment anywhere else */ + public foo(x: string, y: any) + public foo(x: string, y: number) { } +} + +/*! remove pinned comment anywhere else */ +declare var OData: any; + +//// [doNotEmitPinnedCommentOnNotEmittedNodets.js] +var C = (function () { + function C() { + } + C.prototype.foo = function (x, y) { }; + return C; +})(); diff --git a/tests/baselines/reference/doNotEmitPinnedCommentOnNotEmittedNodets.symbols b/tests/baselines/reference/doNotEmitPinnedCommentOnNotEmittedNodets.symbols new file mode 100644 index 00000000000..dcd27478115 --- /dev/null +++ b/tests/baselines/reference/doNotEmitPinnedCommentOnNotEmittedNodets.symbols @@ -0,0 +1,21 @@ +=== tests/cases/compiler/doNotEmitPinnedCommentOnNotEmittedNodets.ts === + +class C { +>C : Symbol(C, Decl(doNotEmitPinnedCommentOnNotEmittedNodets.ts, 0, 0)) + + /*! remove pinned comment anywhere else */ + public foo(x: string, y: any) +>foo : Symbol(foo, Decl(doNotEmitPinnedCommentOnNotEmittedNodets.ts, 1, 9), Decl(doNotEmitPinnedCommentOnNotEmittedNodets.ts, 3, 33)) +>x : Symbol(x, Decl(doNotEmitPinnedCommentOnNotEmittedNodets.ts, 3, 15)) +>y : Symbol(y, Decl(doNotEmitPinnedCommentOnNotEmittedNodets.ts, 3, 25)) + + public foo(x: string, y: number) { } +>foo : Symbol(foo, Decl(doNotEmitPinnedCommentOnNotEmittedNodets.ts, 1, 9), Decl(doNotEmitPinnedCommentOnNotEmittedNodets.ts, 3, 33)) +>x : Symbol(x, Decl(doNotEmitPinnedCommentOnNotEmittedNodets.ts, 4, 15)) +>y : Symbol(y, Decl(doNotEmitPinnedCommentOnNotEmittedNodets.ts, 4, 25)) +} + +/*! remove pinned comment anywhere else */ +declare var OData: any; +>OData : Symbol(OData, Decl(doNotEmitPinnedCommentOnNotEmittedNodets.ts, 8, 11)) + diff --git a/tests/baselines/reference/doNotEmitPinnedCommentOnNotEmittedNodets.types b/tests/baselines/reference/doNotEmitPinnedCommentOnNotEmittedNodets.types new file mode 100644 index 00000000000..4369af63f53 --- /dev/null +++ b/tests/baselines/reference/doNotEmitPinnedCommentOnNotEmittedNodets.types @@ -0,0 +1,21 @@ +=== tests/cases/compiler/doNotEmitPinnedCommentOnNotEmittedNodets.ts === + +class C { +>C : C + + /*! remove pinned comment anywhere else */ + public foo(x: string, y: any) +>foo : (x: string, y: any) => any +>x : string +>y : any + + public foo(x: string, y: number) { } +>foo : (x: string, y: any) => any +>x : string +>y : number +} + +/*! remove pinned comment anywhere else */ +declare var OData: any; +>OData : any + diff --git a/tests/baselines/reference/doNotEmitPinnedDetachedComments.js b/tests/baselines/reference/doNotEmitPinnedDetachedComments.js new file mode 100644 index 00000000000..5f5a3b19aaa --- /dev/null +++ b/tests/baselines/reference/doNotEmitPinnedDetachedComments.js @@ -0,0 +1,42 @@ +//// [doNotEmitPinnedDetachedComments.ts] +var x = 10; + +/*! Single Line comment */ + +function baz() { } + + +/*! + multi-line comment + +*/ + + +//======================== + + +function bar() { + /*! + Remove this comment + */ + +} + +function foo() { + /*! Remove this */ + + return 0; +} + + +//======================== + + +//// [doNotEmitPinnedDetachedComments.js] +var x = 10; +function baz() { } +function bar() { +} +function foo() { + return 0; +} diff --git a/tests/baselines/reference/doNotEmitPinnedDetachedComments.symbols b/tests/baselines/reference/doNotEmitPinnedDetachedComments.symbols new file mode 100644 index 00000000000..2be35804b38 --- /dev/null +++ b/tests/baselines/reference/doNotEmitPinnedDetachedComments.symbols @@ -0,0 +1,39 @@ +=== tests/cases/compiler/doNotEmitPinnedDetachedComments.ts === +var x = 10; +>x : Symbol(x, Decl(doNotEmitPinnedDetachedComments.ts, 0, 3)) + +/*! Single Line comment */ + +function baz() { } +>baz : Symbol(baz, Decl(doNotEmitPinnedDetachedComments.ts, 0, 11)) + + +/*! + multi-line comment + +*/ + + +//======================== + + +function bar() { +>bar : Symbol(bar, Decl(doNotEmitPinnedDetachedComments.ts, 4, 18)) + + /*! + Remove this comment + */ + +} + +function foo() { +>foo : Symbol(foo, Decl(doNotEmitPinnedDetachedComments.ts, 21, 1)) + + /*! Remove this */ + + return 0; +} + + +//======================== + diff --git a/tests/baselines/reference/doNotEmitPinnedDetachedComments.types b/tests/baselines/reference/doNotEmitPinnedDetachedComments.types new file mode 100644 index 00000000000..d9e78e2f980 --- /dev/null +++ b/tests/baselines/reference/doNotEmitPinnedDetachedComments.types @@ -0,0 +1,41 @@ +=== tests/cases/compiler/doNotEmitPinnedDetachedComments.ts === +var x = 10; +>x : number +>10 : number + +/*! Single Line comment */ + +function baz() { } +>baz : () => void + + +/*! + multi-line comment + +*/ + + +//======================== + + +function bar() { +>bar : () => void + + /*! + Remove this comment + */ + +} + +function foo() { +>foo : () => number + + /*! Remove this */ + + return 0; +>0 : number +} + + +//======================== + diff --git a/tests/baselines/reference/doNotEmitTripleSlashCommentsInEmptyFile.js b/tests/baselines/reference/doNotEmitTripleSlashCommentsInEmptyFile.js new file mode 100644 index 00000000000..f3b0888a78f --- /dev/null +++ b/tests/baselines/reference/doNotEmitTripleSlashCommentsInEmptyFile.js @@ -0,0 +1,15 @@ +//// [tests/cases/compiler/doNotEmitTripleSlashCommentsInEmptyFile.ts] //// + +//// [file0.ts] + + +//// [file1.ts] + +//// [file2.ts] +/// +/// +/// + +//// [file0.js] +//// [file1.js] +//// [file2.js] diff --git a/tests/baselines/reference/doNotEmitTripleSlashCommentsInEmptyFile.symbols b/tests/baselines/reference/doNotEmitTripleSlashCommentsInEmptyFile.symbols new file mode 100644 index 00000000000..d18810db280 --- /dev/null +++ b/tests/baselines/reference/doNotEmitTripleSlashCommentsInEmptyFile.symbols @@ -0,0 +1,10 @@ +=== tests/cases/compiler/file2.ts === +/// +No type information for this code./// +No type information for this code./// +No type information for this code.=== tests/cases/compiler/file0.ts === + +No type information for this code. +No type information for this code.=== tests/cases/compiler/file1.ts === + +No type information for this code. \ No newline at end of file diff --git a/tests/baselines/reference/doNotEmitTripleSlashCommentsInEmptyFile.types b/tests/baselines/reference/doNotEmitTripleSlashCommentsInEmptyFile.types new file mode 100644 index 00000000000..d18810db280 --- /dev/null +++ b/tests/baselines/reference/doNotEmitTripleSlashCommentsInEmptyFile.types @@ -0,0 +1,10 @@ +=== tests/cases/compiler/file2.ts === +/// +No type information for this code./// +No type information for this code./// +No type information for this code.=== tests/cases/compiler/file0.ts === + +No type information for this code. +No type information for this code.=== tests/cases/compiler/file1.ts === + +No type information for this code. \ No newline at end of file diff --git a/tests/baselines/reference/doNotEmitTripleSlashCommentsOnNotEmittedNode.js b/tests/baselines/reference/doNotEmitTripleSlashCommentsOnNotEmittedNode.js new file mode 100644 index 00000000000..9067b5b80a9 --- /dev/null +++ b/tests/baselines/reference/doNotEmitTripleSlashCommentsOnNotEmittedNode.js @@ -0,0 +1,15 @@ +//// [tests/cases/compiler/doNotEmitTripleSlashCommentsOnNotEmittedNode.ts] //// + +//// [file0.ts] + +/// +declare var OData: any; + +//// [file1.ts] +/// +interface F { } + + + +//// [file0.js] +//// [file1.js] diff --git a/tests/baselines/reference/doNotEmitTripleSlashCommentsOnNotEmittedNode.symbols b/tests/baselines/reference/doNotEmitTripleSlashCommentsOnNotEmittedNode.symbols new file mode 100644 index 00000000000..bb920d2ee1c --- /dev/null +++ b/tests/baselines/reference/doNotEmitTripleSlashCommentsOnNotEmittedNode.symbols @@ -0,0 +1,12 @@ +=== tests/cases/compiler/file1.ts === +/// +interface F { } +>F : Symbol(F, Decl(file1.ts, 0, 0)) + + +=== tests/cases/compiler/file0.ts === + +/// +declare var OData: any; +>OData : Symbol(OData, Decl(file0.ts, 2, 11)) + diff --git a/tests/baselines/reference/doNotEmitTripleSlashCommentsOnNotEmittedNode.types b/tests/baselines/reference/doNotEmitTripleSlashCommentsOnNotEmittedNode.types new file mode 100644 index 00000000000..59b63ea1a2f --- /dev/null +++ b/tests/baselines/reference/doNotEmitTripleSlashCommentsOnNotEmittedNode.types @@ -0,0 +1,12 @@ +=== tests/cases/compiler/file1.ts === +/// +interface F { } +>F : F + + +=== tests/cases/compiler/file0.ts === + +/// +declare var OData: any; +>OData : any + diff --git a/tests/baselines/reference/doNotemitTripleSlashComments.js b/tests/baselines/reference/doNotemitTripleSlashComments.js new file mode 100644 index 00000000000..fe17db54cb1 --- /dev/null +++ b/tests/baselines/reference/doNotemitTripleSlashComments.js @@ -0,0 +1,46 @@ +//// [tests/cases/compiler/doNotemitTripleSlashComments.ts] //// + +//// [file0.ts] + +/// +/// +/// +var x = 10; + +/// +var y = "hello"; + + +/// + +//// [file1.ts] +/// + +function foo() { } + + +/// + + +var z = "world"; + +//// [file2.ts] +/// + + +/// ==================================== + + +function bar() { } + + + + +//// [file0.js] +var x = 10; +var y = "hello"; +//// [file1.js] +function foo() { } +var z = "world"; +//// [file2.js] +function bar() { } diff --git a/tests/baselines/reference/doNotemitTripleSlashComments.symbols b/tests/baselines/reference/doNotemitTripleSlashComments.symbols new file mode 100644 index 00000000000..36b31842f8b --- /dev/null +++ b/tests/baselines/reference/doNotemitTripleSlashComments.symbols @@ -0,0 +1,40 @@ +=== tests/cases/compiler/file2.ts === +/// + + +/// ==================================== + + +function bar() { } +>bar : Symbol(bar, Decl(file2.ts, 0, 0)) + + + +=== tests/cases/compiler/file0.ts === + +/// +/// +/// +var x = 10; +>x : Symbol(x, Decl(file0.ts, 4, 3)) + +/// +var y = "hello"; +>y : Symbol(y, Decl(file0.ts, 7, 3)) + + +/// + +=== tests/cases/compiler/file1.ts === +/// + +function foo() { } +>foo : Symbol(foo, Decl(file1.ts, 0, 0)) + + +/// + + +var z = "world"; +>z : Symbol(z, Decl(file1.ts, 8, 3)) + diff --git a/tests/baselines/reference/doNotemitTripleSlashComments.types b/tests/baselines/reference/doNotemitTripleSlashComments.types new file mode 100644 index 00000000000..edebe5687f6 --- /dev/null +++ b/tests/baselines/reference/doNotemitTripleSlashComments.types @@ -0,0 +1,43 @@ +=== tests/cases/compiler/file2.ts === +/// + + +/// ==================================== + + +function bar() { } +>bar : () => void + + + +=== tests/cases/compiler/file0.ts === + +/// +/// +/// +var x = 10; +>x : number +>10 : number + +/// +var y = "hello"; +>y : string +>"hello" : string + + +/// + +=== tests/cases/compiler/file1.ts === +/// + +function foo() { } +>foo : () => void + + +/// + + +var z = "world"; +>z : string +>"world" : string + diff --git a/tests/baselines/reference/downlevelLetConst12.errors.txt b/tests/baselines/reference/downlevelLetConst12.errors.txt new file mode 100644 index 00000000000..0af224b017e --- /dev/null +++ b/tests/baselines/reference/downlevelLetConst12.errors.txt @@ -0,0 +1,20 @@ +tests/cases/compiler/downlevelLetConst12.ts(7,6): error TS2525: Initializer provides no value for this binding element and the binding element has no default value. +tests/cases/compiler/downlevelLetConst12.ts(10,8): error TS2525: Initializer provides no value for this binding element and the binding element has no default value. + + +==== tests/cases/compiler/downlevelLetConst12.ts (2 errors) ==== + + 'use strict' + // top level let\const should not be renamed + let foo; + const bar = 1; + + let [baz] = []; + ~~~ +!!! error TS2525: Initializer provides no value for this binding element and the binding element has no default value. + let {a: baz2} = { a: 1 }; + + const [baz3] = [] + ~~~~ +!!! error TS2525: Initializer provides no value for this binding element and the binding element has no default value. + const {a: baz4} = { a: 1 }; \ No newline at end of file diff --git a/tests/baselines/reference/downlevelLetConst12.symbols b/tests/baselines/reference/downlevelLetConst12.symbols deleted file mode 100644 index 97d6d5eebf8..00000000000 --- a/tests/baselines/reference/downlevelLetConst12.symbols +++ /dev/null @@ -1,26 +0,0 @@ -=== tests/cases/compiler/downlevelLetConst12.ts === - -'use strict' -// top level let\const should not be renamed -let foo; ->foo : Symbol(foo, Decl(downlevelLetConst12.ts, 3, 3)) - -const bar = 1; ->bar : Symbol(bar, Decl(downlevelLetConst12.ts, 4, 5)) - -let [baz] = []; ->baz : Symbol(baz, Decl(downlevelLetConst12.ts, 6, 5)) - -let {a: baz2} = { a: 1 }; ->a : Symbol(a, Decl(downlevelLetConst12.ts, 7, 17)) ->baz2 : Symbol(baz2, Decl(downlevelLetConst12.ts, 7, 5)) ->a : Symbol(a, Decl(downlevelLetConst12.ts, 7, 17)) - -const [baz3] = [] ->baz3 : Symbol(baz3, Decl(downlevelLetConst12.ts, 9, 7)) - -const {a: baz4} = { a: 1 }; ->a : Symbol(a, Decl(downlevelLetConst12.ts, 10, 19)) ->baz4 : Symbol(baz4, Decl(downlevelLetConst12.ts, 10, 7)) ->a : Symbol(a, Decl(downlevelLetConst12.ts, 10, 19)) - diff --git a/tests/baselines/reference/downlevelLetConst12.types b/tests/baselines/reference/downlevelLetConst12.types deleted file mode 100644 index 51d3b8eb086..00000000000 --- a/tests/baselines/reference/downlevelLetConst12.types +++ /dev/null @@ -1,35 +0,0 @@ -=== tests/cases/compiler/downlevelLetConst12.ts === - -'use strict' ->'use strict' : string - -// top level let\const should not be renamed -let foo; ->foo : any - -const bar = 1; ->bar : number ->1 : number - -let [baz] = []; ->baz : any ->[] : undefined[] - -let {a: baz2} = { a: 1 }; ->a : any ->baz2 : number ->{ a: 1 } : { a: number; } ->a : number ->1 : number - -const [baz3] = [] ->baz3 : any ->[] : undefined[] - -const {a: baz4} = { a: 1 }; ->a : any ->baz4 : number ->{ a: 1 } : { a: number; } ->a : number ->1 : number - diff --git a/tests/baselines/reference/downlevelLetConst16.errors.txt b/tests/baselines/reference/downlevelLetConst16.errors.txt index 94c53360b87..905d1a607e8 100644 --- a/tests/baselines/reference/downlevelLetConst16.errors.txt +++ b/tests/baselines/reference/downlevelLetConst16.errors.txt @@ -1,10 +1,12 @@ +tests/cases/compiler/downlevelLetConst16.ts(151,15): error TS2525: Initializer provides no value for this binding element and the binding element has no default value. +tests/cases/compiler/downlevelLetConst16.ts(164,17): error TS2525: Initializer provides no value for this binding element and the binding element has no default value. 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) ==== +==== tests/cases/compiler/downlevelLetConst16.ts (6 errors) ==== 'use strict' declare function use(a: any); @@ -156,6 +158,8 @@ tests/cases/compiler/downlevelLetConst16.ts(223,17): error TS2459: Type 'undefin use(x); } for (let [y] = []; ;) { + ~ +!!! error TS2525: Initializer provides no value for this binding element and the binding element has no default value. use(y); } for (let {a: z} = {a: 1}; ;) { @@ -169,6 +173,8 @@ tests/cases/compiler/downlevelLetConst16.ts(223,17): error TS2459: Type 'undefin use(x); } for (const [y] = []; ;) { + ~ +!!! error TS2525: Initializer provides no value for this binding element and the binding element has no default value. use(y); } for (const {a: z} = { a: 1 }; ;) { diff --git a/tests/baselines/reference/elidingImportNames.js b/tests/baselines/reference/elidingImportNames.js index 3c61789a1a7..e07ee6fa54a 100644 --- a/tests/baselines/reference/elidingImportNames.js +++ b/tests/baselines/reference/elidingImportNames.js @@ -2,10 +2,10 @@ //// [elidingImportNames_test.ts] -import a = require('elidingImportNames_main'); // alias used in typeof +import a = require('./elidingImportNames_main'); // alias used in typeof var b = a; var x: typeof a; -import a2 = require('elidingImportNames_main1'); // alias not used in typeof +import a2 = require('./elidingImportNames_main1'); // alias not used in typeof var b2 = a2; @@ -20,8 +20,8 @@ exports.main = 10; //// [elidingImportNames_main1.js] exports.main = 10; //// [elidingImportNames_test.js] -var a = require('elidingImportNames_main'); // alias used in typeof +var a = require('./elidingImportNames_main'); // alias used in typeof var b = a; var x; -var a2 = require('elidingImportNames_main1'); // alias not used in typeof +var a2 = require('./elidingImportNames_main1'); // alias not used in typeof var b2 = a2; diff --git a/tests/baselines/reference/elidingImportNames.symbols b/tests/baselines/reference/elidingImportNames.symbols index 02646b5c3e2..d9cdcd61ffe 100644 --- a/tests/baselines/reference/elidingImportNames.symbols +++ b/tests/baselines/reference/elidingImportNames.symbols @@ -1,6 +1,6 @@ === tests/cases/compiler/elidingImportNames_test.ts === -import a = require('elidingImportNames_main'); // alias used in typeof +import a = require('./elidingImportNames_main'); // alias used in typeof >a : Symbol(a, Decl(elidingImportNames_test.ts, 0, 0)) var b = a; @@ -11,7 +11,7 @@ var x: typeof a; >x : Symbol(x, Decl(elidingImportNames_test.ts, 3, 3)) >a : Symbol(a, Decl(elidingImportNames_test.ts, 0, 0)) -import a2 = require('elidingImportNames_main1'); // alias not used in typeof +import a2 = require('./elidingImportNames_main1'); // alias not used in typeof >a2 : Symbol(a2, Decl(elidingImportNames_test.ts, 3, 16)) var b2 = a2; diff --git a/tests/baselines/reference/elidingImportNames.types b/tests/baselines/reference/elidingImportNames.types index 65bd16a6d97..947cd38f6d4 100644 --- a/tests/baselines/reference/elidingImportNames.types +++ b/tests/baselines/reference/elidingImportNames.types @@ -1,6 +1,6 @@ === tests/cases/compiler/elidingImportNames_test.ts === -import a = require('elidingImportNames_main'); // alias used in typeof +import a = require('./elidingImportNames_main'); // alias used in typeof >a : typeof a var b = a; @@ -11,7 +11,7 @@ var x: typeof a; >x : typeof a >a : typeof a -import a2 = require('elidingImportNames_main1'); // alias not used in typeof +import a2 = require('./elidingImportNames_main1'); // alias not used in typeof >a2 : typeof a2 var b2 = a2; diff --git a/tests/baselines/reference/emitArrowFunctionES6.types b/tests/baselines/reference/emitArrowFunctionES6.types index e2ad176fd7d..cc48cecd96a 100644 --- a/tests/baselines/reference/emitArrowFunctionES6.types +++ b/tests/baselines/reference/emitArrowFunctionES6.types @@ -87,12 +87,12 @@ var p8 = ({ a = 1 }) => { }; >1 : number var p9 = ({ a: { b = 1 } = { b: 1 } }) => { }; ->p9 : ({ a: { b = 1 } = { b: 1 } }: { a?: { b: number; }; }) => void ->({ a: { b = 1 } = { b: 1 } }) => { } : ({ a: { b = 1 } = { b: 1 } }: { a?: { b: number; }; }) => void +>p9 : ({ a: { b = 1 } = { b: 1 } }: { a?: { b?: number; }; }) => void +>({ a: { b = 1 } = { b: 1 } }) => { } : ({ a: { b = 1 } = { b: 1 } }: { a?: { b?: number; }; }) => void >a : any >b : number >1 : number ->{ b: 1 } : { b: number; } +>{ b: 1 } : { b?: number; } >b : number >1 : number diff --git a/tests/baselines/reference/emitArrowFunctionWhenUsingArguments14_ES6.symbols b/tests/baselines/reference/emitArrowFunctionWhenUsingArguments14_ES6.symbols index e5275396346..3e7770ccdda 100644 --- a/tests/baselines/reference/emitArrowFunctionWhenUsingArguments14_ES6.symbols +++ b/tests/baselines/reference/emitArrowFunctionWhenUsingArguments14_ES6.symbols @@ -5,7 +5,7 @@ function f() { if (Math.random()) { >Math.random : Symbol(Math.random, Decl(lib.d.ts, 608, 38)) ->Math : Symbol(Math, Decl(lib.d.ts, 522, 1), Decl(lib.d.ts, 633, 11), Decl(lib.d.ts, 4392, 60)) +>Math : Symbol(Math, Decl(lib.d.ts, 522, 1), Decl(lib.d.ts, 633, 11), Decl(lib.d.ts, 4419, 60)) >random : Symbol(Math.random, Decl(lib.d.ts, 608, 38)) let arguments = 100; diff --git a/tests/baselines/reference/emitArrowFunctionWhenUsingArguments15_ES6.symbols b/tests/baselines/reference/emitArrowFunctionWhenUsingArguments15_ES6.symbols index 230e7158d32..c0ea901fbbf 100644 --- a/tests/baselines/reference/emitArrowFunctionWhenUsingArguments15_ES6.symbols +++ b/tests/baselines/reference/emitArrowFunctionWhenUsingArguments15_ES6.symbols @@ -8,7 +8,7 @@ function f() { if (Math.random()) { >Math.random : Symbol(Math.random, Decl(lib.d.ts, 608, 38)) ->Math : Symbol(Math, Decl(lib.d.ts, 522, 1), Decl(lib.d.ts, 633, 11), Decl(lib.d.ts, 4392, 60)) +>Math : Symbol(Math, Decl(lib.d.ts, 522, 1), Decl(lib.d.ts, 633, 11), Decl(lib.d.ts, 4419, 60)) >random : Symbol(Math.random, Decl(lib.d.ts, 608, 38)) const arguments = 100; diff --git a/tests/baselines/reference/emitArrowFunctionWhenUsingArguments16_ES6.symbols b/tests/baselines/reference/emitArrowFunctionWhenUsingArguments16_ES6.symbols index e304c33e48e..3d09056c8c3 100644 --- a/tests/baselines/reference/emitArrowFunctionWhenUsingArguments16_ES6.symbols +++ b/tests/baselines/reference/emitArrowFunctionWhenUsingArguments16_ES6.symbols @@ -8,7 +8,7 @@ function f() { if (Math.random()) { >Math.random : Symbol(Math.random, Decl(lib.d.ts, 608, 38)) ->Math : Symbol(Math, Decl(lib.d.ts, 522, 1), Decl(lib.d.ts, 633, 11), Decl(lib.d.ts, 4392, 60)) +>Math : Symbol(Math, Decl(lib.d.ts, 522, 1), Decl(lib.d.ts, 633, 11), Decl(lib.d.ts, 4419, 60)) >random : Symbol(Math.random, Decl(lib.d.ts, 608, 38)) return () => arguments[0]; diff --git a/tests/baselines/reference/emitArrowFunctionWhenUsingArguments17_ES6.symbols b/tests/baselines/reference/emitArrowFunctionWhenUsingArguments17_ES6.symbols index 4a309471e64..22431e495cc 100644 --- a/tests/baselines/reference/emitArrowFunctionWhenUsingArguments17_ES6.symbols +++ b/tests/baselines/reference/emitArrowFunctionWhenUsingArguments17_ES6.symbols @@ -9,7 +9,7 @@ function f() { if (Math.random()) { >Math.random : Symbol(Math.random, Decl(lib.d.ts, 608, 38)) ->Math : Symbol(Math, Decl(lib.d.ts, 522, 1), Decl(lib.d.ts, 633, 11), Decl(lib.d.ts, 4392, 60)) +>Math : Symbol(Math, Decl(lib.d.ts, 522, 1), Decl(lib.d.ts, 633, 11), Decl(lib.d.ts, 4419, 60)) >random : Symbol(Math.random, Decl(lib.d.ts, 608, 38)) return () => arguments[0]; diff --git a/tests/baselines/reference/emitArrowFunctionWhenUsingArguments18_ES6.symbols b/tests/baselines/reference/emitArrowFunctionWhenUsingArguments18_ES6.symbols index e9760caa319..6dbbe9501d0 100644 --- a/tests/baselines/reference/emitArrowFunctionWhenUsingArguments18_ES6.symbols +++ b/tests/baselines/reference/emitArrowFunctionWhenUsingArguments18_ES6.symbols @@ -10,7 +10,7 @@ function f() { if (Math.random()) { >Math.random : Symbol(Math.random, Decl(lib.d.ts, 608, 38)) ->Math : Symbol(Math, Decl(lib.d.ts, 522, 1), Decl(lib.d.ts, 633, 11), Decl(lib.d.ts, 4392, 60)) +>Math : Symbol(Math, Decl(lib.d.ts, 522, 1), Decl(lib.d.ts, 633, 11), Decl(lib.d.ts, 4419, 60)) >random : Symbol(Math.random, Decl(lib.d.ts, 608, 38)) return () => arguments; diff --git a/tests/baselines/reference/emitClassDeclarationWithConstructorInES6.types b/tests/baselines/reference/emitClassDeclarationWithConstructorInES6.types index ecb48cb3047..3bdf5af2ba5 100644 --- a/tests/baselines/reference/emitClassDeclarationWithConstructorInES6.types +++ b/tests/baselines/reference/emitClassDeclarationWithConstructorInES6.types @@ -38,7 +38,7 @@ class B { this.y = 10; >this.y = 10 : number >this.y : number ->this : B +>this : this >y : number >10 : number } @@ -53,7 +53,7 @@ class B { return this._bar; >this._bar : string ->this : B +>this : this >_bar : string } } diff --git a/tests/baselines/reference/emitClassDeclarationWithGetterSetterInES6.types b/tests/baselines/reference/emitClassDeclarationWithGetterSetterInES6.types index b26d6b3dd81..292fb961b10 100644 --- a/tests/baselines/reference/emitClassDeclarationWithGetterSetterInES6.types +++ b/tests/baselines/reference/emitClassDeclarationWithGetterSetterInES6.types @@ -10,7 +10,7 @@ class C { return this._name; >this._name : string ->this : C +>this : this >_name : string } static get name2(): string { diff --git a/tests/baselines/reference/emitClassDeclarationWithMethodInES6.types b/tests/baselines/reference/emitClassDeclarationWithMethodInES6.types index d3e75c9235c..10ae930c244 100644 --- a/tests/baselines/reference/emitClassDeclarationWithMethodInES6.types +++ b/tests/baselines/reference/emitClassDeclarationWithMethodInES6.types @@ -25,7 +25,7 @@ class D { return this._bar; >this._bar : string ->this : D +>this : this >_bar : string } baz(a: any, x: string): string { diff --git a/tests/baselines/reference/emitClassDeclarationWithPropertyAssignmentInES6.types b/tests/baselines/reference/emitClassDeclarationWithPropertyAssignmentInES6.types index f3504d655ed..ccf4ca3ca9d 100644 --- a/tests/baselines/reference/emitClassDeclarationWithPropertyAssignmentInES6.types +++ b/tests/baselines/reference/emitClassDeclarationWithPropertyAssignmentInES6.types @@ -21,7 +21,7 @@ class D { this.y = 10; >this.y = 10 : number >this.y : number ->this : D +>this : this >y : number >10 : number } @@ -55,7 +55,7 @@ class F extends D{ this.j = "HI"; >this.j = "HI" : string >this.j : string ->this : F +>this : this >j : string >"HI" : string } diff --git a/tests/baselines/reference/emitClassDeclarationWithThisKeywordInES6.types b/tests/baselines/reference/emitClassDeclarationWithThisKeywordInES6.types index 14c57a60bc4..7c0159fbd63 100644 --- a/tests/baselines/reference/emitClassDeclarationWithThisKeywordInES6.types +++ b/tests/baselines/reference/emitClassDeclarationWithThisKeywordInES6.types @@ -10,7 +10,7 @@ class B { this.x = 10; >this.x = 10 : number >this.x : number ->this : B +>this : this >x : number >10 : number } @@ -27,7 +27,7 @@ class B { >B : typeof B >log : (a: number) => void >this.x : number ->this : B +>this : this >x : number } @@ -36,7 +36,7 @@ class B { return this.x; >this.x : number ->this : B +>this : this >x : number } @@ -47,7 +47,7 @@ class B { this.x = y; >this.x = y : number >this.x : number ->this : B +>this : this >x : number >y : number } diff --git a/tests/baselines/reference/emitClassDeclarationWithTypeArgumentAndOverloadInES6.types b/tests/baselines/reference/emitClassDeclarationWithTypeArgumentAndOverloadInES6.types index ba515168a5d..4bc2bfdfa92 100644 --- a/tests/baselines/reference/emitClassDeclarationWithTypeArgumentAndOverloadInES6.types +++ b/tests/baselines/reference/emitClassDeclarationWithTypeArgumentAndOverloadInES6.types @@ -24,7 +24,7 @@ class B { >T : T >this.B = a : T >this.B : T ->this : B +>this : this >B : T >a : T @@ -47,7 +47,7 @@ class B { return this.x; >this.x : T ->this : B +>this : this >x : T } @@ -57,7 +57,7 @@ class B { return this.B; >this.B : T ->this : B +>this : this >B : T } set BBWith(c: T) { @@ -68,7 +68,7 @@ class B { this.B = c; >this.B = c : T >this.B : T ->this : B +>this : this >B : T >c : T } diff --git a/tests/baselines/reference/emitClassDeclarationWithTypeArgumentInES6.types b/tests/baselines/reference/emitClassDeclarationWithTypeArgumentInES6.types index 8081d044e35..b4d2df96712 100644 --- a/tests/baselines/reference/emitClassDeclarationWithTypeArgumentInES6.types +++ b/tests/baselines/reference/emitClassDeclarationWithTypeArgumentInES6.types @@ -16,7 +16,7 @@ class B { >T : T >this.B = a : T >this.B : T ->this : B +>this : this >B : T >a : T @@ -26,7 +26,7 @@ class B { return this.x; >this.x : T ->this : B +>this : this >x : T } get BB(): T { @@ -35,7 +35,7 @@ class B { return this.B; >this.B : T ->this : B +>this : this >B : T } set BBWith(c: T) { @@ -46,7 +46,7 @@ class B { this.B = c; >this.B = c : T >this.B : T ->this : B +>this : this >B : T >c : T } diff --git a/tests/baselines/reference/emitPinnedCommentsOnTopOfFile.js b/tests/baselines/reference/emitPinnedCommentsOnTopOfFile.js new file mode 100644 index 00000000000..a30fcbf045d --- /dev/null +++ b/tests/baselines/reference/emitPinnedCommentsOnTopOfFile.js @@ -0,0 +1,16 @@ +//// [emitPinnedCommentsOnTopOfFile.ts] +/*! + + multi line + comment +*/ + +var x = 10; + +//// [emitPinnedCommentsOnTopOfFile.js] +/*! + + multi line + comment +*/ +var x = 10; diff --git a/tests/baselines/reference/emitPinnedCommentsOnTopOfFile.symbols b/tests/baselines/reference/emitPinnedCommentsOnTopOfFile.symbols new file mode 100644 index 00000000000..c9eb5905303 --- /dev/null +++ b/tests/baselines/reference/emitPinnedCommentsOnTopOfFile.symbols @@ -0,0 +1,10 @@ +=== tests/cases/compiler/emitPinnedCommentsOnTopOfFile.ts === +/*! + + multi line + comment +*/ + +var x = 10; +>x : Symbol(x, Decl(emitPinnedCommentsOnTopOfFile.ts, 6, 3)) + diff --git a/tests/baselines/reference/emitPinnedCommentsOnTopOfFile.types b/tests/baselines/reference/emitPinnedCommentsOnTopOfFile.types new file mode 100644 index 00000000000..0ada89e2802 --- /dev/null +++ b/tests/baselines/reference/emitPinnedCommentsOnTopOfFile.types @@ -0,0 +1,11 @@ +=== tests/cases/compiler/emitPinnedCommentsOnTopOfFile.ts === +/*! + + multi line + comment +*/ + +var x = 10; +>x : number +>10 : number + diff --git a/tests/baselines/reference/emitTopOfFileTripleSlashCommentOnNotEmittedNodeIfRemoveCommentsIsFalse.js b/tests/baselines/reference/emitTopOfFileTripleSlashCommentOnNotEmittedNodeIfRemoveCommentsIsFalse.js new file mode 100644 index 00000000000..ff358518568 --- /dev/null +++ b/tests/baselines/reference/emitTopOfFileTripleSlashCommentOnNotEmittedNodeIfRemoveCommentsIsFalse.js @@ -0,0 +1,20 @@ +//// [tests/cases/compiler/emitTopOfFileTripleSlashCommentOnNotEmittedNodeIfRemoveCommentsIsFalse.ts] //// + +//// [file0.ts] + +var x = 10 + +//// [file1.ts] +/// +declare var OData: any; + +/// +interface F { } + + + + +//// [file0.js] +var x = 10; +//// [file1.js] +/// diff --git a/tests/baselines/reference/emitTopOfFileTripleSlashCommentOnNotEmittedNodeIfRemoveCommentsIsFalse.symbols b/tests/baselines/reference/emitTopOfFileTripleSlashCommentOnNotEmittedNodeIfRemoveCommentsIsFalse.symbols new file mode 100644 index 00000000000..1c0e48e00f2 --- /dev/null +++ b/tests/baselines/reference/emitTopOfFileTripleSlashCommentOnNotEmittedNodeIfRemoveCommentsIsFalse.symbols @@ -0,0 +1,16 @@ +=== tests/cases/compiler/file1.ts === +/// +declare var OData: any; +>OData : Symbol(OData, Decl(file1.ts, 1, 11)) + +/// +interface F { } +>F : Symbol(F, Decl(file1.ts, 1, 23)) + + + +=== tests/cases/compiler/file0.ts === + +var x = 10 +>x : Symbol(x, Decl(file0.ts, 1, 3)) + diff --git a/tests/baselines/reference/emitTopOfFileTripleSlashCommentOnNotEmittedNodeIfRemoveCommentsIsFalse.types b/tests/baselines/reference/emitTopOfFileTripleSlashCommentOnNotEmittedNodeIfRemoveCommentsIsFalse.types new file mode 100644 index 00000000000..637196fdc22 --- /dev/null +++ b/tests/baselines/reference/emitTopOfFileTripleSlashCommentOnNotEmittedNodeIfRemoveCommentsIsFalse.types @@ -0,0 +1,17 @@ +=== tests/cases/compiler/file1.ts === +/// +declare var OData: any; +>OData : any + +/// +interface F { } +>F : F + + + +=== tests/cases/compiler/file0.ts === + +var x = 10 +>x : number +>10 : number + diff --git a/tests/baselines/reference/emptyArrayBindingPatternParameter01.js b/tests/baselines/reference/emptyArrayBindingPatternParameter01.js index 5723c74f117..1eb76741e84 100644 --- a/tests/baselines/reference/emptyArrayBindingPatternParameter01.js +++ b/tests/baselines/reference/emptyArrayBindingPatternParameter01.js @@ -1,6 +1,5 @@ //// [emptyArrayBindingPatternParameter01.ts] - function f([]) { var x, y, z; } @@ -9,3 +8,7 @@ function f([]) { function f(_a) { var x, y, z; } + + +//// [emptyArrayBindingPatternParameter01.d.ts] +declare function f([]: any[]): void; diff --git a/tests/baselines/reference/emptyArrayBindingPatternParameter01.symbols b/tests/baselines/reference/emptyArrayBindingPatternParameter01.symbols index f5089ce5850..e1630be639b 100644 --- a/tests/baselines/reference/emptyArrayBindingPatternParameter01.symbols +++ b/tests/baselines/reference/emptyArrayBindingPatternParameter01.symbols @@ -1,11 +1,10 @@ === tests/cases/conformance/es6/destructuring/emptyArrayBindingPatternParameter01.ts === - function f([]) { >f : Symbol(f, Decl(emptyArrayBindingPatternParameter01.ts, 0, 0)) var x, y, z; ->x : Symbol(x, Decl(emptyArrayBindingPatternParameter01.ts, 3, 7)) ->y : Symbol(y, Decl(emptyArrayBindingPatternParameter01.ts, 3, 10)) ->z : Symbol(z, Decl(emptyArrayBindingPatternParameter01.ts, 3, 13)) +>x : Symbol(x, Decl(emptyArrayBindingPatternParameter01.ts, 2, 7)) +>y : Symbol(y, Decl(emptyArrayBindingPatternParameter01.ts, 2, 10)) +>z : Symbol(z, Decl(emptyArrayBindingPatternParameter01.ts, 2, 13)) } diff --git a/tests/baselines/reference/emptyArrayBindingPatternParameter01.types b/tests/baselines/reference/emptyArrayBindingPatternParameter01.types index 7ef40d52d59..4ca0b892ecf 100644 --- a/tests/baselines/reference/emptyArrayBindingPatternParameter01.types +++ b/tests/baselines/reference/emptyArrayBindingPatternParameter01.types @@ -1,6 +1,5 @@ === tests/cases/conformance/es6/destructuring/emptyArrayBindingPatternParameter01.ts === - function f([]) { >f : ([]: any[]) => void diff --git a/tests/baselines/reference/emptyArrayBindingPatternParameter02.js b/tests/baselines/reference/emptyArrayBindingPatternParameter02.js index dbd86e843a8..d6dda16e12f 100644 --- a/tests/baselines/reference/emptyArrayBindingPatternParameter02.js +++ b/tests/baselines/reference/emptyArrayBindingPatternParameter02.js @@ -1,6 +1,5 @@ //// [emptyArrayBindingPatternParameter02.ts] - function f(a, []) { var x, y, z; } @@ -9,3 +8,7 @@ function f(a, []) { function f(a, _a) { var x, y, z; } + + +//// [emptyArrayBindingPatternParameter02.d.ts] +declare function f(a: any, []: any[]): void; diff --git a/tests/baselines/reference/emptyArrayBindingPatternParameter02.symbols b/tests/baselines/reference/emptyArrayBindingPatternParameter02.symbols index 48cdcfaf93d..3289c06f962 100644 --- a/tests/baselines/reference/emptyArrayBindingPatternParameter02.symbols +++ b/tests/baselines/reference/emptyArrayBindingPatternParameter02.symbols @@ -1,12 +1,11 @@ === tests/cases/conformance/es6/destructuring/emptyArrayBindingPatternParameter02.ts === - function f(a, []) { >f : Symbol(f, Decl(emptyArrayBindingPatternParameter02.ts, 0, 0)) ->a : Symbol(a, Decl(emptyArrayBindingPatternParameter02.ts, 2, 11)) +>a : Symbol(a, Decl(emptyArrayBindingPatternParameter02.ts, 1, 11)) var x, y, z; ->x : Symbol(x, Decl(emptyArrayBindingPatternParameter02.ts, 3, 7)) ->y : Symbol(y, Decl(emptyArrayBindingPatternParameter02.ts, 3, 10)) ->z : Symbol(z, Decl(emptyArrayBindingPatternParameter02.ts, 3, 13)) +>x : Symbol(x, Decl(emptyArrayBindingPatternParameter02.ts, 2, 7)) +>y : Symbol(y, Decl(emptyArrayBindingPatternParameter02.ts, 2, 10)) +>z : Symbol(z, Decl(emptyArrayBindingPatternParameter02.ts, 2, 13)) } diff --git a/tests/baselines/reference/emptyArrayBindingPatternParameter02.types b/tests/baselines/reference/emptyArrayBindingPatternParameter02.types index a58fe6b91d3..34d9e7dde6b 100644 --- a/tests/baselines/reference/emptyArrayBindingPatternParameter02.types +++ b/tests/baselines/reference/emptyArrayBindingPatternParameter02.types @@ -1,6 +1,5 @@ === tests/cases/conformance/es6/destructuring/emptyArrayBindingPatternParameter02.ts === - function f(a, []) { >f : (a: any, []: any[]) => void >a : any diff --git a/tests/baselines/reference/emptyArrayBindingPatternParameter03.js b/tests/baselines/reference/emptyArrayBindingPatternParameter03.js index e2c3f7196e6..4867b39ac2f 100644 --- a/tests/baselines/reference/emptyArrayBindingPatternParameter03.js +++ b/tests/baselines/reference/emptyArrayBindingPatternParameter03.js @@ -1,6 +1,5 @@ //// [emptyArrayBindingPatternParameter03.ts] - function f(a, []) { var x, y, z; } @@ -9,3 +8,7 @@ function f(a, []) { function f(a, _a) { var x, y, z; } + + +//// [emptyArrayBindingPatternParameter03.d.ts] +declare function f(a: any, []: any[]): void; diff --git a/tests/baselines/reference/emptyArrayBindingPatternParameter03.symbols b/tests/baselines/reference/emptyArrayBindingPatternParameter03.symbols index d3ec078df78..86a95687310 100644 --- a/tests/baselines/reference/emptyArrayBindingPatternParameter03.symbols +++ b/tests/baselines/reference/emptyArrayBindingPatternParameter03.symbols @@ -1,12 +1,11 @@ === tests/cases/conformance/es6/destructuring/emptyArrayBindingPatternParameter03.ts === - function f(a, []) { >f : Symbol(f, Decl(emptyArrayBindingPatternParameter03.ts, 0, 0)) ->a : Symbol(a, Decl(emptyArrayBindingPatternParameter03.ts, 2, 11)) +>a : Symbol(a, Decl(emptyArrayBindingPatternParameter03.ts, 1, 11)) var x, y, z; ->x : Symbol(x, Decl(emptyArrayBindingPatternParameter03.ts, 3, 7)) ->y : Symbol(y, Decl(emptyArrayBindingPatternParameter03.ts, 3, 10)) ->z : Symbol(z, Decl(emptyArrayBindingPatternParameter03.ts, 3, 13)) +>x : Symbol(x, Decl(emptyArrayBindingPatternParameter03.ts, 2, 7)) +>y : Symbol(y, Decl(emptyArrayBindingPatternParameter03.ts, 2, 10)) +>z : Symbol(z, Decl(emptyArrayBindingPatternParameter03.ts, 2, 13)) } diff --git a/tests/baselines/reference/emptyArrayBindingPatternParameter03.types b/tests/baselines/reference/emptyArrayBindingPatternParameter03.types index 43f0af63ace..1c5579ebe36 100644 --- a/tests/baselines/reference/emptyArrayBindingPatternParameter03.types +++ b/tests/baselines/reference/emptyArrayBindingPatternParameter03.types @@ -1,6 +1,5 @@ === tests/cases/conformance/es6/destructuring/emptyArrayBindingPatternParameter03.ts === - function f(a, []) { >f : (a: any, []: any[]) => void >a : any diff --git a/tests/baselines/reference/emptyArrayBindingPatternParameter04.js b/tests/baselines/reference/emptyArrayBindingPatternParameter04.js index e0715499ffe..c9819c88f40 100644 --- a/tests/baselines/reference/emptyArrayBindingPatternParameter04.js +++ b/tests/baselines/reference/emptyArrayBindingPatternParameter04.js @@ -1,6 +1,5 @@ //// [emptyArrayBindingPatternParameter04.ts] - function f([] = [1,2,3,4]) { var x, y, z; } @@ -10,3 +9,7 @@ function f(_a) { var _a = [1, 2, 3, 4]; var x, y, z; } + + +//// [emptyArrayBindingPatternParameter04.d.ts] +declare function f([]?: number[]): void; diff --git a/tests/baselines/reference/emptyArrayBindingPatternParameter04.symbols b/tests/baselines/reference/emptyArrayBindingPatternParameter04.symbols index bb76a2c5925..9f4c9bae0c6 100644 --- a/tests/baselines/reference/emptyArrayBindingPatternParameter04.symbols +++ b/tests/baselines/reference/emptyArrayBindingPatternParameter04.symbols @@ -1,11 +1,10 @@ === tests/cases/conformance/es6/destructuring/emptyArrayBindingPatternParameter04.ts === - function f([] = [1,2,3,4]) { >f : Symbol(f, Decl(emptyArrayBindingPatternParameter04.ts, 0, 0)) var x, y, z; ->x : Symbol(x, Decl(emptyArrayBindingPatternParameter04.ts, 3, 7)) ->y : Symbol(y, Decl(emptyArrayBindingPatternParameter04.ts, 3, 10)) ->z : Symbol(z, Decl(emptyArrayBindingPatternParameter04.ts, 3, 13)) +>x : Symbol(x, Decl(emptyArrayBindingPatternParameter04.ts, 2, 7)) +>y : Symbol(y, Decl(emptyArrayBindingPatternParameter04.ts, 2, 10)) +>z : Symbol(z, Decl(emptyArrayBindingPatternParameter04.ts, 2, 13)) } diff --git a/tests/baselines/reference/emptyArrayBindingPatternParameter04.types b/tests/baselines/reference/emptyArrayBindingPatternParameter04.types index 6f00a994f7b..834eb41b34d 100644 --- a/tests/baselines/reference/emptyArrayBindingPatternParameter04.types +++ b/tests/baselines/reference/emptyArrayBindingPatternParameter04.types @@ -1,6 +1,5 @@ === tests/cases/conformance/es6/destructuring/emptyArrayBindingPatternParameter04.ts === - function f([] = [1,2,3,4]) { >f : ([]?: number[]) => void >[1,2,3,4] : number[] diff --git a/tests/baselines/reference/emptyAssignmentPatterns01_ES5.js b/tests/baselines/reference/emptyAssignmentPatterns01_ES5.js index b89db88e5e5..fe0a642c51e 100644 --- a/tests/baselines/reference/emptyAssignmentPatterns01_ES5.js +++ b/tests/baselines/reference/emptyAssignmentPatterns01_ES5.js @@ -9,3 +9,7 @@ var a: any; var a; (a); (a); + + +//// [emptyAssignmentPatterns01_ES5.d.ts] +declare var a: any; diff --git a/tests/baselines/reference/emptyAssignmentPatterns01_ES6.js b/tests/baselines/reference/emptyAssignmentPatterns01_ES6.js index fe311ac9061..4cf33452d98 100644 --- a/tests/baselines/reference/emptyAssignmentPatterns01_ES6.js +++ b/tests/baselines/reference/emptyAssignmentPatterns01_ES6.js @@ -9,3 +9,7 @@ var a: any; var a; ({} = a); ([] = a); + + +//// [emptyAssignmentPatterns01_ES6.d.ts] +declare var a: any; diff --git a/tests/baselines/reference/emptyAssignmentPatterns02_ES5.js b/tests/baselines/reference/emptyAssignmentPatterns02_ES5.js index 7b9f1f402f9..27a0b5f9b61 100644 --- a/tests/baselines/reference/emptyAssignmentPatterns02_ES5.js +++ b/tests/baselines/reference/emptyAssignmentPatterns02_ES5.js @@ -11,3 +11,8 @@ var a; var x, y, z, a1, a2, a3; ((x = a.x, y = a.y, z = a.z, a)); ((a1 = a[0], a2 = a[1], a3 = a[2], a)); + + +//// [emptyAssignmentPatterns02_ES5.d.ts] +declare var a: any; +declare let x: any, y: any, z: any, a1: any, a2: any, a3: any; diff --git a/tests/baselines/reference/emptyAssignmentPatterns02_ES6.js b/tests/baselines/reference/emptyAssignmentPatterns02_ES6.js index e9783c7e57d..493246c9473 100644 --- a/tests/baselines/reference/emptyAssignmentPatterns02_ES6.js +++ b/tests/baselines/reference/emptyAssignmentPatterns02_ES6.js @@ -11,3 +11,8 @@ var a; let x, y, z, a1, a2, a3; ({} = { x, y, z } = a); ([] = [a1, a2, a3] = a); + + +//// [emptyAssignmentPatterns02_ES6.d.ts] +declare var a: any; +declare let x: any, y: any, z: any, a1: any, a2: any, a3: any; diff --git a/tests/baselines/reference/emptyAssignmentPatterns03_ES5.js b/tests/baselines/reference/emptyAssignmentPatterns03_ES5.js index d9ff8ba9ede..adaad2e3b63 100644 --- a/tests/baselines/reference/emptyAssignmentPatterns03_ES5.js +++ b/tests/baselines/reference/emptyAssignmentPatterns03_ES5.js @@ -9,3 +9,7 @@ var a: any; var a; (a); (a); + + +//// [emptyAssignmentPatterns03_ES5.d.ts] +declare var a: any; diff --git a/tests/baselines/reference/emptyAssignmentPatterns03_ES6.js b/tests/baselines/reference/emptyAssignmentPatterns03_ES6.js index 95bfdfefa52..8050cc1e47a 100644 --- a/tests/baselines/reference/emptyAssignmentPatterns03_ES6.js +++ b/tests/baselines/reference/emptyAssignmentPatterns03_ES6.js @@ -9,3 +9,7 @@ var a: any; var a; ({} = {} = a); ([] = [] = a); + + +//// [emptyAssignmentPatterns03_ES6.d.ts] +declare var a: any; diff --git a/tests/baselines/reference/emptyAssignmentPatterns04_ES5.js b/tests/baselines/reference/emptyAssignmentPatterns04_ES5.js index 7e342d08e39..e6b3cc7e3f2 100644 --- a/tests/baselines/reference/emptyAssignmentPatterns04_ES5.js +++ b/tests/baselines/reference/emptyAssignmentPatterns04_ES5.js @@ -12,3 +12,8 @@ var x, y, z, a1, a2, a3; (_a = a, x = _a.x, y = _a.y, z = _a.z, _a); (_b = a, a1 = _b[0], a2 = _b[1], a3 = _b[2], _b); var _a, _b; + + +//// [emptyAssignmentPatterns04_ES5.d.ts] +declare var a: any; +declare let x: any, y: any, z: any, a1: any, a2: any, a3: any; diff --git a/tests/baselines/reference/emptyAssignmentPatterns04_ES6.js b/tests/baselines/reference/emptyAssignmentPatterns04_ES6.js index eabc2678c05..fb52975d6d1 100644 --- a/tests/baselines/reference/emptyAssignmentPatterns04_ES6.js +++ b/tests/baselines/reference/emptyAssignmentPatterns04_ES6.js @@ -11,3 +11,8 @@ var a; let x, y, z, a1, a2, a3; ({ x, y, z } = {} = a); ([a1, a2, a3] = [] = a); + + +//// [emptyAssignmentPatterns04_ES6.d.ts] +declare var a: any; +declare let x: any, y: any, z: any, a1: any, a2: any, a3: any; diff --git a/tests/baselines/reference/emptyModuleName.errors.txt b/tests/baselines/reference/emptyModuleName.errors.txt new file mode 100644 index 00000000000..16f04b247ea --- /dev/null +++ b/tests/baselines/reference/emptyModuleName.errors.txt @@ -0,0 +1,9 @@ +tests/cases/compiler/emptyModuleName.ts(1,20): error TS2307: Cannot find module ''. + + +==== tests/cases/compiler/emptyModuleName.ts (1 errors) ==== + import * as A from ""; + ~~ +!!! error TS2307: Cannot find module ''. + class B extends A { + } \ No newline at end of file diff --git a/tests/baselines/reference/emptyModuleName.js b/tests/baselines/reference/emptyModuleName.js new file mode 100644 index 00000000000..bb870f717c1 --- /dev/null +++ b/tests/baselines/reference/emptyModuleName.js @@ -0,0 +1,19 @@ +//// [emptyModuleName.ts] +import * as A from ""; +class B extends A { +} + +//// [emptyModuleName.js] +var __extends = (this && this.__extends) || function (d, b) { + for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; + function __() { this.constructor = d; } + d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __()); +}; +var A = require(""); +var B = (function (_super) { + __extends(B, _super); + function B() { + _super.apply(this, arguments); + } + return B; +})(A); diff --git a/tests/baselines/reference/emptyObjectBindingPatternParameter01.js b/tests/baselines/reference/emptyObjectBindingPatternParameter01.js index 28cc30d2a0b..6a8ec808cd0 100644 --- a/tests/baselines/reference/emptyObjectBindingPatternParameter01.js +++ b/tests/baselines/reference/emptyObjectBindingPatternParameter01.js @@ -1,6 +1,5 @@ //// [emptyObjectBindingPatternParameter01.ts] - function f({}) { var x, y, z; } @@ -9,3 +8,7 @@ function f({}) { function f(_a) { var x, y, z; } + + +//// [emptyObjectBindingPatternParameter01.d.ts] +declare function f({}: {}): void; diff --git a/tests/baselines/reference/emptyObjectBindingPatternParameter01.symbols b/tests/baselines/reference/emptyObjectBindingPatternParameter01.symbols index 98829df994f..3ef5898c29a 100644 --- a/tests/baselines/reference/emptyObjectBindingPatternParameter01.symbols +++ b/tests/baselines/reference/emptyObjectBindingPatternParameter01.symbols @@ -1,11 +1,10 @@ === tests/cases/conformance/es6/destructuring/emptyObjectBindingPatternParameter01.ts === - function f({}) { >f : Symbol(f, Decl(emptyObjectBindingPatternParameter01.ts, 0, 0)) var x, y, z; ->x : Symbol(x, Decl(emptyObjectBindingPatternParameter01.ts, 3, 7)) ->y : Symbol(y, Decl(emptyObjectBindingPatternParameter01.ts, 3, 10)) ->z : Symbol(z, Decl(emptyObjectBindingPatternParameter01.ts, 3, 13)) +>x : Symbol(x, Decl(emptyObjectBindingPatternParameter01.ts, 2, 7)) +>y : Symbol(y, Decl(emptyObjectBindingPatternParameter01.ts, 2, 10)) +>z : Symbol(z, Decl(emptyObjectBindingPatternParameter01.ts, 2, 13)) } diff --git a/tests/baselines/reference/emptyObjectBindingPatternParameter01.types b/tests/baselines/reference/emptyObjectBindingPatternParameter01.types index c46569ea770..05ddc54719c 100644 --- a/tests/baselines/reference/emptyObjectBindingPatternParameter01.types +++ b/tests/baselines/reference/emptyObjectBindingPatternParameter01.types @@ -1,6 +1,5 @@ === tests/cases/conformance/es6/destructuring/emptyObjectBindingPatternParameter01.ts === - function f({}) { >f : ({}: {}) => void diff --git a/tests/baselines/reference/emptyObjectBindingPatternParameter02.js b/tests/baselines/reference/emptyObjectBindingPatternParameter02.js index 8488428ea51..be2bdcab298 100644 --- a/tests/baselines/reference/emptyObjectBindingPatternParameter02.js +++ b/tests/baselines/reference/emptyObjectBindingPatternParameter02.js @@ -1,6 +1,5 @@ //// [emptyObjectBindingPatternParameter02.ts] - function f(a, {}) { var x, y, z; } @@ -9,3 +8,7 @@ function f(a, {}) { function f(a, _a) { var x, y, z; } + + +//// [emptyObjectBindingPatternParameter02.d.ts] +declare function f(a: any, {}: {}): void; diff --git a/tests/baselines/reference/emptyObjectBindingPatternParameter02.symbols b/tests/baselines/reference/emptyObjectBindingPatternParameter02.symbols index fb0fa946b6f..d5bb4f292aa 100644 --- a/tests/baselines/reference/emptyObjectBindingPatternParameter02.symbols +++ b/tests/baselines/reference/emptyObjectBindingPatternParameter02.symbols @@ -1,12 +1,11 @@ === tests/cases/conformance/es6/destructuring/emptyObjectBindingPatternParameter02.ts === - function f(a, {}) { >f : Symbol(f, Decl(emptyObjectBindingPatternParameter02.ts, 0, 0)) ->a : Symbol(a, Decl(emptyObjectBindingPatternParameter02.ts, 2, 11)) +>a : Symbol(a, Decl(emptyObjectBindingPatternParameter02.ts, 1, 11)) var x, y, z; ->x : Symbol(x, Decl(emptyObjectBindingPatternParameter02.ts, 3, 7)) ->y : Symbol(y, Decl(emptyObjectBindingPatternParameter02.ts, 3, 10)) ->z : Symbol(z, Decl(emptyObjectBindingPatternParameter02.ts, 3, 13)) +>x : Symbol(x, Decl(emptyObjectBindingPatternParameter02.ts, 2, 7)) +>y : Symbol(y, Decl(emptyObjectBindingPatternParameter02.ts, 2, 10)) +>z : Symbol(z, Decl(emptyObjectBindingPatternParameter02.ts, 2, 13)) } diff --git a/tests/baselines/reference/emptyObjectBindingPatternParameter02.types b/tests/baselines/reference/emptyObjectBindingPatternParameter02.types index 0a77fac8588..e2b485538e6 100644 --- a/tests/baselines/reference/emptyObjectBindingPatternParameter02.types +++ b/tests/baselines/reference/emptyObjectBindingPatternParameter02.types @@ -1,6 +1,5 @@ === tests/cases/conformance/es6/destructuring/emptyObjectBindingPatternParameter02.ts === - function f(a, {}) { >f : (a: any, {}: {}) => void >a : any diff --git a/tests/baselines/reference/emptyObjectBindingPatternParameter03.js b/tests/baselines/reference/emptyObjectBindingPatternParameter03.js index 0279744e386..320bfe2d0df 100644 --- a/tests/baselines/reference/emptyObjectBindingPatternParameter03.js +++ b/tests/baselines/reference/emptyObjectBindingPatternParameter03.js @@ -1,6 +1,5 @@ //// [emptyObjectBindingPatternParameter03.ts] - function f({}, a) { var x, y, z; } @@ -9,3 +8,7 @@ function f({}, a) { function f(_a, a) { var x, y, z; } + + +//// [emptyObjectBindingPatternParameter03.d.ts] +declare function f({}: {}, a: any): void; diff --git a/tests/baselines/reference/emptyObjectBindingPatternParameter03.symbols b/tests/baselines/reference/emptyObjectBindingPatternParameter03.symbols index 4e658e21ccf..82a1bcee75b 100644 --- a/tests/baselines/reference/emptyObjectBindingPatternParameter03.symbols +++ b/tests/baselines/reference/emptyObjectBindingPatternParameter03.symbols @@ -1,12 +1,11 @@ === tests/cases/conformance/es6/destructuring/emptyObjectBindingPatternParameter03.ts === - function f({}, a) { >f : Symbol(f, Decl(emptyObjectBindingPatternParameter03.ts, 0, 0)) ->a : Symbol(a, Decl(emptyObjectBindingPatternParameter03.ts, 2, 14)) +>a : Symbol(a, Decl(emptyObjectBindingPatternParameter03.ts, 1, 14)) var x, y, z; ->x : Symbol(x, Decl(emptyObjectBindingPatternParameter03.ts, 3, 7)) ->y : Symbol(y, Decl(emptyObjectBindingPatternParameter03.ts, 3, 10)) ->z : Symbol(z, Decl(emptyObjectBindingPatternParameter03.ts, 3, 13)) +>x : Symbol(x, Decl(emptyObjectBindingPatternParameter03.ts, 2, 7)) +>y : Symbol(y, Decl(emptyObjectBindingPatternParameter03.ts, 2, 10)) +>z : Symbol(z, Decl(emptyObjectBindingPatternParameter03.ts, 2, 13)) } diff --git a/tests/baselines/reference/emptyObjectBindingPatternParameter03.types b/tests/baselines/reference/emptyObjectBindingPatternParameter03.types index 873c748dd9b..0f89702402a 100644 --- a/tests/baselines/reference/emptyObjectBindingPatternParameter03.types +++ b/tests/baselines/reference/emptyObjectBindingPatternParameter03.types @@ -1,6 +1,5 @@ === tests/cases/conformance/es6/destructuring/emptyObjectBindingPatternParameter03.ts === - function f({}, a) { >f : ({}: {}, a: any) => void >a : any diff --git a/tests/baselines/reference/emptyObjectBindingPatternParameter04.errors.txt b/tests/baselines/reference/emptyObjectBindingPatternParameter04.errors.txt new file mode 100644 index 00000000000..03b58378a0f --- /dev/null +++ b/tests/baselines/reference/emptyObjectBindingPatternParameter04.errors.txt @@ -0,0 +1,16 @@ +tests/cases/conformance/es6/destructuring/emptyObjectBindingPatternParameter04.ts(2,18): error TS2353: Object literal may only specify known properties, and 'a' does not exist in type '{}'. +tests/cases/conformance/es6/destructuring/emptyObjectBindingPatternParameter04.ts(2,24): error TS2353: Object literal may only specify known properties, and 'b' does not exist in type '{}'. +tests/cases/conformance/es6/destructuring/emptyObjectBindingPatternParameter04.ts(2,32): error TS2353: Object literal may only specify known properties, and 'c' does not exist in type '{}'. + + +==== tests/cases/conformance/es6/destructuring/emptyObjectBindingPatternParameter04.ts (3 errors) ==== + + function f({} = {a: 1, b: "2", c: true}) { + ~ +!!! error TS2353: Object literal may only specify known properties, and 'a' does not exist in type '{}'. + ~ +!!! error TS2353: Object literal may only specify known properties, and 'b' does not exist in type '{}'. + ~ +!!! error TS2353: Object literal may only specify known properties, and 'c' does not exist in type '{}'. + var x, y, z; + } \ No newline at end of file diff --git a/tests/baselines/reference/emptyObjectBindingPatternParameter04.js b/tests/baselines/reference/emptyObjectBindingPatternParameter04.js index fc3e41d0709..8c128bb806e 100644 --- a/tests/baselines/reference/emptyObjectBindingPatternParameter04.js +++ b/tests/baselines/reference/emptyObjectBindingPatternParameter04.js @@ -1,6 +1,5 @@ //// [emptyObjectBindingPatternParameter04.ts] - function f({} = {a: 1, b: "2", c: true}) { var x, y, z; } @@ -10,3 +9,11 @@ function f(_a) { var _a = { a: 1, b: "2", c: true }; var x, y, z; } + + +//// [emptyObjectBindingPatternParameter04.d.ts] +declare function f({}?: { + a: number; + b: string; + c: boolean; +}): void; diff --git a/tests/baselines/reference/emptyObjectBindingPatternParameter04.symbols b/tests/baselines/reference/emptyObjectBindingPatternParameter04.symbols deleted file mode 100644 index 9922d4cd074..00000000000 --- a/tests/baselines/reference/emptyObjectBindingPatternParameter04.symbols +++ /dev/null @@ -1,14 +0,0 @@ -=== tests/cases/conformance/es6/destructuring/emptyObjectBindingPatternParameter04.ts === - - -function f({} = {a: 1, b: "2", c: true}) { ->f : Symbol(f, Decl(emptyObjectBindingPatternParameter04.ts, 0, 0)) ->a : Symbol(a, Decl(emptyObjectBindingPatternParameter04.ts, 2, 17)) ->b : Symbol(b, Decl(emptyObjectBindingPatternParameter04.ts, 2, 22)) ->c : Symbol(c, Decl(emptyObjectBindingPatternParameter04.ts, 2, 30)) - - var x, y, z; ->x : Symbol(x, Decl(emptyObjectBindingPatternParameter04.ts, 3, 7)) ->y : Symbol(y, Decl(emptyObjectBindingPatternParameter04.ts, 3, 10)) ->z : Symbol(z, Decl(emptyObjectBindingPatternParameter04.ts, 3, 13)) -} diff --git a/tests/baselines/reference/emptyObjectBindingPatternParameter04.types b/tests/baselines/reference/emptyObjectBindingPatternParameter04.types deleted file mode 100644 index 5ee32d422a9..00000000000 --- a/tests/baselines/reference/emptyObjectBindingPatternParameter04.types +++ /dev/null @@ -1,18 +0,0 @@ -=== tests/cases/conformance/es6/destructuring/emptyObjectBindingPatternParameter04.ts === - - -function f({} = {a: 1, b: "2", c: true}) { ->f : ({}?: { a: number; b: string; c: boolean; }) => void ->{a: 1, b: "2", c: true} : { a: number; b: string; c: boolean; } ->a : number ->1 : number ->b : string ->"2" : string ->c : boolean ->true : boolean - - var x, y, z; ->x : any ->y : any ->z : any -} diff --git a/tests/baselines/reference/emptyVariableDeclarationBindingPatterns01_ES5.js b/tests/baselines/reference/emptyVariableDeclarationBindingPatterns01_ES5.js new file mode 100644 index 00000000000..11c4f4e1807 --- /dev/null +++ b/tests/baselines/reference/emptyVariableDeclarationBindingPatterns01_ES5.js @@ -0,0 +1,101 @@ +//// [emptyVariableDeclarationBindingPatterns01_ES5.ts] + +(function () { + var a: any; + + var {} = a; + let {} = a; + const {} = a; + + var [] = a; + let [] = a; + const [] = a; + + var {} = a, [] = a; + let {} = a, [] = a; + const {} = a, [] = a; + + var { p1: {}, p2: [] } = a; + let { p1: {}, p2: [] } = a; + const { p1: {}, p2: [] } = a; + + for (var {} = {}, {} = {}; false; void 0) { + } + + function f({} = a, [] = a, { p: {} = a} = a) { + return ({} = a, [] = a, { p: {} = a } = a) => a; + } +})(); + +(function () { + const ns: number[][] = []; + + for (var {} of ns) { + } + + for (let {} of ns) { + } + + for (const {} of ns) { + } + + for (var [] of ns) { + } + + for (let [] of ns) { + } + + for (const [] of ns) { + } +})(); + +//// [emptyVariableDeclarationBindingPatterns01_ES5.js] +(function () { + var a; + var _a = a; + var _b = a; + var _c = a; + var _d = a; + var _e = a; + var _f = a; + var _g = a, _h = a; + var _j = a, _k = a; + var _l = a, _m = a; + var _o = a.p1, _p = a.p2; + var _q = a.p1, _r = a.p2; + var _s = a.p1, _t = a.p2; + for (var _u = {}, _v = {}; false; void 0) { + } + function f(_a, _b, _c) { + var _a = a; + var _b = a; + var _d = (_c === void 0 ? a : _c).p, _e = _d === void 0 ? a : _d; + return function (_a, _b, _c) { + var _a = a; + var _b = a; + var _d = (_c === void 0 ? a : _c).p, _e = _d === void 0 ? a : _d; + return a; + }; + } +})(); +(function () { + var ns = []; + for (var _i = 0; _i < ns.length; _i++) { + var _a = ns[_i]; + } + for (var _b = 0; _b < ns.length; _b++) { + var _c = ns[_b]; + } + for (var _d = 0; _d < ns.length; _d++) { + var _e = ns[_d]; + } + for (var _f = 0; _f < ns.length; _f++) { + var _g = ns[_f]; + } + for (var _h = 0; _h < ns.length; _h++) { + var _j = ns[_h]; + } + for (var _k = 0; _k < ns.length; _k++) { + var _l = ns[_k]; + } +})(); diff --git a/tests/baselines/reference/emptyVariableDeclarationBindingPatterns01_ES5.symbols b/tests/baselines/reference/emptyVariableDeclarationBindingPatterns01_ES5.symbols new file mode 100644 index 00000000000..ddba9738e08 --- /dev/null +++ b/tests/baselines/reference/emptyVariableDeclarationBindingPatterns01_ES5.symbols @@ -0,0 +1,92 @@ +=== tests/cases/conformance/es6/destructuring/emptyVariableDeclarationBindingPatterns01_ES5.ts === + +(function () { + var a: any; +>a : Symbol(a, Decl(emptyVariableDeclarationBindingPatterns01_ES5.ts, 2, 7)) + + var {} = a; +>a : Symbol(a, Decl(emptyVariableDeclarationBindingPatterns01_ES5.ts, 2, 7)) + + let {} = a; +>a : Symbol(a, Decl(emptyVariableDeclarationBindingPatterns01_ES5.ts, 2, 7)) + + const {} = a; +>a : Symbol(a, Decl(emptyVariableDeclarationBindingPatterns01_ES5.ts, 2, 7)) + + var [] = a; +>a : Symbol(a, Decl(emptyVariableDeclarationBindingPatterns01_ES5.ts, 2, 7)) + + let [] = a; +>a : Symbol(a, Decl(emptyVariableDeclarationBindingPatterns01_ES5.ts, 2, 7)) + + const [] = a; +>a : Symbol(a, Decl(emptyVariableDeclarationBindingPatterns01_ES5.ts, 2, 7)) + + var {} = a, [] = a; +>a : Symbol(a, Decl(emptyVariableDeclarationBindingPatterns01_ES5.ts, 2, 7)) +>a : Symbol(a, Decl(emptyVariableDeclarationBindingPatterns01_ES5.ts, 2, 7)) + + let {} = a, [] = a; +>a : Symbol(a, Decl(emptyVariableDeclarationBindingPatterns01_ES5.ts, 2, 7)) +>a : Symbol(a, Decl(emptyVariableDeclarationBindingPatterns01_ES5.ts, 2, 7)) + + const {} = a, [] = a; +>a : Symbol(a, Decl(emptyVariableDeclarationBindingPatterns01_ES5.ts, 2, 7)) +>a : Symbol(a, Decl(emptyVariableDeclarationBindingPatterns01_ES5.ts, 2, 7)) + + var { p1: {}, p2: [] } = a; +>a : Symbol(a, Decl(emptyVariableDeclarationBindingPatterns01_ES5.ts, 2, 7)) + + let { p1: {}, p2: [] } = a; +>a : Symbol(a, Decl(emptyVariableDeclarationBindingPatterns01_ES5.ts, 2, 7)) + + const { p1: {}, p2: [] } = a; +>a : Symbol(a, Decl(emptyVariableDeclarationBindingPatterns01_ES5.ts, 2, 7)) + + for (var {} = {}, {} = {}; false; void 0) { + } + + function f({} = a, [] = a, { p: {} = a} = a) { +>f : Symbol(f, Decl(emptyVariableDeclarationBindingPatterns01_ES5.ts, 21, 5)) +>a : Symbol(a, Decl(emptyVariableDeclarationBindingPatterns01_ES5.ts, 2, 7)) +>a : Symbol(a, Decl(emptyVariableDeclarationBindingPatterns01_ES5.ts, 2, 7)) +>a : Symbol(a, Decl(emptyVariableDeclarationBindingPatterns01_ES5.ts, 2, 7)) +>a : Symbol(a, Decl(emptyVariableDeclarationBindingPatterns01_ES5.ts, 2, 7)) + + return ({} = a, [] = a, { p: {} = a } = a) => a; +>a : Symbol(a, Decl(emptyVariableDeclarationBindingPatterns01_ES5.ts, 2, 7)) +>a : Symbol(a, Decl(emptyVariableDeclarationBindingPatterns01_ES5.ts, 2, 7)) +>a : Symbol(a, Decl(emptyVariableDeclarationBindingPatterns01_ES5.ts, 2, 7)) +>a : Symbol(a, Decl(emptyVariableDeclarationBindingPatterns01_ES5.ts, 2, 7)) +>a : Symbol(a, Decl(emptyVariableDeclarationBindingPatterns01_ES5.ts, 2, 7)) + } +})(); + +(function () { + const ns: number[][] = []; +>ns : Symbol(ns, Decl(emptyVariableDeclarationBindingPatterns01_ES5.ts, 29, 9)) + + for (var {} of ns) { +>ns : Symbol(ns, Decl(emptyVariableDeclarationBindingPatterns01_ES5.ts, 29, 9)) + } + + for (let {} of ns) { +>ns : Symbol(ns, Decl(emptyVariableDeclarationBindingPatterns01_ES5.ts, 29, 9)) + } + + for (const {} of ns) { +>ns : Symbol(ns, Decl(emptyVariableDeclarationBindingPatterns01_ES5.ts, 29, 9)) + } + + for (var [] of ns) { +>ns : Symbol(ns, Decl(emptyVariableDeclarationBindingPatterns01_ES5.ts, 29, 9)) + } + + for (let [] of ns) { +>ns : Symbol(ns, Decl(emptyVariableDeclarationBindingPatterns01_ES5.ts, 29, 9)) + } + + for (const [] of ns) { +>ns : Symbol(ns, Decl(emptyVariableDeclarationBindingPatterns01_ES5.ts, 29, 9)) + } +})(); diff --git a/tests/baselines/reference/emptyVariableDeclarationBindingPatterns01_ES5.types b/tests/baselines/reference/emptyVariableDeclarationBindingPatterns01_ES5.types new file mode 100644 index 00000000000..ed6b935db0f --- /dev/null +++ b/tests/baselines/reference/emptyVariableDeclarationBindingPatterns01_ES5.types @@ -0,0 +1,115 @@ +=== tests/cases/conformance/es6/destructuring/emptyVariableDeclarationBindingPatterns01_ES5.ts === + +(function () { +>(function () { var a: any; var {} = a; let {} = a; const {} = a; var [] = a; let [] = a; const [] = a; var {} = a, [] = a; let {} = a, [] = a; const {} = a, [] = a; var { p1: {}, p2: [] } = a; let { p1: {}, p2: [] } = a; const { p1: {}, p2: [] } = a; for (var {} = {}, {} = {}; false; void 0) { } function f({} = a, [] = a, { p: {} = a} = a) { return ({} = a, [] = a, { p: {} = a } = a) => a; }})() : void +>(function () { var a: any; var {} = a; let {} = a; const {} = a; var [] = a; let [] = a; const [] = a; var {} = a, [] = a; let {} = a, [] = a; const {} = a, [] = a; var { p1: {}, p2: [] } = a; let { p1: {}, p2: [] } = a; const { p1: {}, p2: [] } = a; for (var {} = {}, {} = {}; false; void 0) { } function f({} = a, [] = a, { p: {} = a} = a) { return ({} = a, [] = a, { p: {} = a } = a) => a; }}) : () => void +>function () { var a: any; var {} = a; let {} = a; const {} = a; var [] = a; let [] = a; const [] = a; var {} = a, [] = a; let {} = a, [] = a; const {} = a, [] = a; var { p1: {}, p2: [] } = a; let { p1: {}, p2: [] } = a; const { p1: {}, p2: [] } = a; for (var {} = {}, {} = {}; false; void 0) { } function f({} = a, [] = a, { p: {} = a} = a) { return ({} = a, [] = a, { p: {} = a } = a) => a; }} : () => void + + var a: any; +>a : any + + var {} = a; +>a : any + + let {} = a; +>a : any + + const {} = a; +>a : any + + var [] = a; +>a : any + + let [] = a; +>a : any + + const [] = a; +>a : any + + var {} = a, [] = a; +>a : any +>a : any + + let {} = a, [] = a; +>a : any +>a : any + + const {} = a, [] = a; +>a : any +>a : any + + var { p1: {}, p2: [] } = a; +>p1 : any +>p2 : any +>a : any + + let { p1: {}, p2: [] } = a; +>p1 : any +>p2 : any +>a : any + + const { p1: {}, p2: [] } = a; +>p1 : any +>p2 : any +>a : any + + for (var {} = {}, {} = {}; false; void 0) { +>{} : {} +>{} : {} +>false : boolean +>void 0 : undefined +>0 : number + } + + function f({} = a, [] = a, { p: {} = a} = a) { +>f : ({}?: any, []?: any, { p: {} = a}?: any) => ({}?: any, []?: any, { p: {} = a }?: any) => any +>a : any +>a : any +>p : any +>a : any +>a : any + + return ({} = a, [] = a, { p: {} = a } = a) => a; +>({} = a, [] = a, { p: {} = a } = a) => a : ({}?: any, []?: any, { p: {} = a }?: any) => any +>a : any +>a : any +>p : any +>a : any +>a : any +>a : any + } +})(); + +(function () { +>(function () { const ns: number[][] = []; for (var {} of ns) { } for (let {} of ns) { } for (const {} of ns) { } for (var [] of ns) { } for (let [] of ns) { } for (const [] of ns) { }})() : void +>(function () { const ns: number[][] = []; for (var {} of ns) { } for (let {} of ns) { } for (const {} of ns) { } for (var [] of ns) { } for (let [] of ns) { } for (const [] of ns) { }}) : () => void +>function () { const ns: number[][] = []; for (var {} of ns) { } for (let {} of ns) { } for (const {} of ns) { } for (var [] of ns) { } for (let [] of ns) { } for (const [] of ns) { }} : () => void + + const ns: number[][] = []; +>ns : number[][] +>[] : undefined[] + + for (var {} of ns) { +>ns : number[][] + } + + for (let {} of ns) { +>ns : number[][] + } + + for (const {} of ns) { +>ns : number[][] + } + + for (var [] of ns) { +>ns : number[][] + } + + for (let [] of ns) { +>ns : number[][] + } + + for (const [] of ns) { +>ns : number[][] + } +})(); diff --git a/tests/baselines/reference/emptyVariableDeclarationBindingPatterns01_ES6.js b/tests/baselines/reference/emptyVariableDeclarationBindingPatterns01_ES6.js new file mode 100644 index 00000000000..1303ab1e3d0 --- /dev/null +++ b/tests/baselines/reference/emptyVariableDeclarationBindingPatterns01_ES6.js @@ -0,0 +1,87 @@ +//// [emptyVariableDeclarationBindingPatterns01_ES6.ts] + +(function () { + var a: any; + + var {} = a; + let {} = a; + const {} = a; + + var [] = a; + let [] = a; + const [] = a; + + var {} = a, [] = a; + let {} = a, [] = a; + const {} = a, [] = a; + + var { p1: {}, p2: [] } = a; + let { p1: {}, p2: [] } = a; + const { p1: {}, p2: [] } = a; + + for (var {} = {}, {} = {}; false; void 0) { + } + + function f({} = a, [] = a, { p: {} = a} = a) { + return ({} = a, [] = a, { p: {} = a } = a) => a; + } +})(); + +(function () { + const ns: number[][] = []; + + for (var {} of ns) { + } + + for (let {} of ns) { + } + + for (const {} of ns) { + } + + for (var [] of ns) { + } + + for (let [] of ns) { + } + + for (const [] of ns) { + } +})(); + +//// [emptyVariableDeclarationBindingPatterns01_ES6.js] +(function () { + var a; + var { } = a; + let { } = a; + const { } = a; + var [] = a; + let [] = a; + const [] = a; + var { } = a, [] = a; + let { } = a, [] = a; + const { } = a, [] = a; + var { p1: { }, p2: [] } = a; + let { p1: { }, p2: [] } = a; + const { p1: { }, p2: [] } = a; + for (var { } = {}, { } = {}; false; void 0) { + } + function f({ } = a, [] = a, { p: { } = a } = a) { + return ({ } = a, [] = a, { p: { } = a } = a) => a; + } +})(); +(function () { + const ns = []; + for (var { } of ns) { + } + for (let { } of ns) { + } + for (const { } of ns) { + } + for (var [] of ns) { + } + for (let [] of ns) { + } + for (const [] of ns) { + } +})(); diff --git a/tests/baselines/reference/emptyVariableDeclarationBindingPatterns01_ES6.symbols b/tests/baselines/reference/emptyVariableDeclarationBindingPatterns01_ES6.symbols new file mode 100644 index 00000000000..6a826d4b6c9 --- /dev/null +++ b/tests/baselines/reference/emptyVariableDeclarationBindingPatterns01_ES6.symbols @@ -0,0 +1,92 @@ +=== tests/cases/conformance/es6/destructuring/emptyVariableDeclarationBindingPatterns01_ES6.ts === + +(function () { + var a: any; +>a : Symbol(a, Decl(emptyVariableDeclarationBindingPatterns01_ES6.ts, 2, 7)) + + var {} = a; +>a : Symbol(a, Decl(emptyVariableDeclarationBindingPatterns01_ES6.ts, 2, 7)) + + let {} = a; +>a : Symbol(a, Decl(emptyVariableDeclarationBindingPatterns01_ES6.ts, 2, 7)) + + const {} = a; +>a : Symbol(a, Decl(emptyVariableDeclarationBindingPatterns01_ES6.ts, 2, 7)) + + var [] = a; +>a : Symbol(a, Decl(emptyVariableDeclarationBindingPatterns01_ES6.ts, 2, 7)) + + let [] = a; +>a : Symbol(a, Decl(emptyVariableDeclarationBindingPatterns01_ES6.ts, 2, 7)) + + const [] = a; +>a : Symbol(a, Decl(emptyVariableDeclarationBindingPatterns01_ES6.ts, 2, 7)) + + var {} = a, [] = a; +>a : Symbol(a, Decl(emptyVariableDeclarationBindingPatterns01_ES6.ts, 2, 7)) +>a : Symbol(a, Decl(emptyVariableDeclarationBindingPatterns01_ES6.ts, 2, 7)) + + let {} = a, [] = a; +>a : Symbol(a, Decl(emptyVariableDeclarationBindingPatterns01_ES6.ts, 2, 7)) +>a : Symbol(a, Decl(emptyVariableDeclarationBindingPatterns01_ES6.ts, 2, 7)) + + const {} = a, [] = a; +>a : Symbol(a, Decl(emptyVariableDeclarationBindingPatterns01_ES6.ts, 2, 7)) +>a : Symbol(a, Decl(emptyVariableDeclarationBindingPatterns01_ES6.ts, 2, 7)) + + var { p1: {}, p2: [] } = a; +>a : Symbol(a, Decl(emptyVariableDeclarationBindingPatterns01_ES6.ts, 2, 7)) + + let { p1: {}, p2: [] } = a; +>a : Symbol(a, Decl(emptyVariableDeclarationBindingPatterns01_ES6.ts, 2, 7)) + + const { p1: {}, p2: [] } = a; +>a : Symbol(a, Decl(emptyVariableDeclarationBindingPatterns01_ES6.ts, 2, 7)) + + for (var {} = {}, {} = {}; false; void 0) { + } + + function f({} = a, [] = a, { p: {} = a} = a) { +>f : Symbol(f, Decl(emptyVariableDeclarationBindingPatterns01_ES6.ts, 21, 5)) +>a : Symbol(a, Decl(emptyVariableDeclarationBindingPatterns01_ES6.ts, 2, 7)) +>a : Symbol(a, Decl(emptyVariableDeclarationBindingPatterns01_ES6.ts, 2, 7)) +>a : Symbol(a, Decl(emptyVariableDeclarationBindingPatterns01_ES6.ts, 2, 7)) +>a : Symbol(a, Decl(emptyVariableDeclarationBindingPatterns01_ES6.ts, 2, 7)) + + return ({} = a, [] = a, { p: {} = a } = a) => a; +>a : Symbol(a, Decl(emptyVariableDeclarationBindingPatterns01_ES6.ts, 2, 7)) +>a : Symbol(a, Decl(emptyVariableDeclarationBindingPatterns01_ES6.ts, 2, 7)) +>a : Symbol(a, Decl(emptyVariableDeclarationBindingPatterns01_ES6.ts, 2, 7)) +>a : Symbol(a, Decl(emptyVariableDeclarationBindingPatterns01_ES6.ts, 2, 7)) +>a : Symbol(a, Decl(emptyVariableDeclarationBindingPatterns01_ES6.ts, 2, 7)) + } +})(); + +(function () { + const ns: number[][] = []; +>ns : Symbol(ns, Decl(emptyVariableDeclarationBindingPatterns01_ES6.ts, 29, 9)) + + for (var {} of ns) { +>ns : Symbol(ns, Decl(emptyVariableDeclarationBindingPatterns01_ES6.ts, 29, 9)) + } + + for (let {} of ns) { +>ns : Symbol(ns, Decl(emptyVariableDeclarationBindingPatterns01_ES6.ts, 29, 9)) + } + + for (const {} of ns) { +>ns : Symbol(ns, Decl(emptyVariableDeclarationBindingPatterns01_ES6.ts, 29, 9)) + } + + for (var [] of ns) { +>ns : Symbol(ns, Decl(emptyVariableDeclarationBindingPatterns01_ES6.ts, 29, 9)) + } + + for (let [] of ns) { +>ns : Symbol(ns, Decl(emptyVariableDeclarationBindingPatterns01_ES6.ts, 29, 9)) + } + + for (const [] of ns) { +>ns : Symbol(ns, Decl(emptyVariableDeclarationBindingPatterns01_ES6.ts, 29, 9)) + } +})(); diff --git a/tests/baselines/reference/emptyVariableDeclarationBindingPatterns01_ES6.types b/tests/baselines/reference/emptyVariableDeclarationBindingPatterns01_ES6.types new file mode 100644 index 00000000000..fcb48048148 --- /dev/null +++ b/tests/baselines/reference/emptyVariableDeclarationBindingPatterns01_ES6.types @@ -0,0 +1,115 @@ +=== tests/cases/conformance/es6/destructuring/emptyVariableDeclarationBindingPatterns01_ES6.ts === + +(function () { +>(function () { var a: any; var {} = a; let {} = a; const {} = a; var [] = a; let [] = a; const [] = a; var {} = a, [] = a; let {} = a, [] = a; const {} = a, [] = a; var { p1: {}, p2: [] } = a; let { p1: {}, p2: [] } = a; const { p1: {}, p2: [] } = a; for (var {} = {}, {} = {}; false; void 0) { } function f({} = a, [] = a, { p: {} = a} = a) { return ({} = a, [] = a, { p: {} = a } = a) => a; }})() : void +>(function () { var a: any; var {} = a; let {} = a; const {} = a; var [] = a; let [] = a; const [] = a; var {} = a, [] = a; let {} = a, [] = a; const {} = a, [] = a; var { p1: {}, p2: [] } = a; let { p1: {}, p2: [] } = a; const { p1: {}, p2: [] } = a; for (var {} = {}, {} = {}; false; void 0) { } function f({} = a, [] = a, { p: {} = a} = a) { return ({} = a, [] = a, { p: {} = a } = a) => a; }}) : () => void +>function () { var a: any; var {} = a; let {} = a; const {} = a; var [] = a; let [] = a; const [] = a; var {} = a, [] = a; let {} = a, [] = a; const {} = a, [] = a; var { p1: {}, p2: [] } = a; let { p1: {}, p2: [] } = a; const { p1: {}, p2: [] } = a; for (var {} = {}, {} = {}; false; void 0) { } function f({} = a, [] = a, { p: {} = a} = a) { return ({} = a, [] = a, { p: {} = a } = a) => a; }} : () => void + + var a: any; +>a : any + + var {} = a; +>a : any + + let {} = a; +>a : any + + const {} = a; +>a : any + + var [] = a; +>a : any + + let [] = a; +>a : any + + const [] = a; +>a : any + + var {} = a, [] = a; +>a : any +>a : any + + let {} = a, [] = a; +>a : any +>a : any + + const {} = a, [] = a; +>a : any +>a : any + + var { p1: {}, p2: [] } = a; +>p1 : any +>p2 : any +>a : any + + let { p1: {}, p2: [] } = a; +>p1 : any +>p2 : any +>a : any + + const { p1: {}, p2: [] } = a; +>p1 : any +>p2 : any +>a : any + + for (var {} = {}, {} = {}; false; void 0) { +>{} : {} +>{} : {} +>false : boolean +>void 0 : undefined +>0 : number + } + + function f({} = a, [] = a, { p: {} = a} = a) { +>f : ({}?: any, []?: any, { p: {} = a}?: any) => ({}?: any, []?: any, { p: {} = a }?: any) => any +>a : any +>a : any +>p : any +>a : any +>a : any + + return ({} = a, [] = a, { p: {} = a } = a) => a; +>({} = a, [] = a, { p: {} = a } = a) => a : ({}?: any, []?: any, { p: {} = a }?: any) => any +>a : any +>a : any +>p : any +>a : any +>a : any +>a : any + } +})(); + +(function () { +>(function () { const ns: number[][] = []; for (var {} of ns) { } for (let {} of ns) { } for (const {} of ns) { } for (var [] of ns) { } for (let [] of ns) { } for (const [] of ns) { }})() : void +>(function () { const ns: number[][] = []; for (var {} of ns) { } for (let {} of ns) { } for (const {} of ns) { } for (var [] of ns) { } for (let [] of ns) { } for (const [] of ns) { }}) : () => void +>function () { const ns: number[][] = []; for (var {} of ns) { } for (let {} of ns) { } for (const {} of ns) { } for (var [] of ns) { } for (let [] of ns) { } for (const [] of ns) { }} : () => void + + const ns: number[][] = []; +>ns : number[][] +>[] : undefined[] + + for (var {} of ns) { +>ns : number[][] + } + + for (let {} of ns) { +>ns : number[][] + } + + for (const {} of ns) { +>ns : number[][] + } + + for (var [] of ns) { +>ns : number[][] + } + + for (let [] of ns) { +>ns : number[][] + } + + for (const [] of ns) { +>ns : number[][] + } +})(); diff --git a/tests/baselines/reference/emptyVariableDeclarationBindingPatterns02_ES5.errors.txt b/tests/baselines/reference/emptyVariableDeclarationBindingPatterns02_ES5.errors.txt new file mode 100644 index 00000000000..b589b075ecb --- /dev/null +++ b/tests/baselines/reference/emptyVariableDeclarationBindingPatterns02_ES5.errors.txt @@ -0,0 +1,31 @@ +tests/cases/conformance/es6/destructuring/emptyVariableDeclarationBindingPatterns02_ES5.ts(3,9): error TS1182: A destructuring declaration must have an initializer. +tests/cases/conformance/es6/destructuring/emptyVariableDeclarationBindingPatterns02_ES5.ts(4,9): error TS1182: A destructuring declaration must have an initializer. +tests/cases/conformance/es6/destructuring/emptyVariableDeclarationBindingPatterns02_ES5.ts(5,11): error TS1182: A destructuring declaration must have an initializer. +tests/cases/conformance/es6/destructuring/emptyVariableDeclarationBindingPatterns02_ES5.ts(7,9): error TS1182: A destructuring declaration must have an initializer. +tests/cases/conformance/es6/destructuring/emptyVariableDeclarationBindingPatterns02_ES5.ts(8,9): error TS1182: A destructuring declaration must have an initializer. +tests/cases/conformance/es6/destructuring/emptyVariableDeclarationBindingPatterns02_ES5.ts(9,11): error TS1182: A destructuring declaration must have an initializer. + + +==== tests/cases/conformance/es6/destructuring/emptyVariableDeclarationBindingPatterns02_ES5.ts (6 errors) ==== + + (function () { + var {}; + ~~ +!!! error TS1182: A destructuring declaration must have an initializer. + let {}; + ~~ +!!! error TS1182: A destructuring declaration must have an initializer. + const {}; + ~~ +!!! error TS1182: A destructuring declaration must have an initializer. + + var []; + ~~ +!!! error TS1182: A destructuring declaration must have an initializer. + let []; + ~~ +!!! error TS1182: A destructuring declaration must have an initializer. + const []; + ~~ +!!! error TS1182: A destructuring declaration must have an initializer. + })(); \ No newline at end of file diff --git a/tests/baselines/reference/emptyVariableDeclarationBindingPatterns02_ES5.js b/tests/baselines/reference/emptyVariableDeclarationBindingPatterns02_ES5.js new file mode 100644 index 00000000000..7710b5e26c1 --- /dev/null +++ b/tests/baselines/reference/emptyVariableDeclarationBindingPatterns02_ES5.js @@ -0,0 +1,24 @@ +//// [emptyVariableDeclarationBindingPatterns02_ES5.ts] + +(function () { + var {}; + let {}; + const {}; + + var []; + let []; + const []; +})(); + +//// [emptyVariableDeclarationBindingPatterns02_ES5.js] +(function () { + var _a = void 0; + var _b = void 0; + var _c = void 0; + var _d = void 0; + var _e = void 0; + var _f = void 0; +})(); + + +//// [emptyVariableDeclarationBindingPatterns02_ES5.d.ts] diff --git a/tests/baselines/reference/emptyVariableDeclarationBindingPatterns02_ES6.errors.txt b/tests/baselines/reference/emptyVariableDeclarationBindingPatterns02_ES6.errors.txt new file mode 100644 index 00000000000..81349584f47 --- /dev/null +++ b/tests/baselines/reference/emptyVariableDeclarationBindingPatterns02_ES6.errors.txt @@ -0,0 +1,31 @@ +tests/cases/conformance/es6/destructuring/emptyVariableDeclarationBindingPatterns02_ES6.ts(3,9): error TS1182: A destructuring declaration must have an initializer. +tests/cases/conformance/es6/destructuring/emptyVariableDeclarationBindingPatterns02_ES6.ts(4,9): error TS1182: A destructuring declaration must have an initializer. +tests/cases/conformance/es6/destructuring/emptyVariableDeclarationBindingPatterns02_ES6.ts(5,11): error TS1182: A destructuring declaration must have an initializer. +tests/cases/conformance/es6/destructuring/emptyVariableDeclarationBindingPatterns02_ES6.ts(7,9): error TS1182: A destructuring declaration must have an initializer. +tests/cases/conformance/es6/destructuring/emptyVariableDeclarationBindingPatterns02_ES6.ts(8,9): error TS1182: A destructuring declaration must have an initializer. +tests/cases/conformance/es6/destructuring/emptyVariableDeclarationBindingPatterns02_ES6.ts(9,11): error TS1182: A destructuring declaration must have an initializer. + + +==== tests/cases/conformance/es6/destructuring/emptyVariableDeclarationBindingPatterns02_ES6.ts (6 errors) ==== + + (function () { + var {}; + ~~ +!!! error TS1182: A destructuring declaration must have an initializer. + let {}; + ~~ +!!! error TS1182: A destructuring declaration must have an initializer. + const {}; + ~~ +!!! error TS1182: A destructuring declaration must have an initializer. + + var []; + ~~ +!!! error TS1182: A destructuring declaration must have an initializer. + let []; + ~~ +!!! error TS1182: A destructuring declaration must have an initializer. + const []; + ~~ +!!! error TS1182: A destructuring declaration must have an initializer. + })(); \ No newline at end of file diff --git a/tests/baselines/reference/emptyVariableDeclarationBindingPatterns02_ES6.js b/tests/baselines/reference/emptyVariableDeclarationBindingPatterns02_ES6.js new file mode 100644 index 00000000000..8b2df68ed70 --- /dev/null +++ b/tests/baselines/reference/emptyVariableDeclarationBindingPatterns02_ES6.js @@ -0,0 +1,24 @@ +//// [emptyVariableDeclarationBindingPatterns02_ES6.ts] + +(function () { + var {}; + let {}; + const {}; + + var []; + let []; + const []; +})(); + +//// [emptyVariableDeclarationBindingPatterns02_ES6.js] +(function () { + var { }; + let { }; + const { }; + var []; + let []; + const []; +})(); + + +//// [emptyVariableDeclarationBindingPatterns02_ES6.d.ts] diff --git a/tests/baselines/reference/enumConstantMembers.errors.txt b/tests/baselines/reference/enumConstantMembers.errors.txt deleted file mode 100644 index d425b7a6f4b..00000000000 --- a/tests/baselines/reference/enumConstantMembers.errors.txt +++ /dev/null @@ -1,28 +0,0 @@ -tests/cases/conformance/enums/enumConstantMembers.ts(12,5): error TS1061: Enum member must have initializer. -tests/cases/conformance/enums/enumConstantMembers.ts(18,5): error TS1066: Ambient enum elements can only have integer literal initializers. - - -==== tests/cases/conformance/enums/enumConstantMembers.ts (2 errors) ==== - // Constant members allow negatives, but not decimals. Also hex literals are allowed - enum E1 { - a = 1, - b - } - enum E2 { - a = - 1, - b - } - enum E3 { - a = 0.1, - b // Error because 0.1 is not a constant - ~ -!!! error TS1061: Enum member must have initializer. - } - - declare enum E4 { - a = 1, - b = -1, - c = 0.1 // Not a constant - ~ -!!! error TS1066: Ambient enum elements can only have integer literal initializers. - } \ No newline at end of file diff --git a/tests/baselines/reference/enumConstantMembers.symbols b/tests/baselines/reference/enumConstantMembers.symbols new file mode 100644 index 00000000000..6bf516cceef --- /dev/null +++ b/tests/baselines/reference/enumConstantMembers.symbols @@ -0,0 +1,42 @@ +=== tests/cases/conformance/enums/enumConstantMembers.ts === +// Constant members allow negatives, but not decimals. Also hex literals are allowed +enum E1 { +>E1 : Symbol(E1, Decl(enumConstantMembers.ts, 0, 0)) + + a = 1, +>a : Symbol(E1.a, Decl(enumConstantMembers.ts, 1, 9)) + + b +>b : Symbol(E1.b, Decl(enumConstantMembers.ts, 2, 10)) +} +enum E2 { +>E2 : Symbol(E2, Decl(enumConstantMembers.ts, 4, 1)) + + a = - 1, +>a : Symbol(E2.a, Decl(enumConstantMembers.ts, 5, 9)) + + b +>b : Symbol(E2.b, Decl(enumConstantMembers.ts, 6, 12)) +} +enum E3 { +>E3 : Symbol(E3, Decl(enumConstantMembers.ts, 8, 1)) + + a = 0.1, +>a : Symbol(E3.a, Decl(enumConstantMembers.ts, 9, 9)) + + b // Error because 0.1 is not a constant +>b : Symbol(E3.b, Decl(enumConstantMembers.ts, 10, 12)) +} + +declare enum E4 { +>E4 : Symbol(E4, Decl(enumConstantMembers.ts, 12, 1)) + + a = 1, +>a : Symbol(E4.a, Decl(enumConstantMembers.ts, 14, 17)) + + b = -1, +>b : Symbol(E4.b, Decl(enumConstantMembers.ts, 15, 10)) + + c = 0.1 // Not a constant +>c : Symbol(E4.c, Decl(enumConstantMembers.ts, 16, 11)) +} diff --git a/tests/baselines/reference/enumConstantMembers.types b/tests/baselines/reference/enumConstantMembers.types new file mode 100644 index 00000000000..c99b5eeb62f --- /dev/null +++ b/tests/baselines/reference/enumConstantMembers.types @@ -0,0 +1,50 @@ +=== tests/cases/conformance/enums/enumConstantMembers.ts === +// Constant members allow negatives, but not decimals. Also hex literals are allowed +enum E1 { +>E1 : E1 + + a = 1, +>a : E1 +>1 : number + + b +>b : E1 +} +enum E2 { +>E2 : E2 + + a = - 1, +>a : E2 +>- 1 : number +>1 : number + + b +>b : E2 +} +enum E3 { +>E3 : E3 + + a = 0.1, +>a : E3 +>0.1 : number + + b // Error because 0.1 is not a constant +>b : E3 +} + +declare enum E4 { +>E4 : E4 + + a = 1, +>a : E4 +>1 : number + + b = -1, +>b : E4 +>-1 : number +>1 : number + + c = 0.1 // Not a constant +>c : E4 +>0.1 : number +} diff --git a/tests/baselines/reference/enumFromExternalModule.js b/tests/baselines/reference/enumFromExternalModule.js index ed2a1f3926a..af04d9522b0 100644 --- a/tests/baselines/reference/enumFromExternalModule.js +++ b/tests/baselines/reference/enumFromExternalModule.js @@ -5,7 +5,7 @@ export enum Mode { Open } //// [enumFromExternalModule_1.ts] /// -import f = require('enumFromExternalModule_0'); +import f = require('./enumFromExternalModule_0'); var x = f.Mode.Open; @@ -17,5 +17,5 @@ var x = f.Mode.Open; var Mode = exports.Mode; //// [enumFromExternalModule_1.js] /// -var f = require('enumFromExternalModule_0'); +var f = require('./enumFromExternalModule_0'); var x = f.Mode.Open; diff --git a/tests/baselines/reference/enumFromExternalModule.symbols b/tests/baselines/reference/enumFromExternalModule.symbols index 90ff7cd7aac..3f2b1de5293 100644 --- a/tests/baselines/reference/enumFromExternalModule.symbols +++ b/tests/baselines/reference/enumFromExternalModule.symbols @@ -1,6 +1,6 @@ === tests/cases/compiler/enumFromExternalModule_1.ts === /// -import f = require('enumFromExternalModule_0'); +import f = require('./enumFromExternalModule_0'); >f : Symbol(f, Decl(enumFromExternalModule_1.ts, 0, 0)) var x = f.Mode.Open; diff --git a/tests/baselines/reference/enumFromExternalModule.types b/tests/baselines/reference/enumFromExternalModule.types index 554ac17ec67..05555572aa7 100644 --- a/tests/baselines/reference/enumFromExternalModule.types +++ b/tests/baselines/reference/enumFromExternalModule.types @@ -1,6 +1,6 @@ === tests/cases/compiler/enumFromExternalModule_1.ts === /// -import f = require('enumFromExternalModule_0'); +import f = require('./enumFromExternalModule_0'); >f : typeof f var x = f.Mode.Open; diff --git a/tests/baselines/reference/enumInitializersWithExponents.errors.txt b/tests/baselines/reference/enumInitializersWithExponents.errors.txt deleted file mode 100644 index c4338cdf78b..00000000000 --- a/tests/baselines/reference/enumInitializersWithExponents.errors.txt +++ /dev/null @@ -1,18 +0,0 @@ -tests/cases/compiler/enumInitializersWithExponents.ts(5,5): error TS1066: Ambient enum elements can only have integer literal initializers. -tests/cases/compiler/enumInitializersWithExponents.ts(6,5): error TS1066: Ambient enum elements can only have integer literal initializers. - - -==== tests/cases/compiler/enumInitializersWithExponents.ts (2 errors) ==== - // Must be integer literals. - declare enum E { - a = 1e3, // ok - b = 1e25, // ok - c = 1e-3, // error - ~ -!!! error TS1066: Ambient enum elements can only have integer literal initializers. - d = 1e-9, // error - ~ -!!! error TS1066: Ambient enum elements can only have integer literal initializers. - e = 1e0, // ok - f = 1e+25 // ok - } \ No newline at end of file diff --git a/tests/baselines/reference/enumInitializersWithExponents.symbols b/tests/baselines/reference/enumInitializersWithExponents.symbols new file mode 100644 index 00000000000..13f7141a322 --- /dev/null +++ b/tests/baselines/reference/enumInitializersWithExponents.symbols @@ -0,0 +1,23 @@ +=== tests/cases/compiler/enumInitializersWithExponents.ts === +// Must be integer literals. +declare enum E { +>E : Symbol(E, Decl(enumInitializersWithExponents.ts, 0, 0)) + + a = 1e3, // ok +>a : Symbol(E.a, Decl(enumInitializersWithExponents.ts, 1, 16)) + + b = 1e25, // ok +>b : Symbol(E.b, Decl(enumInitializersWithExponents.ts, 2, 12)) + + c = 1e-3, // error +>c : Symbol(E.c, Decl(enumInitializersWithExponents.ts, 3, 13)) + + d = 1e-9, // error +>d : Symbol(E.d, Decl(enumInitializersWithExponents.ts, 4, 13)) + + e = 1e0, // ok +>e : Symbol(E.e, Decl(enumInitializersWithExponents.ts, 5, 13)) + + f = 1e+25 // ok +>f : Symbol(E.f, Decl(enumInitializersWithExponents.ts, 6, 12)) +} diff --git a/tests/baselines/reference/enumInitializersWithExponents.types b/tests/baselines/reference/enumInitializersWithExponents.types new file mode 100644 index 00000000000..8da208e5f87 --- /dev/null +++ b/tests/baselines/reference/enumInitializersWithExponents.types @@ -0,0 +1,29 @@ +=== tests/cases/compiler/enumInitializersWithExponents.ts === +// Must be integer literals. +declare enum E { +>E : E + + a = 1e3, // ok +>a : E +>1e3 : number + + b = 1e25, // ok +>b : E +>1e25 : number + + c = 1e-3, // error +>c : E +>1e-3 : number + + d = 1e-9, // error +>d : E +>1e-9 : number + + e = 1e0, // ok +>e : E +>1e0 : number + + f = 1e+25 // ok +>f : E +>1e+25 : number +} diff --git a/tests/baselines/reference/enumWithoutInitializerAfterComputedMember.errors.txt b/tests/baselines/reference/enumWithoutInitializerAfterComputedMember.errors.txt deleted file mode 100644 index 876c04a0322..00000000000 --- a/tests/baselines/reference/enumWithoutInitializerAfterComputedMember.errors.txt +++ /dev/null @@ -1,11 +0,0 @@ -tests/cases/compiler/enumWithoutInitializerAfterComputedMember.ts(4,5): error TS1061: Enum member must have initializer. - - -==== tests/cases/compiler/enumWithoutInitializerAfterComputedMember.ts (1 errors) ==== - enum E { - a, - b = a, - c - ~ -!!! error TS1061: Enum member must have initializer. - } \ No newline at end of file diff --git a/tests/baselines/reference/enumWithoutInitializerAfterComputedMember.symbols b/tests/baselines/reference/enumWithoutInitializerAfterComputedMember.symbols new file mode 100644 index 00000000000..54449b29399 --- /dev/null +++ b/tests/baselines/reference/enumWithoutInitializerAfterComputedMember.symbols @@ -0,0 +1,14 @@ +=== tests/cases/compiler/enumWithoutInitializerAfterComputedMember.ts === +enum E { +>E : Symbol(E, Decl(enumWithoutInitializerAfterComputedMember.ts, 0, 0)) + + a, +>a : Symbol(E.a, Decl(enumWithoutInitializerAfterComputedMember.ts, 0, 8)) + + b = a, +>b : Symbol(E.b, Decl(enumWithoutInitializerAfterComputedMember.ts, 1, 6)) +>a : Symbol(E.a, Decl(enumWithoutInitializerAfterComputedMember.ts, 0, 8)) + + c +>c : Symbol(E.c, Decl(enumWithoutInitializerAfterComputedMember.ts, 2, 10)) +} diff --git a/tests/baselines/reference/enumWithoutInitializerAfterComputedMember.types b/tests/baselines/reference/enumWithoutInitializerAfterComputedMember.types new file mode 100644 index 00000000000..0ece7b76f1e --- /dev/null +++ b/tests/baselines/reference/enumWithoutInitializerAfterComputedMember.types @@ -0,0 +1,14 @@ +=== tests/cases/compiler/enumWithoutInitializerAfterComputedMember.ts === +enum E { +>E : E + + a, +>a : E + + b = a, +>b : E +>a : E + + c +>c : E +} diff --git a/tests/baselines/reference/errorsOnImportedSymbol.errors.txt b/tests/baselines/reference/errorsOnImportedSymbol.errors.txt index ec108d48881..19839e4e544 100644 --- a/tests/baselines/reference/errorsOnImportedSymbol.errors.txt +++ b/tests/baselines/reference/errorsOnImportedSymbol.errors.txt @@ -3,7 +3,7 @@ tests/cases/compiler/errorsOnImportedSymbol_1.ts(3,9): error TS2304: Cannot find ==== tests/cases/compiler/errorsOnImportedSymbol_1.ts (2 errors) ==== - import Sammy = require("errorsOnImportedSymbol_0"); + import Sammy = require("./errorsOnImportedSymbol_0"); var x = new Sammy.Sammy(); ~~~~~ !!! error TS2304: Cannot find name 'Sammy'. diff --git a/tests/baselines/reference/errorsOnImportedSymbol.js b/tests/baselines/reference/errorsOnImportedSymbol.js index 6a001bcd0f1..2c991ecd821 100644 --- a/tests/baselines/reference/errorsOnImportedSymbol.js +++ b/tests/baselines/reference/errorsOnImportedSymbol.js @@ -9,7 +9,7 @@ interface Sammy { export = Sammy; //// [errorsOnImportedSymbol_1.ts] -import Sammy = require("errorsOnImportedSymbol_0"); +import Sammy = require("./errorsOnImportedSymbol_0"); var x = new Sammy.Sammy(); var y = Sammy.Sammy(); diff --git a/tests/baselines/reference/es3defaultAliasIsQuoted.js b/tests/baselines/reference/es3defaultAliasIsQuoted.js new file mode 100644 index 00000000000..3ca828c1b4c --- /dev/null +++ b/tests/baselines/reference/es3defaultAliasIsQuoted.js @@ -0,0 +1,33 @@ +//// [tests/cases/compiler/es3defaultAliasIsQuoted.ts] //// + +//// [es3defaultAliasQuoted_file0.ts] + +export class Foo { + static CONSTANT = "Foo"; +} + +export default function assert(value: boolean) { + if (!value) throw new Error("Assertion failed!"); +} + +//// [es3defaultAliasQuoted_file1.ts] +import {Foo, default as assert} from "./es3defaultAliasQuoted_file0"; +assert(Foo.CONSTANT === "Foo"); + +//// [es3defaultAliasQuoted_file0.js] +var Foo = (function () { + function Foo() { + } + Foo.CONSTANT = "Foo"; + return Foo; +})(); +exports.Foo = Foo; +function assert(value) { + if (!value) + throw new Error("Assertion failed!"); +} +exports.__esModule = true; +exports["default"] = assert; +//// [es3defaultAliasQuoted_file1.js] +var es3defaultAliasQuoted_file0_1 = require("./es3defaultAliasQuoted_file0"); +es3defaultAliasQuoted_file0_1["default"](es3defaultAliasQuoted_file0_1.Foo.CONSTANT === "Foo"); diff --git a/tests/baselines/reference/es3defaultAliasIsQuoted.symbols b/tests/baselines/reference/es3defaultAliasIsQuoted.symbols new file mode 100644 index 00000000000..907f1d71b89 --- /dev/null +++ b/tests/baselines/reference/es3defaultAliasIsQuoted.symbols @@ -0,0 +1,30 @@ +=== tests/cases/compiler/es3defaultAliasQuoted_file0.ts === + +export class Foo { +>Foo : Symbol(Foo, Decl(es3defaultAliasQuoted_file0.ts, 0, 0)) + + static CONSTANT = "Foo"; +>CONSTANT : Symbol(Foo.CONSTANT, Decl(es3defaultAliasQuoted_file0.ts, 1, 18)) +} + +export default function assert(value: boolean) { +>assert : Symbol(assert, Decl(es3defaultAliasQuoted_file0.ts, 3, 1)) +>value : Symbol(value, Decl(es3defaultAliasQuoted_file0.ts, 5, 31)) + + if (!value) throw new Error("Assertion failed!"); +>value : Symbol(value, Decl(es3defaultAliasQuoted_file0.ts, 5, 31)) +>Error : Symbol(Error, Decl(lib.d.ts, 876, 38), Decl(lib.d.ts, 889, 11)) +} + +=== tests/cases/compiler/es3defaultAliasQuoted_file1.ts === +import {Foo, default as assert} from "./es3defaultAliasQuoted_file0"; +>Foo : Symbol(Foo, Decl(es3defaultAliasQuoted_file1.ts, 0, 8)) +>default : Symbol(assert, Decl(es3defaultAliasQuoted_file1.ts, 0, 12)) +>assert : Symbol(assert, Decl(es3defaultAliasQuoted_file1.ts, 0, 12)) + +assert(Foo.CONSTANT === "Foo"); +>assert : Symbol(assert, Decl(es3defaultAliasQuoted_file1.ts, 0, 12)) +>Foo.CONSTANT : Symbol(Foo.CONSTANT, Decl(es3defaultAliasQuoted_file0.ts, 1, 18)) +>Foo : Symbol(Foo, Decl(es3defaultAliasQuoted_file1.ts, 0, 8)) +>CONSTANT : Symbol(Foo.CONSTANT, Decl(es3defaultAliasQuoted_file0.ts, 1, 18)) + diff --git a/tests/baselines/reference/es3defaultAliasIsQuoted.types b/tests/baselines/reference/es3defaultAliasIsQuoted.types new file mode 100644 index 00000000000..d3b1ebf105b --- /dev/null +++ b/tests/baselines/reference/es3defaultAliasIsQuoted.types @@ -0,0 +1,37 @@ +=== tests/cases/compiler/es3defaultAliasQuoted_file0.ts === + +export class Foo { +>Foo : Foo + + static CONSTANT = "Foo"; +>CONSTANT : string +>"Foo" : string +} + +export default function assert(value: boolean) { +>assert : (value: boolean) => void +>value : boolean + + if (!value) throw new Error("Assertion failed!"); +>!value : boolean +>value : boolean +>new Error("Assertion failed!") : Error +>Error : ErrorConstructor +>"Assertion failed!" : string +} + +=== tests/cases/compiler/es3defaultAliasQuoted_file1.ts === +import {Foo, default as assert} from "./es3defaultAliasQuoted_file0"; +>Foo : typeof Foo +>default : (value: boolean) => void +>assert : (value: boolean) => void + +assert(Foo.CONSTANT === "Foo"); +>assert(Foo.CONSTANT === "Foo") : void +>assert : (value: boolean) => void +>Foo.CONSTANT === "Foo" : boolean +>Foo.CONSTANT : string +>Foo : typeof Foo +>CONSTANT : string +>"Foo" : string + diff --git a/tests/baselines/reference/es5-umd2.js b/tests/baselines/reference/es5-umd2.js index 4267e7a3331..9b79f5f17b7 100644 --- a/tests/baselines/reference/es5-umd2.js +++ b/tests/baselines/reference/es5-umd2.js @@ -15,14 +15,14 @@ export class A //// [es5-umd2.js] -(function (deps, factory) { +(function (factory) { if (typeof module === 'object' && typeof module.exports === 'object') { var v = factory(require, exports); if (v !== undefined) module.exports = v; } else if (typeof define === 'function' && define.amd) { - define(deps, factory); + define(["require", "exports"], factory); } -})(["require", "exports"], function (require, exports) { +})(function (require, exports) { var A = (function () { function A() { } diff --git a/tests/baselines/reference/es5-umd3.js b/tests/baselines/reference/es5-umd3.js index 92ac306698a..042316b710e 100644 --- a/tests/baselines/reference/es5-umd3.js +++ b/tests/baselines/reference/es5-umd3.js @@ -15,14 +15,14 @@ export default class A //// [es5-umd3.js] -(function (deps, factory) { +(function (factory) { if (typeof module === 'object' && typeof module.exports === 'object') { var v = factory(require, exports); if (v !== undefined) module.exports = v; } else if (typeof define === 'function' && define.amd) { - define(deps, factory); + define(["require", "exports"], factory); } -})(["require", "exports"], function (require, exports) { +})(function (require, exports) { var A = (function () { function A() { } diff --git a/tests/baselines/reference/es5-umd4.js b/tests/baselines/reference/es5-umd4.js index 058ad545f42..81dcf440cb8 100644 --- a/tests/baselines/reference/es5-umd4.js +++ b/tests/baselines/reference/es5-umd4.js @@ -17,14 +17,14 @@ export = A; //// [es5-umd4.js] -(function (deps, factory) { +(function (factory) { if (typeof module === 'object' && typeof module.exports === 'object') { var v = factory(require, exports); if (v !== undefined) module.exports = v; } else if (typeof define === 'function' && define.amd) { - define(deps, factory); + define(["require", "exports"], factory); } -})(["require", "exports"], function (require, exports) { +})(function (require, exports) { var A = (function () { function A() { } diff --git a/tests/baselines/reference/es5andes6module.errors.txt b/tests/baselines/reference/es5andes6module.errors.txt new file mode 100644 index 00000000000..d5a672b9486 --- /dev/null +++ b/tests/baselines/reference/es5andes6module.errors.txt @@ -0,0 +1,19 @@ +error TS1204: Cannot compile modules into 'es6' when targeting 'ES5' or lower. + + +!!! error TS1204: Cannot compile modules into 'es6' when targeting 'ES5' or lower. +==== tests/cases/compiler/es5andes6module.ts (0 errors) ==== + + export default class A + { + constructor () + { + + } + + public B() + { + return 42; + } + } + \ No newline at end of file diff --git a/tests/baselines/reference/es5andes6module.js b/tests/baselines/reference/es5andes6module.js new file mode 100644 index 00000000000..0d489357852 --- /dev/null +++ b/tests/baselines/reference/es5andes6module.js @@ -0,0 +1,26 @@ +//// [es5andes6module.ts] + +export default class A +{ + constructor () + { + + } + + public B() + { + return 42; + } +} + + +//// [es5andes6module.js] +var A = (function () { + function A() { + } + A.prototype.B = function () { + return 42; + }; + return A; +})(); +exports.default = A; diff --git a/tests/baselines/reference/es6-amd.errors.txt b/tests/baselines/reference/es6-amd.errors.txt deleted file mode 100644 index b4a6442458b..00000000000 --- a/tests/baselines/reference/es6-amd.errors.txt +++ /dev/null @@ -1,18 +0,0 @@ -error TS1204: Cannot compile modules into 'commonjs', 'amd', 'system' or 'umd' when targeting 'ES6' or higher. - - -!!! error TS1204: Cannot compile modules into 'commonjs', 'amd', 'system' or 'umd' 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.symbols b/tests/baselines/reference/es6-amd.symbols new file mode 100644 index 00000000000..ad5cf38e7cd --- /dev/null +++ b/tests/baselines/reference/es6-amd.symbols @@ -0,0 +1,16 @@ +=== tests/cases/compiler/es6-amd.ts === + +class A +>A : Symbol(A, Decl(es6-amd.ts, 0, 0)) +{ + constructor () + { + + } + + public B() +>B : Symbol(B, Decl(es6-amd.ts, 6, 5)) + { + return 42; + } +} diff --git a/tests/baselines/reference/es6-amd.types b/tests/baselines/reference/es6-amd.types new file mode 100644 index 00000000000..7a6fb6e32f5 --- /dev/null +++ b/tests/baselines/reference/es6-amd.types @@ -0,0 +1,17 @@ +=== tests/cases/compiler/es6-amd.ts === + +class A +>A : A +{ + constructor () + { + + } + + public B() +>B : () => number + { + return 42; +>42 : number + } +} diff --git a/tests/baselines/reference/es6-declaration-amd.errors.txt b/tests/baselines/reference/es6-declaration-amd.errors.txt deleted file mode 100644 index fe5a254dd54..00000000000 --- a/tests/baselines/reference/es6-declaration-amd.errors.txt +++ /dev/null @@ -1,18 +0,0 @@ -error TS1204: Cannot compile modules into 'commonjs', 'amd', 'system' or 'umd' when targeting 'ES6' or higher. - - -!!! error TS1204: Cannot compile modules into 'commonjs', 'amd', 'system' or 'umd' 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.symbols b/tests/baselines/reference/es6-declaration-amd.symbols new file mode 100644 index 00000000000..f1a728396cc --- /dev/null +++ b/tests/baselines/reference/es6-declaration-amd.symbols @@ -0,0 +1,16 @@ +=== tests/cases/compiler/es6-declaration-amd.ts === + +class A +>A : Symbol(A, Decl(es6-declaration-amd.ts, 0, 0)) +{ + constructor () + { + + } + + public B() +>B : Symbol(B, Decl(es6-declaration-amd.ts, 6, 5)) + { + return 42; + } +} diff --git a/tests/baselines/reference/es6-declaration-amd.types b/tests/baselines/reference/es6-declaration-amd.types new file mode 100644 index 00000000000..a46d22c82c5 --- /dev/null +++ b/tests/baselines/reference/es6-declaration-amd.types @@ -0,0 +1,17 @@ +=== tests/cases/compiler/es6-declaration-amd.ts === + +class A +>A : A +{ + constructor () + { + + } + + public B() +>B : () => number + { + return 42; +>42 : number + } +} diff --git a/tests/baselines/reference/es6-sourcemap-amd.errors.txt b/tests/baselines/reference/es6-sourcemap-amd.errors.txt deleted file mode 100644 index 8ffa16aaa23..00000000000 --- a/tests/baselines/reference/es6-sourcemap-amd.errors.txt +++ /dev/null @@ -1,18 +0,0 @@ -error TS1204: Cannot compile modules into 'commonjs', 'amd', 'system' or 'umd' when targeting 'ES6' or higher. - - -!!! error TS1204: Cannot compile modules into 'commonjs', 'amd', 'system' or 'umd' 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.symbols b/tests/baselines/reference/es6-sourcemap-amd.symbols new file mode 100644 index 00000000000..13be6367ba0 --- /dev/null +++ b/tests/baselines/reference/es6-sourcemap-amd.symbols @@ -0,0 +1,16 @@ +=== tests/cases/compiler/es6-sourcemap-amd.ts === + +class A +>A : Symbol(A, Decl(es6-sourcemap-amd.ts, 0, 0)) +{ + constructor () + { + + } + + public B() +>B : Symbol(B, Decl(es6-sourcemap-amd.ts, 6, 5)) + { + return 42; + } +} diff --git a/tests/baselines/reference/es6-sourcemap-amd.types b/tests/baselines/reference/es6-sourcemap-amd.types new file mode 100644 index 00000000000..580a688afab --- /dev/null +++ b/tests/baselines/reference/es6-sourcemap-amd.types @@ -0,0 +1,17 @@ +=== tests/cases/compiler/es6-sourcemap-amd.ts === + +class A +>A : A +{ + constructor () + { + + } + + public B() +>B : () => number + { + return 42; +>42 : number + } +} diff --git a/tests/baselines/reference/es6-umd.errors.txt b/tests/baselines/reference/es6-umd.errors.txt deleted file mode 100644 index 72a58585073..00000000000 --- a/tests/baselines/reference/es6-umd.errors.txt +++ /dev/null @@ -1,18 +0,0 @@ -error TS1204: Cannot compile modules into 'commonjs', 'amd', 'system' or 'umd' when targeting 'ES6' or higher. - - -!!! error TS1204: Cannot compile modules into 'commonjs', 'amd', 'system' or 'umd' when targeting 'ES6' or higher. -==== tests/cases/compiler/es6-umd.ts (0 errors) ==== - - class A - { - constructor () - { - - } - - public B() - { - return 42; - } - } \ No newline at end of file diff --git a/tests/baselines/reference/es6-umd.symbols b/tests/baselines/reference/es6-umd.symbols new file mode 100644 index 00000000000..f7c57215ea6 --- /dev/null +++ b/tests/baselines/reference/es6-umd.symbols @@ -0,0 +1,16 @@ +=== tests/cases/compiler/es6-umd.ts === + +class A +>A : Symbol(A, Decl(es6-umd.ts, 0, 0)) +{ + constructor () + { + + } + + public B() +>B : Symbol(B, Decl(es6-umd.ts, 6, 5)) + { + return 42; + } +} diff --git a/tests/baselines/reference/es6-umd.types b/tests/baselines/reference/es6-umd.types new file mode 100644 index 00000000000..f43c491e003 --- /dev/null +++ b/tests/baselines/reference/es6-umd.types @@ -0,0 +1,17 @@ +=== tests/cases/compiler/es6-umd.ts === + +class A +>A : A +{ + constructor () + { + + } + + public B() +>B : () => number + { + return 42; +>42 : number + } +} diff --git a/tests/baselines/reference/es6-umd2.errors.txt b/tests/baselines/reference/es6-umd2.errors.txt deleted file mode 100644 index 00becfb105f..00000000000 --- a/tests/baselines/reference/es6-umd2.errors.txt +++ /dev/null @@ -1,18 +0,0 @@ -error TS1204: Cannot compile modules into 'commonjs', 'amd', 'system' or 'umd' when targeting 'ES6' or higher. - - -!!! error TS1204: Cannot compile modules into 'commonjs', 'amd', 'system' or 'umd' when targeting 'ES6' or higher. -==== tests/cases/compiler/es6-umd2.ts (0 errors) ==== - - export class A - { - constructor () - { - - } - - public B() - { - return 42; - } - } \ No newline at end of file diff --git a/tests/baselines/reference/es6-umd2.js b/tests/baselines/reference/es6-umd2.js index 416932d89bc..b87027b21b1 100644 --- a/tests/baselines/reference/es6-umd2.js +++ b/tests/baselines/reference/es6-umd2.js @@ -14,10 +14,20 @@ export class A } //// [es6-umd2.js] -export class A { - constructor() { +(function (factory) { + if (typeof module === 'object' && typeof module.exports === 'object') { + var v = factory(require, exports); if (v !== undefined) module.exports = v; } - B() { - return 42; + else if (typeof define === 'function' && define.amd) { + define(["require", "exports"], factory); } -} +})(function (require, exports) { + class A { + constructor() { + } + B() { + return 42; + } + } + exports.A = A; +}); diff --git a/tests/baselines/reference/es6-umd2.symbols b/tests/baselines/reference/es6-umd2.symbols new file mode 100644 index 00000000000..88acf127279 --- /dev/null +++ b/tests/baselines/reference/es6-umd2.symbols @@ -0,0 +1,16 @@ +=== tests/cases/compiler/es6-umd2.ts === + +export class A +>A : Symbol(A, Decl(es6-umd2.ts, 0, 0)) +{ + constructor () + { + + } + + public B() +>B : Symbol(B, Decl(es6-umd2.ts, 6, 5)) + { + return 42; + } +} diff --git a/tests/baselines/reference/es6-umd2.types b/tests/baselines/reference/es6-umd2.types new file mode 100644 index 00000000000..eb66523c6ec --- /dev/null +++ b/tests/baselines/reference/es6-umd2.types @@ -0,0 +1,17 @@ +=== tests/cases/compiler/es6-umd2.ts === + +export class A +>A : A +{ + constructor () + { + + } + + public B() +>B : () => number + { + return 42; +>42 : number + } +} diff --git a/tests/baselines/reference/es6ClassTest3.types b/tests/baselines/reference/es6ClassTest3.types index d73007f211b..208d8cdf4d9 100644 --- a/tests/baselines/reference/es6ClassTest3.types +++ b/tests/baselines/reference/es6ClassTest3.types @@ -24,14 +24,14 @@ module M { this.x = 1; >this.x = 1 : number >this.x : number ->this : Visibility +>this : this >x : number >1 : number this.y = 2; >this.y = 2 : number >this.y : number ->this : Visibility +>this : this >y : number >2 : number } diff --git a/tests/baselines/reference/es6ClassTest8.types b/tests/baselines/reference/es6ClassTest8.types index 622f81f1d10..b12d65e595f 100644 --- a/tests/baselines/reference/es6ClassTest8.types +++ b/tests/baselines/reference/es6ClassTest8.types @@ -119,7 +119,7 @@ class Camera { this.forward = Vector.norm(Vector.minus(lookAt,this.pos)); >this.forward = Vector.norm(Vector.minus(lookAt,this.pos)) : Vector >this.forward : Vector ->this : Camera +>this : this >forward : Vector >Vector.norm(Vector.minus(lookAt,this.pos)) : Vector >Vector.norm : (v: Vector) => Vector @@ -131,13 +131,13 @@ class Camera { >minus : (v1: Vector, v2: Vector) => Vector >lookAt : Vector >this.pos : Vector ->this : Camera +>this : this >pos : Vector this.right = Vector.times(down, Vector.norm(Vector.cross(this.forward, down))); >this.right = Vector.times(down, Vector.norm(Vector.cross(this.forward, down))) : Vector >this.right : Vector ->this : Camera +>this : this >right : Vector >Vector.times(down, Vector.norm(Vector.cross(this.forward, down))) : Vector >Vector.times : (v1: Vector, v2: Vector) => Vector @@ -153,14 +153,14 @@ class Camera { >Vector : typeof Vector >cross : (v1: Vector, v2: Vector) => Vector >this.forward : Vector ->this : Camera +>this : this >forward : Vector >down : Vector this.up = Vector.times(down, Vector.norm(Vector.cross(this.forward, this.right))); >this.up = Vector.times(down, Vector.norm(Vector.cross(this.forward, this.right))) : Vector >this.up : Vector ->this : Camera +>this : this >up : Vector >Vector.times(down, Vector.norm(Vector.cross(this.forward, this.right))) : Vector >Vector.times : (v1: Vector, v2: Vector) => Vector @@ -176,10 +176,10 @@ class Camera { >Vector : typeof Vector >cross : (v1: Vector, v2: Vector) => Vector >this.forward : Vector ->this : Camera +>this : this >forward : Vector >this.right : Vector ->this : Camera +>this : this >right : Vector } } diff --git a/tests/baselines/reference/es6ExportAllInEs5.js b/tests/baselines/reference/es6ExportAllInEs5.js index 1be3fa1f1b2..73689019ed4 100644 --- a/tests/baselines/reference/es6ExportAllInEs5.js +++ b/tests/baselines/reference/es6ExportAllInEs5.js @@ -14,7 +14,7 @@ export module uninstantiated { } //// [client.ts] -export * from "server"; +export * from "./server"; //// [server.js] var c = (function () { @@ -32,7 +32,7 @@ exports.x = 10; function __export(m) { for (var p in m) if (!exports.hasOwnProperty(p)) exports[p] = m[p]; } -__export(require("server")); +__export(require("./server")); //// [server.d.ts] @@ -47,4 +47,4 @@ export declare var x: number; export declare module uninstantiated { } //// [client.d.ts] -export * from "server"; +export * from "./server"; diff --git a/tests/baselines/reference/es6ExportAllInEs5.symbols b/tests/baselines/reference/es6ExportAllInEs5.symbols index c2a575f5e5c..26d47f63af3 100644 --- a/tests/baselines/reference/es6ExportAllInEs5.symbols +++ b/tests/baselines/reference/es6ExportAllInEs5.symbols @@ -20,5 +20,5 @@ export module uninstantiated { } === tests/cases/compiler/client.ts === -export * from "server"; +export * from "./server"; No type information for this code. \ No newline at end of file diff --git a/tests/baselines/reference/es6ExportAllInEs5.types b/tests/baselines/reference/es6ExportAllInEs5.types index 876ff152e2c..68187384602 100644 --- a/tests/baselines/reference/es6ExportAllInEs5.types +++ b/tests/baselines/reference/es6ExportAllInEs5.types @@ -22,5 +22,5 @@ export module uninstantiated { } === tests/cases/compiler/client.ts === -export * from "server"; +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 index 1db7d04e05e..970d2e184dc 100644 --- a/tests/baselines/reference/es6ExportAssignment.errors.txt +++ b/tests/baselines/reference/es6ExportAssignment.errors.txt @@ -1,4 +1,4 @@ -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(3,1): error TS1203: Export assignment cannot be used when targeting ECMAScript 6 modules. Consider using 'export default' or another module format instead. ==== tests/cases/compiler/es6ExportAssignment.ts (1 errors) ==== @@ -6,4 +6,4 @@ tests/cases/compiler/es6ExportAssignment.ts(3,1): error TS1203: Export assignmen 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 +!!! error TS1203: Export assignment cannot be used when targeting ECMAScript 6 modules. Consider using 'export default' or another module format instead. \ No newline at end of file diff --git a/tests/baselines/reference/es6ExportAssignment2.errors.txt b/tests/baselines/reference/es6ExportAssignment2.errors.txt index d5e1dfebd9d..248491f98c3 100644 --- a/tests/baselines/reference/es6ExportAssignment2.errors.txt +++ b/tests/baselines/reference/es6ExportAssignment2.errors.txt @@ -1,4 +1,4 @@ -tests/cases/compiler/a.ts(3,1): error TS1203: Export assignment cannot be used when targeting ECMAScript 6 or higher. Consider using 'export default' instead. +tests/cases/compiler/a.ts(3,1): error TS1203: Export assignment cannot be used when targeting ECMAScript 6 modules. Consider using 'export default' or another module format instead. ==== tests/cases/compiler/a.ts (1 errors) ==== @@ -6,7 +6,7 @@ tests/cases/compiler/a.ts(3,1): error TS1203: Export assignment cannot be used w var a = 10; export = a; // Error: export = not allowed in ES6 ~~~~~~~~~~~ -!!! error TS1203: Export assignment cannot be used when targeting ECMAScript 6 or higher. Consider using 'export default' instead. +!!! error TS1203: Export assignment cannot be used when targeting ECMAScript 6 modules. Consider using 'export default' or another module format instead. ==== tests/cases/compiler/b.ts (0 errors) ==== import * as a from "a"; diff --git a/tests/baselines/reference/es6ExportClauseWithoutModuleSpecifierInEs5.js b/tests/baselines/reference/es6ExportClauseWithoutModuleSpecifierInEs5.js index 6250e0ce326..63ac2c04b3e 100644 --- a/tests/baselines/reference/es6ExportClauseWithoutModuleSpecifierInEs5.js +++ b/tests/baselines/reference/es6ExportClauseWithoutModuleSpecifierInEs5.js @@ -14,11 +14,11 @@ 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"; +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 () { @@ -33,13 +33,13 @@ var m; })(m = exports.m || (exports.m = {})); exports.x = 10; //// [client.js] -var server_1 = require("server"); +var server_1 = require("./server"); exports.c = server_1.c; -var server_2 = require("server"); +var server_2 = require("./server"); exports.c2 = server_2.c; -var server_3 = require("server"); +var server_3 = require("./server"); exports.instantiatedModule = server_3.m; -var server_4 = require("server"); +var server_4 = require("./server"); exports.x = server_4.x; @@ -55,8 +55,8 @@ 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"; +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.symbols b/tests/baselines/reference/es6ExportClauseWithoutModuleSpecifierInEs5.symbols index 731a0fdcc30..c8e279e65bf 100644 --- a/tests/baselines/reference/es6ExportClauseWithoutModuleSpecifierInEs5.symbols +++ b/tests/baselines/reference/es6ExportClauseWithoutModuleSpecifierInEs5.symbols @@ -20,21 +20,21 @@ export module uninstantiated { } === tests/cases/compiler/client.ts === -export { c } from "server"; +export { c } from "./server"; >c : Symbol(c, Decl(client.ts, 0, 8)) -export { c as c2 } from "server"; +export { c as c2 } from "./server"; >c : Symbol(c2, Decl(client.ts, 1, 8)) >c2 : Symbol(c2, Decl(client.ts, 1, 8)) -export { i, m as instantiatedModule } from "server"; +export { i, m as instantiatedModule } from "./server"; >i : Symbol(i, Decl(client.ts, 2, 8)) >m : Symbol(instantiatedModule, Decl(client.ts, 2, 11)) >instantiatedModule : Symbol(instantiatedModule, Decl(client.ts, 2, 11)) -export { uninstantiated } from "server"; +export { uninstantiated } from "./server"; >uninstantiated : Symbol(uninstantiated, Decl(client.ts, 3, 8)) -export { x } from "server"; +export { x } from "./server"; >x : Symbol(x, Decl(client.ts, 4, 8)) diff --git a/tests/baselines/reference/es6ExportClauseWithoutModuleSpecifierInEs5.types b/tests/baselines/reference/es6ExportClauseWithoutModuleSpecifierInEs5.types index 6b621f4c777..4bd93b39031 100644 --- a/tests/baselines/reference/es6ExportClauseWithoutModuleSpecifierInEs5.types +++ b/tests/baselines/reference/es6ExportClauseWithoutModuleSpecifierInEs5.types @@ -22,21 +22,21 @@ export module uninstantiated { } === tests/cases/compiler/client.ts === -export { c } from "server"; +export { c } from "./server"; >c : typeof c -export { c as c2 } from "server"; +export { c as c2 } from "./server"; >c : typeof c >c2 : typeof c -export { i, m as instantiatedModule } from "server"; +export { i, m as instantiatedModule } from "./server"; >i : any >m : typeof m >instantiatedModule : typeof m -export { uninstantiated } from "server"; +export { uninstantiated } from "./server"; >uninstantiated : any -export { x } from "server"; +export { x } from "./server"; >x : number diff --git a/tests/baselines/reference/es6ExportEquals.errors.txt b/tests/baselines/reference/es6ExportEquals.errors.txt index 174c72341f6..e8db09456d3 100644 --- a/tests/baselines/reference/es6ExportEquals.errors.txt +++ b/tests/baselines/reference/es6ExportEquals.errors.txt @@ -1,4 +1,4 @@ -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 TS1203: Export assignment cannot be used when targeting ECMAScript 6 modules. Consider using 'export default' or another module format instead. tests/cases/compiler/es6ExportEquals.ts(4,1): error TS2309: An export assignment cannot be used in a module with other exported elements. @@ -8,7 +8,7 @@ tests/cases/compiler/es6ExportEquals.ts(4,1): error TS2309: An export assignment export = f; ~~~~~~~~~~~ -!!! error TS1203: Export assignment cannot be used when targeting ECMAScript 6 or higher. Consider using 'export default' instead. +!!! error TS1203: Export assignment cannot be used when targeting ECMAScript 6 modules. Consider using 'export default' or another module format 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/es6ImportDefaultBindingDts.js b/tests/baselines/reference/es6ImportDefaultBindingDts.js index a5e8d509da1..5593d762f85 100644 --- a/tests/baselines/reference/es6ImportDefaultBindingDts.js +++ b/tests/baselines/reference/es6ImportDefaultBindingDts.js @@ -6,9 +6,9 @@ class c { } export default c; //// [client.ts] -import defaultBinding from "server"; +import defaultBinding from "./server"; export var x = new defaultBinding(); -import defaultBinding2 from "server"; // elide this import since defaultBinding2 is not used +import defaultBinding2 from "./server"; // elide this import since defaultBinding2 is not used //// [server.js] @@ -20,7 +20,7 @@ var c = (function () { Object.defineProperty(exports, "__esModule", { value: true }); exports.default = c; //// [client.js] -var server_1 = require("server"); +var server_1 = require("./server"); exports.x = new server_1.default(); @@ -29,5 +29,5 @@ declare class c { } export default c; //// [client.d.ts] -import defaultBinding from "server"; +import defaultBinding from "./server"; export declare var x: defaultBinding; diff --git a/tests/baselines/reference/es6ImportDefaultBindingDts.symbols b/tests/baselines/reference/es6ImportDefaultBindingDts.symbols index 1ca93aa6641..f25be3eacad 100644 --- a/tests/baselines/reference/es6ImportDefaultBindingDts.symbols +++ b/tests/baselines/reference/es6ImportDefaultBindingDts.symbols @@ -7,13 +7,13 @@ export default c; >c : Symbol(c, Decl(server.ts, 0, 0)) === tests/cases/compiler/client.ts === -import defaultBinding from "server"; +import defaultBinding from "./server"; >defaultBinding : Symbol(defaultBinding, Decl(client.ts, 0, 6)) export var x = new defaultBinding(); >x : Symbol(x, Decl(client.ts, 1, 10)) >defaultBinding : Symbol(defaultBinding, Decl(client.ts, 0, 6)) -import defaultBinding2 from "server"; // elide this import since defaultBinding2 is not used +import defaultBinding2 from "./server"; // elide this import since defaultBinding2 is not used >defaultBinding2 : Symbol(defaultBinding2, Decl(client.ts, 2, 6)) diff --git a/tests/baselines/reference/es6ImportDefaultBindingDts.types b/tests/baselines/reference/es6ImportDefaultBindingDts.types index 65754d80680..8543c6845b2 100644 --- a/tests/baselines/reference/es6ImportDefaultBindingDts.types +++ b/tests/baselines/reference/es6ImportDefaultBindingDts.types @@ -7,7 +7,7 @@ export default c; >c : c === tests/cases/compiler/client.ts === -import defaultBinding from "server"; +import defaultBinding from "./server"; >defaultBinding : typeof defaultBinding export var x = new defaultBinding(); @@ -15,6 +15,6 @@ export var x = new defaultBinding(); >new defaultBinding() : defaultBinding >defaultBinding : typeof defaultBinding -import defaultBinding2 from "server"; // elide this import since defaultBinding2 is not used +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 deleted file mode 100644 index 2688d4af06f..00000000000 --- a/tests/baselines/reference/es6ImportDefaultBindingFollowedWithNamedImport.errors.txt +++ /dev/null @@ -1,25 +0,0 @@ -error TS1204: Cannot compile modules into 'commonjs', 'amd', 'system' or 'umd' when targeting 'ES6' or higher. - - -!!! error TS1204: Cannot compile modules into 'commonjs', 'amd', 'system' or 'umd' 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 (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 641941db9e5..d6be494a8d1 100644 --- a/tests/baselines/reference/es6ImportDefaultBindingFollowedWithNamedImport.js +++ b/tests/baselines/reference/es6ImportDefaultBindingFollowedWithNamedImport.js @@ -8,37 +8,37 @@ export var m = a; export default {}; //// [es6ImportDefaultBindingFollowedWithNamedImport_1.ts] -import defaultBinding1, { } from "es6ImportDefaultBindingFollowedWithNamedImport_0"; -import defaultBinding2, { a } 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"; +import defaultBinding3, { a as b } from "./es6ImportDefaultBindingFollowedWithNamedImport_0"; var x1: number = b; -import defaultBinding4, { x, a as y } from "es6ImportDefaultBindingFollowedWithNamedImport_0"; +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"; +import defaultBinding5, { x as z, } from "./es6ImportDefaultBindingFollowedWithNamedImport_0"; var x1: number = z; -import defaultBinding6, { m, } from "es6ImportDefaultBindingFollowedWithNamedImport_0"; +import defaultBinding6, { m, } from "./es6ImportDefaultBindingFollowedWithNamedImport_0"; var x1: number = m; //// [es6ImportDefaultBindingFollowedWithNamedImport_0.js] -export var a = 10; -export var x = a; -export var m = a; -export default {}; +exports.a = 10; +exports.x = exports.a; +exports.m = exports.a; +exports.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; +var es6ImportDefaultBindingFollowedWithNamedImport_0_1 = require("./es6ImportDefaultBindingFollowedWithNamedImport_0"); +var x1 = es6ImportDefaultBindingFollowedWithNamedImport_0_1.a; +var es6ImportDefaultBindingFollowedWithNamedImport_0_2 = require("./es6ImportDefaultBindingFollowedWithNamedImport_0"); +var x1 = es6ImportDefaultBindingFollowedWithNamedImport_0_2.a; +var es6ImportDefaultBindingFollowedWithNamedImport_0_3 = require("./es6ImportDefaultBindingFollowedWithNamedImport_0"); +var x1 = es6ImportDefaultBindingFollowedWithNamedImport_0_3.x; +var x1 = es6ImportDefaultBindingFollowedWithNamedImport_0_3.a; +var es6ImportDefaultBindingFollowedWithNamedImport_0_4 = require("./es6ImportDefaultBindingFollowedWithNamedImport_0"); +var x1 = es6ImportDefaultBindingFollowedWithNamedImport_0_4.x; +var es6ImportDefaultBindingFollowedWithNamedImport_0_5 = require("./es6ImportDefaultBindingFollowedWithNamedImport_0"); +var x1 = es6ImportDefaultBindingFollowedWithNamedImport_0_5.m; //// [es6ImportDefaultBindingFollowedWithNamedImport_0.d.ts] diff --git a/tests/baselines/reference/es6ImportDefaultBindingFollowedWithNamedImport.symbols b/tests/baselines/reference/es6ImportDefaultBindingFollowedWithNamedImport.symbols new file mode 100644 index 00000000000..5da138f6c62 --- /dev/null +++ b/tests/baselines/reference/es6ImportDefaultBindingFollowedWithNamedImport.symbols @@ -0,0 +1,67 @@ +=== tests/cases/compiler/es6ImportDefaultBindingFollowedWithNamedImport_0.ts === + +export var a = 10; +>a : Symbol(a, Decl(es6ImportDefaultBindingFollowedWithNamedImport_0.ts, 1, 10)) + +export var x = a; +>x : Symbol(x, Decl(es6ImportDefaultBindingFollowedWithNamedImport_0.ts, 2, 10)) +>a : Symbol(a, Decl(es6ImportDefaultBindingFollowedWithNamedImport_0.ts, 1, 10)) + +export var m = a; +>m : Symbol(m, Decl(es6ImportDefaultBindingFollowedWithNamedImport_0.ts, 3, 10)) +>a : Symbol(a, Decl(es6ImportDefaultBindingFollowedWithNamedImport_0.ts, 1, 10)) + +export default {}; + +=== tests/cases/compiler/es6ImportDefaultBindingFollowedWithNamedImport_1.ts === +import defaultBinding1, { } from "./es6ImportDefaultBindingFollowedWithNamedImport_0"; +>defaultBinding1 : Symbol(defaultBinding1, Decl(es6ImportDefaultBindingFollowedWithNamedImport_1.ts, 0, 6)) + +import defaultBinding2, { a } from "./es6ImportDefaultBindingFollowedWithNamedImport_0"; +>defaultBinding2 : Symbol(defaultBinding2, Decl(es6ImportDefaultBindingFollowedWithNamedImport_1.ts, 1, 6)) +>a : Symbol(a, Decl(es6ImportDefaultBindingFollowedWithNamedImport_1.ts, 1, 25)) + +var x1: number = a; +>x1 : Symbol(x1, Decl(es6ImportDefaultBindingFollowedWithNamedImport_1.ts, 2, 3), Decl(es6ImportDefaultBindingFollowedWithNamedImport_1.ts, 4, 3), Decl(es6ImportDefaultBindingFollowedWithNamedImport_1.ts, 6, 3), Decl(es6ImportDefaultBindingFollowedWithNamedImport_1.ts, 7, 3), Decl(es6ImportDefaultBindingFollowedWithNamedImport_1.ts, 9, 3), Decl(es6ImportDefaultBindingFollowedWithNamedImport_1.ts, 11, 3)) +>a : Symbol(a, Decl(es6ImportDefaultBindingFollowedWithNamedImport_1.ts, 1, 25)) + +import defaultBinding3, { a as b } from "./es6ImportDefaultBindingFollowedWithNamedImport_0"; +>defaultBinding3 : Symbol(defaultBinding3, Decl(es6ImportDefaultBindingFollowedWithNamedImport_1.ts, 3, 6)) +>a : Symbol(b, Decl(es6ImportDefaultBindingFollowedWithNamedImport_1.ts, 3, 25)) +>b : Symbol(b, Decl(es6ImportDefaultBindingFollowedWithNamedImport_1.ts, 3, 25)) + +var x1: number = b; +>x1 : Symbol(x1, Decl(es6ImportDefaultBindingFollowedWithNamedImport_1.ts, 2, 3), Decl(es6ImportDefaultBindingFollowedWithNamedImport_1.ts, 4, 3), Decl(es6ImportDefaultBindingFollowedWithNamedImport_1.ts, 6, 3), Decl(es6ImportDefaultBindingFollowedWithNamedImport_1.ts, 7, 3), Decl(es6ImportDefaultBindingFollowedWithNamedImport_1.ts, 9, 3), Decl(es6ImportDefaultBindingFollowedWithNamedImport_1.ts, 11, 3)) +>b : Symbol(b, Decl(es6ImportDefaultBindingFollowedWithNamedImport_1.ts, 3, 25)) + +import defaultBinding4, { x, a as y } from "./es6ImportDefaultBindingFollowedWithNamedImport_0"; +>defaultBinding4 : Symbol(defaultBinding4, Decl(es6ImportDefaultBindingFollowedWithNamedImport_1.ts, 5, 6)) +>x : Symbol(x, Decl(es6ImportDefaultBindingFollowedWithNamedImport_1.ts, 5, 25)) +>a : Symbol(y, Decl(es6ImportDefaultBindingFollowedWithNamedImport_1.ts, 5, 28)) +>y : Symbol(y, Decl(es6ImportDefaultBindingFollowedWithNamedImport_1.ts, 5, 28)) + +var x1: number = x; +>x1 : Symbol(x1, Decl(es6ImportDefaultBindingFollowedWithNamedImport_1.ts, 2, 3), Decl(es6ImportDefaultBindingFollowedWithNamedImport_1.ts, 4, 3), Decl(es6ImportDefaultBindingFollowedWithNamedImport_1.ts, 6, 3), Decl(es6ImportDefaultBindingFollowedWithNamedImport_1.ts, 7, 3), Decl(es6ImportDefaultBindingFollowedWithNamedImport_1.ts, 9, 3), Decl(es6ImportDefaultBindingFollowedWithNamedImport_1.ts, 11, 3)) +>x : Symbol(x, Decl(es6ImportDefaultBindingFollowedWithNamedImport_1.ts, 5, 25)) + +var x1: number = y; +>x1 : Symbol(x1, Decl(es6ImportDefaultBindingFollowedWithNamedImport_1.ts, 2, 3), Decl(es6ImportDefaultBindingFollowedWithNamedImport_1.ts, 4, 3), Decl(es6ImportDefaultBindingFollowedWithNamedImport_1.ts, 6, 3), Decl(es6ImportDefaultBindingFollowedWithNamedImport_1.ts, 7, 3), Decl(es6ImportDefaultBindingFollowedWithNamedImport_1.ts, 9, 3), Decl(es6ImportDefaultBindingFollowedWithNamedImport_1.ts, 11, 3)) +>y : Symbol(y, Decl(es6ImportDefaultBindingFollowedWithNamedImport_1.ts, 5, 28)) + +import defaultBinding5, { x as z, } from "./es6ImportDefaultBindingFollowedWithNamedImport_0"; +>defaultBinding5 : Symbol(defaultBinding5, Decl(es6ImportDefaultBindingFollowedWithNamedImport_1.ts, 8, 6)) +>x : Symbol(z, Decl(es6ImportDefaultBindingFollowedWithNamedImport_1.ts, 8, 25)) +>z : Symbol(z, Decl(es6ImportDefaultBindingFollowedWithNamedImport_1.ts, 8, 25)) + +var x1: number = z; +>x1 : Symbol(x1, Decl(es6ImportDefaultBindingFollowedWithNamedImport_1.ts, 2, 3), Decl(es6ImportDefaultBindingFollowedWithNamedImport_1.ts, 4, 3), Decl(es6ImportDefaultBindingFollowedWithNamedImport_1.ts, 6, 3), Decl(es6ImportDefaultBindingFollowedWithNamedImport_1.ts, 7, 3), Decl(es6ImportDefaultBindingFollowedWithNamedImport_1.ts, 9, 3), Decl(es6ImportDefaultBindingFollowedWithNamedImport_1.ts, 11, 3)) +>z : Symbol(z, Decl(es6ImportDefaultBindingFollowedWithNamedImport_1.ts, 8, 25)) + +import defaultBinding6, { m, } from "./es6ImportDefaultBindingFollowedWithNamedImport_0"; +>defaultBinding6 : Symbol(defaultBinding6, Decl(es6ImportDefaultBindingFollowedWithNamedImport_1.ts, 10, 6)) +>m : Symbol(m, Decl(es6ImportDefaultBindingFollowedWithNamedImport_1.ts, 10, 25)) + +var x1: number = m; +>x1 : Symbol(x1, Decl(es6ImportDefaultBindingFollowedWithNamedImport_1.ts, 2, 3), Decl(es6ImportDefaultBindingFollowedWithNamedImport_1.ts, 4, 3), Decl(es6ImportDefaultBindingFollowedWithNamedImport_1.ts, 6, 3), Decl(es6ImportDefaultBindingFollowedWithNamedImport_1.ts, 7, 3), Decl(es6ImportDefaultBindingFollowedWithNamedImport_1.ts, 9, 3), Decl(es6ImportDefaultBindingFollowedWithNamedImport_1.ts, 11, 3)) +>m : Symbol(m, Decl(es6ImportDefaultBindingFollowedWithNamedImport_1.ts, 10, 25)) + diff --git a/tests/baselines/reference/es6ImportDefaultBindingFollowedWithNamedImport.types b/tests/baselines/reference/es6ImportDefaultBindingFollowedWithNamedImport.types new file mode 100644 index 00000000000..fe0137403a9 --- /dev/null +++ b/tests/baselines/reference/es6ImportDefaultBindingFollowedWithNamedImport.types @@ -0,0 +1,69 @@ +=== tests/cases/compiler/es6ImportDefaultBindingFollowedWithNamedImport_0.ts === + +export var a = 10; +>a : number +>10 : number + +export var x = a; +>x : number +>a : number + +export var m = a; +>m : number +>a : number + +export default {}; +>{} : {} + +=== tests/cases/compiler/es6ImportDefaultBindingFollowedWithNamedImport_1.ts === +import defaultBinding1, { } from "./es6ImportDefaultBindingFollowedWithNamedImport_0"; +>defaultBinding1 : {} + +import defaultBinding2, { a } from "./es6ImportDefaultBindingFollowedWithNamedImport_0"; +>defaultBinding2 : {} +>a : number + +var x1: number = a; +>x1 : number +>a : number + +import defaultBinding3, { a as b } from "./es6ImportDefaultBindingFollowedWithNamedImport_0"; +>defaultBinding3 : {} +>a : number +>b : number + +var x1: number = b; +>x1 : number +>b : number + +import defaultBinding4, { x, a as y } from "./es6ImportDefaultBindingFollowedWithNamedImport_0"; +>defaultBinding4 : {} +>x : number +>a : number +>y : number + +var x1: number = x; +>x1 : number +>x : number + +var x1: number = y; +>x1 : number +>y : number + +import defaultBinding5, { x as z, } from "./es6ImportDefaultBindingFollowedWithNamedImport_0"; +>defaultBinding5 : {} +>x : number +>z : number + +var x1: number = z; +>x1 : number +>z : number + +import defaultBinding6, { m, } from "./es6ImportDefaultBindingFollowedWithNamedImport_0"; +>defaultBinding6 : {} +>m : number + +var x1: number = m; +>x1 : number +>m : number + diff --git a/tests/baselines/reference/es6ImportDefaultBindingFollowedWithNamedImport1InEs5.errors.txt b/tests/baselines/reference/es6ImportDefaultBindingFollowedWithNamedImport1InEs5.errors.txt index 5809e0874dc..c62ecb70c58 100644 --- a/tests/baselines/reference/es6ImportDefaultBindingFollowedWithNamedImport1InEs5.errors.txt +++ b/tests/baselines/reference/es6ImportDefaultBindingFollowedWithNamedImport1InEs5.errors.txt @@ -12,27 +12,27 @@ tests/cases/compiler/es6ImportDefaultBindingFollowedWithNamedImport1InEs5_1.ts(1 export default a; ==== tests/cases/compiler/es6ImportDefaultBindingFollowedWithNamedImport1InEs5_1.ts (6 errors) ==== - import defaultBinding1, { } from "es6ImportDefaultBindingFollowedWithNamedImport1InEs5_0"; + import defaultBinding1, { } from "./es6ImportDefaultBindingFollowedWithNamedImport1InEs5_0"; var x: number = defaultBinding1; - import defaultBinding2, { a } from "es6ImportDefaultBindingFollowedWithNamedImport1InEs5_0"; + 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"; + 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"; + 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"; + 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"; + import defaultBinding6, { m, } from "./es6ImportDefaultBindingFollowedWithNamedImport1InEs5_0"; ~ !!! error TS2305: Module '"tests/cases/compiler/es6ImportDefaultBindingFollowedWithNamedImport1InEs5_0"' has no exported member 'm'. var x: number = defaultBinding6; diff --git a/tests/baselines/reference/es6ImportDefaultBindingFollowedWithNamedImport1InEs5.js b/tests/baselines/reference/es6ImportDefaultBindingFollowedWithNamedImport1InEs5.js index 7090b7a0663..7eda76622de 100644 --- a/tests/baselines/reference/es6ImportDefaultBindingFollowedWithNamedImport1InEs5.js +++ b/tests/baselines/reference/es6ImportDefaultBindingFollowedWithNamedImport1InEs5.js @@ -6,17 +6,17 @@ var a = 10; export default a; //// [es6ImportDefaultBindingFollowedWithNamedImport1InEs5_1.ts] -import defaultBinding1, { } from "es6ImportDefaultBindingFollowedWithNamedImport1InEs5_0"; +import defaultBinding1, { } from "./es6ImportDefaultBindingFollowedWithNamedImport1InEs5_0"; var x: number = defaultBinding1; -import defaultBinding2, { a } from "es6ImportDefaultBindingFollowedWithNamedImport1InEs5_0"; +import defaultBinding2, { a } from "./es6ImportDefaultBindingFollowedWithNamedImport1InEs5_0"; var x: number = defaultBinding2; -import defaultBinding3, { a as b } from "es6ImportDefaultBindingFollowedWithNamedImport1InEs5_0"; +import defaultBinding3, { a as b } from "./es6ImportDefaultBindingFollowedWithNamedImport1InEs5_0"; var x: number = defaultBinding3; -import defaultBinding4, { x, a as y } from "es6ImportDefaultBindingFollowedWithNamedImport1InEs5_0"; +import defaultBinding4, { x, a as y } from "./es6ImportDefaultBindingFollowedWithNamedImport1InEs5_0"; var x: number = defaultBinding4; -import defaultBinding5, { x as z, } from "es6ImportDefaultBindingFollowedWithNamedImport1InEs5_0"; +import defaultBinding5, { x as z, } from "./es6ImportDefaultBindingFollowedWithNamedImport1InEs5_0"; var x: number = defaultBinding5; -import defaultBinding6, { m, } from "es6ImportDefaultBindingFollowedWithNamedImport1InEs5_0"; +import defaultBinding6, { m, } from "./es6ImportDefaultBindingFollowedWithNamedImport1InEs5_0"; var x: number = defaultBinding6; @@ -25,17 +25,17 @@ var a = 10; Object.defineProperty(exports, "__esModule", { value: true }); exports.default = a; //// [es6ImportDefaultBindingFollowedWithNamedImport1InEs5_1.js] -var es6ImportDefaultBindingFollowedWithNamedImport1InEs5_0_1 = require("es6ImportDefaultBindingFollowedWithNamedImport1InEs5_0"); +var es6ImportDefaultBindingFollowedWithNamedImport1InEs5_0_1 = require("./es6ImportDefaultBindingFollowedWithNamedImport1InEs5_0"); var x = es6ImportDefaultBindingFollowedWithNamedImport1InEs5_0_1.default; -var es6ImportDefaultBindingFollowedWithNamedImport1InEs5_0_2 = require("es6ImportDefaultBindingFollowedWithNamedImport1InEs5_0"); +var es6ImportDefaultBindingFollowedWithNamedImport1InEs5_0_2 = require("./es6ImportDefaultBindingFollowedWithNamedImport1InEs5_0"); var x = es6ImportDefaultBindingFollowedWithNamedImport1InEs5_0_2.default; -var es6ImportDefaultBindingFollowedWithNamedImport1InEs5_0_3 = require("es6ImportDefaultBindingFollowedWithNamedImport1InEs5_0"); +var es6ImportDefaultBindingFollowedWithNamedImport1InEs5_0_3 = require("./es6ImportDefaultBindingFollowedWithNamedImport1InEs5_0"); var x = es6ImportDefaultBindingFollowedWithNamedImport1InEs5_0_3.default; -var es6ImportDefaultBindingFollowedWithNamedImport1InEs5_0_4 = require("es6ImportDefaultBindingFollowedWithNamedImport1InEs5_0"); +var es6ImportDefaultBindingFollowedWithNamedImport1InEs5_0_4 = require("./es6ImportDefaultBindingFollowedWithNamedImport1InEs5_0"); var x = es6ImportDefaultBindingFollowedWithNamedImport1InEs5_0_4.default; -var es6ImportDefaultBindingFollowedWithNamedImport1InEs5_0_5 = require("es6ImportDefaultBindingFollowedWithNamedImport1InEs5_0"); +var es6ImportDefaultBindingFollowedWithNamedImport1InEs5_0_5 = require("./es6ImportDefaultBindingFollowedWithNamedImport1InEs5_0"); var x = es6ImportDefaultBindingFollowedWithNamedImport1InEs5_0_5.default; -var es6ImportDefaultBindingFollowedWithNamedImport1InEs5_0_6 = require("es6ImportDefaultBindingFollowedWithNamedImport1InEs5_0"); +var es6ImportDefaultBindingFollowedWithNamedImport1InEs5_0_6 = require("./es6ImportDefaultBindingFollowedWithNamedImport1InEs5_0"); var x = es6ImportDefaultBindingFollowedWithNamedImport1InEs5_0_6.default; diff --git a/tests/baselines/reference/es6ImportDefaultBindingFollowedWithNamedImport1WithExport.errors.txt b/tests/baselines/reference/es6ImportDefaultBindingFollowedWithNamedImport1WithExport.errors.txt index aa9e0cb3af3..76c424a74d4 100644 --- a/tests/baselines/reference/es6ImportDefaultBindingFollowedWithNamedImport1WithExport.errors.txt +++ b/tests/baselines/reference/es6ImportDefaultBindingFollowedWithNamedImport1WithExport.errors.txt @@ -18,23 +18,23 @@ tests/cases/compiler/client.ts(11,34): error TS2305: Module '"tests/cases/compil export default a; ==== tests/cases/compiler/client.ts (12 errors) ==== - export import defaultBinding1, { } from "server"; + export import defaultBinding1, { } from "./server"; ~~~~~~ !!! error TS1191: An import declaration cannot have modifiers. export var x1: number = defaultBinding1; - export import defaultBinding2, { a } from "server"; + 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"; + 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"; + export import defaultBinding4, { x, a as y } from "./server"; ~~~~~~ !!! error TS1191: An import declaration cannot have modifiers. ~ @@ -42,13 +42,13 @@ tests/cases/compiler/client.ts(11,34): error TS2305: Module '"tests/cases/compil ~ !!! 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"; + 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"; + export import defaultBinding6, { m, } from "./server"; ~~~~~~ !!! error TS1191: An import declaration cannot have modifiers. ~ diff --git a/tests/baselines/reference/es6ImportDefaultBindingFollowedWithNamedImport1WithExport.js b/tests/baselines/reference/es6ImportDefaultBindingFollowedWithNamedImport1WithExport.js index 2b0e3ebbeb5..b83571066f0 100644 --- a/tests/baselines/reference/es6ImportDefaultBindingFollowedWithNamedImport1WithExport.js +++ b/tests/baselines/reference/es6ImportDefaultBindingFollowedWithNamedImport1WithExport.js @@ -6,17 +6,17 @@ var a = 10; export default a; //// [client.ts] -export import defaultBinding1, { } from "server"; +export import defaultBinding1, { } from "./server"; export var x1: number = defaultBinding1; -export import defaultBinding2, { a } from "server"; +export import defaultBinding2, { a } from "./server"; export var x1: number = defaultBinding2; -export import defaultBinding3, { a as b } from "server"; +export import defaultBinding3, { a as b } from "./server"; export var x1: number = defaultBinding3; -export import defaultBinding4, { x, a as y } from "server"; +export import defaultBinding4, { x, a as y } from "./server"; export var x1: number = defaultBinding4; -export import defaultBinding5, { x as z, } from "server"; +export import defaultBinding5, { x as z, } from "./server"; export var x1: number = defaultBinding5; -export import defaultBinding6, { m, } from "server"; +export import defaultBinding6, { m, } from "./server"; export var x1: number = defaultBinding6; @@ -25,17 +25,17 @@ var a = 10; Object.defineProperty(exports, "__esModule", { value: true }); exports.default = a; //// [client.js] -var server_1 = require("server"); +var server_1 = require("./server"); exports.x1 = server_1.default; -var server_2 = require("server"); +var server_2 = require("./server"); exports.x1 = server_2.default; -var server_3 = require("server"); +var server_3 = require("./server"); exports.x1 = server_3.default; -var server_4 = require("server"); +var server_4 = require("./server"); exports.x1 = server_4.default; -var server_5 = require("server"); +var server_5 = require("./server"); exports.x1 = server_5.default; -var server_6 = require("server"); +var server_6 = require("./server"); exports.x1 = server_6.default; diff --git a/tests/baselines/reference/es6ImportDefaultBindingFollowedWithNamedImportDts.errors.txt b/tests/baselines/reference/es6ImportDefaultBindingFollowedWithNamedImportDts.errors.txt index 451543d78f5..47e0cb347f3 100644 --- a/tests/baselines/reference/es6ImportDefaultBindingFollowedWithNamedImportDts.errors.txt +++ b/tests/baselines/reference/es6ImportDefaultBindingFollowedWithNamedImportDts.errors.txt @@ -16,27 +16,27 @@ tests/cases/compiler/client.ts(11,8): error TS1192: Module '"tests/cases/compile export class x11 { } ==== tests/cases/compiler/client.ts (6 errors) ==== - import defaultBinding1, { } from "server"; + import defaultBinding1, { } from "./server"; ~~~~~~~~~~~~~~~ !!! error TS1192: Module '"tests/cases/compiler/server"' has no default export. - import defaultBinding2, { a } from "server"; + import defaultBinding2, { a } from "./server"; ~~~~~~~~~~~~~~~ !!! error TS1192: Module '"tests/cases/compiler/server"' has no default export. export var x1 = new a(); - import defaultBinding3, { a11 as b } from "server"; + import defaultBinding3, { a11 as b } from "./server"; ~~~~~~~~~~~~~~~ !!! error TS1192: Module '"tests/cases/compiler/server"' has no default export. export var x2 = new b(); - import defaultBinding4, { x, a12 as y } from "server"; + import defaultBinding4, { x, a12 as y } from "./server"; ~~~~~~~~~~~~~~~ !!! error TS1192: 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"; + import defaultBinding5, { x11 as z, } from "./server"; ~~~~~~~~~~~~~~~ !!! error TS1192: Module '"tests/cases/compiler/server"' has no default export. export var x3 = new z(); - import defaultBinding6, { m, } from "server"; + import defaultBinding6, { m, } from "./server"; ~~~~~~~~~~~~~~~ !!! error TS1192: Module '"tests/cases/compiler/server"' has no default export. export var x6 = new m(); diff --git a/tests/baselines/reference/es6ImportDefaultBindingFollowedWithNamedImportDts.js b/tests/baselines/reference/es6ImportDefaultBindingFollowedWithNamedImportDts.js index 8cf9ab1ffb1..9314190e786 100644 --- a/tests/baselines/reference/es6ImportDefaultBindingFollowedWithNamedImportDts.js +++ b/tests/baselines/reference/es6ImportDefaultBindingFollowedWithNamedImportDts.js @@ -10,17 +10,17 @@ export class a12 { } export class x11 { } //// [client.ts] -import defaultBinding1, { } from "server"; -import defaultBinding2, { a } from "server"; +import defaultBinding1, { } from "./server"; +import defaultBinding2, { a } from "./server"; export var x1 = new a(); -import defaultBinding3, { a11 as b } from "server"; +import defaultBinding3, { a11 as b } from "./server"; export var x2 = new b(); -import defaultBinding4, { x, a12 as y } from "server"; +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"; +import defaultBinding5, { x11 as z, } from "./server"; export var x3 = new z(); -import defaultBinding6, { m, } from "server"; +import defaultBinding6, { m, } from "./server"; export var x6 = new m(); @@ -62,16 +62,16 @@ var x11 = (function () { })(); exports.x11 = x11; //// [client.js] -var server_1 = require("server"); +var server_1 = require("./server"); exports.x1 = new server_1.a(); -var server_2 = require("server"); +var server_2 = require("./server"); exports.x2 = new server_2.a11(); -var server_3 = require("server"); +var server_3 = require("./server"); exports.x4 = new server_3.x(); exports.x5 = new server_3.a12(); -var server_4 = require("server"); +var server_4 = require("./server"); exports.x3 = new server_4.x11(); -var server_5 = require("server"); +var server_5 = require("./server"); exports.x6 = new server_5.m(); @@ -89,14 +89,14 @@ export declare class a12 { export declare class x11 { } //// [client.d.ts] -import { a } from "server"; +import { a } from "./server"; export declare var x1: a; -import { a11 as b } from "server"; +import { a11 as b } from "./server"; export declare var x2: b; -import { x, a12 as y } from "server"; +import { x, a12 as y } from "./server"; export declare var x4: x; export declare var x5: y; -import { x11 as z } from "server"; +import { x11 as z } from "./server"; export declare var x3: z; -import { m } from "server"; +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 index 0e259f142b6..e939398632c 100644 --- a/tests/baselines/reference/es6ImportDefaultBindingFollowedWithNamedImportDts1.errors.txt +++ b/tests/baselines/reference/es6ImportDefaultBindingFollowedWithNamedImportDts1.errors.txt @@ -12,27 +12,27 @@ tests/cases/compiler/client.ts(11,27): error TS2305: Module '"tests/cases/compil export default a; ==== tests/cases/compiler/client.ts (6 errors) ==== - import defaultBinding1, { } from "server"; + import defaultBinding1, { } from "./server"; export var x1 = new defaultBinding1(); - import defaultBinding2, { a } from "server"; + 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"; + 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"; + 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"; + 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"; + 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 index dad034c618c..71d35fd85a1 100644 --- a/tests/baselines/reference/es6ImportDefaultBindingFollowedWithNamedImportDts1.js +++ b/tests/baselines/reference/es6ImportDefaultBindingFollowedWithNamedImportDts1.js @@ -6,17 +6,17 @@ class a { } export default a; //// [client.ts] -import defaultBinding1, { } from "server"; +import defaultBinding1, { } from "./server"; export var x1 = new defaultBinding1(); -import defaultBinding2, { a } from "server"; +import defaultBinding2, { a } from "./server"; export var x2 = new defaultBinding2(); -import defaultBinding3, { a as b } from "server"; +import defaultBinding3, { a as b } from "./server"; export var x3 = new defaultBinding3(); -import defaultBinding4, { x, a as y } from "server"; +import defaultBinding4, { x, a as y } from "./server"; export var x4 = new defaultBinding4(); -import defaultBinding5, { x as z, } from "server"; +import defaultBinding5, { x as z, } from "./server"; export var x5 = new defaultBinding5(); -import defaultBinding6, { m, } from "server"; +import defaultBinding6, { m, } from "./server"; export var x6 = new defaultBinding6(); //// [server.js] @@ -28,17 +28,17 @@ var a = (function () { Object.defineProperty(exports, "__esModule", { value: true }); exports.default = a; //// [client.js] -var server_1 = require("server"); +var server_1 = require("./server"); exports.x1 = new server_1.default(); -var server_2 = require("server"); +var server_2 = require("./server"); exports.x2 = new server_2.default(); -var server_3 = require("server"); +var server_3 = require("./server"); exports.x3 = new server_3.default(); -var server_4 = require("server"); +var server_4 = require("./server"); exports.x4 = new server_4.default(); -var server_5 = require("server"); +var server_5 = require("./server"); exports.x5 = new server_5.default(); -var server_6 = require("server"); +var server_6 = require("./server"); exports.x6 = new server_6.default(); @@ -47,7 +47,7 @@ declare class a { } export default a; //// [client.d.ts] -import defaultBinding1 from "server"; +import defaultBinding1 from "./server"; export declare var x1: defaultBinding1; export declare var x2: defaultBinding1; export declare var x3: defaultBinding1; diff --git a/tests/baselines/reference/es6ImportDefaultBindingFollowedWithNamedImportInEs5.errors.txt b/tests/baselines/reference/es6ImportDefaultBindingFollowedWithNamedImportInEs5.errors.txt index c1c28416ec7..7c5080241f1 100644 --- a/tests/baselines/reference/es6ImportDefaultBindingFollowedWithNamedImportInEs5.errors.txt +++ b/tests/baselines/reference/es6ImportDefaultBindingFollowedWithNamedImportInEs5.errors.txt @@ -13,27 +13,27 @@ tests/cases/compiler/es6ImportDefaultBindingFollowedWithNamedImportInEs5_1.ts(11 export var m = a; ==== tests/cases/compiler/es6ImportDefaultBindingFollowedWithNamedImportInEs5_1.ts (6 errors) ==== - import defaultBinding1, { } from "es6ImportDefaultBindingFollowedWithNamedImportInEs5_0"; + import defaultBinding1, { } from "./es6ImportDefaultBindingFollowedWithNamedImportInEs5_0"; ~~~~~~~~~~~~~~~ !!! error TS1192: Module '"tests/cases/compiler/es6ImportDefaultBindingFollowedWithNamedImportInEs5_0"' has no default export. - import defaultBinding2, { a } from "es6ImportDefaultBindingFollowedWithNamedImportInEs5_0"; + import defaultBinding2, { a } from "./es6ImportDefaultBindingFollowedWithNamedImportInEs5_0"; ~~~~~~~~~~~~~~~ !!! error TS1192: Module '"tests/cases/compiler/es6ImportDefaultBindingFollowedWithNamedImportInEs5_0"' has no default export. var x1: number = a; - import defaultBinding3, { a as b } from "es6ImportDefaultBindingFollowedWithNamedImportInEs5_0"; + import defaultBinding3, { a as b } from "./es6ImportDefaultBindingFollowedWithNamedImportInEs5_0"; ~~~~~~~~~~~~~~~ !!! error TS1192: Module '"tests/cases/compiler/es6ImportDefaultBindingFollowedWithNamedImportInEs5_0"' has no default export. var x1: number = b; - import defaultBinding4, { x, a as y } from "es6ImportDefaultBindingFollowedWithNamedImportInEs5_0"; + import defaultBinding4, { x, a as y } from "./es6ImportDefaultBindingFollowedWithNamedImportInEs5_0"; ~~~~~~~~~~~~~~~ !!! error TS1192: 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"; + import defaultBinding5, { x as z, } from "./es6ImportDefaultBindingFollowedWithNamedImportInEs5_0"; ~~~~~~~~~~~~~~~ !!! error TS1192: Module '"tests/cases/compiler/es6ImportDefaultBindingFollowedWithNamedImportInEs5_0"' has no default export. var x1: number = z; - import defaultBinding6, { m, } from "es6ImportDefaultBindingFollowedWithNamedImportInEs5_0"; + import defaultBinding6, { m, } from "./es6ImportDefaultBindingFollowedWithNamedImportInEs5_0"; ~~~~~~~~~~~~~~~ !!! error TS1192: Module '"tests/cases/compiler/es6ImportDefaultBindingFollowedWithNamedImportInEs5_0"' has no default export. var x1: number = m; diff --git a/tests/baselines/reference/es6ImportDefaultBindingFollowedWithNamedImportInEs5.js b/tests/baselines/reference/es6ImportDefaultBindingFollowedWithNamedImportInEs5.js index 1c65fadbe1d..9674f8c12f4 100644 --- a/tests/baselines/reference/es6ImportDefaultBindingFollowedWithNamedImportInEs5.js +++ b/tests/baselines/reference/es6ImportDefaultBindingFollowedWithNamedImportInEs5.js @@ -7,17 +7,17 @@ export var x = a; export var m = a; //// [es6ImportDefaultBindingFollowedWithNamedImportInEs5_1.ts] -import defaultBinding1, { } from "es6ImportDefaultBindingFollowedWithNamedImportInEs5_0"; -import defaultBinding2, { a } 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"; +import defaultBinding3, { a as b } from "./es6ImportDefaultBindingFollowedWithNamedImportInEs5_0"; var x1: number = b; -import defaultBinding4, { x, a as y } from "es6ImportDefaultBindingFollowedWithNamedImportInEs5_0"; +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"; +import defaultBinding5, { x as z, } from "./es6ImportDefaultBindingFollowedWithNamedImportInEs5_0"; var x1: number = z; -import defaultBinding6, { m, } from "es6ImportDefaultBindingFollowedWithNamedImportInEs5_0"; +import defaultBinding6, { m, } from "./es6ImportDefaultBindingFollowedWithNamedImportInEs5_0"; var x1: number = m; @@ -26,16 +26,16 @@ exports.a = 10; exports.x = exports.a; exports.m = exports.a; //// [es6ImportDefaultBindingFollowedWithNamedImportInEs5_1.js] -var es6ImportDefaultBindingFollowedWithNamedImportInEs5_0_1 = require("es6ImportDefaultBindingFollowedWithNamedImportInEs5_0"); +var es6ImportDefaultBindingFollowedWithNamedImportInEs5_0_1 = require("./es6ImportDefaultBindingFollowedWithNamedImportInEs5_0"); var x1 = es6ImportDefaultBindingFollowedWithNamedImportInEs5_0_1.a; -var es6ImportDefaultBindingFollowedWithNamedImportInEs5_0_2 = require("es6ImportDefaultBindingFollowedWithNamedImportInEs5_0"); +var es6ImportDefaultBindingFollowedWithNamedImportInEs5_0_2 = require("./es6ImportDefaultBindingFollowedWithNamedImportInEs5_0"); var x1 = es6ImportDefaultBindingFollowedWithNamedImportInEs5_0_2.a; -var es6ImportDefaultBindingFollowedWithNamedImportInEs5_0_3 = require("es6ImportDefaultBindingFollowedWithNamedImportInEs5_0"); +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 es6ImportDefaultBindingFollowedWithNamedImportInEs5_0_4 = require("./es6ImportDefaultBindingFollowedWithNamedImportInEs5_0"); var x1 = es6ImportDefaultBindingFollowedWithNamedImportInEs5_0_4.x; -var es6ImportDefaultBindingFollowedWithNamedImportInEs5_0_5 = require("es6ImportDefaultBindingFollowedWithNamedImportInEs5_0"); +var es6ImportDefaultBindingFollowedWithNamedImportInEs5_0_5 = require("./es6ImportDefaultBindingFollowedWithNamedImportInEs5_0"); var x1 = es6ImportDefaultBindingFollowedWithNamedImportInEs5_0_5.m; diff --git a/tests/baselines/reference/es6ImportDefaultBindingFollowedWithNamespaceBinding1InEs5.js b/tests/baselines/reference/es6ImportDefaultBindingFollowedWithNamespaceBinding1InEs5.js index 4a987110224..ada6e423e73 100644 --- a/tests/baselines/reference/es6ImportDefaultBindingFollowedWithNamespaceBinding1InEs5.js +++ b/tests/baselines/reference/es6ImportDefaultBindingFollowedWithNamespaceBinding1InEs5.js @@ -6,7 +6,7 @@ var a = 10; export default a; //// [es6ImportDefaultBindingFollowedWithNamespaceBindingInEs5_1.ts] -import defaultBinding, * as nameSpaceBinding from "es6ImportDefaultBindingFollowedWithNamespaceBindingInEs5_0"; +import defaultBinding, * as nameSpaceBinding from "./es6ImportDefaultBindingFollowedWithNamespaceBindingInEs5_0"; var x: number = defaultBinding; //// [es6ImportDefaultBindingFollowedWithNamespaceBindingInEs5_0.js] @@ -14,7 +14,7 @@ var a = 10; Object.defineProperty(exports, "__esModule", { value: true }); exports.default = a; //// [es6ImportDefaultBindingFollowedWithNamespaceBindingInEs5_1.js] -var es6ImportDefaultBindingFollowedWithNamespaceBindingInEs5_0_1 = require("es6ImportDefaultBindingFollowedWithNamespaceBindingInEs5_0"), nameSpaceBinding = es6ImportDefaultBindingFollowedWithNamespaceBindingInEs5_0_1; +var es6ImportDefaultBindingFollowedWithNamespaceBindingInEs5_0_1 = require("./es6ImportDefaultBindingFollowedWithNamespaceBindingInEs5_0"), nameSpaceBinding = es6ImportDefaultBindingFollowedWithNamespaceBindingInEs5_0_1; var x = es6ImportDefaultBindingFollowedWithNamespaceBindingInEs5_0_1.default; diff --git a/tests/baselines/reference/es6ImportDefaultBindingFollowedWithNamespaceBinding1InEs5.symbols b/tests/baselines/reference/es6ImportDefaultBindingFollowedWithNamespaceBinding1InEs5.symbols index d4a9c289e60..4262dd3c61b 100644 --- a/tests/baselines/reference/es6ImportDefaultBindingFollowedWithNamespaceBinding1InEs5.symbols +++ b/tests/baselines/reference/es6ImportDefaultBindingFollowedWithNamespaceBinding1InEs5.symbols @@ -7,7 +7,7 @@ export default a; >a : Symbol(a, Decl(es6ImportDefaultBindingFollowedWithNamespaceBindingInEs5_0.ts, 1, 3)) === tests/cases/compiler/es6ImportDefaultBindingFollowedWithNamespaceBindingInEs5_1.ts === -import defaultBinding, * as nameSpaceBinding from "es6ImportDefaultBindingFollowedWithNamespaceBindingInEs5_0"; +import defaultBinding, * as nameSpaceBinding from "./es6ImportDefaultBindingFollowedWithNamespaceBindingInEs5_0"; >defaultBinding : Symbol(defaultBinding, Decl(es6ImportDefaultBindingFollowedWithNamespaceBindingInEs5_1.ts, 0, 6)) >nameSpaceBinding : Symbol(nameSpaceBinding, Decl(es6ImportDefaultBindingFollowedWithNamespaceBindingInEs5_1.ts, 0, 22)) diff --git a/tests/baselines/reference/es6ImportDefaultBindingFollowedWithNamespaceBinding1InEs5.types b/tests/baselines/reference/es6ImportDefaultBindingFollowedWithNamespaceBinding1InEs5.types index 4a05b57e304..4f9c618f10c 100644 --- a/tests/baselines/reference/es6ImportDefaultBindingFollowedWithNamespaceBinding1InEs5.types +++ b/tests/baselines/reference/es6ImportDefaultBindingFollowedWithNamespaceBinding1InEs5.types @@ -8,7 +8,7 @@ export default a; >a : number === tests/cases/compiler/es6ImportDefaultBindingFollowedWithNamespaceBindingInEs5_1.ts === -import defaultBinding, * as nameSpaceBinding from "es6ImportDefaultBindingFollowedWithNamespaceBindingInEs5_0"; +import defaultBinding, * as nameSpaceBinding from "./es6ImportDefaultBindingFollowedWithNamespaceBindingInEs5_0"; >defaultBinding : number >nameSpaceBinding : typeof nameSpaceBinding diff --git a/tests/baselines/reference/es6ImportDefaultBindingFollowedWithNamespaceBindingDts.errors.txt b/tests/baselines/reference/es6ImportDefaultBindingFollowedWithNamespaceBindingDts.errors.txt index 19fa0383d52..1fc12619017 100644 --- a/tests/baselines/reference/es6ImportDefaultBindingFollowedWithNamespaceBindingDts.errors.txt +++ b/tests/baselines/reference/es6ImportDefaultBindingFollowedWithNamespaceBindingDts.errors.txt @@ -6,7 +6,7 @@ tests/cases/compiler/client.ts(1,8): error TS1192: Module '"tests/cases/compiler export class a { } ==== tests/cases/compiler/client.ts (1 errors) ==== - import defaultBinding, * as nameSpaceBinding from "server"; + import defaultBinding, * as nameSpaceBinding from "./server"; ~~~~~~~~~~~~~~ !!! error TS1192: 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 index 31ef01c464c..93918f6171a 100644 --- a/tests/baselines/reference/es6ImportDefaultBindingFollowedWithNamespaceBindingDts.js +++ b/tests/baselines/reference/es6ImportDefaultBindingFollowedWithNamespaceBindingDts.js @@ -5,7 +5,7 @@ export class a { } //// [client.ts] -import defaultBinding, * as nameSpaceBinding from "server"; +import defaultBinding, * as nameSpaceBinding from "./server"; export var x = new nameSpaceBinding.a(); //// [server.js] @@ -16,7 +16,7 @@ var a = (function () { })(); exports.a = a; //// [client.js] -var server_1 = require("server"), nameSpaceBinding = server_1; +var server_1 = require("./server"), nameSpaceBinding = server_1; exports.x = new nameSpaceBinding.a(); @@ -24,5 +24,5 @@ exports.x = new nameSpaceBinding.a(); export declare class a { } //// [client.d.ts] -import * as nameSpaceBinding from "server"; +import * as nameSpaceBinding from "./server"; export declare var x: nameSpaceBinding.a; diff --git a/tests/baselines/reference/es6ImportDefaultBindingFollowedWithNamespaceBindingInEs5.errors.txt b/tests/baselines/reference/es6ImportDefaultBindingFollowedWithNamespaceBindingInEs5.errors.txt index dbbbf67118e..f14af87315c 100644 --- a/tests/baselines/reference/es6ImportDefaultBindingFollowedWithNamespaceBindingInEs5.errors.txt +++ b/tests/baselines/reference/es6ImportDefaultBindingFollowedWithNamespaceBindingInEs5.errors.txt @@ -6,7 +6,7 @@ tests/cases/compiler/es6ImportDefaultBindingFollowedWithNamespaceBindingInEs5_1. export var a = 10; ==== tests/cases/compiler/es6ImportDefaultBindingFollowedWithNamespaceBindingInEs5_1.ts (1 errors) ==== - import defaultBinding, * as nameSpaceBinding from "es6ImportDefaultBindingFollowedWithNamespaceBindingInEs5_0"; + import defaultBinding, * as nameSpaceBinding from "./es6ImportDefaultBindingFollowedWithNamespaceBindingInEs5_0"; ~~~~~~~~~~~~~~ !!! error TS1192: 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 4a49d3c2d6f..49717c588b7 100644 --- a/tests/baselines/reference/es6ImportDefaultBindingFollowedWithNamespaceBindingInEs5.js +++ b/tests/baselines/reference/es6ImportDefaultBindingFollowedWithNamespaceBindingInEs5.js @@ -5,13 +5,13 @@ 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 es6ImportDefaultBindingFollowedWithNamespaceBindingInEs5_0_1 = require("./es6ImportDefaultBindingFollowedWithNamespaceBindingInEs5_0"), nameSpaceBinding = es6ImportDefaultBindingFollowedWithNamespaceBindingInEs5_0_1; var x = nameSpaceBinding.a; diff --git a/tests/baselines/reference/es6ImportDefaultBindingFollowedWithNamespaceBindingWithExport.errors.txt b/tests/baselines/reference/es6ImportDefaultBindingFollowedWithNamespaceBindingWithExport.errors.txt index 3da1cf3fda8..d0eee527356 100644 --- a/tests/baselines/reference/es6ImportDefaultBindingFollowedWithNamespaceBindingWithExport.errors.txt +++ b/tests/baselines/reference/es6ImportDefaultBindingFollowedWithNamespaceBindingWithExport.errors.txt @@ -7,7 +7,7 @@ tests/cases/compiler/client.ts(1,15): error TS1192: Module '"tests/cases/compile export var a = 10; ==== tests/cases/compiler/client.ts (2 errors) ==== - export import defaultBinding, * as nameSpaceBinding from "server"; + export import defaultBinding, * as nameSpaceBinding from "./server"; ~~~~~~ !!! error TS1191: An import declaration cannot have modifiers. ~~~~~~~~~~~~~~ diff --git a/tests/baselines/reference/es6ImportDefaultBindingFollowedWithNamespaceBindingWithExport.js b/tests/baselines/reference/es6ImportDefaultBindingFollowedWithNamespaceBindingWithExport.js index df233fe18a5..dec9b8cfebe 100644 --- a/tests/baselines/reference/es6ImportDefaultBindingFollowedWithNamespaceBindingWithExport.js +++ b/tests/baselines/reference/es6ImportDefaultBindingFollowedWithNamespaceBindingWithExport.js @@ -5,13 +5,13 @@ export var a = 10; //// [client.ts] -export import defaultBinding, * as nameSpaceBinding from "server"; +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; +var server_1 = require("./server"), nameSpaceBinding = server_1; exports.x = nameSpaceBinding.a; diff --git a/tests/baselines/reference/es6ImportDefaultBindingInEs5.errors.txt b/tests/baselines/reference/es6ImportDefaultBindingInEs5.errors.txt index 109b322f4bb..18f634d7b73 100644 --- a/tests/baselines/reference/es6ImportDefaultBindingInEs5.errors.txt +++ b/tests/baselines/reference/es6ImportDefaultBindingInEs5.errors.txt @@ -7,6 +7,6 @@ tests/cases/compiler/es6ImportDefaultBindingInEs5_1.ts(1,8): error TS1192: Modul export = a; ==== tests/cases/compiler/es6ImportDefaultBindingInEs5_1.ts (1 errors) ==== - import defaultBinding from "es6ImportDefaultBindingInEs5_0"; + import defaultBinding from "./es6ImportDefaultBindingInEs5_0"; ~~~~~~~~~~~~~~ !!! error TS1192: 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 0b703f829ca..34323b2752b 100644 --- a/tests/baselines/reference/es6ImportDefaultBindingInEs5.js +++ b/tests/baselines/reference/es6ImportDefaultBindingInEs5.js @@ -6,7 +6,7 @@ var a = 10; export = a; //// [es6ImportDefaultBindingInEs5_1.ts] -import defaultBinding from "es6ImportDefaultBindingInEs5_0"; +import defaultBinding from "./es6ImportDefaultBindingInEs5_0"; //// [es6ImportDefaultBindingInEs5_0.js] var a = 10; diff --git a/tests/baselines/reference/es6ImportDefaultBindingMergeErrors.errors.txt b/tests/baselines/reference/es6ImportDefaultBindingMergeErrors.errors.txt index cd0550609c7..8b67ddfeac3 100644 --- a/tests/baselines/reference/es6ImportDefaultBindingMergeErrors.errors.txt +++ b/tests/baselines/reference/es6ImportDefaultBindingMergeErrors.errors.txt @@ -9,18 +9,18 @@ tests/cases/compiler/es6ImportDefaultBindingMergeErrors_1.ts(8,8): error TS2300: export default a; ==== tests/cases/compiler/es6ImportDefaultBindingMergeErrors_1.ts (3 errors) ==== - import defaultBinding from "es6ImportDefaultBindingMergeErrors_0"; + import defaultBinding from "./es6ImportDefaultBindingMergeErrors_0"; interface defaultBinding { // This is ok } var x = defaultBinding; - import defaultBinding2 from "es6ImportDefaultBindingMergeErrors_0"; // Should be error + 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 + import defaultBinding3 from "./es6ImportDefaultBindingMergeErrors_0"; // Should be error ~~~~~~~~~~~~~~~ !!! error TS2300: Duplicate identifier 'defaultBinding3'. - import defaultBinding3 from "es6ImportDefaultBindingMergeErrors_0"; // SHould be error + 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 index 10b8bec03c7..fb80fdd3e4f 100644 --- a/tests/baselines/reference/es6ImportDefaultBindingMergeErrors.js +++ b/tests/baselines/reference/es6ImportDefaultBindingMergeErrors.js @@ -6,14 +6,14 @@ var a = 10; export default a; //// [es6ImportDefaultBindingMergeErrors_1.ts] -import defaultBinding from "es6ImportDefaultBindingMergeErrors_0"; +import defaultBinding from "./es6ImportDefaultBindingMergeErrors_0"; interface defaultBinding { // This is ok } var x = defaultBinding; -import defaultBinding2 from "es6ImportDefaultBindingMergeErrors_0"; // Should be error +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 +import defaultBinding3 from "./es6ImportDefaultBindingMergeErrors_0"; // Should be error +import defaultBinding3 from "./es6ImportDefaultBindingMergeErrors_0"; // SHould be error //// [es6ImportDefaultBindingMergeErrors_0.js] @@ -21,6 +21,6 @@ var a = 10; Object.defineProperty(exports, "__esModule", { value: true }); exports.default = a; //// [es6ImportDefaultBindingMergeErrors_1.js] -var es6ImportDefaultBindingMergeErrors_0_1 = require("es6ImportDefaultBindingMergeErrors_0"); +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 index a37a71e7378..9d0e46ceb97 100644 --- a/tests/baselines/reference/es6ImportDefaultBindingNoDefaultProperty.errors.txt +++ b/tests/baselines/reference/es6ImportDefaultBindingNoDefaultProperty.errors.txt @@ -6,7 +6,7 @@ tests/cases/compiler/es6ImportDefaultBindingNoDefaultProperty_1.ts(1,8): error T export var a = 10; ==== tests/cases/compiler/es6ImportDefaultBindingNoDefaultProperty_1.ts (1 errors) ==== - import defaultBinding from "es6ImportDefaultBindingNoDefaultProperty_0"; + import defaultBinding from "./es6ImportDefaultBindingNoDefaultProperty_0"; ~~~~~~~~~~~~~~ !!! error TS1192: 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 index f824dbf71d5..1c9ec4eeae5 100644 --- a/tests/baselines/reference/es6ImportDefaultBindingNoDefaultProperty.js +++ b/tests/baselines/reference/es6ImportDefaultBindingNoDefaultProperty.js @@ -5,7 +5,7 @@ export var a = 10; //// [es6ImportDefaultBindingNoDefaultProperty_1.ts] -import defaultBinding from "es6ImportDefaultBindingNoDefaultProperty_0"; +import defaultBinding from "./es6ImportDefaultBindingNoDefaultProperty_0"; //// [es6ImportDefaultBindingNoDefaultProperty_0.js] diff --git a/tests/baselines/reference/es6ImportEqualsDeclaration.errors.txt b/tests/baselines/reference/es6ImportEqualsDeclaration.errors.txt index d3351ee97b2..7de5d7f0e3d 100644 --- a/tests/baselines/reference/es6ImportEqualsDeclaration.errors.txt +++ b/tests/baselines/reference/es6ImportEqualsDeclaration.errors.txt @@ -1,15 +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,1): error TS1202: Import assignment cannot be used when targeting ECMAScript 6 modules. Consider using 'import * as ns from "mod"', 'import {a} from "mod"', 'import d from "mod"', or another module format instead. +tests/cases/compiler/server.ts(3,1): error TS1203: Export assignment cannot be used when targeting ECMAScript 6 modules. Consider using 'export default' or another module format 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. +!!! error TS1202: Import assignment cannot be used when targeting ECMAScript 6 modules. Consider using 'import * as ns from "mod"', 'import {a} from "mod"', 'import d from "mod"', or another module format 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. +!!! error TS1203: Export assignment cannot be used when targeting ECMAScript 6 modules. Consider using 'export default' or another module format instead. \ No newline at end of file diff --git a/tests/baselines/reference/es6ImportNameSpaceImport.errors.txt b/tests/baselines/reference/es6ImportNameSpaceImport.errors.txt deleted file mode 100644 index 00a6dcb2cfd..00000000000 --- a/tests/baselines/reference/es6ImportNameSpaceImport.errors.txt +++ /dev/null @@ -1,13 +0,0 @@ -error TS1204: Cannot compile modules into 'commonjs', 'amd', 'system' or 'umd' when targeting 'ES6' or higher. - - -!!! error TS1204: Cannot compile modules into 'commonjs', 'amd', 'system' or 'umd' 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 653feeb22b7..32bdd78b329 100644 --- a/tests/baselines/reference/es6ImportNameSpaceImport.js +++ b/tests/baselines/reference/es6ImportNameSpaceImport.js @@ -5,15 +5,15 @@ 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 +import * as nameSpaceBinding2 from "./es6ImportNameSpaceImport_0"; // elide this //// [es6ImportNameSpaceImport_0.js] -export var a = 10; +exports.a = 10; //// [es6ImportNameSpaceImport_1.js] -import * as nameSpaceBinding from "es6ImportNameSpaceImport_0"; +var nameSpaceBinding = require("./es6ImportNameSpaceImport_0"); var x = nameSpaceBinding.a; diff --git a/tests/baselines/reference/es6ImportNameSpaceImport.symbols b/tests/baselines/reference/es6ImportNameSpaceImport.symbols new file mode 100644 index 00000000000..add2b792d49 --- /dev/null +++ b/tests/baselines/reference/es6ImportNameSpaceImport.symbols @@ -0,0 +1,18 @@ +=== tests/cases/compiler/es6ImportNameSpaceImport_0.ts === + +export var a = 10; +>a : Symbol(a, Decl(es6ImportNameSpaceImport_0.ts, 1, 10)) + +=== tests/cases/compiler/es6ImportNameSpaceImport_1.ts === +import * as nameSpaceBinding from "./es6ImportNameSpaceImport_0"; +>nameSpaceBinding : Symbol(nameSpaceBinding, Decl(es6ImportNameSpaceImport_1.ts, 0, 6)) + +var x = nameSpaceBinding.a; +>x : Symbol(x, Decl(es6ImportNameSpaceImport_1.ts, 1, 3)) +>nameSpaceBinding.a : Symbol(nameSpaceBinding.a, Decl(es6ImportNameSpaceImport_0.ts, 1, 10)) +>nameSpaceBinding : Symbol(nameSpaceBinding, Decl(es6ImportNameSpaceImport_1.ts, 0, 6)) +>a : Symbol(nameSpaceBinding.a, Decl(es6ImportNameSpaceImport_0.ts, 1, 10)) + +import * as nameSpaceBinding2 from "./es6ImportNameSpaceImport_0"; // elide this +>nameSpaceBinding2 : Symbol(nameSpaceBinding2, Decl(es6ImportNameSpaceImport_1.ts, 2, 6)) + diff --git a/tests/baselines/reference/es6ImportNameSpaceImport.types b/tests/baselines/reference/es6ImportNameSpaceImport.types new file mode 100644 index 00000000000..56ee0c4d87a --- /dev/null +++ b/tests/baselines/reference/es6ImportNameSpaceImport.types @@ -0,0 +1,19 @@ +=== tests/cases/compiler/es6ImportNameSpaceImport_0.ts === + +export var a = 10; +>a : number +>10 : number + +=== tests/cases/compiler/es6ImportNameSpaceImport_1.ts === +import * as nameSpaceBinding from "./es6ImportNameSpaceImport_0"; +>nameSpaceBinding : typeof nameSpaceBinding + +var x = nameSpaceBinding.a; +>x : number +>nameSpaceBinding.a : number +>nameSpaceBinding : typeof nameSpaceBinding +>a : number + +import * as nameSpaceBinding2 from "./es6ImportNameSpaceImport_0"; // elide this +>nameSpaceBinding2 : typeof nameSpaceBinding + diff --git a/tests/baselines/reference/es6ImportNameSpaceImportDts.js b/tests/baselines/reference/es6ImportNameSpaceImportDts.js index 91e927428a1..dfdfe2602a3 100644 --- a/tests/baselines/reference/es6ImportNameSpaceImportDts.js +++ b/tests/baselines/reference/es6ImportNameSpaceImportDts.js @@ -5,9 +5,9 @@ export class c { }; //// [client.ts] -import * as nameSpaceBinding from "server"; +import * as nameSpaceBinding from "./server"; export var x = new nameSpaceBinding.c(); -import * as nameSpaceBinding2 from "server"; // unreferenced +import * as nameSpaceBinding2 from "./server"; // unreferenced //// [server.js] var c = (function () { @@ -18,7 +18,7 @@ var c = (function () { exports.c = c; ; //// [client.js] -var nameSpaceBinding = require("server"); +var nameSpaceBinding = require("./server"); exports.x = new nameSpaceBinding.c(); @@ -26,5 +26,5 @@ exports.x = new nameSpaceBinding.c(); export declare class c { } //// [client.d.ts] -import * as nameSpaceBinding from "server"; +import * as nameSpaceBinding from "./server"; export declare var x: nameSpaceBinding.c; diff --git a/tests/baselines/reference/es6ImportNameSpaceImportDts.symbols b/tests/baselines/reference/es6ImportNameSpaceImportDts.symbols index 8104cbcce50..5f6fea374be 100644 --- a/tests/baselines/reference/es6ImportNameSpaceImportDts.symbols +++ b/tests/baselines/reference/es6ImportNameSpaceImportDts.symbols @@ -4,7 +4,7 @@ export class c { }; >c : Symbol(c, Decl(server.ts, 0, 0)) === tests/cases/compiler/client.ts === -import * as nameSpaceBinding from "server"; +import * as nameSpaceBinding from "./server"; >nameSpaceBinding : Symbol(nameSpaceBinding, Decl(client.ts, 0, 6)) export var x = new nameSpaceBinding.c(); @@ -13,6 +13,6 @@ export var x = new nameSpaceBinding.c(); >nameSpaceBinding : Symbol(nameSpaceBinding, Decl(client.ts, 0, 6)) >c : Symbol(nameSpaceBinding.c, Decl(server.ts, 0, 0)) -import * as nameSpaceBinding2 from "server"; // unreferenced +import * as nameSpaceBinding2 from "./server"; // unreferenced >nameSpaceBinding2 : Symbol(nameSpaceBinding2, Decl(client.ts, 2, 6)) diff --git a/tests/baselines/reference/es6ImportNameSpaceImportDts.types b/tests/baselines/reference/es6ImportNameSpaceImportDts.types index 345d593b143..e49f3ace57a 100644 --- a/tests/baselines/reference/es6ImportNameSpaceImportDts.types +++ b/tests/baselines/reference/es6ImportNameSpaceImportDts.types @@ -4,7 +4,7 @@ export class c { }; >c : c === tests/cases/compiler/client.ts === -import * as nameSpaceBinding from "server"; +import * as nameSpaceBinding from "./server"; >nameSpaceBinding : typeof nameSpaceBinding export var x = new nameSpaceBinding.c(); @@ -14,6 +14,6 @@ export var x = new nameSpaceBinding.c(); >nameSpaceBinding : typeof nameSpaceBinding >c : typeof nameSpaceBinding.c -import * as nameSpaceBinding2 from "server"; // unreferenced +import * as nameSpaceBinding2 from "./server"; // unreferenced >nameSpaceBinding2 : typeof nameSpaceBinding diff --git a/tests/baselines/reference/es6ImportNameSpaceImportInEs5.js b/tests/baselines/reference/es6ImportNameSpaceImportInEs5.js index 50a03972cc2..dfc90c3e9af 100644 --- a/tests/baselines/reference/es6ImportNameSpaceImportInEs5.js +++ b/tests/baselines/reference/es6ImportNameSpaceImportInEs5.js @@ -5,15 +5,15 @@ 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 +import * as nameSpaceBinding2 from "./es6ImportNameSpaceImportInEs5_0"; // elide this //// [es6ImportNameSpaceImportInEs5_0.js] exports.a = 10; //// [es6ImportNameSpaceImportInEs5_1.js] -var nameSpaceBinding = require("es6ImportNameSpaceImportInEs5_0"); +var nameSpaceBinding = require("./es6ImportNameSpaceImportInEs5_0"); var x = nameSpaceBinding.a; diff --git a/tests/baselines/reference/es6ImportNameSpaceImportInEs5.symbols b/tests/baselines/reference/es6ImportNameSpaceImportInEs5.symbols index 119787de817..7be619dcc7e 100644 --- a/tests/baselines/reference/es6ImportNameSpaceImportInEs5.symbols +++ b/tests/baselines/reference/es6ImportNameSpaceImportInEs5.symbols @@ -4,7 +4,7 @@ export var a = 10; >a : Symbol(a, Decl(es6ImportNameSpaceImportInEs5_0.ts, 1, 10)) === tests/cases/compiler/es6ImportNameSpaceImportInEs5_1.ts === -import * as nameSpaceBinding from "es6ImportNameSpaceImportInEs5_0"; +import * as nameSpaceBinding from "./es6ImportNameSpaceImportInEs5_0"; >nameSpaceBinding : Symbol(nameSpaceBinding, Decl(es6ImportNameSpaceImportInEs5_1.ts, 0, 6)) var x = nameSpaceBinding.a; @@ -13,6 +13,6 @@ var x = nameSpaceBinding.a; >nameSpaceBinding : Symbol(nameSpaceBinding, Decl(es6ImportNameSpaceImportInEs5_1.ts, 0, 6)) >a : Symbol(nameSpaceBinding.a, Decl(es6ImportNameSpaceImportInEs5_0.ts, 1, 10)) -import * as nameSpaceBinding2 from "es6ImportNameSpaceImportInEs5_0"; // elide this +import * as nameSpaceBinding2 from "./es6ImportNameSpaceImportInEs5_0"; // elide this >nameSpaceBinding2 : Symbol(nameSpaceBinding2, Decl(es6ImportNameSpaceImportInEs5_1.ts, 2, 6)) diff --git a/tests/baselines/reference/es6ImportNameSpaceImportInEs5.types b/tests/baselines/reference/es6ImportNameSpaceImportInEs5.types index 01531cd233d..13631060813 100644 --- a/tests/baselines/reference/es6ImportNameSpaceImportInEs5.types +++ b/tests/baselines/reference/es6ImportNameSpaceImportInEs5.types @@ -5,7 +5,7 @@ export var a = 10; >10 : number === tests/cases/compiler/es6ImportNameSpaceImportInEs5_1.ts === -import * as nameSpaceBinding from "es6ImportNameSpaceImportInEs5_0"; +import * as nameSpaceBinding from "./es6ImportNameSpaceImportInEs5_0"; >nameSpaceBinding : typeof nameSpaceBinding var x = nameSpaceBinding.a; @@ -14,6 +14,6 @@ var x = nameSpaceBinding.a; >nameSpaceBinding : typeof nameSpaceBinding >a : number -import * as nameSpaceBinding2 from "es6ImportNameSpaceImportInEs5_0"; // elide this +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 index 98a68870833..b8b22ce3ed1 100644 --- a/tests/baselines/reference/es6ImportNameSpaceImportMergeErrors.errors.txt +++ b/tests/baselines/reference/es6ImportNameSpaceImportMergeErrors.errors.txt @@ -8,17 +8,17 @@ tests/cases/compiler/es6ImportNameSpaceImportMergeErrors_1.ts(7,8): error TS2440 export var a = 10; ==== tests/cases/compiler/es6ImportNameSpaceImportMergeErrors_1.ts (3 errors) ==== - import * as nameSpaceBinding from "es6ImportNameSpaceImportMergeErrors_0"; + 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 ~~~~~~~~~~~~~~~~~ !!! error TS2300: Duplicate identifier 'nameSpaceBinding1'. - import * as nameSpaceBinding1 from "es6ImportNameSpaceImportMergeErrors_0"; // should be error + import * as nameSpaceBinding1 from "./es6ImportNameSpaceImportMergeErrors_0"; // should be error ~~~~~~~~~~~~~~~~~ !!! error TS2300: Duplicate identifier 'nameSpaceBinding1'. - import * as nameSpaceBinding3 from "es6ImportNameSpaceImportMergeErrors_0"; // should be error + import * as nameSpaceBinding3 from "./es6ImportNameSpaceImportMergeErrors_0"; // should be error ~~~~~~~~~~~~~~~~~~~~~~ !!! error TS2440: Import declaration conflicts with local declaration of 'nameSpaceBinding3' var nameSpaceBinding3 = 10; diff --git a/tests/baselines/reference/es6ImportNameSpaceImportMergeErrors.js b/tests/baselines/reference/es6ImportNameSpaceImportMergeErrors.js index 3c8461fba2b..b94640349c0 100644 --- a/tests/baselines/reference/es6ImportNameSpaceImportMergeErrors.js +++ b/tests/baselines/reference/es6ImportNameSpaceImportMergeErrors.js @@ -5,13 +5,13 @@ export var a = 10; //// [es6ImportNameSpaceImportMergeErrors_1.ts] -import * as nameSpaceBinding from "es6ImportNameSpaceImportMergeErrors_0"; +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 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 +import * as nameSpaceBinding3 from "./es6ImportNameSpaceImportMergeErrors_0"; // should be error var nameSpaceBinding3 = 10; diff --git a/tests/baselines/reference/es6ImportNameSpaceImportNoNamedExports.js b/tests/baselines/reference/es6ImportNameSpaceImportNoNamedExports.js index 3d6dab17785..efa3a04bc9a 100644 --- a/tests/baselines/reference/es6ImportNameSpaceImportNoNamedExports.js +++ b/tests/baselines/reference/es6ImportNameSpaceImportNoNamedExports.js @@ -6,7 +6,7 @@ var a = 10; export = a; //// [es6ImportNameSpaceImportNoNamedExports_1.ts] -import * as nameSpaceBinding from "es6ImportNameSpaceImportNoNamedExports_0"; // error +import * as nameSpaceBinding from "./es6ImportNameSpaceImportNoNamedExports_0"; // error //// [es6ImportNameSpaceImportNoNamedExports_0.js] var a = 10; diff --git a/tests/baselines/reference/es6ImportNameSpaceImportNoNamedExports.symbols b/tests/baselines/reference/es6ImportNameSpaceImportNoNamedExports.symbols index 6a443d1fa00..8767c1a4add 100644 --- a/tests/baselines/reference/es6ImportNameSpaceImportNoNamedExports.symbols +++ b/tests/baselines/reference/es6ImportNameSpaceImportNoNamedExports.symbols @@ -7,6 +7,6 @@ export = a; >a : Symbol(a, Decl(es6ImportNameSpaceImportNoNamedExports_0.ts, 1, 3)) === tests/cases/compiler/es6ImportNameSpaceImportNoNamedExports_1.ts === -import * as nameSpaceBinding from "es6ImportNameSpaceImportNoNamedExports_0"; // error +import * as nameSpaceBinding from "./es6ImportNameSpaceImportNoNamedExports_0"; // error >nameSpaceBinding : Symbol(nameSpaceBinding, Decl(es6ImportNameSpaceImportNoNamedExports_1.ts, 0, 6)) diff --git a/tests/baselines/reference/es6ImportNameSpaceImportNoNamedExports.types b/tests/baselines/reference/es6ImportNameSpaceImportNoNamedExports.types index 2cc4844dd42..4aaf33d5930 100644 --- a/tests/baselines/reference/es6ImportNameSpaceImportNoNamedExports.types +++ b/tests/baselines/reference/es6ImportNameSpaceImportNoNamedExports.types @@ -8,6 +8,6 @@ export = a; >a : number === tests/cases/compiler/es6ImportNameSpaceImportNoNamedExports_1.ts === -import * as nameSpaceBinding from "es6ImportNameSpaceImportNoNamedExports_0"; // error +import * as nameSpaceBinding from "./es6ImportNameSpaceImportNoNamedExports_0"; // error >nameSpaceBinding : number diff --git a/tests/baselines/reference/es6ImportNamedImport.errors.txt b/tests/baselines/reference/es6ImportNamedImport.errors.txt deleted file mode 100644 index 12dcf331967..00000000000 --- a/tests/baselines/reference/es6ImportNamedImport.errors.txt +++ /dev/null @@ -1,44 +0,0 @@ -error TS1204: Cannot compile modules into 'commonjs', 'amd', 'system' or 'umd' when targeting 'ES6' or higher. - - -!!! error TS1204: Cannot compile modules into 'commonjs', 'amd', 'system' or 'umd' 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 9606c59351b..3ed7a6adeb0 100644 --- a/tests/baselines/reference/es6ImportNamedImport.js +++ b/tests/baselines/reference/es6ImportNamedImport.js @@ -12,66 +12,66 @@ export var z2 = 10; export var aaaa = 10; //// [es6ImportNamedImport_1.ts] -import { } from "es6ImportNamedImport_0"; -import { a } from "es6ImportNamedImport_0"; +import { } from "./es6ImportNamedImport_0"; +import { a } from "./es6ImportNamedImport_0"; var xxxx = a; -import { a as b } from "es6ImportNamedImport_0"; +import { a as b } from "./es6ImportNamedImport_0"; var xxxx = b; -import { x, a as y } from "es6ImportNamedImport_0"; +import { x, a as y } from "./es6ImportNamedImport_0"; var xxxx = x; var xxxx = y; -import { x as z, } from "es6ImportNamedImport_0"; +import { x as z, } from "./es6ImportNamedImport_0"; var xxxx = z; -import { m, } from "es6ImportNamedImport_0"; +import { m, } from "./es6ImportNamedImport_0"; var xxxx = m; -import { a1, x1 } from "es6ImportNamedImport_0"; +import { a1, x1 } from "./es6ImportNamedImport_0"; var xxxx = a1; var xxxx = x1; -import { a1 as a11, x1 as x11 } from "es6ImportNamedImport_0"; +import { a1 as a11, x1 as x11 } from "./es6ImportNamedImport_0"; var xxxx = a11; var xxxx = x11; -import { z1 } from "es6ImportNamedImport_0"; +import { z1 } from "./es6ImportNamedImport_0"; var z111 = z1; -import { z2 as z3 } from "es6ImportNamedImport_0"; +import { z2 as z3 } from "./es6ImportNamedImport_0"; var z2 = z3; // z2 shouldn't give redeclare error // These are elided -import { aaaa } from "es6ImportNamedImport_0"; +import { aaaa } from "./es6ImportNamedImport_0"; // These are elided -import { aaaa as bbbb } from "es6ImportNamedImport_0"; +import { aaaa as bbbb } from "./es6ImportNamedImport_0"; //// [es6ImportNamedImport_0.js] -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; +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; //// [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 +var es6ImportNamedImport_0_1 = require("./es6ImportNamedImport_0"); +var xxxx = es6ImportNamedImport_0_1.a; +var es6ImportNamedImport_0_2 = require("./es6ImportNamedImport_0"); +var xxxx = es6ImportNamedImport_0_2.a; +var es6ImportNamedImport_0_3 = require("./es6ImportNamedImport_0"); +var xxxx = es6ImportNamedImport_0_3.x; +var xxxx = es6ImportNamedImport_0_3.a; +var es6ImportNamedImport_0_4 = require("./es6ImportNamedImport_0"); +var xxxx = es6ImportNamedImport_0_4.x; +var es6ImportNamedImport_0_5 = require("./es6ImportNamedImport_0"); +var xxxx = es6ImportNamedImport_0_5.m; +var es6ImportNamedImport_0_6 = require("./es6ImportNamedImport_0"); +var xxxx = es6ImportNamedImport_0_6.a1; +var xxxx = es6ImportNamedImport_0_6.x1; +var es6ImportNamedImport_0_7 = require("./es6ImportNamedImport_0"); +var xxxx = es6ImportNamedImport_0_7.a1; +var xxxx = es6ImportNamedImport_0_7.x1; +var es6ImportNamedImport_0_8 = require("./es6ImportNamedImport_0"); +var z111 = es6ImportNamedImport_0_8.z1; +var es6ImportNamedImport_0_9 = require("./es6ImportNamedImport_0"); +var z2 = es6ImportNamedImport_0_9.z2; // z2 shouldn't give redeclare error //// [es6ImportNamedImport_0.d.ts] diff --git a/tests/baselines/reference/es6ImportNamedImport.symbols b/tests/baselines/reference/es6ImportNamedImport.symbols new file mode 100644 index 00000000000..0d30db6113f --- /dev/null +++ b/tests/baselines/reference/es6ImportNamedImport.symbols @@ -0,0 +1,123 @@ +=== tests/cases/compiler/es6ImportNamedImport_0.ts === + +export var a = 10; +>a : Symbol(a, Decl(es6ImportNamedImport_0.ts, 1, 10)) + +export var x = a; +>x : Symbol(x, Decl(es6ImportNamedImport_0.ts, 2, 10)) +>a : Symbol(a, Decl(es6ImportNamedImport_0.ts, 1, 10)) + +export var m = a; +>m : Symbol(m, Decl(es6ImportNamedImport_0.ts, 3, 10)) +>a : Symbol(a, Decl(es6ImportNamedImport_0.ts, 1, 10)) + +export var a1 = 10; +>a1 : Symbol(a1, Decl(es6ImportNamedImport_0.ts, 4, 10)) + +export var x1 = 10; +>x1 : Symbol(x1, Decl(es6ImportNamedImport_0.ts, 5, 10)) + +export var z1 = 10; +>z1 : Symbol(z1, Decl(es6ImportNamedImport_0.ts, 6, 10)) + +export var z2 = 10; +>z2 : Symbol(z2, Decl(es6ImportNamedImport_0.ts, 7, 10)) + +export var aaaa = 10; +>aaaa : Symbol(aaaa, Decl(es6ImportNamedImport_0.ts, 8, 10)) + +=== tests/cases/compiler/es6ImportNamedImport_1.ts === +import { } from "./es6ImportNamedImport_0"; +import { a } from "./es6ImportNamedImport_0"; +>a : Symbol(a, Decl(es6ImportNamedImport_1.ts, 1, 8)) + +var xxxx = a; +>xxxx : Symbol(xxxx, Decl(es6ImportNamedImport_1.ts, 2, 3), Decl(es6ImportNamedImport_1.ts, 4, 3), Decl(es6ImportNamedImport_1.ts, 6, 3), Decl(es6ImportNamedImport_1.ts, 7, 3), Decl(es6ImportNamedImport_1.ts, 9, 3), Decl(es6ImportNamedImport_1.ts, 11, 3), Decl(es6ImportNamedImport_1.ts, 13, 3), Decl(es6ImportNamedImport_1.ts, 14, 3), Decl(es6ImportNamedImport_1.ts, 16, 3), Decl(es6ImportNamedImport_1.ts, 17, 3)) +>a : Symbol(a, Decl(es6ImportNamedImport_1.ts, 1, 8)) + +import { a as b } from "./es6ImportNamedImport_0"; +>a : Symbol(b, Decl(es6ImportNamedImport_1.ts, 3, 8)) +>b : Symbol(b, Decl(es6ImportNamedImport_1.ts, 3, 8)) + +var xxxx = b; +>xxxx : Symbol(xxxx, Decl(es6ImportNamedImport_1.ts, 2, 3), Decl(es6ImportNamedImport_1.ts, 4, 3), Decl(es6ImportNamedImport_1.ts, 6, 3), Decl(es6ImportNamedImport_1.ts, 7, 3), Decl(es6ImportNamedImport_1.ts, 9, 3), Decl(es6ImportNamedImport_1.ts, 11, 3), Decl(es6ImportNamedImport_1.ts, 13, 3), Decl(es6ImportNamedImport_1.ts, 14, 3), Decl(es6ImportNamedImport_1.ts, 16, 3), Decl(es6ImportNamedImport_1.ts, 17, 3)) +>b : Symbol(b, Decl(es6ImportNamedImport_1.ts, 3, 8)) + +import { x, a as y } from "./es6ImportNamedImport_0"; +>x : Symbol(x, Decl(es6ImportNamedImport_1.ts, 5, 8)) +>a : Symbol(y, Decl(es6ImportNamedImport_1.ts, 5, 11)) +>y : Symbol(y, Decl(es6ImportNamedImport_1.ts, 5, 11)) + +var xxxx = x; +>xxxx : Symbol(xxxx, Decl(es6ImportNamedImport_1.ts, 2, 3), Decl(es6ImportNamedImport_1.ts, 4, 3), Decl(es6ImportNamedImport_1.ts, 6, 3), Decl(es6ImportNamedImport_1.ts, 7, 3), Decl(es6ImportNamedImport_1.ts, 9, 3), Decl(es6ImportNamedImport_1.ts, 11, 3), Decl(es6ImportNamedImport_1.ts, 13, 3), Decl(es6ImportNamedImport_1.ts, 14, 3), Decl(es6ImportNamedImport_1.ts, 16, 3), Decl(es6ImportNamedImport_1.ts, 17, 3)) +>x : Symbol(x, Decl(es6ImportNamedImport_1.ts, 5, 8)) + +var xxxx = y; +>xxxx : Symbol(xxxx, Decl(es6ImportNamedImport_1.ts, 2, 3), Decl(es6ImportNamedImport_1.ts, 4, 3), Decl(es6ImportNamedImport_1.ts, 6, 3), Decl(es6ImportNamedImport_1.ts, 7, 3), Decl(es6ImportNamedImport_1.ts, 9, 3), Decl(es6ImportNamedImport_1.ts, 11, 3), Decl(es6ImportNamedImport_1.ts, 13, 3), Decl(es6ImportNamedImport_1.ts, 14, 3), Decl(es6ImportNamedImport_1.ts, 16, 3), Decl(es6ImportNamedImport_1.ts, 17, 3)) +>y : Symbol(y, Decl(es6ImportNamedImport_1.ts, 5, 11)) + +import { x as z, } from "./es6ImportNamedImport_0"; +>x : Symbol(z, Decl(es6ImportNamedImport_1.ts, 8, 8)) +>z : Symbol(z, Decl(es6ImportNamedImport_1.ts, 8, 8)) + +var xxxx = z; +>xxxx : Symbol(xxxx, Decl(es6ImportNamedImport_1.ts, 2, 3), Decl(es6ImportNamedImport_1.ts, 4, 3), Decl(es6ImportNamedImport_1.ts, 6, 3), Decl(es6ImportNamedImport_1.ts, 7, 3), Decl(es6ImportNamedImport_1.ts, 9, 3), Decl(es6ImportNamedImport_1.ts, 11, 3), Decl(es6ImportNamedImport_1.ts, 13, 3), Decl(es6ImportNamedImport_1.ts, 14, 3), Decl(es6ImportNamedImport_1.ts, 16, 3), Decl(es6ImportNamedImport_1.ts, 17, 3)) +>z : Symbol(z, Decl(es6ImportNamedImport_1.ts, 8, 8)) + +import { m, } from "./es6ImportNamedImport_0"; +>m : Symbol(m, Decl(es6ImportNamedImport_1.ts, 10, 8)) + +var xxxx = m; +>xxxx : Symbol(xxxx, Decl(es6ImportNamedImport_1.ts, 2, 3), Decl(es6ImportNamedImport_1.ts, 4, 3), Decl(es6ImportNamedImport_1.ts, 6, 3), Decl(es6ImportNamedImport_1.ts, 7, 3), Decl(es6ImportNamedImport_1.ts, 9, 3), Decl(es6ImportNamedImport_1.ts, 11, 3), Decl(es6ImportNamedImport_1.ts, 13, 3), Decl(es6ImportNamedImport_1.ts, 14, 3), Decl(es6ImportNamedImport_1.ts, 16, 3), Decl(es6ImportNamedImport_1.ts, 17, 3)) +>m : Symbol(m, Decl(es6ImportNamedImport_1.ts, 10, 8)) + +import { a1, x1 } from "./es6ImportNamedImport_0"; +>a1 : Symbol(a1, Decl(es6ImportNamedImport_1.ts, 12, 8)) +>x1 : Symbol(x1, Decl(es6ImportNamedImport_1.ts, 12, 12)) + +var xxxx = a1; +>xxxx : Symbol(xxxx, Decl(es6ImportNamedImport_1.ts, 2, 3), Decl(es6ImportNamedImport_1.ts, 4, 3), Decl(es6ImportNamedImport_1.ts, 6, 3), Decl(es6ImportNamedImport_1.ts, 7, 3), Decl(es6ImportNamedImport_1.ts, 9, 3), Decl(es6ImportNamedImport_1.ts, 11, 3), Decl(es6ImportNamedImport_1.ts, 13, 3), Decl(es6ImportNamedImport_1.ts, 14, 3), Decl(es6ImportNamedImport_1.ts, 16, 3), Decl(es6ImportNamedImport_1.ts, 17, 3)) +>a1 : Symbol(a1, Decl(es6ImportNamedImport_1.ts, 12, 8)) + +var xxxx = x1; +>xxxx : Symbol(xxxx, Decl(es6ImportNamedImport_1.ts, 2, 3), Decl(es6ImportNamedImport_1.ts, 4, 3), Decl(es6ImportNamedImport_1.ts, 6, 3), Decl(es6ImportNamedImport_1.ts, 7, 3), Decl(es6ImportNamedImport_1.ts, 9, 3), Decl(es6ImportNamedImport_1.ts, 11, 3), Decl(es6ImportNamedImport_1.ts, 13, 3), Decl(es6ImportNamedImport_1.ts, 14, 3), Decl(es6ImportNamedImport_1.ts, 16, 3), Decl(es6ImportNamedImport_1.ts, 17, 3)) +>x1 : Symbol(x1, Decl(es6ImportNamedImport_1.ts, 12, 12)) + +import { a1 as a11, x1 as x11 } from "./es6ImportNamedImport_0"; +>a1 : Symbol(a11, Decl(es6ImportNamedImport_1.ts, 15, 8)) +>a11 : Symbol(a11, Decl(es6ImportNamedImport_1.ts, 15, 8)) +>x1 : Symbol(x11, Decl(es6ImportNamedImport_1.ts, 15, 19)) +>x11 : Symbol(x11, Decl(es6ImportNamedImport_1.ts, 15, 19)) + +var xxxx = a11; +>xxxx : Symbol(xxxx, Decl(es6ImportNamedImport_1.ts, 2, 3), Decl(es6ImportNamedImport_1.ts, 4, 3), Decl(es6ImportNamedImport_1.ts, 6, 3), Decl(es6ImportNamedImport_1.ts, 7, 3), Decl(es6ImportNamedImport_1.ts, 9, 3), Decl(es6ImportNamedImport_1.ts, 11, 3), Decl(es6ImportNamedImport_1.ts, 13, 3), Decl(es6ImportNamedImport_1.ts, 14, 3), Decl(es6ImportNamedImport_1.ts, 16, 3), Decl(es6ImportNamedImport_1.ts, 17, 3)) +>a11 : Symbol(a11, Decl(es6ImportNamedImport_1.ts, 15, 8)) + +var xxxx = x11; +>xxxx : Symbol(xxxx, Decl(es6ImportNamedImport_1.ts, 2, 3), Decl(es6ImportNamedImport_1.ts, 4, 3), Decl(es6ImportNamedImport_1.ts, 6, 3), Decl(es6ImportNamedImport_1.ts, 7, 3), Decl(es6ImportNamedImport_1.ts, 9, 3), Decl(es6ImportNamedImport_1.ts, 11, 3), Decl(es6ImportNamedImport_1.ts, 13, 3), Decl(es6ImportNamedImport_1.ts, 14, 3), Decl(es6ImportNamedImport_1.ts, 16, 3), Decl(es6ImportNamedImport_1.ts, 17, 3)) +>x11 : Symbol(x11, Decl(es6ImportNamedImport_1.ts, 15, 19)) + +import { z1 } from "./es6ImportNamedImport_0"; +>z1 : Symbol(z1, Decl(es6ImportNamedImport_1.ts, 18, 8)) + +var z111 = z1; +>z111 : Symbol(z111, Decl(es6ImportNamedImport_1.ts, 19, 3)) +>z1 : Symbol(z1, Decl(es6ImportNamedImport_1.ts, 18, 8)) + +import { z2 as z3 } from "./es6ImportNamedImport_0"; +>z2 : Symbol(z3, Decl(es6ImportNamedImport_1.ts, 20, 8)) +>z3 : Symbol(z3, Decl(es6ImportNamedImport_1.ts, 20, 8)) + +var z2 = z3; // z2 shouldn't give redeclare error +>z2 : Symbol(z2, Decl(es6ImportNamedImport_1.ts, 21, 3)) +>z3 : Symbol(z3, Decl(es6ImportNamedImport_1.ts, 20, 8)) + +// These are elided +import { aaaa } from "./es6ImportNamedImport_0"; +>aaaa : Symbol(aaaa, Decl(es6ImportNamedImport_1.ts, 24, 8)) + +// These are elided +import { aaaa as bbbb } from "./es6ImportNamedImport_0"; +>aaaa : Symbol(bbbb, Decl(es6ImportNamedImport_1.ts, 26, 8)) +>bbbb : Symbol(bbbb, Decl(es6ImportNamedImport_1.ts, 26, 8)) + diff --git a/tests/baselines/reference/es6ImportNamedImport.types b/tests/baselines/reference/es6ImportNamedImport.types new file mode 100644 index 00000000000..bd7c43d7031 --- /dev/null +++ b/tests/baselines/reference/es6ImportNamedImport.types @@ -0,0 +1,129 @@ +=== tests/cases/compiler/es6ImportNamedImport_0.ts === + +export var a = 10; +>a : number +>10 : number + +export var x = a; +>x : number +>a : number + +export var m = a; +>m : number +>a : number + +export var a1 = 10; +>a1 : number +>10 : number + +export var x1 = 10; +>x1 : number +>10 : number + +export var z1 = 10; +>z1 : number +>10 : number + +export var z2 = 10; +>z2 : number +>10 : number + +export var aaaa = 10; +>aaaa : number +>10 : number + +=== tests/cases/compiler/es6ImportNamedImport_1.ts === +import { } from "./es6ImportNamedImport_0"; +import { a } from "./es6ImportNamedImport_0"; +>a : number + +var xxxx = a; +>xxxx : number +>a : number + +import { a as b } from "./es6ImportNamedImport_0"; +>a : number +>b : number + +var xxxx = b; +>xxxx : number +>b : number + +import { x, a as y } from "./es6ImportNamedImport_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 "./es6ImportNamedImport_0"; +>x : number +>z : number + +var xxxx = z; +>xxxx : number +>z : number + +import { m, } from "./es6ImportNamedImport_0"; +>m : number + +var xxxx = m; +>xxxx : number +>m : number + +import { a1, x1 } from "./es6ImportNamedImport_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 "./es6ImportNamedImport_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 "./es6ImportNamedImport_0"; +>z1 : number + +var z111 = z1; +>z111 : number +>z1 : number + +import { z2 as z3 } from "./es6ImportNamedImport_0"; +>z2 : number +>z3 : number + +var z2 = z3; // z2 shouldn't give redeclare error +>z2 : number +>z3 : number + +// These are elided +import { aaaa } from "./es6ImportNamedImport_0"; +>aaaa : number + +// These are elided +import { aaaa as bbbb } from "./es6ImportNamedImport_0"; +>aaaa : number +>bbbb : number + diff --git a/tests/baselines/reference/es6ImportNamedImportDts.js b/tests/baselines/reference/es6ImportNamedImportDts.js index a72632a737e..59b47635ba9 100644 --- a/tests/baselines/reference/es6ImportNamedImportDts.js +++ b/tests/baselines/reference/es6ImportNamedImportDts.js @@ -18,32 +18,32 @@ export class aaaa { } export class aaaa1 { } //// [client.ts] -import { } from "server"; -import { a } from "server"; +import { } from "./server"; +import { a } from "./server"; export var xxxx = new a(); -import { a11 as b } from "server"; +import { a11 as b } from "./server"; export var xxxx1 = new b(); -import { x, a12 as y } from "server"; +import { x, a12 as y } from "./server"; export var xxxx2 = new x(); export var xxxx3 = new y(); -import { x11 as z, } from "server"; +import { x11 as z, } from "./server"; export var xxxx4 = new z(); -import { m, } from "server"; +import { m, } from "./server"; export var xxxx5 = new m(); -import { a1, x1 } from "server"; +import { a1, x1 } from "./server"; export var xxxx6 = new a1(); export var xxxx7 = new x1(); -import { a111 as a11, x111 as x11 } from "server"; +import { a111 as a11, x111 as x11 } from "./server"; export var xxxx8 = new a11(); export var xxxx9 = new x11(); -import { z1 } from "server"; +import { z1 } from "./server"; export var z111 = new z1(); -import { z2 as z3 } from "server"; +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"; +import { aaaa } from "./server"; +import { aaaa1 as bbbb } from "./server"; //// [server.js] @@ -132,26 +132,26 @@ var aaaa1 = (function () { })(); exports.aaaa1 = aaaa1; //// [client.js] -var server_1 = require("server"); +var server_1 = require("./server"); exports.xxxx = new server_1.a(); -var server_2 = require("server"); +var server_2 = require("./server"); exports.xxxx1 = new server_2.a11(); -var server_3 = require("server"); +var server_3 = require("./server"); exports.xxxx2 = new server_3.x(); exports.xxxx3 = new server_3.a12(); -var server_4 = require("server"); +var server_4 = require("./server"); exports.xxxx4 = new server_4.x11(); -var server_5 = require("server"); +var server_5 = require("./server"); exports.xxxx5 = new server_5.m(); -var server_6 = require("server"); +var server_6 = require("./server"); exports.xxxx6 = new server_6.a1(); exports.xxxx7 = new server_6.x1(); -var server_7 = require("server"); +var server_7 = require("./server"); exports.xxxx8 = new server_7.a111(); exports.xxxx9 = new server_7.x111(); -var server_8 = require("server"); +var server_8 = require("./server"); exports.z111 = new server_8.z1(); -var server_9 = require("server"); +var server_9 = require("./server"); exports.z2 = new server_9.z2(); // z2 shouldn't give redeclare error @@ -185,24 +185,24 @@ export declare class aaaa { export declare class aaaa1 { } //// [client.d.ts] -import { a } from "server"; +import { a } from "./server"; export declare var xxxx: a; -import { a11 as b } from "server"; +import { a11 as b } from "./server"; export declare var xxxx1: b; -import { x, a12 as y } from "server"; +import { x, a12 as y } from "./server"; export declare var xxxx2: x; export declare var xxxx3: y; -import { x11 as z } from "server"; +import { x11 as z } from "./server"; export declare var xxxx4: z; -import { m } from "server"; +import { m } from "./server"; export declare var xxxx5: m; -import { a1, x1 } from "server"; +import { a1, x1 } from "./server"; export declare var xxxx6: a1; export declare var xxxx7: x1; -import { a111 as a11, x111 as x11 } from "server"; +import { a111 as a11, x111 as x11 } from "./server"; export declare var xxxx8: a11; export declare var xxxx9: x11; -import { z1 } from "server"; +import { z1 } from "./server"; export declare var z111: z1; -import { z2 as z3 } from "server"; +import { z2 as z3 } from "./server"; export declare var z2: z3; diff --git a/tests/baselines/reference/es6ImportNamedImportDts.symbols b/tests/baselines/reference/es6ImportNamedImportDts.symbols index 2e3b2735b3d..dab2e13d0f6 100644 --- a/tests/baselines/reference/es6ImportNamedImportDts.symbols +++ b/tests/baselines/reference/es6ImportNamedImportDts.symbols @@ -43,15 +43,15 @@ export class aaaa1 { } >aaaa1 : Symbol(aaaa1, Decl(server.ts, 13, 21)) === tests/cases/compiler/client.ts === -import { } from "server"; -import { a } from "server"; +import { } from "./server"; +import { a } from "./server"; >a : Symbol(a, Decl(client.ts, 1, 8)) export var xxxx = new a(); >xxxx : Symbol(xxxx, Decl(client.ts, 2, 10)) >a : Symbol(a, Decl(client.ts, 1, 8)) -import { a11 as b } from "server"; +import { a11 as b } from "./server"; >a11 : Symbol(b, Decl(client.ts, 3, 8)) >b : Symbol(b, Decl(client.ts, 3, 8)) @@ -59,7 +59,7 @@ export var xxxx1 = new b(); >xxxx1 : Symbol(xxxx1, Decl(client.ts, 4, 10)) >b : Symbol(b, Decl(client.ts, 3, 8)) -import { x, a12 as y } from "server"; +import { x, a12 as y } from "./server"; >x : Symbol(x, Decl(client.ts, 5, 8)) >a12 : Symbol(y, Decl(client.ts, 5, 11)) >y : Symbol(y, Decl(client.ts, 5, 11)) @@ -72,7 +72,7 @@ export var xxxx3 = new y(); >xxxx3 : Symbol(xxxx3, Decl(client.ts, 7, 10)) >y : Symbol(y, Decl(client.ts, 5, 11)) -import { x11 as z, } from "server"; +import { x11 as z, } from "./server"; >x11 : Symbol(z, Decl(client.ts, 8, 8)) >z : Symbol(z, Decl(client.ts, 8, 8)) @@ -80,14 +80,14 @@ export var xxxx4 = new z(); >xxxx4 : Symbol(xxxx4, Decl(client.ts, 9, 10)) >z : Symbol(z, Decl(client.ts, 8, 8)) -import { m, } from "server"; +import { m, } from "./server"; >m : Symbol(m, Decl(client.ts, 10, 8)) export var xxxx5 = new m(); >xxxx5 : Symbol(xxxx5, Decl(client.ts, 11, 10)) >m : Symbol(m, Decl(client.ts, 10, 8)) -import { a1, x1 } from "server"; +import { a1, x1 } from "./server"; >a1 : Symbol(a1, Decl(client.ts, 12, 8)) >x1 : Symbol(x1, Decl(client.ts, 12, 12)) @@ -99,7 +99,7 @@ export var xxxx7 = new x1(); >xxxx7 : Symbol(xxxx7, Decl(client.ts, 14, 10)) >x1 : Symbol(x1, Decl(client.ts, 12, 12)) -import { a111 as a11, x111 as x11 } from "server"; +import { a111 as a11, x111 as x11 } from "./server"; >a111 : Symbol(a11, Decl(client.ts, 15, 8)) >a11 : Symbol(a11, Decl(client.ts, 15, 8)) >x111 : Symbol(x11, Decl(client.ts, 15, 21)) @@ -113,14 +113,14 @@ export var xxxx9 = new x11(); >xxxx9 : Symbol(xxxx9, Decl(client.ts, 17, 10)) >x11 : Symbol(x11, Decl(client.ts, 15, 21)) -import { z1 } from "server"; +import { z1 } from "./server"; >z1 : Symbol(z1, Decl(client.ts, 18, 8)) export var z111 = new z1(); >z111 : Symbol(z111, Decl(client.ts, 19, 10)) >z1 : Symbol(z1, Decl(client.ts, 18, 8)) -import { z2 as z3 } from "server"; +import { z2 as z3 } from "./server"; >z2 : Symbol(z3, Decl(client.ts, 20, 8)) >z3 : Symbol(z3, Decl(client.ts, 20, 8)) @@ -129,10 +129,10 @@ export var z2 = new z3(); // z2 shouldn't give redeclare error >z3 : Symbol(z3, Decl(client.ts, 20, 8)) // not referenced -import { aaaa } from "server"; +import { aaaa } from "./server"; >aaaa : Symbol(aaaa, Decl(client.ts, 24, 8)) -import { aaaa1 as bbbb } from "server"; +import { aaaa1 as bbbb } from "./server"; >aaaa1 : Symbol(bbbb, Decl(client.ts, 25, 8)) >bbbb : Symbol(bbbb, Decl(client.ts, 25, 8)) diff --git a/tests/baselines/reference/es6ImportNamedImportDts.types b/tests/baselines/reference/es6ImportNamedImportDts.types index 93bd55716a5..9aba1012117 100644 --- a/tests/baselines/reference/es6ImportNamedImportDts.types +++ b/tests/baselines/reference/es6ImportNamedImportDts.types @@ -43,8 +43,8 @@ export class aaaa1 { } >aaaa1 : aaaa1 === tests/cases/compiler/client.ts === -import { } from "server"; -import { a } from "server"; +import { } from "./server"; +import { a } from "./server"; >a : typeof a export var xxxx = new a(); @@ -52,7 +52,7 @@ export var xxxx = new a(); >new a() : a >a : typeof a -import { a11 as b } from "server"; +import { a11 as b } from "./server"; >a11 : typeof b >b : typeof b @@ -61,7 +61,7 @@ export var xxxx1 = new b(); >new b() : b >b : typeof b -import { x, a12 as y } from "server"; +import { x, a12 as y } from "./server"; >x : typeof x >a12 : typeof y >y : typeof y @@ -76,7 +76,7 @@ export var xxxx3 = new y(); >new y() : y >y : typeof y -import { x11 as z, } from "server"; +import { x11 as z, } from "./server"; >x11 : typeof z >z : typeof z @@ -85,7 +85,7 @@ export var xxxx4 = new z(); >new z() : z >z : typeof z -import { m, } from "server"; +import { m, } from "./server"; >m : typeof m export var xxxx5 = new m(); @@ -93,7 +93,7 @@ export var xxxx5 = new m(); >new m() : m >m : typeof m -import { a1, x1 } from "server"; +import { a1, x1 } from "./server"; >a1 : typeof a1 >x1 : typeof x1 @@ -107,7 +107,7 @@ export var xxxx7 = new x1(); >new x1() : x1 >x1 : typeof x1 -import { a111 as a11, x111 as x11 } from "server"; +import { a111 as a11, x111 as x11 } from "./server"; >a111 : typeof a11 >a11 : typeof a11 >x111 : typeof x11 @@ -123,7 +123,7 @@ export var xxxx9 = new x11(); >new x11() : x11 >x11 : typeof x11 -import { z1 } from "server"; +import { z1 } from "./server"; >z1 : typeof z1 export var z111 = new z1(); @@ -131,7 +131,7 @@ export var z111 = new z1(); >new z1() : z1 >z1 : typeof z1 -import { z2 as z3 } from "server"; +import { z2 as z3 } from "./server"; >z2 : typeof z3 >z3 : typeof z3 @@ -141,10 +141,10 @@ export var z2 = new z3(); // z2 shouldn't give redeclare error >z3 : typeof z3 // not referenced -import { aaaa } from "server"; +import { aaaa } from "./server"; >aaaa : typeof aaaa -import { aaaa1 as bbbb } from "server"; +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 9992508c00b..ce2cbea3d3d 100644 --- a/tests/baselines/reference/es6ImportNamedImportInEs5.js +++ b/tests/baselines/reference/es6ImportNamedImportInEs5.js @@ -12,33 +12,33 @@ export var z2 = 10; export var aaaa = 10; //// [es6ImportNamedImportInEs5_1.ts] -import { } from "es6ImportNamedImportInEs5_0"; -import { a } from "es6ImportNamedImportInEs5_0"; +import { } from "./es6ImportNamedImportInEs5_0"; +import { a } from "./es6ImportNamedImportInEs5_0"; var xxxx = a; -import { a as b } from "es6ImportNamedImportInEs5_0"; +import { a as b } from "./es6ImportNamedImportInEs5_0"; var xxxx = b; -import { x, a as y } from "es6ImportNamedImportInEs5_0"; +import { x, a as y } from "./es6ImportNamedImportInEs5_0"; var xxxx = x; var xxxx = y; -import { x as z, } from "es6ImportNamedImportInEs5_0"; +import { x as z, } from "./es6ImportNamedImportInEs5_0"; var xxxx = z; -import { m, } from "es6ImportNamedImportInEs5_0"; +import { m, } from "./es6ImportNamedImportInEs5_0"; var xxxx = m; -import { a1, x1 } from "es6ImportNamedImportInEs5_0"; +import { a1, x1 } from "./es6ImportNamedImportInEs5_0"; var xxxx = a1; var xxxx = x1; -import { a1 as a11, x1 as x11 } from "es6ImportNamedImportInEs5_0"; +import { a1 as a11, x1 as x11 } from "./es6ImportNamedImportInEs5_0"; var xxxx = a11; var xxxx = x11; -import { z1 } from "es6ImportNamedImportInEs5_0"; +import { z1 } from "./es6ImportNamedImportInEs5_0"; var z111 = z1; -import { z2 as z3 } from "es6ImportNamedImportInEs5_0"; +import { z2 as z3 } from "./es6ImportNamedImportInEs5_0"; var z2 = z3; // z2 shouldn't give redeclare error // These are elided -import { aaaa } from "es6ImportNamedImportInEs5_0"; +import { aaaa } from "./es6ImportNamedImportInEs5_0"; // These are elided -import { aaaa as bbbb } from "es6ImportNamedImportInEs5_0"; +import { aaaa as bbbb } from "./es6ImportNamedImportInEs5_0"; //// [es6ImportNamedImportInEs5_0.js] @@ -51,26 +51,26 @@ exports.z1 = 10; exports.z2 = 10; exports.aaaa = 10; //// [es6ImportNamedImportInEs5_1.js] -var es6ImportNamedImportInEs5_0_1 = require("es6ImportNamedImportInEs5_0"); +var es6ImportNamedImportInEs5_0_1 = require("./es6ImportNamedImportInEs5_0"); var xxxx = es6ImportNamedImportInEs5_0_1.a; -var es6ImportNamedImportInEs5_0_2 = require("es6ImportNamedImportInEs5_0"); +var es6ImportNamedImportInEs5_0_2 = require("./es6ImportNamedImportInEs5_0"); var xxxx = es6ImportNamedImportInEs5_0_2.a; -var es6ImportNamedImportInEs5_0_3 = require("es6ImportNamedImportInEs5_0"); +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 es6ImportNamedImportInEs5_0_4 = require("./es6ImportNamedImportInEs5_0"); var xxxx = es6ImportNamedImportInEs5_0_4.x; -var es6ImportNamedImportInEs5_0_5 = require("es6ImportNamedImportInEs5_0"); +var es6ImportNamedImportInEs5_0_5 = require("./es6ImportNamedImportInEs5_0"); var xxxx = es6ImportNamedImportInEs5_0_5.m; -var es6ImportNamedImportInEs5_0_6 = require("es6ImportNamedImportInEs5_0"); +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 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 es6ImportNamedImportInEs5_0_8 = require("./es6ImportNamedImportInEs5_0"); var z111 = es6ImportNamedImportInEs5_0_8.z1; -var es6ImportNamedImportInEs5_0_9 = require("es6ImportNamedImportInEs5_0"); +var es6ImportNamedImportInEs5_0_9 = require("./es6ImportNamedImportInEs5_0"); var z2 = es6ImportNamedImportInEs5_0_9.z2; // z2 shouldn't give redeclare error diff --git a/tests/baselines/reference/es6ImportNamedImportInEs5.symbols b/tests/baselines/reference/es6ImportNamedImportInEs5.symbols index 546487514ce..f9e949e7efb 100644 --- a/tests/baselines/reference/es6ImportNamedImportInEs5.symbols +++ b/tests/baselines/reference/es6ImportNamedImportInEs5.symbols @@ -27,15 +27,15 @@ export var aaaa = 10; >aaaa : Symbol(aaaa, Decl(es6ImportNamedImportInEs5_0.ts, 8, 10)) === tests/cases/compiler/es6ImportNamedImportInEs5_1.ts === -import { } from "es6ImportNamedImportInEs5_0"; -import { a } from "es6ImportNamedImportInEs5_0"; +import { } from "./es6ImportNamedImportInEs5_0"; +import { a } from "./es6ImportNamedImportInEs5_0"; >a : Symbol(a, Decl(es6ImportNamedImportInEs5_1.ts, 1, 8)) var xxxx = a; >xxxx : Symbol(xxxx, Decl(es6ImportNamedImportInEs5_1.ts, 2, 3), Decl(es6ImportNamedImportInEs5_1.ts, 4, 3), Decl(es6ImportNamedImportInEs5_1.ts, 6, 3), Decl(es6ImportNamedImportInEs5_1.ts, 7, 3), Decl(es6ImportNamedImportInEs5_1.ts, 9, 3), Decl(es6ImportNamedImportInEs5_1.ts, 11, 3), Decl(es6ImportNamedImportInEs5_1.ts, 13, 3), Decl(es6ImportNamedImportInEs5_1.ts, 14, 3), Decl(es6ImportNamedImportInEs5_1.ts, 16, 3), Decl(es6ImportNamedImportInEs5_1.ts, 17, 3)) >a : Symbol(a, Decl(es6ImportNamedImportInEs5_1.ts, 1, 8)) -import { a as b } from "es6ImportNamedImportInEs5_0"; +import { a as b } from "./es6ImportNamedImportInEs5_0"; >a : Symbol(b, Decl(es6ImportNamedImportInEs5_1.ts, 3, 8)) >b : Symbol(b, Decl(es6ImportNamedImportInEs5_1.ts, 3, 8)) @@ -43,7 +43,7 @@ var xxxx = b; >xxxx : Symbol(xxxx, Decl(es6ImportNamedImportInEs5_1.ts, 2, 3), Decl(es6ImportNamedImportInEs5_1.ts, 4, 3), Decl(es6ImportNamedImportInEs5_1.ts, 6, 3), Decl(es6ImportNamedImportInEs5_1.ts, 7, 3), Decl(es6ImportNamedImportInEs5_1.ts, 9, 3), Decl(es6ImportNamedImportInEs5_1.ts, 11, 3), Decl(es6ImportNamedImportInEs5_1.ts, 13, 3), Decl(es6ImportNamedImportInEs5_1.ts, 14, 3), Decl(es6ImportNamedImportInEs5_1.ts, 16, 3), Decl(es6ImportNamedImportInEs5_1.ts, 17, 3)) >b : Symbol(b, Decl(es6ImportNamedImportInEs5_1.ts, 3, 8)) -import { x, a as y } from "es6ImportNamedImportInEs5_0"; +import { x, a as y } from "./es6ImportNamedImportInEs5_0"; >x : Symbol(x, Decl(es6ImportNamedImportInEs5_1.ts, 5, 8)) >a : Symbol(y, Decl(es6ImportNamedImportInEs5_1.ts, 5, 11)) >y : Symbol(y, Decl(es6ImportNamedImportInEs5_1.ts, 5, 11)) @@ -56,7 +56,7 @@ var xxxx = y; >xxxx : Symbol(xxxx, Decl(es6ImportNamedImportInEs5_1.ts, 2, 3), Decl(es6ImportNamedImportInEs5_1.ts, 4, 3), Decl(es6ImportNamedImportInEs5_1.ts, 6, 3), Decl(es6ImportNamedImportInEs5_1.ts, 7, 3), Decl(es6ImportNamedImportInEs5_1.ts, 9, 3), Decl(es6ImportNamedImportInEs5_1.ts, 11, 3), Decl(es6ImportNamedImportInEs5_1.ts, 13, 3), Decl(es6ImportNamedImportInEs5_1.ts, 14, 3), Decl(es6ImportNamedImportInEs5_1.ts, 16, 3), Decl(es6ImportNamedImportInEs5_1.ts, 17, 3)) >y : Symbol(y, Decl(es6ImportNamedImportInEs5_1.ts, 5, 11)) -import { x as z, } from "es6ImportNamedImportInEs5_0"; +import { x as z, } from "./es6ImportNamedImportInEs5_0"; >x : Symbol(z, Decl(es6ImportNamedImportInEs5_1.ts, 8, 8)) >z : Symbol(z, Decl(es6ImportNamedImportInEs5_1.ts, 8, 8)) @@ -64,14 +64,14 @@ var xxxx = z; >xxxx : Symbol(xxxx, Decl(es6ImportNamedImportInEs5_1.ts, 2, 3), Decl(es6ImportNamedImportInEs5_1.ts, 4, 3), Decl(es6ImportNamedImportInEs5_1.ts, 6, 3), Decl(es6ImportNamedImportInEs5_1.ts, 7, 3), Decl(es6ImportNamedImportInEs5_1.ts, 9, 3), Decl(es6ImportNamedImportInEs5_1.ts, 11, 3), Decl(es6ImportNamedImportInEs5_1.ts, 13, 3), Decl(es6ImportNamedImportInEs5_1.ts, 14, 3), Decl(es6ImportNamedImportInEs5_1.ts, 16, 3), Decl(es6ImportNamedImportInEs5_1.ts, 17, 3)) >z : Symbol(z, Decl(es6ImportNamedImportInEs5_1.ts, 8, 8)) -import { m, } from "es6ImportNamedImportInEs5_0"; +import { m, } from "./es6ImportNamedImportInEs5_0"; >m : Symbol(m, Decl(es6ImportNamedImportInEs5_1.ts, 10, 8)) var xxxx = m; >xxxx : Symbol(xxxx, Decl(es6ImportNamedImportInEs5_1.ts, 2, 3), Decl(es6ImportNamedImportInEs5_1.ts, 4, 3), Decl(es6ImportNamedImportInEs5_1.ts, 6, 3), Decl(es6ImportNamedImportInEs5_1.ts, 7, 3), Decl(es6ImportNamedImportInEs5_1.ts, 9, 3), Decl(es6ImportNamedImportInEs5_1.ts, 11, 3), Decl(es6ImportNamedImportInEs5_1.ts, 13, 3), Decl(es6ImportNamedImportInEs5_1.ts, 14, 3), Decl(es6ImportNamedImportInEs5_1.ts, 16, 3), Decl(es6ImportNamedImportInEs5_1.ts, 17, 3)) >m : Symbol(m, Decl(es6ImportNamedImportInEs5_1.ts, 10, 8)) -import { a1, x1 } from "es6ImportNamedImportInEs5_0"; +import { a1, x1 } from "./es6ImportNamedImportInEs5_0"; >a1 : Symbol(a1, Decl(es6ImportNamedImportInEs5_1.ts, 12, 8)) >x1 : Symbol(x1, Decl(es6ImportNamedImportInEs5_1.ts, 12, 12)) @@ -83,7 +83,7 @@ var xxxx = x1; >xxxx : Symbol(xxxx, Decl(es6ImportNamedImportInEs5_1.ts, 2, 3), Decl(es6ImportNamedImportInEs5_1.ts, 4, 3), Decl(es6ImportNamedImportInEs5_1.ts, 6, 3), Decl(es6ImportNamedImportInEs5_1.ts, 7, 3), Decl(es6ImportNamedImportInEs5_1.ts, 9, 3), Decl(es6ImportNamedImportInEs5_1.ts, 11, 3), Decl(es6ImportNamedImportInEs5_1.ts, 13, 3), Decl(es6ImportNamedImportInEs5_1.ts, 14, 3), Decl(es6ImportNamedImportInEs5_1.ts, 16, 3), Decl(es6ImportNamedImportInEs5_1.ts, 17, 3)) >x1 : Symbol(x1, Decl(es6ImportNamedImportInEs5_1.ts, 12, 12)) -import { a1 as a11, x1 as x11 } from "es6ImportNamedImportInEs5_0"; +import { a1 as a11, x1 as x11 } from "./es6ImportNamedImportInEs5_0"; >a1 : Symbol(a11, Decl(es6ImportNamedImportInEs5_1.ts, 15, 8)) >a11 : Symbol(a11, Decl(es6ImportNamedImportInEs5_1.ts, 15, 8)) >x1 : Symbol(x11, Decl(es6ImportNamedImportInEs5_1.ts, 15, 19)) @@ -97,14 +97,14 @@ var xxxx = x11; >xxxx : Symbol(xxxx, Decl(es6ImportNamedImportInEs5_1.ts, 2, 3), Decl(es6ImportNamedImportInEs5_1.ts, 4, 3), Decl(es6ImportNamedImportInEs5_1.ts, 6, 3), Decl(es6ImportNamedImportInEs5_1.ts, 7, 3), Decl(es6ImportNamedImportInEs5_1.ts, 9, 3), Decl(es6ImportNamedImportInEs5_1.ts, 11, 3), Decl(es6ImportNamedImportInEs5_1.ts, 13, 3), Decl(es6ImportNamedImportInEs5_1.ts, 14, 3), Decl(es6ImportNamedImportInEs5_1.ts, 16, 3), Decl(es6ImportNamedImportInEs5_1.ts, 17, 3)) >x11 : Symbol(x11, Decl(es6ImportNamedImportInEs5_1.ts, 15, 19)) -import { z1 } from "es6ImportNamedImportInEs5_0"; +import { z1 } from "./es6ImportNamedImportInEs5_0"; >z1 : Symbol(z1, Decl(es6ImportNamedImportInEs5_1.ts, 18, 8)) var z111 = z1; >z111 : Symbol(z111, Decl(es6ImportNamedImportInEs5_1.ts, 19, 3)) >z1 : Symbol(z1, Decl(es6ImportNamedImportInEs5_1.ts, 18, 8)) -import { z2 as z3 } from "es6ImportNamedImportInEs5_0"; +import { z2 as z3 } from "./es6ImportNamedImportInEs5_0"; >z2 : Symbol(z3, Decl(es6ImportNamedImportInEs5_1.ts, 20, 8)) >z3 : Symbol(z3, Decl(es6ImportNamedImportInEs5_1.ts, 20, 8)) @@ -113,11 +113,11 @@ var z2 = z3; // z2 shouldn't give redeclare error >z3 : Symbol(z3, Decl(es6ImportNamedImportInEs5_1.ts, 20, 8)) // These are elided -import { aaaa } from "es6ImportNamedImportInEs5_0"; +import { aaaa } from "./es6ImportNamedImportInEs5_0"; >aaaa : Symbol(aaaa, Decl(es6ImportNamedImportInEs5_1.ts, 24, 8)) // These are elided -import { aaaa as bbbb } from "es6ImportNamedImportInEs5_0"; +import { aaaa as bbbb } from "./es6ImportNamedImportInEs5_0"; >aaaa : Symbol(bbbb, Decl(es6ImportNamedImportInEs5_1.ts, 26, 8)) >bbbb : Symbol(bbbb, Decl(es6ImportNamedImportInEs5_1.ts, 26, 8)) diff --git a/tests/baselines/reference/es6ImportNamedImportInEs5.types b/tests/baselines/reference/es6ImportNamedImportInEs5.types index 95f784c5eac..1d55b4bf51e 100644 --- a/tests/baselines/reference/es6ImportNamedImportInEs5.types +++ b/tests/baselines/reference/es6ImportNamedImportInEs5.types @@ -33,15 +33,15 @@ export var aaaa = 10; >10 : number === tests/cases/compiler/es6ImportNamedImportInEs5_1.ts === -import { } from "es6ImportNamedImportInEs5_0"; -import { a } from "es6ImportNamedImportInEs5_0"; +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"; +import { a as b } from "./es6ImportNamedImportInEs5_0"; >a : number >b : number @@ -49,7 +49,7 @@ var xxxx = b; >xxxx : number >b : number -import { x, a as y } from "es6ImportNamedImportInEs5_0"; +import { x, a as y } from "./es6ImportNamedImportInEs5_0"; >x : number >a : number >y : number @@ -62,7 +62,7 @@ var xxxx = y; >xxxx : number >y : number -import { x as z, } from "es6ImportNamedImportInEs5_0"; +import { x as z, } from "./es6ImportNamedImportInEs5_0"; >x : number >z : number @@ -70,14 +70,14 @@ var xxxx = z; >xxxx : number >z : number -import { m, } from "es6ImportNamedImportInEs5_0"; +import { m, } from "./es6ImportNamedImportInEs5_0"; >m : number var xxxx = m; >xxxx : number >m : number -import { a1, x1 } from "es6ImportNamedImportInEs5_0"; +import { a1, x1 } from "./es6ImportNamedImportInEs5_0"; >a1 : number >x1 : number @@ -89,7 +89,7 @@ var xxxx = x1; >xxxx : number >x1 : number -import { a1 as a11, x1 as x11 } from "es6ImportNamedImportInEs5_0"; +import { a1 as a11, x1 as x11 } from "./es6ImportNamedImportInEs5_0"; >a1 : number >a11 : number >x1 : number @@ -103,14 +103,14 @@ var xxxx = x11; >xxxx : number >x11 : number -import { z1 } from "es6ImportNamedImportInEs5_0"; +import { z1 } from "./es6ImportNamedImportInEs5_0"; >z1 : number var z111 = z1; >z111 : number >z1 : number -import { z2 as z3 } from "es6ImportNamedImportInEs5_0"; +import { z2 as z3 } from "./es6ImportNamedImportInEs5_0"; >z2 : number >z3 : number @@ -119,11 +119,11 @@ var z2 = z3; // z2 shouldn't give redeclare error >z3 : number // These are elided -import { aaaa } from "es6ImportNamedImportInEs5_0"; +import { aaaa } from "./es6ImportNamedImportInEs5_0"; >aaaa : number // These are elided -import { aaaa as bbbb } from "es6ImportNamedImportInEs5_0"; +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 deleted file mode 100644 index 970c51973b2..00000000000 --- a/tests/baselines/reference/es6ImportNamedImportInExportAssignment.errors.txt +++ /dev/null @@ -1,14 +0,0 @@ -error TS1204: Cannot compile modules into 'commonjs', 'amd', 'system' or 'umd' 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 modules into 'commonjs', 'amd', 'system' or 'umd' 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 index eab345e4e7f..5bdbd89df07 100644 --- a/tests/baselines/reference/es6ImportNamedImportInExportAssignment.js +++ b/tests/baselines/reference/es6ImportNamedImportInExportAssignment.js @@ -5,17 +5,18 @@ export var a = 10; //// [es6ImportNamedImportInExportAssignment_1.ts] -import { a } from "es6ImportNamedImportInExportAssignment_0"; +import { a } from "./es6ImportNamedImportInExportAssignment_0"; export = a; //// [es6ImportNamedImportInExportAssignment_0.js] -export var a = 10; +exports.a = 10; //// [es6ImportNamedImportInExportAssignment_1.js] -import { a } from "es6ImportNamedImportInExportAssignment_0"; +var es6ImportNamedImportInExportAssignment_0_1 = require("./es6ImportNamedImportInExportAssignment_0"); +module.exports = es6ImportNamedImportInExportAssignment_0_1.a; //// [es6ImportNamedImportInExportAssignment_0.d.ts] export declare var a: number; //// [es6ImportNamedImportInExportAssignment_1.d.ts] -import { a } from "es6ImportNamedImportInExportAssignment_0"; +import { a } from "./es6ImportNamedImportInExportAssignment_0"; export = a; diff --git a/tests/baselines/reference/es6ImportNamedImportInExportAssignment.symbols b/tests/baselines/reference/es6ImportNamedImportInExportAssignment.symbols new file mode 100644 index 00000000000..03ca0740f08 --- /dev/null +++ b/tests/baselines/reference/es6ImportNamedImportInExportAssignment.symbols @@ -0,0 +1,12 @@ +=== tests/cases/compiler/es6ImportNamedImportInExportAssignment_0.ts === + +export var a = 10; +>a : Symbol(a, Decl(es6ImportNamedImportInExportAssignment_0.ts, 1, 10)) + +=== tests/cases/compiler/es6ImportNamedImportInExportAssignment_1.ts === +import { a } from "./es6ImportNamedImportInExportAssignment_0"; +>a : Symbol(a, Decl(es6ImportNamedImportInExportAssignment_1.ts, 0, 8)) + +export = a; +>a : Symbol(a, Decl(es6ImportNamedImportInExportAssignment_1.ts, 0, 8)) + diff --git a/tests/baselines/reference/es6ImportNamedImportInExportAssignment.types b/tests/baselines/reference/es6ImportNamedImportInExportAssignment.types new file mode 100644 index 00000000000..09023b6dd80 --- /dev/null +++ b/tests/baselines/reference/es6ImportNamedImportInExportAssignment.types @@ -0,0 +1,13 @@ +=== tests/cases/compiler/es6ImportNamedImportInExportAssignment_0.ts === + +export var a = 10; +>a : number +>10 : number + +=== tests/cases/compiler/es6ImportNamedImportInExportAssignment_1.ts === +import { a } from "./es6ImportNamedImportInExportAssignment_0"; +>a : number + +export = a; +>a : number + diff --git a/tests/baselines/reference/es6ImportNamedImportInIndirectExportAssignment.js b/tests/baselines/reference/es6ImportNamedImportInIndirectExportAssignment.js index f457e31f53c..418cd76c907 100644 --- a/tests/baselines/reference/es6ImportNamedImportInIndirectExportAssignment.js +++ b/tests/baselines/reference/es6ImportNamedImportInIndirectExportAssignment.js @@ -8,7 +8,7 @@ export module a { } //// [es6ImportNamedImportInIndirectExportAssignment_1.ts] -import { a } from "es6ImportNamedImportInIndirectExportAssignment_0"; +import { a } from "./es6ImportNamedImportInIndirectExportAssignment_0"; import x = a; export = x; @@ -23,7 +23,7 @@ var a; a.c = c; })(a = exports.a || (exports.a = {})); //// [es6ImportNamedImportInIndirectExportAssignment_1.js] -var es6ImportNamedImportInIndirectExportAssignment_0_1 = require("es6ImportNamedImportInIndirectExportAssignment_0"); +var es6ImportNamedImportInIndirectExportAssignment_0_1 = require("./es6ImportNamedImportInIndirectExportAssignment_0"); var x = es6ImportNamedImportInIndirectExportAssignment_0_1.a; module.exports = x; @@ -34,6 +34,6 @@ export declare module a { } } //// [es6ImportNamedImportInIndirectExportAssignment_1.d.ts] -import { a } from "es6ImportNamedImportInIndirectExportAssignment_0"; +import { a } from "./es6ImportNamedImportInIndirectExportAssignment_0"; import x = a; export = x; diff --git a/tests/baselines/reference/es6ImportNamedImportInIndirectExportAssignment.symbols b/tests/baselines/reference/es6ImportNamedImportInIndirectExportAssignment.symbols index 2598735d6d8..24eab96f54b 100644 --- a/tests/baselines/reference/es6ImportNamedImportInIndirectExportAssignment.symbols +++ b/tests/baselines/reference/es6ImportNamedImportInIndirectExportAssignment.symbols @@ -9,13 +9,13 @@ export module a { } === tests/cases/compiler/es6ImportNamedImportInIndirectExportAssignment_1.ts === -import { a } from "es6ImportNamedImportInIndirectExportAssignment_0"; +import { a } from "./es6ImportNamedImportInIndirectExportAssignment_0"; >a : Symbol(a, Decl(es6ImportNamedImportInIndirectExportAssignment_1.ts, 0, 8)) import x = a; ->x : Symbol(x, Decl(es6ImportNamedImportInIndirectExportAssignment_1.ts, 0, 69)) +>x : Symbol(x, Decl(es6ImportNamedImportInIndirectExportAssignment_1.ts, 0, 71)) >a : Symbol(a, Decl(es6ImportNamedImportInIndirectExportAssignment_0.ts, 0, 0)) export = x; ->x : Symbol(x, Decl(es6ImportNamedImportInIndirectExportAssignment_1.ts, 0, 69)) +>x : Symbol(x, Decl(es6ImportNamedImportInIndirectExportAssignment_1.ts, 0, 71)) diff --git a/tests/baselines/reference/es6ImportNamedImportInIndirectExportAssignment.types b/tests/baselines/reference/es6ImportNamedImportInIndirectExportAssignment.types index 36792ece82e..d4dd62aacb2 100644 --- a/tests/baselines/reference/es6ImportNamedImportInIndirectExportAssignment.types +++ b/tests/baselines/reference/es6ImportNamedImportInIndirectExportAssignment.types @@ -9,7 +9,7 @@ export module a { } === tests/cases/compiler/es6ImportNamedImportInIndirectExportAssignment_1.ts === -import { a } from "es6ImportNamedImportInIndirectExportAssignment_0"; +import { a } from "./es6ImportNamedImportInIndirectExportAssignment_0"; >a : typeof a import x = a; diff --git a/tests/baselines/reference/es6ImportNamedImportMergeErrors.errors.txt b/tests/baselines/reference/es6ImportNamedImportMergeErrors.errors.txt index b9461b6caca..4fca12ee8e1 100644 --- a/tests/baselines/reference/es6ImportNamedImportMergeErrors.errors.txt +++ b/tests/baselines/reference/es6ImportNamedImportMergeErrors.errors.txt @@ -12,22 +12,22 @@ tests/cases/compiler/es6ImportNamedImportMergeErrors_1.ts(10,16): error TS2300: export var z1 = a; ==== tests/cases/compiler/es6ImportNamedImportMergeErrors_1.ts (4 errors) ==== - import { a } from "es6ImportNamedImportMergeErrors_0"; + import { a } from "./es6ImportNamedImportMergeErrors_0"; interface a { } // shouldnt be error - import { x as x1 } from "es6ImportNamedImportMergeErrors_0"; + import { x as x1 } from "./es6ImportNamedImportMergeErrors_0"; interface x1 { } // shouldnt be error - import { x } from "es6ImportNamedImportMergeErrors_0"; // should 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 + 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 + import { z } from "./es6ImportNamedImportMergeErrors_0"; // should be error ~ !!! error TS2300: Duplicate identifier 'z'. - import { z1 as z } from "es6ImportNamedImportMergeErrors_0"; // should be error + 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 index fad411f557d..63bf1127a53 100644 --- a/tests/baselines/reference/es6ImportNamedImportMergeErrors.js +++ b/tests/baselines/reference/es6ImportNamedImportMergeErrors.js @@ -8,16 +8,16 @@ export var z = a; export var z1 = a; //// [es6ImportNamedImportMergeErrors_1.ts] -import { a } from "es6ImportNamedImportMergeErrors_0"; +import { a } from "./es6ImportNamedImportMergeErrors_0"; interface a { } // shouldnt be error -import { x as x1 } from "es6ImportNamedImportMergeErrors_0"; +import { x as x1 } from "./es6ImportNamedImportMergeErrors_0"; interface x1 { } // shouldnt be error -import { x } from "es6ImportNamedImportMergeErrors_0"; // should be error +import { x } from "./es6ImportNamedImportMergeErrors_0"; // should be error var x = 10; -import { x as x44 } from "es6ImportNamedImportMergeErrors_0"; // should be error +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 +import { z } from "./es6ImportNamedImportMergeErrors_0"; // should be error +import { z1 as z } from "./es6ImportNamedImportMergeErrors_0"; // should be error //// [es6ImportNamedImportMergeErrors_0.js] diff --git a/tests/baselines/reference/es6ImportNamedImportNoExportMember.errors.txt b/tests/baselines/reference/es6ImportNamedImportNoExportMember.errors.txt index 57a77410cb2..47a836fd422 100644 --- a/tests/baselines/reference/es6ImportNamedImportNoExportMember.errors.txt +++ b/tests/baselines/reference/es6ImportNamedImportNoExportMember.errors.txt @@ -8,9 +8,9 @@ tests/cases/compiler/es6ImportNamedImport_1.ts(2,10): error TS2305: Module '"tes export var x = a; ==== tests/cases/compiler/es6ImportNamedImport_1.ts (2 errors) ==== - import { a1 } from "es6ImportNamedImportNoExportMember_0"; + 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"; + 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 index da473fa42a3..ba607b4626f 100644 --- a/tests/baselines/reference/es6ImportNamedImportNoExportMember.js +++ b/tests/baselines/reference/es6ImportNamedImportNoExportMember.js @@ -6,8 +6,8 @@ export var a = 10; export var x = a; //// [es6ImportNamedImport_1.ts] -import { a1 } from "es6ImportNamedImportNoExportMember_0"; -import { x1 as x } from "es6ImportNamedImportNoExportMember_0"; +import { a1 } from "./es6ImportNamedImportNoExportMember_0"; +import { x1 as x } from "./es6ImportNamedImportNoExportMember_0"; //// [es6ImportNamedImportNoExportMember_0.js] exports.a = 10; diff --git a/tests/baselines/reference/es6ImportNamedImportNoNamedExports.errors.txt b/tests/baselines/reference/es6ImportNamedImportNoNamedExports.errors.txt index a5abd986ee8..e2cacba59e8 100644 --- a/tests/baselines/reference/es6ImportNamedImportNoNamedExports.errors.txt +++ b/tests/baselines/reference/es6ImportNamedImportNoNamedExports.errors.txt @@ -8,9 +8,9 @@ tests/cases/compiler/es6ImportNamedImportNoNamedExports_1.ts(2,10): error TS2305 export = a; ==== tests/cases/compiler/es6ImportNamedImportNoNamedExports_1.ts (2 errors) ==== - import { a } from "es6ImportNamedImportNoNamedExports_0"; + 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"; + 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 index 524860827e6..273f9a3fc3a 100644 --- a/tests/baselines/reference/es6ImportNamedImportNoNamedExports.js +++ b/tests/baselines/reference/es6ImportNamedImportNoNamedExports.js @@ -6,8 +6,8 @@ var a = 10; export = a; //// [es6ImportNamedImportNoNamedExports_1.ts] -import { a } from "es6ImportNamedImportNoNamedExports_0"; -import { a as x } from "es6ImportNamedImportNoNamedExports_0"; +import { a } from "./es6ImportNamedImportNoNamedExports_0"; +import { a as x } from "./es6ImportNamedImportNoNamedExports_0"; //// [es6ImportNamedImportNoNamedExports_0.js] var a = 10; diff --git a/tests/baselines/reference/es6ImportNamedImportWithExport.errors.txt b/tests/baselines/reference/es6ImportNamedImportWithExport.errors.txt index ff8fe604622..a5a4301683e 100644 --- a/tests/baselines/reference/es6ImportNamedImportWithExport.errors.txt +++ b/tests/baselines/reference/es6ImportNamedImportWithExport.errors.txt @@ -24,54 +24,54 @@ tests/cases/compiler/client.ts(26,1): error TS1191: An import declaration cannot export var aaaa = 10; ==== tests/cases/compiler/client.ts (12 errors) ==== - export import { } from "server"; + export import { } from "./server"; ~~~~~~ !!! error TS1191: An import declaration cannot have modifiers. - export import { a } from "server"; + export import { a } from "./server"; ~~~~~~ !!! error TS1191: An import declaration cannot have modifiers. export var xxxx = a; - export import { a as b } from "server"; + 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"; + 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"; + export import { x as z, } from "./server"; ~~~~~~ !!! error TS1191: An import declaration cannot have modifiers. export var xxxx = z; - export import { m, } from "server"; + export import { m, } from "./server"; ~~~~~~ !!! error TS1191: An import declaration cannot have modifiers. export var xxxx = m; - export import { a1, x1 } from "server"; + 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"; + 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"; + export import { z1 } from "./server"; ~~~~~~ !!! error TS1191: An import declaration cannot have modifiers. export var z111 = z1; - export import { z2 as z3 } from "server"; + 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"; + export import { aaaa } from "./server"; ~~~~~~ !!! error TS1191: An import declaration cannot have modifiers. - export import { aaaa as bbbb } from "server"; + 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 index 60ba6bf706b..5175554f0f9 100644 --- a/tests/baselines/reference/es6ImportNamedImportWithExport.js +++ b/tests/baselines/reference/es6ImportNamedImportWithExport.js @@ -12,32 +12,32 @@ export var z2 = 10; export var aaaa = 10; //// [client.ts] -export import { } from "server"; -export import { a } from "server"; +export import { } from "./server"; +export import { a } from "./server"; export var xxxx = a; -export import { a as b } from "server"; +export import { a as b } from "./server"; export var xxxx = b; -export import { x, a as y } from "server"; +export import { x, a as y } from "./server"; export var xxxx = x; export var xxxx = y; -export import { x as z, } from "server"; +export import { x as z, } from "./server"; export var xxxx = z; -export import { m, } from "server"; +export import { m, } from "./server"; export var xxxx = m; -export import { a1, x1 } from "server"; +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 import { a1 as a11, x1 as x11 } from "./server"; export var xxxx = a11; export var xxxx = x11; -export import { z1 } from "server"; +export import { z1 } from "./server"; export var z111 = z1; -export import { z2 as z3 } from "server"; +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"; +export import { aaaa } from "./server"; +export import { aaaa as bbbb } from "./server"; //// [server.js] @@ -50,26 +50,26 @@ exports.z1 = 10; exports.z2 = 10; exports.aaaa = 10; //// [client.js] -var server_1 = require("server"); +var server_1 = require("./server"); exports.xxxx = server_1.a; -var server_2 = require("server"); +var server_2 = require("./server"); exports.xxxx = server_2.a; -var server_3 = require("server"); +var server_3 = require("./server"); exports.xxxx = server_3.x; exports.xxxx = server_3.a; -var server_4 = require("server"); +var server_4 = require("./server"); exports.xxxx = server_4.x; -var server_5 = require("server"); +var server_5 = require("./server"); exports.xxxx = server_5.m; -var server_6 = require("server"); +var server_6 = require("./server"); exports.xxxx = server_6.a1; exports.xxxx = server_6.x1; -var server_7 = require("server"); +var server_7 = require("./server"); exports.xxxx = server_7.a1; exports.xxxx = server_7.x1; -var server_8 = require("server"); +var server_8 = require("./server"); exports.z111 = server_8.z1; -var server_9 = require("server"); +var server_9 = require("./server"); exports.z2 = server_9.z2; // z2 shouldn't give redeclare error diff --git a/tests/baselines/reference/es6ImportNamedImportWithTypesAndValues.js b/tests/baselines/reference/es6ImportNamedImportWithTypesAndValues.js index dcf99c5359a..8593f4e6343 100644 --- a/tests/baselines/reference/es6ImportNamedImportWithTypesAndValues.js +++ b/tests/baselines/reference/es6ImportNamedImportWithTypesAndValues.js @@ -16,7 +16,7 @@ export class C2 implements I2 { } //// [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 +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(); @@ -36,7 +36,7 @@ var C2 = (function () { })(); 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 +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(); @@ -54,6 +54,6 @@ export declare class C2 implements I2 { prop2: string; } //// [client.d.ts] -import { C, I } from "server"; +import { C, I } from "./server"; export declare type cValInterface = I; export declare var cVal: C; diff --git a/tests/baselines/reference/es6ImportNamedImportWithTypesAndValues.symbols b/tests/baselines/reference/es6ImportNamedImportWithTypesAndValues.symbols index e294124c6f4..cff0406b220 100644 --- a/tests/baselines/reference/es6ImportNamedImportWithTypesAndValues.symbols +++ b/tests/baselines/reference/es6ImportNamedImportWithTypesAndValues.symbols @@ -28,13 +28,13 @@ export class C2 implements I2 { } === 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 +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 : Symbol(C, Decl(client.ts, 0, 8)) >I : Symbol(I, Decl(client.ts, 0, 11)) >C2 : Symbol(C2, Decl(client.ts, 0, 14)) export type cValInterface = I; ->cValInterface : Symbol(cValInterface, Decl(client.ts, 0, 34)) +>cValInterface : Symbol(cValInterface, Decl(client.ts, 0, 36)) >I : Symbol(I, Decl(client.ts, 0, 11)) export var cVal = new C(); diff --git a/tests/baselines/reference/es6ImportNamedImportWithTypesAndValues.types b/tests/baselines/reference/es6ImportNamedImportWithTypesAndValues.types index 12e5271c8b0..a65a2978e1b 100644 --- a/tests/baselines/reference/es6ImportNamedImportWithTypesAndValues.types +++ b/tests/baselines/reference/es6ImportNamedImportWithTypesAndValues.types @@ -30,7 +30,7 @@ export class C2 implements I2 { } === 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 +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 : any >C2 : typeof C2 diff --git a/tests/baselines/reference/es6ModuleWithModuleGenTargetAmd.errors.txt b/tests/baselines/reference/es6ModuleWithModuleGenTargetAmd.errors.txt deleted file mode 100644 index 9592a9f899e..00000000000 --- a/tests/baselines/reference/es6ModuleWithModuleGenTargetAmd.errors.txt +++ /dev/null @@ -1,16 +0,0 @@ -error TS1204: Cannot compile modules into 'commonjs', 'amd', 'system' or 'umd' when targeting 'ES6' or higher. - - -!!! error TS1204: Cannot compile modules into 'commonjs', 'amd', 'system' or 'umd' 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 index 8757bd1c88f..dec8de1e36e 100644 --- a/tests/baselines/reference/es6ModuleWithModuleGenTargetAmd.js +++ b/tests/baselines/reference/es6ModuleWithModuleGenTargetAmd.js @@ -12,10 +12,13 @@ export class A } //// [es6ModuleWithModuleGenTargetAmd.js] -export class A { - constructor() { +define(["require", "exports"], function (require, exports) { + class A { + constructor() { + } + B() { + return 42; + } } - B() { - return 42; - } -} + exports.A = A; +}); diff --git a/tests/baselines/reference/es6ModuleWithModuleGenTargetAmd.symbols b/tests/baselines/reference/es6ModuleWithModuleGenTargetAmd.symbols new file mode 100644 index 00000000000..24367cc28ad --- /dev/null +++ b/tests/baselines/reference/es6ModuleWithModuleGenTargetAmd.symbols @@ -0,0 +1,14 @@ +=== tests/cases/compiler/es6ModuleWithModuleGenTargetAmd.ts === +export class A +>A : Symbol(A, Decl(es6ModuleWithModuleGenTargetAmd.ts, 0, 0)) +{ + constructor () + { + } + + public B() +>B : Symbol(B, Decl(es6ModuleWithModuleGenTargetAmd.ts, 4, 5)) + { + return 42; + } +} diff --git a/tests/baselines/reference/es6ModuleWithModuleGenTargetAmd.types b/tests/baselines/reference/es6ModuleWithModuleGenTargetAmd.types new file mode 100644 index 00000000000..067ceb005e8 --- /dev/null +++ b/tests/baselines/reference/es6ModuleWithModuleGenTargetAmd.types @@ -0,0 +1,15 @@ +=== tests/cases/compiler/es6ModuleWithModuleGenTargetAmd.ts === +export class A +>A : A +{ + constructor () + { + } + + public B() +>B : () => number + { + return 42; +>42 : number + } +} diff --git a/tests/baselines/reference/es6ModuleWithModuleGenTargetCommonjs.errors.txt b/tests/baselines/reference/es6ModuleWithModuleGenTargetCommonjs.errors.txt deleted file mode 100644 index b7401040099..00000000000 --- a/tests/baselines/reference/es6ModuleWithModuleGenTargetCommonjs.errors.txt +++ /dev/null @@ -1,16 +0,0 @@ -error TS1204: Cannot compile modules into 'commonjs', 'amd', 'system' or 'umd' when targeting 'ES6' or higher. - - -!!! error TS1204: Cannot compile modules into 'commonjs', 'amd', 'system' or 'umd' 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 index 2df98e20826..36e66cb5721 100644 --- a/tests/baselines/reference/es6ModuleWithModuleGenTargetCommonjs.js +++ b/tests/baselines/reference/es6ModuleWithModuleGenTargetCommonjs.js @@ -12,10 +12,11 @@ export class A } //// [es6ModuleWithModuleGenTargetCommonjs.js] -export class A { +class A { constructor() { } B() { return 42; } } +exports.A = A; diff --git a/tests/baselines/reference/es6ModuleWithModuleGenTargetCommonjs.symbols b/tests/baselines/reference/es6ModuleWithModuleGenTargetCommonjs.symbols new file mode 100644 index 00000000000..4a84c00c48f --- /dev/null +++ b/tests/baselines/reference/es6ModuleWithModuleGenTargetCommonjs.symbols @@ -0,0 +1,14 @@ +=== tests/cases/compiler/es6ModuleWithModuleGenTargetCommonjs.ts === +export class A +>A : Symbol(A, Decl(es6ModuleWithModuleGenTargetCommonjs.ts, 0, 0)) +{ + constructor () + { + } + + public B() +>B : Symbol(B, Decl(es6ModuleWithModuleGenTargetCommonjs.ts, 4, 5)) + { + return 42; + } +} diff --git a/tests/baselines/reference/es6ModuleWithModuleGenTargetCommonjs.types b/tests/baselines/reference/es6ModuleWithModuleGenTargetCommonjs.types new file mode 100644 index 00000000000..58f0f89f955 --- /dev/null +++ b/tests/baselines/reference/es6ModuleWithModuleGenTargetCommonjs.types @@ -0,0 +1,15 @@ +=== tests/cases/compiler/es6ModuleWithModuleGenTargetCommonjs.ts === +export class A +>A : A +{ + constructor () + { + } + + public B() +>B : () => number + { + return 42; +>42 : number + } +} diff --git a/tests/baselines/reference/es6modulekind.js b/tests/baselines/reference/es6modulekind.js new file mode 100644 index 00000000000..96b315389d1 --- /dev/null +++ b/tests/baselines/reference/es6modulekind.js @@ -0,0 +1,23 @@ +//// [es6modulekind.ts] + +export default class A +{ + constructor () + { + + } + + public B() + { + return 42; + } +} + +//// [es6modulekind.js] +export default class A { + constructor() { + } + B() { + return 42; + } +} diff --git a/tests/baselines/reference/es6modulekind.symbols b/tests/baselines/reference/es6modulekind.symbols new file mode 100644 index 00000000000..0b5eeb2a6fb --- /dev/null +++ b/tests/baselines/reference/es6modulekind.symbols @@ -0,0 +1,16 @@ +=== tests/cases/compiler/es6modulekind.ts === + +export default class A +>A : Symbol(A, Decl(es6modulekind.ts, 0, 0)) +{ + constructor () + { + + } + + public B() +>B : Symbol(B, Decl(es6modulekind.ts, 6, 5)) + { + return 42; + } +} diff --git a/tests/baselines/reference/es6modulekind.types b/tests/baselines/reference/es6modulekind.types new file mode 100644 index 00000000000..d7fde0c7d44 --- /dev/null +++ b/tests/baselines/reference/es6modulekind.types @@ -0,0 +1,17 @@ +=== tests/cases/compiler/es6modulekind.ts === + +export default class A +>A : A +{ + constructor () + { + + } + + public B() +>B : () => number + { + return 42; +>42 : number + } +} diff --git a/tests/baselines/reference/exportAssignClassAndModule.js b/tests/baselines/reference/exportAssignClassAndModule.js index 37fecdcc53f..d440fb9a8e5 100644 --- a/tests/baselines/reference/exportAssignClassAndModule.js +++ b/tests/baselines/reference/exportAssignClassAndModule.js @@ -12,7 +12,7 @@ export = Foo; //// [exportAssignClassAndModule_1.ts] /// -import Foo = require('exportAssignClassAndModule_0'); +import Foo = require('./exportAssignClassAndModule_0'); var z: Foo.Bar; var zz: Foo; diff --git a/tests/baselines/reference/exportAssignClassAndModule.symbols b/tests/baselines/reference/exportAssignClassAndModule.symbols index 9f38ed80b1b..016e91f79a2 100644 --- a/tests/baselines/reference/exportAssignClassAndModule.symbols +++ b/tests/baselines/reference/exportAssignClassAndModule.symbols @@ -1,6 +1,6 @@ === tests/cases/compiler/exportAssignClassAndModule_1.ts === /// -import Foo = require('exportAssignClassAndModule_0'); +import Foo = require('./exportAssignClassAndModule_0'); >Foo : Symbol(Foo, Decl(exportAssignClassAndModule_1.ts, 0, 0)) var z: Foo.Bar; diff --git a/tests/baselines/reference/exportAssignClassAndModule.types b/tests/baselines/reference/exportAssignClassAndModule.types index aa1ede6b2d4..5517d32badc 100644 --- a/tests/baselines/reference/exportAssignClassAndModule.types +++ b/tests/baselines/reference/exportAssignClassAndModule.types @@ -1,6 +1,6 @@ === tests/cases/compiler/exportAssignClassAndModule_1.ts === /// -import Foo = require('exportAssignClassAndModule_0'); +import Foo = require('./exportAssignClassAndModule_0'); >Foo : typeof Foo var z: Foo.Bar; diff --git a/tests/baselines/reference/exportAssignmentEnum.js b/tests/baselines/reference/exportAssignmentEnum.js index a484e43738f..06438fb2b53 100644 --- a/tests/baselines/reference/exportAssignmentEnum.js +++ b/tests/baselines/reference/exportAssignmentEnum.js @@ -10,7 +10,7 @@ enum E { export = E; //// [exportAssignmentEnum_B.ts] -import EnumE = require("exportAssignmentEnum_A"); +import EnumE = require("./exportAssignmentEnum_A"); var a = EnumE.A; var b = EnumE.B; @@ -25,7 +25,7 @@ var E; })(E || (E = {})); module.exports = E; //// [exportAssignmentEnum_B.js] -var EnumE = require("exportAssignmentEnum_A"); +var EnumE = require("./exportAssignmentEnum_A"); var a = EnumE.A; var b = EnumE.B; var c = EnumE.C; diff --git a/tests/baselines/reference/exportAssignmentEnum.symbols b/tests/baselines/reference/exportAssignmentEnum.symbols index 07eb5f7b907..dea194b3508 100644 --- a/tests/baselines/reference/exportAssignmentEnum.symbols +++ b/tests/baselines/reference/exportAssignmentEnum.symbols @@ -1,5 +1,5 @@ === tests/cases/compiler/exportAssignmentEnum_B.ts === -import EnumE = require("exportAssignmentEnum_A"); +import EnumE = require("./exportAssignmentEnum_A"); >EnumE : Symbol(EnumE, Decl(exportAssignmentEnum_B.ts, 0, 0)) var a = EnumE.A; diff --git a/tests/baselines/reference/exportAssignmentEnum.types b/tests/baselines/reference/exportAssignmentEnum.types index 9dfa34d3777..a186cf6f255 100644 --- a/tests/baselines/reference/exportAssignmentEnum.types +++ b/tests/baselines/reference/exportAssignmentEnum.types @@ -1,5 +1,5 @@ === tests/cases/compiler/exportAssignmentEnum_B.ts === -import EnumE = require("exportAssignmentEnum_A"); +import EnumE = require("./exportAssignmentEnum_A"); >EnumE : typeof EnumE var a = EnumE.A; diff --git a/tests/baselines/reference/exportAssignmentOfDeclaredExternalModule.errors.txt b/tests/baselines/reference/exportAssignmentOfDeclaredExternalModule.errors.txt index f6736e468f0..b0bfac0adfd 100644 --- a/tests/baselines/reference/exportAssignmentOfDeclaredExternalModule.errors.txt +++ b/tests/baselines/reference/exportAssignmentOfDeclaredExternalModule.errors.txt @@ -4,7 +4,7 @@ tests/cases/compiler/exportAssignmentOfDeclaredExternalModule_1.ts(4,9): error T ==== tests/cases/compiler/exportAssignmentOfDeclaredExternalModule_1.ts (2 errors) ==== /// - import Sammy = require('exportAssignmentOfDeclaredExternalModule_0'); + import Sammy = require('./exportAssignmentOfDeclaredExternalModule_0'); var x = new Sammy(); // error to use as constructor as there is not constructor symbol ~~~~~ !!! error TS2304: Cannot find name 'Sammy'. diff --git a/tests/baselines/reference/exportAssignmentOfDeclaredExternalModule.js b/tests/baselines/reference/exportAssignmentOfDeclaredExternalModule.js index c8ba8324ad2..460707a3502 100644 --- a/tests/baselines/reference/exportAssignmentOfDeclaredExternalModule.js +++ b/tests/baselines/reference/exportAssignmentOfDeclaredExternalModule.js @@ -9,7 +9,7 @@ export = Sammy; //// [exportAssignmentOfDeclaredExternalModule_1.ts] /// -import Sammy = require('exportAssignmentOfDeclaredExternalModule_0'); +import Sammy = require('./exportAssignmentOfDeclaredExternalModule_0'); var x = new Sammy(); // error to use as constructor as there is not constructor symbol var y = Sammy(); // error to use interface name as call target var z: Sammy; // no error - z is of type interface Sammy from module 'M' diff --git a/tests/baselines/reference/exportAssignmentVariable.js b/tests/baselines/reference/exportAssignmentVariable.js index c20e6ec4f7b..8afbf222e6d 100644 --- a/tests/baselines/reference/exportAssignmentVariable.js +++ b/tests/baselines/reference/exportAssignmentVariable.js @@ -6,7 +6,7 @@ var x = 0; export = x; //// [exportAssignmentVariable_B.ts] -import y = require("exportAssignmentVariable_A"); +import y = require("./exportAssignmentVariable_A"); var n: number = y; @@ -14,5 +14,5 @@ var n: number = y; var x = 0; module.exports = x; //// [exportAssignmentVariable_B.js] -var y = require("exportAssignmentVariable_A"); +var y = require("./exportAssignmentVariable_A"); var n = y; diff --git a/tests/baselines/reference/exportAssignmentVariable.symbols b/tests/baselines/reference/exportAssignmentVariable.symbols index b819678d080..919a96ded33 100644 --- a/tests/baselines/reference/exportAssignmentVariable.symbols +++ b/tests/baselines/reference/exportAssignmentVariable.symbols @@ -1,5 +1,5 @@ === tests/cases/compiler/exportAssignmentVariable_B.ts === -import y = require("exportAssignmentVariable_A"); +import y = require("./exportAssignmentVariable_A"); >y : Symbol(y, Decl(exportAssignmentVariable_B.ts, 0, 0)) var n: number = y; diff --git a/tests/baselines/reference/exportAssignmentVariable.types b/tests/baselines/reference/exportAssignmentVariable.types index 71f0afdea68..7c6d9b45cce 100644 --- a/tests/baselines/reference/exportAssignmentVariable.types +++ b/tests/baselines/reference/exportAssignmentVariable.types @@ -1,5 +1,5 @@ === tests/cases/compiler/exportAssignmentVariable_B.ts === -import y = require("exportAssignmentVariable_A"); +import y = require("./exportAssignmentVariable_A"); >y : number var n: number = y; diff --git a/tests/baselines/reference/exportDeclareClass1.errors.txt b/tests/baselines/reference/exportDeclareClass1.errors.txt index 247b0511ed1..8ff0cb52b5f 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,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,21): error TS1183: An implementation cannot be declared in ambient contexts. +tests/cases/compiler/exportDeclareClass1.ts(3,31): error TS1183: An implementation cannot be declared in ambient contexts. ==== tests/cases/compiler/exportDeclareClass1.ts (2 errors) ==== export declare class eaC { static tF() { }; ~ -!!! error TS1184: An implementation cannot be declared in ambient contexts. +!!! error TS1183: An implementation cannot be declared in ambient contexts. static tsF(param:any) { }; ~ -!!! error TS1184: An implementation cannot be declared in ambient contexts. +!!! error TS1183: An implementation cannot be declared in ambient contexts. }; export declare class eaC2 { diff --git a/tests/baselines/reference/exportEqualMemberMissing.errors.txt b/tests/baselines/reference/exportEqualMemberMissing.errors.txt index 3e6e7a35a12..4cd142668b9 100644 --- a/tests/baselines/reference/exportEqualMemberMissing.errors.txt +++ b/tests/baselines/reference/exportEqualMemberMissing.errors.txt @@ -3,7 +3,7 @@ tests/cases/compiler/exportEqualMemberMissing_1.ts(3,23): error TS2339: Property ==== tests/cases/compiler/exportEqualMemberMissing_1.ts (1 errors) ==== /// - import connect = require('exportEqualMemberMissing_0'); + import connect = require('./exportEqualMemberMissing_0'); connect().use(connect.static('foo')); // Error 1 The property 'static' does not exist on value of type ''. ~~~~~~ !!! error TS2339: Property 'static' does not exist on type '{ (): connectExport; foo: Date; }'. diff --git a/tests/baselines/reference/exportEqualMemberMissing.js b/tests/baselines/reference/exportEqualMemberMissing.js index 583176f12f3..85972ce0945 100644 --- a/tests/baselines/reference/exportEqualMemberMissing.js +++ b/tests/baselines/reference/exportEqualMemberMissing.js @@ -17,7 +17,7 @@ export = server; //// [exportEqualMemberMissing_1.ts] /// -import connect = require('exportEqualMemberMissing_0'); +import connect = require('./exportEqualMemberMissing_0'); connect().use(connect.static('foo')); // Error 1 The property 'static' does not exist on value of type ''. @@ -26,5 +26,5 @@ var server; module.exports = server; //// [exportEqualMemberMissing_1.js] /// -var connect = require('exportEqualMemberMissing_0'); +var connect = require('./exportEqualMemberMissing_0'); connect().use(connect.static('foo')); // Error 1 The property 'static' does not exist on value of type ''. diff --git a/tests/baselines/reference/exportNonInitializedVariablesUMD.js b/tests/baselines/reference/exportNonInitializedVariablesUMD.js index 1e8b3ce4446..4b1e671669c 100644 --- a/tests/baselines/reference/exportNonInitializedVariablesUMD.js +++ b/tests/baselines/reference/exportNonInitializedVariablesUMD.js @@ -35,14 +35,14 @@ export let h1: D = new D; //// [exportNonInitializedVariablesUMD.js] -(function (deps, factory) { +(function (factory) { if (typeof module === 'object' && typeof module.exports === 'object') { var v = factory(require, exports); if (v !== undefined) module.exports = v; } else if (typeof define === 'function' && define.amd) { - define(deps, factory); + define(["require", "exports"], factory); } -})(["require", "exports"], function (require, exports) { +})(function (require, exports) { var ; let; var ; diff --git a/tests/baselines/reference/exportStarFromEmptyModule.errors.txt b/tests/baselines/reference/exportStarFromEmptyModule.errors.txt index c88ac3b3f19..9d781da2707 100644 --- a/tests/baselines/reference/exportStarFromEmptyModule.errors.txt +++ b/tests/baselines/reference/exportStarFromEmptyModule.errors.txt @@ -12,17 +12,17 @@ tests/cases/compiler/exportStarFromEmptyModule_module4.ts(4,5): error TS2339: Pr // empty ==== tests/cases/compiler/exportStarFromEmptyModule_module3.ts (1 errors) ==== - export * from "exportStarFromEmptyModule_module2"; - ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + export * from "./exportStarFromEmptyModule_module2"; + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ !!! error TS2306: File 'exportStarFromEmptyModule_module2.ts' is not a module. - export * from "exportStarFromEmptyModule_module1"; + export * from "./exportStarFromEmptyModule_module1"; export class A { static q; } ==== tests/cases/compiler/exportStarFromEmptyModule_module4.ts (1 errors) ==== - import * as X from "exportStarFromEmptyModule_module3"; + import * as X from "./exportStarFromEmptyModule_module3"; var s: X.A; X.A.q; X.A.r; // Error diff --git a/tests/baselines/reference/exportStarFromEmptyModule.js b/tests/baselines/reference/exportStarFromEmptyModule.js index 9b486af4eae..d433e7b3682 100644 --- a/tests/baselines/reference/exportStarFromEmptyModule.js +++ b/tests/baselines/reference/exportStarFromEmptyModule.js @@ -10,15 +10,15 @@ export class A { // empty //// [exportStarFromEmptyModule_module3.ts] -export * from "exportStarFromEmptyModule_module2"; -export * from "exportStarFromEmptyModule_module1"; +export * from "./exportStarFromEmptyModule_module2"; +export * from "./exportStarFromEmptyModule_module1"; export class A { static q; } //// [exportStarFromEmptyModule_module4.ts] -import * as X from "exportStarFromEmptyModule_module3"; +import * as X from "./exportStarFromEmptyModule_module3"; var s: X.A; X.A.q; X.A.r; // Error @@ -36,8 +36,8 @@ exports.A = A; function __export(m) { for (var p in m) if (!exports.hasOwnProperty(p)) exports[p] = m[p]; } -__export(require("exportStarFromEmptyModule_module2")); -__export(require("exportStarFromEmptyModule_module1")); +__export(require("./exportStarFromEmptyModule_module2")); +__export(require("./exportStarFromEmptyModule_module1")); var A = (function () { function A() { } @@ -45,7 +45,7 @@ var A = (function () { })(); exports.A = A; //// [exportStarFromEmptyModule_module4.js] -var X = require("exportStarFromEmptyModule_module3"); +var X = require("./exportStarFromEmptyModule_module3"); var s; X.A.q; X.A.r; // Error @@ -57,8 +57,8 @@ export declare class A { } //// [exportStarFromEmptyModule_module2.d.ts] //// [exportStarFromEmptyModule_module3.d.ts] -export * from "exportStarFromEmptyModule_module2"; -export * from "exportStarFromEmptyModule_module1"; +export * from "./exportStarFromEmptyModule_module2"; +export * from "./exportStarFromEmptyModule_module1"; export declare class A { static q: any; } diff --git a/tests/baselines/reference/exportsInAmbientModules1.js b/tests/baselines/reference/exportsInAmbientModules1.js new file mode 100644 index 00000000000..4370b197403 --- /dev/null +++ b/tests/baselines/reference/exportsInAmbientModules1.js @@ -0,0 +1,13 @@ +//// [tests/cases/compiler/exportsInAmbientModules1.ts] //// + +//// [external.d.ts] + +export var x: number + +//// [main.ts] + +declare module "M" { + export {x} from "external" +} + +//// [main.js] diff --git a/tests/baselines/reference/exportsInAmbientModules1.symbols b/tests/baselines/reference/exportsInAmbientModules1.symbols new file mode 100644 index 00000000000..58cdf8663a7 --- /dev/null +++ b/tests/baselines/reference/exportsInAmbientModules1.symbols @@ -0,0 +1,11 @@ +=== tests/cases/compiler/external.d.ts === + +export var x: number +>x : Symbol(x, Decl(external.d.ts, 1, 10)) + +=== tests/cases/compiler/main.ts === + +declare module "M" { + export {x} from "external" +>x : Symbol(x, Decl(main.ts, 2, 12)) +} diff --git a/tests/baselines/reference/exportsInAmbientModules1.types b/tests/baselines/reference/exportsInAmbientModules1.types new file mode 100644 index 00000000000..490a63caf92 --- /dev/null +++ b/tests/baselines/reference/exportsInAmbientModules1.types @@ -0,0 +1,11 @@ +=== tests/cases/compiler/external.d.ts === + +export var x: number +>x : number + +=== tests/cases/compiler/main.ts === + +declare module "M" { + export {x} from "external" +>x : number +} diff --git a/tests/baselines/reference/exportsInAmbientModules2.js b/tests/baselines/reference/exportsInAmbientModules2.js new file mode 100644 index 00000000000..f08ff17f8ba --- /dev/null +++ b/tests/baselines/reference/exportsInAmbientModules2.js @@ -0,0 +1,13 @@ +//// [tests/cases/compiler/exportsInAmbientModules2.ts] //// + +//// [external.d.ts] + +export default class C {} + +//// [main.ts] + +declare module "M" { + export * from "external" +} + +//// [main.js] diff --git a/tests/baselines/reference/exportsInAmbientModules2.symbols b/tests/baselines/reference/exportsInAmbientModules2.symbols new file mode 100644 index 00000000000..54e8b44ec34 --- /dev/null +++ b/tests/baselines/reference/exportsInAmbientModules2.symbols @@ -0,0 +1,11 @@ +=== tests/cases/compiler/external.d.ts === + +export default class C {} +>C : Symbol(C, Decl(external.d.ts, 0, 0)) + +=== tests/cases/compiler/main.ts === + +No type information for this code.declare module "M" { +No type information for this code. export * from "external" +No type information for this code.} +No type information for this code. \ No newline at end of file diff --git a/tests/baselines/reference/exportsInAmbientModules2.types b/tests/baselines/reference/exportsInAmbientModules2.types new file mode 100644 index 00000000000..3472a35bf75 --- /dev/null +++ b/tests/baselines/reference/exportsInAmbientModules2.types @@ -0,0 +1,11 @@ +=== tests/cases/compiler/external.d.ts === + +export default class C {} +>C : C + +=== tests/cases/compiler/main.ts === + +No type information for this code.declare module "M" { +No type information for this code. export * from "external" +No type information for this code.} +No type information for this code. \ No newline at end of file diff --git a/tests/baselines/reference/extendClassExpressionFromModule.symbols b/tests/baselines/reference/extendClassExpressionFromModule.symbols index c131ea8fa28..78d483b5d7d 100644 --- a/tests/baselines/reference/extendClassExpressionFromModule.symbols +++ b/tests/baselines/reference/extendClassExpressionFromModule.symbols @@ -8,6 +8,7 @@ var x = foo1; class y extends x {} >y : Symbol(y, Decl(foo2.ts, 1, 13)) +>x : Symbol(x, Decl(foo2.ts, 1, 3)) === tests/cases/conformance/classes/classExpressions/foo1.ts === class x{} diff --git a/tests/baselines/reference/extendNonClassSymbol1.symbols b/tests/baselines/reference/extendNonClassSymbol1.symbols index 02291ebb181..7c03ef3a97f 100644 --- a/tests/baselines/reference/extendNonClassSymbol1.symbols +++ b/tests/baselines/reference/extendNonClassSymbol1.symbols @@ -9,4 +9,5 @@ var x = A; class C extends x { } // error, could not find symbol xs >C : Symbol(C, Decl(extendNonClassSymbol1.ts, 1, 10)) +>x : Symbol(x, Decl(extendNonClassSymbol1.ts, 1, 3)) diff --git a/tests/baselines/reference/extendingClassFromAliasAndUsageInIndexer.js b/tests/baselines/reference/extendingClassFromAliasAndUsageInIndexer.js index 297a7527ec0..3c05ccc6866 100644 --- a/tests/baselines/reference/extendingClassFromAliasAndUsageInIndexer.js +++ b/tests/baselines/reference/extendingClassFromAliasAndUsageInIndexer.js @@ -6,21 +6,21 @@ export class Model { } //// [extendingClassFromAliasAndUsageInIndexer_moduleA.ts] -import Backbone = require("extendingClassFromAliasAndUsageInIndexer_backbone"); +import Backbone = require("./extendingClassFromAliasAndUsageInIndexer_backbone"); export class VisualizationModel extends Backbone.Model { // interesting stuff here } //// [extendingClassFromAliasAndUsageInIndexer_moduleB.ts] -import Backbone = require("extendingClassFromAliasAndUsageInIndexer_backbone"); +import Backbone = require("./extendingClassFromAliasAndUsageInIndexer_backbone"); export class VisualizationModel extends Backbone.Model { // different interesting stuff here } //// [extendingClassFromAliasAndUsageInIndexer_main.ts] -import Backbone = require("extendingClassFromAliasAndUsageInIndexer_backbone"); -import moduleA = require("extendingClassFromAliasAndUsageInIndexer_moduleA"); -import moduleB = require("extendingClassFromAliasAndUsageInIndexer_moduleB"); +import Backbone = require("./extendingClassFromAliasAndUsageInIndexer_backbone"); +import moduleA = require("./extendingClassFromAliasAndUsageInIndexer_moduleA"); +import moduleB = require("./extendingClassFromAliasAndUsageInIndexer_moduleB"); interface IHasVisualizationModel { VisualizationModel: typeof Backbone.Model; } @@ -45,7 +45,7 @@ var __extends = (this && this.__extends) || function (d, b) { function __() { this.constructor = d; } d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __()); }; -var Backbone = require("extendingClassFromAliasAndUsageInIndexer_backbone"); +var Backbone = require("./extendingClassFromAliasAndUsageInIndexer_backbone"); var VisualizationModel = (function (_super) { __extends(VisualizationModel, _super); function VisualizationModel() { @@ -60,7 +60,7 @@ var __extends = (this && this.__extends) || function (d, b) { function __() { this.constructor = d; } d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __()); }; -var Backbone = require("extendingClassFromAliasAndUsageInIndexer_backbone"); +var Backbone = require("./extendingClassFromAliasAndUsageInIndexer_backbone"); var VisualizationModel = (function (_super) { __extends(VisualizationModel, _super); function VisualizationModel() { @@ -70,8 +70,8 @@ var VisualizationModel = (function (_super) { })(Backbone.Model); exports.VisualizationModel = VisualizationModel; //// [extendingClassFromAliasAndUsageInIndexer_main.js] -var moduleA = require("extendingClassFromAliasAndUsageInIndexer_moduleA"); -var moduleB = require("extendingClassFromAliasAndUsageInIndexer_moduleB"); +var moduleA = require("./extendingClassFromAliasAndUsageInIndexer_moduleA"); +var moduleB = require("./extendingClassFromAliasAndUsageInIndexer_moduleB"); var moduleATyped = moduleA; var moduleMap = { "moduleA": moduleA, diff --git a/tests/baselines/reference/extendingClassFromAliasAndUsageInIndexer.symbols b/tests/baselines/reference/extendingClassFromAliasAndUsageInIndexer.symbols index 02d57509a55..33e0c226e67 100644 --- a/tests/baselines/reference/extendingClassFromAliasAndUsageInIndexer.symbols +++ b/tests/baselines/reference/extendingClassFromAliasAndUsageInIndexer.symbols @@ -1,15 +1,15 @@ === tests/cases/compiler/extendingClassFromAliasAndUsageInIndexer_main.ts === -import Backbone = require("extendingClassFromAliasAndUsageInIndexer_backbone"); +import Backbone = require("./extendingClassFromAliasAndUsageInIndexer_backbone"); >Backbone : Symbol(Backbone, Decl(extendingClassFromAliasAndUsageInIndexer_main.ts, 0, 0)) -import moduleA = require("extendingClassFromAliasAndUsageInIndexer_moduleA"); ->moduleA : Symbol(moduleA, Decl(extendingClassFromAliasAndUsageInIndexer_main.ts, 0, 79)) +import moduleA = require("./extendingClassFromAliasAndUsageInIndexer_moduleA"); +>moduleA : Symbol(moduleA, Decl(extendingClassFromAliasAndUsageInIndexer_main.ts, 0, 81)) -import moduleB = require("extendingClassFromAliasAndUsageInIndexer_moduleB"); ->moduleB : Symbol(moduleB, Decl(extendingClassFromAliasAndUsageInIndexer_main.ts, 1, 77)) +import moduleB = require("./extendingClassFromAliasAndUsageInIndexer_moduleB"); +>moduleB : Symbol(moduleB, Decl(extendingClassFromAliasAndUsageInIndexer_main.ts, 1, 79)) interface IHasVisualizationModel { ->IHasVisualizationModel : Symbol(IHasVisualizationModel, Decl(extendingClassFromAliasAndUsageInIndexer_main.ts, 2, 77)) +>IHasVisualizationModel : Symbol(IHasVisualizationModel, Decl(extendingClassFromAliasAndUsageInIndexer_main.ts, 2, 79)) VisualizationModel: typeof Backbone.Model; >VisualizationModel : Symbol(VisualizationModel, Decl(extendingClassFromAliasAndUsageInIndexer_main.ts, 3, 34)) @@ -19,19 +19,19 @@ interface IHasVisualizationModel { } var moduleATyped: IHasVisualizationModel = moduleA; >moduleATyped : Symbol(moduleATyped, Decl(extendingClassFromAliasAndUsageInIndexer_main.ts, 6, 3)) ->IHasVisualizationModel : Symbol(IHasVisualizationModel, Decl(extendingClassFromAliasAndUsageInIndexer_main.ts, 2, 77)) ->moduleA : Symbol(moduleA, Decl(extendingClassFromAliasAndUsageInIndexer_main.ts, 0, 79)) +>IHasVisualizationModel : Symbol(IHasVisualizationModel, Decl(extendingClassFromAliasAndUsageInIndexer_main.ts, 2, 79)) +>moduleA : Symbol(moduleA, Decl(extendingClassFromAliasAndUsageInIndexer_main.ts, 0, 81)) var moduleMap: { [key: string]: IHasVisualizationModel } = { >moduleMap : Symbol(moduleMap, Decl(extendingClassFromAliasAndUsageInIndexer_main.ts, 7, 3)) >key : Symbol(key, Decl(extendingClassFromAliasAndUsageInIndexer_main.ts, 7, 18)) ->IHasVisualizationModel : Symbol(IHasVisualizationModel, Decl(extendingClassFromAliasAndUsageInIndexer_main.ts, 2, 77)) +>IHasVisualizationModel : Symbol(IHasVisualizationModel, Decl(extendingClassFromAliasAndUsageInIndexer_main.ts, 2, 79)) "moduleA": moduleA, ->moduleA : Symbol(moduleA, Decl(extendingClassFromAliasAndUsageInIndexer_main.ts, 0, 79)) +>moduleA : Symbol(moduleA, Decl(extendingClassFromAliasAndUsageInIndexer_main.ts, 0, 81)) "moduleB": moduleB ->moduleB : Symbol(moduleB, Decl(extendingClassFromAliasAndUsageInIndexer_main.ts, 1, 77)) +>moduleB : Symbol(moduleB, Decl(extendingClassFromAliasAndUsageInIndexer_main.ts, 1, 79)) }; var moduleName: string; @@ -53,11 +53,11 @@ export class Model { } === tests/cases/compiler/extendingClassFromAliasAndUsageInIndexer_moduleA.ts === -import Backbone = require("extendingClassFromAliasAndUsageInIndexer_backbone"); +import Backbone = require("./extendingClassFromAliasAndUsageInIndexer_backbone"); >Backbone : Symbol(Backbone, Decl(extendingClassFromAliasAndUsageInIndexer_moduleA.ts, 0, 0)) export class VisualizationModel extends Backbone.Model { ->VisualizationModel : Symbol(VisualizationModel, Decl(extendingClassFromAliasAndUsageInIndexer_moduleA.ts, 0, 79)) +>VisualizationModel : Symbol(VisualizationModel, Decl(extendingClassFromAliasAndUsageInIndexer_moduleA.ts, 0, 81)) >Backbone.Model : Symbol(Backbone.Model, Decl(extendingClassFromAliasAndUsageInIndexer_backbone.ts, 0, 0)) >Backbone : Symbol(Backbone, Decl(extendingClassFromAliasAndUsageInIndexer_moduleA.ts, 0, 0)) >Model : Symbol(Backbone.Model, Decl(extendingClassFromAliasAndUsageInIndexer_backbone.ts, 0, 0)) @@ -66,11 +66,11 @@ export class VisualizationModel extends Backbone.Model { } === tests/cases/compiler/extendingClassFromAliasAndUsageInIndexer_moduleB.ts === -import Backbone = require("extendingClassFromAliasAndUsageInIndexer_backbone"); +import Backbone = require("./extendingClassFromAliasAndUsageInIndexer_backbone"); >Backbone : Symbol(Backbone, Decl(extendingClassFromAliasAndUsageInIndexer_moduleB.ts, 0, 0)) export class VisualizationModel extends Backbone.Model { ->VisualizationModel : Symbol(VisualizationModel, Decl(extendingClassFromAliasAndUsageInIndexer_moduleB.ts, 0, 79)) +>VisualizationModel : Symbol(VisualizationModel, Decl(extendingClassFromAliasAndUsageInIndexer_moduleB.ts, 0, 81)) >Backbone.Model : Symbol(Backbone.Model, Decl(extendingClassFromAliasAndUsageInIndexer_backbone.ts, 0, 0)) >Backbone : Symbol(Backbone, Decl(extendingClassFromAliasAndUsageInIndexer_moduleB.ts, 0, 0)) >Model : Symbol(Backbone.Model, Decl(extendingClassFromAliasAndUsageInIndexer_backbone.ts, 0, 0)) diff --git a/tests/baselines/reference/extendingClassFromAliasAndUsageInIndexer.types b/tests/baselines/reference/extendingClassFromAliasAndUsageInIndexer.types index b5323ae5c85..e1bfd195698 100644 --- a/tests/baselines/reference/extendingClassFromAliasAndUsageInIndexer.types +++ b/tests/baselines/reference/extendingClassFromAliasAndUsageInIndexer.types @@ -1,11 +1,11 @@ === tests/cases/compiler/extendingClassFromAliasAndUsageInIndexer_main.ts === -import Backbone = require("extendingClassFromAliasAndUsageInIndexer_backbone"); +import Backbone = require("./extendingClassFromAliasAndUsageInIndexer_backbone"); >Backbone : typeof Backbone -import moduleA = require("extendingClassFromAliasAndUsageInIndexer_moduleA"); +import moduleA = require("./extendingClassFromAliasAndUsageInIndexer_moduleA"); >moduleA : typeof moduleA -import moduleB = require("extendingClassFromAliasAndUsageInIndexer_moduleB"); +import moduleB = require("./extendingClassFromAliasAndUsageInIndexer_moduleB"); >moduleB : typeof moduleB interface IHasVisualizationModel { @@ -56,7 +56,7 @@ export class Model { } === tests/cases/compiler/extendingClassFromAliasAndUsageInIndexer_moduleA.ts === -import Backbone = require("extendingClassFromAliasAndUsageInIndexer_backbone"); +import Backbone = require("./extendingClassFromAliasAndUsageInIndexer_backbone"); >Backbone : typeof Backbone export class VisualizationModel extends Backbone.Model { @@ -69,7 +69,7 @@ export class VisualizationModel extends Backbone.Model { } === tests/cases/compiler/extendingClassFromAliasAndUsageInIndexer_moduleB.ts === -import Backbone = require("extendingClassFromAliasAndUsageInIndexer_backbone"); +import Backbone = require("./extendingClassFromAliasAndUsageInIndexer_backbone"); >Backbone : typeof Backbone export class VisualizationModel extends Backbone.Model { diff --git a/tests/baselines/reference/externSyntax.errors.txt b/tests/baselines/reference/externSyntax.errors.txt index 1d3380b99d5..464bfcd55e4 100644 --- a/tests/baselines/reference/externSyntax.errors.txt +++ b/tests/baselines/reference/externSyntax.errors.txt @@ -1,4 +1,4 @@ -tests/cases/compiler/externSyntax.ts(8,20): error TS1184: An implementation cannot be declared in ambient contexts. +tests/cases/compiler/externSyntax.ts(8,20): error TS1183: An implementation cannot be declared in ambient contexts. ==== tests/cases/compiler/externSyntax.ts (1 errors) ==== @@ -11,7 +11,7 @@ tests/cases/compiler/externSyntax.ts(8,20): error TS1184: An implementation cann public f(); public g() { } // error body ~ -!!! error TS1184: An implementation cannot be declared in ambient contexts. +!!! error TS1183: An implementation cannot be declared in ambient contexts. } } diff --git a/tests/baselines/reference/externalModuleExportingGenericClass.errors.txt b/tests/baselines/reference/externalModuleExportingGenericClass.errors.txt index c8712b20864..7825345a1b5 100644 --- a/tests/baselines/reference/externalModuleExportingGenericClass.errors.txt +++ b/tests/baselines/reference/externalModuleExportingGenericClass.errors.txt @@ -2,7 +2,7 @@ tests/cases/compiler/externalModuleExportingGenericClass_file1.ts(2,8): error TS ==== tests/cases/compiler/externalModuleExportingGenericClass_file1.ts (1 errors) ==== - import a = require('externalModuleExportingGenericClass_file0'); + import a = require('./externalModuleExportingGenericClass_file0'); var v: a; // this should report error ~ !!! error TS2314: Generic type 'C' requires 1 type argument(s). diff --git a/tests/baselines/reference/externalModuleExportingGenericClass.js b/tests/baselines/reference/externalModuleExportingGenericClass.js index 14f18ddfc04..5dc1e9bea1d 100644 --- a/tests/baselines/reference/externalModuleExportingGenericClass.js +++ b/tests/baselines/reference/externalModuleExportingGenericClass.js @@ -9,7 +9,7 @@ export = C; //// [externalModuleExportingGenericClass_file1.ts] -import a = require('externalModuleExportingGenericClass_file0'); +import a = require('./externalModuleExportingGenericClass_file0'); var v: a; // this should report error var v2: any = (new a()).foo; var v3: number = (new a()).foo; @@ -23,7 +23,7 @@ var C = (function () { })(); module.exports = C; //// [externalModuleExportingGenericClass_file1.js] -var a = require('externalModuleExportingGenericClass_file0'); +var a = require('./externalModuleExportingGenericClass_file0'); var v; // this should report error var v2 = (new a()).foo; var v3 = (new a()).foo; diff --git a/tests/baselines/reference/externalModuleImmutableBindings.errors.txt b/tests/baselines/reference/externalModuleImmutableBindings.errors.txt index 8ab07c26851..a6040c154f0 100644 --- a/tests/baselines/reference/externalModuleImmutableBindings.errors.txt +++ b/tests/baselines/reference/externalModuleImmutableBindings.errors.txt @@ -16,7 +16,7 @@ tests/cases/compiler/f2.ts(41,13): error TS2339: Property 'blah' does not exist ==== tests/cases/compiler/f2.ts (10 errors) ==== // all mutations below are illegal and should be fixed - import * as stuff from 'f1'; + import * as stuff from './f1'; var n = 'baz'; diff --git a/tests/baselines/reference/externalModuleImmutableBindings.js b/tests/baselines/reference/externalModuleImmutableBindings.js index 5e5ba6c2294..47d83ded80c 100644 --- a/tests/baselines/reference/externalModuleImmutableBindings.js +++ b/tests/baselines/reference/externalModuleImmutableBindings.js @@ -6,7 +6,7 @@ export var x = 1; //// [f2.ts] // all mutations below are illegal and should be fixed -import * as stuff from 'f1'; +import * as stuff from './f1'; var n = 'baz'; @@ -55,7 +55,7 @@ for ((stuff[n]) of []) {} exports.x = 1; //// [f2.js] // all mutations below are illegal and should be fixed -var stuff = require('f1'); +var stuff = require('./f1'); var n = 'baz'; stuff.x = 0; stuff['x'] = 1; diff --git a/tests/baselines/reference/externalModuleRefernceResolutionOrderInImportDeclaration.errors.txt b/tests/baselines/reference/externalModuleRefernceResolutionOrderInImportDeclaration.errors.txt index 588183c6283..a0b34ecbee1 100644 --- a/tests/baselines/reference/externalModuleRefernceResolutionOrderInImportDeclaration.errors.txt +++ b/tests/baselines/reference/externalModuleRefernceResolutionOrderInImportDeclaration.errors.txt @@ -1,13 +1,13 @@ -tests/cases/compiler/externalModuleRefernceResolutionOrderInImportDeclaration_file3.ts(3,7): error TS2339: Property 'foo' does not exist on type 'typeof "externalModuleRefernceResolutionOrderInImportDeclaration_file1"'. +tests/cases/compiler/externalModuleRefernceResolutionOrderInImportDeclaration_file3.ts(4,7): error TS2339: Property 'bar' does not exist on type 'typeof "tests/cases/compiler/externalModuleRefernceResolutionOrderInImportDeclaration_file1"'. ==== tests/cases/compiler/externalModuleRefernceResolutionOrderInImportDeclaration_file3.ts (1 errors) ==== /// - import file1 = require('externalModuleRefernceResolutionOrderInImportDeclaration_file1'); + import file1 = require('./externalModuleRefernceResolutionOrderInImportDeclaration_file1'); file1.foo(); - ~~~ -!!! error TS2339: Property 'foo' does not exist on type 'typeof "externalModuleRefernceResolutionOrderInImportDeclaration_file1"'. file1.bar(); + ~~~ +!!! error TS2339: Property 'bar' does not exist on type 'typeof "tests/cases/compiler/externalModuleRefernceResolutionOrderInImportDeclaration_file1"'. ==== tests/cases/compiler/externalModuleRefernceResolutionOrderInImportDeclaration_file1.ts (0 errors) ==== diff --git a/tests/baselines/reference/externalModuleRefernceResolutionOrderInImportDeclaration.js b/tests/baselines/reference/externalModuleRefernceResolutionOrderInImportDeclaration.js index f1d1d9fb561..48411da4a02 100644 --- a/tests/baselines/reference/externalModuleRefernceResolutionOrderInImportDeclaration.js +++ b/tests/baselines/reference/externalModuleRefernceResolutionOrderInImportDeclaration.js @@ -11,7 +11,7 @@ declare module "externalModuleRefernceResolutionOrderInImportDeclaration_file1" //// [externalModuleRefernceResolutionOrderInImportDeclaration_file3.ts] /// -import file1 = require('externalModuleRefernceResolutionOrderInImportDeclaration_file1'); +import file1 = require('./externalModuleRefernceResolutionOrderInImportDeclaration_file1'); file1.foo(); file1.bar(); @@ -24,6 +24,6 @@ exports.foo = foo; ; //// [externalModuleRefernceResolutionOrderInImportDeclaration_file3.js] /// -var file1 = require('externalModuleRefernceResolutionOrderInImportDeclaration_file1'); +var file1 = require('./externalModuleRefernceResolutionOrderInImportDeclaration_file1'); file1.foo(); file1.bar(); diff --git a/tests/baselines/reference/fatArrowSelf.types b/tests/baselines/reference/fatArrowSelf.types index c4b2936fd37..574262265bc 100644 --- a/tests/baselines/reference/fatArrowSelf.types +++ b/tests/baselines/reference/fatArrowSelf.types @@ -38,7 +38,7 @@ module Consumer { >this.emitter.addListener('change', (e) => { this.changed(); }) : void >this.emitter.addListener : (type: string, listener: Events.ListenerCallback) => void >this.emitter : Events.EventEmitter ->this : EventEmitterConsummer +>this : this >emitter : Events.EventEmitter >addListener : (type: string, listener: Events.ListenerCallback) => void >'change' : string @@ -48,7 +48,7 @@ module Consumer { this.changed(); >this.changed() : void >this.changed : () => void ->this : EventEmitterConsummer +>this : this >changed : () => void }); diff --git a/tests/baselines/reference/fluentClasses.js b/tests/baselines/reference/fluentClasses.js new file mode 100644 index 00000000000..12f3cfff48d --- /dev/null +++ b/tests/baselines/reference/fluentClasses.js @@ -0,0 +1,56 @@ +//// [fluentClasses.ts] +class A { + foo() { + return this; + } +} +class B extends A { + bar() { + return this; + } +} +class C extends B { + baz() { + return this; + } +} +var c: C; +var z = c.foo().bar().baz(); // Fluent pattern + + +//// [fluentClasses.js] +var __extends = (this && this.__extends) || function (d, b) { + for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; + function __() { this.constructor = d; } + d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __()); +}; +var A = (function () { + function A() { + } + A.prototype.foo = function () { + return this; + }; + return A; +})(); +var B = (function (_super) { + __extends(B, _super); + function B() { + _super.apply(this, arguments); + } + B.prototype.bar = function () { + return this; + }; + return B; +})(A); +var C = (function (_super) { + __extends(C, _super); + function C() { + _super.apply(this, arguments); + } + C.prototype.baz = function () { + return this; + }; + return C; +})(B); +var c; +var z = c.foo().bar().baz(); // Fluent pattern diff --git a/tests/baselines/reference/fluentClasses.symbols b/tests/baselines/reference/fluentClasses.symbols new file mode 100644 index 00000000000..3125235b6b1 --- /dev/null +++ b/tests/baselines/reference/fluentClasses.symbols @@ -0,0 +1,47 @@ +=== tests/cases/conformance/types/thisType/fluentClasses.ts === +class A { +>A : Symbol(A, Decl(fluentClasses.ts, 0, 0)) + + foo() { +>foo : Symbol(foo, Decl(fluentClasses.ts, 0, 9)) + + return this; +>this : Symbol(A, Decl(fluentClasses.ts, 0, 0)) + } +} +class B extends A { +>B : Symbol(B, Decl(fluentClasses.ts, 4, 1)) +>A : Symbol(A, Decl(fluentClasses.ts, 0, 0)) + + bar() { +>bar : Symbol(bar, Decl(fluentClasses.ts, 5, 19)) + + return this; +>this : Symbol(B, Decl(fluentClasses.ts, 4, 1)) + } +} +class C extends B { +>C : Symbol(C, Decl(fluentClasses.ts, 9, 1)) +>B : Symbol(B, Decl(fluentClasses.ts, 4, 1)) + + baz() { +>baz : Symbol(baz, Decl(fluentClasses.ts, 10, 19)) + + return this; +>this : Symbol(C, Decl(fluentClasses.ts, 9, 1)) + } +} +var c: C; +>c : Symbol(c, Decl(fluentClasses.ts, 15, 3)) +>C : Symbol(C, Decl(fluentClasses.ts, 9, 1)) + +var z = c.foo().bar().baz(); // Fluent pattern +>z : Symbol(z, Decl(fluentClasses.ts, 16, 3)) +>c.foo().bar().baz : Symbol(C.baz, Decl(fluentClasses.ts, 10, 19)) +>c.foo().bar : Symbol(B.bar, Decl(fluentClasses.ts, 5, 19)) +>c.foo : Symbol(A.foo, Decl(fluentClasses.ts, 0, 9)) +>c : Symbol(c, Decl(fluentClasses.ts, 15, 3)) +>foo : Symbol(A.foo, Decl(fluentClasses.ts, 0, 9)) +>bar : Symbol(B.bar, Decl(fluentClasses.ts, 5, 19)) +>baz : Symbol(C.baz, Decl(fluentClasses.ts, 10, 19)) + diff --git a/tests/baselines/reference/fluentClasses.types b/tests/baselines/reference/fluentClasses.types new file mode 100644 index 00000000000..31ed6aafa01 --- /dev/null +++ b/tests/baselines/reference/fluentClasses.types @@ -0,0 +1,50 @@ +=== tests/cases/conformance/types/thisType/fluentClasses.ts === +class A { +>A : A + + foo() { +>foo : () => this + + return this; +>this : this + } +} +class B extends A { +>B : B +>A : A + + bar() { +>bar : () => this + + return this; +>this : this + } +} +class C extends B { +>C : C +>B : B + + baz() { +>baz : () => this + + return this; +>this : this + } +} +var c: C; +>c : C +>C : C + +var z = c.foo().bar().baz(); // Fluent pattern +>z : C +>c.foo().bar().baz() : C +>c.foo().bar().baz : () => C +>c.foo().bar() : C +>c.foo().bar : () => C +>c.foo() : C +>c.foo : () => C +>c : C +>foo : () => C +>bar : () => C +>baz : () => C + diff --git a/tests/baselines/reference/fluentInterfaces.js b/tests/baselines/reference/fluentInterfaces.js new file mode 100644 index 00000000000..1be15923d6c --- /dev/null +++ b/tests/baselines/reference/fluentInterfaces.js @@ -0,0 +1,17 @@ +//// [fluentInterfaces.ts] +interface A { + foo(): this; +} +interface B extends A { + bar(): this; +} +interface C extends B { + baz(): this; +} +var c: C; +var z = c.foo().bar().baz(); // Fluent pattern + + +//// [fluentInterfaces.js] +var c; +var z = c.foo().bar().baz(); // Fluent pattern diff --git a/tests/baselines/reference/fluentInterfaces.symbols b/tests/baselines/reference/fluentInterfaces.symbols new file mode 100644 index 00000000000..e059cdc127e --- /dev/null +++ b/tests/baselines/reference/fluentInterfaces.symbols @@ -0,0 +1,35 @@ +=== tests/cases/conformance/types/thisType/fluentInterfaces.ts === +interface A { +>A : Symbol(A, Decl(fluentInterfaces.ts, 0, 0)) + + foo(): this; +>foo : Symbol(foo, Decl(fluentInterfaces.ts, 0, 13)) +} +interface B extends A { +>B : Symbol(B, Decl(fluentInterfaces.ts, 2, 1)) +>A : Symbol(A, Decl(fluentInterfaces.ts, 0, 0)) + + bar(): this; +>bar : Symbol(bar, Decl(fluentInterfaces.ts, 3, 23)) +} +interface C extends B { +>C : Symbol(C, Decl(fluentInterfaces.ts, 5, 1)) +>B : Symbol(B, Decl(fluentInterfaces.ts, 2, 1)) + + baz(): this; +>baz : Symbol(baz, Decl(fluentInterfaces.ts, 6, 23)) +} +var c: C; +>c : Symbol(c, Decl(fluentInterfaces.ts, 9, 3)) +>C : Symbol(C, Decl(fluentInterfaces.ts, 5, 1)) + +var z = c.foo().bar().baz(); // Fluent pattern +>z : Symbol(z, Decl(fluentInterfaces.ts, 10, 3)) +>c.foo().bar().baz : Symbol(C.baz, Decl(fluentInterfaces.ts, 6, 23)) +>c.foo().bar : Symbol(B.bar, Decl(fluentInterfaces.ts, 3, 23)) +>c.foo : Symbol(A.foo, Decl(fluentInterfaces.ts, 0, 13)) +>c : Symbol(c, Decl(fluentInterfaces.ts, 9, 3)) +>foo : Symbol(A.foo, Decl(fluentInterfaces.ts, 0, 13)) +>bar : Symbol(B.bar, Decl(fluentInterfaces.ts, 3, 23)) +>baz : Symbol(C.baz, Decl(fluentInterfaces.ts, 6, 23)) + diff --git a/tests/baselines/reference/fluentInterfaces.types b/tests/baselines/reference/fluentInterfaces.types new file mode 100644 index 00000000000..26e5a74c188 --- /dev/null +++ b/tests/baselines/reference/fluentInterfaces.types @@ -0,0 +1,38 @@ +=== tests/cases/conformance/types/thisType/fluentInterfaces.ts === +interface A { +>A : A + + foo(): this; +>foo : () => this +} +interface B extends A { +>B : B +>A : A + + bar(): this; +>bar : () => this +} +interface C extends B { +>C : C +>B : B + + baz(): this; +>baz : () => this +} +var c: C; +>c : C +>C : C + +var z = c.foo().bar().baz(); // Fluent pattern +>z : C +>c.foo().bar().baz() : C +>c.foo().bar().baz : () => C +>c.foo().bar() : C +>c.foo().bar : () => C +>c.foo() : C +>c.foo : () => C +>c : C +>foo : () => C +>bar : () => C +>baz : () => C + diff --git a/tests/baselines/reference/for-of13.symbols b/tests/baselines/reference/for-of13.symbols index e465f36a50f..09a7e06cc21 100644 --- a/tests/baselines/reference/for-of13.symbols +++ b/tests/baselines/reference/for-of13.symbols @@ -4,6 +4,6 @@ var v: string; for (v of [""].values()) { } >v : Symbol(v, Decl(for-of13.ts, 0, 3)) ->[""].values : Symbol(Array.values, Decl(lib.d.ts, 4119, 37)) ->values : Symbol(Array.values, Decl(lib.d.ts, 4119, 37)) +>[""].values : Symbol(Array.values, Decl(lib.d.ts, 4146, 37)) +>values : Symbol(Array.values, Decl(lib.d.ts, 4146, 37)) diff --git a/tests/baselines/reference/for-of18.types b/tests/baselines/reference/for-of18.types index 5b2be7edc3e..415f2b11568 100644 --- a/tests/baselines/reference/for-of18.types +++ b/tests/baselines/reference/for-of18.types @@ -32,6 +32,6 @@ class StringIterator { >iterator : symbol return this; ->this : StringIterator +>this : this } } diff --git a/tests/baselines/reference/for-of19.types b/tests/baselines/reference/for-of19.types index 02ef786ddd9..5128617bf24 100644 --- a/tests/baselines/reference/for-of19.types +++ b/tests/baselines/reference/for-of19.types @@ -37,6 +37,6 @@ class FooIterator { >iterator : symbol return this; ->this : FooIterator +>this : this } } diff --git a/tests/baselines/reference/for-of20.types b/tests/baselines/reference/for-of20.types index 3da6fd484b1..de12979c650 100644 --- a/tests/baselines/reference/for-of20.types +++ b/tests/baselines/reference/for-of20.types @@ -37,6 +37,6 @@ class FooIterator { >iterator : symbol return this; ->this : FooIterator +>this : this } } diff --git a/tests/baselines/reference/for-of21.types b/tests/baselines/reference/for-of21.types index a0cc50e99d7..cab24c525d9 100644 --- a/tests/baselines/reference/for-of21.types +++ b/tests/baselines/reference/for-of21.types @@ -37,6 +37,6 @@ class FooIterator { >iterator : symbol return this; ->this : FooIterator +>this : this } } diff --git a/tests/baselines/reference/for-of22.types b/tests/baselines/reference/for-of22.types index 09e85798554..f15a1d7e114 100644 --- a/tests/baselines/reference/for-of22.types +++ b/tests/baselines/reference/for-of22.types @@ -38,6 +38,6 @@ class FooIterator { >iterator : symbol return this; ->this : FooIterator +>this : this } } diff --git a/tests/baselines/reference/for-of23.types b/tests/baselines/reference/for-of23.types index 37515c0b70a..87f1eeabbb7 100644 --- a/tests/baselines/reference/for-of23.types +++ b/tests/baselines/reference/for-of23.types @@ -38,6 +38,6 @@ class FooIterator { >iterator : symbol return this; ->this : FooIterator +>this : this } } diff --git a/tests/baselines/reference/for-of26.types b/tests/baselines/reference/for-of26.types index d2608fbf154..fe930e2e57f 100644 --- a/tests/baselines/reference/for-of26.types +++ b/tests/baselines/reference/for-of26.types @@ -22,6 +22,6 @@ class StringIterator { >iterator : symbol return this; ->this : StringIterator +>this : this } } diff --git a/tests/baselines/reference/for-of28.types b/tests/baselines/reference/for-of28.types index 91b77a55a4d..882d2df6186 100644 --- a/tests/baselines/reference/for-of28.types +++ b/tests/baselines/reference/for-of28.types @@ -16,6 +16,6 @@ class StringIterator { >iterator : symbol return this; ->this : StringIterator +>this : this } } diff --git a/tests/baselines/reference/for-of37.symbols b/tests/baselines/reference/for-of37.symbols index e6a10d77cad..b0a39571f6f 100644 --- a/tests/baselines/reference/for-of37.symbols +++ b/tests/baselines/reference/for-of37.symbols @@ -1,7 +1,7 @@ === tests/cases/conformance/es6/for-ofStatements/for-of37.ts === var map = new Map([["", true]]); >map : Symbol(map, Decl(for-of37.ts, 0, 3)) ->Map : Symbol(Map, Decl(lib.d.ts, 4608, 1), Decl(lib.d.ts, 4631, 11)) +>Map : Symbol(Map, Decl(lib.d.ts, 4635, 1), Decl(lib.d.ts, 4658, 11)) for (var v of map) { >v : Symbol(v, Decl(for-of37.ts, 1, 8)) diff --git a/tests/baselines/reference/for-of38.symbols b/tests/baselines/reference/for-of38.symbols index 43df250ab95..67ee08bbb5f 100644 --- a/tests/baselines/reference/for-of38.symbols +++ b/tests/baselines/reference/for-of38.symbols @@ -1,7 +1,7 @@ === tests/cases/conformance/es6/for-ofStatements/for-of38.ts === var map = new Map([["", true]]); >map : Symbol(map, Decl(for-of38.ts, 0, 3)) ->Map : Symbol(Map, Decl(lib.d.ts, 4608, 1), Decl(lib.d.ts, 4631, 11)) +>Map : Symbol(Map, Decl(lib.d.ts, 4635, 1), Decl(lib.d.ts, 4658, 11)) for (var [k, v] of map) { >k : Symbol(k, Decl(for-of38.ts, 1, 10)) diff --git a/tests/baselines/reference/for-of40.symbols b/tests/baselines/reference/for-of40.symbols index e1e413424ad..2f3a2a9a574 100644 --- a/tests/baselines/reference/for-of40.symbols +++ b/tests/baselines/reference/for-of40.symbols @@ -1,7 +1,7 @@ === tests/cases/conformance/es6/for-ofStatements/for-of40.ts === var map = new Map([["", true]]); >map : Symbol(map, Decl(for-of40.ts, 0, 3)) ->Map : Symbol(Map, Decl(lib.d.ts, 4608, 1), Decl(lib.d.ts, 4631, 11)) +>Map : Symbol(Map, Decl(lib.d.ts, 4635, 1), Decl(lib.d.ts, 4658, 11)) for (var [k = "", v = false] of map) { >k : Symbol(k, Decl(for-of40.ts, 1, 10)) diff --git a/tests/baselines/reference/for-of45.symbols b/tests/baselines/reference/for-of45.symbols index 87c227f5dc9..6f75dd6311d 100644 --- a/tests/baselines/reference/for-of45.symbols +++ b/tests/baselines/reference/for-of45.symbols @@ -5,7 +5,7 @@ var k: string, v: boolean; var map = new Map([["", true]]); >map : Symbol(map, Decl(for-of45.ts, 1, 3)) ->Map : Symbol(Map, Decl(lib.d.ts, 4608, 1), Decl(lib.d.ts, 4631, 11)) +>Map : Symbol(Map, Decl(lib.d.ts, 4635, 1), Decl(lib.d.ts, 4658, 11)) for ([k = "", v = false] of map) { >k : Symbol(k, Decl(for-of45.ts, 0, 3)) diff --git a/tests/baselines/reference/for-of50.symbols b/tests/baselines/reference/for-of50.symbols index c01a37bf409..7fb77790ef7 100644 --- a/tests/baselines/reference/for-of50.symbols +++ b/tests/baselines/reference/for-of50.symbols @@ -1,7 +1,7 @@ === tests/cases/conformance/es6/for-ofStatements/for-of50.ts === var map = new Map([["", true]]); >map : Symbol(map, Decl(for-of50.ts, 0, 3)) ->Map : Symbol(Map, Decl(lib.d.ts, 4608, 1), Decl(lib.d.ts, 4631, 11)) +>Map : Symbol(Map, Decl(lib.d.ts, 4635, 1), Decl(lib.d.ts, 4658, 11)) for (const [k, v] of map) { >k : Symbol(k, Decl(for-of50.ts, 1, 12)) diff --git a/tests/baselines/reference/for-of57.symbols b/tests/baselines/reference/for-of57.symbols index ff061ffcca1..9aadb415e8f 100644 --- a/tests/baselines/reference/for-of57.symbols +++ b/tests/baselines/reference/for-of57.symbols @@ -1,7 +1,7 @@ === tests/cases/conformance/es6/for-ofStatements/for-of57.ts === var iter: Iterable; >iter : Symbol(iter, Decl(for-of57.ts, 0, 3)) ->Iterable : Symbol(Iterable, Decl(lib.d.ts, 4369, 1)) +>Iterable : Symbol(Iterable, Decl(lib.d.ts, 4396, 1)) for (let num of iter) { } >num : Symbol(num, Decl(for-of57.ts, 1, 8)) diff --git a/tests/baselines/reference/functionOverloads7.types b/tests/baselines/reference/functionOverloads7.types index c57f042b354..7160068126f 100644 --- a/tests/baselines/reference/functionOverloads7.types +++ b/tests/baselines/reference/functionOverloads7.types @@ -21,7 +21,7 @@ class foo { >foo : any >this.bar() : any >this.bar : { (): any; (foo: string): any; } ->this : foo +>this : this >bar : { (): any; (foo: string): any; } foo = this.bar("test"); @@ -29,7 +29,7 @@ class foo { >foo : any >this.bar("test") : any >this.bar : { (): any; (foo: string): any; } ->this : foo +>this : this >bar : { (): any; (foo: string): any; } >"test" : string } diff --git a/tests/baselines/reference/functionSubtypingOfVarArgs.types b/tests/baselines/reference/functionSubtypingOfVarArgs.types index ebd706e94cf..ec48ff26c66 100644 --- a/tests/baselines/reference/functionSubtypingOfVarArgs.types +++ b/tests/baselines/reference/functionSubtypingOfVarArgs.types @@ -15,7 +15,7 @@ class EventBase { >this._listeners.push(listener) : number >this._listeners.push : (...items: any[]) => number >this._listeners : any[] ->this : EventBase +>this : this >_listeners : any[] >push : (...items: any[]) => number >listener : (...args: any[]) => void diff --git a/tests/baselines/reference/functionSubtypingOfVarArgs2.types b/tests/baselines/reference/functionSubtypingOfVarArgs2.types index 5e2b14ffc7a..3aa5b7a7a00 100644 --- a/tests/baselines/reference/functionSubtypingOfVarArgs2.types +++ b/tests/baselines/reference/functionSubtypingOfVarArgs2.types @@ -16,7 +16,7 @@ class EventBase { >this._listeners.push(listener) : number >this._listeners.push : (...items: ((...args: any[]) => void)[]) => number >this._listeners : ((...args: any[]) => void)[] ->this : EventBase +>this : this >_listeners : ((...args: any[]) => void)[] >push : (...items: ((...args: any[]) => void)[]) => number >listener : (...args: any[]) => void diff --git a/tests/baselines/reference/functionsWithModifiersInBlocks1.errors.txt b/tests/baselines/reference/functionsWithModifiersInBlocks1.errors.txt index f6240f5e697..e3137740937 100644 --- a/tests/baselines/reference/functionsWithModifiersInBlocks1.errors.txt +++ b/tests/baselines/reference/functionsWithModifiersInBlocks1.errors.txt @@ -1,11 +1,11 @@ tests/cases/compiler/functionsWithModifiersInBlocks1.ts(2,4): error TS1184: Modifiers cannot appear here. tests/cases/compiler/functionsWithModifiersInBlocks1.ts(2,21): error TS2393: Duplicate function implementation. -tests/cases/compiler/functionsWithModifiersInBlocks1.ts(2,25): error TS1184: An implementation cannot be declared in ambient contexts. +tests/cases/compiler/functionsWithModifiersInBlocks1.ts(2,25): error TS1183: An implementation cannot be declared in ambient contexts. tests/cases/compiler/functionsWithModifiersInBlocks1.ts(3,4): error TS1184: Modifiers cannot appear here. tests/cases/compiler/functionsWithModifiersInBlocks1.ts(3,20): error TS2393: Duplicate function implementation. tests/cases/compiler/functionsWithModifiersInBlocks1.ts(4,4): error TS1184: Modifiers cannot appear here. tests/cases/compiler/functionsWithModifiersInBlocks1.ts(4,28): error TS2393: Duplicate function implementation. -tests/cases/compiler/functionsWithModifiersInBlocks1.ts(4,32): error TS1184: An implementation cannot be declared in ambient contexts. +tests/cases/compiler/functionsWithModifiersInBlocks1.ts(4,32): error TS1183: An implementation cannot be declared in ambient contexts. ==== tests/cases/compiler/functionsWithModifiersInBlocks1.ts (8 errors) ==== @@ -16,7 +16,7 @@ tests/cases/compiler/functionsWithModifiersInBlocks1.ts(4,32): error TS1184: An ~ !!! error TS2393: Duplicate function implementation. ~ -!!! error TS1184: An implementation cannot be declared in ambient contexts. +!!! error TS1183: An implementation cannot be declared in ambient contexts. export function f() { } ~~~~~~ !!! error TS1184: Modifiers cannot appear here. @@ -28,5 +28,5 @@ tests/cases/compiler/functionsWithModifiersInBlocks1.ts(4,32): error TS1184: An ~ !!! error TS2393: Duplicate function implementation. ~ -!!! error TS1184: An implementation cannot be declared in ambient contexts. +!!! error TS1183: An implementation cannot be declared in ambient contexts. } \ No newline at end of file diff --git a/tests/baselines/reference/fuzzy.errors.txt b/tests/baselines/reference/fuzzy.errors.txt index 699841f8870..72ac4c816f9 100644 --- a/tests/baselines/reference/fuzzy.errors.txt +++ b/tests/baselines/reference/fuzzy.errors.txt @@ -1,10 +1,11 @@ tests/cases/compiler/fuzzy.ts(13,18): error TS2420: Class 'C' incorrectly implements interface 'I'. Property 'alsoWorks' is missing in type 'C'. -tests/cases/compiler/fuzzy.ts(21,20): error TS2322: Type '{ anything: number; oneI: C; }' is not assignable to type 'R'. +tests/cases/compiler/fuzzy.ts(21,20): error TS2322: Type '{ anything: number; oneI: this; }' is not assignable to type 'R'. Types of property 'oneI' are incompatible. - Type 'C' is not assignable to type 'I'. -tests/cases/compiler/fuzzy.ts(25,20): error TS2352: Neither type '{ oneI: C; }' nor type 'R' is assignable to the other. - Property 'anything' is missing in type '{ oneI: C; }'. + Type 'this' is not assignable to type 'I'. + Type 'C' is not assignable to type 'I'. +tests/cases/compiler/fuzzy.ts(25,20): error TS2352: Neither type '{ oneI: this; }' nor type 'R' is assignable to the other. + Property 'anything' is missing in type '{ oneI: this; }'. ==== tests/cases/compiler/fuzzy.ts (3 errors) ==== @@ -33,16 +34,17 @@ tests/cases/compiler/fuzzy.ts(25,20): error TS2352: Neither type '{ oneI: C; }' doesntWork():R { return { anything:1, oneI:this }; ~~~~~~~~~~~~~~~~~~~~~~~~~ -!!! error TS2322: Type '{ anything: number; oneI: C; }' is not assignable to type 'R'. +!!! error TS2322: Type '{ anything: number; oneI: this; }' is not assignable to type 'R'. !!! error TS2322: Types of property 'oneI' are incompatible. -!!! error TS2322: Type 'C' is not assignable to type 'I'. +!!! error TS2322: Type 'this' is not assignable to type 'I'. +!!! error TS2322: Type 'C' is not assignable to type 'I'. } worksToo():R { return ({ oneI: this }); ~~~~~~~~~~~~~~~~~~~ -!!! error TS2352: Neither type '{ oneI: C; }' nor type 'R' is assignable to the other. -!!! error TS2352: Property 'anything' is missing in type '{ oneI: C; }'. +!!! error TS2352: Neither type '{ oneI: this; }' nor type 'R' is assignable to the other. +!!! error TS2352: Property 'anything' is missing in type '{ oneI: this; }'. } } } diff --git a/tests/baselines/reference/generatorOverloads4.symbols b/tests/baselines/reference/generatorOverloads4.symbols index 647576d081e..233af97ee59 100644 --- a/tests/baselines/reference/generatorOverloads4.symbols +++ b/tests/baselines/reference/generatorOverloads4.symbols @@ -5,15 +5,15 @@ class C { f(s: string): Iterable; >f : Symbol(f, Decl(generatorOverloads4.ts, 0, 9), Decl(generatorOverloads4.ts, 1, 32), Decl(generatorOverloads4.ts, 2, 32)) >s : Symbol(s, Decl(generatorOverloads4.ts, 1, 6)) ->Iterable : Symbol(Iterable, Decl(lib.d.ts, 4369, 1)) +>Iterable : Symbol(Iterable, Decl(lib.d.ts, 4396, 1)) f(s: number): Iterable; >f : Symbol(f, Decl(generatorOverloads4.ts, 0, 9), Decl(generatorOverloads4.ts, 1, 32), Decl(generatorOverloads4.ts, 2, 32)) >s : Symbol(s, Decl(generatorOverloads4.ts, 2, 6)) ->Iterable : Symbol(Iterable, Decl(lib.d.ts, 4369, 1)) +>Iterable : Symbol(Iterable, Decl(lib.d.ts, 4396, 1)) *f(s: any): Iterable { } >f : Symbol(f, Decl(generatorOverloads4.ts, 0, 9), Decl(generatorOverloads4.ts, 1, 32), Decl(generatorOverloads4.ts, 2, 32)) >s : Symbol(s, Decl(generatorOverloads4.ts, 3, 7)) ->Iterable : Symbol(Iterable, Decl(lib.d.ts, 4369, 1)) +>Iterable : Symbol(Iterable, Decl(lib.d.ts, 4396, 1)) } diff --git a/tests/baselines/reference/generatorOverloads5.symbols b/tests/baselines/reference/generatorOverloads5.symbols index e876a2619d2..e3b14d76cd0 100644 --- a/tests/baselines/reference/generatorOverloads5.symbols +++ b/tests/baselines/reference/generatorOverloads5.symbols @@ -5,15 +5,15 @@ module M { function f(s: string): Iterable; >f : Symbol(f, Decl(generatorOverloads5.ts, 0, 10), Decl(generatorOverloads5.ts, 1, 41), Decl(generatorOverloads5.ts, 2, 41)) >s : Symbol(s, Decl(generatorOverloads5.ts, 1, 15)) ->Iterable : Symbol(Iterable, Decl(lib.d.ts, 4369, 1)) +>Iterable : Symbol(Iterable, Decl(lib.d.ts, 4396, 1)) function f(s: number): Iterable; >f : Symbol(f, Decl(generatorOverloads5.ts, 0, 10), Decl(generatorOverloads5.ts, 1, 41), Decl(generatorOverloads5.ts, 2, 41)) >s : Symbol(s, Decl(generatorOverloads5.ts, 2, 15)) ->Iterable : Symbol(Iterable, Decl(lib.d.ts, 4369, 1)) +>Iterable : Symbol(Iterable, Decl(lib.d.ts, 4396, 1)) function* f(s: any): Iterable { } >f : Symbol(f, Decl(generatorOverloads5.ts, 0, 10), Decl(generatorOverloads5.ts, 1, 41), Decl(generatorOverloads5.ts, 2, 41)) >s : Symbol(s, Decl(generatorOverloads5.ts, 3, 16)) ->Iterable : Symbol(Iterable, Decl(lib.d.ts, 4369, 1)) +>Iterable : Symbol(Iterable, Decl(lib.d.ts, 4396, 1)) } diff --git a/tests/baselines/reference/generatorTypeCheck1.symbols b/tests/baselines/reference/generatorTypeCheck1.symbols index 728084f01d0..3353182c7db 100644 --- a/tests/baselines/reference/generatorTypeCheck1.symbols +++ b/tests/baselines/reference/generatorTypeCheck1.symbols @@ -1,5 +1,5 @@ === tests/cases/conformance/es6/yieldExpressions/generatorTypeCheck1.ts === function* g1(): Iterator { } >g1 : Symbol(g1, Decl(generatorTypeCheck1.ts, 0, 0)) ->Iterator : Symbol(Iterator, Decl(lib.d.ts, 4363, 1)) +>Iterator : Symbol(Iterator, Decl(lib.d.ts, 4390, 1)) diff --git a/tests/baselines/reference/generatorTypeCheck10.symbols b/tests/baselines/reference/generatorTypeCheck10.symbols index f00d72007f5..9dc3d726f8d 100644 --- a/tests/baselines/reference/generatorTypeCheck10.symbols +++ b/tests/baselines/reference/generatorTypeCheck10.symbols @@ -1,7 +1,7 @@ === tests/cases/conformance/es6/yieldExpressions/generatorTypeCheck10.ts === function* g(): IterableIterator { >g : Symbol(g, Decl(generatorTypeCheck10.ts, 0, 0)) ->IterableIterator : Symbol(IterableIterator, Decl(lib.d.ts, 4373, 1)) +>IterableIterator : Symbol(IterableIterator, Decl(lib.d.ts, 4400, 1)) return; } diff --git a/tests/baselines/reference/generatorTypeCheck11.symbols b/tests/baselines/reference/generatorTypeCheck11.symbols index 48a1abfbaca..fabd19cd199 100644 --- a/tests/baselines/reference/generatorTypeCheck11.symbols +++ b/tests/baselines/reference/generatorTypeCheck11.symbols @@ -1,7 +1,7 @@ === tests/cases/conformance/es6/yieldExpressions/generatorTypeCheck11.ts === function* g(): IterableIterator { >g : Symbol(g, Decl(generatorTypeCheck11.ts, 0, 0)) ->IterableIterator : Symbol(IterableIterator, Decl(lib.d.ts, 4373, 1)) +>IterableIterator : Symbol(IterableIterator, Decl(lib.d.ts, 4400, 1)) return 0; } diff --git a/tests/baselines/reference/generatorTypeCheck12.symbols b/tests/baselines/reference/generatorTypeCheck12.symbols index 745e4831b12..4fe733933bb 100644 --- a/tests/baselines/reference/generatorTypeCheck12.symbols +++ b/tests/baselines/reference/generatorTypeCheck12.symbols @@ -1,7 +1,7 @@ === tests/cases/conformance/es6/yieldExpressions/generatorTypeCheck12.ts === function* g(): IterableIterator { >g : Symbol(g, Decl(generatorTypeCheck12.ts, 0, 0)) ->IterableIterator : Symbol(IterableIterator, Decl(lib.d.ts, 4373, 1)) +>IterableIterator : Symbol(IterableIterator, Decl(lib.d.ts, 4400, 1)) return ""; } diff --git a/tests/baselines/reference/generatorTypeCheck13.symbols b/tests/baselines/reference/generatorTypeCheck13.symbols index c6189a6ef64..8a720da6ee5 100644 --- a/tests/baselines/reference/generatorTypeCheck13.symbols +++ b/tests/baselines/reference/generatorTypeCheck13.symbols @@ -1,7 +1,7 @@ === tests/cases/conformance/es6/yieldExpressions/generatorTypeCheck13.ts === function* g(): IterableIterator { >g : Symbol(g, Decl(generatorTypeCheck13.ts, 0, 0)) ->IterableIterator : Symbol(IterableIterator, Decl(lib.d.ts, 4373, 1)) +>IterableIterator : Symbol(IterableIterator, Decl(lib.d.ts, 4400, 1)) yield 0; return ""; diff --git a/tests/baselines/reference/generatorTypeCheck17.symbols b/tests/baselines/reference/generatorTypeCheck17.symbols index 51d6c40ae37..28c4bb60055 100644 --- a/tests/baselines/reference/generatorTypeCheck17.symbols +++ b/tests/baselines/reference/generatorTypeCheck17.symbols @@ -10,7 +10,7 @@ class Bar extends Foo { y: string } function* g(): IterableIterator { >g : Symbol(g, Decl(generatorTypeCheck17.ts, 1, 35)) ->IterableIterator : Symbol(IterableIterator, Decl(lib.d.ts, 4373, 1)) +>IterableIterator : Symbol(IterableIterator, Decl(lib.d.ts, 4400, 1)) >Foo : Symbol(Foo, Decl(generatorTypeCheck17.ts, 0, 0)) yield; diff --git a/tests/baselines/reference/generatorTypeCheck19.symbols b/tests/baselines/reference/generatorTypeCheck19.symbols index 12bf5e5e34e..0c6bbbb462e 100644 --- a/tests/baselines/reference/generatorTypeCheck19.symbols +++ b/tests/baselines/reference/generatorTypeCheck19.symbols @@ -10,7 +10,7 @@ class Bar extends Foo { y: string } function* g(): IterableIterator { >g : Symbol(g, Decl(generatorTypeCheck19.ts, 1, 35)) ->IterableIterator : Symbol(IterableIterator, Decl(lib.d.ts, 4373, 1)) +>IterableIterator : Symbol(IterableIterator, Decl(lib.d.ts, 4400, 1)) >Foo : Symbol(Foo, Decl(generatorTypeCheck19.ts, 0, 0)) yield; diff --git a/tests/baselines/reference/generatorTypeCheck2.symbols b/tests/baselines/reference/generatorTypeCheck2.symbols index c03276b6c9b..99d9a0f0505 100644 --- a/tests/baselines/reference/generatorTypeCheck2.symbols +++ b/tests/baselines/reference/generatorTypeCheck2.symbols @@ -1,5 +1,5 @@ === tests/cases/conformance/es6/yieldExpressions/generatorTypeCheck2.ts === function* g1(): Iterable { } >g1 : Symbol(g1, Decl(generatorTypeCheck2.ts, 0, 0)) ->Iterable : Symbol(Iterable, Decl(lib.d.ts, 4369, 1)) +>Iterable : Symbol(Iterable, Decl(lib.d.ts, 4396, 1)) diff --git a/tests/baselines/reference/generatorTypeCheck26.symbols b/tests/baselines/reference/generatorTypeCheck26.symbols index 399e4ccc497..f2c13cf6199 100644 --- a/tests/baselines/reference/generatorTypeCheck26.symbols +++ b/tests/baselines/reference/generatorTypeCheck26.symbols @@ -1,7 +1,7 @@ === tests/cases/conformance/es6/yieldExpressions/generatorTypeCheck26.ts === function* g(): IterableIterator<(x: string) => number> { >g : Symbol(g, Decl(generatorTypeCheck26.ts, 0, 0)) ->IterableIterator : Symbol(IterableIterator, Decl(lib.d.ts, 4373, 1)) +>IterableIterator : Symbol(IterableIterator, Decl(lib.d.ts, 4400, 1)) >x : Symbol(x, Decl(generatorTypeCheck26.ts, 0, 33)) yield x => x.length; diff --git a/tests/baselines/reference/generatorTypeCheck27.symbols b/tests/baselines/reference/generatorTypeCheck27.symbols index 3d0a66382c6..e05147aa4b5 100644 --- a/tests/baselines/reference/generatorTypeCheck27.symbols +++ b/tests/baselines/reference/generatorTypeCheck27.symbols @@ -1,7 +1,7 @@ === tests/cases/conformance/es6/yieldExpressions/generatorTypeCheck27.ts === function* g(): IterableIterator<(x: string) => number> { >g : Symbol(g, Decl(generatorTypeCheck27.ts, 0, 0)) ->IterableIterator : Symbol(IterableIterator, Decl(lib.d.ts, 4373, 1)) +>IterableIterator : Symbol(IterableIterator, Decl(lib.d.ts, 4400, 1)) >x : Symbol(x, Decl(generatorTypeCheck27.ts, 0, 33)) yield * function* () { diff --git a/tests/baselines/reference/generatorTypeCheck28.symbols b/tests/baselines/reference/generatorTypeCheck28.symbols index 96ce1e27c63..b157d464292 100644 --- a/tests/baselines/reference/generatorTypeCheck28.symbols +++ b/tests/baselines/reference/generatorTypeCheck28.symbols @@ -1,7 +1,7 @@ === tests/cases/conformance/es6/yieldExpressions/generatorTypeCheck28.ts === function* g(): IterableIterator<(x: string) => number> { >g : Symbol(g, Decl(generatorTypeCheck28.ts, 0, 0)) ->IterableIterator : Symbol(IterableIterator, Decl(lib.d.ts, 4373, 1)) +>IterableIterator : Symbol(IterableIterator, Decl(lib.d.ts, 4400, 1)) >x : Symbol(x, Decl(generatorTypeCheck28.ts, 0, 33)) yield * { diff --git a/tests/baselines/reference/generatorTypeCheck29.symbols b/tests/baselines/reference/generatorTypeCheck29.symbols index b01b97eb763..54a5cc0fdb6 100644 --- a/tests/baselines/reference/generatorTypeCheck29.symbols +++ b/tests/baselines/reference/generatorTypeCheck29.symbols @@ -1,8 +1,8 @@ === tests/cases/conformance/es6/yieldExpressions/generatorTypeCheck29.ts === function* g2(): Iterator number>> { >g2 : Symbol(g2, Decl(generatorTypeCheck29.ts, 0, 0)) ->Iterator : Symbol(Iterator, Decl(lib.d.ts, 4363, 1)) ->Iterable : Symbol(Iterable, Decl(lib.d.ts, 4369, 1)) +>Iterator : Symbol(Iterator, Decl(lib.d.ts, 4390, 1)) +>Iterable : Symbol(Iterable, Decl(lib.d.ts, 4396, 1)) >x : Symbol(x, Decl(generatorTypeCheck29.ts, 0, 35)) yield function* () { diff --git a/tests/baselines/reference/generatorTypeCheck3.symbols b/tests/baselines/reference/generatorTypeCheck3.symbols index 79a3164e2d2..5fdef53c6f3 100644 --- a/tests/baselines/reference/generatorTypeCheck3.symbols +++ b/tests/baselines/reference/generatorTypeCheck3.symbols @@ -1,5 +1,5 @@ === tests/cases/conformance/es6/yieldExpressions/generatorTypeCheck3.ts === function* g1(): IterableIterator { } >g1 : Symbol(g1, Decl(generatorTypeCheck3.ts, 0, 0)) ->IterableIterator : Symbol(IterableIterator, Decl(lib.d.ts, 4373, 1)) +>IterableIterator : Symbol(IterableIterator, Decl(lib.d.ts, 4400, 1)) diff --git a/tests/baselines/reference/generatorTypeCheck30.symbols b/tests/baselines/reference/generatorTypeCheck30.symbols index e337277aa43..d107c4bde19 100644 --- a/tests/baselines/reference/generatorTypeCheck30.symbols +++ b/tests/baselines/reference/generatorTypeCheck30.symbols @@ -1,8 +1,8 @@ === tests/cases/conformance/es6/yieldExpressions/generatorTypeCheck30.ts === function* g2(): Iterator number>> { >g2 : Symbol(g2, Decl(generatorTypeCheck30.ts, 0, 0)) ->Iterator : Symbol(Iterator, Decl(lib.d.ts, 4363, 1)) ->Iterable : Symbol(Iterable, Decl(lib.d.ts, 4369, 1)) +>Iterator : Symbol(Iterator, Decl(lib.d.ts, 4390, 1)) +>Iterable : Symbol(Iterable, Decl(lib.d.ts, 4396, 1)) >x : Symbol(x, Decl(generatorTypeCheck30.ts, 0, 35)) yield function* () { diff --git a/tests/baselines/reference/generatorTypeCheck45.symbols b/tests/baselines/reference/generatorTypeCheck45.symbols index 9cf40641ad6..bb24ffb1eb6 100644 --- a/tests/baselines/reference/generatorTypeCheck45.symbols +++ b/tests/baselines/reference/generatorTypeCheck45.symbols @@ -6,7 +6,7 @@ declare function foo(x: T, fun: () => Iterator<(x: T) => U>, fun2: (y: U) >x : Symbol(x, Decl(generatorTypeCheck45.ts, 0, 27)) >T : Symbol(T, Decl(generatorTypeCheck45.ts, 0, 21)) >fun : Symbol(fun, Decl(generatorTypeCheck45.ts, 0, 32)) ->Iterator : Symbol(Iterator, Decl(lib.d.ts, 4363, 1)) +>Iterator : Symbol(Iterator, Decl(lib.d.ts, 4390, 1)) >x : Symbol(x, Decl(generatorTypeCheck45.ts, 0, 54)) >T : Symbol(T, Decl(generatorTypeCheck45.ts, 0, 21)) >U : Symbol(U, Decl(generatorTypeCheck45.ts, 0, 23)) diff --git a/tests/baselines/reference/generatorTypeCheck46.symbols b/tests/baselines/reference/generatorTypeCheck46.symbols index 8b3bf966681..a6dd01be70f 100644 --- a/tests/baselines/reference/generatorTypeCheck46.symbols +++ b/tests/baselines/reference/generatorTypeCheck46.symbols @@ -6,7 +6,7 @@ declare function foo(x: T, fun: () => Iterable<(x: T) => U>, fun2: (y: U) >x : Symbol(x, Decl(generatorTypeCheck46.ts, 0, 27)) >T : Symbol(T, Decl(generatorTypeCheck46.ts, 0, 21)) >fun : Symbol(fun, Decl(generatorTypeCheck46.ts, 0, 32)) ->Iterable : Symbol(Iterable, Decl(lib.d.ts, 4369, 1)) +>Iterable : Symbol(Iterable, Decl(lib.d.ts, 4396, 1)) >x : Symbol(x, Decl(generatorTypeCheck46.ts, 0, 54)) >T : Symbol(T, Decl(generatorTypeCheck46.ts, 0, 21)) >U : Symbol(U, Decl(generatorTypeCheck46.ts, 0, 23)) diff --git a/tests/baselines/reference/genericBaseClassLiteralProperty.types b/tests/baselines/reference/genericBaseClassLiteralProperty.types index 87f1c55c42d..69468f9b679 100644 --- a/tests/baselines/reference/genericBaseClassLiteralProperty.types +++ b/tests/baselines/reference/genericBaseClassLiteralProperty.types @@ -23,14 +23,14 @@ class SubClass extends BaseClass { >x : number >this._getValue1() : number >this._getValue1 : () => number ->this : SubClass +>this : this >_getValue1 : () => number var y : number = this._getValue2(); >y : number >this._getValue2() : number >this._getValue2 : () => number ->this : SubClass +>this : this >_getValue2 : () => number } } diff --git a/tests/baselines/reference/genericBaseClassLiteralProperty2.types b/tests/baselines/reference/genericBaseClassLiteralProperty2.types index 271aa190037..d7d512165f0 100644 --- a/tests/baselines/reference/genericBaseClassLiteralProperty2.types +++ b/tests/baselines/reference/genericBaseClassLiteralProperty2.types @@ -16,7 +16,7 @@ class BaseCollection2 { this._itemsByKey = {}; >this._itemsByKey = {} : { [x: string]: undefined; } >this._itemsByKey : { [key: string]: TItem; } ->this : BaseCollection2 +>this : this >_itemsByKey : { [key: string]: TItem; } >{} : { [x: string]: undefined; } } @@ -36,7 +36,7 @@ class DataView2 extends BaseCollection2 { >this._itemsByKey['dummy'] = item : CollectionItem2 >this._itemsByKey['dummy'] : CollectionItem2 >this._itemsByKey : { [key: string]: CollectionItem2; } ->this : DataView2 +>this : this >_itemsByKey : { [key: string]: CollectionItem2; } >'dummy' : string >item : CollectionItem2 diff --git a/tests/baselines/reference/genericClassWithStaticFactory.symbols b/tests/baselines/reference/genericClassWithStaticFactory.symbols index 37ee9c638e9..47b7f5f736b 100644 --- a/tests/baselines/reference/genericClassWithStaticFactory.symbols +++ b/tests/baselines/reference/genericClassWithStaticFactory.symbols @@ -52,23 +52,23 @@ module Editor { >data : Symbol(data, Decl(genericClassWithStaticFactory.ts, 12, 19)) this.prev.next = entry; ->this.prev.next : Symbol(next, Decl(genericClassWithStaticFactory.ts, 2, 26)) +>this.prev.next : Symbol(List.next, Decl(genericClassWithStaticFactory.ts, 2, 26)) >this.prev : Symbol(prev, Decl(genericClassWithStaticFactory.ts, 3, 29)) >this : Symbol(List, Decl(genericClassWithStaticFactory.ts, 0, 15)) >prev : Symbol(prev, Decl(genericClassWithStaticFactory.ts, 3, 29)) ->next : Symbol(next, Decl(genericClassWithStaticFactory.ts, 2, 26)) +>next : Symbol(List.next, Decl(genericClassWithStaticFactory.ts, 2, 26)) >entry : Symbol(entry, Decl(genericClassWithStaticFactory.ts, 13, 15)) entry.next = this; ->entry.next : Symbol(next, Decl(genericClassWithStaticFactory.ts, 2, 26)) +>entry.next : Symbol(List.next, Decl(genericClassWithStaticFactory.ts, 2, 26)) >entry : Symbol(entry, Decl(genericClassWithStaticFactory.ts, 13, 15)) ->next : Symbol(next, Decl(genericClassWithStaticFactory.ts, 2, 26)) +>next : Symbol(List.next, Decl(genericClassWithStaticFactory.ts, 2, 26)) >this : Symbol(List, Decl(genericClassWithStaticFactory.ts, 0, 15)) entry.prev = this.prev; ->entry.prev : Symbol(prev, Decl(genericClassWithStaticFactory.ts, 3, 29)) +>entry.prev : Symbol(List.prev, Decl(genericClassWithStaticFactory.ts, 3, 29)) >entry : Symbol(entry, Decl(genericClassWithStaticFactory.ts, 13, 15)) ->prev : Symbol(prev, Decl(genericClassWithStaticFactory.ts, 3, 29)) +>prev : Symbol(List.prev, Decl(genericClassWithStaticFactory.ts, 3, 29)) >this.prev : Symbol(prev, Decl(genericClassWithStaticFactory.ts, 3, 29)) >this : Symbol(List, Decl(genericClassWithStaticFactory.ts, 0, 15)) >prev : Symbol(prev, Decl(genericClassWithStaticFactory.ts, 3, 29)) @@ -102,16 +102,16 @@ module Editor { for (i = 0; !(entry.isHead); i++) { >i : Symbol(i, Decl(genericClassWithStaticFactory.ts, 24, 15)) ->entry.isHead : Symbol(isHead, Decl(genericClassWithStaticFactory.ts, 7, 20)) +>entry.isHead : Symbol(List.isHead, Decl(genericClassWithStaticFactory.ts, 7, 20)) >entry : Symbol(entry, Decl(genericClassWithStaticFactory.ts, 23, 15)) ->isHead : Symbol(isHead, Decl(genericClassWithStaticFactory.ts, 7, 20)) +>isHead : Symbol(List.isHead, Decl(genericClassWithStaticFactory.ts, 7, 20)) >i : Symbol(i, Decl(genericClassWithStaticFactory.ts, 24, 15)) entry = entry.next; >entry : Symbol(entry, Decl(genericClassWithStaticFactory.ts, 23, 15)) ->entry.next : Symbol(next, Decl(genericClassWithStaticFactory.ts, 2, 26)) +>entry.next : Symbol(List.next, Decl(genericClassWithStaticFactory.ts, 2, 26)) >entry : Symbol(entry, Decl(genericClassWithStaticFactory.ts, 23, 15)) ->next : Symbol(next, Decl(genericClassWithStaticFactory.ts, 2, 26)) +>next : Symbol(List.next, Decl(genericClassWithStaticFactory.ts, 2, 26)) } return (i); @@ -138,11 +138,11 @@ module Editor { >isEmpty : Symbol(isEmpty, Decl(genericClassWithStaticFactory.ts, 32, 9)) { return this.next.data; ->this.next.data : Symbol(data, Decl(genericClassWithStaticFactory.ts, 7, 43)) +>this.next.data : Symbol(List.data, Decl(genericClassWithStaticFactory.ts, 7, 43)) >this.next : Symbol(next, Decl(genericClassWithStaticFactory.ts, 2, 26)) >this : Symbol(List, Decl(genericClassWithStaticFactory.ts, 0, 15)) >next : Symbol(next, Decl(genericClassWithStaticFactory.ts, 2, 26)) ->data : Symbol(data, Decl(genericClassWithStaticFactory.ts, 7, 43)) +>data : Symbol(List.data, Decl(genericClassWithStaticFactory.ts, 7, 43)) } else { return null; @@ -156,22 +156,22 @@ module Editor { >T : Symbol(T, Decl(genericClassWithStaticFactory.ts, 2, 22)) entry.isHead = false; ->entry.isHead : Symbol(isHead, Decl(genericClassWithStaticFactory.ts, 7, 20)) +>entry.isHead : Symbol(List.isHead, Decl(genericClassWithStaticFactory.ts, 7, 20)) >entry : Symbol(entry, Decl(genericClassWithStaticFactory.ts, 48, 25)) ->isHead : Symbol(isHead, Decl(genericClassWithStaticFactory.ts, 7, 20)) +>isHead : Symbol(List.isHead, Decl(genericClassWithStaticFactory.ts, 7, 20)) entry.next = this.next; ->entry.next : Symbol(next, Decl(genericClassWithStaticFactory.ts, 2, 26)) +>entry.next : Symbol(List.next, Decl(genericClassWithStaticFactory.ts, 2, 26)) >entry : Symbol(entry, Decl(genericClassWithStaticFactory.ts, 48, 25)) ->next : Symbol(next, Decl(genericClassWithStaticFactory.ts, 2, 26)) +>next : Symbol(List.next, Decl(genericClassWithStaticFactory.ts, 2, 26)) >this.next : Symbol(next, Decl(genericClassWithStaticFactory.ts, 2, 26)) >this : Symbol(List, Decl(genericClassWithStaticFactory.ts, 0, 15)) >next : Symbol(next, Decl(genericClassWithStaticFactory.ts, 2, 26)) entry.prev = this; ->entry.prev : Symbol(prev, Decl(genericClassWithStaticFactory.ts, 3, 29)) +>entry.prev : Symbol(List.prev, Decl(genericClassWithStaticFactory.ts, 3, 29)) >entry : Symbol(entry, Decl(genericClassWithStaticFactory.ts, 48, 25)) ->prev : Symbol(prev, Decl(genericClassWithStaticFactory.ts, 3, 29)) +>prev : Symbol(List.prev, Decl(genericClassWithStaticFactory.ts, 3, 29)) >this : Symbol(List, Decl(genericClassWithStaticFactory.ts, 0, 15)) this.next = entry; @@ -181,11 +181,11 @@ module Editor { >entry : Symbol(entry, Decl(genericClassWithStaticFactory.ts, 48, 25)) entry.next.prev = entry; // entry.next.prev does not show intellisense, but entry.prev.prev does ->entry.next.prev : Symbol(prev, Decl(genericClassWithStaticFactory.ts, 3, 29)) ->entry.next : Symbol(next, Decl(genericClassWithStaticFactory.ts, 2, 26)) +>entry.next.prev : Symbol(List.prev, Decl(genericClassWithStaticFactory.ts, 3, 29)) +>entry.next : Symbol(List.next, Decl(genericClassWithStaticFactory.ts, 2, 26)) >entry : Symbol(entry, Decl(genericClassWithStaticFactory.ts, 48, 25)) ->next : Symbol(next, Decl(genericClassWithStaticFactory.ts, 2, 26)) ->prev : Symbol(prev, Decl(genericClassWithStaticFactory.ts, 3, 29)) +>next : Symbol(List.next, Decl(genericClassWithStaticFactory.ts, 2, 26)) +>prev : Symbol(List.prev, Decl(genericClassWithStaticFactory.ts, 3, 29)) >entry : Symbol(entry, Decl(genericClassWithStaticFactory.ts, 48, 25)) } @@ -204,28 +204,28 @@ module Editor { >data : Symbol(data, Decl(genericClassWithStaticFactory.ts, 56, 20)) entry.data = data; ->entry.data : Symbol(data, Decl(genericClassWithStaticFactory.ts, 7, 43)) +>entry.data : Symbol(List.data, Decl(genericClassWithStaticFactory.ts, 7, 43)) >entry : Symbol(entry, Decl(genericClassWithStaticFactory.ts, 57, 15)) ->data : Symbol(data, Decl(genericClassWithStaticFactory.ts, 7, 43)) +>data : Symbol(List.data, Decl(genericClassWithStaticFactory.ts, 7, 43)) >data : Symbol(data, Decl(genericClassWithStaticFactory.ts, 56, 20)) entry.isHead = false; ->entry.isHead : Symbol(isHead, Decl(genericClassWithStaticFactory.ts, 7, 20)) +>entry.isHead : Symbol(List.isHead, Decl(genericClassWithStaticFactory.ts, 7, 20)) >entry : Symbol(entry, Decl(genericClassWithStaticFactory.ts, 57, 15)) ->isHead : Symbol(isHead, Decl(genericClassWithStaticFactory.ts, 7, 20)) +>isHead : Symbol(List.isHead, Decl(genericClassWithStaticFactory.ts, 7, 20)) entry.next = this.next; ->entry.next : Symbol(next, Decl(genericClassWithStaticFactory.ts, 2, 26)) +>entry.next : Symbol(List.next, Decl(genericClassWithStaticFactory.ts, 2, 26)) >entry : Symbol(entry, Decl(genericClassWithStaticFactory.ts, 57, 15)) ->next : Symbol(next, Decl(genericClassWithStaticFactory.ts, 2, 26)) +>next : Symbol(List.next, Decl(genericClassWithStaticFactory.ts, 2, 26)) >this.next : Symbol(next, Decl(genericClassWithStaticFactory.ts, 2, 26)) >this : Symbol(List, Decl(genericClassWithStaticFactory.ts, 0, 15)) >next : Symbol(next, Decl(genericClassWithStaticFactory.ts, 2, 26)) entry.prev = this; ->entry.prev : Symbol(prev, Decl(genericClassWithStaticFactory.ts, 3, 29)) +>entry.prev : Symbol(List.prev, Decl(genericClassWithStaticFactory.ts, 3, 29)) >entry : Symbol(entry, Decl(genericClassWithStaticFactory.ts, 57, 15)) ->prev : Symbol(prev, Decl(genericClassWithStaticFactory.ts, 3, 29)) +>prev : Symbol(List.prev, Decl(genericClassWithStaticFactory.ts, 3, 29)) >this : Symbol(List, Decl(genericClassWithStaticFactory.ts, 0, 15)) this.next = entry; @@ -235,11 +235,11 @@ module Editor { >entry : Symbol(entry, Decl(genericClassWithStaticFactory.ts, 57, 15)) entry.next.prev = entry; // entry.next.prev does not show intellisense, but entry.prev.prev does ->entry.next.prev : Symbol(prev, Decl(genericClassWithStaticFactory.ts, 3, 29)) ->entry.next : Symbol(next, Decl(genericClassWithStaticFactory.ts, 2, 26)) +>entry.next.prev : Symbol(List.prev, Decl(genericClassWithStaticFactory.ts, 3, 29)) +>entry.next : Symbol(List.next, Decl(genericClassWithStaticFactory.ts, 2, 26)) >entry : Symbol(entry, Decl(genericClassWithStaticFactory.ts, 57, 15)) ->next : Symbol(next, Decl(genericClassWithStaticFactory.ts, 2, 26)) ->prev : Symbol(prev, Decl(genericClassWithStaticFactory.ts, 3, 29)) +>next : Symbol(List.next, Decl(genericClassWithStaticFactory.ts, 2, 26)) +>prev : Symbol(List.prev, Decl(genericClassWithStaticFactory.ts, 3, 29)) >entry : Symbol(entry, Decl(genericClassWithStaticFactory.ts, 57, 15)) } @@ -252,11 +252,11 @@ module Editor { >T : Symbol(T, Decl(genericClassWithStaticFactory.ts, 2, 22)) if (this.next.isHead) { ->this.next.isHead : Symbol(isHead, Decl(genericClassWithStaticFactory.ts, 7, 20)) +>this.next.isHead : Symbol(List.isHead, Decl(genericClassWithStaticFactory.ts, 7, 20)) >this.next : Symbol(next, Decl(genericClassWithStaticFactory.ts, 2, 26)) >this : Symbol(List, Decl(genericClassWithStaticFactory.ts, 0, 15)) >next : Symbol(next, Decl(genericClassWithStaticFactory.ts, 2, 26)) ->isHead : Symbol(isHead, Decl(genericClassWithStaticFactory.ts, 7, 20)) +>isHead : Symbol(List.isHead, Decl(genericClassWithStaticFactory.ts, 7, 20)) return null; } @@ -282,28 +282,28 @@ module Editor { >T : Symbol(T, Decl(genericClassWithStaticFactory.ts, 2, 22)) entry.isHead = false; ->entry.isHead : Symbol(isHead, Decl(genericClassWithStaticFactory.ts, 7, 20)) +>entry.isHead : Symbol(List.isHead, Decl(genericClassWithStaticFactory.ts, 7, 20)) >entry : Symbol(entry, Decl(genericClassWithStaticFactory.ts, 75, 27)) ->isHead : Symbol(isHead, Decl(genericClassWithStaticFactory.ts, 7, 20)) +>isHead : Symbol(List.isHead, Decl(genericClassWithStaticFactory.ts, 7, 20)) this.prev.next = entry; ->this.prev.next : Symbol(next, Decl(genericClassWithStaticFactory.ts, 2, 26)) +>this.prev.next : Symbol(List.next, Decl(genericClassWithStaticFactory.ts, 2, 26)) >this.prev : Symbol(prev, Decl(genericClassWithStaticFactory.ts, 3, 29)) >this : Symbol(List, Decl(genericClassWithStaticFactory.ts, 0, 15)) >prev : Symbol(prev, Decl(genericClassWithStaticFactory.ts, 3, 29)) ->next : Symbol(next, Decl(genericClassWithStaticFactory.ts, 2, 26)) +>next : Symbol(List.next, Decl(genericClassWithStaticFactory.ts, 2, 26)) >entry : Symbol(entry, Decl(genericClassWithStaticFactory.ts, 75, 27)) entry.next = this; ->entry.next : Symbol(next, Decl(genericClassWithStaticFactory.ts, 2, 26)) +>entry.next : Symbol(List.next, Decl(genericClassWithStaticFactory.ts, 2, 26)) >entry : Symbol(entry, Decl(genericClassWithStaticFactory.ts, 75, 27)) ->next : Symbol(next, Decl(genericClassWithStaticFactory.ts, 2, 26)) +>next : Symbol(List.next, Decl(genericClassWithStaticFactory.ts, 2, 26)) >this : Symbol(List, Decl(genericClassWithStaticFactory.ts, 0, 15)) entry.prev = this.prev; ->entry.prev : Symbol(prev, Decl(genericClassWithStaticFactory.ts, 3, 29)) +>entry.prev : Symbol(List.prev, Decl(genericClassWithStaticFactory.ts, 3, 29)) >entry : Symbol(entry, Decl(genericClassWithStaticFactory.ts, 75, 27)) ->prev : Symbol(prev, Decl(genericClassWithStaticFactory.ts, 3, 29)) +>prev : Symbol(List.prev, Decl(genericClassWithStaticFactory.ts, 3, 29)) >this.prev : Symbol(prev, Decl(genericClassWithStaticFactory.ts, 3, 29)) >this : Symbol(List, Decl(genericClassWithStaticFactory.ts, 0, 15)) >prev : Symbol(prev, Decl(genericClassWithStaticFactory.ts, 3, 29)) @@ -337,17 +337,17 @@ module Editor { >data : Symbol(data, Decl(genericClassWithStaticFactory.ts, 84, 27)) entry.next = this.next; ->entry.next : Symbol(next, Decl(genericClassWithStaticFactory.ts, 2, 26)) +>entry.next : Symbol(List.next, Decl(genericClassWithStaticFactory.ts, 2, 26)) >entry : Symbol(entry, Decl(genericClassWithStaticFactory.ts, 85, 15)) ->next : Symbol(next, Decl(genericClassWithStaticFactory.ts, 2, 26)) +>next : Symbol(List.next, Decl(genericClassWithStaticFactory.ts, 2, 26)) >this.next : Symbol(next, Decl(genericClassWithStaticFactory.ts, 2, 26)) >this : Symbol(List, Decl(genericClassWithStaticFactory.ts, 0, 15)) >next : Symbol(next, Decl(genericClassWithStaticFactory.ts, 2, 26)) entry.prev = this; ->entry.prev : Symbol(prev, Decl(genericClassWithStaticFactory.ts, 3, 29)) +>entry.prev : Symbol(List.prev, Decl(genericClassWithStaticFactory.ts, 3, 29)) >entry : Symbol(entry, Decl(genericClassWithStaticFactory.ts, 85, 15)) ->prev : Symbol(prev, Decl(genericClassWithStaticFactory.ts, 3, 29)) +>prev : Symbol(List.prev, Decl(genericClassWithStaticFactory.ts, 3, 29)) >this : Symbol(List, Decl(genericClassWithStaticFactory.ts, 0, 15)) this.next = entry; @@ -357,11 +357,11 @@ module Editor { >entry : Symbol(entry, Decl(genericClassWithStaticFactory.ts, 85, 15)) entry.next.prev = entry;// entry.next.prev does not show intellisense, but entry.prev.prev does ->entry.next.prev : Symbol(prev, Decl(genericClassWithStaticFactory.ts, 3, 29)) ->entry.next : Symbol(next, Decl(genericClassWithStaticFactory.ts, 2, 26)) +>entry.next.prev : Symbol(List.prev, Decl(genericClassWithStaticFactory.ts, 3, 29)) +>entry.next : Symbol(List.next, Decl(genericClassWithStaticFactory.ts, 2, 26)) >entry : Symbol(entry, Decl(genericClassWithStaticFactory.ts, 85, 15)) ->next : Symbol(next, Decl(genericClassWithStaticFactory.ts, 2, 26)) ->prev : Symbol(prev, Decl(genericClassWithStaticFactory.ts, 3, 29)) +>next : Symbol(List.next, Decl(genericClassWithStaticFactory.ts, 2, 26)) +>prev : Symbol(List.prev, Decl(genericClassWithStaticFactory.ts, 3, 29)) >entry : Symbol(entry, Decl(genericClassWithStaticFactory.ts, 85, 15)) return entry; @@ -377,23 +377,23 @@ module Editor { >T : Symbol(T, Decl(genericClassWithStaticFactory.ts, 2, 22)) this.prev.next = entry; ->this.prev.next : Symbol(next, Decl(genericClassWithStaticFactory.ts, 2, 26)) +>this.prev.next : Symbol(List.next, Decl(genericClassWithStaticFactory.ts, 2, 26)) >this.prev : Symbol(prev, Decl(genericClassWithStaticFactory.ts, 3, 29)) >this : Symbol(List, Decl(genericClassWithStaticFactory.ts, 0, 15)) >prev : Symbol(prev, Decl(genericClassWithStaticFactory.ts, 3, 29)) ->next : Symbol(next, Decl(genericClassWithStaticFactory.ts, 2, 26)) +>next : Symbol(List.next, Decl(genericClassWithStaticFactory.ts, 2, 26)) >entry : Symbol(entry, Decl(genericClassWithStaticFactory.ts, 93, 33)) entry.next = this; ->entry.next : Symbol(next, Decl(genericClassWithStaticFactory.ts, 2, 26)) +>entry.next : Symbol(List.next, Decl(genericClassWithStaticFactory.ts, 2, 26)) >entry : Symbol(entry, Decl(genericClassWithStaticFactory.ts, 93, 33)) ->next : Symbol(next, Decl(genericClassWithStaticFactory.ts, 2, 26)) +>next : Symbol(List.next, Decl(genericClassWithStaticFactory.ts, 2, 26)) >this : Symbol(List, Decl(genericClassWithStaticFactory.ts, 0, 15)) entry.prev = this.prev; ->entry.prev : Symbol(prev, Decl(genericClassWithStaticFactory.ts, 3, 29)) +>entry.prev : Symbol(List.prev, Decl(genericClassWithStaticFactory.ts, 3, 29)) >entry : Symbol(entry, Decl(genericClassWithStaticFactory.ts, 93, 33)) ->prev : Symbol(prev, Decl(genericClassWithStaticFactory.ts, 3, 29)) +>prev : Symbol(List.prev, Decl(genericClassWithStaticFactory.ts, 3, 29)) >this.prev : Symbol(prev, Decl(genericClassWithStaticFactory.ts, 3, 29)) >this : Symbol(List, Decl(genericClassWithStaticFactory.ts, 0, 15)) >prev : Symbol(prev, Decl(genericClassWithStaticFactory.ts, 3, 29)) diff --git a/tests/baselines/reference/genericClassWithStaticFactory.types b/tests/baselines/reference/genericClassWithStaticFactory.types index 34d0c4aeaae..2daad9003eb 100644 --- a/tests/baselines/reference/genericClassWithStaticFactory.types +++ b/tests/baselines/reference/genericClassWithStaticFactory.types @@ -29,7 +29,7 @@ module Editor { this.listFactory = new ListFactory(); >this.listFactory = new ListFactory() : ListFactory >this.listFactory : ListFactory ->this : List +>this : this >listFactory : ListFactory >new ListFactory() : ListFactory >ListFactory : typeof ListFactory @@ -49,7 +49,7 @@ module Editor { >this.listFactory.MakeEntry(data) : List >this.listFactory.MakeEntry : (data: T) => List >this.listFactory : ListFactory ->this : List +>this : this >listFactory : ListFactory >MakeEntry : (data: T) => List >data : T @@ -58,17 +58,17 @@ module Editor { >this.prev.next = entry : List >this.prev.next : List >this.prev : List ->this : List +>this : this >prev : List >next : List >entry : List entry.next = this; ->entry.next = this : List +>entry.next = this : this >entry.next : List >entry : List >next : List ->this : List +>this : this entry.prev = this.prev; >entry.prev = this.prev : List @@ -76,13 +76,13 @@ module Editor { >entry : List >prev : List >this.prev : List ->this : List +>this : this >prev : List this.prev = entry; >this.prev = entry : List >this.prev : List ->this : List +>this : this >prev : List >entry : List @@ -105,7 +105,7 @@ module Editor { >entry = this.next : List >entry : List >this.next : List ->this : List +>this : this >next : List for (i = 0; !(entry.isHead); i++) { @@ -140,9 +140,9 @@ module Editor { >(this.next == this) : boolean >this.next == this : boolean >this.next : List ->this : List +>this : this >next : List ->this : List +>this : this } public first(): T { @@ -152,13 +152,13 @@ module Editor { if (this.isEmpty()) >this.isEmpty() : boolean >this.isEmpty : () => boolean ->this : List +>this : this >isEmpty : () => boolean { return this.next.data; >this.next.data : T >this.next : List ->this : List +>this : this >next : List >data : T } @@ -187,20 +187,20 @@ module Editor { >entry : List >next : List >this.next : List ->this : List +>this : this >next : List entry.prev = this; ->entry.prev = this : List +>entry.prev = this : this >entry.prev : List >entry : List >prev : List ->this : List +>this : this this.next = entry; >this.next = entry : List >this.next : List ->this : List +>this : this >next : List >entry : List @@ -224,7 +224,7 @@ module Editor { >this.listFactory.MakeEntry(data) : List >this.listFactory.MakeEntry : (data: T) => List >this.listFactory : ListFactory ->this : List +>this : this >listFactory : ListFactory >MakeEntry : (data: T) => List >data : T @@ -249,20 +249,20 @@ module Editor { >entry : List >next : List >this.next : List ->this : List +>this : this >next : List entry.prev = this; ->entry.prev = this : List +>entry.prev = this : this >entry.prev : List >entry : List >prev : List ->this : List +>this : this this.next = entry; >this.next = entry : List >this.next : List ->this : List +>this : this >next : List >entry : List @@ -287,7 +287,7 @@ module Editor { if (this.next.isHead) { >this.next.isHead : boolean >this.next : List ->this : List +>this : this >next : List >isHead : boolean @@ -299,11 +299,11 @@ module Editor { >this.listFactory.RemoveEntry(this.next) : List >this.listFactory.RemoveEntry : (entry: List) => List >this.listFactory : ListFactory ->this : List +>this : this >listFactory : ListFactory >RemoveEntry : (entry: List) => List >this.next : List ->this : List +>this : this >next : List } } @@ -327,17 +327,17 @@ module Editor { >this.prev.next = entry : List >this.prev.next : List >this.prev : List ->this : List +>this : this >prev : List >next : List >entry : List entry.next = this; ->entry.next = this : List +>entry.next = this : this >entry.next : List >entry : List >next : List ->this : List +>this : this entry.prev = this.prev; >entry.prev = this.prev : List @@ -345,13 +345,13 @@ module Editor { >entry : List >prev : List >this.prev : List ->this : List +>this : this >prev : List this.prev = entry; >this.prev = entry : List >this.prev : List ->this : List +>this : this >prev : List >entry : List @@ -373,7 +373,7 @@ module Editor { >this.listFactory.MakeEntry(data) : List >this.listFactory.MakeEntry : (data: T) => List >this.listFactory : ListFactory ->this : List +>this : this >listFactory : ListFactory >MakeEntry : (data: T) => List >data : T @@ -384,20 +384,20 @@ module Editor { >entry : List >next : List >this.next : List ->this : List +>this : this >next : List entry.prev = this; ->entry.prev = this : List +>entry.prev = this : this >entry.prev : List >entry : List >prev : List ->this : List +>this : this this.next = entry; >this.next = entry : List >this.next : List ->this : List +>this : this >next : List >entry : List @@ -426,17 +426,17 @@ module Editor { >this.prev.next = entry : List >this.prev.next : List >this.prev : List ->this : List +>this : this >prev : List >next : List >entry : List entry.next = this; ->entry.next = this : List +>entry.next = this : this >entry.next : List >entry : List >next : List ->this : List +>this : this entry.prev = this.prev; >entry.prev = this.prev : List @@ -444,13 +444,13 @@ module Editor { >entry : List >prev : List >this.prev : List ->this : List +>this : this >prev : List this.prev = entry; >this.prev = entry : List >this.prev : List ->this : List +>this : this >prev : List >entry : List @@ -470,7 +470,7 @@ module Editor { >this.listFactory.MakeEntry(data) : List >this.listFactory.MakeEntry : (data: T) => List >this.listFactory : ListFactory ->this : List +>this : this >listFactory : ListFactory >MakeEntry : (data: T) => List >data : T @@ -478,7 +478,7 @@ module Editor { return this.insertEntryBefore(entry); >this.insertEntryBefore(entry) : List >this.insertEntryBefore : (entry: List) => List ->this : List +>this : this >insertEntryBefore : (entry: List) => List >entry : List } diff --git a/tests/baselines/reference/genericClasses4.types b/tests/baselines/reference/genericClasses4.types index ac3d05be84d..3a2ae3b997c 100644 --- a/tests/baselines/reference/genericClasses4.types +++ b/tests/baselines/reference/genericClasses4.types @@ -26,7 +26,7 @@ class Vec2_T >f(this.x) : B >f : (a: A) => B >this.x : A ->this : Vec2_T +>this : this >x : A var y:B = f(this.y); @@ -35,7 +35,7 @@ class Vec2_T >f(this.y) : B >f : (a: A) => B >this.y : A ->this : Vec2_T +>this : this >y : A var retval: Vec2_T = new Vec2_T(x, y); @@ -69,7 +69,7 @@ class Vec2_T >f : Vec2_T<(a: A) => B> >x : (a: A) => B >this.x : A ->this : Vec2_T +>this : this >x : A var y:B = f.y(this.y); @@ -80,7 +80,7 @@ class Vec2_T >f : Vec2_T<(a: A) => B> >y : (a: A) => B >this.y : A ->this : Vec2_T +>this : this >y : A var retval: Vec2_T = new Vec2_T(x, y); diff --git a/tests/baselines/reference/genericClassesInModule2.types b/tests/baselines/reference/genericClassesInModule2.types index 5da8c43097f..18c83d9d725 100644 --- a/tests/baselines/reference/genericClassesInModule2.types +++ b/tests/baselines/reference/genericClassesInModule2.types @@ -10,10 +10,10 @@ export class A{ >T1 : T1 var child = new B(this); ->child : B> ->new B(this) : B> +>child : B +>new B(this) : B >B : typeof B ->this : A +>this : this } AAA( callback: (self: A) => void) { >AAA : (callback: (self: A) => void) => void @@ -23,10 +23,10 @@ export class A{ >T1 : T1 var child = new B(this); ->child : B> ->new B(this) : B> +>child : B +>new B(this) : B >B : typeof B ->this : A +>this : this } } diff --git a/tests/baselines/reference/genericConstraintOnExtendedBuiltinTypes.types b/tests/baselines/reference/genericConstraintOnExtendedBuiltinTypes.types index 9a4b209bc97..f0396074b94 100644 --- a/tests/baselines/reference/genericConstraintOnExtendedBuiltinTypes.types +++ b/tests/baselines/reference/genericConstraintOnExtendedBuiltinTypes.types @@ -37,7 +37,7 @@ module EndGate.Tweening { this._from = from.Clone(); >this._from = from.Clone() : any >this._from : T ->this : Tween +>this : this >_from : T >from.Clone() : any >from.Clone : () => any diff --git a/tests/baselines/reference/genericConstraintOnExtendedBuiltinTypes2.types b/tests/baselines/reference/genericConstraintOnExtendedBuiltinTypes2.types index ba42e42ae0c..3745a5f6a17 100644 --- a/tests/baselines/reference/genericConstraintOnExtendedBuiltinTypes2.types +++ b/tests/baselines/reference/genericConstraintOnExtendedBuiltinTypes2.types @@ -36,7 +36,7 @@ module EndGate.Tweening { this._from = from.Clone(); >this._from = from.Clone() : any >this._from : T ->this : Tween +>this : this >_from : T >from.Clone() : any >from.Clone : () => any diff --git a/tests/baselines/reference/genericInstanceOf.types b/tests/baselines/reference/genericInstanceOf.types index 726fa38fbf8..3c08c35e44a 100644 --- a/tests/baselines/reference/genericInstanceOf.types +++ b/tests/baselines/reference/genericInstanceOf.types @@ -21,10 +21,10 @@ class C { if (this.a instanceof this.b) { >this.a instanceof this.b : boolean >this.a : T ->this : C +>this : this >a : T >this.b : F ->this : C +>this : this >b : F } } diff --git a/tests/baselines/reference/genericTypeWithCallableMembers.types b/tests/baselines/reference/genericTypeWithCallableMembers.types index e0068d5ff2b..8f62f077d54 100644 --- a/tests/baselines/reference/genericTypeWithCallableMembers.types +++ b/tests/baselines/reference/genericTypeWithCallableMembers.types @@ -24,14 +24,14 @@ class C { >x : Constructable >new this.data() : Constructable >this.data : T ->this : C +>this : this >data : T var x2 = new this.data2(); // was error, shouldn't be >x2 : Constructable >new this.data2() : Constructable >this.data2 : Constructable ->this : C +>this : this >data2 : Constructable } } diff --git a/tests/baselines/reference/genericWithCallSignatures1.types b/tests/baselines/reference/genericWithCallSignatures1.types index b55b4bbc64b..b4a12129027 100644 --- a/tests/baselines/reference/genericWithCallSignatures1.types +++ b/tests/baselines/reference/genericWithCallSignatures1.types @@ -15,7 +15,7 @@ class MyClass { > this.callableThing() : string >this.callableThing() : string >this.callableThing : CallableExtention ->this : MyClass +>this : this >callableThing : CallableExtention } } diff --git a/tests/baselines/reference/genericWithIndexerOfTypeParameterType1.types b/tests/baselines/reference/genericWithIndexerOfTypeParameterType1.types index 3e281f6072a..337993dc2a6 100644 --- a/tests/baselines/reference/genericWithIndexerOfTypeParameterType1.types +++ b/tests/baselines/reference/genericWithIndexerOfTypeParameterType1.types @@ -15,7 +15,7 @@ class LazyArray { return this.objects; >this.objects : { [objectId: string]: T; } ->this : LazyArray +>this : this >objects : { [objectId: string]: T; } } } diff --git a/tests/baselines/reference/giant.errors.txt b/tests/baselines/reference/giant.errors.txt index 1d623870d63..2c7e6f505bd 100644 --- a/tests/baselines/reference/giant.errors.txt +++ b/tests/baselines/reference/giant.errors.txt @@ -44,7 +44,7 @@ tests/cases/compiler/giant.ts(125,10): error TS2304: Cannot find name 'p'. tests/cases/compiler/giant.ts(126,9): error TS1021: An index signature must have a type annotation. tests/cases/compiler/giant.ts(127,10): error TS1096: An index signature must have exactly one parameter. tests/cases/compiler/giant.ts(140,9): error TS2386: Overload signatures must all be optional or required. -tests/cases/compiler/giant.ts(154,39): error TS1184: An implementation cannot be declared in ambient contexts. +tests/cases/compiler/giant.ts(154,39): error TS1183: An implementation cannot be declared in ambient contexts. tests/cases/compiler/giant.ts(166,16): error TS2300: Duplicate identifier 'pgF'. tests/cases/compiler/giant.ts(167,20): error TS1056: Accessors are only available when targeting ECMAScript 5 and higher. tests/cases/compiler/giant.ts(167,20): error TS2300: Duplicate identifier 'pgF'. @@ -68,39 +68,39 @@ tests/cases/compiler/giant.ts(204,10): error TS2304: Cannot find name 'p'. tests/cases/compiler/giant.ts(205,9): error TS1021: An index signature must have a type annotation. tests/cases/compiler/giant.ts(206,10): error TS1096: An index signature must have exactly one parameter. tests/cases/compiler/giant.ts(219,9): error TS2386: Overload signatures must all be optional or required. -tests/cases/compiler/giant.ts(233,39): error TS1184: An implementation cannot be declared in ambient contexts. -tests/cases/compiler/giant.ts(238,35): error TS1184: An implementation cannot be declared in ambient contexts. -tests/cases/compiler/giant.ts(240,24): error TS1184: An implementation cannot be declared in ambient contexts. -tests/cases/compiler/giant.ts(243,21): error TS1184: An implementation cannot be declared in ambient contexts. -tests/cases/compiler/giant.ts(244,22): error TS1184: An implementation cannot be declared in ambient contexts. +tests/cases/compiler/giant.ts(233,39): error TS1183: An implementation cannot be declared in ambient contexts. +tests/cases/compiler/giant.ts(238,35): error TS1183: An implementation cannot be declared in ambient contexts. +tests/cases/compiler/giant.ts(240,24): error TS1183: An implementation cannot be declared in ambient contexts. +tests/cases/compiler/giant.ts(243,21): error TS1183: An implementation cannot be declared in ambient contexts. +tests/cases/compiler/giant.ts(244,22): error TS1183: An implementation cannot be declared in ambient contexts. tests/cases/compiler/giant.ts(245,16): error TS2300: Duplicate identifier 'pgF'. -tests/cases/compiler/giant.ts(245,22): error TS1184: An implementation cannot be declared in ambient contexts. +tests/cases/compiler/giant.ts(245,22): error TS1183: An implementation cannot be declared in ambient contexts. tests/cases/compiler/giant.ts(246,20): error TS1056: Accessors are only available when targeting ECMAScript 5 and higher. tests/cases/compiler/giant.ts(246,20): error TS2300: Duplicate identifier 'pgF'. tests/cases/compiler/giant.ts(247,16): error TS2300: Duplicate identifier 'psF'. -tests/cases/compiler/giant.ts(247,31): error TS1184: An implementation cannot be declared in ambient contexts. +tests/cases/compiler/giant.ts(247,31): error TS1183: An implementation cannot be declared in ambient contexts. tests/cases/compiler/giant.ts(248,20): error TS1056: Accessors are only available when targeting ECMAScript 5 and higher. tests/cases/compiler/giant.ts(248,20): error TS2300: Duplicate identifier 'psF'. tests/cases/compiler/giant.ts(249,17): error TS2300: Duplicate identifier 'rgF'. -tests/cases/compiler/giant.ts(249,23): error TS1184: An implementation cannot be declared in ambient contexts. +tests/cases/compiler/giant.ts(249,23): error TS1183: An implementation cannot be declared in ambient contexts. tests/cases/compiler/giant.ts(250,21): error TS1056: Accessors are only available when targeting ECMAScript 5 and higher. tests/cases/compiler/giant.ts(250,21): error TS2300: Duplicate identifier 'rgF'. tests/cases/compiler/giant.ts(251,17): error TS2300: Duplicate identifier 'rsF'. -tests/cases/compiler/giant.ts(251,32): error TS1184: An implementation cannot be declared in ambient contexts. +tests/cases/compiler/giant.ts(251,32): error TS1183: An implementation cannot be declared in ambient contexts. tests/cases/compiler/giant.ts(252,21): error TS1056: Accessors are only available when targeting ECMAScript 5 and higher. tests/cases/compiler/giant.ts(252,21): error TS2300: Duplicate identifier 'rsF'. -tests/cases/compiler/giant.ts(254,21): error TS1184: An implementation cannot be declared in ambient contexts. +tests/cases/compiler/giant.ts(254,21): error TS1183: An implementation cannot be declared in ambient contexts. tests/cases/compiler/giant.ts(255,16): error TS2300: Duplicate identifier 'tsF'. -tests/cases/compiler/giant.ts(255,31): error TS1184: An implementation cannot be declared in ambient contexts. +tests/cases/compiler/giant.ts(255,31): error TS1183: An implementation cannot be declared in ambient contexts. tests/cases/compiler/giant.ts(256,20): error TS1056: Accessors are only available when targeting ECMAScript 5 and higher. tests/cases/compiler/giant.ts(256,20): error TS2300: Duplicate identifier 'tsF'. tests/cases/compiler/giant.ts(257,16): error TS2300: Duplicate identifier 'tgF'. -tests/cases/compiler/giant.ts(257,22): error TS1184: An implementation cannot be declared in ambient contexts. +tests/cases/compiler/giant.ts(257,22): error TS1183: An implementation cannot be declared in ambient contexts. tests/cases/compiler/giant.ts(258,20): error TS1056: Accessors are only available when targeting ECMAScript 5 and higher. tests/cases/compiler/giant.ts(258,20): error TS2300: Duplicate identifier 'tgF'. -tests/cases/compiler/giant.ts(262,22): error TS1184: An implementation cannot be declared in ambient contexts. +tests/cases/compiler/giant.ts(262,22): error TS1183: An implementation cannot be declared in ambient contexts. tests/cases/compiler/giant.ts(262,25): error TS1036: Statements are not allowed in ambient contexts. -tests/cases/compiler/giant.ts(267,30): error TS1184: An implementation cannot be declared in ambient contexts. +tests/cases/compiler/giant.ts(267,30): error TS1183: An implementation cannot be declared in ambient contexts. tests/cases/compiler/giant.ts(281,12): error TS2300: Duplicate identifier 'pgF'. tests/cases/compiler/giant.ts(282,16): error TS1056: Accessors are only available when targeting ECMAScript 5 and higher. tests/cases/compiler/giant.ts(282,16): error TS2300: Duplicate identifier 'pgF'. @@ -147,7 +147,7 @@ tests/cases/compiler/giant.ts(383,10): error TS2304: Cannot find name 'p'. tests/cases/compiler/giant.ts(384,9): error TS1021: An index signature must have a type annotation. tests/cases/compiler/giant.ts(385,10): error TS1096: An index signature must have exactly one parameter. tests/cases/compiler/giant.ts(398,9): error TS2386: Overload signatures must all be optional or required. -tests/cases/compiler/giant.ts(412,39): error TS1184: An implementation cannot be declared in ambient contexts. +tests/cases/compiler/giant.ts(412,39): error TS1183: An implementation cannot be declared in ambient contexts. tests/cases/compiler/giant.ts(424,16): error TS2300: Duplicate identifier 'pgF'. tests/cases/compiler/giant.ts(425,20): error TS1056: Accessors are only available when targeting ECMAScript 5 and higher. tests/cases/compiler/giant.ts(425,20): error TS2300: Duplicate identifier 'pgF'. @@ -171,98 +171,98 @@ tests/cases/compiler/giant.ts(462,10): error TS2304: Cannot find name 'p'. tests/cases/compiler/giant.ts(463,9): error TS1021: An index signature must have a type annotation. tests/cases/compiler/giant.ts(464,10): error TS1096: An index signature must have exactly one parameter. tests/cases/compiler/giant.ts(477,9): error TS2386: Overload signatures must all be optional or required. -tests/cases/compiler/giant.ts(491,39): error TS1184: An implementation cannot be declared in ambient contexts. -tests/cases/compiler/giant.ts(496,35): error TS1184: An implementation cannot be declared in ambient contexts. -tests/cases/compiler/giant.ts(498,24): error TS1184: An implementation cannot be declared in ambient contexts. -tests/cases/compiler/giant.ts(501,21): error TS1184: An implementation cannot be declared in ambient contexts. -tests/cases/compiler/giant.ts(502,22): error TS1184: An implementation cannot be declared in ambient contexts. +tests/cases/compiler/giant.ts(491,39): error TS1183: An implementation cannot be declared in ambient contexts. +tests/cases/compiler/giant.ts(496,35): error TS1183: An implementation cannot be declared in ambient contexts. +tests/cases/compiler/giant.ts(498,24): error TS1183: An implementation cannot be declared in ambient contexts. +tests/cases/compiler/giant.ts(501,21): error TS1183: An implementation cannot be declared in ambient contexts. +tests/cases/compiler/giant.ts(502,22): error TS1183: An implementation cannot be declared in ambient contexts. tests/cases/compiler/giant.ts(503,16): error TS2300: Duplicate identifier 'pgF'. -tests/cases/compiler/giant.ts(503,22): error TS1184: An implementation cannot be declared in ambient contexts. +tests/cases/compiler/giant.ts(503,22): error TS1183: An implementation cannot be declared in ambient contexts. tests/cases/compiler/giant.ts(504,20): error TS1056: Accessors are only available when targeting ECMAScript 5 and higher. tests/cases/compiler/giant.ts(504,20): error TS2300: Duplicate identifier 'pgF'. tests/cases/compiler/giant.ts(505,16): error TS2300: Duplicate identifier 'psF'. -tests/cases/compiler/giant.ts(505,31): error TS1184: An implementation cannot be declared in ambient contexts. +tests/cases/compiler/giant.ts(505,31): error TS1183: An implementation cannot be declared in ambient contexts. tests/cases/compiler/giant.ts(506,20): error TS1056: Accessors are only available when targeting ECMAScript 5 and higher. tests/cases/compiler/giant.ts(506,20): error TS2300: Duplicate identifier 'psF'. tests/cases/compiler/giant.ts(507,17): error TS2300: Duplicate identifier 'rgF'. -tests/cases/compiler/giant.ts(507,23): error TS1184: An implementation cannot be declared in ambient contexts. +tests/cases/compiler/giant.ts(507,23): error TS1183: An implementation cannot be declared in ambient contexts. tests/cases/compiler/giant.ts(508,21): error TS1056: Accessors are only available when targeting ECMAScript 5 and higher. tests/cases/compiler/giant.ts(508,21): error TS2300: Duplicate identifier 'rgF'. tests/cases/compiler/giant.ts(509,17): error TS2300: Duplicate identifier 'rsF'. -tests/cases/compiler/giant.ts(509,32): error TS1184: An implementation cannot be declared in ambient contexts. +tests/cases/compiler/giant.ts(509,32): error TS1183: An implementation cannot be declared in ambient contexts. tests/cases/compiler/giant.ts(510,21): error TS1056: Accessors are only available when targeting ECMAScript 5 and higher. tests/cases/compiler/giant.ts(510,21): error TS2300: Duplicate identifier 'rsF'. -tests/cases/compiler/giant.ts(512,21): error TS1184: An implementation cannot be declared in ambient contexts. +tests/cases/compiler/giant.ts(512,21): error TS1183: An implementation cannot be declared in ambient contexts. tests/cases/compiler/giant.ts(513,16): error TS2300: Duplicate identifier 'tsF'. -tests/cases/compiler/giant.ts(513,31): error TS1184: An implementation cannot be declared in ambient contexts. +tests/cases/compiler/giant.ts(513,31): error TS1183: An implementation cannot be declared in ambient contexts. tests/cases/compiler/giant.ts(514,20): error TS1056: Accessors are only available when targeting ECMAScript 5 and higher. tests/cases/compiler/giant.ts(514,20): error TS2300: Duplicate identifier 'tsF'. tests/cases/compiler/giant.ts(515,16): error TS2300: Duplicate identifier 'tgF'. -tests/cases/compiler/giant.ts(515,22): error TS1184: An implementation cannot be declared in ambient contexts. +tests/cases/compiler/giant.ts(515,22): error TS1183: An implementation cannot be declared in ambient contexts. tests/cases/compiler/giant.ts(516,20): error TS1056: Accessors are only available when targeting ECMAScript 5 and higher. tests/cases/compiler/giant.ts(516,20): error TS2300: Duplicate identifier 'tgF'. -tests/cases/compiler/giant.ts(520,22): error TS1184: An implementation cannot be declared in ambient contexts. +tests/cases/compiler/giant.ts(520,22): error TS1183: An implementation cannot be declared in ambient contexts. tests/cases/compiler/giant.ts(520,25): error TS1036: Statements are not allowed in ambient contexts. -tests/cases/compiler/giant.ts(525,30): error TS1184: An implementation cannot be declared in ambient contexts. -tests/cases/compiler/giant.ts(532,31): error TS1184: An implementation cannot be declared in ambient contexts. -tests/cases/compiler/giant.ts(534,20): error TS1184: An implementation cannot be declared in ambient contexts. -tests/cases/compiler/giant.ts(537,17): error TS1184: An implementation cannot be declared in ambient contexts. -tests/cases/compiler/giant.ts(538,18): error TS1184: An implementation cannot be declared in ambient contexts. +tests/cases/compiler/giant.ts(525,30): error TS1183: An implementation cannot be declared in ambient contexts. +tests/cases/compiler/giant.ts(532,31): error TS1183: An implementation cannot be declared in ambient contexts. +tests/cases/compiler/giant.ts(534,20): error TS1183: An implementation cannot be declared in ambient contexts. +tests/cases/compiler/giant.ts(537,17): error TS1183: An implementation cannot be declared in ambient contexts. +tests/cases/compiler/giant.ts(538,18): error TS1183: An implementation cannot be declared in ambient contexts. tests/cases/compiler/giant.ts(539,12): error TS2300: Duplicate identifier 'pgF'. -tests/cases/compiler/giant.ts(539,18): error TS1184: An implementation cannot be declared in ambient contexts. +tests/cases/compiler/giant.ts(539,18): error TS1183: An implementation cannot be declared in ambient contexts. tests/cases/compiler/giant.ts(540,16): error TS1056: Accessors are only available when targeting ECMAScript 5 and higher. tests/cases/compiler/giant.ts(540,16): error TS2300: Duplicate identifier 'pgF'. tests/cases/compiler/giant.ts(541,12): error TS2300: Duplicate identifier 'psF'. -tests/cases/compiler/giant.ts(541,27): error TS1184: An implementation cannot be declared in ambient contexts. +tests/cases/compiler/giant.ts(541,27): error TS1183: An implementation cannot be declared in ambient contexts. tests/cases/compiler/giant.ts(542,16): error TS1056: Accessors are only available when targeting ECMAScript 5 and higher. tests/cases/compiler/giant.ts(542,16): error TS2300: Duplicate identifier 'psF'. tests/cases/compiler/giant.ts(543,13): error TS2300: Duplicate identifier 'rgF'. -tests/cases/compiler/giant.ts(543,19): error TS1184: An implementation cannot be declared in ambient contexts. +tests/cases/compiler/giant.ts(543,19): error TS1183: An implementation cannot be declared in ambient contexts. tests/cases/compiler/giant.ts(544,17): error TS1056: Accessors are only available when targeting ECMAScript 5 and higher. tests/cases/compiler/giant.ts(544,17): error TS2300: Duplicate identifier 'rgF'. tests/cases/compiler/giant.ts(545,13): error TS2300: Duplicate identifier 'rsF'. -tests/cases/compiler/giant.ts(545,28): error TS1184: An implementation cannot be declared in ambient contexts. +tests/cases/compiler/giant.ts(545,28): error TS1183: An implementation cannot be declared in ambient contexts. tests/cases/compiler/giant.ts(546,17): error TS1056: Accessors are only available when targeting ECMAScript 5 and higher. tests/cases/compiler/giant.ts(546,17): error TS2300: Duplicate identifier 'rsF'. -tests/cases/compiler/giant.ts(548,17): error TS1184: An implementation cannot be declared in ambient contexts. +tests/cases/compiler/giant.ts(548,17): error TS1183: An implementation cannot be declared in ambient contexts. tests/cases/compiler/giant.ts(549,12): error TS2300: Duplicate identifier 'tsF'. -tests/cases/compiler/giant.ts(549,27): error TS1184: An implementation cannot be declared in ambient contexts. +tests/cases/compiler/giant.ts(549,27): error TS1183: An implementation cannot be declared in ambient contexts. tests/cases/compiler/giant.ts(550,16): error TS1056: Accessors are only available when targeting ECMAScript 5 and higher. tests/cases/compiler/giant.ts(550,16): error TS2300: Duplicate identifier 'tsF'. tests/cases/compiler/giant.ts(551,12): error TS2300: Duplicate identifier 'tgF'. -tests/cases/compiler/giant.ts(551,18): error TS1184: An implementation cannot be declared in ambient contexts. +tests/cases/compiler/giant.ts(551,18): error TS1183: An implementation cannot be declared in ambient contexts. tests/cases/compiler/giant.ts(552,16): error TS1056: Accessors are only available when targeting ECMAScript 5 and higher. tests/cases/compiler/giant.ts(552,16): error TS2300: Duplicate identifier 'tgF'. -tests/cases/compiler/giant.ts(556,18): error TS1184: An implementation cannot be declared in ambient contexts. +tests/cases/compiler/giant.ts(556,18): error TS1183: An implementation cannot be declared in ambient contexts. tests/cases/compiler/giant.ts(556,21): error TS1036: Statements are not allowed in ambient contexts. -tests/cases/compiler/giant.ts(558,24): error TS1184: An implementation cannot be declared in ambient contexts. -tests/cases/compiler/giant.ts(561,21): error TS1184: An implementation cannot be declared in ambient contexts. -tests/cases/compiler/giant.ts(563,21): error TS1184: An implementation cannot be declared in ambient contexts. +tests/cases/compiler/giant.ts(558,24): error TS1183: An implementation cannot be declared in ambient contexts. +tests/cases/compiler/giant.ts(561,21): error TS1183: An implementation cannot be declared in ambient contexts. +tests/cases/compiler/giant.ts(563,21): error TS1183: An implementation cannot be declared in ambient contexts. tests/cases/compiler/giant.ts(587,9): error TS1169: A computed property name in an interface must directly refer to a built-in symbol. tests/cases/compiler/giant.ts(587,10): error TS2304: Cannot find name 'p'. tests/cases/compiler/giant.ts(588,9): error TS1021: An index signature must have a type annotation. tests/cases/compiler/giant.ts(589,10): error TS1096: An index signature must have exactly one parameter. tests/cases/compiler/giant.ts(602,9): error TS2386: Overload signatures must all be optional or required. -tests/cases/compiler/giant.ts(606,22): error TS1184: An implementation cannot be declared in ambient contexts. +tests/cases/compiler/giant.ts(606,22): error TS1183: An implementation cannot be declared in ambient contexts. tests/cases/compiler/giant.ts(606,25): error TS1036: Statements are not allowed in ambient contexts. -tests/cases/compiler/giant.ts(611,30): error TS1184: An implementation cannot be declared in ambient contexts. +tests/cases/compiler/giant.ts(611,30): error TS1183: An implementation cannot be declared in ambient contexts. tests/cases/compiler/giant.ts(615,16): error TS1038: A 'declare' modifier cannot be used in an already ambient context. tests/cases/compiler/giant.ts(616,16): error TS1038: A 'declare' modifier cannot be used in an already ambient context. -tests/cases/compiler/giant.ts(616,39): error TS1184: An implementation cannot be declared in ambient contexts. +tests/cases/compiler/giant.ts(616,39): error TS1183: An implementation cannot be declared in ambient contexts. tests/cases/compiler/giant.ts(617,16): error TS1038: A 'declare' modifier cannot be used in an already ambient context. tests/cases/compiler/giant.ts(618,16): error TS1038: A 'declare' modifier cannot be used in an already ambient context. -tests/cases/compiler/giant.ts(621,26): error TS1184: An implementation cannot be declared in ambient contexts. -tests/cases/compiler/giant.ts(623,24): error TS1184: An implementation cannot be declared in ambient contexts. -tests/cases/compiler/giant.ts(626,21): error TS1184: An implementation cannot be declared in ambient contexts. -tests/cases/compiler/giant.ts(628,21): error TS1184: An implementation cannot be declared in ambient contexts. +tests/cases/compiler/giant.ts(621,26): error TS1183: An implementation cannot be declared in ambient contexts. +tests/cases/compiler/giant.ts(623,24): error TS1183: An implementation cannot be declared in ambient contexts. +tests/cases/compiler/giant.ts(626,21): error TS1183: An implementation cannot be declared in ambient contexts. +tests/cases/compiler/giant.ts(628,21): error TS1183: An implementation cannot be declared in ambient contexts. tests/cases/compiler/giant.ts(653,9): error TS1169: A computed property name in an interface must directly refer to a built-in symbol. tests/cases/compiler/giant.ts(653,10): error TS2304: Cannot find name 'p'. tests/cases/compiler/giant.ts(654,9): error TS1021: An index signature must have a type annotation. tests/cases/compiler/giant.ts(655,10): error TS1096: An index signature must have exactly one parameter. tests/cases/compiler/giant.ts(668,9): error TS2386: Overload signatures must all be optional or required. -tests/cases/compiler/giant.ts(672,22): error TS1184: An implementation cannot be declared in ambient contexts. +tests/cases/compiler/giant.ts(672,22): error TS1183: An implementation cannot be declared in ambient contexts. tests/cases/compiler/giant.ts(672,25): error TS1036: Statements are not allowed in ambient contexts. -tests/cases/compiler/giant.ts(676,30): error TS1184: An implementation cannot be declared in ambient contexts. +tests/cases/compiler/giant.ts(676,30): error TS1183: An implementation cannot be declared in ambient contexts. ==== tests/cases/compiler/giant.ts (265 errors) ==== @@ -513,7 +513,7 @@ tests/cases/compiler/giant.ts(676,30): error TS1184: An implementation cannot be export declare var eaV; export declare function eaF() { }; ~ -!!! error TS1184: An implementation cannot be declared in ambient contexts. +!!! error TS1183: An implementation cannot be declared in ambient contexts. export declare class eaC { }; export declare module eaM { }; } @@ -640,31 +640,31 @@ tests/cases/compiler/giant.ts(676,30): error TS1184: An implementation cannot be export declare var eaV; export declare function eaF() { }; ~ -!!! error TS1184: An implementation cannot be declared in ambient contexts. +!!! error TS1183: An implementation cannot be declared in ambient contexts. export declare class eaC { }; export declare module eaM { }; } export declare var eaV; export declare function eaF() { }; ~ -!!! error TS1184: An implementation cannot be declared in ambient contexts. +!!! error TS1183: An implementation cannot be declared in ambient contexts. export declare class eaC { constructor () { } ~ -!!! error TS1184: An implementation cannot be declared in ambient contexts. +!!! error TS1183: An implementation cannot be declared in ambient contexts. public pV; private rV; public pF() { } ~ -!!! error TS1184: An implementation cannot be declared in ambient contexts. +!!! error TS1183: An implementation cannot be declared in ambient contexts. private rF() { } ~ -!!! error TS1184: An implementation cannot be declared in ambient contexts. +!!! error TS1183: An implementation cannot be declared in ambient contexts. public pgF() { } ~~~ !!! error TS2300: Duplicate identifier 'pgF'. ~ -!!! error TS1184: An implementation cannot be declared in ambient contexts. +!!! error TS1183: An implementation cannot be declared in ambient contexts. public get pgF() ~~~ !!! error TS1056: Accessors are only available when targeting ECMAScript 5 and higher. @@ -674,7 +674,7 @@ tests/cases/compiler/giant.ts(676,30): error TS1184: An implementation cannot be ~~~ !!! error TS2300: Duplicate identifier 'psF'. ~ -!!! error TS1184: An implementation cannot be declared in ambient contexts. +!!! error TS1183: An implementation cannot be declared in ambient contexts. public set psF(param:any) ~~~ !!! error TS1056: Accessors are only available when targeting ECMAScript 5 and higher. @@ -684,7 +684,7 @@ tests/cases/compiler/giant.ts(676,30): error TS1184: An implementation cannot be ~~~ !!! error TS2300: Duplicate identifier 'rgF'. ~ -!!! error TS1184: An implementation cannot be declared in ambient contexts. +!!! error TS1183: An implementation cannot be declared in ambient contexts. private get rgF() ~~~ !!! error TS1056: Accessors are only available when targeting ECMAScript 5 and higher. @@ -694,7 +694,7 @@ tests/cases/compiler/giant.ts(676,30): error TS1184: An implementation cannot be ~~~ !!! error TS2300: Duplicate identifier 'rsF'. ~ -!!! error TS1184: An implementation cannot be declared in ambient contexts. +!!! error TS1183: An implementation cannot be declared in ambient contexts. private set rsF(param:any) ~~~ !!! error TS1056: Accessors are only available when targeting ECMAScript 5 and higher. @@ -703,12 +703,12 @@ tests/cases/compiler/giant.ts(676,30): error TS1184: An implementation cannot be static tV; static tF() { } ~ -!!! error TS1184: An implementation cannot be declared in ambient contexts. +!!! error TS1183: An implementation cannot be declared in ambient contexts. static tsF(param:any) { } ~~~ !!! error TS2300: Duplicate identifier 'tsF'. ~ -!!! error TS1184: An implementation cannot be declared in ambient contexts. +!!! error TS1183: An implementation cannot be declared in ambient contexts. static set tsF(param:any) ~~~ !!! error TS1056: Accessors are only available when targeting ECMAScript 5 and higher. @@ -718,7 +718,7 @@ tests/cases/compiler/giant.ts(676,30): error TS1184: An implementation cannot be ~~~ !!! error TS2300: Duplicate identifier 'tgF'. ~ -!!! error TS1184: An implementation cannot be declared in ambient contexts. +!!! error TS1183: An implementation cannot be declared in ambient contexts. static get tgF() ~~~ !!! error TS1056: Accessors are only available when targeting ECMAScript 5 and higher. @@ -729,7 +729,7 @@ tests/cases/compiler/giant.ts(676,30): error TS1184: An implementation cannot be var V; function F() { }; ~ -!!! error TS1184: An implementation cannot be declared in ambient contexts. +!!! error TS1183: An implementation cannot be declared in ambient contexts. ~ !!! error TS1036: Statements are not allowed in ambient contexts. class C { } @@ -738,7 +738,7 @@ tests/cases/compiler/giant.ts(676,30): error TS1184: An implementation cannot be export var eV; export function eF() { }; ~ -!!! error TS1184: An implementation cannot be declared in ambient contexts. +!!! error TS1183: An implementation cannot be declared in ambient contexts. export class eC { } export interface eI { } export module eM { } @@ -977,7 +977,7 @@ tests/cases/compiler/giant.ts(676,30): error TS1184: An implementation cannot be export declare var eaV; export declare function eaF() { }; ~ -!!! error TS1184: An implementation cannot be declared in ambient contexts. +!!! error TS1183: An implementation cannot be declared in ambient contexts. export declare class eaC { }; export declare module eaM { }; } @@ -1104,31 +1104,31 @@ tests/cases/compiler/giant.ts(676,30): error TS1184: An implementation cannot be export declare var eaV; export declare function eaF() { }; ~ -!!! error TS1184: An implementation cannot be declared in ambient contexts. +!!! error TS1183: An implementation cannot be declared in ambient contexts. export declare class eaC { }; export declare module eaM { }; } export declare var eaV; export declare function eaF() { }; ~ -!!! error TS1184: An implementation cannot be declared in ambient contexts. +!!! error TS1183: An implementation cannot be declared in ambient contexts. export declare class eaC { constructor () { } ~ -!!! error TS1184: An implementation cannot be declared in ambient contexts. +!!! error TS1183: An implementation cannot be declared in ambient contexts. public pV; private rV; public pF() { } ~ -!!! error TS1184: An implementation cannot be declared in ambient contexts. +!!! error TS1183: An implementation cannot be declared in ambient contexts. private rF() { } ~ -!!! error TS1184: An implementation cannot be declared in ambient contexts. +!!! error TS1183: An implementation cannot be declared in ambient contexts. public pgF() { } ~~~ !!! error TS2300: Duplicate identifier 'pgF'. ~ -!!! error TS1184: An implementation cannot be declared in ambient contexts. +!!! error TS1183: An implementation cannot be declared in ambient contexts. public get pgF() ~~~ !!! error TS1056: Accessors are only available when targeting ECMAScript 5 and higher. @@ -1138,7 +1138,7 @@ tests/cases/compiler/giant.ts(676,30): error TS1184: An implementation cannot be ~~~ !!! error TS2300: Duplicate identifier 'psF'. ~ -!!! error TS1184: An implementation cannot be declared in ambient contexts. +!!! error TS1183: An implementation cannot be declared in ambient contexts. public set psF(param:any) ~~~ !!! error TS1056: Accessors are only available when targeting ECMAScript 5 and higher. @@ -1148,7 +1148,7 @@ tests/cases/compiler/giant.ts(676,30): error TS1184: An implementation cannot be ~~~ !!! error TS2300: Duplicate identifier 'rgF'. ~ -!!! error TS1184: An implementation cannot be declared in ambient contexts. +!!! error TS1183: An implementation cannot be declared in ambient contexts. private get rgF() ~~~ !!! error TS1056: Accessors are only available when targeting ECMAScript 5 and higher. @@ -1158,7 +1158,7 @@ tests/cases/compiler/giant.ts(676,30): error TS1184: An implementation cannot be ~~~ !!! error TS2300: Duplicate identifier 'rsF'. ~ -!!! error TS1184: An implementation cannot be declared in ambient contexts. +!!! error TS1183: An implementation cannot be declared in ambient contexts. private set rsF(param:any) ~~~ !!! error TS1056: Accessors are only available when targeting ECMAScript 5 and higher. @@ -1167,12 +1167,12 @@ tests/cases/compiler/giant.ts(676,30): error TS1184: An implementation cannot be static tV; static tF() { } ~ -!!! error TS1184: An implementation cannot be declared in ambient contexts. +!!! error TS1183: An implementation cannot be declared in ambient contexts. static tsF(param:any) { } ~~~ !!! error TS2300: Duplicate identifier 'tsF'. ~ -!!! error TS1184: An implementation cannot be declared in ambient contexts. +!!! error TS1183: An implementation cannot be declared in ambient contexts. static set tsF(param:any) ~~~ !!! error TS1056: Accessors are only available when targeting ECMAScript 5 and higher. @@ -1182,7 +1182,7 @@ tests/cases/compiler/giant.ts(676,30): error TS1184: An implementation cannot be ~~~ !!! error TS2300: Duplicate identifier 'tgF'. ~ -!!! error TS1184: An implementation cannot be declared in ambient contexts. +!!! error TS1183: An implementation cannot be declared in ambient contexts. static get tgF() ~~~ !!! error TS1056: Accessors are only available when targeting ECMAScript 5 and higher. @@ -1193,7 +1193,7 @@ tests/cases/compiler/giant.ts(676,30): error TS1184: An implementation cannot be var V; function F() { }; ~ -!!! error TS1184: An implementation cannot be declared in ambient contexts. +!!! error TS1183: An implementation cannot be declared in ambient contexts. ~ !!! error TS1036: Statements are not allowed in ambient contexts. class C { } @@ -1202,7 +1202,7 @@ tests/cases/compiler/giant.ts(676,30): error TS1184: An implementation cannot be export var eV; export function eF() { }; ~ -!!! error TS1184: An implementation cannot be declared in ambient contexts. +!!! error TS1183: An implementation cannot be declared in ambient contexts. export class eC { } export interface eI { } export module eM { } @@ -1211,24 +1211,24 @@ tests/cases/compiler/giant.ts(676,30): error TS1184: An implementation cannot be export declare var eaV; export declare function eaF() { }; ~ -!!! error TS1184: An implementation cannot be declared in ambient contexts. +!!! error TS1183: An implementation cannot be declared in ambient contexts. export declare class eaC { constructor () { } ~ -!!! error TS1184: An implementation cannot be declared in ambient contexts. +!!! error TS1183: An implementation cannot be declared in ambient contexts. public pV; private rV; public pF() { } ~ -!!! error TS1184: An implementation cannot be declared in ambient contexts. +!!! error TS1183: An implementation cannot be declared in ambient contexts. private rF() { } ~ -!!! error TS1184: An implementation cannot be declared in ambient contexts. +!!! error TS1183: An implementation cannot be declared in ambient contexts. public pgF() { } ~~~ !!! error TS2300: Duplicate identifier 'pgF'. ~ -!!! error TS1184: An implementation cannot be declared in ambient contexts. +!!! error TS1183: An implementation cannot be declared in ambient contexts. public get pgF() ~~~ !!! error TS1056: Accessors are only available when targeting ECMAScript 5 and higher. @@ -1238,7 +1238,7 @@ tests/cases/compiler/giant.ts(676,30): error TS1184: An implementation cannot be ~~~ !!! error TS2300: Duplicate identifier 'psF'. ~ -!!! error TS1184: An implementation cannot be declared in ambient contexts. +!!! error TS1183: An implementation cannot be declared in ambient contexts. public set psF(param:any) ~~~ !!! error TS1056: Accessors are only available when targeting ECMAScript 5 and higher. @@ -1248,7 +1248,7 @@ tests/cases/compiler/giant.ts(676,30): error TS1184: An implementation cannot be ~~~ !!! error TS2300: Duplicate identifier 'rgF'. ~ -!!! error TS1184: An implementation cannot be declared in ambient contexts. +!!! error TS1183: An implementation cannot be declared in ambient contexts. private get rgF() ~~~ !!! error TS1056: Accessors are only available when targeting ECMAScript 5 and higher. @@ -1258,7 +1258,7 @@ tests/cases/compiler/giant.ts(676,30): error TS1184: An implementation cannot be ~~~ !!! error TS2300: Duplicate identifier 'rsF'. ~ -!!! error TS1184: An implementation cannot be declared in ambient contexts. +!!! error TS1183: An implementation cannot be declared in ambient contexts. private set rsF(param:any) ~~~ !!! error TS1056: Accessors are only available when targeting ECMAScript 5 and higher. @@ -1267,12 +1267,12 @@ tests/cases/compiler/giant.ts(676,30): error TS1184: An implementation cannot be static tV; static tF() { } ~ -!!! error TS1184: An implementation cannot be declared in ambient contexts. +!!! error TS1183: An implementation cannot be declared in ambient contexts. static tsF(param:any) { } ~~~ !!! error TS2300: Duplicate identifier 'tsF'. ~ -!!! error TS1184: An implementation cannot be declared in ambient contexts. +!!! error TS1183: An implementation cannot be declared in ambient contexts. static set tsF(param:any) ~~~ !!! error TS1056: Accessors are only available when targeting ECMAScript 5 and higher. @@ -1282,7 +1282,7 @@ tests/cases/compiler/giant.ts(676,30): error TS1184: An implementation cannot be ~~~ !!! error TS2300: Duplicate identifier 'tgF'. ~ -!!! error TS1184: An implementation cannot be declared in ambient contexts. +!!! error TS1183: An implementation cannot be declared in ambient contexts. static get tgF() ~~~ !!! error TS1056: Accessors are only available when targeting ECMAScript 5 and higher. @@ -1293,22 +1293,22 @@ tests/cases/compiler/giant.ts(676,30): error TS1184: An implementation cannot be var V; function F() { }; ~ -!!! error TS1184: An implementation cannot be declared in ambient contexts. +!!! error TS1183: An implementation cannot be declared in ambient contexts. ~ !!! error TS1036: Statements are not allowed in ambient contexts. class C { constructor () { } ~ -!!! error TS1184: An implementation cannot be declared in ambient contexts. +!!! error TS1183: An implementation cannot be declared in ambient contexts. public pV; private rV; public pF() { } ~ -!!! error TS1184: An implementation cannot be declared in ambient contexts. +!!! error TS1183: An implementation cannot be declared in ambient contexts. static tV; static tF() { } ~ -!!! error TS1184: An implementation cannot be declared in ambient contexts. +!!! error TS1183: An implementation cannot be declared in ambient contexts. } interface I { //Call Signature @@ -1363,7 +1363,7 @@ tests/cases/compiler/giant.ts(676,30): error TS1184: An implementation cannot be var V; function F() { }; ~ -!!! error TS1184: An implementation cannot be declared in ambient contexts. +!!! error TS1183: An implementation cannot be declared in ambient contexts. ~ !!! error TS1036: Statements are not allowed in ambient contexts. class C { } @@ -1372,7 +1372,7 @@ tests/cases/compiler/giant.ts(676,30): error TS1184: An implementation cannot be export var eV; export function eF() { }; ~ -!!! error TS1184: An implementation cannot be declared in ambient contexts. +!!! error TS1183: An implementation cannot be declared in ambient contexts. export class eC { } export interface eI { } export module eM { } @@ -1383,7 +1383,7 @@ tests/cases/compiler/giant.ts(676,30): error TS1184: An implementation cannot be ~~~~~~~ !!! error TS1038: A 'declare' modifier cannot be used in an already ambient context. ~ -!!! error TS1184: An implementation cannot be declared in ambient contexts. +!!! error TS1183: An implementation cannot be declared in ambient contexts. export declare class eaC { } ~~~~~~~ !!! error TS1038: A 'declare' modifier cannot be used in an already ambient context. @@ -1394,20 +1394,20 @@ tests/cases/compiler/giant.ts(676,30): error TS1184: An implementation cannot be export var eV; export function eF() { }; ~ -!!! error TS1184: An implementation cannot be declared in ambient contexts. +!!! error TS1183: An implementation cannot be declared in ambient contexts. export class eC { constructor () { } ~ -!!! error TS1184: An implementation cannot be declared in ambient contexts. +!!! error TS1183: An implementation cannot be declared in ambient contexts. public pV; private rV; public pF() { } ~ -!!! error TS1184: An implementation cannot be declared in ambient contexts. +!!! error TS1183: An implementation cannot be declared in ambient contexts. static tV static tF() { } ~ -!!! error TS1184: An implementation cannot be declared in ambient contexts. +!!! error TS1183: An implementation cannot be declared in ambient contexts. } export interface eI { //Call Signature @@ -1463,7 +1463,7 @@ tests/cases/compiler/giant.ts(676,30): error TS1184: An implementation cannot be var V; function F() { }; ~ -!!! error TS1184: An implementation cannot be declared in ambient contexts. +!!! error TS1183: An implementation cannot be declared in ambient contexts. ~ !!! error TS1036: Statements are not allowed in ambient contexts. class C { } @@ -1471,7 +1471,7 @@ tests/cases/compiler/giant.ts(676,30): error TS1184: An implementation cannot be export var eV; export function eF() { }; ~ -!!! error TS1184: An implementation cannot be declared in ambient contexts. +!!! error TS1183: An implementation cannot be declared in ambient contexts. export class eC { } export interface eI { } export module eM { } diff --git a/tests/baselines/reference/implementsInClassExpression.js b/tests/baselines/reference/implementsInClassExpression.js new file mode 100644 index 00000000000..9ac092289f5 --- /dev/null +++ b/tests/baselines/reference/implementsInClassExpression.js @@ -0,0 +1,16 @@ +//// [implementsInClassExpression.ts] +interface Foo { + doThing(): void; +} + +let cls = class implements Foo { + doThing() { } +} + +//// [implementsInClassExpression.js] +var cls = (function () { + function class_1() { + } + class_1.prototype.doThing = function () { }; + return class_1; +})(); diff --git a/tests/baselines/reference/implementsInClassExpression.symbols b/tests/baselines/reference/implementsInClassExpression.symbols new file mode 100644 index 00000000000..f65c3456320 --- /dev/null +++ b/tests/baselines/reference/implementsInClassExpression.symbols @@ -0,0 +1,15 @@ +=== tests/cases/compiler/implementsInClassExpression.ts === +interface Foo { +>Foo : Symbol(Foo, Decl(implementsInClassExpression.ts, 0, 0)) + + doThing(): void; +>doThing : Symbol(doThing, Decl(implementsInClassExpression.ts, 0, 15)) +} + +let cls = class implements Foo { +>cls : Symbol(cls, Decl(implementsInClassExpression.ts, 4, 3)) +>Foo : Symbol(Foo, Decl(implementsInClassExpression.ts, 0, 0)) + + doThing() { } +>doThing : Symbol((Anonymous class).doThing, Decl(implementsInClassExpression.ts, 4, 32)) +} diff --git a/tests/baselines/reference/implementsInClassExpression.types b/tests/baselines/reference/implementsInClassExpression.types new file mode 100644 index 00000000000..d3647c30ff1 --- /dev/null +++ b/tests/baselines/reference/implementsInClassExpression.types @@ -0,0 +1,16 @@ +=== tests/cases/compiler/implementsInClassExpression.ts === +interface Foo { +>Foo : Foo + + doThing(): void; +>doThing : () => void +} + +let cls = class implements Foo { +>cls : typeof (Anonymous class) +>class implements Foo { doThing() { }} : typeof (Anonymous class) +>Foo : Foo + + doThing() { } +>doThing : () => void +} diff --git a/tests/baselines/reference/implicitAnyInCatch.types b/tests/baselines/reference/implicitAnyInCatch.types index b0fbd4e7f12..cd0dd2d2423 100644 --- a/tests/baselines/reference/implicitAnyInCatch.types +++ b/tests/baselines/reference/implicitAnyInCatch.types @@ -23,7 +23,7 @@ class C { for (var x in this) { >x : any ->this : C +>this : this } } } diff --git a/tests/baselines/reference/importAsBaseClass.errors.txt b/tests/baselines/reference/importAsBaseClass.errors.txt index 835fd143f70..8f23baad543 100644 --- a/tests/baselines/reference/importAsBaseClass.errors.txt +++ b/tests/baselines/reference/importAsBaseClass.errors.txt @@ -2,7 +2,7 @@ tests/cases/compiler/importAsBaseClass_1.ts(2,21): error TS2507: Type 'typeof "t ==== tests/cases/compiler/importAsBaseClass_1.ts (1 errors) ==== - import Greeter = require("importAsBaseClass_0"); + import Greeter = require("./importAsBaseClass_0"); class Hello extends Greeter { } ~~~~~~~ !!! error TS2507: Type 'typeof "tests/cases/compiler/importAsBaseClass_0"' is not a constructor function type. diff --git a/tests/baselines/reference/importAsBaseClass.js b/tests/baselines/reference/importAsBaseClass.js index b79905911b1..57d71af2cda 100644 --- a/tests/baselines/reference/importAsBaseClass.js +++ b/tests/baselines/reference/importAsBaseClass.js @@ -6,7 +6,7 @@ export class Greeter { } //// [importAsBaseClass_1.ts] -import Greeter = require("importAsBaseClass_0"); +import Greeter = require("./importAsBaseClass_0"); class Hello extends Greeter { } @@ -24,7 +24,7 @@ var __extends = (this && this.__extends) || function (d, b) { function __() { this.constructor = d; } d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __()); }; -var Greeter = require("importAsBaseClass_0"); +var Greeter = require("./importAsBaseClass_0"); var Hello = (function (_super) { __extends(Hello, _super); function Hello() { diff --git a/tests/baselines/reference/importDecl.js b/tests/baselines/reference/importDecl.js index fb2aa6e0d1f..4b2672c4135 100644 --- a/tests/baselines/reference/importDecl.js +++ b/tests/baselines/reference/importDecl.js @@ -29,7 +29,7 @@ export var x: d; export function foo(): d { return null; } //// [importDecl_require4.ts] -import m4 = require("importDecl_require"); +import m4 = require("./importDecl_require"); export function foo2(): m4.d { return null; } //// [importDecl_1.ts] @@ -38,7 +38,7 @@ export function foo2(): m4.d { return null; } /// /// /// -import m4 = require("importDecl_require"); // Emit used +import m4 = require("./importDecl_require"); // Emit used export var x4 = m4.x; export var d4 = m4.d; export var f4 = m4.foo(); @@ -54,16 +54,16 @@ export module m1 { } //Emit global only usage -import glo_m4 = require("importDecl_require1"); +import glo_m4 = require("./importDecl_require1"); export var useGlo_m4_d4 = glo_m4.d; export var useGlo_m4_f4 = glo_m4.foo(); //Emit even when used just in function type -import fncOnly_m4 = require("importDecl_require2"); +import fncOnly_m4 = require("./importDecl_require2"); export var useFncOnly_m4_f4 = fncOnly_m4.foo(); // only used privately no need to emit -import private_m4 = require("importDecl_require3"); +import private_m4 = require("./importDecl_require3"); export module usePrivate_m4_m1 { var x3 = private_m4.x; var d3 = private_m4.d; @@ -71,11 +71,11 @@ export module usePrivate_m4_m1 { } // Do not emit unused import -import m5 = require("importDecl_require4"); +import m5 = require("./importDecl_require4"); export var d = m5.foo2(); // Do not emit multiple used import statements -import multiImport_m4 = require("importDecl_require"); // Emit used +import multiImport_m4 = require("./importDecl_require"); // Emit used export var useMultiImport_m4_x4 = multiImport_m4.x; export var useMultiImport_m4_d4 = multiImport_m4.d; export var useMultiImport_m4_f4 = multiImport_m4.foo(); @@ -127,7 +127,7 @@ exports.foo2 = foo2; /// /// /// -var m4 = require("importDecl_require"); // Emit used +var m4 = require("./importDecl_require"); // Emit used exports.x4 = m4.x; exports.d4 = m4.d; exports.f4 = m4.foo(); @@ -141,14 +141,14 @@ var m1; var f3 = m4.foo(); })(m1 = exports.m1 || (exports.m1 = {})); //Emit global only usage -var glo_m4 = require("importDecl_require1"); +var glo_m4 = require("./importDecl_require1"); exports.useGlo_m4_d4 = glo_m4.d; exports.useGlo_m4_f4 = glo_m4.foo(); //Emit even when used just in function type -var fncOnly_m4 = require("importDecl_require2"); +var fncOnly_m4 = require("./importDecl_require2"); exports.useFncOnly_m4_f4 = fncOnly_m4.foo(); // only used privately no need to emit -var private_m4 = require("importDecl_require3"); +var private_m4 = require("./importDecl_require3"); var usePrivate_m4_m1; (function (usePrivate_m4_m1) { var x3 = private_m4.x; @@ -156,10 +156,10 @@ var usePrivate_m4_m1; var f3 = private_m4.foo(); })(usePrivate_m4_m1 = exports.usePrivate_m4_m1 || (exports.usePrivate_m4_m1 = {})); // Do not emit unused import -var m5 = require("importDecl_require4"); +var m5 = require("./importDecl_require4"); exports.d = m5.foo2(); // Do not emit multiple used import statements -var multiImport_m4 = require("importDecl_require"); // Emit used +var multiImport_m4 = require("./importDecl_require"); // Emit used exports.useMultiImport_m4_x4 = multiImport_m4.x; exports.useMultiImport_m4_d4 = multiImport_m4.d; exports.useMultiImport_m4_f4 = multiImport_m4.foo(); @@ -189,7 +189,7 @@ export declare class d { export declare var x: d; export declare function foo(): d; //// [importDecl_require4.d.ts] -import m4 = require("importDecl_require"); +import m4 = require("./importDecl_require"); export declare function foo2(): m4.d; //// [importDecl_1.d.ts] /// @@ -197,7 +197,7 @@ export declare function foo2(): m4.d; /// /// /// -import m4 = require("importDecl_require"); +import m4 = require("./importDecl_require"); export declare var x4: m4.d; export declare var d4: typeof m4.d; export declare var f4: m4.d; @@ -206,10 +206,10 @@ export declare module m1 { var d2: typeof m4.d; var f2: m4.d; } -import glo_m4 = require("importDecl_require1"); +import glo_m4 = require("./importDecl_require1"); export declare var useGlo_m4_d4: typeof glo_m4.d; export declare var useGlo_m4_f4: glo_m4.d; -import fncOnly_m4 = require("importDecl_require2"); +import fncOnly_m4 = require("./importDecl_require2"); export declare var useFncOnly_m4_f4: fncOnly_m4.d; export declare module usePrivate_m4_m1 { } diff --git a/tests/baselines/reference/importDecl.symbols b/tests/baselines/reference/importDecl.symbols index 2341101b672..32b9f3bb2a7 100644 --- a/tests/baselines/reference/importDecl.symbols +++ b/tests/baselines/reference/importDecl.symbols @@ -4,7 +4,7 @@ /// /// /// -import m4 = require("importDecl_require"); // Emit used +import m4 = require("./importDecl_require"); // Emit used >m4 : Symbol(m4, Decl(importDecl_1.ts, 0, 0)) export var x4 = m4.x; @@ -66,7 +66,7 @@ export module m1 { } //Emit global only usage -import glo_m4 = require("importDecl_require1"); +import glo_m4 = require("./importDecl_require1"); >glo_m4 : Symbol(glo_m4, Decl(importDecl_1.ts, 18, 1)) export var useGlo_m4_d4 = glo_m4.d; @@ -82,7 +82,7 @@ export var useGlo_m4_f4 = glo_m4.foo(); >foo : Symbol(glo_m4.foo, Decl(importDecl_require1.ts, 3, 9)) //Emit even when used just in function type -import fncOnly_m4 = require("importDecl_require2"); +import fncOnly_m4 = require("./importDecl_require2"); >fncOnly_m4 : Symbol(fncOnly_m4, Decl(importDecl_1.ts, 23, 39)) export var useFncOnly_m4_f4 = fncOnly_m4.foo(); @@ -92,11 +92,11 @@ export var useFncOnly_m4_f4 = fncOnly_m4.foo(); >foo : Symbol(fncOnly_m4.foo, Decl(importDecl_require2.ts, 3, 16)) // only used privately no need to emit -import private_m4 = require("importDecl_require3"); +import private_m4 = require("./importDecl_require3"); >private_m4 : Symbol(private_m4, Decl(importDecl_1.ts, 27, 47)) export module usePrivate_m4_m1 { ->usePrivate_m4_m1 : Symbol(usePrivate_m4_m1, Decl(importDecl_1.ts, 30, 51)) +>usePrivate_m4_m1 : Symbol(usePrivate_m4_m1, Decl(importDecl_1.ts, 30, 53)) var x3 = private_m4.x; >x3 : Symbol(x3, Decl(importDecl_1.ts, 32, 7)) @@ -118,17 +118,17 @@ export module usePrivate_m4_m1 { } // Do not emit unused import -import m5 = require("importDecl_require4"); +import m5 = require("./importDecl_require4"); >m5 : Symbol(m5, Decl(importDecl_1.ts, 35, 1)) export var d = m5.foo2(); >d : Symbol(d, Decl(importDecl_1.ts, 39, 10)) ->m5.foo2 : Symbol(m5.foo2, Decl(importDecl_require4.ts, 0, 42)) +>m5.foo2 : Symbol(m5.foo2, Decl(importDecl_require4.ts, 0, 44)) >m5 : Symbol(m5, Decl(importDecl_1.ts, 35, 1)) ->foo2 : Symbol(m5.foo2, Decl(importDecl_require4.ts, 0, 42)) +>foo2 : Symbol(m5.foo2, Decl(importDecl_require4.ts, 0, 44)) // Do not emit multiple used import statements -import multiImport_m4 = require("importDecl_require"); // Emit used +import multiImport_m4 = require("./importDecl_require"); // Emit used >multiImport_m4 : Symbol(multiImport_m4, Decl(importDecl_1.ts, 39, 25)) export var useMultiImport_m4_x4 = multiImport_m4.x; @@ -210,11 +210,11 @@ export function foo(): d { return null; } >d : Symbol(d, Decl(importDecl_require3.ts, 0, 0)) === tests/cases/compiler/importDecl_require4.ts === -import m4 = require("importDecl_require"); +import m4 = require("./importDecl_require"); >m4 : Symbol(m4, Decl(importDecl_require4.ts, 0, 0)) export function foo2(): m4.d { return null; } ->foo2 : Symbol(foo2, Decl(importDecl_require4.ts, 0, 42)) +>foo2 : Symbol(foo2, Decl(importDecl_require4.ts, 0, 44)) >m4 : Symbol(m4, Decl(importDecl_require4.ts, 0, 0)) >d : Symbol(m4.d, Decl(importDecl_require.ts, 0, 0)) diff --git a/tests/baselines/reference/importDecl.types b/tests/baselines/reference/importDecl.types index 58a56281bae..7bf4da78121 100644 --- a/tests/baselines/reference/importDecl.types +++ b/tests/baselines/reference/importDecl.types @@ -4,7 +4,7 @@ /// /// /// -import m4 = require("importDecl_require"); // Emit used +import m4 = require("./importDecl_require"); // Emit used >m4 : typeof m4 export var x4 = m4.x; @@ -69,7 +69,7 @@ export module m1 { } //Emit global only usage -import glo_m4 = require("importDecl_require1"); +import glo_m4 = require("./importDecl_require1"); >glo_m4 : typeof glo_m4 export var useGlo_m4_d4 = glo_m4.d; @@ -86,7 +86,7 @@ export var useGlo_m4_f4 = glo_m4.foo(); >foo : () => glo_m4.d //Emit even when used just in function type -import fncOnly_m4 = require("importDecl_require2"); +import fncOnly_m4 = require("./importDecl_require2"); >fncOnly_m4 : typeof fncOnly_m4 export var useFncOnly_m4_f4 = fncOnly_m4.foo(); @@ -97,7 +97,7 @@ export var useFncOnly_m4_f4 = fncOnly_m4.foo(); >foo : () => fncOnly_m4.d // only used privately no need to emit -import private_m4 = require("importDecl_require3"); +import private_m4 = require("./importDecl_require3"); >private_m4 : typeof private_m4 export module usePrivate_m4_m1 { @@ -124,7 +124,7 @@ export module usePrivate_m4_m1 { } // Do not emit unused import -import m5 = require("importDecl_require4"); +import m5 = require("./importDecl_require4"); >m5 : typeof m5 export var d = m5.foo2(); @@ -135,7 +135,7 @@ export var d = m5.foo2(); >foo2 : () => m4.d // Do not emit multiple used import statements -import multiImport_m4 = require("importDecl_require"); // Emit used +import multiImport_m4 = require("./importDecl_require"); // Emit used >multiImport_m4 : typeof m4 export var useMultiImport_m4_x4 = multiImport_m4.x; @@ -222,7 +222,7 @@ export function foo(): d { return null; } >null : null === tests/cases/compiler/importDecl_require4.ts === -import m4 = require("importDecl_require"); +import m4 = require("./importDecl_require"); >m4 : typeof m4 export function foo2(): m4.d { return null; } diff --git a/tests/baselines/reference/importDeclRefereingExternalModuleWithNoResolve.errors.txt b/tests/baselines/reference/importDeclRefereingExternalModuleWithNoResolve.errors.txt index e46ff8bea13..74f532d0c1e 100644 --- a/tests/baselines/reference/importDeclRefereingExternalModuleWithNoResolve.errors.txt +++ b/tests/baselines/reference/importDeclRefereingExternalModuleWithNoResolve.errors.txt @@ -1,6 +1,6 @@ tests/cases/compiler/importDeclRefereingExternalModuleWithNoResolve.ts(1,1): error TS1148: Cannot compile modules unless the '--module' flag is provided. tests/cases/compiler/importDeclRefereingExternalModuleWithNoResolve.ts(1,20): error TS2307: Cannot find module 'externalModule'. -tests/cases/compiler/importDeclRefereingExternalModuleWithNoResolve.ts(2,16): error TS2435: Ambient modules cannot be nested in other modules. +tests/cases/compiler/importDeclRefereingExternalModuleWithNoResolve.ts(2,16): error TS2435: Ambient modules cannot be nested in other modules or namespaces. tests/cases/compiler/importDeclRefereingExternalModuleWithNoResolve.ts(3,26): error TS2307: Cannot find module 'externalModule'. @@ -12,7 +12,7 @@ tests/cases/compiler/importDeclRefereingExternalModuleWithNoResolve.ts(3,26): er !!! error TS2307: Cannot find module 'externalModule'. declare module "m1" { ~~~~ -!!! error TS2435: Ambient modules cannot be nested in other modules. +!!! error TS2435: Ambient modules cannot be nested in other modules or namespaces. import im2 = require("externalModule"); ~~~~~~~~~~~~~~~~ !!! error TS2307: Cannot find module 'externalModule'. diff --git a/tests/baselines/reference/importDeclarationUsedAsTypeQuery.js b/tests/baselines/reference/importDeclarationUsedAsTypeQuery.js index 70244f47381..51839c35df2 100644 --- a/tests/baselines/reference/importDeclarationUsedAsTypeQuery.js +++ b/tests/baselines/reference/importDeclarationUsedAsTypeQuery.js @@ -7,7 +7,7 @@ export class B { //// [importDeclarationUsedAsTypeQuery_1.ts] /// -import a = require('importDeclarationUsedAsTypeQuery_require'); +import a = require('./importDeclarationUsedAsTypeQuery_require'); export var x: typeof a; @@ -27,5 +27,5 @@ export declare class B { } //// [importDeclarationUsedAsTypeQuery_1.d.ts] /// -import a = require('importDeclarationUsedAsTypeQuery_require'); +import a = require('./importDeclarationUsedAsTypeQuery_require'); export declare var x: typeof a; diff --git a/tests/baselines/reference/importDeclarationUsedAsTypeQuery.symbols b/tests/baselines/reference/importDeclarationUsedAsTypeQuery.symbols index 2664691972f..0cd2498e2af 100644 --- a/tests/baselines/reference/importDeclarationUsedAsTypeQuery.symbols +++ b/tests/baselines/reference/importDeclarationUsedAsTypeQuery.symbols @@ -1,6 +1,6 @@ === tests/cases/compiler/importDeclarationUsedAsTypeQuery_1.ts === /// -import a = require('importDeclarationUsedAsTypeQuery_require'); +import a = require('./importDeclarationUsedAsTypeQuery_require'); >a : Symbol(a, Decl(importDeclarationUsedAsTypeQuery_1.ts, 0, 0)) export var x: typeof a; diff --git a/tests/baselines/reference/importDeclarationUsedAsTypeQuery.types b/tests/baselines/reference/importDeclarationUsedAsTypeQuery.types index 2f449c2aa87..5d4c8efc7d4 100644 --- a/tests/baselines/reference/importDeclarationUsedAsTypeQuery.types +++ b/tests/baselines/reference/importDeclarationUsedAsTypeQuery.types @@ -1,6 +1,6 @@ === tests/cases/compiler/importDeclarationUsedAsTypeQuery_1.ts === /// -import a = require('importDeclarationUsedAsTypeQuery_require'); +import a = require('./importDeclarationUsedAsTypeQuery_require'); >a : typeof a export var x: typeof a; diff --git a/tests/baselines/reference/importUsedInExtendsList1.js b/tests/baselines/reference/importUsedInExtendsList1.js index e86b1a41456..129e7b44fd7 100644 --- a/tests/baselines/reference/importUsedInExtendsList1.js +++ b/tests/baselines/reference/importUsedInExtendsList1.js @@ -5,7 +5,7 @@ export class Super { foo: string; } //// [importUsedInExtendsList1_1.ts] /// -import foo = require('importUsedInExtendsList1_require'); +import foo = require('./importUsedInExtendsList1_require'); class Sub extends foo.Super { } var s: Sub; var r: string = s.foo; @@ -25,7 +25,7 @@ var __extends = (this && this.__extends) || function (d, b) { d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __()); }; /// -var foo = require('importUsedInExtendsList1_require'); +var foo = require('./importUsedInExtendsList1_require'); var Sub = (function (_super) { __extends(Sub, _super); function Sub() { diff --git a/tests/baselines/reference/importUsedInExtendsList1.symbols b/tests/baselines/reference/importUsedInExtendsList1.symbols index 1b3ac99ee9d..263b4f50ed8 100644 --- a/tests/baselines/reference/importUsedInExtendsList1.symbols +++ b/tests/baselines/reference/importUsedInExtendsList1.symbols @@ -1,17 +1,17 @@ === tests/cases/compiler/importUsedInExtendsList1_1.ts === /// -import foo = require('importUsedInExtendsList1_require'); +import foo = require('./importUsedInExtendsList1_require'); >foo : Symbol(foo, Decl(importUsedInExtendsList1_1.ts, 0, 0)) class Sub extends foo.Super { } ->Sub : Symbol(Sub, Decl(importUsedInExtendsList1_1.ts, 1, 57)) +>Sub : Symbol(Sub, Decl(importUsedInExtendsList1_1.ts, 1, 59)) >foo.Super : Symbol(foo.Super, Decl(importUsedInExtendsList1_require.ts, 0, 0)) >foo : Symbol(foo, Decl(importUsedInExtendsList1_1.ts, 0, 0)) >Super : Symbol(foo.Super, Decl(importUsedInExtendsList1_require.ts, 0, 0)) var s: Sub; >s : Symbol(s, Decl(importUsedInExtendsList1_1.ts, 3, 3)) ->Sub : Symbol(Sub, Decl(importUsedInExtendsList1_1.ts, 1, 57)) +>Sub : Symbol(Sub, Decl(importUsedInExtendsList1_1.ts, 1, 59)) var r: string = s.foo; >r : Symbol(r, Decl(importUsedInExtendsList1_1.ts, 4, 3)) diff --git a/tests/baselines/reference/importUsedInExtendsList1.types b/tests/baselines/reference/importUsedInExtendsList1.types index 3c1b69f5a83..752f4764976 100644 --- a/tests/baselines/reference/importUsedInExtendsList1.types +++ b/tests/baselines/reference/importUsedInExtendsList1.types @@ -1,6 +1,6 @@ === tests/cases/compiler/importUsedInExtendsList1_1.ts === /// -import foo = require('importUsedInExtendsList1_require'); +import foo = require('./importUsedInExtendsList1_require'); >foo : typeof foo class Sub extends foo.Super { } diff --git a/tests/baselines/reference/importsInAmbientModules1.js b/tests/baselines/reference/importsInAmbientModules1.js new file mode 100644 index 00000000000..4c888f2dfe5 --- /dev/null +++ b/tests/baselines/reference/importsInAmbientModules1.js @@ -0,0 +1,13 @@ +//// [tests/cases/compiler/importsInAmbientModules1.ts] //// + +//// [external.d.ts] + +export var x: number + +//// [main.ts] + +declare module "M" { + import {x} from "external" +} + +//// [main.js] diff --git a/tests/baselines/reference/importsInAmbientModules1.symbols b/tests/baselines/reference/importsInAmbientModules1.symbols new file mode 100644 index 00000000000..d220ba2bf45 --- /dev/null +++ b/tests/baselines/reference/importsInAmbientModules1.symbols @@ -0,0 +1,11 @@ +=== tests/cases/compiler/external.d.ts === + +export var x: number +>x : Symbol(x, Decl(external.d.ts, 1, 10)) + +=== tests/cases/compiler/main.ts === + +declare module "M" { + import {x} from "external" +>x : Symbol(x, Decl(main.ts, 2, 12)) +} diff --git a/tests/baselines/reference/importsInAmbientModules1.types b/tests/baselines/reference/importsInAmbientModules1.types new file mode 100644 index 00000000000..634de9f1f0f --- /dev/null +++ b/tests/baselines/reference/importsInAmbientModules1.types @@ -0,0 +1,11 @@ +=== tests/cases/compiler/external.d.ts === + +export var x: number +>x : number + +=== tests/cases/compiler/main.ts === + +declare module "M" { + import {x} from "external" +>x : number +} diff --git a/tests/baselines/reference/importsInAmbientModules2.js b/tests/baselines/reference/importsInAmbientModules2.js new file mode 100644 index 00000000000..84d5dd84f10 --- /dev/null +++ b/tests/baselines/reference/importsInAmbientModules2.js @@ -0,0 +1,13 @@ +//// [tests/cases/compiler/importsInAmbientModules2.ts] //// + +//// [external.d.ts] + +export default class C {} + +//// [main.ts] + +declare module "M" { + import C from "external" +} + +//// [main.js] diff --git a/tests/baselines/reference/importsInAmbientModules2.symbols b/tests/baselines/reference/importsInAmbientModules2.symbols new file mode 100644 index 00000000000..02333798e8b --- /dev/null +++ b/tests/baselines/reference/importsInAmbientModules2.symbols @@ -0,0 +1,11 @@ +=== tests/cases/compiler/external.d.ts === + +export default class C {} +>C : Symbol(C, Decl(external.d.ts, 0, 0)) + +=== tests/cases/compiler/main.ts === + +declare module "M" { + import C from "external" +>C : Symbol(C, Decl(main.ts, 2, 10)) +} diff --git a/tests/baselines/reference/importsInAmbientModules2.types b/tests/baselines/reference/importsInAmbientModules2.types new file mode 100644 index 00000000000..d6c4eddc07c --- /dev/null +++ b/tests/baselines/reference/importsInAmbientModules2.types @@ -0,0 +1,11 @@ +=== tests/cases/compiler/external.d.ts === + +export default class C {} +>C : C + +=== tests/cases/compiler/main.ts === + +declare module "M" { + import C from "external" +>C : typeof C +} diff --git a/tests/baselines/reference/importsInAmbientModules3.js b/tests/baselines/reference/importsInAmbientModules3.js new file mode 100644 index 00000000000..2a8e09b53e1 --- /dev/null +++ b/tests/baselines/reference/importsInAmbientModules3.js @@ -0,0 +1,13 @@ +//// [tests/cases/compiler/importsInAmbientModules3.ts] //// + +//// [external.d.ts] + +export default class C {} + +//// [main.ts] + +declare module "M" { + import C = require("external"); +} + +//// [main.js] diff --git a/tests/baselines/reference/importsInAmbientModules3.symbols b/tests/baselines/reference/importsInAmbientModules3.symbols new file mode 100644 index 00000000000..15b2c7173dc --- /dev/null +++ b/tests/baselines/reference/importsInAmbientModules3.symbols @@ -0,0 +1,11 @@ +=== tests/cases/compiler/main.ts === + +declare module "M" { + import C = require("external"); +>C : Symbol(C, Decl(main.ts, 1, 20)) +} +=== tests/cases/compiler/external.d.ts === + +export default class C {} +>C : Symbol(C, Decl(external.d.ts, 0, 0)) + diff --git a/tests/baselines/reference/importsInAmbientModules3.types b/tests/baselines/reference/importsInAmbientModules3.types new file mode 100644 index 00000000000..6c613687b08 --- /dev/null +++ b/tests/baselines/reference/importsInAmbientModules3.types @@ -0,0 +1,11 @@ +=== tests/cases/compiler/main.ts === + +declare module "M" { + import C = require("external"); +>C : typeof C +} +=== tests/cases/compiler/external.d.ts === + +export default class C {} +>C : C + diff --git a/tests/baselines/reference/indexersInClassType.types b/tests/baselines/reference/indexersInClassType.types index 8e06bdfbfd3..496526776d9 100644 --- a/tests/baselines/reference/indexersInClassType.types +++ b/tests/baselines/reference/indexersInClassType.types @@ -16,10 +16,10 @@ class C { 'a': {} fn() { ->fn : () => C +>fn : () => this return this; ->this : C +>this : this } } diff --git a/tests/baselines/reference/inheritance1.errors.txt b/tests/baselines/reference/inheritance1.errors.txt index f33dd120e76..d980b884ebf 100644 --- a/tests/baselines/reference/inheritance1.errors.txt +++ b/tests/baselines/reference/inheritance1.errors.txt @@ -7,9 +7,11 @@ tests/cases/compiler/inheritance1.ts(31,1): error TS2322: Type 'Control' is not tests/cases/compiler/inheritance1.ts(37,1): error TS2322: Type 'Control' is not assignable to type 'TextBox'. Property 'select' is missing in type 'Control'. tests/cases/compiler/inheritance1.ts(40,1): error TS2322: Type 'ImageBase' is not assignable to type 'SelectableControl'. + Property 'select' is missing in type 'ImageBase'. tests/cases/compiler/inheritance1.ts(46,1): error TS2322: Type 'Image1' is not assignable to type 'SelectableControl'. Property 'select' is missing in type 'Image1'. tests/cases/compiler/inheritance1.ts(52,1): error TS2322: Type 'Locations' is not assignable to type 'SelectableControl'. + Property 'state' is missing in type 'Locations'. tests/cases/compiler/inheritance1.ts(53,1): error TS2322: Type 'Locations' is not assignable to type 'Control'. Property 'state' is missing in type 'Locations'. tests/cases/compiler/inheritance1.ts(55,1): error TS2322: Type 'Control' is not assignable to type 'Locations'. @@ -77,6 +79,7 @@ tests/cases/compiler/inheritance1.ts(61,1): error TS2322: Type 'Control' is not sc = i; ~~ !!! error TS2322: Type 'ImageBase' is not assignable to type 'SelectableControl'. +!!! error TS2322: Property 'select' is missing in type 'ImageBase'. c = i; i = sc; i = c; @@ -94,6 +97,7 @@ tests/cases/compiler/inheritance1.ts(61,1): error TS2322: Type 'Control' is not sc = l; ~~ !!! error TS2322: Type 'Locations' is not assignable to type 'SelectableControl'. +!!! error TS2322: Property 'state' is missing in type 'Locations'. c = l; ~ !!! error TS2322: Type 'Locations' is not assignable to type 'Control'. diff --git a/tests/baselines/reference/initializersInAmbientEnums.js b/tests/baselines/reference/initializersInAmbientEnums.js new file mode 100644 index 00000000000..21e13ade9c4 --- /dev/null +++ b/tests/baselines/reference/initializersInAmbientEnums.js @@ -0,0 +1,8 @@ +//// [initializersInAmbientEnums.ts] +declare enum E { + a = 10, + b = a, + e = 10 << 2 * 8, +} + +//// [initializersInAmbientEnums.js] diff --git a/tests/baselines/reference/initializersInAmbientEnums.symbols b/tests/baselines/reference/initializersInAmbientEnums.symbols new file mode 100644 index 00000000000..fc4f01b9096 --- /dev/null +++ b/tests/baselines/reference/initializersInAmbientEnums.symbols @@ -0,0 +1,14 @@ +=== tests/cases/compiler/initializersInAmbientEnums.ts === +declare enum E { +>E : Symbol(E, Decl(initializersInAmbientEnums.ts, 0, 0)) + + a = 10, +>a : Symbol(E.a, Decl(initializersInAmbientEnums.ts, 0, 16)) + + b = a, +>b : Symbol(E.b, Decl(initializersInAmbientEnums.ts, 1, 11)) +>a : Symbol(E.a, Decl(initializersInAmbientEnums.ts, 0, 16)) + + e = 10 << 2 * 8, +>e : Symbol(E.e, Decl(initializersInAmbientEnums.ts, 2, 10)) +} diff --git a/tests/baselines/reference/initializersInAmbientEnums.types b/tests/baselines/reference/initializersInAmbientEnums.types new file mode 100644 index 00000000000..40996e9b40a --- /dev/null +++ b/tests/baselines/reference/initializersInAmbientEnums.types @@ -0,0 +1,20 @@ +=== tests/cases/compiler/initializersInAmbientEnums.ts === +declare enum E { +>E : E + + a = 10, +>a : E +>10 : number + + b = a, +>b : E +>a : E + + e = 10 << 2 * 8, +>e : E +>10 << 2 * 8 : number +>10 : number +>2 * 8 : number +>2 : number +>8 : number +} diff --git a/tests/baselines/reference/initializersInDeclarations.errors.txt b/tests/baselines/reference/initializersInDeclarations.errors.txt index 9840181e092..a3eeecfe253 100644 --- a/tests/baselines/reference/initializersInDeclarations.errors.txt +++ b/tests/baselines/reference/initializersInDeclarations.errors.txt @@ -1,6 +1,6 @@ tests/cases/conformance/externalModules/initializersInDeclarations.ts(5,9): error TS1039: Initializers are not allowed in ambient contexts. tests/cases/conformance/externalModules/initializersInDeclarations.ts(6,16): error TS1039: Initializers are not allowed in ambient contexts. -tests/cases/conformance/externalModules/initializersInDeclarations.ts(7,16): error TS1184: An implementation cannot be declared in ambient contexts. +tests/cases/conformance/externalModules/initializersInDeclarations.ts(7,16): error TS1183: An implementation cannot be declared in ambient contexts. tests/cases/conformance/externalModules/initializersInDeclarations.ts(12,15): error TS1039: Initializers are not allowed in ambient contexts. tests/cases/conformance/externalModules/initializersInDeclarations.ts(13,15): error TS1039: Initializers are not allowed in ambient contexts. tests/cases/conformance/externalModules/initializersInDeclarations.ts(16,2): error TS1036: Statements are not allowed in ambient contexts. @@ -20,7 +20,7 @@ tests/cases/conformance/externalModules/initializersInDeclarations.ts(18,16): er !!! error TS1039: Initializers are not allowed in ambient contexts. fn(): boolean { ~ -!!! error TS1184: An implementation cannot be declared in ambient contexts. +!!! error TS1183: An implementation cannot be declared in ambient contexts. return false; } } diff --git a/tests/baselines/reference/instanceAndStaticDeclarations1.symbols b/tests/baselines/reference/instanceAndStaticDeclarations1.symbols index 518d899eabf..d6b4789232c 100644 --- a/tests/baselines/reference/instanceAndStaticDeclarations1.symbols +++ b/tests/baselines/reference/instanceAndStaticDeclarations1.symbols @@ -18,18 +18,18 @@ class Point { >this.x : Symbol(x, Decl(instanceAndStaticDeclarations1.ts, 3, 16)) >this : Symbol(Point, Decl(instanceAndStaticDeclarations1.ts, 0, 0)) >x : Symbol(x, Decl(instanceAndStaticDeclarations1.ts, 3, 16)) ->p.x : Symbol(x, Decl(instanceAndStaticDeclarations1.ts, 3, 16)) +>p.x : Symbol(Point.x, Decl(instanceAndStaticDeclarations1.ts, 3, 16)) >p : Symbol(p, Decl(instanceAndStaticDeclarations1.ts, 4, 20)) ->x : Symbol(x, Decl(instanceAndStaticDeclarations1.ts, 3, 16)) +>x : Symbol(Point.x, Decl(instanceAndStaticDeclarations1.ts, 3, 16)) var dy = this.y - p.y; >dy : Symbol(dy, Decl(instanceAndStaticDeclarations1.ts, 6, 11)) >this.y : Symbol(y, Decl(instanceAndStaticDeclarations1.ts, 3, 33)) >this : Symbol(Point, Decl(instanceAndStaticDeclarations1.ts, 0, 0)) >y : Symbol(y, Decl(instanceAndStaticDeclarations1.ts, 3, 33)) ->p.y : Symbol(y, Decl(instanceAndStaticDeclarations1.ts, 3, 33)) +>p.y : Symbol(Point.y, Decl(instanceAndStaticDeclarations1.ts, 3, 33)) >p : Symbol(p, Decl(instanceAndStaticDeclarations1.ts, 4, 20)) ->y : Symbol(y, Decl(instanceAndStaticDeclarations1.ts, 3, 33)) +>y : Symbol(Point.y, Decl(instanceAndStaticDeclarations1.ts, 3, 33)) return Math.sqrt(dx * dx + dy * dy); >Math.sqrt : Symbol(Math.sqrt, Decl(lib.d.ts, 620, 27)) @@ -50,8 +50,8 @@ class Point { >Point : Symbol(Point, Decl(instanceAndStaticDeclarations1.ts, 0, 0)) >p2 : Symbol(p2, Decl(instanceAndStaticDeclarations1.ts, 10, 30)) >Point : Symbol(Point, Decl(instanceAndStaticDeclarations1.ts, 0, 0)) ->p1.distance : Symbol(distance, Decl(instanceAndStaticDeclarations1.ts, 3, 55)) +>p1.distance : Symbol(Point.distance, Decl(instanceAndStaticDeclarations1.ts, 3, 55)) >p1 : Symbol(p1, Decl(instanceAndStaticDeclarations1.ts, 10, 20)) ->distance : Symbol(distance, Decl(instanceAndStaticDeclarations1.ts, 3, 55)) +>distance : Symbol(Point.distance, Decl(instanceAndStaticDeclarations1.ts, 3, 55)) >p2 : Symbol(p2, Decl(instanceAndStaticDeclarations1.ts, 10, 30)) } diff --git a/tests/baselines/reference/instanceAndStaticDeclarations1.types b/tests/baselines/reference/instanceAndStaticDeclarations1.types index 9d6ba692735..cbed990690d 100644 --- a/tests/baselines/reference/instanceAndStaticDeclarations1.types +++ b/tests/baselines/reference/instanceAndStaticDeclarations1.types @@ -17,7 +17,7 @@ class Point { >dx : number >this.x - p.x : number >this.x : number ->this : Point +>this : this >x : number >p.x : number >p : Point @@ -27,7 +27,7 @@ class Point { >dy : number >this.y - p.y : number >this.y : number ->this : Point +>this : this >y : number >p.y : number >p : Point diff --git a/tests/baselines/reference/interfaceContextualType.types b/tests/baselines/reference/interfaceContextualType.types index 4b932a71538..e827f9a9d9b 100644 --- a/tests/baselines/reference/interfaceContextualType.types +++ b/tests/baselines/reference/interfaceContextualType.types @@ -29,7 +29,7 @@ class Bug { this.values = {}; >this.values = {} : { [x: string]: undefined; } >this.values : IMap ->this : Bug +>this : this >values : IMap >{} : { [x: string]: undefined; } @@ -37,7 +37,7 @@ class Bug { >this.values['comments'] = { italic: true } : { italic: boolean; } >this.values['comments'] : IOptions >this.values : IMap ->this : Bug +>this : this >values : IMap >'comments' : string >{ italic: true } : { italic: boolean; } @@ -50,7 +50,7 @@ class Bug { this.values = { >this.values = { comments: { italic: true } } : { [x: string]: { italic: boolean; }; comments: { italic: boolean; }; } >this.values : IMap ->this : Bug +>this : this >values : IMap >{ comments: { italic: true } } : { [x: string]: { italic: boolean; }; comments: { italic: boolean; }; } diff --git a/tests/baselines/reference/isolatedModulesPlainFile-UMD.js b/tests/baselines/reference/isolatedModulesPlainFile-UMD.js index 0ed6e83a37f..b4f8cf436ec 100644 --- a/tests/baselines/reference/isolatedModulesPlainFile-UMD.js +++ b/tests/baselines/reference/isolatedModulesPlainFile-UMD.js @@ -5,13 +5,13 @@ run(1); //// [isolatedModulesPlainFile-UMD.js] -(function (deps, factory) { +(function (factory) { if (typeof module === 'object' && typeof module.exports === 'object') { var v = factory(require, exports); if (v !== undefined) module.exports = v; } else if (typeof define === 'function' && define.amd) { - define(deps, factory); + define(["require", "exports"], factory); } -})(["require", "exports"], function (require, exports) { +})(function (require, exports) { run(1); }); diff --git a/tests/baselines/reference/iterableArrayPattern1.types b/tests/baselines/reference/iterableArrayPattern1.types index 2cfd2354f31..a2c9807d26a 100644 --- a/tests/baselines/reference/iterableArrayPattern1.types +++ b/tests/baselines/reference/iterableArrayPattern1.types @@ -32,6 +32,6 @@ class SymbolIterator { >iterator : symbol return this; ->this : SymbolIterator +>this : this } } diff --git a/tests/baselines/reference/iterableArrayPattern11.types b/tests/baselines/reference/iterableArrayPattern11.types index 3118e748d6f..5ec182ec397 100644 --- a/tests/baselines/reference/iterableArrayPattern11.types +++ b/tests/baselines/reference/iterableArrayPattern11.types @@ -48,6 +48,6 @@ class FooIterator { >iterator : symbol return this; ->this : FooIterator +>this : this } } diff --git a/tests/baselines/reference/iterableArrayPattern12.types b/tests/baselines/reference/iterableArrayPattern12.types index b32c2ff7dc8..89af4d47d01 100644 --- a/tests/baselines/reference/iterableArrayPattern12.types +++ b/tests/baselines/reference/iterableArrayPattern12.types @@ -48,6 +48,6 @@ class FooIterator { >iterator : symbol return this; ->this : FooIterator +>this : this } } diff --git a/tests/baselines/reference/iterableArrayPattern13.types b/tests/baselines/reference/iterableArrayPattern13.types index 556a871f5a8..e8873a74b72 100644 --- a/tests/baselines/reference/iterableArrayPattern13.types +++ b/tests/baselines/reference/iterableArrayPattern13.types @@ -46,6 +46,6 @@ class FooIterator { >iterator : symbol return this; ->this : FooIterator +>this : this } } diff --git a/tests/baselines/reference/iterableArrayPattern2.types b/tests/baselines/reference/iterableArrayPattern2.types index bd58cb86b79..48f44443591 100644 --- a/tests/baselines/reference/iterableArrayPattern2.types +++ b/tests/baselines/reference/iterableArrayPattern2.types @@ -32,6 +32,6 @@ class SymbolIterator { >iterator : symbol return this; ->this : SymbolIterator +>this : this } } diff --git a/tests/baselines/reference/iterableArrayPattern3.types b/tests/baselines/reference/iterableArrayPattern3.types index fed5c7f07d3..dd001d46376 100644 --- a/tests/baselines/reference/iterableArrayPattern3.types +++ b/tests/baselines/reference/iterableArrayPattern3.types @@ -49,6 +49,6 @@ class FooIterator { >iterator : symbol return this; ->this : FooIterator +>this : this } } diff --git a/tests/baselines/reference/iterableArrayPattern30.symbols b/tests/baselines/reference/iterableArrayPattern30.symbols index 523d81cde2d..5a991f0d5b3 100644 --- a/tests/baselines/reference/iterableArrayPattern30.symbols +++ b/tests/baselines/reference/iterableArrayPattern30.symbols @@ -4,5 +4,5 @@ const [[k1, v1], [k2, v2]] = new Map([["", true], ["hello", true]]) >v1 : Symbol(v1, Decl(iterableArrayPattern30.ts, 0, 11)) >k2 : Symbol(k2, Decl(iterableArrayPattern30.ts, 0, 18)) >v2 : Symbol(v2, Decl(iterableArrayPattern30.ts, 0, 21)) ->Map : Symbol(Map, Decl(lib.d.ts, 4608, 1), Decl(lib.d.ts, 4631, 11)) +>Map : Symbol(Map, Decl(lib.d.ts, 4635, 1), Decl(lib.d.ts, 4658, 11)) diff --git a/tests/baselines/reference/iterableArrayPattern4.types b/tests/baselines/reference/iterableArrayPattern4.types index 8f05a454b53..2d6531494a4 100644 --- a/tests/baselines/reference/iterableArrayPattern4.types +++ b/tests/baselines/reference/iterableArrayPattern4.types @@ -50,6 +50,6 @@ class FooIterator { >iterator : symbol return this; ->this : FooIterator +>this : this } } diff --git a/tests/baselines/reference/iterableArrayPattern9.types b/tests/baselines/reference/iterableArrayPattern9.types index 03cfa31b621..e9e342e7775 100644 --- a/tests/baselines/reference/iterableArrayPattern9.types +++ b/tests/baselines/reference/iterableArrayPattern9.types @@ -42,6 +42,6 @@ class FooIterator { >iterator : symbol return this; ->this : FooIterator +>this : this } } diff --git a/tests/baselines/reference/iterableContextualTyping1.symbols b/tests/baselines/reference/iterableContextualTyping1.symbols index 52f5f2d0b17..f23d571d072 100644 --- a/tests/baselines/reference/iterableContextualTyping1.symbols +++ b/tests/baselines/reference/iterableContextualTyping1.symbols @@ -1,7 +1,7 @@ === tests/cases/conformance/expressions/contextualTyping/iterableContextualTyping1.ts === var iter: Iterable<(x: string) => number> = [s => s.length]; >iter : Symbol(iter, Decl(iterableContextualTyping1.ts, 0, 3)) ->Iterable : Symbol(Iterable, Decl(lib.d.ts, 4369, 1)) +>Iterable : Symbol(Iterable, Decl(lib.d.ts, 4396, 1)) >x : Symbol(x, Decl(iterableContextualTyping1.ts, 0, 20)) >s : Symbol(s, Decl(iterableContextualTyping1.ts, 0, 45)) >s.length : Symbol(String.length, Decl(lib.d.ts, 414, 19)) diff --git a/tests/baselines/reference/iteratorSpreadInArray.types b/tests/baselines/reference/iteratorSpreadInArray.types index 2c4a1d207ef..780acf32fab 100644 --- a/tests/baselines/reference/iteratorSpreadInArray.types +++ b/tests/baselines/reference/iteratorSpreadInArray.types @@ -33,6 +33,6 @@ class SymbolIterator { >iterator : symbol return this; ->this : SymbolIterator +>this : this } } diff --git a/tests/baselines/reference/iteratorSpreadInArray11.symbols b/tests/baselines/reference/iteratorSpreadInArray11.symbols index c18c9095f50..a46d22a481a 100644 --- a/tests/baselines/reference/iteratorSpreadInArray11.symbols +++ b/tests/baselines/reference/iteratorSpreadInArray11.symbols @@ -1,7 +1,7 @@ === tests/cases/conformance/es6/spread/iteratorSpreadInArray11.ts === var iter: Iterable; >iter : Symbol(iter, Decl(iteratorSpreadInArray11.ts, 0, 3)) ->Iterable : Symbol(Iterable, Decl(lib.d.ts, 4369, 1)) +>Iterable : Symbol(Iterable, Decl(lib.d.ts, 4396, 1)) var array = [...iter]; >array : Symbol(array, Decl(iteratorSpreadInArray11.ts, 1, 3)) diff --git a/tests/baselines/reference/iteratorSpreadInArray2.types b/tests/baselines/reference/iteratorSpreadInArray2.types index a59c2cf6c67..f2e64e5282e 100644 --- a/tests/baselines/reference/iteratorSpreadInArray2.types +++ b/tests/baselines/reference/iteratorSpreadInArray2.types @@ -36,7 +36,7 @@ class SymbolIterator { >iterator : symbol return this; ->this : SymbolIterator +>this : this } } @@ -66,6 +66,6 @@ class NumberIterator { >iterator : symbol return this; ->this : NumberIterator +>this : this } } diff --git a/tests/baselines/reference/iteratorSpreadInArray3.types b/tests/baselines/reference/iteratorSpreadInArray3.types index 0374f28b6b9..a59da81e157 100644 --- a/tests/baselines/reference/iteratorSpreadInArray3.types +++ b/tests/baselines/reference/iteratorSpreadInArray3.types @@ -37,6 +37,6 @@ class SymbolIterator { >iterator : symbol return this; ->this : SymbolIterator +>this : this } } diff --git a/tests/baselines/reference/iteratorSpreadInArray4.types b/tests/baselines/reference/iteratorSpreadInArray4.types index d9a304421ba..0e16758acf4 100644 --- a/tests/baselines/reference/iteratorSpreadInArray4.types +++ b/tests/baselines/reference/iteratorSpreadInArray4.types @@ -35,6 +35,6 @@ class SymbolIterator { >iterator : symbol return this; ->this : SymbolIterator +>this : this } } diff --git a/tests/baselines/reference/iteratorSpreadInArray7.types b/tests/baselines/reference/iteratorSpreadInArray7.types index f207a56f3d5..6a279838060 100644 --- a/tests/baselines/reference/iteratorSpreadInArray7.types +++ b/tests/baselines/reference/iteratorSpreadInArray7.types @@ -39,6 +39,6 @@ class SymbolIterator { >iterator : symbol return this; ->this : SymbolIterator +>this : this } } diff --git a/tests/baselines/reference/iteratorSpreadInCall11.types b/tests/baselines/reference/iteratorSpreadInCall11.types index edce8b10355..dd440a1b4ac 100644 --- a/tests/baselines/reference/iteratorSpreadInCall11.types +++ b/tests/baselines/reference/iteratorSpreadInCall11.types @@ -42,6 +42,6 @@ class SymbolIterator { >iterator : symbol return this; ->this : SymbolIterator +>this : this } } diff --git a/tests/baselines/reference/iteratorSpreadInCall12.types b/tests/baselines/reference/iteratorSpreadInCall12.types index 4307daa78b0..5e3e7bcdbc4 100644 --- a/tests/baselines/reference/iteratorSpreadInCall12.types +++ b/tests/baselines/reference/iteratorSpreadInCall12.types @@ -49,7 +49,7 @@ class SymbolIterator { >iterator : symbol return this; ->this : SymbolIterator +>this : this } } @@ -79,6 +79,6 @@ class StringIterator { >iterator : symbol return this; ->this : StringIterator +>this : this } } diff --git a/tests/baselines/reference/iteratorSpreadInCall3.types b/tests/baselines/reference/iteratorSpreadInCall3.types index b566c3866ff..54857755b55 100644 --- a/tests/baselines/reference/iteratorSpreadInCall3.types +++ b/tests/baselines/reference/iteratorSpreadInCall3.types @@ -37,6 +37,6 @@ class SymbolIterator { >iterator : symbol return this; ->this : SymbolIterator +>this : this } } diff --git a/tests/baselines/reference/iteratorSpreadInCall5.types b/tests/baselines/reference/iteratorSpreadInCall5.types index 631ad940554..043536ab4c0 100644 --- a/tests/baselines/reference/iteratorSpreadInCall5.types +++ b/tests/baselines/reference/iteratorSpreadInCall5.types @@ -40,7 +40,7 @@ class SymbolIterator { >iterator : symbol return this; ->this : SymbolIterator +>this : this } } @@ -70,6 +70,6 @@ class StringIterator { >iterator : symbol return this; ->this : StringIterator +>this : this } } diff --git a/tests/baselines/reference/keywordInJsxIdentifier.js b/tests/baselines/reference/keywordInJsxIdentifier.js new file mode 100644 index 00000000000..677a79138e6 --- /dev/null +++ b/tests/baselines/reference/keywordInJsxIdentifier.js @@ -0,0 +1,14 @@ +//// [keywordInJsxIdentifier.tsx] + +declare var React: any; +; +; +; +; + + +//// [keywordInJsxIdentifier.js] +React.createElement("foo", {"class-id": true}); +React.createElement("foo", {"class": true}); +React.createElement("foo", {"class-id": "1"}); +React.createElement("foo", {"class": "1"}); diff --git a/tests/baselines/reference/keywordInJsxIdentifier.symbols b/tests/baselines/reference/keywordInJsxIdentifier.symbols new file mode 100644 index 00000000000..874d7801a7f --- /dev/null +++ b/tests/baselines/reference/keywordInJsxIdentifier.symbols @@ -0,0 +1,17 @@ +=== tests/cases/compiler/keywordInJsxIdentifier.tsx === + +declare var React: any; +>React : Symbol(React, Decl(keywordInJsxIdentifier.tsx, 1, 11)) + +; +>class-id : Symbol(unknown) + +; +>class : Symbol(unknown) + +; +>class-id : Symbol(unknown) + +; +>class : Symbol(unknown) + diff --git a/tests/baselines/reference/keywordInJsxIdentifier.types b/tests/baselines/reference/keywordInJsxIdentifier.types new file mode 100644 index 00000000000..745fa5998b5 --- /dev/null +++ b/tests/baselines/reference/keywordInJsxIdentifier.types @@ -0,0 +1,25 @@ +=== tests/cases/compiler/keywordInJsxIdentifier.tsx === + +declare var React: any; +>React : any + +; +> : any +>foo : any +>class-id : any + +; +> : any +>foo : any +>class : any + +; +> : any +>foo : any +>class-id : any + +; +> : any +>foo : any +>class : any + diff --git a/tests/baselines/reference/listFailure.types b/tests/baselines/reference/listFailure.types index 05c3cb5dfad..03725efeca4 100644 --- a/tests/baselines/reference/listFailure.types +++ b/tests/baselines/reference/listFailure.types @@ -30,7 +30,7 @@ module Editor { >this.lines.add(line) : List >this.lines.add : (data: Line) => List >this.lines : List ->this : Buffer +>this : this >lines : List >add : (data: Line) => List >line : Line @@ -94,7 +94,7 @@ module Editor { this.next = ListMakeEntry(data); >this.next = ListMakeEntry(data) : List >this.next : List ->this : List +>this : this >next : List >ListMakeEntry(data) : List >ListMakeEntry : (data: U) => List @@ -102,7 +102,7 @@ module Editor { return this.next; >this.next : List ->this : List +>this : this >next : List } @@ -119,7 +119,7 @@ module Editor { >ListRemoveEntry(this.next) : List >ListRemoveEntry : (entry: List) => List >this.next : List ->this : List +>this : this >next : List } } diff --git a/tests/baselines/reference/localAliasExportAssignment.js b/tests/baselines/reference/localAliasExportAssignment.js index ce0f57d57cb..686ab4126a2 100644 --- a/tests/baselines/reference/localAliasExportAssignment.js +++ b/tests/baselines/reference/localAliasExportAssignment.js @@ -9,7 +9,7 @@ export = server; //// [localAliasExportAssignment_1.ts] /// -import connect = require('localAliasExportAssignment_0'); +import connect = require('./localAliasExportAssignment_0'); connect(); @@ -21,5 +21,5 @@ var server; module.exports = server; //// [localAliasExportAssignment_1.js] /// -var connect = require('localAliasExportAssignment_0'); +var connect = require('./localAliasExportAssignment_0'); connect(); diff --git a/tests/baselines/reference/localAliasExportAssignment.symbols b/tests/baselines/reference/localAliasExportAssignment.symbols index 43c99941384..0c73dfd79de 100644 --- a/tests/baselines/reference/localAliasExportAssignment.symbols +++ b/tests/baselines/reference/localAliasExportAssignment.symbols @@ -1,6 +1,6 @@ === tests/cases/compiler/localAliasExportAssignment_1.ts === /// -import connect = require('localAliasExportAssignment_0'); +import connect = require('./localAliasExportAssignment_0'); >connect : Symbol(connect, Decl(localAliasExportAssignment_1.ts, 0, 0)) connect(); diff --git a/tests/baselines/reference/localAliasExportAssignment.types b/tests/baselines/reference/localAliasExportAssignment.types index 5ea0d3085c1..f83b63fedb7 100644 --- a/tests/baselines/reference/localAliasExportAssignment.types +++ b/tests/baselines/reference/localAliasExportAssignment.types @@ -1,6 +1,6 @@ === tests/cases/compiler/localAliasExportAssignment_1.ts === /// -import connect = require('localAliasExportAssignment_0'); +import connect = require('./localAliasExportAssignment_0'); >connect : () => any connect(); diff --git a/tests/baselines/reference/localTypes5.types b/tests/baselines/reference/localTypes5.types index b12e362f754..54e28d35a32 100644 --- a/tests/baselines/reference/localTypes5.types +++ b/tests/baselines/reference/localTypes5.types @@ -36,9 +36,9 @@ function foo() { return x.m(); >x.m() : X.m..Y ->x.m : () => .Y +>x.m : () => X.m..Y >x : X ->m : () => .Y +>m : () => X.m..Y } var x = foo(); >x : foo.X.m..Y diff --git a/tests/baselines/reference/memberVariableDeclarations1.types b/tests/baselines/reference/memberVariableDeclarations1.types index 9aec8aa12aa..b7ec0fbaba0 100644 --- a/tests/baselines/reference/memberVariableDeclarations1.types +++ b/tests/baselines/reference/memberVariableDeclarations1.types @@ -49,21 +49,21 @@ class Employee2 { this.retired = false; >this.retired = false : boolean >this.retired : boolean ->this : Employee2 +>this : this >retired : boolean >false : boolean this.manager = null; >this.manager = null : null >this.manager : Employee ->this : Employee2 +>this : this >manager : Employee >null : null this.reports = []; >this.reports = [] : undefined[] >this.reports : Employee[] ->this : Employee2 +>this : this >reports : Employee[] >[] : undefined[] } diff --git a/tests/baselines/reference/methodInAmbientClass1.errors.txt b/tests/baselines/reference/methodInAmbientClass1.errors.txt index 05183378a85..2badd839270 100644 --- a/tests/baselines/reference/methodInAmbientClass1.errors.txt +++ b/tests/baselines/reference/methodInAmbientClass1.errors.txt @@ -1,5 +1,5 @@ tests/cases/compiler/methodInAmbientClass1.ts(2,12): 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/methodInAmbientClass1.ts(2,20): error TS1184: An implementation cannot be declared in ambient contexts. +tests/cases/compiler/methodInAmbientClass1.ts(2,20): error TS1183: An implementation cannot be declared in ambient contexts. ==== tests/cases/compiler/methodInAmbientClass1.ts (2 errors) ==== @@ -8,6 +8,6 @@ tests/cases/compiler/methodInAmbientClass1.ts(2,20): error TS1184: An implementa ~~~~~~~ !!! error TS2355: A function whose declared type is neither 'void' nor 'any' must return a value or consist of a single 'throw' statement. ~ -!!! error TS1184: An implementation cannot be declared in ambient contexts. +!!! error TS1183: An implementation cannot be declared in ambient contexts. } } \ No newline at end of file diff --git a/tests/baselines/reference/missingAndExcessProperties.errors.txt b/tests/baselines/reference/missingAndExcessProperties.errors.txt new file mode 100644 index 00000000000..0ee69d9af30 --- /dev/null +++ b/tests/baselines/reference/missingAndExcessProperties.errors.txt @@ -0,0 +1,97 @@ +tests/cases/conformance/es6/destructuring/missingAndExcessProperties.ts(3,11): error TS2525: Initializer provides no value for this binding element and the binding element has no default value. +tests/cases/conformance/es6/destructuring/missingAndExcessProperties.ts(3,14): error TS2525: Initializer provides no value for this binding element and the binding element has no default value. +tests/cases/conformance/es6/destructuring/missingAndExcessProperties.ts(4,11): error TS2403: Subsequent variable declarations must have the same type. Variable 'x' must be of type 'any', but here has type 'number'. +tests/cases/conformance/es6/destructuring/missingAndExcessProperties.ts(4,18): error TS2525: Initializer provides no value for this binding element and the binding element has no default value. +tests/cases/conformance/es6/destructuring/missingAndExcessProperties.ts(5,11): error TS2525: Initializer provides no value for this binding element and the binding element has no default value. +tests/cases/conformance/es6/destructuring/missingAndExcessProperties.ts(5,14): error TS2403: Subsequent variable declarations must have the same type. Variable 'y' must be of type 'any', but here has type 'number'. +tests/cases/conformance/es6/destructuring/missingAndExcessProperties.ts(6,11): error TS2403: Subsequent variable declarations must have the same type. Variable 'x' must be of type 'any', but here has type 'number'. +tests/cases/conformance/es6/destructuring/missingAndExcessProperties.ts(6,18): error TS2403: Subsequent variable declarations must have the same type. Variable 'y' must be of type 'any', but here has type 'number'. +tests/cases/conformance/es6/destructuring/missingAndExcessProperties.ts(12,8): error TS2525: Initializer provides no value for this binding element and the binding element has no default value. +tests/cases/conformance/es6/destructuring/missingAndExcessProperties.ts(12,11): error TS2525: Initializer provides no value for this binding element and the binding element has no default value. +tests/cases/conformance/es6/destructuring/missingAndExcessProperties.ts(13,18): error TS2525: Initializer provides no value for this binding element and the binding element has no default value. +tests/cases/conformance/es6/destructuring/missingAndExcessProperties.ts(14,8): error TS2525: Initializer provides no value for this binding element and the binding element has no default value. +tests/cases/conformance/es6/destructuring/missingAndExcessProperties.ts(20,17): error TS2353: Object literal may only specify known properties, and 'x' does not exist in type '{}'. +tests/cases/conformance/es6/destructuring/missingAndExcessProperties.ts(20,23): error TS2353: Object literal may only specify known properties, and 'y' does not exist in type '{}'. +tests/cases/conformance/es6/destructuring/missingAndExcessProperties.ts(21,25): error TS2353: Object literal may only specify known properties, and 'y' does not exist in type '{ x: any; }'. +tests/cases/conformance/es6/destructuring/missingAndExcessProperties.ts(22,19): error TS2353: Object literal may only specify known properties, and 'x' does not exist in type '{ y: any; }'. +tests/cases/conformance/es6/destructuring/missingAndExcessProperties.ts(29,14): error TS2353: Object literal may only specify known properties, and 'x' does not exist in type '{}'. +tests/cases/conformance/es6/destructuring/missingAndExcessProperties.ts(29,20): error TS2353: Object literal may only specify known properties, and 'y' does not exist in type '{}'. +tests/cases/conformance/es6/destructuring/missingAndExcessProperties.ts(30,22): error TS2353: Object literal may only specify known properties, and 'y' does not exist in type '{ x: number; }'. +tests/cases/conformance/es6/destructuring/missingAndExcessProperties.ts(31,16): error TS2353: Object literal may only specify known properties, and 'x' does not exist in type '{ y: number; }'. + + +==== tests/cases/conformance/es6/destructuring/missingAndExcessProperties.ts (20 errors) ==== + // Missing properties + function f1() { + var { x, y } = {}; + ~ +!!! error TS2525: Initializer provides no value for this binding element and the binding element has no default value. + ~ +!!! error TS2525: Initializer provides no value for this binding element and the binding element has no default value. + var { x = 1, y } = {}; + ~ +!!! error TS2403: Subsequent variable declarations must have the same type. Variable 'x' must be of type 'any', but here has type 'number'. + ~ +!!! error TS2525: Initializer provides no value for this binding element and the binding element has no default value. + var { x, y = 1 } = {}; + ~ +!!! error TS2525: Initializer provides no value for this binding element and the binding element has no default value. + ~ +!!! error TS2403: Subsequent variable declarations must have the same type. Variable 'y' must be of type 'any', but here has type 'number'. + var { x = 1, y = 1 } = {}; + ~ +!!! error TS2403: Subsequent variable declarations must have the same type. Variable 'x' must be of type 'any', but here has type 'number'. + ~ +!!! error TS2403: Subsequent variable declarations must have the same type. Variable 'y' must be of type 'any', but here has type 'number'. + } + + // Missing properties + function f2() { + var x: number, y: number; + ({ x, y } = {}); + ~ +!!! error TS2525: Initializer provides no value for this binding element and the binding element has no default value. + ~ +!!! error TS2525: Initializer provides no value for this binding element and the binding element has no default value. + ({ x: x = 1, y } = {}); + ~ +!!! error TS2525: Initializer provides no value for this binding element and the binding element has no default value. + ({ x, y: y = 1 } = {}); + ~ +!!! error TS2525: Initializer provides no value for this binding element and the binding element has no default value. + ({ x: x = 1, y: y = 1 } = {}); + } + + // Excess properties + function f3() { + var { } = { x: 0, y: 0 }; + ~ +!!! error TS2353: Object literal may only specify known properties, and 'x' does not exist in type '{}'. + ~ +!!! error TS2353: Object literal may only specify known properties, and 'y' does not exist in type '{}'. + var { x } = { x: 0, y: 0 }; + ~ +!!! error TS2353: Object literal may only specify known properties, and 'y' does not exist in type '{ x: any; }'. + var { y } = { x: 0, y: 0 }; + ~ +!!! error TS2353: Object literal may only specify known properties, and 'x' does not exist in type '{ y: any; }'. + var { x, y } = { x: 0, y: 0 }; + } + + // Excess properties + function f4() { + var x: number, y: number; + ({ } = { x: 0, y: 0 }); + ~ +!!! error TS2353: Object literal may only specify known properties, and 'x' does not exist in type '{}'. + ~ +!!! error TS2353: Object literal may only specify known properties, and 'y' does not exist in type '{}'. + ({ x } = { x: 0, y: 0 }); + ~ +!!! error TS2353: Object literal may only specify known properties, and 'y' does not exist in type '{ x: number; }'. + ({ y } = { x: 0, y: 0 }); + ~ +!!! error TS2353: Object literal may only specify known properties, and 'x' does not exist in type '{ y: number; }'. + ({ x, y } = { x: 0, y: 0 }); + } + \ No newline at end of file diff --git a/tests/baselines/reference/missingAndExcessProperties.js b/tests/baselines/reference/missingAndExcessProperties.js new file mode 100644 index 00000000000..b9fcadd9519 --- /dev/null +++ b/tests/baselines/reference/missingAndExcessProperties.js @@ -0,0 +1,69 @@ +//// [missingAndExcessProperties.ts] +// Missing properties +function f1() { + var { x, y } = {}; + var { x = 1, y } = {}; + var { x, y = 1 } = {}; + var { x = 1, y = 1 } = {}; +} + +// Missing properties +function f2() { + var x: number, y: number; + ({ x, y } = {}); + ({ x: x = 1, y } = {}); + ({ x, y: y = 1 } = {}); + ({ x: x = 1, y: y = 1 } = {}); +} + +// Excess properties +function f3() { + var { } = { x: 0, y: 0 }; + var { x } = { x: 0, y: 0 }; + var { y } = { x: 0, y: 0 }; + var { x, y } = { x: 0, y: 0 }; +} + +// Excess properties +function f4() { + var x: number, y: number; + ({ } = { x: 0, y: 0 }); + ({ x } = { x: 0, y: 0 }); + ({ y } = { x: 0, y: 0 }); + ({ x, y } = { x: 0, y: 0 }); +} + + +//// [missingAndExcessProperties.js] +// Missing properties +function f1() { + var _a = {}, x = _a.x, y = _a.y; + var _b = {}, _c = _b.x, x = _c === void 0 ? 1 : _c, y = _b.y; + var _d = {}, x = _d.x, _e = _d.y, y = _e === void 0 ? 1 : _e; + var _f = {}, _g = _f.x, x = _g === void 0 ? 1 : _g, _h = _f.y, y = _h === void 0 ? 1 : _h; +} +// Missing properties +function f2() { + var x, y; + (_a = {}, x = _a.x, y = _a.y, _a); + (_b = {}, _c = _b.x, x = _c === void 0 ? 1 : _c, y = _b.y, _b); + (_d = {}, x = _d.x, _e = _d.y, y = _e === void 0 ? 1 : _e, _d); + (_f = {}, _g = _f.x, x = _g === void 0 ? 1 : _g, _h = _f.y, y = _h === void 0 ? 1 : _h, _f); + var _a, _b, _c, _d, _e, _f, _g, _h; +} +// Excess properties +function f3() { + var _a = { x: 0, y: 0 }; + var x = { x: 0, y: 0 }.x; + var y = { x: 0, y: 0 }.y; + var _b = { x: 0, y: 0 }, x = _b.x, y = _b.y; +} +// Excess properties +function f4() { + var x, y; + ({ x: 0, y: 0 }); + (_a = { x: 0, y: 0 }, x = _a.x, _a); + (_b = { x: 0, y: 0 }, y = _b.y, _b); + (_c = { x: 0, y: 0 }, x = _c.x, y = _c.y, _c); + var _a, _b, _c; +} diff --git a/tests/baselines/reference/missingSelf.types b/tests/baselines/reference/missingSelf.types index 5b46bf85db1..ea275e41a0c 100644 --- a/tests/baselines/reference/missingSelf.types +++ b/tests/baselines/reference/missingSelf.types @@ -6,7 +6,7 @@ class CalcButton >a : () => void >this.onClick() : void >this.onClick : () => void ->this : CalcButton +>this : this >onClick : () => void public onClick() { } @@ -21,7 +21,7 @@ class CalcButton2 >() => this.onClick() : () => void >this.onClick() : void >this.onClick : () => void ->this : CalcButton2 +>this : this >onClick : () => void public onClick() { } diff --git a/tests/baselines/reference/moduleInTypePosition1.errors.txt b/tests/baselines/reference/moduleInTypePosition1.errors.txt index a5b5076e172..ff5fa2da4eb 100644 --- a/tests/baselines/reference/moduleInTypePosition1.errors.txt +++ b/tests/baselines/reference/moduleInTypePosition1.errors.txt @@ -3,7 +3,7 @@ tests/cases/compiler/moduleInTypePosition1_1.ts(3,14): error TS2304: Cannot find ==== tests/cases/compiler/moduleInTypePosition1_1.ts (1 errors) ==== /// - import WinJS = require('moduleInTypePosition1_0'); + import WinJS = require('./moduleInTypePosition1_0'); var x = (w1: WinJS) => { }; ~~~~~ !!! error TS2304: Cannot find name 'WinJS'. diff --git a/tests/baselines/reference/moduleInTypePosition1.js b/tests/baselines/reference/moduleInTypePosition1.js index 972bbae63d1..bcce5f74632 100644 --- a/tests/baselines/reference/moduleInTypePosition1.js +++ b/tests/baselines/reference/moduleInTypePosition1.js @@ -7,7 +7,7 @@ export class Promise { //// [moduleInTypePosition1_1.ts] /// -import WinJS = require('moduleInTypePosition1_0'); +import WinJS = require('./moduleInTypePosition1_0'); var x = (w1: WinJS) => { }; diff --git a/tests/baselines/reference/moduleMemberWithoutTypeAnnotation1.types b/tests/baselines/reference/moduleMemberWithoutTypeAnnotation1.types index ebe70d8e6fb..c308f535a7a 100644 --- a/tests/baselines/reference/moduleMemberWithoutTypeAnnotation1.types +++ b/tests/baselines/reference/moduleMemberWithoutTypeAnnotation1.types @@ -71,7 +71,7 @@ module TypeScript { >positionedToken : any >this.findTokenInternal(null, position, 0) : any >this.findTokenInternal : (x: any, y: any, z: any) => any ->this : SyntaxNode +>this : this >findTokenInternal : (x: any, y: any, z: any) => any >null : null >position : number @@ -114,7 +114,7 @@ module TypeScript.Syntax { >new PositionedToken(parent, this, fullStart) : PositionedToken >PositionedToken : typeof PositionedToken >parent : PositionedElement ->this : VariableWidthTokenWithTrailingTrivia +>this : this >fullStart : number } } diff --git a/tests/baselines/reference/multiImportExport.js b/tests/baselines/reference/multiImportExport.js index 06d81f7e984..5a03f3c848d 100644 --- a/tests/baselines/reference/multiImportExport.js +++ b/tests/baselines/reference/multiImportExport.js @@ -5,10 +5,10 @@ import Drawing = require('./Drawing'); var addr = new Drawing.Math.Adder(); //// [Drawing.ts] -export import Math = require('Math/Math') +export import Math = require('./Math/Math') //// [Math.ts] -import Adder = require('Math/Adder'); +import Adder = require('./Adder'); var Math = { Adder:Adder @@ -35,13 +35,13 @@ var Adder = (function () { })(); module.exports = Adder; //// [Math.js] -var Adder = require('Math/Adder'); +var Adder = require('./Adder'); var Math = { Adder: Adder }; module.exports = Math; //// [Drawing.js] -exports.Math = require('Math/Math'); +exports.Math = require('./Math/Math'); //// [consumer.js] var Drawing = require('./Drawing'); var addr = new Drawing.Math.Adder(); @@ -53,11 +53,11 @@ declare class Adder { } export = Adder; //// [Math.d.ts] -import Adder = require('Math/Adder'); +import Adder = require('./Adder'); declare var Math: { Adder: typeof Adder; }; export = Math; //// [Drawing.d.ts] -export import Math = require('Math/Math'); +export import Math = require('./Math/Math'); //// [consumer.d.ts] diff --git a/tests/baselines/reference/multiImportExport.symbols b/tests/baselines/reference/multiImportExport.symbols index 6601571aabc..45b59752b2a 100644 --- a/tests/baselines/reference/multiImportExport.symbols +++ b/tests/baselines/reference/multiImportExport.symbols @@ -11,11 +11,11 @@ var addr = new Drawing.Math.Adder(); >Adder : Symbol(Adder, Decl(Math.ts, 2, 12)) === tests/cases/compiler/Drawing.ts === -export import Math = require('Math/Math') +export import Math = require('./Math/Math') >Math : Symbol(Math, Decl(Drawing.ts, 0, 0)) === tests/cases/compiler/Math/Math.ts === -import Adder = require('Math/Adder'); +import Adder = require('./Adder'); >Adder : Symbol(Adder, Decl(Math.ts, 0, 0)) var Math = { diff --git a/tests/baselines/reference/multiImportExport.types b/tests/baselines/reference/multiImportExport.types index aac60aaee90..4a94eef9865 100644 --- a/tests/baselines/reference/multiImportExport.types +++ b/tests/baselines/reference/multiImportExport.types @@ -12,11 +12,11 @@ var addr = new Drawing.Math.Adder(); >Adder : typeof Adder === tests/cases/compiler/Drawing.ts === -export import Math = require('Math/Math') +export import Math = require('./Math/Math') >Math : { Adder: typeof Adder; } === tests/cases/compiler/Math/Math.ts === -import Adder = require('Math/Adder'); +import Adder = require('./Adder'); >Adder : typeof Adder var Math = { diff --git a/tests/baselines/reference/multipleDefaultExports01.errors.txt b/tests/baselines/reference/multipleDefaultExports01.errors.txt index 7b49afe1a4e..72898d474e8 100644 --- a/tests/baselines/reference/multipleDefaultExports01.errors.txt +++ b/tests/baselines/reference/multipleDefaultExports01.errors.txt @@ -24,7 +24,7 @@ tests/cases/conformance/es6/modules/m2.ts(3,1): error TS2348: Value of type 'typ !!! error TS2300: Duplicate identifier 'default'. ==== tests/cases/conformance/es6/modules/m2.ts (1 errors) ==== - import Entity from "m1" + import Entity from "./m1" Entity(); ~~~~~~~~ diff --git a/tests/baselines/reference/multipleDefaultExports01.js b/tests/baselines/reference/multipleDefaultExports01.js index e633cf69f55..b1ff3b4353c 100644 --- a/tests/baselines/reference/multipleDefaultExports01.js +++ b/tests/baselines/reference/multipleDefaultExports01.js @@ -14,7 +14,7 @@ var x = 10; export default x; //// [m2.ts] -import Entity from "m1" +import Entity from "./m1" Entity(); @@ -34,5 +34,5 @@ var x = 10; Object.defineProperty(exports, "__esModule", { value: true }); exports.default = x; //// [m2.js] -var m1_1 = require("m1"); +var m1_1 = require("./m1"); m1_1.default(); diff --git a/tests/baselines/reference/multipleDefaultExports02.errors.txt b/tests/baselines/reference/multipleDefaultExports02.errors.txt index 51220ecfae2..235f8f7c3e3 100644 --- a/tests/baselines/reference/multipleDefaultExports02.errors.txt +++ b/tests/baselines/reference/multipleDefaultExports02.errors.txt @@ -17,6 +17,6 @@ tests/cases/conformance/es6/modules/m1.ts(6,25): error TS2393: Duplicate functio } ==== tests/cases/conformance/es6/modules/m2.ts (0 errors) ==== - import Entity from "m1" + import Entity from "./m1" Entity(); \ No newline at end of file diff --git a/tests/baselines/reference/multipleDefaultExports02.js b/tests/baselines/reference/multipleDefaultExports02.js index 3d1b84ff6a6..7b43c43ee60 100644 --- a/tests/baselines/reference/multipleDefaultExports02.js +++ b/tests/baselines/reference/multipleDefaultExports02.js @@ -11,7 +11,7 @@ export default function bar() { } //// [m2.ts] -import Entity from "m1" +import Entity from "./m1" Entity(); @@ -25,5 +25,5 @@ function bar() { Object.defineProperty(exports, "__esModule", { value: true }); exports.default = bar; //// [m2.js] -var m1_1 = require("m1"); +var m1_1 = require("./m1"); m1_1.default(); diff --git a/tests/baselines/reference/nestedSelf.types b/tests/baselines/reference/nestedSelf.types index 2c8f3f41dd6..ed7f084246a 100644 --- a/tests/baselines/reference/nestedSelf.types +++ b/tests/baselines/reference/nestedSelf.types @@ -22,7 +22,7 @@ module M { >x : number >this.n * x : number >this.n : number ->this : C +>this : this >n : number >x : number } diff --git a/tests/baselines/reference/newArrays.types b/tests/baselines/reference/newArrays.types index 4600f5efaf8..3c0928a46ea 100644 --- a/tests/baselines/reference/newArrays.types +++ b/tests/baselines/reference/newArrays.types @@ -26,17 +26,17 @@ module M { this.fa = new Array(this.x * this.y); >this.fa = new Array(this.x * this.y) : Foo[] >this.fa : Foo[] ->this : Gar +>this : this >fa : Foo[] >new Array(this.x * this.y) : Foo[] >Array : ArrayConstructor >Foo : Foo >this.x * this.y : number >this.x : number ->this : Gar +>this : this >x : number >this.y : number ->this : Gar +>this : this >y : number } } diff --git a/tests/baselines/reference/nodeResolution4.js b/tests/baselines/reference/nodeResolution4.js new file mode 100644 index 00000000000..0965c257da9 --- /dev/null +++ b/tests/baselines/reference/nodeResolution4.js @@ -0,0 +1,17 @@ +//// [tests/cases/compiler/nodeResolution4.ts] //// + +//// [ref.ts] + +var x = 1; + +//// [a.ts] +/// +export var y; + +//// [b.ts] +import y = require("./a"); + +//// [ref.js] +var x = 1; +//// [a.js] +//// [b.js] diff --git a/tests/baselines/reference/nodeResolution4.symbols b/tests/baselines/reference/nodeResolution4.symbols new file mode 100644 index 00000000000..b8e0b59284a --- /dev/null +++ b/tests/baselines/reference/nodeResolution4.symbols @@ -0,0 +1,14 @@ +=== tests/cases/compiler/b.ts === +import y = require("./a"); +>y : Symbol(y, Decl(b.ts, 0, 0)) + +=== tests/cases/compiler/ref.ts === + +var x = 1; +>x : Symbol(x, Decl(ref.ts, 1, 3)) + +=== tests/cases/compiler/a.ts === +/// +export var y; +>y : Symbol(y, Decl(a.ts, 1, 10)) + diff --git a/tests/baselines/reference/nodeResolution4.types b/tests/baselines/reference/nodeResolution4.types new file mode 100644 index 00000000000..b273b203bde --- /dev/null +++ b/tests/baselines/reference/nodeResolution4.types @@ -0,0 +1,15 @@ +=== tests/cases/compiler/b.ts === +import y = require("./a"); +>y : typeof y + +=== tests/cases/compiler/ref.ts === + +var x = 1; +>x : number +>1 : number + +=== tests/cases/compiler/a.ts === +/// +export var y; +>y : any + diff --git a/tests/baselines/reference/nodeResolution5.errors.txt b/tests/baselines/reference/nodeResolution5.errors.txt new file mode 100644 index 00000000000..c36cce45b6d --- /dev/null +++ b/tests/baselines/reference/nodeResolution5.errors.txt @@ -0,0 +1,14 @@ +tests/cases/compiler/b.ts(1,20): error TS2656: Exported external package typings file 'tests/cases/compiler/node_modules/a.d.ts' is not a module. Please contact the package author to update the package definition. + + +==== tests/cases/compiler/b.ts (1 errors) ==== + import y = require("a"); + ~~~ +!!! error TS2656: Exported external package typings file 'a.d.ts' is not a module. Please contact the package author to update the package definition. + +==== tests/cases/compiler/node_modules/a.d.ts (0 errors) ==== + + declare module "a" { + var x: number; + } + \ No newline at end of file diff --git a/tests/baselines/reference/nodeResolution5.js b/tests/baselines/reference/nodeResolution5.js new file mode 100644 index 00000000000..2bc009c1522 --- /dev/null +++ b/tests/baselines/reference/nodeResolution5.js @@ -0,0 +1,13 @@ +//// [tests/cases/compiler/nodeResolution5.ts] //// + +//// [a.d.ts] + +declare module "a" { + var x: number; +} + +//// [b.ts] +import y = require("a"); + + +//// [b.js] diff --git a/tests/baselines/reference/nodeResolution6.errors.txt b/tests/baselines/reference/nodeResolution6.errors.txt new file mode 100644 index 00000000000..6bab6e34389 --- /dev/null +++ b/tests/baselines/reference/nodeResolution6.errors.txt @@ -0,0 +1,17 @@ +tests/cases/compiler/node_modules/a.d.ts(1,1): error TS2654: Exported external package typings file cannot contain tripleslash references. Please contact the package author to update the package definition. + + +==== tests/cases/compiler/b.ts (0 errors) ==== + import y = require("a"); + +==== tests/cases/compiler/node_modules/ref.ts (0 errors) ==== + + var x = 1; + +==== tests/cases/compiler/node_modules/a.d.ts (1 errors) ==== + /// + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ +!!! error TS2654: Exported external package typings file cannot contain tripleslash references. Please contact the package author to update the package definition. + export declare var y; + + \ No newline at end of file diff --git a/tests/baselines/reference/nodeResolution6.js b/tests/baselines/reference/nodeResolution6.js new file mode 100644 index 00000000000..140edd61f5a --- /dev/null +++ b/tests/baselines/reference/nodeResolution6.js @@ -0,0 +1,18 @@ +//// [tests/cases/compiler/nodeResolution6.ts] //// + +//// [ref.ts] + +var x = 1; + +//// [a.d.ts] +/// +export declare var y; + + +//// [b.ts] +import y = require("a"); + + +//// [ref.js] +var x = 1; +//// [b.js] diff --git a/tests/baselines/reference/nodeResolution7.errors.txt b/tests/baselines/reference/nodeResolution7.errors.txt new file mode 100644 index 00000000000..f9e8ef7ac0f --- /dev/null +++ b/tests/baselines/reference/nodeResolution7.errors.txt @@ -0,0 +1,14 @@ +tests/cases/compiler/b.ts(1,20): error TS2656: Exported external package typings file 'tests/cases/compiler/node_modules/a/index.d.ts' is not a module. Please contact the package author to update the package definition. + + +==== tests/cases/compiler/b.ts (1 errors) ==== + import y = require("a"); + ~~~ +!!! error TS2656: Exported external package typings file 'index.d.ts' is not a module. Please contact the package author to update the package definition. + +==== tests/cases/compiler/node_modules/a/index.d.ts (0 errors) ==== + + declare module "a" { + var x: number; + } + \ No newline at end of file diff --git a/tests/baselines/reference/nodeResolution7.js b/tests/baselines/reference/nodeResolution7.js new file mode 100644 index 00000000000..abfbbad52a6 --- /dev/null +++ b/tests/baselines/reference/nodeResolution7.js @@ -0,0 +1,13 @@ +//// [tests/cases/compiler/nodeResolution7.ts] //// + +//// [index.d.ts] + +declare module "a" { + var x: number; +} + +//// [b.ts] +import y = require("a"); + + +//// [b.js] diff --git a/tests/baselines/reference/nodeResolution8.errors.txt b/tests/baselines/reference/nodeResolution8.errors.txt new file mode 100644 index 00000000000..3f14a4313c8 --- /dev/null +++ b/tests/baselines/reference/nodeResolution8.errors.txt @@ -0,0 +1,16 @@ +tests/cases/compiler/node_modules/a/index.d.ts(1,1): error TS2654: Exported external package typings file cannot contain tripleslash references. Please contact the package author to update the package definition. + + +==== tests/cases/compiler/b.ts (0 errors) ==== + import y = require("a"); +==== tests/cases/compiler/node_modules/a/ref.ts (0 errors) ==== + + var x = 1; + +==== tests/cases/compiler/node_modules/a/index.d.ts (1 errors) ==== + /// + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ +!!! error TS2654: Exported external package typings file cannot contain tripleslash references. Please contact the package author to update the package definition. + export declare var y; + + \ No newline at end of file diff --git a/tests/baselines/reference/nodeResolution8.js b/tests/baselines/reference/nodeResolution8.js new file mode 100644 index 00000000000..aa67f4bf9cc --- /dev/null +++ b/tests/baselines/reference/nodeResolution8.js @@ -0,0 +1,17 @@ +//// [tests/cases/compiler/nodeResolution8.ts] //// + +//// [ref.ts] + +var x = 1; + +//// [index.d.ts] +/// +export declare var y; + + +//// [b.ts] +import y = require("a"); + +//// [ref.js] +var x = 1; +//// [b.js] diff --git a/tests/baselines/reference/nonIterableRestElement1.types b/tests/baselines/reference/nonIterableRestElement1.types index 4973b67d4ae..a15fe5afd38 100644 --- a/tests/baselines/reference/nonIterableRestElement1.types +++ b/tests/baselines/reference/nonIterableRestElement1.types @@ -5,7 +5,7 @@ var c = {}; [...c] = ["", 0]; >[...c] = ["", 0] : (string | number)[] ->[...c] : {}[] +>[...c] : undefined[] >...c : any >c : {} >["", 0] : (string | number)[] diff --git a/tests/baselines/reference/nonIterableRestElement2.types b/tests/baselines/reference/nonIterableRestElement2.types index e6d84d5297e..c39a592d2e6 100644 --- a/tests/baselines/reference/nonIterableRestElement2.types +++ b/tests/baselines/reference/nonIterableRestElement2.types @@ -5,7 +5,7 @@ var c = {}; [...c] = ["", 0]; >[...c] = ["", 0] : (string | number)[] ->[...c] : {}[] +>[...c] : undefined[] >...c : any >c : {} >["", 0] : (string | number)[] diff --git a/tests/baselines/reference/objectIndexer.types b/tests/baselines/reference/objectIndexer.types index 7b42ea51b56..3dcd7bcb77e 100644 --- a/tests/baselines/reference/objectIndexer.types +++ b/tests/baselines/reference/objectIndexer.types @@ -25,7 +25,7 @@ class Emitter { this.listeners = {}; >this.listeners = {} : { [x: string]: undefined; } >this.listeners : IMap ->this : Emitter +>this : this >listeners : IMap >{} : { [x: string]: undefined; } } diff --git a/tests/baselines/reference/parserClassDeclaration18.errors.txt b/tests/baselines/reference/parserClassDeclaration18.errors.txt index ce4b01d5253..b5f656190bd 100644 --- a/tests/baselines/reference/parserClassDeclaration18.errors.txt +++ b/tests/baselines/reference/parserClassDeclaration18.errors.txt @@ -1,4 +1,4 @@ -tests/cases/conformance/parser/ecmascript5/ClassDeclarations/parserClassDeclaration18.ts(4,25): error TS1184: An implementation cannot be declared in ambient contexts. +tests/cases/conformance/parser/ecmascript5/ClassDeclarations/parserClassDeclaration18.ts(4,25): error TS1183: An implementation cannot be declared in ambient contexts. ==== tests/cases/conformance/parser/ecmascript5/ClassDeclarations/parserClassDeclaration18.ts (1 errors) ==== @@ -7,7 +7,7 @@ tests/cases/conformance/parser/ecmascript5/ClassDeclarations/parserClassDeclarat constructor(n: number); constructor(x: any) { ~ -!!! error TS1184: An implementation cannot be declared in ambient contexts. +!!! error TS1183: An implementation cannot be declared in ambient contexts. } bar1():void; } \ No newline at end of file diff --git a/tests/baselines/reference/parserComputedPropertyName30.errors.txt b/tests/baselines/reference/parserComputedPropertyName30.errors.txt index de5bc8d7dde..94ab013c8be 100644 --- a/tests/baselines/reference/parserComputedPropertyName30.errors.txt +++ b/tests/baselines/reference/parserComputedPropertyName30.errors.txt @@ -1,14 +1,20 @@ +tests/cases/conformance/parser/ecmascript6/ComputedPropertyNames/parserComputedPropertyName30.ts(3,5): error TS1164: Computed property names are not allowed in enums. tests/cases/conformance/parser/ecmascript6/ComputedPropertyNames/parserComputedPropertyName30.ts(3,11): error TS2304: Cannot find name 'id'. tests/cases/conformance/parser/ecmascript6/ComputedPropertyNames/parserComputedPropertyName30.ts(4,5): error TS1005: ',' expected. +tests/cases/conformance/parser/ecmascript6/ComputedPropertyNames/parserComputedPropertyName30.ts(4,5): error TS1164: Computed property names are not allowed in enums. -==== tests/cases/conformance/parser/ecmascript6/ComputedPropertyNames/parserComputedPropertyName30.ts (2 errors) ==== +==== tests/cases/conformance/parser/ecmascript6/ComputedPropertyNames/parserComputedPropertyName30.ts (4 errors) ==== enum E { // no ASI, comma expected [e] = id++ + ~~~ +!!! error TS1164: Computed property names are not allowed in enums. ~~ !!! error TS2304: Cannot find name 'id'. [e2] = 1 ~ !!! error TS1005: ',' expected. + ~~~~ +!!! error TS1164: Computed property names are not allowed in enums. } \ No newline at end of file diff --git a/tests/baselines/reference/parserConstructorDeclaration4.errors.txt b/tests/baselines/reference/parserConstructorDeclaration4.errors.txt index e851885f0ee..b5329a1cb47 100644 --- a/tests/baselines/reference/parserConstructorDeclaration4.errors.txt +++ b/tests/baselines/reference/parserConstructorDeclaration4.errors.txt @@ -1,5 +1,5 @@ tests/cases/conformance/parser/ecmascript5/ConstructorDeclarations/parserConstructorDeclaration4.ts(2,3): error TS1031: 'declare' modifier cannot appear on a class element. -tests/cases/conformance/parser/ecmascript5/ConstructorDeclarations/parserConstructorDeclaration4.ts(2,25): error TS1184: An implementation cannot be declared in ambient contexts. +tests/cases/conformance/parser/ecmascript5/ConstructorDeclarations/parserConstructorDeclaration4.ts(2,25): error TS1183: An implementation cannot be declared in ambient contexts. ==== tests/cases/conformance/parser/ecmascript5/ConstructorDeclarations/parserConstructorDeclaration4.ts (2 errors) ==== @@ -8,5 +8,5 @@ tests/cases/conformance/parser/ecmascript5/ConstructorDeclarations/parserConstru ~~~~~~~ !!! error TS1031: 'declare' modifier cannot appear on a class element. ~ -!!! error TS1184: An implementation cannot be declared in ambient contexts. +!!! error TS1183: An implementation cannot be declared in ambient contexts. } \ No newline at end of file diff --git a/tests/baselines/reference/parserEnumDeclaration6.errors.txt b/tests/baselines/reference/parserEnumDeclaration6.errors.txt deleted file mode 100644 index b9d547c07f3..00000000000 --- a/tests/baselines/reference/parserEnumDeclaration6.errors.txt +++ /dev/null @@ -1,12 +0,0 @@ -tests/cases/conformance/parser/ecmascript5/EnumDeclarations/parserEnumDeclaration6.ts(5,5): error TS1061: Enum member must have initializer. - - -==== tests/cases/conformance/parser/ecmascript5/EnumDeclarations/parserEnumDeclaration6.ts (1 errors) ==== - enum E { - A = 1, - B, - C = 1 << 1, - D, - ~ -!!! error TS1061: Enum member must have initializer. - } \ No newline at end of file diff --git a/tests/baselines/reference/parserEnumDeclaration6.symbols b/tests/baselines/reference/parserEnumDeclaration6.symbols new file mode 100644 index 00000000000..325b236fd7e --- /dev/null +++ b/tests/baselines/reference/parserEnumDeclaration6.symbols @@ -0,0 +1,16 @@ +=== tests/cases/conformance/parser/ecmascript5/EnumDeclarations/parserEnumDeclaration6.ts === +enum E { +>E : Symbol(E, Decl(parserEnumDeclaration6.ts, 0, 0)) + + A = 1, +>A : Symbol(E.A, Decl(parserEnumDeclaration6.ts, 0, 8)) + + B, +>B : Symbol(E.B, Decl(parserEnumDeclaration6.ts, 1, 10)) + + C = 1 << 1, +>C : Symbol(E.C, Decl(parserEnumDeclaration6.ts, 2, 6)) + + D, +>D : Symbol(E.D, Decl(parserEnumDeclaration6.ts, 3, 15)) +} diff --git a/tests/baselines/reference/parserEnumDeclaration6.types b/tests/baselines/reference/parserEnumDeclaration6.types new file mode 100644 index 00000000000..c13d66db41c --- /dev/null +++ b/tests/baselines/reference/parserEnumDeclaration6.types @@ -0,0 +1,20 @@ +=== tests/cases/conformance/parser/ecmascript5/EnumDeclarations/parserEnumDeclaration6.ts === +enum E { +>E : E + + A = 1, +>A : E +>1 : number + + B, +>B : E + + C = 1 << 1, +>C : E +>1 << 1 : number +>1 : number +>1 : number + + D, +>D : E +} diff --git a/tests/baselines/reference/parserFunctionDeclaration2.d.errors.txt b/tests/baselines/reference/parserFunctionDeclaration2.d.errors.txt index 9aee5f2b0e7..6f836544efc 100644 --- a/tests/baselines/reference/parserFunctionDeclaration2.d.errors.txt +++ b/tests/baselines/reference/parserFunctionDeclaration2.d.errors.txt @@ -1,5 +1,5 @@ tests/cases/conformance/parser/ecmascript5/FunctionDeclarations/parserFunctionDeclaration2.d.ts(1,1): error TS1046: A 'declare' modifier is required for a top level declaration in a .d.ts file. -tests/cases/conformance/parser/ecmascript5/FunctionDeclarations/parserFunctionDeclaration2.d.ts(1,14): error TS1184: An implementation cannot be declared in ambient contexts. +tests/cases/conformance/parser/ecmascript5/FunctionDeclarations/parserFunctionDeclaration2.d.ts(1,14): error TS1183: An implementation cannot be declared in ambient contexts. ==== tests/cases/conformance/parser/ecmascript5/FunctionDeclarations/parserFunctionDeclaration2.d.ts (2 errors) ==== @@ -7,5 +7,5 @@ tests/cases/conformance/parser/ecmascript5/FunctionDeclarations/parserFunctionDe ~~~~~~~~ !!! error TS1046: A 'declare' modifier is required for a top level declaration in a .d.ts file. ~ -!!! error TS1184: An implementation cannot be declared in ambient contexts. +!!! error TS1183: An implementation cannot be declared in ambient contexts. } \ No newline at end of file diff --git a/tests/baselines/reference/parserFunctionDeclaration2.errors.txt b/tests/baselines/reference/parserFunctionDeclaration2.errors.txt index deb96553220..f69850a5210 100644 --- a/tests/baselines/reference/parserFunctionDeclaration2.errors.txt +++ b/tests/baselines/reference/parserFunctionDeclaration2.errors.txt @@ -1,8 +1,8 @@ -tests/cases/conformance/parser/ecmascript5/FunctionDeclarations/parserFunctionDeclaration2.ts(1,24): error TS1184: An implementation cannot be declared in ambient contexts. +tests/cases/conformance/parser/ecmascript5/FunctionDeclarations/parserFunctionDeclaration2.ts(1,24): error TS1183: An implementation cannot be declared in ambient contexts. ==== tests/cases/conformance/parser/ecmascript5/FunctionDeclarations/parserFunctionDeclaration2.ts (1 errors) ==== declare function Foo() { ~ -!!! error TS1184: An implementation cannot be declared in ambient contexts. +!!! error TS1183: An implementation cannot be declared in ambient contexts. } \ No newline at end of file diff --git a/tests/baselines/reference/parserMemberFunctionDeclaration5.errors.txt b/tests/baselines/reference/parserMemberFunctionDeclaration5.errors.txt index 12fb40ad232..402355919a0 100644 --- a/tests/baselines/reference/parserMemberFunctionDeclaration5.errors.txt +++ b/tests/baselines/reference/parserMemberFunctionDeclaration5.errors.txt @@ -1,5 +1,5 @@ tests/cases/conformance/parser/ecmascript5/MemberFunctionDeclarations/parserMemberFunctionDeclaration5.ts(2,5): error TS1031: 'declare' modifier cannot appear on a class element. -tests/cases/conformance/parser/ecmascript5/MemberFunctionDeclarations/parserMemberFunctionDeclaration5.ts(2,19): error TS1184: An implementation cannot be declared in ambient contexts. +tests/cases/conformance/parser/ecmascript5/MemberFunctionDeclarations/parserMemberFunctionDeclaration5.ts(2,19): error TS1183: An implementation cannot be declared in ambient contexts. ==== tests/cases/conformance/parser/ecmascript5/MemberFunctionDeclarations/parserMemberFunctionDeclaration5.ts (2 errors) ==== @@ -8,5 +8,5 @@ tests/cases/conformance/parser/ecmascript5/MemberFunctionDeclarations/parserMemb ~~~~~~~ !!! error TS1031: 'declare' modifier cannot appear on a class element. ~ -!!! error TS1184: An implementation cannot be declared in ambient contexts. +!!! error TS1183: An implementation cannot be declared in ambient contexts. } \ No newline at end of file diff --git a/tests/baselines/reference/pinnedComments1.js b/tests/baselines/reference/pinnedComments1.js index c4b8b41fbd7..9ab2a147e6a 100644 --- a/tests/baselines/reference/pinnedComments1.js +++ b/tests/baselines/reference/pinnedComments1.js @@ -1,12 +1,19 @@ //// [pinnedComments1.ts] +/*!========= + Keep this pinned comment + ========= +*/ /* unpinned comment */ -/*! pinned comment */ +/*! pinned comment that need to be removed */ class C { } //// [pinnedComments1.js] -/*! pinned comment */ +/*!========= + Keep this pinned comment + ========= +*/ var C = (function () { function C() { } diff --git a/tests/baselines/reference/pinnedComments1.symbols b/tests/baselines/reference/pinnedComments1.symbols index 53d46ecbaf6..6ee37435dfa 100644 --- a/tests/baselines/reference/pinnedComments1.symbols +++ b/tests/baselines/reference/pinnedComments1.symbols @@ -1,7 +1,11 @@ === tests/cases/compiler/pinnedComments1.ts === +/*!========= + Keep this pinned comment + ========= +*/ /* unpinned comment */ -/*! pinned comment */ +/*! pinned comment that need to be removed */ class C { >C : Symbol(C, Decl(pinnedComments1.ts, 0, 0)) } diff --git a/tests/baselines/reference/pinnedComments1.types b/tests/baselines/reference/pinnedComments1.types index d55feb67659..df97cbdbec9 100644 --- a/tests/baselines/reference/pinnedComments1.types +++ b/tests/baselines/reference/pinnedComments1.types @@ -1,7 +1,11 @@ === tests/cases/compiler/pinnedComments1.ts === +/*!========= + Keep this pinned comment + ========= +*/ /* unpinned comment */ -/*! pinned comment */ +/*! pinned comment that need to be removed */ class C { >C : C } diff --git a/tests/baselines/reference/privacyCannotNameAccessorDeclFile.errors.txt b/tests/baselines/reference/privacyCannotNameAccessorDeclFile.errors.txt index 578baa694fd..b5d0ea8223e 100644 --- a/tests/baselines/reference/privacyCannotNameAccessorDeclFile.errors.txt +++ b/tests/baselines/reference/privacyCannotNameAccessorDeclFile.errors.txt @@ -9,7 +9,7 @@ tests/cases/compiler/privacyCannotNameAccessorDeclFile_consumer.ts(66,9): error ==== tests/cases/compiler/privacyCannotNameAccessorDeclFile_consumer.ts (8 errors) ==== - import exporter = require("privacyCannotNameAccessorDeclFile_exporter"); + import exporter = require("./privacyCannotNameAccessorDeclFile_exporter"); export class publicClassWithWithPrivateGetAccessorTypes { static get myPublicStaticMethod() { // Error ~~~~~~~~~~~~~~~~~~~~ @@ -144,7 +144,7 @@ tests/cases/compiler/privacyCannotNameAccessorDeclFile_consumer.ts(66,9): error ==== tests/cases/compiler/privacyCannotNameAccessorDeclFile_exporter.ts (0 errors) ==== /// - import Widgets = require("privacyCannotNameAccessorDeclFile_Widgets"); + import Widgets = require("./privacyCannotNameAccessorDeclFile_Widgets"); import Widgets1 = require("GlobalWidgets"); export function createExportedWidget1() { return Widgets.createWidget1(); diff --git a/tests/baselines/reference/privacyCannotNameAccessorDeclFile.js b/tests/baselines/reference/privacyCannotNameAccessorDeclFile.js index 0295e42e654..8c4108ea9e8 100644 --- a/tests/baselines/reference/privacyCannotNameAccessorDeclFile.js +++ b/tests/baselines/reference/privacyCannotNameAccessorDeclFile.js @@ -35,7 +35,7 @@ export module SpecializedWidget { //// [privacyCannotNameAccessorDeclFile_exporter.ts] /// -import Widgets = require("privacyCannotNameAccessorDeclFile_Widgets"); +import Widgets = require("./privacyCannotNameAccessorDeclFile_Widgets"); import Widgets1 = require("GlobalWidgets"); export function createExportedWidget1() { return Widgets.createWidget1(); @@ -51,7 +51,7 @@ export function createExportedWidget4() { } //// [privacyCannotNameAccessorDeclFile_consumer.ts] -import exporter = require("privacyCannotNameAccessorDeclFile_exporter"); +import exporter = require("./privacyCannotNameAccessorDeclFile_exporter"); export class publicClassWithWithPrivateGetAccessorTypes { static get myPublicStaticMethod() { // Error return exporter.createExportedWidget1(); @@ -165,7 +165,7 @@ var SpecializedWidget; })(SpecializedWidget = exports.SpecializedWidget || (exports.SpecializedWidget = {})); //// [privacyCannotNameAccessorDeclFile_exporter.js] /// -var Widgets = require("privacyCannotNameAccessorDeclFile_Widgets"); +var Widgets = require("./privacyCannotNameAccessorDeclFile_Widgets"); var Widgets1 = require("GlobalWidgets"); function createExportedWidget1() { return Widgets.createWidget1(); @@ -184,7 +184,7 @@ function createExportedWidget4() { } exports.createExportedWidget4 = createExportedWidget4; //// [privacyCannotNameAccessorDeclFile_consumer.js] -var exporter = require("privacyCannotNameAccessorDeclFile_exporter"); +var exporter = require("./privacyCannotNameAccessorDeclFile_exporter"); var publicClassWithWithPrivateGetAccessorTypes = (function () { function publicClassWithWithPrivateGetAccessorTypes() { } @@ -403,7 +403,7 @@ export declare module SpecializedWidget { } //// [privacyCannotNameAccessorDeclFile_exporter.d.ts] /// -import Widgets = require("privacyCannotNameAccessorDeclFile_Widgets"); +import Widgets = require("./privacyCannotNameAccessorDeclFile_Widgets"); import Widgets1 = require("GlobalWidgets"); export declare function createExportedWidget1(): Widgets.Widget1; export declare function createExportedWidget2(): Widgets.SpecializedWidget.Widget2; diff --git a/tests/baselines/reference/privacyCannotNameVarTypeDeclFile.errors.txt b/tests/baselines/reference/privacyCannotNameVarTypeDeclFile.errors.txt index 7f155f0e454..e76474d2d33 100644 --- a/tests/baselines/reference/privacyCannotNameVarTypeDeclFile.errors.txt +++ b/tests/baselines/reference/privacyCannotNameVarTypeDeclFile.errors.txt @@ -13,7 +13,7 @@ tests/cases/compiler/privacyCannotNameVarTypeDeclFile_consumer.ts(38,12): error ==== tests/cases/compiler/privacyCannotNameVarTypeDeclFile_consumer.ts (12 errors) ==== - import exporter = require("privacyCannotNameVarTypeDeclFile_exporter"); + import exporter = require("./privacyCannotNameVarTypeDeclFile_exporter"); export class publicClassWithWithPrivatePropertyTypes { static myPublicStaticProperty = exporter.createExportedWidget1(); // Error ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ @@ -120,7 +120,7 @@ tests/cases/compiler/privacyCannotNameVarTypeDeclFile_consumer.ts(38,12): error ==== tests/cases/compiler/privacyCannotNameVarTypeDeclFile_exporter.ts (0 errors) ==== /// - import Widgets = require("privacyCannotNameVarTypeDeclFile_Widgets"); + import Widgets = require("./privacyCannotNameVarTypeDeclFile_Widgets"); import Widgets1 = require("GlobalWidgets"); export function createExportedWidget1() { return Widgets.createWidget1(); diff --git a/tests/baselines/reference/privacyCannotNameVarTypeDeclFile.js b/tests/baselines/reference/privacyCannotNameVarTypeDeclFile.js index d1f04ee3cef..b40d1dc4980 100644 --- a/tests/baselines/reference/privacyCannotNameVarTypeDeclFile.js +++ b/tests/baselines/reference/privacyCannotNameVarTypeDeclFile.js @@ -36,7 +36,7 @@ export module SpecializedWidget { //// [privacyCannotNameVarTypeDeclFile_exporter.ts] /// -import Widgets = require("privacyCannotNameVarTypeDeclFile_Widgets"); +import Widgets = require("./privacyCannotNameVarTypeDeclFile_Widgets"); import Widgets1 = require("GlobalWidgets"); export function createExportedWidget1() { return Widgets.createWidget1(); @@ -52,7 +52,7 @@ export function createExportedWidget4() { } //// [privacyCannotNameVarTypeDeclFile_consumer.ts] -import exporter = require("privacyCannotNameVarTypeDeclFile_exporter"); +import exporter = require("./privacyCannotNameVarTypeDeclFile_exporter"); export class publicClassWithWithPrivatePropertyTypes { static myPublicStaticProperty = exporter.createExportedWidget1(); // Error private static myPrivateStaticProperty = exporter.createExportedWidget1(); @@ -129,7 +129,7 @@ var SpecializedWidget; })(SpecializedWidget = exports.SpecializedWidget || (exports.SpecializedWidget = {})); //// [privacyCannotNameVarTypeDeclFile_exporter.js] /// -var Widgets = require("privacyCannotNameVarTypeDeclFile_Widgets"); +var Widgets = require("./privacyCannotNameVarTypeDeclFile_Widgets"); var Widgets1 = require("GlobalWidgets"); function createExportedWidget1() { return Widgets.createWidget1(); @@ -148,7 +148,7 @@ function createExportedWidget4() { } exports.createExportedWidget4 = createExportedWidget4; //// [privacyCannotNameVarTypeDeclFile_consumer.js] -var exporter = require("privacyCannotNameVarTypeDeclFile_exporter"); +var exporter = require("./privacyCannotNameVarTypeDeclFile_exporter"); var publicClassWithWithPrivatePropertyTypes = (function () { function publicClassWithWithPrivatePropertyTypes() { this.myPublicProperty = exporter.createExportedWidget1(); // Error @@ -231,7 +231,7 @@ export declare module SpecializedWidget { } //// [privacyCannotNameVarTypeDeclFile_exporter.d.ts] /// -import Widgets = require("privacyCannotNameVarTypeDeclFile_Widgets"); +import Widgets = require("./privacyCannotNameVarTypeDeclFile_Widgets"); import Widgets1 = require("GlobalWidgets"); export declare function createExportedWidget1(): Widgets.Widget1; export declare function createExportedWidget2(): Widgets.SpecializedWidget.Widget2; diff --git a/tests/baselines/reference/privacyCheckExternalModuleExportAssignmentOfGenericClass.js b/tests/baselines/reference/privacyCheckExternalModuleExportAssignmentOfGenericClass.js index eeaea58e0ab..8ed0b3cfa1b 100644 --- a/tests/baselines/reference/privacyCheckExternalModuleExportAssignmentOfGenericClass.js +++ b/tests/baselines/reference/privacyCheckExternalModuleExportAssignmentOfGenericClass.js @@ -7,7 +7,7 @@ class Foo { } //// [privacyCheckExternalModuleExportAssignmentOfGenericClass_1.ts] -import Foo = require("privacyCheckExternalModuleExportAssignmentOfGenericClass_0"); +import Foo = require("./privacyCheckExternalModuleExportAssignmentOfGenericClass_0"); export = Bar; interface Bar { foo: Foo; @@ -31,7 +31,7 @@ declare class Foo { constructor(a: A); } //// [privacyCheckExternalModuleExportAssignmentOfGenericClass_1.d.ts] -import Foo = require("privacyCheckExternalModuleExportAssignmentOfGenericClass_0"); +import Foo = require("./privacyCheckExternalModuleExportAssignmentOfGenericClass_0"); export = Bar; interface Bar { foo: Foo; diff --git a/tests/baselines/reference/privacyCheckExternalModuleExportAssignmentOfGenericClass.symbols b/tests/baselines/reference/privacyCheckExternalModuleExportAssignmentOfGenericClass.symbols index fed3799f950..75ebd0bff0a 100644 --- a/tests/baselines/reference/privacyCheckExternalModuleExportAssignmentOfGenericClass.symbols +++ b/tests/baselines/reference/privacyCheckExternalModuleExportAssignmentOfGenericClass.symbols @@ -1,5 +1,5 @@ === tests/cases/compiler/privacyCheckExternalModuleExportAssignmentOfGenericClass_1.ts === -import Foo = require("privacyCheckExternalModuleExportAssignmentOfGenericClass_0"); +import Foo = require("./privacyCheckExternalModuleExportAssignmentOfGenericClass_0"); >Foo : Symbol(Foo, Decl(privacyCheckExternalModuleExportAssignmentOfGenericClass_1.ts, 0, 0)) export = Bar; diff --git a/tests/baselines/reference/privacyCheckExternalModuleExportAssignmentOfGenericClass.types b/tests/baselines/reference/privacyCheckExternalModuleExportAssignmentOfGenericClass.types index 2259b039c91..ebf2a0e3ff6 100644 --- a/tests/baselines/reference/privacyCheckExternalModuleExportAssignmentOfGenericClass.types +++ b/tests/baselines/reference/privacyCheckExternalModuleExportAssignmentOfGenericClass.types @@ -1,5 +1,5 @@ === tests/cases/compiler/privacyCheckExternalModuleExportAssignmentOfGenericClass_1.ts === -import Foo = require("privacyCheckExternalModuleExportAssignmentOfGenericClass_0"); +import Foo = require("./privacyCheckExternalModuleExportAssignmentOfGenericClass_0"); >Foo : typeof Foo export = Bar; diff --git a/tests/baselines/reference/privacyCheckOnTypeParameterReferenceInConstructorParameter.types b/tests/baselines/reference/privacyCheckOnTypeParameterReferenceInConstructorParameter.types index 2000b877abd..293585db7b0 100644 --- a/tests/baselines/reference/privacyCheckOnTypeParameterReferenceInConstructorParameter.types +++ b/tests/baselines/reference/privacyCheckOnTypeParameterReferenceInConstructorParameter.types @@ -10,10 +10,10 @@ export class A{ >T1 : T1 var child = new B(this); ->child : B> ->new B(this) : B> +>child : B +>new B(this) : B >B : typeof B ->this : A +>this : this } } diff --git a/tests/baselines/reference/privacyFunctionCannotNameParameterTypeDeclFile.errors.txt b/tests/baselines/reference/privacyFunctionCannotNameParameterTypeDeclFile.errors.txt index 1e221ccd70a..76fd8b4e80a 100644 --- a/tests/baselines/reference/privacyFunctionCannotNameParameterTypeDeclFile.errors.txt +++ b/tests/baselines/reference/privacyFunctionCannotNameParameterTypeDeclFile.errors.txt @@ -25,7 +25,7 @@ tests/cases/compiler/privacyFunctionCannotNameParameterTypeDeclFile_consumer.ts( ==== tests/cases/compiler/privacyFunctionCannotNameParameterTypeDeclFile_consumer.ts (24 errors) ==== - import exporter = require("privacyFunctionCannotNameParameterTypeDeclFile_exporter"); + import exporter = require("./privacyFunctionCannotNameParameterTypeDeclFile_exporter"); export class publicClassWithWithPrivateParmeterTypes { static myPublicStaticMethod(param = exporter.createExportedWidget1()) { // Error ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ @@ -212,7 +212,7 @@ tests/cases/compiler/privacyFunctionCannotNameParameterTypeDeclFile_consumer.ts( ==== tests/cases/compiler/privacyFunctionCannotNameParameterTypeDeclFile_exporter.ts (0 errors) ==== /// - import Widgets = require("privacyFunctionCannotNameParameterTypeDeclFile_Widgets"); + import Widgets = require("./privacyFunctionCannotNameParameterTypeDeclFile_Widgets"); import Widgets1 = require("GlobalWidgets"); export function createExportedWidget1() { return Widgets.createWidget1(); diff --git a/tests/baselines/reference/privacyFunctionCannotNameParameterTypeDeclFile.js b/tests/baselines/reference/privacyFunctionCannotNameParameterTypeDeclFile.js index 7acd56927c7..bf2d820e2ea 100644 --- a/tests/baselines/reference/privacyFunctionCannotNameParameterTypeDeclFile.js +++ b/tests/baselines/reference/privacyFunctionCannotNameParameterTypeDeclFile.js @@ -36,7 +36,7 @@ export module SpecializedWidget { //// [privacyFunctionCannotNameParameterTypeDeclFile_exporter.ts] /// -import Widgets = require("privacyFunctionCannotNameParameterTypeDeclFile_Widgets"); +import Widgets = require("./privacyFunctionCannotNameParameterTypeDeclFile_Widgets"); import Widgets1 = require("GlobalWidgets"); export function createExportedWidget1() { return Widgets.createWidget1(); @@ -52,7 +52,7 @@ export function createExportedWidget4() { } //// [privacyFunctionCannotNameParameterTypeDeclFile_consumer.ts] -import exporter = require("privacyFunctionCannotNameParameterTypeDeclFile_exporter"); +import exporter = require("./privacyFunctionCannotNameParameterTypeDeclFile_exporter"); export class publicClassWithWithPrivateParmeterTypes { static myPublicStaticMethod(param = exporter.createExportedWidget1()) { // Error } @@ -185,7 +185,7 @@ var SpecializedWidget; })(SpecializedWidget = exports.SpecializedWidget || (exports.SpecializedWidget = {})); //// [privacyFunctionCannotNameParameterTypeDeclFile_exporter.js] /// -var Widgets = require("privacyFunctionCannotNameParameterTypeDeclFile_Widgets"); +var Widgets = require("./privacyFunctionCannotNameParameterTypeDeclFile_Widgets"); var Widgets1 = require("GlobalWidgets"); function createExportedWidget1() { return Widgets.createWidget1(); @@ -204,7 +204,7 @@ function createExportedWidget4() { } exports.createExportedWidget4 = createExportedWidget4; //// [privacyFunctionCannotNameParameterTypeDeclFile_consumer.js] -var exporter = require("privacyFunctionCannotNameParameterTypeDeclFile_exporter"); +var exporter = require("./privacyFunctionCannotNameParameterTypeDeclFile_exporter"); var publicClassWithWithPrivateParmeterTypes = (function () { function publicClassWithWithPrivateParmeterTypes(param, param1, param2) { if (param === void 0) { param = exporter.createExportedWidget1(); } @@ -417,7 +417,7 @@ export declare module SpecializedWidget { } //// [privacyFunctionCannotNameParameterTypeDeclFile_exporter.d.ts] /// -import Widgets = require("privacyFunctionCannotNameParameterTypeDeclFile_Widgets"); +import Widgets = require("./privacyFunctionCannotNameParameterTypeDeclFile_Widgets"); import Widgets1 = require("GlobalWidgets"); export declare function createExportedWidget1(): Widgets.Widget1; export declare function createExportedWidget2(): Widgets.SpecializedWidget.Widget2; diff --git a/tests/baselines/reference/privacyFunctionCannotNameReturnTypeDeclFile.errors.txt b/tests/baselines/reference/privacyFunctionCannotNameReturnTypeDeclFile.errors.txt index 4be9aec9abe..bc6229815f5 100644 --- a/tests/baselines/reference/privacyFunctionCannotNameReturnTypeDeclFile.errors.txt +++ b/tests/baselines/reference/privacyFunctionCannotNameReturnTypeDeclFile.errors.txt @@ -13,7 +13,7 @@ tests/cases/compiler/privacyFunctionReturnTypeDeclFile_consumer.ts(86,17): error ==== tests/cases/compiler/privacyFunctionReturnTypeDeclFile_consumer.ts (12 errors) ==== - import exporter = require("privacyFunctionReturnTypeDeclFile_exporter"); + import exporter = require("./privacyFunctionReturnTypeDeclFile_exporter"); export class publicClassWithWithPrivateParmeterTypes { static myPublicStaticMethod() { // Error ~~~~~~~~~~~~~~~~~~~~ @@ -183,7 +183,7 @@ tests/cases/compiler/privacyFunctionReturnTypeDeclFile_consumer.ts(86,17): error ==== tests/cases/compiler/privacyFunctionReturnTypeDeclFile_exporter.ts (0 errors) ==== /// - import Widgets = require("privacyFunctionReturnTypeDeclFile_Widgets"); + import Widgets = require("./privacyFunctionReturnTypeDeclFile_Widgets"); import Widgets1 = require("GlobalWidgets"); export function createExportedWidget1() { return Widgets.createWidget1(); diff --git a/tests/baselines/reference/privacyFunctionCannotNameReturnTypeDeclFile.js b/tests/baselines/reference/privacyFunctionCannotNameReturnTypeDeclFile.js index 5f822929a48..8de50f4ea8a 100644 --- a/tests/baselines/reference/privacyFunctionCannotNameReturnTypeDeclFile.js +++ b/tests/baselines/reference/privacyFunctionCannotNameReturnTypeDeclFile.js @@ -36,7 +36,7 @@ export module SpecializedWidget { //// [privacyFunctionReturnTypeDeclFile_exporter.ts] /// -import Widgets = require("privacyFunctionReturnTypeDeclFile_Widgets"); +import Widgets = require("./privacyFunctionReturnTypeDeclFile_Widgets"); import Widgets1 = require("GlobalWidgets"); export function createExportedWidget1() { return Widgets.createWidget1(); @@ -52,7 +52,7 @@ export function createExportedWidget4() { } //// [privacyFunctionReturnTypeDeclFile_consumer.ts] -import exporter = require("privacyFunctionReturnTypeDeclFile_exporter"); +import exporter = require("./privacyFunctionReturnTypeDeclFile_exporter"); export class publicClassWithWithPrivateParmeterTypes { static myPublicStaticMethod() { // Error return exporter.createExportedWidget1(); @@ -192,7 +192,7 @@ var SpecializedWidget; })(SpecializedWidget = exports.SpecializedWidget || (exports.SpecializedWidget = {})); //// [privacyFunctionReturnTypeDeclFile_exporter.js] /// -var Widgets = require("privacyFunctionReturnTypeDeclFile_Widgets"); +var Widgets = require("./privacyFunctionReturnTypeDeclFile_Widgets"); var Widgets1 = require("GlobalWidgets"); function createExportedWidget1() { return Widgets.createWidget1(); @@ -211,7 +211,7 @@ function createExportedWidget4() { } exports.createExportedWidget4 = createExportedWidget4; //// [privacyFunctionReturnTypeDeclFile_consumer.js] -var exporter = require("privacyFunctionReturnTypeDeclFile_exporter"); +var exporter = require("./privacyFunctionReturnTypeDeclFile_exporter"); var publicClassWithWithPrivateParmeterTypes = (function () { function publicClassWithWithPrivateParmeterTypes() { } @@ -374,7 +374,7 @@ export declare module SpecializedWidget { } //// [privacyFunctionReturnTypeDeclFile_exporter.d.ts] /// -import Widgets = require("privacyFunctionReturnTypeDeclFile_Widgets"); +import Widgets = require("./privacyFunctionReturnTypeDeclFile_Widgets"); import Widgets1 = require("GlobalWidgets"); export declare function createExportedWidget1(): Widgets.Widget1; export declare function createExportedWidget2(): Widgets.SpecializedWidget.Widget2; diff --git a/tests/baselines/reference/privacyGloImportParseErrors.errors.txt b/tests/baselines/reference/privacyGloImportParseErrors.errors.txt index d6d24ebcb30..236418a10ae 100644 --- a/tests/baselines/reference/privacyGloImportParseErrors.errors.txt +++ b/tests/baselines/reference/privacyGloImportParseErrors.errors.txt @@ -1,5 +1,5 @@ -tests/cases/compiler/privacyGloImportParseErrors.ts(22,27): error TS2435: Ambient modules cannot be nested in other modules. -tests/cases/compiler/privacyGloImportParseErrors.ts(30,20): error TS2435: Ambient modules cannot be nested in other modules. +tests/cases/compiler/privacyGloImportParseErrors.ts(22,27): error TS2435: Ambient modules cannot be nested in other modules or namespaces. +tests/cases/compiler/privacyGloImportParseErrors.ts(30,20): error TS2435: Ambient modules cannot be nested in other modules or namespaces. tests/cases/compiler/privacyGloImportParseErrors.ts(49,29): error TS4000: Import declaration 'm1_im2_private' is using private name 'm1_M2_private'. tests/cases/compiler/privacyGloImportParseErrors.ts(59,37): error TS1147: Import declarations in a namespace cannot reference a module. tests/cases/compiler/privacyGloImportParseErrors.ts(59,37): error TS2307: Cannot find module 'm1_M3_public'. @@ -11,9 +11,9 @@ tests/cases/compiler/privacyGloImportParseErrors.ts(82,43): error TS1147: Import tests/cases/compiler/privacyGloImportParseErrors.ts(121,38): error TS1147: Import declarations in a namespace cannot reference a module. tests/cases/compiler/privacyGloImportParseErrors.ts(125,45): error TS1147: Import declarations in a namespace cannot reference a module. tests/cases/compiler/privacyGloImportParseErrors.ts(133,9): error TS1038: A 'declare' modifier cannot be used in an already ambient context. -tests/cases/compiler/privacyGloImportParseErrors.ts(133,24): error TS2435: Ambient modules cannot be nested in other modules. -tests/cases/compiler/privacyGloImportParseErrors.ts(138,16): error TS2435: Ambient modules cannot be nested in other modules. -tests/cases/compiler/privacyGloImportParseErrors.ts(141,12): error TS2435: Ambient modules cannot be nested in other modules. +tests/cases/compiler/privacyGloImportParseErrors.ts(133,24): error TS2435: Ambient modules cannot be nested in other modules or namespaces. +tests/cases/compiler/privacyGloImportParseErrors.ts(138,16): error TS2435: Ambient modules cannot be nested in other modules or namespaces. +tests/cases/compiler/privacyGloImportParseErrors.ts(141,12): error TS2435: Ambient modules cannot be nested in other modules or namespaces. tests/cases/compiler/privacyGloImportParseErrors.ts(146,25): error TS1147: Import declarations in a namespace cannot reference a module. tests/cases/compiler/privacyGloImportParseErrors.ts(149,29): error TS1147: Import declarations in a namespace cannot reference a module. @@ -42,7 +42,7 @@ tests/cases/compiler/privacyGloImportParseErrors.ts(149,29): error TS1147: Impor export declare module "m1_M3_public" { ~~~~~~~~~~~~~~ -!!! error TS2435: Ambient modules cannot be nested in other modules. +!!! error TS2435: Ambient modules cannot be nested in other modules or namespaces. export function f1(); export class c1 { } @@ -52,7 +52,7 @@ tests/cases/compiler/privacyGloImportParseErrors.ts(149,29): error TS1147: Impor declare module "m1_M4_private" { ~~~~~~~~~~~~~~~ -!!! error TS2435: Ambient modules cannot be nested in other modules. +!!! error TS2435: Ambient modules cannot be nested in other modules or namespaces. export function f1(); export class c1 { } @@ -179,19 +179,19 @@ tests/cases/compiler/privacyGloImportParseErrors.ts(149,29): error TS1147: Impor ~~~~~~~ !!! error TS1038: A 'declare' modifier cannot be used in an already ambient context. ~~~~~ -!!! error TS2435: Ambient modules cannot be nested in other modules. +!!! error TS2435: Ambient modules cannot be nested in other modules or namespaces. } } module m2 { module "abc2" { ~~~~~~ -!!! error TS2435: Ambient modules cannot be nested in other modules. +!!! error TS2435: Ambient modules cannot be nested in other modules or namespaces. } } module "abc3" { ~~~~~~ -!!! error TS2435: Ambient modules cannot be nested in other modules. +!!! error TS2435: Ambient modules cannot be nested in other modules or namespaces. } } diff --git a/tests/baselines/reference/privacyImportParseErrors.errors.txt b/tests/baselines/reference/privacyImportParseErrors.errors.txt index 06277c63b23..5bae45f405c 100644 --- a/tests/baselines/reference/privacyImportParseErrors.errors.txt +++ b/tests/baselines/reference/privacyImportParseErrors.errors.txt @@ -1,48 +1,48 @@ -tests/cases/compiler/privacyImportParseErrors.ts(22,27): error TS2435: Ambient modules cannot be nested in other modules. -tests/cases/compiler/privacyImportParseErrors.ts(30,20): error TS2435: Ambient modules cannot be nested in other modules. +tests/cases/compiler/privacyImportParseErrors.ts(22,27): error TS2435: Ambient modules cannot be nested in other modules or namespaces. +tests/cases/compiler/privacyImportParseErrors.ts(30,20): error TS2435: Ambient modules cannot be nested in other modules or namespaces. tests/cases/compiler/privacyImportParseErrors.ts(59,37): error TS1147: Import declarations in a namespace cannot reference a module. tests/cases/compiler/privacyImportParseErrors.ts(59,37): error TS2307: Cannot find module 'm1_M3_public'. tests/cases/compiler/privacyImportParseErrors.ts(69,37): error TS1147: Import declarations in a namespace cannot reference a module. tests/cases/compiler/privacyImportParseErrors.ts(69,37): error TS2307: Cannot find module 'm1_M4_private'. tests/cases/compiler/privacyImportParseErrors.ts(81,43): error TS1147: Import declarations in a namespace cannot reference a module. tests/cases/compiler/privacyImportParseErrors.ts(82,43): error TS1147: Import declarations in a namespace cannot reference a module. -tests/cases/compiler/privacyImportParseErrors.ts(106,27): error TS2435: Ambient modules cannot be nested in other modules. -tests/cases/compiler/privacyImportParseErrors.ts(114,20): error TS2435: Ambient modules cannot be nested in other modules. +tests/cases/compiler/privacyImportParseErrors.ts(106,27): error TS2435: Ambient modules cannot be nested in other modules or namespaces. +tests/cases/compiler/privacyImportParseErrors.ts(114,20): error TS2435: Ambient modules cannot be nested in other modules or namespaces. tests/cases/compiler/privacyImportParseErrors.ts(143,37): error TS1147: Import declarations in a namespace cannot reference a module. tests/cases/compiler/privacyImportParseErrors.ts(143,37): error TS2307: Cannot find module 'm2_M3_public'. tests/cases/compiler/privacyImportParseErrors.ts(153,37): error TS1147: Import declarations in a namespace cannot reference a module. tests/cases/compiler/privacyImportParseErrors.ts(153,37): error TS2307: Cannot find module 'm2_M4_private'. tests/cases/compiler/privacyImportParseErrors.ts(166,43): error TS1147: Import declarations in a namespace cannot reference a module. tests/cases/compiler/privacyImportParseErrors.ts(167,43): error TS1147: Import declarations in a namespace cannot reference a module. -tests/cases/compiler/privacyImportParseErrors.ts(180,23): error TS2435: Ambient modules cannot be nested in other modules. -tests/cases/compiler/privacyImportParseErrors.ts(198,23): error TS2435: Ambient modules cannot be nested in other modules. +tests/cases/compiler/privacyImportParseErrors.ts(180,23): error TS2435: Ambient modules cannot be nested in other modules or namespaces. +tests/cases/compiler/privacyImportParseErrors.ts(198,23): error TS2435: Ambient modules cannot be nested in other modules or namespaces. tests/cases/compiler/privacyImportParseErrors.ts(218,34): error TS2307: Cannot find module 'glo_M2_public'. tests/cases/compiler/privacyImportParseErrors.ts(238,34): error TS2307: Cannot find module 'glo_M4_private'. tests/cases/compiler/privacyImportParseErrors.ts(251,40): error TS2307: Cannot find module 'glo_M2_public'. tests/cases/compiler/privacyImportParseErrors.ts(252,40): error TS2307: Cannot find module 'glo_M4_private'. -tests/cases/compiler/privacyImportParseErrors.ts(255,23): error TS2435: Ambient modules cannot be nested in other modules. +tests/cases/compiler/privacyImportParseErrors.ts(255,23): error TS2435: Ambient modules cannot be nested in other modules or namespaces. tests/cases/compiler/privacyImportParseErrors.ts(258,45): error TS2304: Cannot find name 'use_glo_M1_public'. tests/cases/compiler/privacyImportParseErrors.ts(261,39): error TS2304: Cannot find name 'use_glo_M1_public'. tests/cases/compiler/privacyImportParseErrors.ts(264,40): error TS2307: Cannot find module 'glo_M2_public'. tests/cases/compiler/privacyImportParseErrors.ts(273,38): error TS1147: Import declarations in a namespace cannot reference a module. tests/cases/compiler/privacyImportParseErrors.ts(277,45): error TS1147: Import declarations in a namespace cannot reference a module. -tests/cases/compiler/privacyImportParseErrors.ts(284,16): error TS2435: Ambient modules cannot be nested in other modules. +tests/cases/compiler/privacyImportParseErrors.ts(284,16): error TS2435: Ambient modules cannot be nested in other modules or namespaces. tests/cases/compiler/privacyImportParseErrors.ts(287,46): error TS2304: Cannot find name 'use_glo_M3_private'. tests/cases/compiler/privacyImportParseErrors.ts(290,40): error TS2304: Cannot find name 'use_glo_M3_private'. tests/cases/compiler/privacyImportParseErrors.ts(293,41): error TS2307: Cannot find module 'glo_M4_private'. tests/cases/compiler/privacyImportParseErrors.ts(302,38): error TS1147: Import declarations in a namespace cannot reference a module. tests/cases/compiler/privacyImportParseErrors.ts(306,45): error TS1147: Import declarations in a namespace cannot reference a module. -tests/cases/compiler/privacyImportParseErrors.ts(312,16): error TS2435: Ambient modules cannot be nested in other modules. +tests/cases/compiler/privacyImportParseErrors.ts(312,16): error TS2435: Ambient modules cannot be nested in other modules or namespaces. tests/cases/compiler/privacyImportParseErrors.ts(314,9): error TS1038: A 'declare' modifier cannot be used in an already ambient context. -tests/cases/compiler/privacyImportParseErrors.ts(314,24): error TS2435: Ambient modules cannot be nested in other modules. -tests/cases/compiler/privacyImportParseErrors.ts(319,16): error TS2435: Ambient modules cannot be nested in other modules. -tests/cases/compiler/privacyImportParseErrors.ts(322,12): error TS2435: Ambient modules cannot be nested in other modules. +tests/cases/compiler/privacyImportParseErrors.ts(314,24): error TS2435: Ambient modules cannot be nested in other modules or namespaces. +tests/cases/compiler/privacyImportParseErrors.ts(319,16): error TS2435: Ambient modules cannot be nested in other modules or namespaces. +tests/cases/compiler/privacyImportParseErrors.ts(322,12): error TS2435: Ambient modules cannot be nested in other modules or namespaces. tests/cases/compiler/privacyImportParseErrors.ts(326,9): error TS1029: 'export' modifier must precede 'declare' modifier. -tests/cases/compiler/privacyImportParseErrors.ts(326,23): error TS2435: Ambient modules cannot be nested in other modules. +tests/cases/compiler/privacyImportParseErrors.ts(326,23): error TS2435: Ambient modules cannot be nested in other modules or namespaces. tests/cases/compiler/privacyImportParseErrors.ts(328,9): error TS1038: A 'declare' modifier cannot be used in an already ambient context. -tests/cases/compiler/privacyImportParseErrors.ts(328,24): error TS2435: Ambient modules cannot be nested in other modules. -tests/cases/compiler/privacyImportParseErrors.ts(333,16): error TS2435: Ambient modules cannot be nested in other modules. -tests/cases/compiler/privacyImportParseErrors.ts(336,12): error TS2435: Ambient modules cannot be nested in other modules. +tests/cases/compiler/privacyImportParseErrors.ts(328,24): error TS2435: Ambient modules cannot be nested in other modules or namespaces. +tests/cases/compiler/privacyImportParseErrors.ts(333,16): error TS2435: Ambient modules cannot be nested in other modules or namespaces. +tests/cases/compiler/privacyImportParseErrors.ts(336,12): error TS2435: Ambient modules cannot be nested in other modules or namespaces. tests/cases/compiler/privacyImportParseErrors.ts(341,25): error TS1147: Import declarations in a namespace cannot reference a module. tests/cases/compiler/privacyImportParseErrors.ts(344,29): error TS1147: Import declarations in a namespace cannot reference a module. tests/cases/compiler/privacyImportParseErrors.ts(350,25): error TS1147: Import declarations in a namespace cannot reference a module. @@ -73,7 +73,7 @@ tests/cases/compiler/privacyImportParseErrors.ts(353,29): error TS1147: Import d export declare module "m1_M3_public" { ~~~~~~~~~~~~~~ -!!! error TS2435: Ambient modules cannot be nested in other modules. +!!! error TS2435: Ambient modules cannot be nested in other modules or namespaces. export function f1(); export class c1 { } @@ -83,7 +83,7 @@ tests/cases/compiler/privacyImportParseErrors.ts(353,29): error TS1147: Import d declare module "m1_M4_private" { ~~~~~~~~~~~~~~~ -!!! error TS2435: Ambient modules cannot be nested in other modules. +!!! error TS2435: Ambient modules cannot be nested in other modules or namespaces. export function f1(); export class c1 { } @@ -173,7 +173,7 @@ tests/cases/compiler/privacyImportParseErrors.ts(353,29): error TS1147: Import d export declare module "m2_M3_public" { ~~~~~~~~~~~~~~ -!!! error TS2435: Ambient modules cannot be nested in other modules. +!!! error TS2435: Ambient modules cannot be nested in other modules or namespaces. export function f1(); export class c1 { } @@ -183,7 +183,7 @@ tests/cases/compiler/privacyImportParseErrors.ts(353,29): error TS1147: Import d declare module "m2_M4_private" { ~~~~~~~~~~~~~~~ -!!! error TS2435: Ambient modules cannot be nested in other modules. +!!! error TS2435: Ambient modules cannot be nested in other modules or namespaces. export function f1(); export class c1 { } @@ -263,7 +263,7 @@ tests/cases/compiler/privacyImportParseErrors.ts(353,29): error TS1147: Import d export declare module "glo_M2_public" { ~~~~~~~~~~~~~~~ -!!! error TS2435: Ambient modules cannot be nested in other modules. +!!! error TS2435: Ambient modules cannot be nested in other modules or namespaces. export function f1(); export class c1 { } @@ -283,7 +283,7 @@ tests/cases/compiler/privacyImportParseErrors.ts(353,29): error TS1147: Import d export declare module "glo_M4_private" { ~~~~~~~~~~~~~~~~ -!!! error TS2435: Ambient modules cannot be nested in other modules. +!!! error TS2435: Ambient modules cannot be nested in other modules or namespaces. export function f1(); export class c1 { } @@ -350,7 +350,7 @@ tests/cases/compiler/privacyImportParseErrors.ts(353,29): error TS1147: Import d export declare module "use_glo_M1_public" { ~~~~~~~~~~~~~~~~~~~ -!!! error TS2435: Ambient modules cannot be nested in other modules. +!!! error TS2435: Ambient modules cannot be nested in other modules or namespaces. import use_glo_M1_public = glo_M1_public; export var use_glo_M1_public_v1_public: { new (): use_glo_M1_public.c1; }; export var use_glo_M1_public_v2_public: use_glo_M1_public; @@ -391,7 +391,7 @@ tests/cases/compiler/privacyImportParseErrors.ts(353,29): error TS1147: Import d declare module "use_glo_M3_private" { ~~~~~~~~~~~~~~~~~~~~ -!!! error TS2435: Ambient modules cannot be nested in other modules. +!!! error TS2435: Ambient modules cannot be nested in other modules or namespaces. import use_glo_M3_private = glo_M3_private; export var use_glo_M3_private_v1_public: { new (): use_glo_M3_private.c1; }; export var use_glo_M3_private_v2_public: use_glo_M3_private; @@ -431,25 +431,25 @@ tests/cases/compiler/privacyImportParseErrors.ts(353,29): error TS1147: Import d declare module "anotherParseError" { ~~~~~~~~~~~~~~~~~~~ -!!! error TS2435: Ambient modules cannot be nested in other modules. +!!! error TS2435: Ambient modules cannot be nested in other modules or namespaces. module m2 { declare module "abc" { ~~~~~~~ !!! error TS1038: A 'declare' modifier cannot be used in an already ambient context. ~~~~~ -!!! error TS2435: Ambient modules cannot be nested in other modules. +!!! error TS2435: Ambient modules cannot be nested in other modules or namespaces. } } module m2 { module "abc2" { ~~~~~~ -!!! error TS2435: Ambient modules cannot be nested in other modules. +!!! error TS2435: Ambient modules cannot be nested in other modules or namespaces. } } module "abc3" { ~~~~~~ -!!! error TS2435: Ambient modules cannot be nested in other modules. +!!! error TS2435: Ambient modules cannot be nested in other modules or namespaces. } } @@ -457,25 +457,25 @@ tests/cases/compiler/privacyImportParseErrors.ts(353,29): error TS1147: Import d ~~~~~~ !!! error TS1029: 'export' modifier must precede 'declare' modifier. ~~~~~~~~~~~~~~~~~~~~ -!!! error TS2435: Ambient modules cannot be nested in other modules. +!!! error TS2435: Ambient modules cannot be nested in other modules or namespaces. module m2 { declare module "abc" { ~~~~~~~ !!! error TS1038: A 'declare' modifier cannot be used in an already ambient context. ~~~~~ -!!! error TS2435: Ambient modules cannot be nested in other modules. +!!! error TS2435: Ambient modules cannot be nested in other modules or namespaces. } } module m2 { module "abc2" { ~~~~~~ -!!! error TS2435: Ambient modules cannot be nested in other modules. +!!! error TS2435: Ambient modules cannot be nested in other modules or namespaces. } } module "abc3" { ~~~~~~ -!!! error TS2435: Ambient modules cannot be nested in other modules. +!!! error TS2435: Ambient modules cannot be nested in other modules or namespaces. } } diff --git a/tests/baselines/reference/privacyTopLevelAmbientExternalModuleImportWithExport.js b/tests/baselines/reference/privacyTopLevelAmbientExternalModuleImportWithExport.js index f0ee8c1bb6c..4d184dfe714 100644 --- a/tests/baselines/reference/privacyTopLevelAmbientExternalModuleImportWithExport.js +++ b/tests/baselines/reference/privacyTopLevelAmbientExternalModuleImportWithExport.js @@ -32,8 +32,8 @@ declare module 'm2' { /// /// // Privacy errors - importing private elements -export import im_public_mi_private = require("privacyTopLevelAmbientExternalModuleImportWithExport_require"); -export import im_public_mu_private = require("privacyTopLevelAmbientExternalModuleImportWithExport_require1"); +export import im_public_mi_private = require("./privacyTopLevelAmbientExternalModuleImportWithExport_require"); +export import im_public_mu_private = require("./privacyTopLevelAmbientExternalModuleImportWithExport_require1"); export import im_public_mi_public = require("m"); export import im_public_mu_public = require("m2"); @@ -69,8 +69,8 @@ exports.c_public = c_public; /// /// // Privacy errors - importing private elements -exports.im_public_mi_private = require("privacyTopLevelAmbientExternalModuleImportWithExport_require"); -exports.im_public_mu_private = require("privacyTopLevelAmbientExternalModuleImportWithExport_require1"); +exports.im_public_mi_private = require("./privacyTopLevelAmbientExternalModuleImportWithExport_require"); +exports.im_public_mu_private = require("./privacyTopLevelAmbientExternalModuleImportWithExport_require1"); exports.im_public_mi_public = require("m"); exports.im_public_mu_public = require("m2"); // Usage of privacy error imports @@ -107,8 +107,8 @@ export declare class c_public { //// [privacyTopLevelAmbientExternalModuleImportWithExport_core.d.ts] /// /// -export import im_public_mi_private = require("privacyTopLevelAmbientExternalModuleImportWithExport_require"); -export import im_public_mu_private = require("privacyTopLevelAmbientExternalModuleImportWithExport_require1"); +export import im_public_mi_private = require("./privacyTopLevelAmbientExternalModuleImportWithExport_require"); +export import im_public_mu_private = require("./privacyTopLevelAmbientExternalModuleImportWithExport_require1"); export import im_public_mi_public = require("m"); export import im_public_mu_public = require("m2"); export declare var publicUse_im_public_mi_private: im_public_mi_private.c_public; diff --git a/tests/baselines/reference/privacyTopLevelAmbientExternalModuleImportWithExport.symbols b/tests/baselines/reference/privacyTopLevelAmbientExternalModuleImportWithExport.symbols index 3c0bd5ff61b..2dcddbbfa06 100644 --- a/tests/baselines/reference/privacyTopLevelAmbientExternalModuleImportWithExport.symbols +++ b/tests/baselines/reference/privacyTopLevelAmbientExternalModuleImportWithExport.symbols @@ -2,14 +2,14 @@ /// /// // Privacy errors - importing private elements -export import im_public_mi_private = require("privacyTopLevelAmbientExternalModuleImportWithExport_require"); +export import im_public_mi_private = require("./privacyTopLevelAmbientExternalModuleImportWithExport_require"); >im_public_mi_private : Symbol(im_public_mi_private, Decl(privacyTopLevelAmbientExternalModuleImportWithExport_core.ts, 0, 0)) -export import im_public_mu_private = require("privacyTopLevelAmbientExternalModuleImportWithExport_require1"); ->im_public_mu_private : Symbol(im_public_mu_private, Decl(privacyTopLevelAmbientExternalModuleImportWithExport_core.ts, 3, 109)) +export import im_public_mu_private = require("./privacyTopLevelAmbientExternalModuleImportWithExport_require1"); +>im_public_mu_private : Symbol(im_public_mu_private, Decl(privacyTopLevelAmbientExternalModuleImportWithExport_core.ts, 3, 111)) export import im_public_mi_public = require("m"); ->im_public_mi_public : Symbol(im_public_mi_public, Decl(privacyTopLevelAmbientExternalModuleImportWithExport_core.ts, 4, 110)) +>im_public_mi_public : Symbol(im_public_mi_public, Decl(privacyTopLevelAmbientExternalModuleImportWithExport_core.ts, 4, 112)) export import im_public_mu_public = require("m2"); >im_public_mu_public : Symbol(im_public_mu_public, Decl(privacyTopLevelAmbientExternalModuleImportWithExport_core.ts, 5, 49)) @@ -30,37 +30,37 @@ export var publicUse_im_public_mi_private = new im_public_mi_private.c_public(); var privateUse_im_public_mu_private = new im_public_mu_private.c_public(); >privateUse_im_public_mu_private : Symbol(privateUse_im_public_mu_private, Decl(privacyTopLevelAmbientExternalModuleImportWithExport_core.ts, 11, 3)) >im_public_mu_private.c_public : Symbol(im_public_mu_private.c_public, Decl(privacyTopLevelAmbientExternalModuleImportWithExport_require1.ts, 0, 0)) ->im_public_mu_private : Symbol(im_public_mu_private, Decl(privacyTopLevelAmbientExternalModuleImportWithExport_core.ts, 3, 109)) +>im_public_mu_private : Symbol(im_public_mu_private, Decl(privacyTopLevelAmbientExternalModuleImportWithExport_core.ts, 3, 111)) >c_public : Symbol(im_public_mu_private.c_public, Decl(privacyTopLevelAmbientExternalModuleImportWithExport_require1.ts, 0, 0)) export var publicUse_im_public_mu_private = new im_public_mu_private.c_public(); >publicUse_im_public_mu_private : Symbol(publicUse_im_public_mu_private, Decl(privacyTopLevelAmbientExternalModuleImportWithExport_core.ts, 12, 10)) >im_public_mu_private.c_public : Symbol(im_public_mu_private.c_public, Decl(privacyTopLevelAmbientExternalModuleImportWithExport_require1.ts, 0, 0)) ->im_public_mu_private : Symbol(im_public_mu_private, Decl(privacyTopLevelAmbientExternalModuleImportWithExport_core.ts, 3, 109)) +>im_public_mu_private : Symbol(im_public_mu_private, Decl(privacyTopLevelAmbientExternalModuleImportWithExport_core.ts, 3, 111)) >c_public : Symbol(im_public_mu_private.c_public, Decl(privacyTopLevelAmbientExternalModuleImportWithExport_require1.ts, 0, 0)) var privateUse_im_public_mi_public = new im_public_mi_public.c_private(); >privateUse_im_public_mi_public : Symbol(privateUse_im_public_mi_public, Decl(privacyTopLevelAmbientExternalModuleImportWithExport_core.ts, 13, 3), Decl(privacyTopLevelAmbientExternalModuleImportWithExport_core.ts, 15, 3)) >im_public_mi_public.c_private : Symbol(im_public_mi_public.c_private, Decl(privacyTopLevelAmbientExternalModuleImportWithExport_require2.ts, 2, 20)) ->im_public_mi_public : Symbol(im_public_mi_public, Decl(privacyTopLevelAmbientExternalModuleImportWithExport_core.ts, 4, 110)) +>im_public_mi_public : Symbol(im_public_mi_public, Decl(privacyTopLevelAmbientExternalModuleImportWithExport_core.ts, 4, 112)) >c_private : Symbol(im_public_mi_public.c_private, Decl(privacyTopLevelAmbientExternalModuleImportWithExport_require2.ts, 2, 20)) export var publicUse_im_public_mi_public = new im_public_mi_public.c_private(); >publicUse_im_public_mi_public : Symbol(publicUse_im_public_mi_public, Decl(privacyTopLevelAmbientExternalModuleImportWithExport_core.ts, 14, 10), Decl(privacyTopLevelAmbientExternalModuleImportWithExport_core.ts, 16, 10)) >im_public_mi_public.c_private : Symbol(im_public_mi_public.c_private, Decl(privacyTopLevelAmbientExternalModuleImportWithExport_require2.ts, 2, 20)) ->im_public_mi_public : Symbol(im_public_mi_public, Decl(privacyTopLevelAmbientExternalModuleImportWithExport_core.ts, 4, 110)) +>im_public_mi_public : Symbol(im_public_mi_public, Decl(privacyTopLevelAmbientExternalModuleImportWithExport_core.ts, 4, 112)) >c_private : Symbol(im_public_mi_public.c_private, Decl(privacyTopLevelAmbientExternalModuleImportWithExport_require2.ts, 2, 20)) var privateUse_im_public_mi_public = new im_public_mi_public.c_private(); >privateUse_im_public_mi_public : Symbol(privateUse_im_public_mi_public, Decl(privacyTopLevelAmbientExternalModuleImportWithExport_core.ts, 13, 3), Decl(privacyTopLevelAmbientExternalModuleImportWithExport_core.ts, 15, 3)) >im_public_mi_public.c_private : Symbol(im_public_mi_public.c_private, Decl(privacyTopLevelAmbientExternalModuleImportWithExport_require2.ts, 2, 20)) ->im_public_mi_public : Symbol(im_public_mi_public, Decl(privacyTopLevelAmbientExternalModuleImportWithExport_core.ts, 4, 110)) +>im_public_mi_public : Symbol(im_public_mi_public, Decl(privacyTopLevelAmbientExternalModuleImportWithExport_core.ts, 4, 112)) >c_private : Symbol(im_public_mi_public.c_private, Decl(privacyTopLevelAmbientExternalModuleImportWithExport_require2.ts, 2, 20)) export var publicUse_im_public_mi_public = new im_public_mi_public.c_private(); >publicUse_im_public_mi_public : Symbol(publicUse_im_public_mi_public, Decl(privacyTopLevelAmbientExternalModuleImportWithExport_core.ts, 14, 10), Decl(privacyTopLevelAmbientExternalModuleImportWithExport_core.ts, 16, 10)) >im_public_mi_public.c_private : Symbol(im_public_mi_public.c_private, Decl(privacyTopLevelAmbientExternalModuleImportWithExport_require2.ts, 2, 20)) ->im_public_mi_public : Symbol(im_public_mi_public, Decl(privacyTopLevelAmbientExternalModuleImportWithExport_core.ts, 4, 110)) +>im_public_mi_public : Symbol(im_public_mi_public, Decl(privacyTopLevelAmbientExternalModuleImportWithExport_core.ts, 4, 112)) >c_private : Symbol(im_public_mi_public.c_private, Decl(privacyTopLevelAmbientExternalModuleImportWithExport_require2.ts, 2, 20)) === tests/cases/compiler/privacyTopLevelAmbientExternalModuleImportWithExport_require.ts === diff --git a/tests/baselines/reference/privacyTopLevelAmbientExternalModuleImportWithExport.types b/tests/baselines/reference/privacyTopLevelAmbientExternalModuleImportWithExport.types index b6d3d2967dc..5c082bef5de 100644 --- a/tests/baselines/reference/privacyTopLevelAmbientExternalModuleImportWithExport.types +++ b/tests/baselines/reference/privacyTopLevelAmbientExternalModuleImportWithExport.types @@ -2,10 +2,10 @@ /// /// // Privacy errors - importing private elements -export import im_public_mi_private = require("privacyTopLevelAmbientExternalModuleImportWithExport_require"); +export import im_public_mi_private = require("./privacyTopLevelAmbientExternalModuleImportWithExport_require"); >im_public_mi_private : typeof im_public_mi_private -export import im_public_mu_private = require("privacyTopLevelAmbientExternalModuleImportWithExport_require1"); +export import im_public_mu_private = require("./privacyTopLevelAmbientExternalModuleImportWithExport_require1"); >im_public_mu_private : typeof im_public_mu_private export import im_public_mi_public = require("m"); diff --git a/tests/baselines/reference/privateInstanceMemberAccessibility.errors.txt b/tests/baselines/reference/privateInstanceMemberAccessibility.errors.txt index 7893100b5a5..adca4e30e10 100644 --- a/tests/baselines/reference/privateInstanceMemberAccessibility.errors.txt +++ b/tests/baselines/reference/privateInstanceMemberAccessibility.errors.txt @@ -1,9 +1,10 @@ +tests/cases/conformance/classes/members/accessibility/privateInstanceMemberAccessibility.ts(5,7): error TS2415: Class 'Derived' incorrectly extends base class 'Base'. + Property 'foo' is private in type 'Base' but not in type 'Derived'. tests/cases/conformance/classes/members/accessibility/privateInstanceMemberAccessibility.ts(6,15): error TS2340: Only public and protected methods of the base class are accessible via the 'super' keyword. tests/cases/conformance/classes/members/accessibility/privateInstanceMemberAccessibility.ts(8,22): error TS2340: Only public and protected methods of the base class are accessible via the 'super' keyword. tests/cases/conformance/classes/members/accessibility/privateInstanceMemberAccessibility.ts(10,15): error TS1003: Identifier expected. tests/cases/conformance/classes/members/accessibility/privateInstanceMemberAccessibility.ts(10,21): error TS2340: Only public and protected methods of the base class are accessible via the 'super' keyword. -tests/cases/conformance/classes/members/accessibility/privateInstanceMemberAccessibility.ts(12,8): error TS1110: Type expected. -tests/cases/conformance/classes/members/accessibility/privateInstanceMemberAccessibility.ts(12,8): error TS2341: Property 'foo' is private and only accessible within class 'Base'. +tests/cases/conformance/classes/members/accessibility/privateInstanceMemberAccessibility.ts(12,12): error TS1005: ';' expected. ==== tests/cases/conformance/classes/members/accessibility/privateInstanceMemberAccessibility.ts (6 errors) ==== @@ -12,6 +13,9 @@ tests/cases/conformance/classes/members/accessibility/privateInstanceMemberAcces } class Derived extends Base { + ~~~~~~~ +!!! error TS2415: Class 'Derived' incorrectly extends base class 'Base'. +!!! error TS2415: Property 'foo' is private in type 'Base' but not in type 'Derived'. x = super.foo; // error ~~~ !!! error TS2340: Only public and protected methods of the base class are accessible via the 'super' keyword. @@ -27,8 +31,6 @@ tests/cases/conformance/classes/members/accessibility/privateInstanceMemberAcces !!! error TS2340: Only public and protected methods of the base class are accessible via the 'super' keyword. a: this.foo; // error - ~~~~ -!!! error TS1110: Type expected. - ~~~~~~~~ -!!! error TS2341: Property 'foo' is private and only accessible within class 'Base'. + ~ +!!! error TS1005: ';' expected. } \ No newline at end of file diff --git a/tests/baselines/reference/privateInstanceMemberAccessibility.js b/tests/baselines/reference/privateInstanceMemberAccessibility.js index ac2f44ee5d9..0ba2093a5c7 100644 --- a/tests/baselines/reference/privateInstanceMemberAccessibility.js +++ b/tests/baselines/reference/privateInstanceMemberAccessibility.js @@ -30,7 +30,6 @@ var Derived = (function (_super) { _super.apply(this, arguments); this.x = _super.prototype.foo; // error this.z = _super.prototype.foo; // error - this.a = this.foo; // error } Derived.prototype.y = function () { return _super.prototype.foo; // error diff --git a/tests/baselines/reference/privateInstanceVisibility.types b/tests/baselines/reference/privateInstanceVisibility.types index 109309ceb76..54a2c51ec14 100644 --- a/tests/baselines/reference/privateInstanceVisibility.types +++ b/tests/baselines/reference/privateInstanceVisibility.types @@ -14,8 +14,8 @@ module Test { >doSomething : () => void var that = this; ->that : Example ->this : Example +>that : this +>this : this function innerFunction() { >innerFunction : () => void @@ -23,7 +23,7 @@ module Test { var num = that.someNumber; >num : number >that.someNumber : number ->that : Example +>that : this >someNumber : number } @@ -45,7 +45,7 @@ class C { getX() { return this.x; } >getX : () => number >this.x : number ->this : C +>this : this >x : number clone(other: C) { @@ -56,7 +56,7 @@ class C { this.x = other.x; >this.x = other.x : number >this.x : number ->this : C +>this : this >x : number >other.x : number >other : C diff --git a/tests/baselines/reference/privateVisibles.types b/tests/baselines/reference/privateVisibles.types index e7c192d54db..71e26d7e264 100644 --- a/tests/baselines/reference/privateVisibles.types +++ b/tests/baselines/reference/privateVisibles.types @@ -10,7 +10,7 @@ class Foo { var n = this.pvar; >n : number >this.pvar : number ->this : Foo +>this : this >pvar : number } @@ -18,7 +18,7 @@ class Foo { >meth : () => void >q : number >this.pvar : number ->this : Foo +>this : this >pvar : number } diff --git a/tests/baselines/reference/promiseChaining.types b/tests/baselines/reference/promiseChaining.types index 981a19ef0a9..23a8b276fdc 100644 --- a/tests/baselines/reference/promiseChaining.types +++ b/tests/baselines/reference/promiseChaining.types @@ -22,7 +22,7 @@ class Chain { >cb(this.value) : S >cb : (x: T) => S >this.value : T ->this : Chain +>this : this >value : T // should get a fresh type parameter which each then call @@ -34,7 +34,7 @@ class Chain { >this.then(x => result)/*S*/.then : (cb: (x: S) => S) => Chain >this.then(x => result) : Chain >this.then : (cb: (x: T) => S) => Chain ->this : Chain +>this : this >then : (cb: (x: T) => S) => Chain >x => result : (x: T) => S >x : T diff --git a/tests/baselines/reference/promiseVoidErrorCallback.symbols b/tests/baselines/reference/promiseVoidErrorCallback.symbols index b12d564d880..3fc23ce5253 100644 --- a/tests/baselines/reference/promiseVoidErrorCallback.symbols +++ b/tests/baselines/reference/promiseVoidErrorCallback.symbols @@ -22,13 +22,13 @@ interface T3 { function f1(): Promise { >f1 : Symbol(f1, Decl(promiseVoidErrorCallback.ts, 10, 1)) ->Promise : Symbol(Promise, Decl(lib.d.ts, 5041, 1), Decl(lib.d.ts, 5127, 11)) +>Promise : Symbol(Promise, Decl(lib.d.ts, 5068, 1), Decl(lib.d.ts, 5154, 11)) >T1 : Symbol(T1, Decl(promiseVoidErrorCallback.ts, 0, 0)) return Promise.resolve({ __t1: "foo_t1" }); ->Promise.resolve : Symbol(PromiseConstructor.resolve, Decl(lib.d.ts, 5109, 39), Decl(lib.d.ts, 5116, 54)) ->Promise : Symbol(Promise, Decl(lib.d.ts, 5041, 1), Decl(lib.d.ts, 5127, 11)) ->resolve : Symbol(PromiseConstructor.resolve, Decl(lib.d.ts, 5109, 39), Decl(lib.d.ts, 5116, 54)) +>Promise.resolve : Symbol(PromiseConstructor.resolve, Decl(lib.d.ts, 5136, 39), Decl(lib.d.ts, 5143, 54)) +>Promise : Symbol(Promise, Decl(lib.d.ts, 5068, 1), Decl(lib.d.ts, 5154, 11)) +>resolve : Symbol(PromiseConstructor.resolve, Decl(lib.d.ts, 5136, 39), Decl(lib.d.ts, 5143, 54)) >__t1 : Symbol(__t1, Decl(promiseVoidErrorCallback.ts, 13, 28)) } @@ -47,12 +47,12 @@ function f2(x: T1): T2 { var x3 = f1() >x3 : Symbol(x3, Decl(promiseVoidErrorCallback.ts, 20, 3)) ->f1() .then(f2, (e: Error) => { throw e;}) .then : Symbol(Promise.then, Decl(lib.d.ts, 5046, 22), Decl(lib.d.ts, 5053, 158)) ->f1() .then : Symbol(Promise.then, Decl(lib.d.ts, 5046, 22), Decl(lib.d.ts, 5053, 158)) +>f1() .then(f2, (e: Error) => { throw e;}) .then : Symbol(Promise.then, Decl(lib.d.ts, 5073, 22), Decl(lib.d.ts, 5080, 158)) +>f1() .then : Symbol(Promise.then, Decl(lib.d.ts, 5073, 22), Decl(lib.d.ts, 5080, 158)) >f1 : Symbol(f1, Decl(promiseVoidErrorCallback.ts, 10, 1)) .then(f2, (e: Error) => { ->then : Symbol(Promise.then, Decl(lib.d.ts, 5046, 22), Decl(lib.d.ts, 5053, 158)) +>then : Symbol(Promise.then, Decl(lib.d.ts, 5073, 22), Decl(lib.d.ts, 5080, 158)) >f2 : Symbol(f2, Decl(promiseVoidErrorCallback.ts, 14, 1)) >e : Symbol(e, Decl(promiseVoidErrorCallback.ts, 21, 15)) >Error : Symbol(Error, Decl(lib.d.ts, 876, 38), Decl(lib.d.ts, 889, 11)) @@ -62,7 +62,7 @@ var x3 = f1() }) .then((x: T2) => { ->then : Symbol(Promise.then, Decl(lib.d.ts, 5046, 22), Decl(lib.d.ts, 5053, 158)) +>then : Symbol(Promise.then, Decl(lib.d.ts, 5073, 22), Decl(lib.d.ts, 5080, 158)) >x : Symbol(x, Decl(promiseVoidErrorCallback.ts, 24, 11)) >T2 : Symbol(T2, Decl(promiseVoidErrorCallback.ts, 2, 1)) diff --git a/tests/baselines/reference/protectedClassPropertyAccessibleWithinClass.types b/tests/baselines/reference/protectedClassPropertyAccessibleWithinClass.types index 98e5c120c3d..1e325d1d6f5 100644 --- a/tests/baselines/reference/protectedClassPropertyAccessibleWithinClass.types +++ b/tests/baselines/reference/protectedClassPropertyAccessibleWithinClass.types @@ -10,7 +10,7 @@ class C { protected get y() { return this.x; } >y : string >this.x : string ->this : C +>this : this >x : string protected set y(x) { this.y = this.x; } @@ -18,16 +18,16 @@ class C { >x : string >this.y = this.x : string >this.y : string ->this : C +>this : this >y : string >this.x : string ->this : C +>this : this >x : string protected foo() { return this.foo; } >foo : () => any >this.foo : () => any ->this : C +>this : this >foo : () => any protected static x: string; @@ -75,7 +75,7 @@ class C2 { >y : any >() => this.x : () => string >this.x : string ->this : C2 +>this : this >x : string >null : null @@ -85,17 +85,17 @@ class C2 { >() => { this.y = this.x; } : () => void >this.y = this.x : string >this.y : any ->this : C2 +>this : this >y : any >this.x : string ->this : C2 +>this : this >x : string protected foo() { () => this.foo; } >foo : () => void >() => this.foo : () => () => void >this.foo : () => void ->this : C2 +>this : this >foo : () => void protected static x: string; diff --git a/tests/baselines/reference/protectedClassPropertyAccessibleWithinSubclass.types b/tests/baselines/reference/protectedClassPropertyAccessibleWithinSubclass.types index bd230239d47..863f3100599 100644 --- a/tests/baselines/reference/protectedClassPropertyAccessibleWithinSubclass.types +++ b/tests/baselines/reference/protectedClassPropertyAccessibleWithinSubclass.types @@ -18,7 +18,7 @@ class C extends B { protected get y() { return this.x; } >y : string >this.x : string ->this : C +>this : this >x : string protected set y(x) { this.y = this.x; } @@ -26,23 +26,23 @@ class C extends B { >x : string >this.y = this.x : string >this.y : string ->this : C +>this : this >y : string >this.x : string ->this : C +>this : this >x : string protected foo() { return this.x; } >foo : () => string >this.x : string ->this : C +>this : this >x : string protected bar() { return this.foo(); } >bar : () => string >this.foo() : string >this.foo : () => string ->this : C +>this : this >foo : () => string protected static get y() { return this.x; } diff --git a/tests/baselines/reference/protoInIndexer.types b/tests/baselines/reference/protoInIndexer.types index 48e8b5d56dc..bfafc56404a 100644 --- a/tests/baselines/reference/protoInIndexer.types +++ b/tests/baselines/reference/protoInIndexer.types @@ -6,7 +6,7 @@ class X { this['__proto__'] = null; // used to cause ICE >this['__proto__'] = null : null >this['__proto__'] : any ->this : X +>this : this >'__proto__' : string >null : null } diff --git a/tests/baselines/reference/quotedPropertyName3.types b/tests/baselines/reference/quotedPropertyName3.types index 53d375f7621..7c957372e0d 100644 --- a/tests/baselines/reference/quotedPropertyName3.types +++ b/tests/baselines/reference/quotedPropertyName3.types @@ -10,7 +10,7 @@ class Test { >x : () => number >() => this["prop1"] : () => number >this["prop1"] : number ->this : Test +>this : this >"prop1" : string var y: number = x(); diff --git a/tests/baselines/reference/recursiveComplicatedClasses.types b/tests/baselines/reference/recursiveComplicatedClasses.types index 247b9ee27c5..1bb48a3c0c9 100644 --- a/tests/baselines/reference/recursiveComplicatedClasses.types +++ b/tests/baselines/reference/recursiveComplicatedClasses.types @@ -24,7 +24,7 @@ class Symbol { >bound : boolean public visible() { ->visible : () => boolean +>visible : () => any var b: TypeSymbol; >b : TypeSymbol diff --git a/tests/baselines/reference/recursiveProperties.types b/tests/baselines/reference/recursiveProperties.types index 2c3f90c6503..1e8a4ed3c1a 100644 --- a/tests/baselines/reference/recursiveProperties.types +++ b/tests/baselines/reference/recursiveProperties.types @@ -5,7 +5,7 @@ class A { get testProp() { return this.testProp; } >testProp : any >this.testProp : any ->this : A +>this : this >testProp : any } @@ -17,7 +17,7 @@ class B { >value : string >this.testProp = value : string >this.testProp : string ->this : B +>this : this >testProp : string >value : string } diff --git a/tests/baselines/reference/requireOfAnEmptyFile1.errors.txt b/tests/baselines/reference/requireOfAnEmptyFile1.errors.txt index 7094bc6699f..d02593feff9 100644 --- a/tests/baselines/reference/requireOfAnEmptyFile1.errors.txt +++ b/tests/baselines/reference/requireOfAnEmptyFile1.errors.txt @@ -4,8 +4,8 @@ tests/cases/compiler/requireOfAnEmptyFile1_a.ts(3,21): error TS2306: File 'tests ==== tests/cases/compiler/requireOfAnEmptyFile1_a.ts (1 errors) ==== //requireOfAnEmptyFile1 - import fs = require('requireOfAnEmptyFile1_b'); - ~~~~~~~~~~~~~~~~~~~~~~~~~ + import fs = require('./requireOfAnEmptyFile1_b'); + ~~~~~~~~~~~~~~~~~~~~~~~~~~~ !!! error TS2306: File 'requireOfAnEmptyFile1_b.ts' is not a module. ==== tests/cases/compiler/requireOfAnEmptyFile1_b.ts (0 errors) ==== diff --git a/tests/baselines/reference/requireOfAnEmptyFile1.js b/tests/baselines/reference/requireOfAnEmptyFile1.js index 779bc887140..b2079afa6ef 100644 --- a/tests/baselines/reference/requireOfAnEmptyFile1.js +++ b/tests/baselines/reference/requireOfAnEmptyFile1.js @@ -3,7 +3,7 @@ //// [requireOfAnEmptyFile1_a.ts] //requireOfAnEmptyFile1 -import fs = require('requireOfAnEmptyFile1_b'); +import fs = require('./requireOfAnEmptyFile1_b'); //// [requireOfAnEmptyFile1_b.ts] diff --git a/tests/baselines/reference/resolvingClassDeclarationWhenInBaseTypeResolution.types b/tests/baselines/reference/resolvingClassDeclarationWhenInBaseTypeResolution.types index c9025b56502..3b0a3c001b4 100644 --- a/tests/baselines/reference/resolvingClassDeclarationWhenInBaseTypeResolution.types +++ b/tests/baselines/reference/resolvingClassDeclarationWhenInBaseTypeResolution.types @@ -18,8 +18,8 @@ module rionegrensis { >x : caniventer >caniventer : caniventer >() => { var y = this; } : () => void ->y : caniventer ->this : caniventer +>y : this +>this : this >x : caniventer uchidai() : lavali.xanthognathus { var x : lavali.xanthognathus; () => { var y = this; }; return x; } @@ -30,8 +30,8 @@ module rionegrensis { >lavali : any >xanthognathus : lavali.xanthognathus >() => { var y = this; } : () => void ->y : caniventer ->this : caniventer +>y : this +>this : this >x : lavali.xanthognathus raffrayana() : lavali.otion { var x : lavali.otion; () => { var y = this; }; return x; } @@ -42,8 +42,8 @@ module rionegrensis { >lavali : any >otion : lavali.otion >() => { var y = this; } : () => void ->y : caniventer ->this : caniventer +>y : this +>this : this >x : lavali.otion Uranium() : minutus.inez, trivirgatus.falconeri> { var x : minutus.inez, trivirgatus.falconeri>; () => { var y = this; }; return x; } @@ -70,8 +70,8 @@ module rionegrensis { >trivirgatus : any >falconeri : trivirgatus.falconeri >() => { var y = this; } : () => void ->y : caniventer ->this : caniventer +>y : this +>this : this >x : minutus.inez, trivirgatus.falconeri> nayaur() : gabriellae.amicus { var x : gabriellae.amicus; () => { var y = this; }; return x; } @@ -82,8 +82,8 @@ module rionegrensis { >gabriellae : any >amicus : gabriellae.amicus >() => { var y = this; } : () => void ->y : caniventer ->this : caniventer +>y : this +>this : this >x : gabriellae.amicus } export class veraecrucis extends trivirgatus.mixtus { @@ -122,8 +122,8 @@ module rionegrensis { >provocax : any >melanoleuca : provocax.melanoleuca >() => { var y = this; } : () => void ->y : veraecrucis ->this : veraecrucis +>y : this +>this : this >x : panamensis.setulosus> vancouverensis() : imperfecta.ciliolabrum { var x : imperfecta.ciliolabrum; () => { var y = this; }; return x; } @@ -142,8 +142,8 @@ module rionegrensis { >argurus : any >peninsulae : argurus.peninsulae >() => { var y = this; } : () => void ->y : veraecrucis ->this : veraecrucis +>y : this +>this : this >x : imperfecta.ciliolabrum africana() : argurus.gilbertii, sagitta.cinereus> { var x : argurus.gilbertii, sagitta.cinereus>; () => { var y = this; }; return x; } @@ -178,8 +178,8 @@ module rionegrensis { >argurus : any >oreas : argurus.oreas >() => { var y = this; } : () => void ->y : veraecrucis ->this : veraecrucis +>y : this +>this : this >x : argurus.gilbertii, sagitta.cinereus> palliolata() : Lanthanum.jugularis { var x : Lanthanum.jugularis; () => { var y = this; }; return x; } @@ -190,8 +190,8 @@ module rionegrensis { >Lanthanum : any >jugularis : Lanthanum.jugularis >() => { var y = this; } : () => void ->y : veraecrucis ->this : veraecrucis +>y : this +>this : this >x : Lanthanum.jugularis nivicola() : samarensis.pallidus { var x : samarensis.pallidus; () => { var y = this; }; return x; } @@ -202,8 +202,8 @@ module rionegrensis { >samarensis : any >pallidus : samarensis.pallidus >() => { var y = this; } : () => void ->y : veraecrucis ->this : veraecrucis +>y : this +>this : this >x : samarensis.pallidus } } @@ -224,8 +224,8 @@ module julianae { >argurus : any >germaini : argurus.germaini >() => { var y = this; } : () => void ->y : nudicaudus ->this : nudicaudus +>y : this +>this : this >x : argurus.germaini maxwellii() : ruatanica.Praseodymium { var x : ruatanica.Praseodymium; () => { var y = this; }; return x; } @@ -244,8 +244,8 @@ module julianae { >dammermani : any >melanops : dammermani.melanops >() => { var y = this; } : () => void ->y : nudicaudus ->this : nudicaudus +>y : this +>this : this >x : ruatanica.Praseodymium endoi() : panglima.abidi { var x : panglima.abidi; () => { var y = this; }; return x; } @@ -264,8 +264,8 @@ module julianae { >lavali : any >wilsoni : lavali.wilsoni >() => { var y = this; } : () => void ->y : nudicaudus ->this : nudicaudus +>y : this +>this : this >x : panglima.abidi venezuelae() : howi.marcanoi { var x : howi.marcanoi; () => { var y = this; }; return x; } @@ -276,8 +276,8 @@ module julianae { >howi : any >marcanoi : howi.marcanoi >() => { var y = this; } : () => void ->y : nudicaudus ->this : nudicaudus +>y : this +>this : this >x : howi.marcanoi zamicrus() : rionegrensis.caniventer { var x : rionegrensis.caniventer; () => { var y = this; }; return x; } @@ -288,8 +288,8 @@ module julianae { >rionegrensis : any >caniventer : rionegrensis.caniventer >() => { var y = this; } : () => void ->y : nudicaudus ->this : nudicaudus +>y : this +>this : this >x : rionegrensis.caniventer } export class galapagoensis { @@ -311,8 +311,8 @@ module julianae { >patas : any >uralensis : patas.uralensis >() => { var y = this; } : () => void ->y : galapagoensis ->this : galapagoensis +>y : this +>this : this >x : panglima.amphibius rueppellii() : ruatanica.americanus { var x : ruatanica.americanus; () => { var y = this; }; return x; } @@ -323,8 +323,8 @@ module julianae { >ruatanica : any >americanus : ruatanica.americanus >() => { var y = this; } : () => void ->y : galapagoensis ->this : galapagoensis +>y : this +>this : this >x : ruatanica.americanus peregusna() : dogramacii.kaiseri { var x : dogramacii.kaiseri; () => { var y = this; }; return x; } @@ -335,8 +335,8 @@ module julianae { >dogramacii : any >kaiseri : dogramacii.kaiseri >() => { var y = this; } : () => void ->y : galapagoensis ->this : galapagoensis +>y : this +>this : this >x : dogramacii.kaiseri gliroides() : howi.coludo { var x : howi.coludo; () => { var y = this; }; return x; } @@ -355,8 +355,8 @@ module julianae { >lavali : any >wilsoni : lavali.wilsoni >() => { var y = this; } : () => void ->y : galapagoensis ->this : galapagoensis +>y : this +>this : this >x : howi.coludo banakrisi() : macrorhinos.daphaenodon { var x : macrorhinos.daphaenodon; () => { var y = this; }; return x; } @@ -367,8 +367,8 @@ module julianae { >macrorhinos : any >daphaenodon : macrorhinos.daphaenodon >() => { var y = this; } : () => void ->y : galapagoensis ->this : galapagoensis +>y : this +>this : this >x : macrorhinos.daphaenodon rozendaali() : lutreolus.foina { var x : lutreolus.foina; () => { var y = this; }; return x; } @@ -379,8 +379,8 @@ module julianae { >lutreolus : any >foina : lutreolus.foina >() => { var y = this; } : () => void ->y : galapagoensis ->this : galapagoensis +>y : this +>this : this >x : lutreolus.foina stuhlmanni() : panamensis.linulus { var x : panamensis.linulus; () => { var y = this; }; return x; } @@ -399,8 +399,8 @@ module julianae { >caurinus : any >megaphyllus : caurinus.megaphyllus >() => { var y = this; } : () => void ->y : galapagoensis ->this : galapagoensis +>y : this +>this : this >x : panamensis.linulus } export class albidens { @@ -432,8 +432,8 @@ module julianae { >imperfecta : any >subspinosus : imperfecta.subspinosus >() => { var y = this; } : () => void ->y : albidens ->this : albidens +>y : this +>this : this >x : samarensis.fuscus> Astatine() : steerii { var x : steerii; () => { var y = this; }; return x; } @@ -442,8 +442,8 @@ module julianae { >x : steerii >steerii : steerii >() => { var y = this; } : () => void ->y : albidens ->this : albidens +>y : this +>this : this >x : steerii vincenti() : argurus.dauricus { var x : argurus.dauricus; () => { var y = this; }; return x; } @@ -462,8 +462,8 @@ module julianae { >patas : any >uralensis : patas.uralensis >() => { var y = this; } : () => void ->y : albidens ->this : albidens +>y : this +>this : this >x : argurus.dauricus hirta() : Lanthanum.jugularis { var x : Lanthanum.jugularis; () => { var y = this; }; return x; } @@ -474,8 +474,8 @@ module julianae { >Lanthanum : any >jugularis : Lanthanum.jugularis >() => { var y = this; } : () => void ->y : albidens ->this : albidens +>y : this +>this : this >x : Lanthanum.jugularis virginianus() : durangae { var x : durangae; () => { var y = this; }; return x; } @@ -484,8 +484,8 @@ module julianae { >x : durangae >durangae : durangae >() => { var y = this; } : () => void ->y : albidens ->this : albidens +>y : this +>this : this >x : durangae macrophyllum() : howi.marcanoi { var x : howi.marcanoi; () => { var y = this; }; return x; } @@ -496,8 +496,8 @@ module julianae { >howi : any >marcanoi : howi.marcanoi >() => { var y = this; } : () => void ->y : albidens ->this : albidens +>y : this +>this : this >x : howi.marcanoi porcellus() : ruatanica.americanus { var x : ruatanica.americanus; () => { var y = this; }; return x; } @@ -508,8 +508,8 @@ module julianae { >ruatanica : any >americanus : ruatanica.americanus >() => { var y = this; } : () => void ->y : albidens ->this : albidens +>y : this +>this : this >x : ruatanica.americanus } export class oralis extends caurinus.psilurus { @@ -528,8 +528,8 @@ module julianae { >caurinus : any >psilurus : caurinus.psilurus >() => { var y = this; } : () => void ->y : oralis ->this : oralis +>y : this +>this : this >x : caurinus.psilurus porteri() : lavali.thaeleri { var x : lavali.thaeleri; () => { var y = this; }; return x; } @@ -540,8 +540,8 @@ module julianae { >lavali : any >thaeleri : lavali.thaeleri >() => { var y = this; } : () => void ->y : oralis ->this : oralis +>y : this +>this : this >x : lavali.thaeleri bindi() : caurinus.mahaganus> { var x : caurinus.mahaganus>; () => { var y = this; }; return x; } @@ -568,8 +568,8 @@ module julianae { >patas : any >uralensis : patas.uralensis >() => { var y = this; } : () => void ->y : oralis ->this : oralis +>y : this +>this : this >x : caurinus.mahaganus> puda() : sagitta.stolzmanni { var x : sagitta.stolzmanni; () => { var y = this; }; return x; } @@ -580,8 +580,8 @@ module julianae { >sagitta : any >stolzmanni : sagitta.stolzmanni >() => { var y = this; } : () => void ->y : oralis ->this : oralis +>y : this +>this : this >x : sagitta.stolzmanni mindorensis() : trivirgatus.falconeri { var x : trivirgatus.falconeri; () => { var y = this; }; return x; } @@ -592,8 +592,8 @@ module julianae { >trivirgatus : any >falconeri : trivirgatus.falconeri >() => { var y = this; } : () => void ->y : oralis ->this : oralis +>y : this +>this : this >x : trivirgatus.falconeri ignitus() : petrophilus.rosalia, lavali.wilsoni> { var x : petrophilus.rosalia, lavali.wilsoni>; () => { var y = this; }; return x; } @@ -618,8 +618,8 @@ module julianae { >lavali : any >wilsoni : lavali.wilsoni >() => { var y = this; } : () => void ->y : oralis ->this : oralis +>y : this +>this : this >x : petrophilus.rosalia, lavali.wilsoni> rufus() : nudicaudus { var x : nudicaudus; () => { var y = this; }; return x; } @@ -628,8 +628,8 @@ module julianae { >x : nudicaudus >nudicaudus : nudicaudus >() => { var y = this; } : () => void ->y : oralis ->this : oralis +>y : this +>this : this >x : nudicaudus monax() : imperfecta.subspinosus { var x : imperfecta.subspinosus; () => { var y = this; }; return x; } @@ -640,8 +640,8 @@ module julianae { >imperfecta : any >subspinosus : imperfecta.subspinosus >() => { var y = this; } : () => void ->y : oralis ->this : oralis +>y : this +>this : this >x : imperfecta.subspinosus unalascensis() : minutus.inez, gabriellae.echinatus>, dogramacii.aurata> { var x : minutus.inez, gabriellae.echinatus>, dogramacii.aurata>; () => { var y = this; }; return x; } @@ -676,8 +676,8 @@ module julianae { >dogramacii : any >aurata : dogramacii.aurata >() => { var y = this; } : () => void ->y : oralis ->this : oralis +>y : this +>this : this >x : minutus.inez, gabriellae.echinatus>, dogramacii.aurata> wuchihensis() : howi.angulatus, petrophilus.minutilla> { var x : howi.angulatus, petrophilus.minutilla>; () => { var y = this; }; return x; } @@ -704,8 +704,8 @@ module julianae { >petrophilus : any >minutilla : petrophilus.minutilla >() => { var y = this; } : () => void ->y : oralis ->this : oralis +>y : this +>this : this >x : howi.angulatus, petrophilus.minutilla> leucippe() : lavali.otion { var x : lavali.otion; () => { var y = this; }; return x; } @@ -716,8 +716,8 @@ module julianae { >lavali : any >otion : lavali.otion >() => { var y = this; } : () => void ->y : oralis ->this : oralis +>y : this +>this : this >x : lavali.otion ordii() : daubentonii.arboreus { var x : daubentonii.arboreus; () => { var y = this; }; return x; } @@ -736,8 +736,8 @@ module julianae { >sagitta : any >stolzmanni : sagitta.stolzmanni >() => { var y = this; } : () => void ->y : oralis ->this : oralis +>y : this +>this : this >x : daubentonii.arboreus eisentrauti() : rendalli.zuluensis { var x : rendalli.zuluensis; () => { var y = this; }; return x; } @@ -748,8 +748,8 @@ module julianae { >rendalli : any >zuluensis : rendalli.zuluensis >() => { var y = this; } : () => void ->y : oralis ->this : oralis +>y : this +>this : this >x : rendalli.zuluensis } export class sumatrana extends Lanthanum.jugularis { @@ -774,8 +774,8 @@ module julianae { >quasiater : any >carolinensis : quasiater.carolinensis >() => { var y = this; } : () => void ->y : sumatrana ->this : sumatrana +>y : this +>this : this >x : Lanthanum.suillus geata() : ruatanica.hector { var x : ruatanica.hector; () => { var y = this; }; return x; } @@ -792,8 +792,8 @@ module julianae { >quasiater : any >bobrinskoi : quasiater.bobrinskoi >() => { var y = this; } : () => void ->y : sumatrana ->this : sumatrana +>y : this +>this : this >x : ruatanica.hector awashensis() : petrophilus.minutilla { var x : petrophilus.minutilla; () => { var y = this; }; return x; } @@ -804,8 +804,8 @@ module julianae { >petrophilus : any >minutilla : petrophilus.minutilla >() => { var y = this; } : () => void ->y : sumatrana ->this : sumatrana +>y : this +>this : this >x : petrophilus.minutilla sturdeei() : lutreolus.cor { var x : lutreolus.cor; () => { var y = this; }; return x; } @@ -822,8 +822,8 @@ module julianae { >jugularis : Lanthanum.jugularis >galapagoensis : galapagoensis >() => { var y = this; } : () => void ->y : sumatrana ->this : sumatrana +>y : this +>this : this >x : lutreolus.cor pachyurus() : howi.angulatus> { var x : howi.angulatus>; () => { var y = this; }; return x; } @@ -848,8 +848,8 @@ module julianae { >quasiater : any >carolinensis : quasiater.carolinensis >() => { var y = this; } : () => void ->y : sumatrana ->this : sumatrana +>y : this +>this : this >x : howi.angulatus> lyelli() : provocax.melanoleuca { var x : provocax.melanoleuca; () => { var y = this; }; return x; } @@ -860,8 +860,8 @@ module julianae { >provocax : any >melanoleuca : provocax.melanoleuca >() => { var y = this; } : () => void ->y : sumatrana ->this : sumatrana +>y : this +>this : this >x : provocax.melanoleuca neohibernicus() : dammermani.siberu { var x : dammermani.siberu; () => { var y = this; }; return x; } @@ -880,8 +880,8 @@ module julianae { >samarensis : any >pallidus : samarensis.pallidus >() => { var y = this; } : () => void ->y : sumatrana ->this : sumatrana +>y : this +>this : this >x : dammermani.siberu } export class gerbillus { @@ -905,8 +905,8 @@ module julianae { >caurinus : any >psilurus : caurinus.psilurus >() => { var y = this; } : () => void ->y : gerbillus ->this : gerbillus +>y : this +>this : this >x : sagitta.sicarius tristrami() : petrophilus.minutilla { var x : petrophilus.minutilla; () => { var y = this; }; return x; } @@ -917,8 +917,8 @@ module julianae { >petrophilus : any >minutilla : petrophilus.minutilla >() => { var y = this; } : () => void ->y : gerbillus ->this : gerbillus +>y : this +>this : this >x : petrophilus.minutilla swarthi() : lutreolus.foina { var x : lutreolus.foina; () => { var y = this; }; return x; } @@ -929,8 +929,8 @@ module julianae { >lutreolus : any >foina : lutreolus.foina >() => { var y = this; } : () => void ->y : gerbillus ->this : gerbillus +>y : this +>this : this >x : lutreolus.foina horsfieldii() : trivirgatus.falconeri { var x : trivirgatus.falconeri; () => { var y = this; }; return x; } @@ -941,8 +941,8 @@ module julianae { >trivirgatus : any >falconeri : trivirgatus.falconeri >() => { var y = this; } : () => void ->y : gerbillus ->this : gerbillus +>y : this +>this : this >x : trivirgatus.falconeri diazi() : imperfecta.lasiurus { var x : imperfecta.lasiurus; () => { var y = this; }; return x; } @@ -961,8 +961,8 @@ module julianae { >dammermani : any >melanops : dammermani.melanops >() => { var y = this; } : () => void ->y : gerbillus ->this : gerbillus +>y : this +>this : this >x : imperfecta.lasiurus rennelli() : argurus.luctuosa { var x : argurus.luctuosa; () => { var y = this; }; return x; } @@ -973,8 +973,8 @@ module julianae { >argurus : any >luctuosa : argurus.luctuosa >() => { var y = this; } : () => void ->y : gerbillus ->this : gerbillus +>y : this +>this : this >x : argurus.luctuosa maulinus() : lavali.lepturus { var x : lavali.lepturus; () => { var y = this; }; return x; } @@ -985,8 +985,8 @@ module julianae { >lavali : any >lepturus : lavali.lepturus >() => { var y = this; } : () => void ->y : gerbillus ->this : gerbillus +>y : this +>this : this >x : lavali.lepturus muscina() : daubentonii.arboreus { var x : daubentonii.arboreus; () => { var y = this; }; return x; } @@ -1005,8 +1005,8 @@ module julianae { >argurus : any >peninsulae : argurus.peninsulae >() => { var y = this; } : () => void ->y : gerbillus ->this : gerbillus +>y : this +>this : this >x : daubentonii.arboreus pelengensis() : sagitta.leptoceros { var x : sagitta.leptoceros; () => { var y = this; }; return x; } @@ -1025,8 +1025,8 @@ module julianae { >gabriellae : any >echinatus : gabriellae.echinatus >() => { var y = this; } : () => void ->y : gerbillus ->this : gerbillus +>y : this +>this : this >x : sagitta.leptoceros abramus() : lavali.thaeleri { var x : lavali.thaeleri; () => { var y = this; }; return x; } @@ -1037,8 +1037,8 @@ module julianae { >lavali : any >thaeleri : lavali.thaeleri >() => { var y = this; } : () => void ->y : gerbillus ->this : gerbillus +>y : this +>this : this >x : lavali.thaeleri reevesi() : provocax.melanoleuca { var x : provocax.melanoleuca; () => { var y = this; }; return x; } @@ -1049,8 +1049,8 @@ module julianae { >provocax : any >melanoleuca : provocax.melanoleuca >() => { var y = this; } : () => void ->y : gerbillus ->this : gerbillus +>y : this +>this : this >x : provocax.melanoleuca } export class acariensis { @@ -1064,8 +1064,8 @@ module julianae { >lavali : any >lepturus : lavali.lepturus >() => { var y = this; } : () => void ->y : acariensis ->this : acariensis +>y : this +>this : this >x : lavali.lepturus minous() : argurus.dauricus { var x : argurus.dauricus; () => { var y = this; }; return x; } @@ -1084,8 +1084,8 @@ module julianae { >lavali : any >otion : lavali.otion >() => { var y = this; } : () => void ->y : acariensis ->this : acariensis +>y : this +>this : this >x : argurus.dauricus cinereiventer() : panamensis.setulosus { var x : panamensis.setulosus; () => { var y = this; }; return x; } @@ -1104,8 +1104,8 @@ module julianae { >lavali : any >otion : lavali.otion >() => { var y = this; } : () => void ->y : acariensis ->this : acariensis +>y : this +>this : this >x : panamensis.setulosus longicaudatus() : macrorhinos.marmosurus> { var x : macrorhinos.marmosurus>; () => { var y = this; }; return x; } @@ -1130,8 +1130,8 @@ module julianae { >lavali : any >otion : lavali.otion >() => { var y = this; } : () => void ->y : acariensis ->this : acariensis +>y : this +>this : this >x : macrorhinos.marmosurus> baeodon() : argurus.netscheri, argurus.luctuosa> { var x : argurus.netscheri, argurus.luctuosa>; () => { var y = this; }; return x; } @@ -1158,8 +1158,8 @@ module julianae { >argurus : any >luctuosa : argurus.luctuosa >() => { var y = this; } : () => void ->y : acariensis ->this : acariensis +>y : this +>this : this >x : argurus.netscheri, argurus.luctuosa> soricoides() : argurus.luctuosa { var x : argurus.luctuosa; () => { var y = this; }; return x; } @@ -1170,8 +1170,8 @@ module julianae { >argurus : any >luctuosa : argurus.luctuosa >() => { var y = this; } : () => void ->y : acariensis ->this : acariensis +>y : this +>this : this >x : argurus.luctuosa datae() : daubentonii.arboreus> { var x : daubentonii.arboreus>; () => { var y = this; }; return x; } @@ -1198,8 +1198,8 @@ module julianae { >patas : any >uralensis : patas.uralensis >() => { var y = this; } : () => void ->y : acariensis ->this : acariensis +>y : this +>this : this >x : daubentonii.arboreus> spixii() : imperfecta.subspinosus { var x : imperfecta.subspinosus; () => { var y = this; }; return x; } @@ -1210,8 +1210,8 @@ module julianae { >imperfecta : any >subspinosus : imperfecta.subspinosus >() => { var y = this; } : () => void ->y : acariensis ->this : acariensis +>y : this +>this : this >x : imperfecta.subspinosus anakuma() : lavali.wilsoni { var x : lavali.wilsoni; () => { var y = this; }; return x; } @@ -1222,8 +1222,8 @@ module julianae { >lavali : any >wilsoni : lavali.wilsoni >() => { var y = this; } : () => void ->y : acariensis ->this : acariensis +>y : this +>this : this >x : lavali.wilsoni kihaulei() : panglima.amphibius { var x : panglima.amphibius; () => { var y = this; }; return x; } @@ -1242,8 +1242,8 @@ module julianae { >macrorhinos : any >konganensis : macrorhinos.konganensis >() => { var y = this; } : () => void ->y : acariensis ->this : acariensis +>y : this +>this : this >x : panglima.amphibius gymnura() : quasiater.carolinensis { var x : quasiater.carolinensis; () => { var y = this; }; return x; } @@ -1254,8 +1254,8 @@ module julianae { >quasiater : any >carolinensis : quasiater.carolinensis >() => { var y = this; } : () => void ->y : acariensis ->this : acariensis +>y : this +>this : this >x : quasiater.carolinensis olchonensis() : rendalli.crenulata { var x : rendalli.crenulata; () => { var y = this; }; return x; } @@ -1274,8 +1274,8 @@ module julianae { >provocax : any >melanoleuca : provocax.melanoleuca >() => { var y = this; } : () => void ->y : acariensis ->this : acariensis +>y : this +>this : this >x : rendalli.crenulata } export class durangae extends dogramacii.aurata { @@ -1300,8 +1300,8 @@ module julianae { >dammermani : any >melanops : dammermani.melanops >() => { var y = this; } : () => void ->y : durangae ->this : durangae +>y : this +>this : this >x : panamensis.setulosus Flerovium() : howi.angulatus { var x : howi.angulatus; () => { var y = this; }; return x; } @@ -1320,8 +1320,8 @@ module julianae { >lavali : any >xanthognathus : lavali.xanthognathus >() => { var y = this; } : () => void ->y : durangae ->this : durangae +>y : this +>this : this >x : howi.angulatus phrudus() : sagitta.stolzmanni { var x : sagitta.stolzmanni; () => { var y = this; }; return x; } @@ -1332,8 +1332,8 @@ module julianae { >sagitta : any >stolzmanni : sagitta.stolzmanni >() => { var y = this; } : () => void ->y : durangae ->this : durangae +>y : this +>this : this >x : sagitta.stolzmanni } } @@ -1353,8 +1353,8 @@ module ruatanica { >julianae : any >steerii : julianae.steerii >() => { var y = this; } : () => void ->y : hector ->this : hector +>y : this +>this : this >x : julianae.steerii eurycerus() : panamensis.linulus, lavali.wilsoni> { var x : panamensis.linulus, lavali.wilsoni>; () => { var y = this; }; return x; } @@ -1381,8 +1381,8 @@ module ruatanica { >lavali : any >wilsoni : lavali.wilsoni >() => { var y = this; } : () => void ->y : hector ->this : hector +>y : this +>this : this >x : panamensis.linulus, lavali.wilsoni> } } @@ -1402,8 +1402,8 @@ module Lanthanum { >quasiater : any >carolinensis : quasiater.carolinensis >() => { var y = this; } : () => void ->y : suillus ->this : suillus +>y : this +>this : this >x : quasiater.carolinensis tumbalensis() : caurinus.megaphyllus { var x : caurinus.megaphyllus; () => { var y = this; }; return x; } @@ -1414,8 +1414,8 @@ module Lanthanum { >caurinus : any >megaphyllus : caurinus.megaphyllus >() => { var y = this; } : () => void ->y : suillus ->this : suillus +>y : this +>this : this >x : caurinus.megaphyllus anatolicus() : julianae.steerii { var x : julianae.steerii; () => { var y = this; }; return x; } @@ -1426,8 +1426,8 @@ module Lanthanum { >julianae : any >steerii : julianae.steerii >() => { var y = this; } : () => void ->y : suillus ->this : suillus +>y : this +>this : this >x : julianae.steerii } export class nitidus extends argurus.gilbertii { @@ -1450,8 +1450,8 @@ module Lanthanum { >quasiater : any >bobrinskoi : quasiater.bobrinskoi >() => { var y = this; } : () => void ->y : nitidus ->this : nitidus +>y : this +>this : this >x : quasiater.bobrinskoi negligens() : minutus.inez { var x : minutus.inez; () => { var y = this; }; return x; } @@ -1470,8 +1470,8 @@ module Lanthanum { >lavali : any >wilsoni : lavali.wilsoni >() => { var y = this; } : () => void ->y : nitidus ->this : nitidus +>y : this +>this : this >x : minutus.inez lewisi() : julianae.oralis { var x : julianae.oralis; () => { var y = this; }; return x; } @@ -1490,8 +1490,8 @@ module Lanthanum { >argurus : any >oreas : argurus.oreas >() => { var y = this; } : () => void ->y : nitidus ->this : nitidus +>y : this +>this : this >x : julianae.oralis arge() : chrysaeolus.sarasinorum { var x : chrysaeolus.sarasinorum; () => { var y = this; }; return x; } @@ -1510,8 +1510,8 @@ module Lanthanum { >lavali : any >xanthognathus : lavali.xanthognathus >() => { var y = this; } : () => void ->y : nitidus ->this : nitidus +>y : this +>this : this >x : chrysaeolus.sarasinorum dominicensis() : dammermani.melanops { var x : dammermani.melanops; () => { var y = this; }; return x; } @@ -1522,8 +1522,8 @@ module Lanthanum { >dammermani : any >melanops : dammermani.melanops >() => { var y = this; } : () => void ->y : nitidus ->this : nitidus +>y : this +>this : this >x : dammermani.melanops taurus() : macrorhinos.konganensis { var x : macrorhinos.konganensis; () => { var y = this; }; return x; } @@ -1534,8 +1534,8 @@ module Lanthanum { >macrorhinos : any >konganensis : macrorhinos.konganensis >() => { var y = this; } : () => void ->y : nitidus ->this : nitidus +>y : this +>this : this >x : macrorhinos.konganensis tonganus() : argurus.netscheri { var x : argurus.netscheri; () => { var y = this; }; return x; } @@ -1554,8 +1554,8 @@ module Lanthanum { >dogramacii : any >aurata : dogramacii.aurata >() => { var y = this; } : () => void ->y : nitidus ->this : nitidus +>y : this +>this : this >x : argurus.netscheri silvatica() : rendalli.moojeni { var x : rendalli.moojeni; () => { var y = this; }; return x; } @@ -1574,8 +1574,8 @@ module Lanthanum { >lavali : any >otion : lavali.otion >() => { var y = this; } : () => void ->y : nitidus ->this : nitidus +>y : this +>this : this >x : rendalli.moojeni midas() : lavali.xanthognathus { var x : lavali.xanthognathus; () => { var y = this; }; return x; } @@ -1586,8 +1586,8 @@ module Lanthanum { >lavali : any >xanthognathus : lavali.xanthognathus >() => { var y = this; } : () => void ->y : nitidus ->this : nitidus +>y : this +>this : this >x : lavali.xanthognathus bicornis() : dogramacii.kaiseri { var x : dogramacii.kaiseri; () => { var y = this; }; return x; } @@ -1598,8 +1598,8 @@ module Lanthanum { >dogramacii : any >kaiseri : dogramacii.kaiseri >() => { var y = this; } : () => void ->y : nitidus ->this : nitidus +>y : this +>this : this >x : dogramacii.kaiseri } export class megalonyx extends caurinus.johorensis { @@ -1620,8 +1620,8 @@ module Lanthanum { >macrorhinos : any >konganensis : macrorhinos.konganensis >() => { var y = this; } : () => void ->y : megalonyx ->this : megalonyx +>y : this +>this : this >x : macrorhinos.konganensis melanogaster() : rionegrensis.veraecrucis { var x : rionegrensis.veraecrucis; () => { var y = this; }; return x; } @@ -1640,8 +1640,8 @@ module Lanthanum { >quasiater : any >carolinensis : quasiater.carolinensis >() => { var y = this; } : () => void ->y : megalonyx ->this : megalonyx +>y : this +>this : this >x : rionegrensis.veraecrucis elaphus() : nitidus { var x : nitidus; () => { var y = this; }; return x; } @@ -1658,8 +1658,8 @@ module Lanthanum { >julianae : any >sumatrana : julianae.sumatrana >() => { var y = this; } : () => void ->y : megalonyx ->this : megalonyx +>y : this +>this : this >x : nitidus elater() : lavali.lepturus { var x : lavali.lepturus; () => { var y = this; }; return x; } @@ -1670,8 +1670,8 @@ module Lanthanum { >lavali : any >lepturus : lavali.lepturus >() => { var y = this; } : () => void ->y : megalonyx ->this : megalonyx +>y : this +>this : this >x : lavali.lepturus ourebi() : provocax.melanoleuca { var x : provocax.melanoleuca; () => { var y = this; }; return x; } @@ -1682,8 +1682,8 @@ module Lanthanum { >provocax : any >melanoleuca : provocax.melanoleuca >() => { var y = this; } : () => void ->y : megalonyx ->this : megalonyx +>y : this +>this : this >x : provocax.melanoleuca caraccioli() : imperfecta.ciliolabrum> { var x : imperfecta.ciliolabrum>; () => { var y = this; }; return x; } @@ -1710,8 +1710,8 @@ module Lanthanum { >julianae : any >acariensis : julianae.acariensis >() => { var y = this; } : () => void ->y : megalonyx ->this : megalonyx +>y : this +>this : this >x : imperfecta.ciliolabrum> parva() : gabriellae.echinatus { var x : gabriellae.echinatus; () => { var y = this; }; return x; } @@ -1722,8 +1722,8 @@ module Lanthanum { >gabriellae : any >echinatus : gabriellae.echinatus >() => { var y = this; } : () => void ->y : megalonyx ->this : megalonyx +>y : this +>this : this >x : gabriellae.echinatus albipes() : quasiater.wattsi { var x : quasiater.wattsi; () => { var y = this; }; return x; } @@ -1740,8 +1740,8 @@ module Lanthanum { >melanops : dammermani.melanops >megalonyx : megalonyx >() => { var y = this; } : () => void ->y : megalonyx ->this : megalonyx +>y : this +>this : this >x : quasiater.wattsi } export class jugularis { @@ -1763,8 +1763,8 @@ module Lanthanum { >macrorhinos : any >daphaenodon : macrorhinos.daphaenodon >() => { var y = this; } : () => void ->y : jugularis ->this : jugularis +>y : this +>this : this >x : petrophilus.sodyi revoili() : lavali.wilsoni { var x : lavali.wilsoni; () => { var y = this; }; return x; } @@ -1775,8 +1775,8 @@ module Lanthanum { >lavali : any >wilsoni : lavali.wilsoni >() => { var y = this; } : () => void ->y : jugularis ->this : jugularis +>y : this +>this : this >x : lavali.wilsoni macrobullatus() : macrorhinos.daphaenodon { var x : macrorhinos.daphaenodon; () => { var y = this; }; return x; } @@ -1787,8 +1787,8 @@ module Lanthanum { >macrorhinos : any >daphaenodon : macrorhinos.daphaenodon >() => { var y = this; } : () => void ->y : jugularis ->this : jugularis +>y : this +>this : this >x : macrorhinos.daphaenodon compactus() : sagitta.stolzmanni { var x : sagitta.stolzmanni; () => { var y = this; }; return x; } @@ -1799,8 +1799,8 @@ module Lanthanum { >sagitta : any >stolzmanni : sagitta.stolzmanni >() => { var y = this; } : () => void ->y : jugularis ->this : jugularis +>y : this +>this : this >x : sagitta.stolzmanni talpinus() : nitidus { var x : nitidus; () => { var y = this; }; return x; } @@ -1817,8 +1817,8 @@ module Lanthanum { >sagitta : any >stolzmanni : sagitta.stolzmanni >() => { var y = this; } : () => void ->y : jugularis ->this : jugularis +>y : this +>this : this >x : nitidus stramineus() : gabriellae.amicus { var x : gabriellae.amicus; () => { var y = this; }; return x; } @@ -1829,8 +1829,8 @@ module Lanthanum { >gabriellae : any >amicus : gabriellae.amicus >() => { var y = this; } : () => void ->y : jugularis ->this : jugularis +>y : this +>this : this >x : gabriellae.amicus dartmouthi() : trivirgatus.mixtus { var x : trivirgatus.mixtus; () => { var y = this; }; return x; } @@ -1849,8 +1849,8 @@ module Lanthanum { >argurus : any >luctuosa : argurus.luctuosa >() => { var y = this; } : () => void ->y : jugularis ->this : jugularis +>y : this +>this : this >x : trivirgatus.mixtus ogilbyi() : argurus.dauricus { var x : argurus.dauricus; () => { var y = this; }; return x; } @@ -1869,8 +1869,8 @@ module Lanthanum { >quasiater : any >carolinensis : quasiater.carolinensis >() => { var y = this; } : () => void ->y : jugularis ->this : jugularis +>y : this +>this : this >x : argurus.dauricus incomtus() : daubentonii.nesiotes { var x : daubentonii.nesiotes; () => { var y = this; }; return x; } @@ -1889,8 +1889,8 @@ module Lanthanum { >quasiater : any >carolinensis : quasiater.carolinensis >() => { var y = this; } : () => void ->y : jugularis ->this : jugularis +>y : this +>this : this >x : daubentonii.nesiotes surdaster() : ruatanica.Praseodymium { var x : ruatanica.Praseodymium; () => { var y = this; }; return x; } @@ -1909,8 +1909,8 @@ module Lanthanum { >caurinus : any >megaphyllus : caurinus.megaphyllus >() => { var y = this; } : () => void ->y : jugularis ->this : jugularis +>y : this +>this : this >x : ruatanica.Praseodymium melanorhinus() : samarensis.pelurus { var x : samarensis.pelurus; () => { var y = this; }; return x; } @@ -1929,8 +1929,8 @@ module Lanthanum { >rendalli : any >zuluensis : rendalli.zuluensis >() => { var y = this; } : () => void ->y : jugularis ->this : jugularis +>y : this +>this : this >x : samarensis.pelurus picticaudata() : minutus.inez, dogramacii.kaiseri> { var x : minutus.inez, dogramacii.kaiseri>; () => { var y = this; }; return x; } @@ -1957,8 +1957,8 @@ module Lanthanum { >dogramacii : any >kaiseri : dogramacii.kaiseri >() => { var y = this; } : () => void ->y : jugularis ->this : jugularis +>y : this +>this : this >x : minutus.inez, dogramacii.kaiseri> pomona() : julianae.steerii { var x : julianae.steerii; () => { var y = this; }; return x; } @@ -1969,8 +1969,8 @@ module Lanthanum { >julianae : any >steerii : julianae.steerii >() => { var y = this; } : () => void ->y : jugularis ->this : jugularis +>y : this +>this : this >x : julianae.steerii ileile() : quasiater.carolinensis { var x : quasiater.carolinensis; () => { var y = this; }; return x; } @@ -1981,8 +1981,8 @@ module Lanthanum { >quasiater : any >carolinensis : quasiater.carolinensis >() => { var y = this; } : () => void ->y : jugularis ->this : jugularis +>y : this +>this : this >x : quasiater.carolinensis } } @@ -2011,8 +2011,8 @@ module rendalli { >provocax : any >melanoleuca : provocax.melanoleuca >() => { var y = this; } : () => void ->y : zuluensis ->this : zuluensis +>y : this +>this : this >x : argurus.wetmorei keyensis() : quasiater.wattsi { var x : quasiater.wattsi; () => { var y = this; }; return x; } @@ -2031,8 +2031,8 @@ module rendalli { >lavali : any >lepturus : lavali.lepturus >() => { var y = this; } : () => void ->y : zuluensis ->this : zuluensis +>y : this +>this : this >x : quasiater.wattsi occasius() : argurus.gilbertii { var x : argurus.gilbertii; () => { var y = this; }; return x; } @@ -2051,8 +2051,8 @@ module rendalli { >lavali : any >xanthognathus : lavali.xanthognathus >() => { var y = this; } : () => void ->y : zuluensis ->this : zuluensis +>y : this +>this : this >x : argurus.gilbertii damarensis() : julianae.galapagoensis { var x : julianae.galapagoensis; () => { var y = this; }; return x; } @@ -2063,8 +2063,8 @@ module rendalli { >julianae : any >galapagoensis : julianae.galapagoensis >() => { var y = this; } : () => void ->y : zuluensis ->this : zuluensis +>y : this +>this : this >x : julianae.galapagoensis Neptunium() : panglima.abidi { var x : panglima.abidi; () => { var y = this; }; return x; } @@ -2083,8 +2083,8 @@ module rendalli { >lutreolus : any >foina : lutreolus.foina >() => { var y = this; } : () => void ->y : zuluensis ->this : zuluensis +>y : this +>this : this >x : panglima.abidi griseoflavus() : ruatanica.americanus { var x : ruatanica.americanus; () => { var y = this; }; return x; } @@ -2095,8 +2095,8 @@ module rendalli { >ruatanica : any >americanus : ruatanica.americanus >() => { var y = this; } : () => void ->y : zuluensis ->this : zuluensis +>y : this +>this : this >x : ruatanica.americanus thar() : argurus.oreas { var x : argurus.oreas; () => { var y = this; }; return x; } @@ -2107,8 +2107,8 @@ module rendalli { >argurus : any >oreas : argurus.oreas >() => { var y = this; } : () => void ->y : zuluensis ->this : zuluensis +>y : this +>this : this >x : argurus.oreas alborufus() : panamensis.linulus { var x : panamensis.linulus; () => { var y = this; }; return x; } @@ -2127,8 +2127,8 @@ module rendalli { >argurus : any >oreas : argurus.oreas >() => { var y = this; } : () => void ->y : zuluensis ->this : zuluensis +>y : this +>this : this >x : panamensis.linulus fusicaudus() : sagitta.stolzmanni { var x : sagitta.stolzmanni; () => { var y = this; }; return x; } @@ -2139,8 +2139,8 @@ module rendalli { >sagitta : any >stolzmanni : sagitta.stolzmanni >() => { var y = this; } : () => void ->y : zuluensis ->this : zuluensis +>y : this +>this : this >x : sagitta.stolzmanni gordonorum() : howi.angulatus { var x : howi.angulatus; () => { var y = this; }; return x; } @@ -2159,8 +2159,8 @@ module rendalli { >argurus : any >germaini : argurus.germaini >() => { var y = this; } : () => void ->y : zuluensis ->this : zuluensis +>y : this +>this : this >x : howi.angulatus ruber() : dammermani.siberu { var x : dammermani.siberu; () => { var y = this; }; return x; } @@ -2179,8 +2179,8 @@ module rendalli { >julianae : any >acariensis : julianae.acariensis >() => { var y = this; } : () => void ->y : zuluensis ->this : zuluensis +>y : this +>this : this >x : dammermani.siberu desmarestianus() : julianae.steerii { var x : julianae.steerii; () => { var y = this; }; return x; } @@ -2191,8 +2191,8 @@ module rendalli { >julianae : any >steerii : julianae.steerii >() => { var y = this; } : () => void ->y : zuluensis ->this : zuluensis +>y : this +>this : this >x : julianae.steerii lutillus() : nigra.dolichurus { var x : nigra.dolichurus; () => { var y = this; }; return x; } @@ -2211,8 +2211,8 @@ module rendalli { >lavali : any >wilsoni : lavali.wilsoni >() => { var y = this; } : () => void ->y : zuluensis ->this : zuluensis +>y : this +>this : this >x : nigra.dolichurus salocco() : argurus.peninsulae { var x : argurus.peninsulae; () => { var y = this; }; return x; } @@ -2223,8 +2223,8 @@ module rendalli { >argurus : any >peninsulae : argurus.peninsulae >() => { var y = this; } : () => void ->y : zuluensis ->this : zuluensis +>y : this +>this : this >x : argurus.peninsulae } export class moojeni { @@ -2240,8 +2240,8 @@ module rendalli { >lavali : any >otion : lavali.otion >() => { var y = this; } : () => void ->y : moojeni ->this : moojeni +>y : this +>this : this >x : lavali.otion montosa() : imperfecta.ciliolabrum { var x : imperfecta.ciliolabrum; () => { var y = this; }; return x; } @@ -2260,8 +2260,8 @@ module rendalli { >petrophilus : any >minutilla : petrophilus.minutilla >() => { var y = this; } : () => void ->y : moojeni ->this : moojeni +>y : this +>this : this >x : imperfecta.ciliolabrum miletus() : julianae.sumatrana { var x : julianae.sumatrana; () => { var y = this; }; return x; } @@ -2272,8 +2272,8 @@ module rendalli { >julianae : any >sumatrana : julianae.sumatrana >() => { var y = this; } : () => void ->y : moojeni ->this : moojeni +>y : this +>this : this >x : julianae.sumatrana heaneyi() : zuluensis { var x : zuluensis; () => { var y = this; }; return x; } @@ -2282,8 +2282,8 @@ module rendalli { >x : zuluensis >zuluensis : zuluensis >() => { var y = this; } : () => void ->y : moojeni ->this : moojeni +>y : this +>this : this >x : zuluensis marchei() : panglima.amphibius> { var x : panglima.amphibius>; () => { var y = this; }; return x; } @@ -2310,8 +2310,8 @@ module rendalli { >dogramacii : any >aurata : dogramacii.aurata >() => { var y = this; } : () => void ->y : moojeni ->this : moojeni +>y : this +>this : this >x : panglima.amphibius> budini() : julianae.durangae { var x : julianae.durangae; () => { var y = this; }; return x; } @@ -2322,8 +2322,8 @@ module rendalli { >julianae : any >durangae : julianae.durangae >() => { var y = this; } : () => void ->y : moojeni ->this : moojeni +>y : this +>this : this >x : julianae.durangae maggietaylorae() : trivirgatus.mixtus, imperfecta.subspinosus>, sagitta.stolzmanni> { var x : trivirgatus.mixtus, imperfecta.subspinosus>, sagitta.stolzmanni>; () => { var y = this; }; return x; } @@ -2358,8 +2358,8 @@ module rendalli { >sagitta : any >stolzmanni : sagitta.stolzmanni >() => { var y = this; } : () => void ->y : moojeni ->this : moojeni +>y : this +>this : this >x : trivirgatus.mixtus, imperfecta.subspinosus>, sagitta.stolzmanni> poliocephalus() : julianae.gerbillus { var x : julianae.gerbillus; () => { var y = this; }; return x; } @@ -2378,8 +2378,8 @@ module rendalli { >dammermani : any >melanops : dammermani.melanops >() => { var y = this; } : () => void ->y : moojeni ->this : moojeni +>y : this +>this : this >x : julianae.gerbillus zibethicus() : minutus.inez { var x : minutus.inez; () => { var y = this; }; return x; } @@ -2398,8 +2398,8 @@ module rendalli { >dammermani : any >melanops : dammermani.melanops >() => { var y = this; } : () => void ->y : moojeni ->this : moojeni +>y : this +>this : this >x : minutus.inez biacensis() : howi.coludo { var x : howi.coludo; () => { var y = this; }; return x; } @@ -2418,8 +2418,8 @@ module rendalli { >provocax : any >melanoleuca : provocax.melanoleuca >() => { var y = this; } : () => void ->y : moojeni ->this : moojeni +>y : this +>this : this >x : howi.coludo } export class crenulata extends trivirgatus.falconeri { @@ -2446,8 +2446,8 @@ module rendalli { >rionegrensis : any >caniventer : rionegrensis.caniventer >() => { var y = this; } : () => void ->y : crenulata ->this : crenulata +>y : this +>this : this >x : howi.coludo maritimus() : ruatanica.americanus { var x : ruatanica.americanus; () => { var y = this; }; return x; } @@ -2458,8 +2458,8 @@ module rendalli { >ruatanica : any >americanus : ruatanica.americanus >() => { var y = this; } : () => void ->y : crenulata ->this : crenulata +>y : this +>this : this >x : ruatanica.americanus edax() : lutreolus.cor>, rionegrensis.caniventer> { var x : lutreolus.cor>, rionegrensis.caniventer>; () => { var y = this; }; return x; } @@ -2494,8 +2494,8 @@ module rendalli { >rionegrensis : any >caniventer : rionegrensis.caniventer >() => { var y = this; } : () => void ->y : crenulata ->this : crenulata +>y : this +>this : this >x : lutreolus.cor>, rionegrensis.caniventer> } } @@ -2515,8 +2515,8 @@ module trivirgatus { >dogramacii : any >kaiseri : dogramacii.kaiseri >() => { var y = this; } : () => void ->y : tumidifrons ->this : tumidifrons +>y : this +>this : this >x : dogramacii.kaiseri vestitus() : lavali.xanthognathus { var x : lavali.xanthognathus; () => { var y = this; }; return x; } @@ -2527,8 +2527,8 @@ module trivirgatus { >lavali : any >xanthognathus : lavali.xanthognathus >() => { var y = this; } : () => void ->y : tumidifrons ->this : tumidifrons +>y : this +>this : this >x : lavali.xanthognathus aequatorius() : rionegrensis.caniventer { var x : rionegrensis.caniventer; () => { var y = this; }; return x; } @@ -2539,8 +2539,8 @@ module trivirgatus { >rionegrensis : any >caniventer : rionegrensis.caniventer >() => { var y = this; } : () => void ->y : tumidifrons ->this : tumidifrons +>y : this +>this : this >x : rionegrensis.caniventer scherman() : oconnelli { var x : oconnelli; () => { var y = this; }; return x; } @@ -2549,8 +2549,8 @@ module trivirgatus { >x : oconnelli >oconnelli : oconnelli >() => { var y = this; } : () => void ->y : tumidifrons ->this : tumidifrons +>y : this +>this : this >x : oconnelli improvisum() : argurus.peninsulae { var x : argurus.peninsulae; () => { var y = this; }; return x; } @@ -2561,8 +2561,8 @@ module trivirgatus { >argurus : any >peninsulae : argurus.peninsulae >() => { var y = this; } : () => void ->y : tumidifrons ->this : tumidifrons +>y : this +>this : this >x : argurus.peninsulae cervinipes() : panglima.abidi { var x : panglima.abidi; () => { var y = this; }; return x; } @@ -2581,8 +2581,8 @@ module trivirgatus { >caurinus : any >psilurus : caurinus.psilurus >() => { var y = this; } : () => void ->y : tumidifrons ->this : tumidifrons +>y : this +>this : this >x : panglima.abidi audax() : dogramacii.robustulus { var x : dogramacii.robustulus; () => { var y = this; }; return x; } @@ -2593,8 +2593,8 @@ module trivirgatus { >dogramacii : any >robustulus : dogramacii.robustulus >() => { var y = this; } : () => void ->y : tumidifrons ->this : tumidifrons +>y : this +>this : this >x : dogramacii.robustulus vallinus() : sagitta.sicarius { var x : sagitta.sicarius; () => { var y = this; }; return x; } @@ -2613,8 +2613,8 @@ module trivirgatus { >lutreolus : any >punicus : lutreolus.punicus >() => { var y = this; } : () => void ->y : tumidifrons ->this : tumidifrons +>y : this +>this : this >x : sagitta.sicarius } export class mixtus extends argurus.pygmaea> { @@ -2641,8 +2641,8 @@ module trivirgatus { >dogramacii : any >aurata : dogramacii.aurata >() => { var y = this; } : () => void ->y : mixtus ->this : mixtus +>y : this +>this : this >x : dogramacii.aurata bryophilus() : macrorhinos.marmosurus>> { var x : macrorhinos.marmosurus>>; () => { var y = this; }; return x; } @@ -2677,8 +2677,8 @@ module trivirgatus { >lavali : any >xanthognathus : lavali.xanthognathus >() => { var y = this; } : () => void ->y : mixtus ->this : mixtus +>y : this +>this : this >x : macrorhinos.marmosurus>> liechtensteini() : rendalli.zuluensis { var x : rendalli.zuluensis; () => { var y = this; }; return x; } @@ -2689,8 +2689,8 @@ module trivirgatus { >rendalli : any >zuluensis : rendalli.zuluensis >() => { var y = this; } : () => void ->y : mixtus ->this : mixtus +>y : this +>this : this >x : rendalli.zuluensis crawfordi() : howi.coludo> { var x : howi.coludo>; () => { var y = this; }; return x; } @@ -2717,8 +2717,8 @@ module trivirgatus { >quasiater : any >carolinensis : quasiater.carolinensis >() => { var y = this; } : () => void ->y : mixtus ->this : mixtus +>y : this +>this : this >x : howi.coludo> hypsibia() : lavali.thaeleri { var x : lavali.thaeleri; () => { var y = this; }; return x; } @@ -2729,8 +2729,8 @@ module trivirgatus { >lavali : any >thaeleri : lavali.thaeleri >() => { var y = this; } : () => void ->y : mixtus ->this : mixtus +>y : this +>this : this >x : lavali.thaeleri matacus() : panglima.fundatus, lavali.beisa>, dammermani.melanops> { var x : panglima.fundatus, lavali.beisa>, dammermani.melanops>; () => { var y = this; }; return x; } @@ -2763,8 +2763,8 @@ module trivirgatus { >dammermani : any >melanops : dammermani.melanops >() => { var y = this; } : () => void ->y : mixtus ->this : mixtus +>y : this +>this : this >x : panglima.fundatus, lavali.beisa>, dammermani.melanops> demidoff() : caurinus.johorensis { var x : caurinus.johorensis; () => { var y = this; }; return x; } @@ -2783,8 +2783,8 @@ module trivirgatus { >rendalli : any >zuluensis : rendalli.zuluensis >() => { var y = this; } : () => void ->y : mixtus ->this : mixtus +>y : this +>this : this >x : caurinus.johorensis } export class lotor { @@ -2800,8 +2800,8 @@ module trivirgatus { >samarensis : any >pallidus : samarensis.pallidus >() => { var y = this; } : () => void ->y : lotor ->this : lotor +>y : this +>this : this >x : samarensis.pallidus pullata() : rionegrensis.veraecrucis { var x : rionegrensis.veraecrucis; () => { var y = this; }; return x; } @@ -2820,8 +2820,8 @@ module trivirgatus { >argurus : any >peninsulae : argurus.peninsulae >() => { var y = this; } : () => void ->y : lotor ->this : lotor +>y : this +>this : this >x : rionegrensis.veraecrucis } export class falconeri { @@ -2867,8 +2867,8 @@ module trivirgatus { >julianae : any >steerii : julianae.steerii >() => { var y = this; } : () => void ->y : falconeri ->this : falconeri +>y : this +>this : this >x : rendalli.moojeni>, daubentonii.arboreus> gouldi() : nigra.dolichurus>, patas.uralensis> { var x : nigra.dolichurus>, patas.uralensis>; () => { var y = this; }; return x; } @@ -2903,8 +2903,8 @@ module trivirgatus { >patas : any >uralensis : patas.uralensis >() => { var y = this; } : () => void ->y : falconeri ->this : falconeri +>y : this +>this : this >x : nigra.dolichurus>, patas.uralensis> fuscicollis() : samarensis.pelurus> { var x : samarensis.pelurus>; () => { var y = this; }; return x; } @@ -2931,8 +2931,8 @@ module trivirgatus { >sagitta : any >stolzmanni : sagitta.stolzmanni >() => { var y = this; } : () => void ->y : falconeri ->this : falconeri +>y : this +>this : this >x : samarensis.pelurus> martiensseni() : sagitta.cinereus>, dogramacii.koepckeae> { var x : sagitta.cinereus>, dogramacii.koepckeae>; () => { var y = this; }; return x; } @@ -2967,8 +2967,8 @@ module trivirgatus { >dogramacii : any >koepckeae : dogramacii.koepckeae >() => { var y = this; } : () => void ->y : falconeri ->this : falconeri +>y : this +>this : this >x : sagitta.cinereus>, dogramacii.koepckeae> gaoligongensis() : dogramacii.koepckeae { var x : dogramacii.koepckeae; () => { var y = this; }; return x; } @@ -2979,8 +2979,8 @@ module trivirgatus { >dogramacii : any >koepckeae : dogramacii.koepckeae >() => { var y = this; } : () => void ->y : falconeri ->this : falconeri +>y : this +>this : this >x : dogramacii.koepckeae shawi() : minutus.inez> { var x : minutus.inez>; () => { var y = this; }; return x; } @@ -3007,8 +3007,8 @@ module trivirgatus { >quasiater : any >bobrinskoi : quasiater.bobrinskoi >() => { var y = this; } : () => void ->y : falconeri ->this : falconeri +>y : this +>this : this >x : minutus.inez> gmelini() : rionegrensis.caniventer { var x : rionegrensis.caniventer; () => { var y = this; }; return x; } @@ -3019,8 +3019,8 @@ module trivirgatus { >rionegrensis : any >caniventer : rionegrensis.caniventer >() => { var y = this; } : () => void ->y : falconeri ->this : falconeri +>y : this +>this : this >x : rionegrensis.caniventer } export class oconnelli { @@ -3042,8 +3042,8 @@ module trivirgatus { >julianae : any >galapagoensis : julianae.galapagoensis >() => { var y = this; } : () => void ->y : oconnelli ->this : oconnelli +>y : this +>this : this >x : nigra.thalia terrestris() : macrorhinos.konganensis { var x : macrorhinos.konganensis; () => { var y = this; }; return x; } @@ -3054,8 +3054,8 @@ module trivirgatus { >macrorhinos : any >konganensis : macrorhinos.konganensis >() => { var y = this; } : () => void ->y : oconnelli ->this : oconnelli +>y : this +>this : this >x : macrorhinos.konganensis chrysopus() : sagitta.sicarius> { var x : sagitta.sicarius>; () => { var y = this; }; return x; } @@ -3082,8 +3082,8 @@ module trivirgatus { >macrorhinos : any >daphaenodon : macrorhinos.daphaenodon >() => { var y = this; } : () => void ->y : oconnelli ->this : oconnelli +>y : this +>this : this >x : sagitta.sicarius> fuscomurina() : argurus.peninsulae { var x : argurus.peninsulae; () => { var y = this; }; return x; } @@ -3094,8 +3094,8 @@ module trivirgatus { >argurus : any >peninsulae : argurus.peninsulae >() => { var y = this; } : () => void ->y : oconnelli ->this : oconnelli +>y : this +>this : this >x : argurus.peninsulae hellwaldii() : nigra.gracilis, petrophilus.sodyi> { var x : nigra.gracilis, petrophilus.sodyi>; () => { var y = this; }; return x; } @@ -3130,8 +3130,8 @@ module trivirgatus { >macrorhinos : any >daphaenodon : macrorhinos.daphaenodon >() => { var y = this; } : () => void ->y : oconnelli ->this : oconnelli +>y : this +>this : this >x : nigra.gracilis, petrophilus.sodyi> aenea() : argurus.luctuosa { var x : argurus.luctuosa; () => { var y = this; }; return x; } @@ -3142,8 +3142,8 @@ module trivirgatus { >argurus : any >luctuosa : argurus.luctuosa >() => { var y = this; } : () => void ->y : oconnelli ->this : oconnelli +>y : this +>this : this >x : argurus.luctuosa perrini() : quasiater.bobrinskoi { var x : quasiater.bobrinskoi; () => { var y = this; }; return x; } @@ -3154,8 +3154,8 @@ module trivirgatus { >quasiater : any >bobrinskoi : quasiater.bobrinskoi >() => { var y = this; } : () => void ->y : oconnelli ->this : oconnelli +>y : this +>this : this >x : quasiater.bobrinskoi entellus() : dammermani.melanops { var x : dammermani.melanops; () => { var y = this; }; return x; } @@ -3166,8 +3166,8 @@ module trivirgatus { >dammermani : any >melanops : dammermani.melanops >() => { var y = this; } : () => void ->y : oconnelli ->this : oconnelli +>y : this +>this : this >x : dammermani.melanops krebsii() : rionegrensis.veraecrucis { var x : rionegrensis.veraecrucis; () => { var y = this; }; return x; } @@ -3186,8 +3186,8 @@ module trivirgatus { >julianae : any >durangae : julianae.durangae >() => { var y = this; } : () => void ->y : oconnelli ->this : oconnelli +>y : this +>this : this >x : rionegrensis.veraecrucis cephalotes() : lutreolus.schlegeli { var x : lutreolus.schlegeli; () => { var y = this; }; return x; } @@ -3198,8 +3198,8 @@ module trivirgatus { >lutreolus : any >schlegeli : lutreolus.schlegeli >() => { var y = this; } : () => void ->y : oconnelli ->this : oconnelli +>y : this +>this : this >x : lutreolus.schlegeli molossinus() : daubentonii.nigricans> { var x : daubentonii.nigricans>; () => { var y = this; }; return x; } @@ -3226,8 +3226,8 @@ module trivirgatus { >quasiater : any >carolinensis : quasiater.carolinensis >() => { var y = this; } : () => void ->y : oconnelli ->this : oconnelli +>y : this +>this : this >x : daubentonii.nigricans> luisi() : dogramacii.robustulus { var x : dogramacii.robustulus; () => { var y = this; }; return x; } @@ -3238,8 +3238,8 @@ module trivirgatus { >dogramacii : any >robustulus : dogramacii.robustulus >() => { var y = this; } : () => void ->y : oconnelli ->this : oconnelli +>y : this +>this : this >x : dogramacii.robustulus ceylonicus() : rionegrensis.caniventer { var x : rionegrensis.caniventer; () => { var y = this; }; return x; } @@ -3250,8 +3250,8 @@ module trivirgatus { >rionegrensis : any >caniventer : rionegrensis.caniventer >() => { var y = this; } : () => void ->y : oconnelli ->this : oconnelli +>y : this +>this : this >x : rionegrensis.caniventer ralli() : lavali.xanthognathus { var x : lavali.xanthognathus; () => { var y = this; }; return x; } @@ -3262,8 +3262,8 @@ module trivirgatus { >lavali : any >xanthognathus : lavali.xanthognathus >() => { var y = this; } : () => void ->y : oconnelli ->this : oconnelli +>y : this +>this : this >x : lavali.xanthognathus } } @@ -3289,8 +3289,8 @@ module quasiater { >argurus : any >luctuosa : argurus.luctuosa >() => { var y = this; } : () => void ->y : bobrinskoi ->this : bobrinskoi +>y : this +>this : this >x : samarensis.cahirinus mulatta() : argurus.oreas { var x : argurus.oreas; () => { var y = this; }; return x; } @@ -3301,8 +3301,8 @@ module quasiater { >argurus : any >oreas : argurus.oreas >() => { var y = this; } : () => void ->y : bobrinskoi ->this : bobrinskoi +>y : this +>this : this >x : argurus.oreas ansorgei() : rendalli.moojeni, gabriellae.echinatus> { var x : rendalli.moojeni, gabriellae.echinatus>; () => { var y = this; }; return x; } @@ -3329,8 +3329,8 @@ module quasiater { >gabriellae : any >echinatus : gabriellae.echinatus >() => { var y = this; } : () => void ->y : bobrinskoi ->this : bobrinskoi +>y : this +>this : this >x : rendalli.moojeni, gabriellae.echinatus> Copper() : argurus.netscheri { var x : argurus.netscheri; () => { var y = this; }; return x; } @@ -3349,8 +3349,8 @@ module quasiater { >dogramacii : any >kaiseri : dogramacii.kaiseri >() => { var y = this; } : () => void ->y : bobrinskoi ->this : bobrinskoi +>y : this +>this : this >x : argurus.netscheri } } @@ -3375,8 +3375,8 @@ module ruatanica { >macrorhinos : any >konganensis : macrorhinos.konganensis >() => { var y = this; } : () => void ->y : americanus ->this : americanus +>y : this +>this : this >x : macrorhinos.konganensis mystacalis() : howi.angulatus { var x : howi.angulatus; () => { var y = this; }; return x; } @@ -3395,8 +3395,8 @@ module ruatanica { >sagitta : any >stolzmanni : sagitta.stolzmanni >() => { var y = this; } : () => void ->y : americanus ->this : americanus +>y : this +>this : this >x : howi.angulatus fardoulisi() : trivirgatus.oconnelli { var x : trivirgatus.oconnelli; () => { var y = this; }; return x; } @@ -3407,8 +3407,8 @@ module ruatanica { >trivirgatus : any >oconnelli : trivirgatus.oconnelli >() => { var y = this; } : () => void ->y : americanus ->this : americanus +>y : this +>this : this >x : trivirgatus.oconnelli tumidus() : gabriellae.amicus { var x : gabriellae.amicus; () => { var y = this; }; return x; } @@ -3419,8 +3419,8 @@ module ruatanica { >gabriellae : any >amicus : gabriellae.amicus >() => { var y = this; } : () => void ->y : americanus ->this : americanus +>y : this +>this : this >x : gabriellae.amicus } } @@ -3451,8 +3451,8 @@ module lavali { >uralensis : patas.uralensis >wilsoni : wilsoni >() => { var y = this; } : () => void ->y : wilsoni ->this : wilsoni +>y : this +>this : this >x : nigra.thalia lorentzii() : imperfecta.subspinosus { var x : imperfecta.subspinosus; () => { var y = this; }; return x; } @@ -3463,8 +3463,8 @@ module lavali { >imperfecta : any >subspinosus : imperfecta.subspinosus >() => { var y = this; } : () => void ->y : wilsoni ->this : wilsoni +>y : this +>this : this >x : imperfecta.subspinosus antisensis() : lutreolus.foina { var x : lutreolus.foina; () => { var y = this; }; return x; } @@ -3475,8 +3475,8 @@ module lavali { >lutreolus : any >foina : lutreolus.foina >() => { var y = this; } : () => void ->y : wilsoni ->this : wilsoni +>y : this +>this : this >x : lutreolus.foina blossevillii() : dammermani.siberu { var x : dammermani.siberu; () => { var y = this; }; return x; } @@ -3495,8 +3495,8 @@ module lavali { >dogramacii : any >kaiseri : dogramacii.kaiseri >() => { var y = this; } : () => void ->y : wilsoni ->this : wilsoni +>y : this +>this : this >x : dammermani.siberu bontanus() : rionegrensis.caniventer { var x : rionegrensis.caniventer; () => { var y = this; }; return x; } @@ -3507,8 +3507,8 @@ module lavali { >rionegrensis : any >caniventer : rionegrensis.caniventer >() => { var y = this; } : () => void ->y : wilsoni ->this : wilsoni +>y : this +>this : this >x : rionegrensis.caniventer caligata() : argurus.oreas { var x : argurus.oreas; () => { var y = this; }; return x; } @@ -3519,8 +3519,8 @@ module lavali { >argurus : any >oreas : argurus.oreas >() => { var y = this; } : () => void ->y : wilsoni ->this : wilsoni +>y : this +>this : this >x : argurus.oreas franqueti() : panglima.amphibius, imperfecta.subspinosus> { var x : panglima.amphibius, imperfecta.subspinosus>; () => { var y = this; }; return x; } @@ -3547,8 +3547,8 @@ module lavali { >imperfecta : any >subspinosus : imperfecta.subspinosus >() => { var y = this; } : () => void ->y : wilsoni ->this : wilsoni +>y : this +>this : this >x : panglima.amphibius, imperfecta.subspinosus> roberti() : julianae.acariensis { var x : julianae.acariensis; () => { var y = this; }; return x; } @@ -3559,8 +3559,8 @@ module lavali { >julianae : any >acariensis : julianae.acariensis >() => { var y = this; } : () => void ->y : wilsoni ->this : wilsoni +>y : this +>this : this >x : julianae.acariensis degelidus() : chrysaeolus.sarasinorum { var x : chrysaeolus.sarasinorum; () => { var y = this; }; return x; } @@ -3579,8 +3579,8 @@ module lavali { >imperfecta : any >subspinosus : imperfecta.subspinosus >() => { var y = this; } : () => void ->y : wilsoni ->this : wilsoni +>y : this +>this : this >x : chrysaeolus.sarasinorum amoenus() : quasiater.carolinensis { var x : quasiater.carolinensis; () => { var y = this; }; return x; } @@ -3591,8 +3591,8 @@ module lavali { >quasiater : any >carolinensis : quasiater.carolinensis >() => { var y = this; } : () => void ->y : wilsoni ->this : wilsoni +>y : this +>this : this >x : quasiater.carolinensis kob() : trivirgatus.lotor { var x : trivirgatus.lotor; () => { var y = this; }; return x; } @@ -3609,8 +3609,8 @@ module lavali { >oreas : argurus.oreas >beisa : beisa >() => { var y = this; } : () => void ->y : wilsoni ->this : wilsoni +>y : this +>this : this >x : trivirgatus.lotor csorbai() : caurinus.johorensis { var x : caurinus.johorensis; () => { var y = this; }; return x; } @@ -3629,8 +3629,8 @@ module lavali { >julianae : any >steerii : julianae.steerii >() => { var y = this; } : () => void ->y : wilsoni ->this : wilsoni +>y : this +>this : this >x : caurinus.johorensis dorsata() : gabriellae.echinatus { var x : gabriellae.echinatus; () => { var y = this; }; return x; } @@ -3641,8 +3641,8 @@ module lavali { >gabriellae : any >echinatus : gabriellae.echinatus >() => { var y = this; } : () => void ->y : wilsoni ->this : wilsoni +>y : this +>this : this >x : gabriellae.echinatus } export class beisa { @@ -3666,8 +3666,8 @@ module lavali { >provocax : any >melanoleuca : provocax.melanoleuca >() => { var y = this; } : () => void ->y : otion ->this : otion +>y : this +>this : this >x : provocax.melanoleuca dussumieri() : nigra.gracilis { var x : nigra.gracilis; () => { var y = this; }; return x; } @@ -3686,8 +3686,8 @@ module lavali { >dogramacii : any >kaiseri : dogramacii.kaiseri >() => { var y = this; } : () => void ->y : otion ->this : otion +>y : this +>this : this >x : nigra.gracilis osvaldoreigi() : julianae.albidens { var x : julianae.albidens; () => { var y = this; }; return x; } @@ -3706,8 +3706,8 @@ module lavali { >quasiater : any >carolinensis : quasiater.carolinensis >() => { var y = this; } : () => void ->y : otion ->this : otion +>y : this +>this : this >x : julianae.albidens grevyi() : samarensis.pallidus { var x : samarensis.pallidus; () => { var y = this; }; return x; } @@ -3718,8 +3718,8 @@ module lavali { >samarensis : any >pallidus : samarensis.pallidus >() => { var y = this; } : () => void ->y : otion ->this : otion +>y : this +>this : this >x : samarensis.pallidus hirtula() : lepturus { var x : lepturus; () => { var y = this; }; return x; } @@ -3728,8 +3728,8 @@ module lavali { >x : lepturus >lepturus : lepturus >() => { var y = this; } : () => void ->y : otion ->this : otion +>y : this +>this : this >x : lepturus cristatus() : argurus.luctuosa { var x : argurus.luctuosa; () => { var y = this; }; return x; } @@ -3740,8 +3740,8 @@ module lavali { >argurus : any >luctuosa : argurus.luctuosa >() => { var y = this; } : () => void ->y : otion ->this : otion +>y : this +>this : this >x : argurus.luctuosa darlingtoni() : sagitta.leptoceros { var x : sagitta.leptoceros; () => { var y = this; }; return x; } @@ -3758,8 +3758,8 @@ module lavali { >trivirgatus : any >oconnelli : trivirgatus.oconnelli >() => { var y = this; } : () => void ->y : otion ->this : otion +>y : this +>this : this >x : sagitta.leptoceros fontanierii() : panamensis.setulosus>, lutreolus.foina> { var x : panamensis.setulosus>, lutreolus.foina>; () => { var y = this; }; return x; } @@ -3792,8 +3792,8 @@ module lavali { >lutreolus : any >foina : lutreolus.foina >() => { var y = this; } : () => void ->y : otion ->this : otion +>y : this +>this : this >x : panamensis.setulosus>, lutreolus.foina> umbrosus() : howi.marcanoi { var x : howi.marcanoi; () => { var y = this; }; return x; } @@ -3804,8 +3804,8 @@ module lavali { >howi : any >marcanoi : howi.marcanoi >() => { var y = this; } : () => void ->y : otion ->this : otion +>y : this +>this : this >x : howi.marcanoi chiriquinus() : imperfecta.lasiurus { var x : imperfecta.lasiurus; () => { var y = this; }; return x; } @@ -3824,8 +3824,8 @@ module lavali { >caurinus : any >psilurus : caurinus.psilurus >() => { var y = this; } : () => void ->y : otion ->this : otion +>y : this +>this : this >x : imperfecta.lasiurus orarius() : lutreolus.schlegeli { var x : lutreolus.schlegeli; () => { var y = this; }; return x; } @@ -3836,8 +3836,8 @@ module lavali { >lutreolus : any >schlegeli : lutreolus.schlegeli >() => { var y = this; } : () => void ->y : otion ->this : otion +>y : this +>this : this >x : lutreolus.schlegeli ilaeus() : caurinus.mahaganus { var x : caurinus.mahaganus; () => { var y = this; }; return x; } @@ -3856,8 +3856,8 @@ module lavali { >julianae : any >sumatrana : julianae.sumatrana >() => { var y = this; } : () => void ->y : otion ->this : otion +>y : this +>this : this >x : caurinus.mahaganus musschenbroekii() : trivirgatus.falconeri { var x : trivirgatus.falconeri; () => { var y = this; }; return x; } @@ -3868,8 +3868,8 @@ module lavali { >trivirgatus : any >falconeri : trivirgatus.falconeri >() => { var y = this; } : () => void ->y : otion ->this : otion +>y : this +>this : this >x : trivirgatus.falconeri } export class xanthognathus { @@ -3891,8 +3891,8 @@ module lavali { >samarensis : any >pallidus : samarensis.pallidus >() => { var y = this; } : () => void ->y : xanthognathus ->this : xanthognathus +>y : this +>this : this >x : daubentonii.nigricans albigena() : chrysaeolus.sarasinorum { var x : chrysaeolus.sarasinorum; () => { var y = this; }; return x; } @@ -3911,8 +3911,8 @@ module lavali { >quasiater : any >bobrinskoi : quasiater.bobrinskoi >() => { var y = this; } : () => void ->y : xanthognathus ->this : xanthognathus +>y : this +>this : this >x : chrysaeolus.sarasinorum onca() : sagitta.stolzmanni { var x : sagitta.stolzmanni; () => { var y = this; }; return x; } @@ -3923,8 +3923,8 @@ module lavali { >sagitta : any >stolzmanni : sagitta.stolzmanni >() => { var y = this; } : () => void ->y : xanthognathus ->this : xanthognathus +>y : this +>this : this >x : sagitta.stolzmanni gunnii() : minutus.himalayana, nigra.thalia> { var x : minutus.himalayana, nigra.thalia>; () => { var y = this; }; return x; } @@ -3957,8 +3957,8 @@ module lavali { >dogramacii : any >robustulus : dogramacii.robustulus >() => { var y = this; } : () => void ->y : xanthognathus ->this : xanthognathus +>y : this +>this : this >x : minutus.himalayana, nigra.thalia> apeco() : lutreolus.foina { var x : lutreolus.foina; () => { var y = this; }; return x; } @@ -3969,8 +3969,8 @@ module lavali { >lutreolus : any >foina : lutreolus.foina >() => { var y = this; } : () => void ->y : xanthognathus ->this : xanthognathus +>y : this +>this : this >x : lutreolus.foina variegates() : gabriellae.klossii { var x : gabriellae.klossii; () => { var y = this; }; return x; } @@ -3987,8 +3987,8 @@ module lavali { >julianae : any >nudicaudus : julianae.nudicaudus >() => { var y = this; } : () => void ->y : xanthognathus ->this : xanthognathus +>y : this +>this : this >x : gabriellae.klossii goudotii() : trivirgatus.falconeri { var x : trivirgatus.falconeri; () => { var y = this; }; return x; } @@ -3999,8 +3999,8 @@ module lavali { >trivirgatus : any >falconeri : trivirgatus.falconeri >() => { var y = this; } : () => void ->y : xanthognathus ->this : xanthognathus +>y : this +>this : this >x : trivirgatus.falconeri pohlei() : Lanthanum.megalonyx { var x : Lanthanum.megalonyx; () => { var y = this; }; return x; } @@ -4011,8 +4011,8 @@ module lavali { >Lanthanum : any >megalonyx : Lanthanum.megalonyx >() => { var y = this; } : () => void ->y : xanthognathus ->this : xanthognathus +>y : this +>this : this >x : Lanthanum.megalonyx ineptus() : panamensis.setulosus { var x : panamensis.setulosus; () => { var y = this; }; return x; } @@ -4027,8 +4027,8 @@ module lavali { >xanthognathus : xanthognathus >beisa : beisa >() => { var y = this; } : () => void ->y : xanthognathus ->this : xanthognathus +>y : this +>this : this >x : panamensis.setulosus euryotis() : rendalli.moojeni> { var x : rendalli.moojeni>; () => { var y = this; }; return x; } @@ -4055,8 +4055,8 @@ module lavali { >ruatanica : any >americanus : ruatanica.americanus >() => { var y = this; } : () => void ->y : xanthognathus ->this : xanthognathus +>y : this +>this : this >x : rendalli.moojeni> maurisca() : Lanthanum.suillus { var x : Lanthanum.suillus; () => { var y = this; }; return x; } @@ -4075,8 +4075,8 @@ module lavali { >imperfecta : any >subspinosus : imperfecta.subspinosus >() => { var y = this; } : () => void ->y : xanthognathus ->this : xanthognathus +>y : this +>this : this >x : Lanthanum.suillus coyhaiquensis() : caurinus.mahaganus, panglima.abidi>, lutreolus.punicus> { var x : caurinus.mahaganus, panglima.abidi>, lutreolus.punicus>; () => { var y = this; }; return x; } @@ -4119,8 +4119,8 @@ module lavali { >lutreolus : any >punicus : lutreolus.punicus >() => { var y = this; } : () => void ->y : xanthognathus ->this : xanthognathus +>y : this +>this : this >x : caurinus.mahaganus, panglima.abidi>, lutreolus.punicus> } export class thaeleri extends argurus.oreas { @@ -4137,8 +4137,8 @@ module lavali { >julianae : any >galapagoensis : julianae.galapagoensis >() => { var y = this; } : () => void ->y : thaeleri ->this : thaeleri +>y : this +>this : this >x : julianae.galapagoensis parvipes() : nigra.dolichurus { var x : nigra.dolichurus; () => { var y = this; }; return x; } @@ -4157,8 +4157,8 @@ module lavali { >samarensis : any >pallidus : samarensis.pallidus >() => { var y = this; } : () => void ->y : thaeleri ->this : thaeleri +>y : this +>this : this >x : nigra.dolichurus sponsorius() : rionegrensis.veraecrucis, julianae.steerii> { var x : rionegrensis.veraecrucis, julianae.steerii>; () => { var y = this; }; return x; } @@ -4185,8 +4185,8 @@ module lavali { >julianae : any >steerii : julianae.steerii >() => { var y = this; } : () => void ->y : thaeleri ->this : thaeleri +>y : this +>this : this >x : rionegrensis.veraecrucis, julianae.steerii> vates() : dogramacii.robustulus { var x : dogramacii.robustulus; () => { var y = this; }; return x; } @@ -4197,8 +4197,8 @@ module lavali { >dogramacii : any >robustulus : dogramacii.robustulus >() => { var y = this; } : () => void ->y : thaeleri ->this : thaeleri +>y : this +>this : this >x : dogramacii.robustulus roosmalenorum() : dogramacii.koepckeae { var x : dogramacii.koepckeae; () => { var y = this; }; return x; } @@ -4209,8 +4209,8 @@ module lavali { >dogramacii : any >koepckeae : dogramacii.koepckeae >() => { var y = this; } : () => void ->y : thaeleri ->this : thaeleri +>y : this +>this : this >x : dogramacii.koepckeae rubicola() : rendalli.moojeni, gabriellae.echinatus>> { var x : rendalli.moojeni, gabriellae.echinatus>>; () => { var y = this; }; return x; } @@ -4245,8 +4245,8 @@ module lavali { >gabriellae : any >echinatus : gabriellae.echinatus >() => { var y = this; } : () => void ->y : thaeleri ->this : thaeleri +>y : this +>this : this >x : rendalli.moojeni, gabriellae.echinatus>> ikonnikovi() : argurus.luctuosa { var x : argurus.luctuosa; () => { var y = this; }; return x; } @@ -4257,8 +4257,8 @@ module lavali { >argurus : any >luctuosa : argurus.luctuosa >() => { var y = this; } : () => void ->y : thaeleri ->this : thaeleri +>y : this +>this : this >x : argurus.luctuosa paramicrus() : imperfecta.ciliolabrum> { var x : imperfecta.ciliolabrum>; () => { var y = this; }; return x; } @@ -4283,8 +4283,8 @@ module lavali { >caurinus : any >psilurus : caurinus.psilurus >() => { var y = this; } : () => void ->y : thaeleri ->this : thaeleri +>y : this +>this : this >x : imperfecta.ciliolabrum> } export class lepturus extends Lanthanum.suillus { @@ -4313,8 +4313,8 @@ module lavali { >julianae : any >nudicaudus : julianae.nudicaudus >() => { var y = this; } : () => void ->y : lepturus ->this : lepturus +>y : this +>this : this >x : argurus.netscheri aequalis() : sagitta.cinereus>, petrophilus.minutilla>, Lanthanum.jugularis> { var x : sagitta.cinereus>, petrophilus.minutilla>, Lanthanum.jugularis>; () => { var y = this; }; return x; } @@ -4355,8 +4355,8 @@ module lavali { >Lanthanum : any >jugularis : Lanthanum.jugularis >() => { var y = this; } : () => void ->y : lepturus ->this : lepturus +>y : this +>this : this >x : sagitta.cinereus>, petrophilus.minutilla>, Lanthanum.jugularis> } } @@ -4385,8 +4385,8 @@ module dogramacii { >julianae : any >nudicaudus : julianae.nudicaudus >() => { var y = this; } : () => void ->y : robustulus ->this : robustulus +>y : this +>this : this >x : minutus.inez humboldti() : sagitta.cinereus { var x : sagitta.cinereus; () => { var y = this; }; return x; } @@ -4405,8 +4405,8 @@ module dogramacii { >argurus : any >oreas : argurus.oreas >() => { var y = this; } : () => void ->y : robustulus ->this : robustulus +>y : this +>this : this >x : sagitta.cinereus mexicana() : macrorhinos.konganensis { var x : macrorhinos.konganensis; () => { var y = this; }; return x; } @@ -4417,8 +4417,8 @@ module dogramacii { >macrorhinos : any >konganensis : macrorhinos.konganensis >() => { var y = this; } : () => void ->y : robustulus ->this : robustulus +>y : this +>this : this >x : macrorhinos.konganensis martini() : julianae.oralis { var x : julianae.oralis; () => { var y = this; }; return x; } @@ -4437,8 +4437,8 @@ module dogramacii { >lavali : any >lepturus : lavali.lepturus >() => { var y = this; } : () => void ->y : robustulus ->this : robustulus +>y : this +>this : this >x : julianae.oralis beatus() : Lanthanum.jugularis { var x : Lanthanum.jugularis; () => { var y = this; }; return x; } @@ -4449,8 +4449,8 @@ module dogramacii { >Lanthanum : any >jugularis : Lanthanum.jugularis >() => { var y = this; } : () => void ->y : robustulus ->this : robustulus +>y : this +>this : this >x : Lanthanum.jugularis leporina() : trivirgatus.falconeri { var x : trivirgatus.falconeri; () => { var y = this; }; return x; } @@ -4461,8 +4461,8 @@ module dogramacii { >trivirgatus : any >falconeri : trivirgatus.falconeri >() => { var y = this; } : () => void ->y : robustulus ->this : robustulus +>y : this +>this : this >x : trivirgatus.falconeri pearsonii() : dammermani.melanops { var x : dammermani.melanops; () => { var y = this; }; return x; } @@ -4473,8 +4473,8 @@ module dogramacii { >dammermani : any >melanops : dammermani.melanops >() => { var y = this; } : () => void ->y : robustulus ->this : robustulus +>y : this +>this : this >x : dammermani.melanops keaysi() : howi.angulatus { var x : howi.angulatus; () => { var y = this; }; return x; } @@ -4493,8 +4493,8 @@ module dogramacii { >rendalli : any >zuluensis : rendalli.zuluensis >() => { var y = this; } : () => void ->y : robustulus ->this : robustulus +>y : this +>this : this >x : howi.angulatus hindei() : imperfecta.lasiurus { var x : imperfecta.lasiurus; () => { var y = this; }; return x; } @@ -4513,8 +4513,8 @@ module dogramacii { >julianae : any >steerii : julianae.steerii >() => { var y = this; } : () => void ->y : robustulus ->this : robustulus +>y : this +>this : this >x : imperfecta.lasiurus } export class koepckeae { @@ -4542,8 +4542,8 @@ module dogramacii { >julianae : any >sumatrana : julianae.sumatrana >() => { var y = this; } : () => void ->y : koepckeae ->this : koepckeae +>y : this +>this : this >x : samarensis.pelurus, julianae.sumatrana> } export class kaiseri { @@ -4557,8 +4557,8 @@ module dogramacii { >quasiater : any >carolinensis : quasiater.carolinensis >() => { var y = this; } : () => void ->y : kaiseri ->this : kaiseri +>y : this +>this : this >x : quasiater.carolinensis paramorum() : Lanthanum.megalonyx { var x : Lanthanum.megalonyx; () => { var y = this; }; return x; } @@ -4569,8 +4569,8 @@ module dogramacii { >Lanthanum : any >megalonyx : Lanthanum.megalonyx >() => { var y = this; } : () => void ->y : kaiseri ->this : kaiseri +>y : this +>this : this >x : Lanthanum.megalonyx rubidus() : trivirgatus.lotor { var x : trivirgatus.lotor; () => { var y = this; }; return x; } @@ -4589,8 +4589,8 @@ module dogramacii { >samarensis : any >pallidus : samarensis.pallidus >() => { var y = this; } : () => void ->y : kaiseri ->this : kaiseri +>y : this +>this : this >x : trivirgatus.lotor juninensis() : quasiater.bobrinskoi { var x : quasiater.bobrinskoi; () => { var y = this; }; return x; } @@ -4601,8 +4601,8 @@ module dogramacii { >quasiater : any >bobrinskoi : quasiater.bobrinskoi >() => { var y = this; } : () => void ->y : kaiseri ->this : kaiseri +>y : this +>this : this >x : quasiater.bobrinskoi marginata() : argurus.wetmorei>> { var x : argurus.wetmorei>>; () => { var y = this; }; return x; } @@ -4637,8 +4637,8 @@ module dogramacii { >rionegrensis : any >caniventer : rionegrensis.caniventer >() => { var y = this; } : () => void ->y : kaiseri ->this : kaiseri +>y : this +>this : this >x : argurus.wetmorei>> Meitnerium() : ruatanica.Praseodymium> { var x : ruatanica.Praseodymium>; () => { var y = this; }; return x; } @@ -4665,8 +4665,8 @@ module dogramacii { >julianae : any >galapagoensis : julianae.galapagoensis >() => { var y = this; } : () => void ->y : kaiseri ->this : kaiseri +>y : this +>this : this >x : ruatanica.Praseodymium> pinetorum() : rionegrensis.caniventer { var x : rionegrensis.caniventer; () => { var y = this; }; return x; } @@ -4677,8 +4677,8 @@ module dogramacii { >rionegrensis : any >caniventer : rionegrensis.caniventer >() => { var y = this; } : () => void ->y : kaiseri ->this : kaiseri +>y : this +>this : this >x : rionegrensis.caniventer hoolock() : samarensis.pelurus { var x : samarensis.pelurus; () => { var y = this; }; return x; } @@ -4697,8 +4697,8 @@ module dogramacii { >argurus : any >luctuosa : argurus.luctuosa >() => { var y = this; } : () => void ->y : kaiseri ->this : kaiseri +>y : this +>this : this >x : samarensis.pelurus poeyi() : gabriellae.echinatus { var x : gabriellae.echinatus; () => { var y = this; }; return x; } @@ -4709,8 +4709,8 @@ module dogramacii { >gabriellae : any >echinatus : gabriellae.echinatus >() => { var y = this; } : () => void ->y : kaiseri ->this : kaiseri +>y : this +>this : this >x : gabriellae.echinatus Thulium() : julianae.durangae { var x : julianae.durangae; () => { var y = this; }; return x; } @@ -4721,8 +4721,8 @@ module dogramacii { >julianae : any >durangae : julianae.durangae >() => { var y = this; } : () => void ->y : kaiseri ->this : kaiseri +>y : this +>this : this >x : julianae.durangae patrius() : Lanthanum.jugularis { var x : Lanthanum.jugularis; () => { var y = this; }; return x; } @@ -4733,8 +4733,8 @@ module dogramacii { >Lanthanum : any >jugularis : Lanthanum.jugularis >() => { var y = this; } : () => void ->y : kaiseri ->this : kaiseri +>y : this +>this : this >x : Lanthanum.jugularis quadraticauda() : julianae.nudicaudus { var x : julianae.nudicaudus; () => { var y = this; }; return x; } @@ -4745,8 +4745,8 @@ module dogramacii { >julianae : any >nudicaudus : julianae.nudicaudus >() => { var y = this; } : () => void ->y : kaiseri ->this : kaiseri +>y : this +>this : this >x : julianae.nudicaudus ater() : ruatanica.americanus { var x : ruatanica.americanus; () => { var y = this; }; return x; } @@ -4757,8 +4757,8 @@ module dogramacii { >ruatanica : any >americanus : ruatanica.americanus >() => { var y = this; } : () => void ->y : kaiseri ->this : kaiseri +>y : this +>this : this >x : ruatanica.americanus } export class aurata { @@ -4794,8 +4794,8 @@ module dogramacii { >ruatanica : any >americanus : ruatanica.americanus >() => { var y = this; } : () => void ->y : aurata ->this : aurata +>y : this +>this : this >x : nigra.gracilis, julianae.sumatrana>, ruatanica.americanus> howensis() : ruatanica.americanus { var x : ruatanica.americanus; () => { var y = this; }; return x; } @@ -4806,8 +4806,8 @@ module dogramacii { >ruatanica : any >americanus : ruatanica.americanus >() => { var y = this; } : () => void ->y : aurata ->this : aurata +>y : this +>this : this >x : ruatanica.americanus karlkoopmani() : caurinus.psilurus { var x : caurinus.psilurus; () => { var y = this; }; return x; } @@ -4818,8 +4818,8 @@ module dogramacii { >caurinus : any >psilurus : caurinus.psilurus >() => { var y = this; } : () => void ->y : aurata ->this : aurata +>y : this +>this : this >x : caurinus.psilurus mirapitanga() : julianae.albidens { var x : julianae.albidens; () => { var y = this; }; return x; } @@ -4838,8 +4838,8 @@ module dogramacii { >gabriellae : any >echinatus : gabriellae.echinatus >() => { var y = this; } : () => void ->y : aurata ->this : aurata +>y : this +>this : this >x : julianae.albidens ophiodon() : aurata { var x : aurata; () => { var y = this; }; return x; } @@ -4848,8 +4848,8 @@ module dogramacii { >x : aurata >aurata : aurata >() => { var y = this; } : () => void ->y : aurata ->this : aurata +>y : this +>this : this >x : aurata landeri() : samarensis.pelurus { var x : samarensis.pelurus; () => { var y = this; }; return x; } @@ -4868,8 +4868,8 @@ module dogramacii { >ruatanica : any >americanus : ruatanica.americanus >() => { var y = this; } : () => void ->y : aurata ->this : aurata +>y : this +>this : this >x : samarensis.pelurus sonomae() : trivirgatus.lotor, koepckeae> { var x : trivirgatus.lotor, koepckeae>; () => { var y = this; }; return x; } @@ -4894,8 +4894,8 @@ module dogramacii { >psilurus : caurinus.psilurus >koepckeae : koepckeae >() => { var y = this; } : () => void ->y : aurata ->this : aurata +>y : this +>this : this >x : trivirgatus.lotor, koepckeae> erythromos() : caurinus.johorensis, nigra.dolichurus> { var x : caurinus.johorensis, nigra.dolichurus>; () => { var y = this; }; return x; } @@ -4930,8 +4930,8 @@ module dogramacii { >samarensis : any >pallidus : samarensis.pallidus >() => { var y = this; } : () => void ->y : aurata ->this : aurata +>y : this +>this : this >x : caurinus.johorensis, nigra.dolichurus> } } @@ -4952,8 +4952,8 @@ module lutreolus { >rionegrensis : any >caniventer : rionegrensis.caniventer >() => { var y = this; } : () => void ->y : schlegeli ->this : schlegeli +>y : this +>this : this >x : rionegrensis.caniventer blicki() : dogramacii.robustulus { var x : dogramacii.robustulus; () => { var y = this; }; return x; } @@ -4964,8 +4964,8 @@ module lutreolus { >dogramacii : any >robustulus : dogramacii.robustulus >() => { var y = this; } : () => void ->y : schlegeli ->this : schlegeli +>y : this +>this : this >x : dogramacii.robustulus culionensis() : argurus.dauricus { var x : argurus.dauricus; () => { var y = this; }; return x; } @@ -4984,8 +4984,8 @@ module lutreolus { >rionegrensis : any >caniventer : rionegrensis.caniventer >() => { var y = this; } : () => void ->y : schlegeli ->this : schlegeli +>y : this +>this : this >x : argurus.dauricus scrofa() : petrophilus.sodyi { var x : petrophilus.sodyi; () => { var y = this; }; return x; } @@ -5004,8 +5004,8 @@ module lutreolus { >julianae : any >sumatrana : julianae.sumatrana >() => { var y = this; } : () => void ->y : schlegeli ->this : schlegeli +>y : this +>this : this >x : petrophilus.sodyi fernandoni() : quasiater.carolinensis { var x : quasiater.carolinensis; () => { var y = this; }; return x; } @@ -5016,8 +5016,8 @@ module lutreolus { >quasiater : any >carolinensis : quasiater.carolinensis >() => { var y = this; } : () => void ->y : schlegeli ->this : schlegeli +>y : this +>this : this >x : quasiater.carolinensis Tin() : sagitta.leptoceros> { var x : sagitta.leptoceros>; () => { var y = this; }; return x; } @@ -5044,8 +5044,8 @@ module lutreolus { >rionegrensis : any >caniventer : rionegrensis.caniventer >() => { var y = this; } : () => void ->y : schlegeli ->this : schlegeli +>y : this +>this : this >x : sagitta.leptoceros> marmorata() : panamensis.setulosus> { var x : panamensis.setulosus>; () => { var y = this; }; return x; } @@ -5072,8 +5072,8 @@ module lutreolus { >lutreolus : any >punicus : punicus >() => { var y = this; } : () => void ->y : schlegeli ->this : schlegeli +>y : this +>this : this >x : panamensis.setulosus> tavaratra() : Lanthanum.nitidus { var x : Lanthanum.nitidus; () => { var y = this; }; return x; } @@ -5092,8 +5092,8 @@ module lutreolus { >macrorhinos : any >daphaenodon : macrorhinos.daphaenodon >() => { var y = this; } : () => void ->y : schlegeli ->this : schlegeli +>y : this +>this : this >x : Lanthanum.nitidus peregrina() : daubentonii.nesiotes { var x : daubentonii.nesiotes; () => { var y = this; }; return x; } @@ -5112,8 +5112,8 @@ module lutreolus { >lutreolus : any >punicus : punicus >() => { var y = this; } : () => void ->y : schlegeli ->this : schlegeli +>y : this +>this : this >x : daubentonii.nesiotes frontalis() : macrorhinos.marmosurus>, samarensis.pallidus> { var x : macrorhinos.marmosurus>, samarensis.pallidus>; () => { var y = this; }; return x; } @@ -5148,8 +5148,8 @@ module lutreolus { >samarensis : any >pallidus : samarensis.pallidus >() => { var y = this; } : () => void ->y : schlegeli ->this : schlegeli +>y : this +>this : this >x : macrorhinos.marmosurus>, samarensis.pallidus> cuniculus() : patas.uralensis { var x : patas.uralensis; () => { var y = this; }; return x; } @@ -5160,8 +5160,8 @@ module lutreolus { >patas : any >uralensis : patas.uralensis >() => { var y = this; } : () => void ->y : schlegeli ->this : schlegeli +>y : this +>this : this >x : patas.uralensis magdalenae() : julianae.gerbillus> { var x : julianae.gerbillus>; () => { var y = this; }; return x; } @@ -5188,8 +5188,8 @@ module lutreolus { >dogramacii : any >robustulus : dogramacii.robustulus >() => { var y = this; } : () => void ->y : schlegeli ->this : schlegeli +>y : this +>this : this >x : julianae.gerbillus> andamanensis() : julianae.oralis { var x : julianae.oralis; () => { var y = this; }; return x; } @@ -5208,8 +5208,8 @@ module lutreolus { >rendalli : any >zuluensis : rendalli.zuluensis >() => { var y = this; } : () => void ->y : schlegeli ->this : schlegeli +>y : this +>this : this >x : julianae.oralis dispar() : panamensis.linulus { var x : panamensis.linulus; () => { var y = this; }; return x; } @@ -5228,8 +5228,8 @@ module lutreolus { >minutus : any >portoricensis : minutus.portoricensis >() => { var y = this; } : () => void ->y : schlegeli ->this : schlegeli +>y : this +>this : this >x : panamensis.linulus } } @@ -5249,8 +5249,8 @@ module argurus { >Lanthanum : any >jugularis : Lanthanum.jugularis >() => { var y = this; } : () => void ->y : dauricus ->this : dauricus +>y : this +>this : this >x : Lanthanum.jugularis duodecimcostatus() : lavali.xanthognathus { var x : lavali.xanthognathus; () => { var y = this; }; return x; } @@ -5261,8 +5261,8 @@ module argurus { >lavali : any >xanthognathus : lavali.xanthognathus >() => { var y = this; } : () => void ->y : dauricus ->this : dauricus +>y : this +>this : this >x : lavali.xanthognathus foxi() : daubentonii.nesiotes { var x : daubentonii.nesiotes; () => { var y = this; }; return x; } @@ -5281,8 +5281,8 @@ module argurus { >lavali : any >lepturus : lavali.lepturus >() => { var y = this; } : () => void ->y : dauricus ->this : dauricus +>y : this +>this : this >x : daubentonii.nesiotes macleayii() : petrophilus.sodyi>, petrophilus.minutilla> { var x : petrophilus.sodyi>, petrophilus.minutilla>; () => { var y = this; }; return x; } @@ -5317,8 +5317,8 @@ module argurus { >petrophilus : any >minutilla : petrophilus.minutilla >() => { var y = this; } : () => void ->y : dauricus ->this : dauricus +>y : this +>this : this >x : petrophilus.sodyi>, petrophilus.minutilla> darienensis() : trivirgatus.oconnelli { var x : trivirgatus.oconnelli; () => { var y = this; }; return x; } @@ -5329,8 +5329,8 @@ module argurus { >trivirgatus : any >oconnelli : trivirgatus.oconnelli >() => { var y = this; } : () => void ->y : dauricus ->this : dauricus +>y : this +>this : this >x : trivirgatus.oconnelli hardwickii() : macrorhinos.daphaenodon { var x : macrorhinos.daphaenodon; () => { var y = this; }; return x; } @@ -5341,8 +5341,8 @@ module argurus { >macrorhinos : any >daphaenodon : macrorhinos.daphaenodon >() => { var y = this; } : () => void ->y : dauricus ->this : dauricus +>y : this +>this : this >x : macrorhinos.daphaenodon albifrons() : rionegrensis.veraecrucis { var x : rionegrensis.veraecrucis; () => { var y = this; }; return x; } @@ -5361,8 +5361,8 @@ module argurus { >julianae : any >durangae : julianae.durangae >() => { var y = this; } : () => void ->y : dauricus ->this : dauricus +>y : this +>this : this >x : rionegrensis.veraecrucis jacobitus() : caurinus.johorensis>> { var x : caurinus.johorensis>>; () => { var y = this; }; return x; } @@ -5397,8 +5397,8 @@ module argurus { >sagitta : any >stolzmanni : sagitta.stolzmanni >() => { var y = this; } : () => void ->y : dauricus ->this : dauricus +>y : this +>this : this >x : caurinus.johorensis>> guentheri() : rendalli.moojeni { var x : rendalli.moojeni; () => { var y = this; }; return x; } @@ -5417,8 +5417,8 @@ module argurus { >argurus : any >oreas : oreas >() => { var y = this; } : () => void ->y : dauricus ->this : dauricus +>y : this +>this : this >x : rendalli.moojeni mahomet() : imperfecta.ciliolabrum { var x : imperfecta.ciliolabrum; () => { var y = this; }; return x; } @@ -5437,8 +5437,8 @@ module argurus { >lutreolus : any >foina : lutreolus.foina >() => { var y = this; } : () => void ->y : dauricus ->this : dauricus +>y : this +>this : this >x : imperfecta.ciliolabrum misionensis() : macrorhinos.marmosurus, gabriellae.echinatus> { var x : macrorhinos.marmosurus, gabriellae.echinatus>; () => { var y = this; }; return x; } @@ -5465,8 +5465,8 @@ module argurus { >gabriellae : any >echinatus : gabriellae.echinatus >() => { var y = this; } : () => void ->y : dauricus ->this : dauricus +>y : this +>this : this >x : macrorhinos.marmosurus, gabriellae.echinatus> } } @@ -5534,8 +5534,8 @@ module nigra { >argurus : any >oreas : argurus.oreas >() => { var y = this; } : () => void ->y : dolichurus ->this : dolichurus +>y : this +>this : this >x : panglima.abidi, argurus.netscheri, julianae.oralis>>> alfredi() : caurinus.psilurus { var x : caurinus.psilurus; () => { var y = this; }; return x; } @@ -5546,8 +5546,8 @@ module nigra { >caurinus : any >psilurus : caurinus.psilurus >() => { var y = this; } : () => void ->y : dolichurus ->this : dolichurus +>y : this +>this : this >x : caurinus.psilurus morrisi() : ruatanica.hector, quasiater.wattsi>>> { var x : ruatanica.hector, quasiater.wattsi>>>; () => { var y = this; }; return x; } @@ -5598,8 +5598,8 @@ module nigra { >macrorhinos : any >konganensis : macrorhinos.konganensis >() => { var y = this; } : () => void ->y : dolichurus ->this : dolichurus +>y : this +>this : this >x : ruatanica.hector, quasiater.wattsi>>> lekaguli() : Lanthanum.nitidus { var x : Lanthanum.nitidus; () => { var y = this; }; return x; } @@ -5618,8 +5618,8 @@ module nigra { >lavali : any >lepturus : lavali.lepturus >() => { var y = this; } : () => void ->y : dolichurus ->this : dolichurus +>y : this +>this : this >x : Lanthanum.nitidus dimissus() : imperfecta.subspinosus { var x : imperfecta.subspinosus; () => { var y = this; }; return x; } @@ -5630,8 +5630,8 @@ module nigra { >imperfecta : any >subspinosus : imperfecta.subspinosus >() => { var y = this; } : () => void ->y : dolichurus ->this : dolichurus +>y : this +>this : this >x : imperfecta.subspinosus phaeotis() : julianae.sumatrana { var x : julianae.sumatrana; () => { var y = this; }; return x; } @@ -5642,8 +5642,8 @@ module nigra { >julianae : any >sumatrana : julianae.sumatrana >() => { var y = this; } : () => void ->y : dolichurus ->this : dolichurus +>y : this +>this : this >x : julianae.sumatrana ustus() : julianae.acariensis { var x : julianae.acariensis; () => { var y = this; }; return x; } @@ -5654,8 +5654,8 @@ module nigra { >julianae : any >acariensis : julianae.acariensis >() => { var y = this; } : () => void ->y : dolichurus ->this : dolichurus +>y : this +>this : this >x : julianae.acariensis sagei() : howi.marcanoi { var x : howi.marcanoi; () => { var y = this; }; return x; } @@ -5666,8 +5666,8 @@ module nigra { >howi : any >marcanoi : howi.marcanoi >() => { var y = this; } : () => void ->y : dolichurus ->this : dolichurus +>y : this +>this : this >x : howi.marcanoi } } @@ -5720,8 +5720,8 @@ module panglima { >sagitta : any >stolzmanni : sagitta.stolzmanni >() => { var y = this; } : () => void ->y : amphibius ->this : amphibius +>y : this +>this : this >x : macrorhinos.marmosurus, gabriellae.echinatus>, sagitta.stolzmanni> jerdoni(): macrorhinos.daphaenodon { var x: macrorhinos.daphaenodon; () => { var y = this; }; return x; } @@ -5732,8 +5732,8 @@ module panglima { >macrorhinos : any >daphaenodon : macrorhinos.daphaenodon >() => { var y = this; } : () => void ->y : amphibius ->this : amphibius +>y : this +>this : this >x : macrorhinos.daphaenodon camtschatica(): samarensis.pallidus { var x: samarensis.pallidus; () => { var y = this; }; return x; } @@ -5744,8 +5744,8 @@ module panglima { >samarensis : any >pallidus : samarensis.pallidus >() => { var y = this; } : () => void ->y : amphibius ->this : amphibius +>y : this +>this : this >x : samarensis.pallidus spadix(): petrophilus.sodyi { var x: petrophilus.sodyi; () => { var y = this; }; return x; } @@ -5764,8 +5764,8 @@ module panglima { >caurinus : any >psilurus : caurinus.psilurus >() => { var y = this; } : () => void ->y : amphibius ->this : amphibius +>y : this +>this : this >x : petrophilus.sodyi luismanueli(): rendalli.moojeni { var x: rendalli.moojeni; () => { var y = this; }; return x; } @@ -5784,8 +5784,8 @@ module panglima { >trivirgatus : any >oconnelli : trivirgatus.oconnelli >() => { var y = this; } : () => void ->y : amphibius ->this : amphibius +>y : this +>this : this >x : rendalli.moojeni aceramarcae(): daubentonii.arboreus { var x: daubentonii.arboreus; () => { var y = this; }; return x; } @@ -5804,8 +5804,8 @@ module panglima { >julianae : any >steerii : julianae.steerii >() => { var y = this; } : () => void ->y : amphibius ->this : amphibius +>y : this +>this : this >x : daubentonii.arboreus } export class fundatus extends lutreolus.schlegeli { @@ -5832,8 +5832,8 @@ module panglima { >provocax : any >melanoleuca : provocax.melanoleuca >() => { var y = this; } : () => void ->y : fundatus ->this : fundatus +>y : this +>this : this >x : nigra.gracilis flamarioni(): imperfecta.lasiurus>, sagitta.leptoceros>> { var x: imperfecta.lasiurus>, sagitta.leptoceros>>; () => { var y = this; }; return x; } @@ -5882,8 +5882,8 @@ module panglima { >rionegrensis : any >caniventer : rionegrensis.caniventer >() => { var y = this; } : () => void ->y : fundatus ->this : fundatus +>y : this +>this : this >x : imperfecta.lasiurus>, sagitta.leptoceros>> mirabilis(): macrorhinos.marmosurus, lavali.lepturus> { var x: macrorhinos.marmosurus, lavali.lepturus>; () => { var y = this; }; return x; } @@ -5910,8 +5910,8 @@ module panglima { >lavali : any >lepturus : lavali.lepturus >() => { var y = this; } : () => void ->y : fundatus ->this : fundatus +>y : this +>this : this >x : macrorhinos.marmosurus, lavali.lepturus> } export class abidi extends argurus.dauricus { @@ -5934,8 +5934,8 @@ module panglima { >trivirgatus : any >oconnelli : trivirgatus.oconnelli >() => { var y = this; } : () => void ->y : abidi ->this : abidi +>y : this +>this : this >x : trivirgatus.oconnelli macedonicus(): petrophilus.minutilla { var x: petrophilus.minutilla; () => { var y = this; }; return x; } @@ -5946,8 +5946,8 @@ module panglima { >petrophilus : any >minutilla : petrophilus.minutilla >() => { var y = this; } : () => void ->y : abidi ->this : abidi +>y : this +>this : this >x : petrophilus.minutilla galili(): samarensis.cahirinus { var x: samarensis.cahirinus; () => { var y = this; }; return x; } @@ -5966,8 +5966,8 @@ module panglima { >samarensis : any >pallidus : samarensis.pallidus >() => { var y = this; } : () => void ->y : abidi ->this : abidi +>y : this +>this : this >x : samarensis.cahirinus thierryi(): dogramacii.robustulus { var x: dogramacii.robustulus; () => { var y = this; }; return x; } @@ -5978,8 +5978,8 @@ module panglima { >dogramacii : any >robustulus : dogramacii.robustulus >() => { var y = this; } : () => void ->y : abidi ->this : abidi +>y : this +>this : this >x : dogramacii.robustulus ega(): imperfecta.lasiurus> { var x: imperfecta.lasiurus>; () => { var y = this; }; return x; } @@ -6006,8 +6006,8 @@ module panglima { >howi : any >marcanoi : howi.marcanoi >() => { var y = this; } : () => void ->y : abidi ->this : abidi +>y : this +>this : this >x : imperfecta.lasiurus> } } @@ -6025,8 +6025,8 @@ module quasiater { >rendalli : any >zuluensis : rendalli.zuluensis >() => { var y = this; } : () => void ->y : carolinensis ->this : carolinensis +>y : this +>this : this >x : rendalli.zuluensis aeneus(): howi.marcanoi { var x: howi.marcanoi; () => { var y = this; }; return x; } @@ -6037,8 +6037,8 @@ module quasiater { >howi : any >marcanoi : howi.marcanoi >() => { var y = this; } : () => void ->y : carolinensis ->this : carolinensis +>y : this +>this : this >x : howi.marcanoi aloysiisabaudiae(): argurus.netscheri, lavali.lepturus> { var x: argurus.netscheri, lavali.lepturus>; () => { var y = this; }; return x; } @@ -6065,8 +6065,8 @@ module quasiater { >lavali : any >lepturus : lavali.lepturus >() => { var y = this; } : () => void ->y : carolinensis ->this : carolinensis +>y : this +>this : this >x : argurus.netscheri, lavali.lepturus> tenellus(): julianae.nudicaudus { var x: julianae.nudicaudus; () => { var y = this; }; return x; } @@ -6077,8 +6077,8 @@ module quasiater { >julianae : any >nudicaudus : julianae.nudicaudus >() => { var y = this; } : () => void ->y : carolinensis ->this : carolinensis +>y : this +>this : this >x : julianae.nudicaudus andium(): lavali.beisa { var x: lavali.beisa; () => { var y = this; }; return x; } @@ -6089,8 +6089,8 @@ module quasiater { >lavali : any >beisa : lavali.beisa >() => { var y = this; } : () => void ->y : carolinensis ->this : carolinensis +>y : this +>this : this >x : lavali.beisa persephone(): panglima.fundatus { var x: panglima.fundatus; () => { var y = this; }; return x; } @@ -6109,8 +6109,8 @@ module quasiater { >sagitta : any >stolzmanni : sagitta.stolzmanni >() => { var y = this; } : () => void ->y : carolinensis ->this : carolinensis +>y : this +>this : this >x : panglima.fundatus patrizii(): Lanthanum.megalonyx { var x: Lanthanum.megalonyx; () => { var y = this; }; return x; } @@ -6121,8 +6121,8 @@ module quasiater { >Lanthanum : any >megalonyx : Lanthanum.megalonyx >() => { var y = this; } : () => void ->y : carolinensis ->this : carolinensis +>y : this +>this : this >x : Lanthanum.megalonyx } } @@ -6161,8 +6161,8 @@ module minutus { >quasiater : any >carolinensis : quasiater.carolinensis >() => { var y = this; } : () => void ->y : himalayana ->this : himalayana +>y : this +>this : this >x : argurus.netscheri> lobata(): samarensis.pallidus { var x: samarensis.pallidus; () => { var y = this; }; return x; } @@ -6173,8 +6173,8 @@ module minutus { >samarensis : any >pallidus : samarensis.pallidus >() => { var y = this; } : () => void ->y : himalayana ->this : himalayana +>y : this +>this : this >x : samarensis.pallidus rusticus(): dogramacii.aurata { var x: dogramacii.aurata; () => { var y = this; }; return x; } @@ -6185,8 +6185,8 @@ module minutus { >dogramacii : any >aurata : dogramacii.aurata >() => { var y = this; } : () => void ->y : himalayana ->this : himalayana +>y : this +>this : this >x : dogramacii.aurata latona(): daubentonii.nesiotes { var x: daubentonii.nesiotes; () => { var y = this; }; return x; } @@ -6205,8 +6205,8 @@ module minutus { >Lanthanum : any >megalonyx : Lanthanum.megalonyx >() => { var y = this; } : () => void ->y : himalayana ->this : himalayana +>y : this +>this : this >x : daubentonii.nesiotes famulus(): patas.uralensis { var x: patas.uralensis; () => { var y = this; }; return x; } @@ -6217,8 +6217,8 @@ module minutus { >patas : any >uralensis : patas.uralensis >() => { var y = this; } : () => void ->y : himalayana ->this : himalayana +>y : this +>this : this >x : patas.uralensis flaviceps(): minutus.inez> { var x: minutus.inez>; () => { var y = this; }; return x; } @@ -6245,8 +6245,8 @@ module minutus { >lutreolus : any >foina : lutreolus.foina >() => { var y = this; } : () => void ->y : himalayana ->this : himalayana +>y : this +>this : this >x : inez> paradoxolophus(): nigra.dolichurus> { var x: nigra.dolichurus>; () => { var y = this; }; return x; } @@ -6273,8 +6273,8 @@ module minutus { >imperfecta : any >subspinosus : imperfecta.subspinosus >() => { var y = this; } : () => void ->y : himalayana ->this : himalayana +>y : this +>this : this >x : nigra.dolichurus> Osmium(): lavali.wilsoni { var x: lavali.wilsoni; () => { var y = this; }; return x; } @@ -6285,8 +6285,8 @@ module minutus { >lavali : any >wilsoni : lavali.wilsoni >() => { var y = this; } : () => void ->y : himalayana ->this : himalayana +>y : this +>this : this >x : lavali.wilsoni vulgaris(): Lanthanum.nitidus { var x: Lanthanum.nitidus; () => { var y = this; }; return x; } @@ -6305,8 +6305,8 @@ module minutus { >julianae : any >acariensis : julianae.acariensis >() => { var y = this; } : () => void ->y : himalayana ->this : himalayana +>y : this +>this : this >x : Lanthanum.nitidus betsileoensis(): panglima.amphibius { var x: panglima.amphibius; () => { var y = this; }; return x; } @@ -6325,8 +6325,8 @@ module minutus { >lavali : any >lepturus : lavali.lepturus >() => { var y = this; } : () => void ->y : himalayana ->this : himalayana +>y : this +>this : this >x : panglima.amphibius vespuccii(): argurus.gilbertii, provocax.melanoleuca> { var x: argurus.gilbertii, provocax.melanoleuca>; () => { var y = this; }; return x; } @@ -6353,8 +6353,8 @@ module minutus { >provocax : any >melanoleuca : provocax.melanoleuca >() => { var y = this; } : () => void ->y : himalayana ->this : himalayana +>y : this +>this : this >x : argurus.gilbertii, provocax.melanoleuca> olympus(): Lanthanum.megalonyx { var x: Lanthanum.megalonyx; () => { var y = this; }; return x; } @@ -6365,8 +6365,8 @@ module minutus { >Lanthanum : any >megalonyx : Lanthanum.megalonyx >() => { var y = this; } : () => void ->y : himalayana ->this : himalayana +>y : this +>this : this >x : Lanthanum.megalonyx } } @@ -6417,8 +6417,8 @@ module caurinus { >lavali : any >otion : lavali.otion >() => { var y = this; } : () => void ->y : mahaganus ->this : mahaganus +>y : this +>this : this >x : ruatanica.hector>> devius(): samarensis.pelurus, trivirgatus.falconeri>> { var x: samarensis.pelurus, trivirgatus.falconeri>>; () => { var y = this; }; return x; } @@ -6453,8 +6453,8 @@ module caurinus { >trivirgatus : any >falconeri : trivirgatus.falconeri >() => { var y = this; } : () => void ->y : mahaganus ->this : mahaganus +>y : this +>this : this >x : samarensis.pelurus, trivirgatus.falconeri>> masalai(): argurus.oreas { var x: argurus.oreas; () => { var y = this; }; return x; } @@ -6465,8 +6465,8 @@ module caurinus { >argurus : any >oreas : argurus.oreas >() => { var y = this; } : () => void ->y : mahaganus ->this : mahaganus +>y : this +>this : this >x : argurus.oreas kathleenae(): nigra.dolichurus { var x: nigra.dolichurus; () => { var y = this; }; return x; } @@ -6485,8 +6485,8 @@ module caurinus { >caurinus : any >psilurus : psilurus >() => { var y = this; } : () => void ->y : mahaganus ->this : mahaganus +>y : this +>this : this >x : nigra.dolichurus simulus(): gabriellae.echinatus { var x: gabriellae.echinatus; () => { var y = this; }; return x; } @@ -6497,8 +6497,8 @@ module caurinus { >gabriellae : any >echinatus : gabriellae.echinatus >() => { var y = this; } : () => void ->y : mahaganus ->this : mahaganus +>y : this +>this : this >x : gabriellae.echinatus nigrovittatus(): caurinus.mahaganus>> { var x: caurinus.mahaganus>>; () => { var y = this; }; return x; } @@ -6533,8 +6533,8 @@ module caurinus { >lavali : any >wilsoni : lavali.wilsoni >() => { var y = this; } : () => void ->y : mahaganus ->this : mahaganus +>y : this +>this : this >x : mahaganus>> senegalensis(): gabriellae.klossii, dammermani.melanops> { var x: gabriellae.klossii, dammermani.melanops>; () => { var y = this; }; return x; } @@ -6561,8 +6561,8 @@ module caurinus { >dammermani : any >melanops : dammermani.melanops >() => { var y = this; } : () => void ->y : mahaganus ->this : mahaganus +>y : this +>this : this >x : gabriellae.klossii, dammermani.melanops> acticola(): argurus.luctuosa { var x: argurus.luctuosa; () => { var y = this; }; return x; } @@ -6573,8 +6573,8 @@ module caurinus { >argurus : any >luctuosa : argurus.luctuosa >() => { var y = this; } : () => void ->y : mahaganus ->this : mahaganus +>y : this +>this : this >x : argurus.luctuosa } } @@ -6594,8 +6594,8 @@ module macrorhinos { >lutreolus : any >punicus : lutreolus.punicus >() => { var y = this; } : () => void ->y : marmosurus ->this : marmosurus +>y : this +>this : this >x : lutreolus.punicus } } @@ -6618,8 +6618,8 @@ module howi { >howi : any >marcanoi : marcanoi >() => { var y = this; } : () => void ->y : angulatus ->this : angulatus +>y : this +>this : this >x : marcanoi } } @@ -6648,8 +6648,8 @@ module nigra { >quasiater : any >carolinensis : quasiater.carolinensis >() => { var y = this; } : () => void ->y : thalia ->this : thalia +>y : this +>this : this >x : quasiater.carolinensis arnuxii(): panamensis.linulus, lavali.beisa> { var x: panamensis.linulus, lavali.beisa>; () => { var y = this; }; return x; } @@ -6676,8 +6676,8 @@ module nigra { >lavali : any >beisa : lavali.beisa >() => { var y = this; } : () => void ->y : thalia ->this : thalia +>y : this +>this : this >x : panamensis.linulus, lavali.beisa> verheyeni(): lavali.xanthognathus { var x: lavali.xanthognathus; () => { var y = this; }; return x; } @@ -6688,8 +6688,8 @@ module nigra { >lavali : any >xanthognathus : lavali.xanthognathus >() => { var y = this; } : () => void ->y : thalia ->this : thalia +>y : this +>this : this >x : lavali.xanthognathus dauuricus(): gabriellae.amicus { var x: gabriellae.amicus; () => { var y = this; }; return x; } @@ -6700,8 +6700,8 @@ module nigra { >gabriellae : any >amicus : gabriellae.amicus >() => { var y = this; } : () => void ->y : thalia ->this : thalia +>y : this +>this : this >x : gabriellae.amicus tristriatus(): rionegrensis.veraecrucis> { var x: rionegrensis.veraecrucis>; () => { var y = this; }; return x; } @@ -6728,8 +6728,8 @@ module nigra { >howi : any >marcanoi : howi.marcanoi >() => { var y = this; } : () => void ->y : thalia ->this : thalia +>y : this +>this : this >x : rionegrensis.veraecrucis> lasiura(): panglima.abidi>, Lanthanum.nitidus> { var x: panglima.abidi>, Lanthanum.nitidus>; () => { var y = this; }; return x; } @@ -6772,8 +6772,8 @@ module nigra { >julianae : any >acariensis : julianae.acariensis >() => { var y = this; } : () => void ->y : thalia ->this : thalia +>y : this +>this : this >x : panglima.abidi>, Lanthanum.nitidus> gangetica(): argurus.luctuosa { var x: argurus.luctuosa; () => { var y = this; }; return x; } @@ -6784,8 +6784,8 @@ module nigra { >argurus : any >luctuosa : argurus.luctuosa >() => { var y = this; } : () => void ->y : thalia ->this : thalia +>y : this +>this : this >x : argurus.luctuosa brucei(): chrysaeolus.sarasinorum { var x: chrysaeolus.sarasinorum; () => { var y = this; }; return x; } @@ -6804,8 +6804,8 @@ module nigra { >ruatanica : any >americanus : ruatanica.americanus >() => { var y = this; } : () => void ->y : thalia ->this : thalia +>y : this +>this : this >x : chrysaeolus.sarasinorum } } @@ -6834,8 +6834,8 @@ module sagitta { >ruatanica : any >americanus : ruatanica.americanus >() => { var y = this; } : () => void ->y : walkeri ->this : walkeri +>y : this +>this : this >x : samarensis.cahirinus } } @@ -6870,8 +6870,8 @@ module minutus { >lavali : any >wilsoni : lavali.wilsoni >() => { var y = this; } : () => void ->y : inez ->this : inez +>y : this +>this : this >x : samarensis.cahirinus } } @@ -6924,8 +6924,8 @@ module panamensis { >dogramacii : any >kaiseri : dogramacii.kaiseri >() => { var y = this; } : () => void ->y : linulus ->this : linulus +>y : this +>this : this >x : daubentonii.arboreus taki(): patas.uralensis { var x: patas.uralensis; () => { var y = this; }; return x; } @@ -6936,8 +6936,8 @@ module panamensis { >patas : any >uralensis : patas.uralensis >() => { var y = this; } : () => void ->y : linulus ->this : linulus +>y : this +>this : this >x : patas.uralensis fumosus(): rendalli.moojeni, lavali.beisa> { var x: rendalli.moojeni, lavali.beisa>; () => { var y = this; }; return x; } @@ -6964,8 +6964,8 @@ module panamensis { >lavali : any >beisa : lavali.beisa >() => { var y = this; } : () => void ->y : linulus ->this : linulus +>y : this +>this : this >x : rendalli.moojeni, lavali.beisa> rufinus(): macrorhinos.konganensis { var x: macrorhinos.konganensis; () => { var y = this; }; return x; } @@ -6976,8 +6976,8 @@ module panamensis { >macrorhinos : any >konganensis : macrorhinos.konganensis >() => { var y = this; } : () => void ->y : linulus ->this : linulus +>y : this +>this : this >x : macrorhinos.konganensis lami(): nigra.thalia { var x: nigra.thalia; () => { var y = this; }; return x; } @@ -6996,8 +6996,8 @@ module panamensis { >dogramacii : any >robustulus : dogramacii.robustulus >() => { var y = this; } : () => void ->y : linulus ->this : linulus +>y : this +>this : this >x : nigra.thalia regina(): trivirgatus.oconnelli { var x: trivirgatus.oconnelli; () => { var y = this; }; return x; } @@ -7008,8 +7008,8 @@ module panamensis { >trivirgatus : any >oconnelli : trivirgatus.oconnelli >() => { var y = this; } : () => void ->y : linulus ->this : linulus +>y : this +>this : this >x : trivirgatus.oconnelli nanilla(): dammermani.siberu { var x: dammermani.siberu; () => { var y = this; }; return x; } @@ -7028,8 +7028,8 @@ module panamensis { >trivirgatus : any >oconnelli : trivirgatus.oconnelli >() => { var y = this; } : () => void ->y : linulus ->this : linulus +>y : this +>this : this >x : dammermani.siberu enganus(): petrophilus.sodyi { var x: petrophilus.sodyi; () => { var y = this; }; return x; } @@ -7048,8 +7048,8 @@ module panamensis { >argurus : any >oreas : argurus.oreas >() => { var y = this; } : () => void ->y : linulus ->this : linulus +>y : this +>this : this >x : petrophilus.sodyi gomantongensis(): rionegrensis.veraecrucis> { var x: rionegrensis.veraecrucis>; () => { var y = this; }; return x; } @@ -7076,8 +7076,8 @@ module panamensis { >rionegrensis : any >caniventer : rionegrensis.caniventer >() => { var y = this; } : () => void ->y : linulus ->this : linulus +>y : this +>this : this >x : rionegrensis.veraecrucis> } } @@ -7105,8 +7105,8 @@ module nigra { >julianae : any >steerii : julianae.steerii >() => { var y = this; } : () => void ->y : gracilis ->this : gracilis +>y : this +>this : this >x : dolichurus echinothrix(): Lanthanum.nitidus, argurus.oreas> { var x: Lanthanum.nitidus, argurus.oreas>; () => { var y = this; }; return x; } @@ -7133,8 +7133,8 @@ module nigra { >argurus : any >oreas : argurus.oreas >() => { var y = this; } : () => void ->y : gracilis ->this : gracilis +>y : this +>this : this >x : Lanthanum.nitidus, argurus.oreas> garridoi(): dogramacii.koepckeae { var x: dogramacii.koepckeae; () => { var y = this; }; return x; } @@ -7145,8 +7145,8 @@ module nigra { >dogramacii : any >koepckeae : dogramacii.koepckeae >() => { var y = this; } : () => void ->y : gracilis ->this : gracilis +>y : this +>this : this >x : dogramacii.koepckeae rouxii(): nigra.gracilis, nigra.thalia> { var x: nigra.gracilis, nigra.thalia>; () => { var y = this; }; return x; } @@ -7181,8 +7181,8 @@ module nigra { >julianae : any >galapagoensis : julianae.galapagoensis >() => { var y = this; } : () => void ->y : gracilis ->this : gracilis +>y : this +>this : this >x : gracilis, thalia> aurita(): sagitta.stolzmanni { var x: sagitta.stolzmanni; () => { var y = this; }; return x; } @@ -7193,8 +7193,8 @@ module nigra { >sagitta : any >stolzmanni : sagitta.stolzmanni >() => { var y = this; } : () => void ->y : gracilis ->this : gracilis +>y : this +>this : this >x : sagitta.stolzmanni geoffrensis(): rionegrensis.caniventer { var x: rionegrensis.caniventer; () => { var y = this; }; return x; } @@ -7205,8 +7205,8 @@ module nigra { >rionegrensis : any >caniventer : rionegrensis.caniventer >() => { var y = this; } : () => void ->y : gracilis ->this : gracilis +>y : this +>this : this >x : rionegrensis.caniventer theresa(): macrorhinos.marmosurus, argurus.luctuosa>, nigra.dolichurus> { var x: macrorhinos.marmosurus, argurus.luctuosa>, nigra.dolichurus>; () => { var y = this; }; return x; } @@ -7249,8 +7249,8 @@ module nigra { >samarensis : any >pallidus : samarensis.pallidus >() => { var y = this; } : () => void ->y : gracilis ->this : gracilis +>y : this +>this : this >x : macrorhinos.marmosurus, argurus.luctuosa>, dolichurus> melanocarpus(): julianae.albidens, julianae.sumatrana> { var x: julianae.albidens, julianae.sumatrana>; () => { var y = this; }; return x; } @@ -7277,8 +7277,8 @@ module nigra { >julianae : any >sumatrana : julianae.sumatrana >() => { var y = this; } : () => void ->y : gracilis ->this : gracilis +>y : this +>this : this >x : julianae.albidens, julianae.sumatrana> dubiaquercus(): dogramacii.robustulus { var x: dogramacii.robustulus; () => { var y = this; }; return x; } @@ -7289,8 +7289,8 @@ module nigra { >dogramacii : any >robustulus : dogramacii.robustulus >() => { var y = this; } : () => void ->y : gracilis ->this : gracilis +>y : this +>this : this >x : dogramacii.robustulus pectoralis(): julianae.sumatrana { var x: julianae.sumatrana; () => { var y = this; }; return x; } @@ -7301,8 +7301,8 @@ module nigra { >julianae : any >sumatrana : julianae.sumatrana >() => { var y = this; } : () => void ->y : gracilis ->this : gracilis +>y : this +>this : this >x : julianae.sumatrana apoensis(): caurinus.megaphyllus { var x: caurinus.megaphyllus; () => { var y = this; }; return x; } @@ -7313,8 +7313,8 @@ module nigra { >caurinus : any >megaphyllus : caurinus.megaphyllus >() => { var y = this; } : () => void ->y : gracilis ->this : gracilis +>y : this +>this : this >x : caurinus.megaphyllus grisescens(): Lanthanum.jugularis { var x: Lanthanum.jugularis; () => { var y = this; }; return x; } @@ -7325,8 +7325,8 @@ module nigra { >Lanthanum : any >jugularis : Lanthanum.jugularis >() => { var y = this; } : () => void ->y : gracilis ->this : gracilis +>y : this +>this : this >x : Lanthanum.jugularis ramirohitra(): panglima.amphibius { var x: panglima.amphibius; () => { var y = this; }; return x; } @@ -7345,8 +7345,8 @@ module nigra { >gabriellae : any >echinatus : gabriellae.echinatus >() => { var y = this; } : () => void ->y : gracilis ->this : gracilis +>y : this +>this : this >x : panglima.amphibius } } @@ -7377,8 +7377,8 @@ module samarensis { >rionegrensis : any >caniventer : rionegrensis.caniventer >() => { var y = this; } : () => void ->y : pelurus ->this : pelurus +>y : this +>this : this >x : panamensis.linulus castanea(): argurus.netscheri, julianae.oralis> { var x: argurus.netscheri, julianae.oralis>; () => { var y = this; }; return x; } @@ -7413,8 +7413,8 @@ module samarensis { >argurus : any >oreas : argurus.oreas >() => { var y = this; } : () => void ->y : pelurus ->this : pelurus +>y : this +>this : this >x : argurus.netscheri, julianae.oralis> chamek(): argurus.pygmaea { var x: argurus.pygmaea; () => { var y = this; }; return x; } @@ -7433,8 +7433,8 @@ module samarensis { >provocax : any >melanoleuca : provocax.melanoleuca >() => { var y = this; } : () => void ->y : pelurus ->this : pelurus +>y : this +>this : this >x : argurus.pygmaea nigriceps(): lutreolus.punicus { var x: lutreolus.punicus; () => { var y = this; }; return x; } @@ -7445,8 +7445,8 @@ module samarensis { >lutreolus : any >punicus : lutreolus.punicus >() => { var y = this; } : () => void ->y : pelurus ->this : pelurus +>y : this +>this : this >x : lutreolus.punicus lunatus(): pelurus { var x: pelurus; () => { var y = this; }; return x; } @@ -7463,8 +7463,8 @@ module samarensis { >sagitta : any >walkeri : sagitta.walkeri >() => { var y = this; } : () => void ->y : pelurus ->this : pelurus +>y : this +>this : this >x : pelurus madurae(): rionegrensis.caniventer { var x: rionegrensis.caniventer; () => { var y = this; }; return x; } @@ -7475,8 +7475,8 @@ module samarensis { >rionegrensis : any >caniventer : rionegrensis.caniventer >() => { var y = this; } : () => void ->y : pelurus ->this : pelurus +>y : this +>this : this >x : rionegrensis.caniventer chinchilla(): macrorhinos.daphaenodon { var x: macrorhinos.daphaenodon; () => { var y = this; }; return x; } @@ -7487,8 +7487,8 @@ module samarensis { >macrorhinos : any >daphaenodon : macrorhinos.daphaenodon >() => { var y = this; } : () => void ->y : pelurus ->this : pelurus +>y : this +>this : this >x : macrorhinos.daphaenodon eliasi(): petrophilus.rosalia { var x: petrophilus.rosalia; () => { var y = this; }; return x; } @@ -7507,8 +7507,8 @@ module samarensis { >lavali : any >beisa : lavali.beisa >() => { var y = this; } : () => void ->y : pelurus ->this : pelurus +>y : this +>this : this >x : petrophilus.rosalia proditor(): panamensis.setulosus { var x: panamensis.setulosus; () => { var y = this; }; return x; } @@ -7527,8 +7527,8 @@ module samarensis { >julianae : any >steerii : julianae.steerii >() => { var y = this; } : () => void ->y : pelurus ->this : pelurus +>y : this +>this : this >x : panamensis.setulosus gambianus(): quasiater.wattsi> { var x: quasiater.wattsi>; () => { var y = this; }; return x; } @@ -7555,8 +7555,8 @@ module samarensis { >macrorhinos : any >konganensis : macrorhinos.konganensis >() => { var y = this; } : () => void ->y : pelurus ->this : pelurus +>y : this +>this : this >x : quasiater.wattsi> petteri(): dogramacii.kaiseri { var x: dogramacii.kaiseri; () => { var y = this; }; return x; } @@ -7567,8 +7567,8 @@ module samarensis { >dogramacii : any >kaiseri : dogramacii.kaiseri >() => { var y = this; } : () => void ->y : pelurus ->this : pelurus +>y : this +>this : this >x : dogramacii.kaiseri nusatenggara(): panglima.amphibius { var x: panglima.amphibius; () => { var y = this; }; return x; } @@ -7587,8 +7587,8 @@ module samarensis { >quasiater : any >carolinensis : quasiater.carolinensis >() => { var y = this; } : () => void ->y : pelurus ->this : pelurus +>y : this +>this : this >x : panglima.amphibius olitor(): rionegrensis.veraecrucis { var x: rionegrensis.veraecrucis; () => { var y = this; }; return x; } @@ -7607,8 +7607,8 @@ module samarensis { >quasiater : any >bobrinskoi : quasiater.bobrinskoi >() => { var y = this; } : () => void ->y : pelurus ->this : pelurus +>y : this +>this : this >x : rionegrensis.veraecrucis } export class fuscus extends macrorhinos.daphaenodon { @@ -7635,8 +7635,8 @@ module samarensis { >dogramacii : any >aurata : dogramacii.aurata >() => { var y = this; } : () => void ->y : fuscus ->this : fuscus +>y : this +>this : this >x : nigra.gracilis badia(): julianae.sumatrana { var x: julianae.sumatrana; () => { var y = this; }; return x; } @@ -7647,8 +7647,8 @@ module samarensis { >julianae : any >sumatrana : julianae.sumatrana >() => { var y = this; } : () => void ->y : fuscus ->this : fuscus +>y : this +>this : this >x : julianae.sumatrana prymnolopha(): sagitta.walkeri { var x: sagitta.walkeri; () => { var y = this; }; return x; } @@ -7659,8 +7659,8 @@ module samarensis { >sagitta : any >walkeri : sagitta.walkeri >() => { var y = this; } : () => void ->y : fuscus ->this : fuscus +>y : this +>this : this >x : sagitta.walkeri natalensis(): trivirgatus.falconeri { var x: trivirgatus.falconeri; () => { var y = this; }; return x; } @@ -7671,8 +7671,8 @@ module samarensis { >trivirgatus : any >falconeri : trivirgatus.falconeri >() => { var y = this; } : () => void ->y : fuscus ->this : fuscus +>y : this +>this : this >x : trivirgatus.falconeri hunteri(): julianae.durangae { var x: julianae.durangae; () => { var y = this; }; return x; } @@ -7683,8 +7683,8 @@ module samarensis { >julianae : any >durangae : julianae.durangae >() => { var y = this; } : () => void ->y : fuscus ->this : fuscus +>y : this +>this : this >x : julianae.durangae sapiens(): pallidus { var x: pallidus; () => { var y = this; }; return x; } @@ -7693,8 +7693,8 @@ module samarensis { >x : pallidus >pallidus : pallidus >() => { var y = this; } : () => void ->y : fuscus ->this : fuscus +>y : this +>this : this >x : pallidus macrocercus(): panamensis.setulosus { var x: panamensis.setulosus; () => { var y = this; }; return x; } @@ -7713,8 +7713,8 @@ module samarensis { >julianae : any >sumatrana : julianae.sumatrana >() => { var y = this; } : () => void ->y : fuscus ->this : fuscus +>y : this +>this : this >x : panamensis.setulosus nimbae(): lutreolus.punicus { var x: lutreolus.punicus; () => { var y = this; }; return x; } @@ -7725,8 +7725,8 @@ module samarensis { >lutreolus : any >punicus : lutreolus.punicus >() => { var y = this; } : () => void ->y : fuscus ->this : fuscus +>y : this +>this : this >x : lutreolus.punicus suricatta(): daubentonii.nigricans { var x: daubentonii.nigricans; () => { var y = this; }; return x; } @@ -7745,8 +7745,8 @@ module samarensis { >imperfecta : any >subspinosus : imperfecta.subspinosus >() => { var y = this; } : () => void ->y : fuscus ->this : fuscus +>y : this +>this : this >x : daubentonii.nigricans jagorii(): julianae.galapagoensis { var x: julianae.galapagoensis; () => { var y = this; }; return x; } @@ -7757,8 +7757,8 @@ module samarensis { >julianae : any >galapagoensis : julianae.galapagoensis >() => { var y = this; } : () => void ->y : fuscus ->this : fuscus +>y : this +>this : this >x : julianae.galapagoensis beecrofti(): sagitta.stolzmanni { var x: sagitta.stolzmanni; () => { var y = this; }; return x; } @@ -7769,8 +7769,8 @@ module samarensis { >sagitta : any >stolzmanni : sagitta.stolzmanni >() => { var y = this; } : () => void ->y : fuscus ->this : fuscus +>y : this +>this : this >x : sagitta.stolzmanni imaizumii(): minutus.inez, gabriellae.echinatus>, dogramacii.aurata>, lavali.otion>, macrorhinos.konganensis> { var x: minutus.inez, gabriellae.echinatus>, dogramacii.aurata>, lavali.otion>, macrorhinos.konganensis>; () => { var y = this; }; return x; } @@ -7821,8 +7821,8 @@ module samarensis { >macrorhinos : any >konganensis : macrorhinos.konganensis >() => { var y = this; } : () => void ->y : fuscus ->this : fuscus +>y : this +>this : this >x : minutus.inez, gabriellae.echinatus>, dogramacii.aurata>, lavali.otion>, macrorhinos.konganensis> colocolo(): quasiater.bobrinskoi { var x: quasiater.bobrinskoi; () => { var y = this; }; return x; } @@ -7833,8 +7833,8 @@ module samarensis { >quasiater : any >bobrinskoi : quasiater.bobrinskoi >() => { var y = this; } : () => void ->y : fuscus ->this : fuscus +>y : this +>this : this >x : quasiater.bobrinskoi wolfi(): petrophilus.rosalia> { var x: petrophilus.rosalia>; () => { var y = this; }; return x; } @@ -7861,8 +7861,8 @@ module samarensis { >lavali : any >wilsoni : lavali.wilsoni >() => { var y = this; } : () => void ->y : fuscus ->this : fuscus +>y : this +>this : this >x : petrophilus.rosalia> } export class pallidus { @@ -7876,8 +7876,8 @@ module samarensis { >trivirgatus : any >falconeri : trivirgatus.falconeri >() => { var y = this; } : () => void ->y : pallidus ->this : pallidus +>y : this +>this : this >x : trivirgatus.falconeri watersi(): lavali.wilsoni { var x: lavali.wilsoni; () => { var y = this; }; return x; } @@ -7888,8 +7888,8 @@ module samarensis { >lavali : any >wilsoni : lavali.wilsoni >() => { var y = this; } : () => void ->y : pallidus ->this : pallidus +>y : this +>this : this >x : lavali.wilsoni glacialis(): sagitta.cinereus, quasiater.wattsi>> { var x: sagitta.cinereus, quasiater.wattsi>>; () => { var y = this; }; return x; } @@ -7932,8 +7932,8 @@ module samarensis { >macrorhinos : any >konganensis : macrorhinos.konganensis >() => { var y = this; } : () => void ->y : pallidus ->this : pallidus +>y : this +>this : this >x : sagitta.cinereus, quasiater.wattsi>> viaria(): chrysaeolus.sarasinorum { var x: chrysaeolus.sarasinorum; () => { var y = this; }; return x; } @@ -7952,8 +7952,8 @@ module samarensis { >lutreolus : any >punicus : lutreolus.punicus >() => { var y = this; } : () => void ->y : pallidus ->this : pallidus +>y : this +>this : this >x : chrysaeolus.sarasinorum } export class cahirinus { @@ -7977,8 +7977,8 @@ module samarensis { >argurus : any >peninsulae : argurus.peninsulae >() => { var y = this; } : () => void ->y : cahirinus ->this : cahirinus +>y : this +>this : this >x : nigra.caucasica flaviventer(): trivirgatus.tumidifrons> { var x: trivirgatus.tumidifrons>; () => { var y = this; }; return x; } @@ -8005,8 +8005,8 @@ module samarensis { >argurus : any >peninsulae : argurus.peninsulae >() => { var y = this; } : () => void ->y : cahirinus ->this : cahirinus +>y : this +>this : this >x : trivirgatus.tumidifrons> bottai(): lutreolus.schlegeli { var x: lutreolus.schlegeli; () => { var y = this; }; return x; } @@ -8017,8 +8017,8 @@ module samarensis { >lutreolus : any >schlegeli : lutreolus.schlegeli >() => { var y = this; } : () => void ->y : cahirinus ->this : cahirinus +>y : this +>this : this >x : lutreolus.schlegeli pinetis(): argurus.oreas { var x: argurus.oreas; () => { var y = this; }; return x; } @@ -8029,8 +8029,8 @@ module samarensis { >argurus : any >oreas : argurus.oreas >() => { var y = this; } : () => void ->y : cahirinus ->this : cahirinus +>y : this +>this : this >x : argurus.oreas saussurei(): rendalli.crenulata, argurus.netscheri, julianae.oralis>> { var x: rendalli.crenulata, argurus.netscheri, julianae.oralis>>; () => { var y = this; }; return x; } @@ -8081,8 +8081,8 @@ module samarensis { >argurus : any >oreas : argurus.oreas >() => { var y = this; } : () => void ->y : cahirinus ->this : cahirinus +>y : this +>this : this >x : rendalli.crenulata, argurus.netscheri, julianae.oralis>> } } @@ -8113,8 +8113,8 @@ module sagitta { >rionegrensis : any >caniventer : rionegrensis.caniventer >() => { var y = this; } : () => void ->y : leptoceros ->this : leptoceros +>y : this +>this : this >x : rionegrensis.caniventer hoplomyoides(): panglima.fundatus, nigra.gracilis> { var x: panglima.fundatus, nigra.gracilis>; () => { var y = this; }; return x; } @@ -8149,8 +8149,8 @@ module sagitta { >imperfecta : any >subspinosus : imperfecta.subspinosus >() => { var y = this; } : () => void ->y : leptoceros ->this : leptoceros +>y : this +>this : this >x : panglima.fundatus, nigra.gracilis> gratiosus(): lavali.lepturus { var x: lavali.lepturus; () => { var y = this; }; return x; } @@ -8161,8 +8161,8 @@ module sagitta { >lavali : any >lepturus : lavali.lepturus >() => { var y = this; } : () => void ->y : leptoceros ->this : leptoceros +>y : this +>this : this >x : lavali.lepturus rex(): lavali.wilsoni { var x: lavali.wilsoni; () => { var y = this; }; return x; } @@ -8173,8 +8173,8 @@ module sagitta { >lavali : any >wilsoni : lavali.wilsoni >() => { var y = this; } : () => void ->y : leptoceros ->this : leptoceros +>y : this +>this : this >x : lavali.wilsoni bolami(): trivirgatus.tumidifrons { var x: trivirgatus.tumidifrons; () => { var y = this; }; return x; } @@ -8193,8 +8193,8 @@ module sagitta { >ruatanica : any >americanus : ruatanica.americanus >() => { var y = this; } : () => void ->y : leptoceros ->this : leptoceros +>y : this +>this : this >x : trivirgatus.tumidifrons } } @@ -8217,8 +8217,8 @@ module daubentonii { >dogramacii : any >robustulus : dogramacii.robustulus >() => { var y = this; } : () => void ->y : nigricans ->this : nigricans +>y : this +>this : this >x : dogramacii.robustulus } } @@ -8254,8 +8254,8 @@ module argurus { >gabriellae : any >echinatus : gabriellae.echinatus >() => { var y = this; } : () => void ->y : pygmaea ->this : pygmaea +>y : this +>this : this >x : gabriellae.echinatus capucinus(): rendalli.zuluensis { var x: rendalli.zuluensis; () => { var y = this; }; return x; } @@ -8266,8 +8266,8 @@ module argurus { >rendalli : any >zuluensis : rendalli.zuluensis >() => { var y = this; } : () => void ->y : pygmaea ->this : pygmaea +>y : this +>this : this >x : rendalli.zuluensis cuvieri(): rionegrensis.caniventer { var x: rionegrensis.caniventer; () => { var y = this; }; return x; } @@ -8278,8 +8278,8 @@ module argurus { >rionegrensis : any >caniventer : rionegrensis.caniventer >() => { var y = this; } : () => void ->y : pygmaea ->this : pygmaea +>y : this +>this : this >x : rionegrensis.caniventer } } @@ -8302,8 +8302,8 @@ module chrysaeolus { >samarensis : any >pallidus : samarensis.pallidus >() => { var y = this; } : () => void ->y : sarasinorum ->this : sarasinorum +>y : this +>this : this >x : samarensis.pallidus hinpoon(): nigra.caucasica { var x: nigra.caucasica; () => { var y = this; }; return x; } @@ -8322,8 +8322,8 @@ module chrysaeolus { >trivirgatus : any >oconnelli : trivirgatus.oconnelli >() => { var y = this; } : () => void ->y : sarasinorum ->this : sarasinorum +>y : this +>this : this >x : nigra.caucasica kandti(): quasiater.wattsi { var x: quasiater.wattsi; () => { var y = this; }; return x; } @@ -8342,8 +8342,8 @@ module chrysaeolus { >julianae : any >sumatrana : julianae.sumatrana >() => { var y = this; } : () => void ->y : sarasinorum ->this : sarasinorum +>y : this +>this : this >x : quasiater.wattsi cynosuros(): dammermani.melanops { var x: dammermani.melanops; () => { var y = this; }; return x; } @@ -8354,8 +8354,8 @@ module chrysaeolus { >dammermani : any >melanops : dammermani.melanops >() => { var y = this; } : () => void ->y : sarasinorum ->this : sarasinorum +>y : this +>this : this >x : dammermani.melanops Germanium(): lavali.beisa { var x: lavali.beisa; () => { var y = this; }; return x; } @@ -8366,8 +8366,8 @@ module chrysaeolus { >lavali : any >beisa : lavali.beisa >() => { var y = this; } : () => void ->y : sarasinorum ->this : sarasinorum +>y : this +>this : this >x : lavali.beisa Ununoctium(): nigra.gracilis { var x: nigra.gracilis; () => { var y = this; }; return x; } @@ -8386,8 +8386,8 @@ module chrysaeolus { >provocax : any >melanoleuca : provocax.melanoleuca >() => { var y = this; } : () => void ->y : sarasinorum ->this : sarasinorum +>y : this +>this : this >x : nigra.gracilis princeps(): minutus.portoricensis { var x: minutus.portoricensis; () => { var y = this; }; return x; } @@ -8398,8 +8398,8 @@ module chrysaeolus { >minutus : any >portoricensis : minutus.portoricensis >() => { var y = this; } : () => void ->y : sarasinorum ->this : sarasinorum +>y : this +>this : this >x : minutus.portoricensis } } @@ -8427,8 +8427,8 @@ module argurus { >lutreolus : any >foina : lutreolus.foina >() => { var y = this; } : () => void ->y : wetmorei ->this : wetmorei +>y : this +>this : this >x : petrophilus.rosalia ochraventer(): sagitta.walkeri { var x: sagitta.walkeri; () => { var y = this; }; return x; } @@ -8439,8 +8439,8 @@ module argurus { >sagitta : any >walkeri : sagitta.walkeri >() => { var y = this; } : () => void ->y : wetmorei ->this : wetmorei +>y : this +>this : this >x : sagitta.walkeri tephromelas(): Lanthanum.jugularis { var x: Lanthanum.jugularis; () => { var y = this; }; return x; } @@ -8451,8 +8451,8 @@ module argurus { >Lanthanum : any >jugularis : Lanthanum.jugularis >() => { var y = this; } : () => void ->y : wetmorei ->this : wetmorei +>y : this +>this : this >x : Lanthanum.jugularis cracens(): argurus.gilbertii { var x: argurus.gilbertii; () => { var y = this; }; return x; } @@ -8471,8 +8471,8 @@ module argurus { >lutreolus : any >punicus : lutreolus.punicus >() => { var y = this; } : () => void ->y : wetmorei ->this : wetmorei +>y : this +>this : this >x : gilbertii jamaicensis(): nigra.thalia> { var x: nigra.thalia>; () => { var y = this; }; return x; } @@ -8499,8 +8499,8 @@ module argurus { >quasiater : any >carolinensis : quasiater.carolinensis >() => { var y = this; } : () => void ->y : wetmorei ->this : wetmorei +>y : this +>this : this >x : nigra.thalia> gymnocaudus(): dogramacii.aurata { var x: dogramacii.aurata; () => { var y = this; }; return x; } @@ -8511,8 +8511,8 @@ module argurus { >dogramacii : any >aurata : dogramacii.aurata >() => { var y = this; } : () => void ->y : wetmorei ->this : wetmorei +>y : this +>this : this >x : dogramacii.aurata mayori(): sagitta.stolzmanni { var x: sagitta.stolzmanni; () => { var y = this; }; return x; } @@ -8523,8 +8523,8 @@ module argurus { >sagitta : any >stolzmanni : sagitta.stolzmanni >() => { var y = this; } : () => void ->y : wetmorei ->this : wetmorei +>y : this +>this : this >x : sagitta.stolzmanni } } @@ -8545,8 +8545,8 @@ module argurus { >lavali : any >xanthognathus : lavali.xanthognathus >() => { var y = this; } : () => void ->y : oreas ->this : oreas +>y : this +>this : this >x : lavali.xanthognathus paniscus(): ruatanica.Praseodymium { var x: ruatanica.Praseodymium; () => { var y = this; }; return x; } @@ -8565,8 +8565,8 @@ module argurus { >lavali : any >xanthognathus : lavali.xanthognathus >() => { var y = this; } : () => void ->y : oreas ->this : oreas +>y : this +>this : this >x : ruatanica.Praseodymium fagani(): trivirgatus.oconnelli { var x: trivirgatus.oconnelli; () => { var y = this; }; return x; } @@ -8577,8 +8577,8 @@ module argurus { >trivirgatus : any >oconnelli : trivirgatus.oconnelli >() => { var y = this; } : () => void ->y : oreas ->this : oreas +>y : this +>this : this >x : trivirgatus.oconnelli papuanus(): panglima.fundatus { var x: panglima.fundatus; () => { var y = this; }; return x; } @@ -8597,8 +8597,8 @@ module argurus { >macrorhinos : any >daphaenodon : macrorhinos.daphaenodon >() => { var y = this; } : () => void ->y : oreas ->this : oreas +>y : this +>this : this >x : panglima.fundatus timidus(): dammermani.melanops { var x: dammermani.melanops; () => { var y = this; }; return x; } @@ -8609,8 +8609,8 @@ module argurus { >dammermani : any >melanops : dammermani.melanops >() => { var y = this; } : () => void ->y : oreas ->this : oreas +>y : this +>this : this >x : dammermani.melanops nghetinhensis(): gabriellae.klossii { var x: gabriellae.klossii; () => { var y = this; }; return x; } @@ -8629,8 +8629,8 @@ module argurus { >julianae : any >steerii : julianae.steerii >() => { var y = this; } : () => void ->y : oreas ->this : oreas +>y : this +>this : this >x : gabriellae.klossii barbei(): samarensis.cahirinus { var x: samarensis.cahirinus; () => { var y = this; }; return x; } @@ -8649,8 +8649,8 @@ module argurus { >quasiater : any >carolinensis : quasiater.carolinensis >() => { var y = this; } : () => void ->y : oreas ->this : oreas +>y : this +>this : this >x : samarensis.cahirinus univittatus(): argurus.peninsulae { var x: argurus.peninsulae; () => { var y = this; }; return x; } @@ -8661,8 +8661,8 @@ module argurus { >argurus : any >peninsulae : peninsulae >() => { var y = this; } : () => void ->y : oreas ->this : oreas +>y : this +>this : this >x : peninsulae } } @@ -8698,8 +8698,8 @@ module daubentonii { >lavali : any >wilsoni : lavali.wilsoni >() => { var y = this; } : () => void ->y : arboreus ->this : arboreus +>y : this +>this : this >x : rendalli.crenulata, lavali.wilsoni> moreni(): panglima.abidi { var x: panglima.abidi; () => { var y = this; }; return x; } @@ -8718,8 +8718,8 @@ module daubentonii { >dogramacii : any >koepckeae : dogramacii.koepckeae >() => { var y = this; } : () => void ->y : arboreus ->this : arboreus +>y : this +>this : this >x : panglima.abidi hypoleucos(): nigra.gracilis { var x: nigra.gracilis; () => { var y = this; }; return x; } @@ -8738,8 +8738,8 @@ module daubentonii { >argurus : any >germaini : argurus.germaini >() => { var y = this; } : () => void ->y : arboreus ->this : arboreus +>y : this +>this : this >x : nigra.gracilis paedulcus(): minutus.portoricensis { var x: minutus.portoricensis; () => { var y = this; }; return x; } @@ -8750,8 +8750,8 @@ module daubentonii { >minutus : any >portoricensis : minutus.portoricensis >() => { var y = this; } : () => void ->y : arboreus ->this : arboreus +>y : this +>this : this >x : minutus.portoricensis pucheranii(): samarensis.fuscus { var x: samarensis.fuscus; () => { var y = this; }; return x; } @@ -8770,8 +8770,8 @@ module daubentonii { >caurinus : any >megaphyllus : caurinus.megaphyllus >() => { var y = this; } : () => void ->y : arboreus ->this : arboreus +>y : this +>this : this >x : samarensis.fuscus stella(): julianae.oralis { var x: julianae.oralis; () => { var y = this; }; return x; } @@ -8790,8 +8790,8 @@ module daubentonii { >quasiater : any >carolinensis : quasiater.carolinensis >() => { var y = this; } : () => void ->y : arboreus ->this : arboreus +>y : this +>this : this >x : julianae.oralis brasiliensis(): imperfecta.subspinosus { var x: imperfecta.subspinosus; () => { var y = this; }; return x; } @@ -8802,8 +8802,8 @@ module daubentonii { >imperfecta : any >subspinosus : imperfecta.subspinosus >() => { var y = this; } : () => void ->y : arboreus ->this : arboreus +>y : this +>this : this >x : imperfecta.subspinosus brevicaudata(): trivirgatus.oconnelli { var x: trivirgatus.oconnelli; () => { var y = this; }; return x; } @@ -8814,8 +8814,8 @@ module daubentonii { >trivirgatus : any >oconnelli : trivirgatus.oconnelli >() => { var y = this; } : () => void ->y : arboreus ->this : arboreus +>y : this +>this : this >x : trivirgatus.oconnelli vitticollis(): dogramacii.koepckeae { var x: dogramacii.koepckeae; () => { var y = this; }; return x; } @@ -8826,8 +8826,8 @@ module daubentonii { >dogramacii : any >koepckeae : dogramacii.koepckeae >() => { var y = this; } : () => void ->y : arboreus ->this : arboreus +>y : this +>this : this >x : dogramacii.koepckeae huangensis(): caurinus.psilurus { var x: caurinus.psilurus; () => { var y = this; }; return x; } @@ -8838,8 +8838,8 @@ module daubentonii { >caurinus : any >psilurus : caurinus.psilurus >() => { var y = this; } : () => void ->y : arboreus ->this : arboreus +>y : this +>this : this >x : caurinus.psilurus cameroni(): petrophilus.rosalia, imperfecta.ciliolabrum>, caurinus.psilurus> { var x: petrophilus.rosalia, imperfecta.ciliolabrum>, caurinus.psilurus>; () => { var y = this; }; return x; } @@ -8882,8 +8882,8 @@ module daubentonii { >caurinus : any >psilurus : caurinus.psilurus >() => { var y = this; } : () => void ->y : arboreus ->this : arboreus +>y : this +>this : this >x : petrophilus.rosalia, imperfecta.ciliolabrum>, caurinus.psilurus> tianshanica(): howi.marcanoi { var x: howi.marcanoi; () => { var y = this; }; return x; } @@ -8894,8 +8894,8 @@ module daubentonii { >howi : any >marcanoi : howi.marcanoi >() => { var y = this; } : () => void ->y : arboreus ->this : arboreus +>y : this +>this : this >x : howi.marcanoi } } @@ -8921,8 +8921,8 @@ module patas { >Lanthanum : any >jugularis : Lanthanum.jugularis >() => { var y = this; } : () => void ->y : uralensis ->this : uralensis +>y : this +>this : this >x : Lanthanum.nitidus pyrrhinus(): lavali.beisa { var x: lavali.beisa; () => { var y = this; }; return x; } @@ -8933,8 +8933,8 @@ module patas { >lavali : any >beisa : lavali.beisa >() => { var y = this; } : () => void ->y : uralensis ->this : uralensis +>y : this +>this : this >x : lavali.beisa insulans(): Lanthanum.jugularis { var x: Lanthanum.jugularis; () => { var y = this; }; return x; } @@ -8945,8 +8945,8 @@ module patas { >Lanthanum : any >jugularis : Lanthanum.jugularis >() => { var y = this; } : () => void ->y : uralensis ->this : uralensis +>y : this +>this : this >x : Lanthanum.jugularis nigricauda(): caurinus.johorensis, Lanthanum.jugularis> { var x: caurinus.johorensis, Lanthanum.jugularis>; () => { var y = this; }; return x; } @@ -8973,8 +8973,8 @@ module patas { >Lanthanum : any >jugularis : Lanthanum.jugularis >() => { var y = this; } : () => void ->y : uralensis ->this : uralensis +>y : this +>this : this >x : caurinus.johorensis, Lanthanum.jugularis> muricauda(): panglima.fundatus> { var x: panglima.fundatus>; () => { var y = this; }; return x; } @@ -9001,8 +9001,8 @@ module patas { >julianae : any >acariensis : julianae.acariensis >() => { var y = this; } : () => void ->y : uralensis ->this : uralensis +>y : this +>this : this >x : panglima.fundatus> albicaudus(): sagitta.stolzmanni { var x: sagitta.stolzmanni; () => { var y = this; }; return x; } @@ -9013,8 +9013,8 @@ module patas { >sagitta : any >stolzmanni : sagitta.stolzmanni >() => { var y = this; } : () => void ->y : uralensis ->this : uralensis +>y : this +>this : this >x : sagitta.stolzmanni fallax(): ruatanica.hector { var x: ruatanica.hector; () => { var y = this; }; return x; } @@ -9033,8 +9033,8 @@ module patas { >gabriellae : any >amicus : gabriellae.amicus >() => { var y = this; } : () => void ->y : uralensis ->this : uralensis +>y : this +>this : this >x : ruatanica.hector attenuata(): macrorhinos.marmosurus> { var x: macrorhinos.marmosurus>; () => { var y = this; }; return x; } @@ -9061,8 +9061,8 @@ module patas { >dogramacii : any >kaiseri : dogramacii.kaiseri >() => { var y = this; } : () => void ->y : uralensis ->this : uralensis +>y : this +>this : this >x : macrorhinos.marmosurus> megalura(): howi.marcanoi { var x: howi.marcanoi; () => { var y = this; }; return x; } @@ -9073,8 +9073,8 @@ module patas { >howi : any >marcanoi : howi.marcanoi >() => { var y = this; } : () => void ->y : uralensis ->this : uralensis +>y : this +>this : this >x : howi.marcanoi neblina(): samarensis.pelurus { var x: samarensis.pelurus; () => { var y = this; }; return x; } @@ -9093,8 +9093,8 @@ module patas { >rionegrensis : any >caniventer : rionegrensis.caniventer >() => { var y = this; } : () => void ->y : uralensis ->this : uralensis +>y : this +>this : this >x : samarensis.pelurus citellus(): daubentonii.arboreus { var x: daubentonii.arboreus; () => { var y = this; }; return x; } @@ -9113,8 +9113,8 @@ module patas { >rionegrensis : any >caniventer : rionegrensis.caniventer >() => { var y = this; } : () => void ->y : uralensis ->this : uralensis +>y : this +>this : this >x : daubentonii.arboreus tanezumi(): imperfecta.lasiurus { var x: imperfecta.lasiurus; () => { var y = this; }; return x; } @@ -9133,8 +9133,8 @@ module patas { >caurinus : any >psilurus : caurinus.psilurus >() => { var y = this; } : () => void ->y : uralensis ->this : uralensis +>y : this +>this : this >x : imperfecta.lasiurus albiventer(): rendalli.crenulata { var x: rendalli.crenulata; () => { var y = this; }; return x; } @@ -9153,8 +9153,8 @@ module patas { >dogramacii : any >robustulus : dogramacii.robustulus >() => { var y = this; } : () => void ->y : uralensis ->this : uralensis +>y : this +>this : this >x : rendalli.crenulata } } @@ -9191,8 +9191,8 @@ module provocax { >lutreolus : any >foina : lutreolus.foina >() => { var y = this; } : () => void ->y : melanoleuca ->this : melanoleuca +>y : this +>this : this >x : macrorhinos.marmosurus, lutreolus.foina> baeri(): imperfecta.lasiurus { var x: imperfecta.lasiurus; () => { var y = this; }; return x; } @@ -9211,8 +9211,8 @@ module provocax { >ruatanica : any >americanus : ruatanica.americanus >() => { var y = this; } : () => void ->y : melanoleuca ->this : melanoleuca +>y : this +>this : this >x : imperfecta.lasiurus } } @@ -9248,8 +9248,8 @@ module sagitta { >dogramacii : any >robustulus : dogramacii.robustulus >() => { var y = this; } : () => void ->y : sicarius ->this : sicarius +>y : this +>this : this >x : samarensis.cahirinus, dogramacii.robustulus> simulator(): macrorhinos.marmosurus, macrorhinos.marmosurus, gabriellae.echinatus>, sagitta.stolzmanni>> { var x: macrorhinos.marmosurus, macrorhinos.marmosurus, gabriellae.echinatus>, sagitta.stolzmanni>>; () => { var y = this; }; return x; } @@ -9300,8 +9300,8 @@ module sagitta { >sagitta : any >stolzmanni : stolzmanni >() => { var y = this; } : () => void ->y : sicarius ->this : sicarius +>y : this +>this : this >x : macrorhinos.marmosurus, macrorhinos.marmosurus, gabriellae.echinatus>, stolzmanni>> } } @@ -9322,8 +9322,8 @@ module howi { >Lanthanum : any >megalonyx : Lanthanum.megalonyx >() => { var y = this; } : () => void ->y : marcanoi ->this : marcanoi +>y : this +>this : this >x : Lanthanum.megalonyx dudui(): lutreolus.punicus { var x: lutreolus.punicus; () => { var y = this; }; return x; } @@ -9334,8 +9334,8 @@ module howi { >lutreolus : any >punicus : lutreolus.punicus >() => { var y = this; } : () => void ->y : marcanoi ->this : marcanoi +>y : this +>this : this >x : lutreolus.punicus leander(): daubentonii.nesiotes { var x: daubentonii.nesiotes; () => { var y = this; }; return x; } @@ -9354,8 +9354,8 @@ module howi { >minutus : any >portoricensis : minutus.portoricensis >() => { var y = this; } : () => void ->y : marcanoi ->this : marcanoi +>y : this +>this : this >x : daubentonii.nesiotes martinsi(): dogramacii.aurata { var x: dogramacii.aurata; () => { var y = this; }; return x; } @@ -9366,8 +9366,8 @@ module howi { >dogramacii : any >aurata : dogramacii.aurata >() => { var y = this; } : () => void ->y : marcanoi ->this : marcanoi +>y : this +>this : this >x : dogramacii.aurata beatrix(): imperfecta.ciliolabrum, gabriellae.echinatus>, dogramacii.aurata>, imperfecta.ciliolabrum>> { var x: imperfecta.ciliolabrum, gabriellae.echinatus>, dogramacii.aurata>, imperfecta.ciliolabrum>>; () => { var y = this; }; return x; } @@ -9426,8 +9426,8 @@ module howi { >lavali : any >beisa : lavali.beisa >() => { var y = this; } : () => void ->y : marcanoi ->this : marcanoi +>y : this +>this : this >x : imperfecta.ciliolabrum, gabriellae.echinatus>, dogramacii.aurata>, imperfecta.ciliolabrum>> griseoventer(): argurus.oreas { var x: argurus.oreas; () => { var y = this; }; return x; } @@ -9438,8 +9438,8 @@ module howi { >argurus : any >oreas : argurus.oreas >() => { var y = this; } : () => void ->y : marcanoi ->this : marcanoi +>y : this +>this : this >x : argurus.oreas zerda(): quasiater.wattsi, howi.coludo>> { var x: quasiater.wattsi, howi.coludo>>; () => { var y = this; }; return x; } @@ -9482,8 +9482,8 @@ module howi { >quasiater : any >carolinensis : quasiater.carolinensis >() => { var y = this; } : () => void ->y : marcanoi ->this : marcanoi +>y : this +>this : this >x : quasiater.wattsi, coludo>> yucatanicus(): julianae.nudicaudus { var x: julianae.nudicaudus; () => { var y = this; }; return x; } @@ -9494,8 +9494,8 @@ module howi { >julianae : any >nudicaudus : julianae.nudicaudus >() => { var y = this; } : () => void ->y : marcanoi ->this : marcanoi +>y : this +>this : this >x : julianae.nudicaudus nigrita(): argurus.peninsulae { var x: argurus.peninsulae; () => { var y = this; }; return x; } @@ -9506,8 +9506,8 @@ module howi { >argurus : any >peninsulae : argurus.peninsulae >() => { var y = this; } : () => void ->y : marcanoi ->this : marcanoi +>y : this +>this : this >x : argurus.peninsulae jouvenetae(): argurus.dauricus { var x: argurus.dauricus; () => { var y = this; }; return x; } @@ -9526,8 +9526,8 @@ module howi { >julianae : any >durangae : julianae.durangae >() => { var y = this; } : () => void ->y : marcanoi ->this : marcanoi +>y : this +>this : this >x : argurus.dauricus indefessus(): sagitta.walkeri { var x: sagitta.walkeri; () => { var y = this; }; return x; } @@ -9538,8 +9538,8 @@ module howi { >sagitta : any >walkeri : sagitta.walkeri >() => { var y = this; } : () => void ->y : marcanoi ->this : marcanoi +>y : this +>this : this >x : sagitta.walkeri vuquangensis(): macrorhinos.daphaenodon { var x: macrorhinos.daphaenodon; () => { var y = this; }; return x; } @@ -9550,8 +9550,8 @@ module howi { >macrorhinos : any >daphaenodon : macrorhinos.daphaenodon >() => { var y = this; } : () => void ->y : marcanoi ->this : marcanoi +>y : this +>this : this >x : macrorhinos.daphaenodon Zirconium(): lavali.thaeleri { var x: lavali.thaeleri; () => { var y = this; }; return x; } @@ -9562,8 +9562,8 @@ module howi { >lavali : any >thaeleri : lavali.thaeleri >() => { var y = this; } : () => void ->y : marcanoi ->this : marcanoi +>y : this +>this : this >x : lavali.thaeleri hyaena(): julianae.oralis { var x: julianae.oralis; () => { var y = this; }; return x; } @@ -9582,8 +9582,8 @@ module howi { >argurus : any >oreas : argurus.oreas >() => { var y = this; } : () => void ->y : marcanoi ->this : marcanoi +>y : this +>this : this >x : julianae.oralis } } @@ -9603,8 +9603,8 @@ module argurus { >lavali : any >lepturus : lavali.lepturus >() => { var y = this; } : () => void ->y : gilbertii ->this : gilbertii +>y : this +>this : this >x : lavali.lepturus poecilops(): julianae.steerii { var x: julianae.steerii; () => { var y = this; }; return x; } @@ -9615,8 +9615,8 @@ module argurus { >julianae : any >steerii : julianae.steerii >() => { var y = this; } : () => void ->y : gilbertii ->this : gilbertii +>y : this +>this : this >x : julianae.steerii sondaicus(): samarensis.fuscus { var x: samarensis.fuscus; () => { var y = this; }; return x; } @@ -9635,8 +9635,8 @@ module argurus { >lavali : any >lepturus : lavali.lepturus >() => { var y = this; } : () => void ->y : gilbertii ->this : gilbertii +>y : this +>this : this >x : samarensis.fuscus auriventer(): petrophilus.rosalia { var x: petrophilus.rosalia; () => { var y = this; }; return x; } @@ -9655,8 +9655,8 @@ module argurus { >trivirgatus : any >oconnelli : trivirgatus.oconnelli >() => { var y = this; } : () => void ->y : gilbertii ->this : gilbertii +>y : this +>this : this >x : petrophilus.rosalia cherriei(): ruatanica.Praseodymium { var x: ruatanica.Praseodymium; () => { var y = this; }; return x; } @@ -9675,8 +9675,8 @@ module argurus { >argurus : any >oreas : oreas >() => { var y = this; } : () => void ->y : gilbertii ->this : gilbertii +>y : this +>this : this >x : ruatanica.Praseodymium lindberghi(): minutus.inez { var x: minutus.inez; () => { var y = this; }; return x; } @@ -9695,8 +9695,8 @@ module argurus { >rionegrensis : any >caniventer : rionegrensis.caniventer >() => { var y = this; } : () => void ->y : gilbertii ->this : gilbertii +>y : this +>this : this >x : minutus.inez pipistrellus(): quasiater.carolinensis { var x: quasiater.carolinensis; () => { var y = this; }; return x; } @@ -9707,8 +9707,8 @@ module argurus { >quasiater : any >carolinensis : quasiater.carolinensis >() => { var y = this; } : () => void ->y : gilbertii ->this : gilbertii +>y : this +>this : this >x : quasiater.carolinensis paranus(): lutreolus.punicus { var x: lutreolus.punicus; () => { var y = this; }; return x; } @@ -9719,8 +9719,8 @@ module argurus { >lutreolus : any >punicus : lutreolus.punicus >() => { var y = this; } : () => void ->y : gilbertii ->this : gilbertii +>y : this +>this : this >x : lutreolus.punicus dubosti(): nigra.thalia { var x: nigra.thalia; () => { var y = this; }; return x; } @@ -9739,8 +9739,8 @@ module argurus { >julianae : any >sumatrana : julianae.sumatrana >() => { var y = this; } : () => void ->y : gilbertii ->this : gilbertii +>y : this +>this : this >x : nigra.thalia opossum(): nigra.dolichurus { var x: nigra.dolichurus; () => { var y = this; }; return x; } @@ -9759,8 +9759,8 @@ module argurus { >samarensis : any >pallidus : samarensis.pallidus >() => { var y = this; } : () => void ->y : gilbertii ->this : gilbertii +>y : this +>this : this >x : nigra.dolichurus oreopolus(): minutus.portoricensis { var x: minutus.portoricensis; () => { var y = this; }; return x; } @@ -9771,8 +9771,8 @@ module argurus { >minutus : any >portoricensis : minutus.portoricensis >() => { var y = this; } : () => void ->y : gilbertii ->this : gilbertii +>y : this +>this : this >x : minutus.portoricensis amurensis(): daubentonii.arboreus { var x: daubentonii.arboreus; () => { var y = this; }; return x; } @@ -9791,8 +9791,8 @@ module argurus { >macrorhinos : any >konganensis : macrorhinos.konganensis >() => { var y = this; } : () => void ->y : gilbertii ->this : gilbertii +>y : this +>this : this >x : daubentonii.arboreus } } @@ -9825,8 +9825,8 @@ module lutreolus { >Lanthanum : any >jugularis : Lanthanum.jugularis >() => { var y = this; } : () => void ->y : punicus ->this : punicus +>y : this +>this : this >x : gabriellae.klossii lar(): caurinus.mahaganus { var x: caurinus.mahaganus; () => { var y = this; }; return x; } @@ -9845,8 +9845,8 @@ module lutreolus { >lavali : any >otion : lavali.otion >() => { var y = this; } : () => void ->y : punicus ->this : punicus +>y : this +>this : this >x : caurinus.mahaganus erica(): dogramacii.koepckeae { var x: dogramacii.koepckeae; () => { var y = this; }; return x; } @@ -9857,8 +9857,8 @@ module lutreolus { >dogramacii : any >koepckeae : dogramacii.koepckeae >() => { var y = this; } : () => void ->y : punicus ->this : punicus +>y : this +>this : this >x : dogramacii.koepckeae trichura(): macrorhinos.konganensis { var x: macrorhinos.konganensis; () => { var y = this; }; return x; } @@ -9869,8 +9869,8 @@ module lutreolus { >macrorhinos : any >konganensis : macrorhinos.konganensis >() => { var y = this; } : () => void ->y : punicus ->this : punicus +>y : this +>this : this >x : macrorhinos.konganensis lemniscatus(): panglima.fundatus { var x: panglima.fundatus; () => { var y = this; }; return x; } @@ -9889,8 +9889,8 @@ module lutreolus { >lutreolus : any >foina : foina >() => { var y = this; } : () => void ->y : punicus ->this : punicus +>y : this +>this : this >x : panglima.fundatus aspalax(): panamensis.linulus { var x: panamensis.linulus; () => { var y = this; }; return x; } @@ -9909,8 +9909,8 @@ module lutreolus { >macrorhinos : any >konganensis : macrorhinos.konganensis >() => { var y = this; } : () => void ->y : punicus ->this : punicus +>y : this +>this : this >x : panamensis.linulus marshalli(): julianae.nudicaudus { var x: julianae.nudicaudus; () => { var y = this; }; return x; } @@ -9921,8 +9921,8 @@ module lutreolus { >julianae : any >nudicaudus : julianae.nudicaudus >() => { var y = this; } : () => void ->y : punicus ->this : punicus +>y : this +>this : this >x : julianae.nudicaudus Zinc(): julianae.galapagoensis { var x: julianae.galapagoensis; () => { var y = this; }; return x; } @@ -9933,8 +9933,8 @@ module lutreolus { >julianae : any >galapagoensis : julianae.galapagoensis >() => { var y = this; } : () => void ->y : punicus ->this : punicus +>y : this +>this : this >x : julianae.galapagoensis monochromos(): howi.coludo { var x: howi.coludo; () => { var y = this; }; return x; } @@ -9953,8 +9953,8 @@ module lutreolus { >lutreolus : any >punicus : punicus >() => { var y = this; } : () => void ->y : punicus ->this : punicus +>y : this +>this : this >x : howi.coludo purinus(): ruatanica.hector { var x: ruatanica.hector; () => { var y = this; }; return x; } @@ -9973,8 +9973,8 @@ module lutreolus { >provocax : any >melanoleuca : provocax.melanoleuca >() => { var y = this; } : () => void ->y : punicus ->this : punicus +>y : this +>this : this >x : ruatanica.hector ischyrus(): lavali.lepturus { var x: lavali.lepturus; () => { var y = this; }; return x; } @@ -9985,8 +9985,8 @@ module lutreolus { >lavali : any >lepturus : lavali.lepturus >() => { var y = this; } : () => void ->y : punicus ->this : punicus +>y : this +>this : this >x : lavali.lepturus tenuis(): macrorhinos.daphaenodon { var x: macrorhinos.daphaenodon; () => { var y = this; }; return x; } @@ -9997,8 +9997,8 @@ module lutreolus { >macrorhinos : any >daphaenodon : macrorhinos.daphaenodon >() => { var y = this; } : () => void ->y : punicus ->this : punicus +>y : this +>this : this >x : macrorhinos.daphaenodon Helium(): julianae.acariensis { var x: julianae.acariensis; () => { var y = this; }; return x; } @@ -10009,8 +10009,8 @@ module lutreolus { >julianae : any >acariensis : julianae.acariensis >() => { var y = this; } : () => void ->y : punicus ->this : punicus +>y : this +>this : this >x : julianae.acariensis } } @@ -10028,8 +10028,8 @@ module macrorhinos { >julianae : any >sumatrana : julianae.sumatrana >() => { var y = this; } : () => void ->y : daphaenodon ->this : daphaenodon +>y : this +>this : this >x : julianae.sumatrana othus(): howi.coludo { var x: howi.coludo; () => { var y = this; }; return x; } @@ -10048,8 +10048,8 @@ module macrorhinos { >howi : any >marcanoi : howi.marcanoi >() => { var y = this; } : () => void ->y : daphaenodon ->this : daphaenodon +>y : this +>this : this >x : howi.coludo hammondi(): julianae.gerbillus, gabriellae.echinatus>, dogramacii.aurata>, lavali.otion> { var x: julianae.gerbillus, gabriellae.echinatus>, dogramacii.aurata>, lavali.otion>; () => { var y = this; }; return x; } @@ -10092,8 +10092,8 @@ module macrorhinos { >lavali : any >otion : lavali.otion >() => { var y = this; } : () => void ->y : daphaenodon ->this : daphaenodon +>y : this +>this : this >x : julianae.gerbillus, gabriellae.echinatus>, dogramacii.aurata>, lavali.otion> aureocollaris(): quasiater.carolinensis { var x: quasiater.carolinensis; () => { var y = this; }; return x; } @@ -10104,8 +10104,8 @@ module macrorhinos { >quasiater : any >carolinensis : quasiater.carolinensis >() => { var y = this; } : () => void ->y : daphaenodon ->this : daphaenodon +>y : this +>this : this >x : quasiater.carolinensis flavipes(): petrophilus.minutilla { var x: petrophilus.minutilla; () => { var y = this; }; return x; } @@ -10116,8 +10116,8 @@ module macrorhinos { >petrophilus : any >minutilla : petrophilus.minutilla >() => { var y = this; } : () => void ->y : daphaenodon ->this : daphaenodon +>y : this +>this : this >x : petrophilus.minutilla callosus(): trivirgatus.lotor { var x: trivirgatus.lotor; () => { var y = this; }; return x; } @@ -10136,8 +10136,8 @@ module macrorhinos { >dogramacii : any >robustulus : dogramacii.robustulus >() => { var y = this; } : () => void ->y : daphaenodon ->this : daphaenodon +>y : this +>this : this >x : trivirgatus.lotor } } @@ -10173,8 +10173,8 @@ module sagitta { >samarensis : any >pallidus : samarensis.pallidus >() => { var y = this; } : () => void ->y : cinereus ->this : cinereus +>y : this +>this : this >x : rendalli.crenulata> microps(): daubentonii.nigricans> { var x: daubentonii.nigricans>; () => { var y = this; }; return x; } @@ -10201,8 +10201,8 @@ module sagitta { >julianae : any >sumatrana : julianae.sumatrana >() => { var y = this; } : () => void ->y : cinereus ->this : cinereus +>y : this +>this : this >x : daubentonii.nigricans> guaporensis(): daubentonii.arboreus { var x: daubentonii.arboreus; () => { var y = this; }; return x; } @@ -10221,8 +10221,8 @@ module sagitta { >argurus : any >germaini : argurus.germaini >() => { var y = this; } : () => void ->y : cinereus ->this : cinereus +>y : this +>this : this >x : daubentonii.arboreus tonkeana(): panglima.fundatus { var x: panglima.fundatus; () => { var y = this; }; return x; } @@ -10241,8 +10241,8 @@ module sagitta { >dammermani : any >melanops : dammermani.melanops >() => { var y = this; } : () => void ->y : cinereus ->this : cinereus +>y : this +>this : this >x : panglima.fundatus montensis(): dammermani.siberu { var x: dammermani.siberu; () => { var y = this; }; return x; } @@ -10261,8 +10261,8 @@ module sagitta { >trivirgatus : any >oconnelli : trivirgatus.oconnelli >() => { var y = this; } : () => void ->y : cinereus ->this : cinereus +>y : this +>this : this >x : dammermani.siberu sphinx(): minutus.portoricensis { var x: minutus.portoricensis; () => { var y = this; }; return x; } @@ -10273,8 +10273,8 @@ module sagitta { >minutus : any >portoricensis : minutus.portoricensis >() => { var y = this; } : () => void ->y : cinereus ->this : cinereus +>y : this +>this : this >x : minutus.portoricensis glis(): argurus.wetmorei { var x: argurus.wetmorei; () => { var y = this; }; return x; } @@ -10293,8 +10293,8 @@ module sagitta { >howi : any >marcanoi : howi.marcanoi >() => { var y = this; } : () => void ->y : cinereus ->this : cinereus +>y : this +>this : this >x : argurus.wetmorei dorsalis(): petrophilus.sodyi { var x: petrophilus.sodyi; () => { var y = this; }; return x; } @@ -10313,8 +10313,8 @@ module sagitta { >julianae : any >sumatrana : julianae.sumatrana >() => { var y = this; } : () => void ->y : cinereus ->this : cinereus +>y : this +>this : this >x : petrophilus.sodyi fimbriatus(): provocax.melanoleuca { var x: provocax.melanoleuca; () => { var y = this; }; return x; } @@ -10325,8 +10325,8 @@ module sagitta { >provocax : any >melanoleuca : provocax.melanoleuca >() => { var y = this; } : () => void ->y : cinereus ->this : cinereus +>y : this +>this : this >x : provocax.melanoleuca sara(): nigra.gracilis { var x: nigra.gracilis; () => { var y = this; }; return x; } @@ -10345,8 +10345,8 @@ module sagitta { >imperfecta : any >subspinosus : imperfecta.subspinosus >() => { var y = this; } : () => void ->y : cinereus ->this : cinereus +>y : this +>this : this >x : nigra.gracilis epimelas(): sagitta.stolzmanni { var x: sagitta.stolzmanni; () => { var y = this; }; return x; } @@ -10357,8 +10357,8 @@ module sagitta { >sagitta : any >stolzmanni : stolzmanni >() => { var y = this; } : () => void ->y : cinereus ->this : cinereus +>y : this +>this : this >x : stolzmanni pittieri(): samarensis.fuscus { var x: samarensis.fuscus; () => { var y = this; }; return x; } @@ -10377,8 +10377,8 @@ module sagitta { >sagitta : any >stolzmanni : stolzmanni >() => { var y = this; } : () => void ->y : cinereus ->this : cinereus +>y : this +>this : this >x : samarensis.fuscus } } @@ -10417,8 +10417,8 @@ module gabriellae { >argurus : any >luctuosa : argurus.luctuosa >() => { var y = this; } : () => void ->y : amicus ->this : amicus +>y : this +>this : this >x : argurus.luctuosa phaeura(): panglima.abidi { var x: panglima.abidi; () => { var y = this; }; return x; } @@ -10437,8 +10437,8 @@ module gabriellae { >argurus : any >peninsulae : argurus.peninsulae >() => { var y = this; } : () => void ->y : amicus ->this : amicus +>y : this +>this : this >x : panglima.abidi voratus(): lavali.thaeleri { var x: lavali.thaeleri; () => { var y = this; }; return x; } @@ -10449,8 +10449,8 @@ module gabriellae { >lavali : any >thaeleri : lavali.thaeleri >() => { var y = this; } : () => void ->y : amicus ->this : amicus +>y : this +>this : this >x : lavali.thaeleri satarae(): trivirgatus.lotor { var x: trivirgatus.lotor; () => { var y = this; }; return x; } @@ -10469,8 +10469,8 @@ module gabriellae { >lavali : any >wilsoni : lavali.wilsoni >() => { var y = this; } : () => void ->y : amicus ->this : amicus +>y : this +>this : this >x : trivirgatus.lotor hooperi(): caurinus.psilurus { var x: caurinus.psilurus; () => { var y = this; }; return x; } @@ -10481,8 +10481,8 @@ module gabriellae { >caurinus : any >psilurus : caurinus.psilurus >() => { var y = this; } : () => void ->y : amicus ->this : amicus +>y : this +>this : this >x : caurinus.psilurus perrensi(): rendalli.crenulata { var x: rendalli.crenulata; () => { var y = this; }; return x; } @@ -10501,8 +10501,8 @@ module gabriellae { >howi : any >marcanoi : howi.marcanoi >() => { var y = this; } : () => void ->y : amicus ->this : amicus +>y : this +>this : this >x : rendalli.crenulata ridei(): ruatanica.hector> { var x: ruatanica.hector>; () => { var y = this; }; return x; } @@ -10529,8 +10529,8 @@ module gabriellae { >sagitta : any >walkeri : sagitta.walkeri >() => { var y = this; } : () => void ->y : amicus ->this : amicus +>y : this +>this : this >x : ruatanica.hector> audeberti(): daubentonii.arboreus { var x: daubentonii.arboreus; () => { var y = this; }; return x; } @@ -10549,8 +10549,8 @@ module gabriellae { >lutreolus : any >punicus : lutreolus.punicus >() => { var y = this; } : () => void ->y : amicus ->this : amicus +>y : this +>this : this >x : daubentonii.arboreus Lutetium(): macrorhinos.marmosurus { var x: macrorhinos.marmosurus; () => { var y = this; }; return x; } @@ -10569,8 +10569,8 @@ module gabriellae { >lavali : any >thaeleri : lavali.thaeleri >() => { var y = this; } : () => void ->y : amicus ->this : amicus +>y : this +>this : this >x : macrorhinos.marmosurus atrox(): samarensis.fuscus, dogramacii.koepckeae> { var x: samarensis.fuscus, dogramacii.koepckeae>; () => { var y = this; }; return x; } @@ -10597,8 +10597,8 @@ module gabriellae { >dogramacii : any >koepckeae : dogramacii.koepckeae >() => { var y = this; } : () => void ->y : amicus ->this : amicus +>y : this +>this : this >x : samarensis.fuscus, dogramacii.koepckeae> } export class echinatus { @@ -10628,8 +10628,8 @@ module gabriellae { >patas : any >uralensis : patas.uralensis >() => { var y = this; } : () => void ->y : echinatus ->this : echinatus +>y : this +>this : this >x : howi.coludo> } } @@ -10649,8 +10649,8 @@ module imperfecta { >lavali : any >thaeleri : lavali.thaeleri >() => { var y = this; } : () => void ->y : lasiurus ->this : lasiurus +>y : this +>this : this >x : lavali.thaeleri fulvus(): argurus.germaini { var x: argurus.germaini; () => { var y = this; }; return x; } @@ -10661,8 +10661,8 @@ module imperfecta { >argurus : any >germaini : argurus.germaini >() => { var y = this; } : () => void ->y : lasiurus ->this : lasiurus +>y : this +>this : this >x : argurus.germaini paranaensis(): dogramacii.koepckeae { var x: dogramacii.koepckeae; () => { var y = this; }; return x; } @@ -10673,8 +10673,8 @@ module imperfecta { >dogramacii : any >koepckeae : dogramacii.koepckeae >() => { var y = this; } : () => void ->y : lasiurus ->this : lasiurus +>y : this +>this : this >x : dogramacii.koepckeae didactylus(): panglima.abidi> { var x: panglima.abidi>; () => { var y = this; }; return x; } @@ -10701,8 +10701,8 @@ module imperfecta { >lavali : any >xanthognathus : lavali.xanthognathus >() => { var y = this; } : () => void ->y : lasiurus ->this : lasiurus +>y : this +>this : this >x : panglima.abidi> schreibersii(): nigra.gracilis { var x: nigra.gracilis; () => { var y = this; }; return x; } @@ -10721,8 +10721,8 @@ module imperfecta { >ruatanica : any >americanus : ruatanica.americanus >() => { var y = this; } : () => void ->y : lasiurus ->this : lasiurus +>y : this +>this : this >x : nigra.gracilis orii(): dogramacii.kaiseri { var x: dogramacii.kaiseri; () => { var y = this; }; return x; } @@ -10733,8 +10733,8 @@ module imperfecta { >dogramacii : any >kaiseri : dogramacii.kaiseri >() => { var y = this; } : () => void ->y : lasiurus ->this : lasiurus +>y : this +>this : this >x : dogramacii.kaiseri } export class subspinosus { @@ -10748,8 +10748,8 @@ module imperfecta { >macrorhinos : any >konganensis : macrorhinos.konganensis >() => { var y = this; } : () => void ->y : subspinosus ->this : subspinosus +>y : this +>this : this >x : macrorhinos.konganensis Gadolinium(): nigra.caucasica { var x: nigra.caucasica; () => { var y = this; }; return x; } @@ -10768,8 +10768,8 @@ module imperfecta { >patas : any >uralensis : patas.uralensis >() => { var y = this; } : () => void ->y : subspinosus ->this : subspinosus +>y : this +>this : this >x : nigra.caucasica oasicus(): caurinus.johorensis> { var x: caurinus.johorensis>; () => { var y = this; }; return x; } @@ -10796,8 +10796,8 @@ module imperfecta { >sagitta : any >stolzmanni : sagitta.stolzmanni >() => { var y = this; } : () => void ->y : subspinosus ->this : subspinosus +>y : this +>this : this >x : caurinus.johorensis> paterculus(): lutreolus.punicus { var x: lutreolus.punicus; () => { var y = this; }; return x; } @@ -10808,8 +10808,8 @@ module imperfecta { >lutreolus : any >punicus : lutreolus.punicus >() => { var y = this; } : () => void ->y : subspinosus ->this : subspinosus +>y : this +>this : this >x : lutreolus.punicus punctata(): lavali.thaeleri { var x: lavali.thaeleri; () => { var y = this; }; return x; } @@ -10820,8 +10820,8 @@ module imperfecta { >lavali : any >thaeleri : lavali.thaeleri >() => { var y = this; } : () => void ->y : subspinosus ->this : subspinosus +>y : this +>this : this >x : lavali.thaeleri invictus(): sagitta.stolzmanni { var x: sagitta.stolzmanni; () => { var y = this; }; return x; } @@ -10832,8 +10832,8 @@ module imperfecta { >sagitta : any >stolzmanni : sagitta.stolzmanni >() => { var y = this; } : () => void ->y : subspinosus ->this : subspinosus +>y : this +>this : this >x : sagitta.stolzmanni stangeri(): petrophilus.minutilla { var x: petrophilus.minutilla; () => { var y = this; }; return x; } @@ -10844,8 +10844,8 @@ module imperfecta { >petrophilus : any >minutilla : petrophilus.minutilla >() => { var y = this; } : () => void ->y : subspinosus ->this : subspinosus +>y : this +>this : this >x : petrophilus.minutilla siskiyou(): minutus.inez { var x: minutus.inez; () => { var y = this; }; return x; } @@ -10864,8 +10864,8 @@ module imperfecta { >samarensis : any >pallidus : samarensis.pallidus >() => { var y = this; } : () => void ->y : subspinosus ->this : subspinosus +>y : this +>this : this >x : minutus.inez welwitschii(): rionegrensis.caniventer { var x: rionegrensis.caniventer; () => { var y = this; }; return x; } @@ -10876,8 +10876,8 @@ module imperfecta { >rionegrensis : any >caniventer : rionegrensis.caniventer >() => { var y = this; } : () => void ->y : subspinosus ->this : subspinosus +>y : this +>this : this >x : rionegrensis.caniventer Polonium(): lavali.wilsoni { var x: lavali.wilsoni; () => { var y = this; }; return x; } @@ -10888,8 +10888,8 @@ module imperfecta { >lavali : any >wilsoni : lavali.wilsoni >() => { var y = this; } : () => void ->y : subspinosus ->this : subspinosus +>y : this +>this : this >x : lavali.wilsoni harpia(): argurus.luctuosa { var x: argurus.luctuosa; () => { var y = this; }; return x; } @@ -10900,8 +10900,8 @@ module imperfecta { >argurus : any >luctuosa : argurus.luctuosa >() => { var y = this; } : () => void ->y : subspinosus ->this : subspinosus +>y : this +>this : this >x : argurus.luctuosa } export class ciliolabrum extends dogramacii.robustulus { @@ -10936,8 +10936,8 @@ module imperfecta { >caurinus : any >megaphyllus : caurinus.megaphyllus >() => { var y = this; } : () => void ->y : ciliolabrum ->this : ciliolabrum +>y : this +>this : this >x : argurus.dauricus> ludia(): caurinus.johorensis { var x: caurinus.johorensis; () => { var y = this; }; return x; } @@ -10956,8 +10956,8 @@ module imperfecta { >lutreolus : any >punicus : lutreolus.punicus >() => { var y = this; } : () => void ->y : ciliolabrum ->this : ciliolabrum +>y : this +>this : this >x : caurinus.johorensis sinicus(): macrorhinos.marmosurus { var x: macrorhinos.marmosurus; () => { var y = this; }; return x; } @@ -10976,8 +10976,8 @@ module imperfecta { >gabriellae : any >amicus : gabriellae.amicus >() => { var y = this; } : () => void ->y : ciliolabrum ->this : ciliolabrum +>y : this +>this : this >x : macrorhinos.marmosurus } } @@ -10997,8 +10997,8 @@ module quasiater { >lavali : any >xanthognathus : lavali.xanthognathus >() => { var y = this; } : () => void ->y : wattsi ->this : wattsi +>y : this +>this : this >x : lavali.xanthognathus hussoni(): lavali.wilsoni { var x: lavali.wilsoni; () => { var y = this; }; return x; } @@ -11009,8 +11009,8 @@ module quasiater { >lavali : any >wilsoni : lavali.wilsoni >() => { var y = this; } : () => void ->y : wattsi ->this : wattsi +>y : this +>this : this >x : lavali.wilsoni bilarni(): samarensis.cahirinus>, dogramacii.koepckeae> { var x: samarensis.cahirinus>, dogramacii.koepckeae>; () => { var y = this; }; return x; } @@ -11045,8 +11045,8 @@ module quasiater { >dogramacii : any >koepckeae : dogramacii.koepckeae >() => { var y = this; } : () => void ->y : wattsi ->this : wattsi +>y : this +>this : this >x : samarensis.cahirinus>, dogramacii.koepckeae> cabrerae(): lavali.lepturus { var x: lavali.lepturus; () => { var y = this; }; return x; } @@ -11057,8 +11057,8 @@ module quasiater { >lavali : any >lepturus : lavali.lepturus >() => { var y = this; } : () => void ->y : wattsi ->this : wattsi +>y : this +>this : this >x : lavali.lepturus } } @@ -11084,8 +11084,8 @@ module petrophilus { >samarensis : any >pallidus : samarensis.pallidus >() => { var y = this; } : () => void ->y : sodyi ->this : sodyi +>y : this +>this : this >x : samarensis.pallidus imberbis(): quasiater.carolinensis { var x: quasiater.carolinensis; () => { var y = this; }; return x; } @@ -11096,8 +11096,8 @@ module petrophilus { >quasiater : any >carolinensis : quasiater.carolinensis >() => { var y = this; } : () => void ->y : sodyi ->this : sodyi +>y : this +>this : this >x : quasiater.carolinensis cansdalei(): dammermani.melanops { var x: dammermani.melanops; () => { var y = this; }; return x; } @@ -11108,8 +11108,8 @@ module petrophilus { >dammermani : any >melanops : dammermani.melanops >() => { var y = this; } : () => void ->y : sodyi ->this : sodyi +>y : this +>this : this >x : dammermani.melanops Lawrencium(): nigra.dolichurus { var x: nigra.dolichurus; () => { var y = this; }; return x; } @@ -11128,8 +11128,8 @@ module petrophilus { >imperfecta : any >subspinosus : imperfecta.subspinosus >() => { var y = this; } : () => void ->y : sodyi ->this : sodyi +>y : this +>this : this >x : nigra.dolichurus catta(): argurus.oreas { var x: argurus.oreas; () => { var y = this; }; return x; } @@ -11140,8 +11140,8 @@ module petrophilus { >argurus : any >oreas : argurus.oreas >() => { var y = this; } : () => void ->y : sodyi ->this : sodyi +>y : this +>this : this >x : argurus.oreas breviceps(): argurus.dauricus { var x: argurus.dauricus; () => { var y = this; }; return x; } @@ -11160,8 +11160,8 @@ module petrophilus { >dammermani : any >melanops : dammermani.melanops >() => { var y = this; } : () => void ->y : sodyi ->this : sodyi +>y : this +>this : this >x : argurus.dauricus transitionalis(): rendalli.zuluensis { var x: rendalli.zuluensis; () => { var y = this; }; return x; } @@ -11172,8 +11172,8 @@ module petrophilus { >rendalli : any >zuluensis : rendalli.zuluensis >() => { var y = this; } : () => void ->y : sodyi ->this : sodyi +>y : this +>this : this >x : rendalli.zuluensis heptneri(): argurus.germaini { var x: argurus.germaini; () => { var y = this; }; return x; } @@ -11184,8 +11184,8 @@ module petrophilus { >argurus : any >germaini : argurus.germaini >() => { var y = this; } : () => void ->y : sodyi ->this : sodyi +>y : this +>this : this >x : argurus.germaini bairdii(): lavali.beisa { var x: lavali.beisa; () => { var y = this; }; return x; } @@ -11196,8 +11196,8 @@ module petrophilus { >lavali : any >beisa : lavali.beisa >() => { var y = this; } : () => void ->y : sodyi ->this : sodyi +>y : this +>this : this >x : lavali.beisa } } @@ -11226,8 +11226,8 @@ module caurinus { >argurus : any >oreas : argurus.oreas >() => { var y = this; } : () => void ->y : megaphyllus ->this : megaphyllus +>y : this +>this : this >x : argurus.oreas amatus(): lutreolus.schlegeli { var x: lutreolus.schlegeli; () => { var y = this; }; return x; } @@ -11238,8 +11238,8 @@ module caurinus { >lutreolus : any >schlegeli : lutreolus.schlegeli >() => { var y = this; } : () => void ->y : megaphyllus ->this : megaphyllus +>y : this +>this : this >x : lutreolus.schlegeli bucculentus(): gabriellae.echinatus { var x: gabriellae.echinatus; () => { var y = this; }; return x; } @@ -11250,8 +11250,8 @@ module caurinus { >gabriellae : any >echinatus : gabriellae.echinatus >() => { var y = this; } : () => void ->y : megaphyllus ->this : megaphyllus +>y : this +>this : this >x : gabriellae.echinatus lepida(): rendalli.crenulata> { var x: rendalli.crenulata>; () => { var y = this; }; return x; } @@ -11278,8 +11278,8 @@ module caurinus { >lutreolus : any >foina : lutreolus.foina >() => { var y = this; } : () => void ->y : megaphyllus ->this : megaphyllus +>y : this +>this : this >x : rendalli.crenulata> graecus(): dogramacii.kaiseri { var x: dogramacii.kaiseri; () => { var y = this; }; return x; } @@ -11290,8 +11290,8 @@ module caurinus { >dogramacii : any >kaiseri : dogramacii.kaiseri >() => { var y = this; } : () => void ->y : megaphyllus ->this : megaphyllus +>y : this +>this : this >x : dogramacii.kaiseri forsteri(): petrophilus.minutilla { var x: petrophilus.minutilla; () => { var y = this; }; return x; } @@ -11302,8 +11302,8 @@ module caurinus { >petrophilus : any >minutilla : petrophilus.minutilla >() => { var y = this; } : () => void ->y : megaphyllus ->this : megaphyllus +>y : this +>this : this >x : petrophilus.minutilla perotensis(): samarensis.cahirinus { var x: samarensis.cahirinus; () => { var y = this; }; return x; } @@ -11322,8 +11322,8 @@ module caurinus { >lavali : any >lepturus : lavali.lepturus >() => { var y = this; } : () => void ->y : megaphyllus ->this : megaphyllus +>y : this +>this : this >x : samarensis.cahirinus cirrhosus(): quasiater.carolinensis { var x: quasiater.carolinensis; () => { var y = this; }; return x; } @@ -11334,8 +11334,8 @@ module caurinus { >quasiater : any >carolinensis : quasiater.carolinensis >() => { var y = this; } : () => void ->y : megaphyllus ->this : megaphyllus +>y : this +>this : this >x : quasiater.carolinensis } } @@ -11353,8 +11353,8 @@ module minutus { >quasiater : any >carolinensis : quasiater.carolinensis >() => { var y = this; } : () => void ->y : portoricensis ->this : portoricensis +>y : this +>this : this >x : quasiater.carolinensis aequatorianus(): gabriellae.klossii { var x: gabriellae.klossii; () => { var y = this; }; return x; } @@ -11373,8 +11373,8 @@ module minutus { >dogramacii : any >aurata : dogramacii.aurata >() => { var y = this; } : () => void ->y : portoricensis ->this : portoricensis +>y : this +>this : this >x : gabriellae.klossii rhinogradoides(): samarensis.cahirinus { var x: samarensis.cahirinus; () => { var y = this; }; return x; } @@ -11393,8 +11393,8 @@ module minutus { >julianae : any >durangae : julianae.durangae >() => { var y = this; } : () => void ->y : portoricensis ->this : portoricensis +>y : this +>this : this >x : samarensis.cahirinus } } @@ -11412,8 +11412,8 @@ module lutreolus { >lutreolus : any >punicus : punicus >() => { var y = this; } : () => void ->y : foina ->this : foina +>y : this +>this : this >x : punicus Promethium(): samarensis.pelurus { var x: samarensis.pelurus; () => { var y = this; }; return x; } @@ -11432,8 +11432,8 @@ module lutreolus { >julianae : any >durangae : julianae.durangae >() => { var y = this; } : () => void ->y : foina ->this : foina +>y : this +>this : this >x : samarensis.pelurus salinae(): gabriellae.klossii { var x: gabriellae.klossii; () => { var y = this; }; return x; } @@ -11452,8 +11452,8 @@ module lutreolus { >quasiater : any >carolinensis : quasiater.carolinensis >() => { var y = this; } : () => void ->y : foina ->this : foina +>y : this +>this : this >x : gabriellae.klossii kerri(): howi.coludo { var x: howi.coludo; () => { var y = this; }; return x; } @@ -11472,8 +11472,8 @@ module lutreolus { >minutus : any >portoricensis : minutus.portoricensis >() => { var y = this; } : () => void ->y : foina ->this : foina +>y : this +>this : this >x : howi.coludo scotti(): quasiater.wattsi { var x: quasiater.wattsi; () => { var y = this; }; return x; } @@ -11492,8 +11492,8 @@ module lutreolus { >dogramacii : any >robustulus : dogramacii.robustulus >() => { var y = this; } : () => void ->y : foina ->this : foina +>y : this +>this : this >x : quasiater.wattsi camerunensis(): julianae.gerbillus { var x: julianae.gerbillus; () => { var y = this; }; return x; } @@ -11512,8 +11512,8 @@ module lutreolus { >julianae : any >durangae : julianae.durangae >() => { var y = this; } : () => void ->y : foina ->this : foina +>y : this +>this : this >x : julianae.gerbillus affinis(): argurus.germaini { var x: argurus.germaini; () => { var y = this; }; return x; } @@ -11524,8 +11524,8 @@ module lutreolus { >argurus : any >germaini : argurus.germaini >() => { var y = this; } : () => void ->y : foina ->this : foina +>y : this +>this : this >x : argurus.germaini siebersi(): trivirgatus.lotor> { var x: trivirgatus.lotor>; () => { var y = this; }; return x; } @@ -11552,8 +11552,8 @@ module lutreolus { >lavali : any >wilsoni : lavali.wilsoni >() => { var y = this; } : () => void ->y : foina ->this : foina +>y : this +>this : this >x : trivirgatus.lotor> maquassiensis(): trivirgatus.oconnelli { var x: trivirgatus.oconnelli; () => { var y = this; }; return x; } @@ -11564,8 +11564,8 @@ module lutreolus { >trivirgatus : any >oconnelli : trivirgatus.oconnelli >() => { var y = this; } : () => void ->y : foina ->this : foina +>y : this +>this : this >x : trivirgatus.oconnelli layardi(): julianae.albidens { var x: julianae.albidens; () => { var y = this; }; return x; } @@ -11584,8 +11584,8 @@ module lutreolus { >dogramacii : any >koepckeae : dogramacii.koepckeae >() => { var y = this; } : () => void ->y : foina ->this : foina +>y : this +>this : this >x : julianae.albidens bishopi(): dogramacii.aurata { var x: dogramacii.aurata; () => { var y = this; }; return x; } @@ -11596,8 +11596,8 @@ module lutreolus { >dogramacii : any >aurata : dogramacii.aurata >() => { var y = this; } : () => void ->y : foina ->this : foina +>y : this +>this : this >x : dogramacii.aurata apodemoides(): caurinus.psilurus { var x: caurinus.psilurus; () => { var y = this; }; return x; } @@ -11608,8 +11608,8 @@ module lutreolus { >caurinus : any >psilurus : caurinus.psilurus >() => { var y = this; } : () => void ->y : foina ->this : foina +>y : this +>this : this >x : caurinus.psilurus argentiventer(): trivirgatus.mixtus { var x: trivirgatus.mixtus; () => { var y = this; }; return x; } @@ -11628,8 +11628,8 @@ module lutreolus { >lutreolus : any >punicus : punicus >() => { var y = this; } : () => void ->y : foina ->this : foina +>y : this +>this : this >x : trivirgatus.mixtus } } @@ -11672,8 +11672,8 @@ module lutreolus { >argurus : any >germaini : argurus.germaini >() => { var y = this; } : () => void ->y : cor ->this : cor +>y : this +>this : this >x : petrophilus.sodyi voi(): caurinus.johorensis { var x: caurinus.johorensis; () => { var y = this; }; return x; } @@ -11692,8 +11692,8 @@ module lutreolus { >macrorhinos : any >konganensis : macrorhinos.konganensis >() => { var y = this; } : () => void ->y : cor ->this : cor +>y : this +>this : this >x : caurinus.johorensis mussoi(): quasiater.carolinensis { var x: quasiater.carolinensis; () => { var y = this; }; return x; } @@ -11704,8 +11704,8 @@ module lutreolus { >quasiater : any >carolinensis : quasiater.carolinensis >() => { var y = this; } : () => void ->y : cor ->this : cor +>y : this +>this : this >x : quasiater.carolinensis truncatus(): trivirgatus.lotor { var x: trivirgatus.lotor; () => { var y = this; }; return x; } @@ -11724,8 +11724,8 @@ module lutreolus { >lutreolus : any >foina : foina >() => { var y = this; } : () => void ->y : cor ->this : cor +>y : this +>this : this >x : trivirgatus.lotor achates(): provocax.melanoleuca { var x: provocax.melanoleuca; () => { var y = this; }; return x; } @@ -11736,8 +11736,8 @@ module lutreolus { >provocax : any >melanoleuca : provocax.melanoleuca >() => { var y = this; } : () => void ->y : cor ->this : cor +>y : this +>this : this >x : provocax.melanoleuca praedatrix(): howi.angulatus { var x: howi.angulatus; () => { var y = this; }; return x; } @@ -11756,8 +11756,8 @@ module lutreolus { >julianae : any >steerii : julianae.steerii >() => { var y = this; } : () => void ->y : cor ->this : cor +>y : this +>this : this >x : howi.angulatus mzabi(): quasiater.wattsi, minutus.inez> { var x: quasiater.wattsi, minutus.inez>; () => { var y = this; }; return x; } @@ -11792,8 +11792,8 @@ module lutreolus { >Lanthanum : any >jugularis : Lanthanum.jugularis >() => { var y = this; } : () => void ->y : cor ->this : cor +>y : this +>this : this >x : quasiater.wattsi, minutus.inez> xanthinus(): nigra.gracilis, howi.marcanoi> { var x: nigra.gracilis, howi.marcanoi>; () => { var y = this; }; return x; } @@ -11820,8 +11820,8 @@ module lutreolus { >howi : any >marcanoi : howi.marcanoi >() => { var y = this; } : () => void ->y : cor ->this : cor +>y : this +>this : this >x : nigra.gracilis, howi.marcanoi> tapoatafa(): caurinus.megaphyllus { var x: caurinus.megaphyllus; () => { var y = this; }; return x; } @@ -11832,8 +11832,8 @@ module lutreolus { >caurinus : any >megaphyllus : caurinus.megaphyllus >() => { var y = this; } : () => void ->y : cor ->this : cor +>y : this +>this : this >x : caurinus.megaphyllus castroviejoi(): Lanthanum.jugularis { var x: Lanthanum.jugularis; () => { var y = this; }; return x; } @@ -11844,8 +11844,8 @@ module lutreolus { >Lanthanum : any >jugularis : Lanthanum.jugularis >() => { var y = this; } : () => void ->y : cor ->this : cor +>y : this +>this : this >x : Lanthanum.jugularis } } @@ -11865,8 +11865,8 @@ module howi { >lutreolus : any >punicus : lutreolus.punicus >() => { var y = this; } : () => void ->y : coludo ->this : coludo +>y : this +>this : this >x : lutreolus.punicus isseli(): argurus.germaini { var x: argurus.germaini; () => { var y = this; }; return x; } @@ -11877,8 +11877,8 @@ module howi { >argurus : any >germaini : argurus.germaini >() => { var y = this; } : () => void ->y : coludo ->this : coludo +>y : this +>this : this >x : argurus.germaini } } @@ -11899,8 +11899,8 @@ module argurus { >lavali : any >wilsoni : lavali.wilsoni >() => { var y = this; } : () => void ->y : germaini ->this : germaini +>y : this +>this : this >x : lavali.wilsoni palmarum(): macrorhinos.marmosurus { var x: macrorhinos.marmosurus; () => { var y = this; }; return x; } @@ -11919,8 +11919,8 @@ module argurus { >lavali : any >thaeleri : lavali.thaeleri >() => { var y = this; } : () => void ->y : germaini ->this : germaini +>y : this +>this : this >x : macrorhinos.marmosurus } } @@ -11946,8 +11946,8 @@ module sagitta { >caurinus : any >psilurus : caurinus.psilurus >() => { var y = this; } : () => void ->y : stolzmanni ->this : stolzmanni +>y : this +>this : this >x : nigra.dolichurus dhofarensis(): lutreolus.foina { var x: lutreolus.foina; () => { var y = this; }; return x; } @@ -11958,8 +11958,8 @@ module sagitta { >lutreolus : any >foina : lutreolus.foina >() => { var y = this; } : () => void ->y : stolzmanni ->this : stolzmanni +>y : this +>this : this >x : lutreolus.foina tricolor(): argurus.germaini { var x: argurus.germaini; () => { var y = this; }; return x; } @@ -11970,8 +11970,8 @@ module sagitta { >argurus : any >germaini : argurus.germaini >() => { var y = this; } : () => void ->y : stolzmanni ->this : stolzmanni +>y : this +>this : this >x : argurus.germaini gardneri(): lavali.xanthognathus { var x: lavali.xanthognathus; () => { var y = this; }; return x; } @@ -11982,8 +11982,8 @@ module sagitta { >lavali : any >xanthognathus : lavali.xanthognathus >() => { var y = this; } : () => void ->y : stolzmanni ->this : stolzmanni +>y : this +>this : this >x : lavali.xanthognathus walleri(): rendalli.moojeni, gabriellae.echinatus> { var x: rendalli.moojeni, gabriellae.echinatus>; () => { var y = this; }; return x; } @@ -12010,8 +12010,8 @@ module sagitta { >gabriellae : any >echinatus : gabriellae.echinatus >() => { var y = this; } : () => void ->y : stolzmanni ->this : stolzmanni +>y : this +>this : this >x : rendalli.moojeni, gabriellae.echinatus> talpoides(): gabriellae.echinatus { var x: gabriellae.echinatus; () => { var y = this; }; return x; } @@ -12022,8 +12022,8 @@ module sagitta { >gabriellae : any >echinatus : gabriellae.echinatus >() => { var y = this; } : () => void ->y : stolzmanni ->this : stolzmanni +>y : this +>this : this >x : gabriellae.echinatus pallipes(): dammermani.melanops { var x: dammermani.melanops; () => { var y = this; }; return x; } @@ -12034,8 +12034,8 @@ module sagitta { >dammermani : any >melanops : dammermani.melanops >() => { var y = this; } : () => void ->y : stolzmanni ->this : stolzmanni +>y : this +>this : this >x : dammermani.melanops lagurus(): lavali.beisa { var x: lavali.beisa; () => { var y = this; }; return x; } @@ -12046,8 +12046,8 @@ module sagitta { >lavali : any >beisa : lavali.beisa >() => { var y = this; } : () => void ->y : stolzmanni ->this : stolzmanni +>y : this +>this : this >x : lavali.beisa hipposideros(): julianae.albidens { var x: julianae.albidens; () => { var y = this; }; return x; } @@ -12066,8 +12066,8 @@ module sagitta { >gabriellae : any >echinatus : gabriellae.echinatus >() => { var y = this; } : () => void ->y : stolzmanni ->this : stolzmanni +>y : this +>this : this >x : julianae.albidens griselda(): caurinus.psilurus { var x: caurinus.psilurus; () => { var y = this; }; return x; } @@ -12078,8 +12078,8 @@ module sagitta { >caurinus : any >psilurus : caurinus.psilurus >() => { var y = this; } : () => void ->y : stolzmanni ->this : stolzmanni +>y : this +>this : this >x : caurinus.psilurus florium(): rendalli.zuluensis { var x: rendalli.zuluensis; () => { var y = this; }; return x; } @@ -12090,8 +12090,8 @@ module sagitta { >rendalli : any >zuluensis : rendalli.zuluensis >() => { var y = this; } : () => void ->y : stolzmanni ->this : stolzmanni +>y : this +>this : this >x : rendalli.zuluensis } } @@ -12116,8 +12116,8 @@ module dammermani { >dammermani : any >melanops : melanops >() => { var y = this; } : () => void ->y : melanops ->this : melanops +>y : this +>this : this >x : melanops harwoodi(): rionegrensis.veraecrucis, lavali.wilsoni> { var x: rionegrensis.veraecrucis, lavali.wilsoni>; () => { var y = this; }; return x; } @@ -12144,8 +12144,8 @@ module dammermani { >lavali : any >wilsoni : lavali.wilsoni >() => { var y = this; } : () => void ->y : melanops ->this : melanops +>y : this +>this : this >x : rionegrensis.veraecrucis, lavali.wilsoni> ashaninka(): julianae.nudicaudus { var x: julianae.nudicaudus; () => { var y = this; }; return x; } @@ -12156,8 +12156,8 @@ module dammermani { >julianae : any >nudicaudus : julianae.nudicaudus >() => { var y = this; } : () => void ->y : melanops ->this : melanops +>y : this +>this : this >x : julianae.nudicaudus wiedii(): julianae.steerii { var x: julianae.steerii; () => { var y = this; }; return x; } @@ -12168,8 +12168,8 @@ module dammermani { >julianae : any >steerii : julianae.steerii >() => { var y = this; } : () => void ->y : melanops ->this : melanops +>y : this +>this : this >x : julianae.steerii godmani(): imperfecta.subspinosus { var x: imperfecta.subspinosus; () => { var y = this; }; return x; } @@ -12180,8 +12180,8 @@ module dammermani { >imperfecta : any >subspinosus : imperfecta.subspinosus >() => { var y = this; } : () => void ->y : melanops ->this : melanops +>y : this +>this : this >x : imperfecta.subspinosus condorensis(): imperfecta.ciliolabrum { var x: imperfecta.ciliolabrum; () => { var y = this; }; return x; } @@ -12200,8 +12200,8 @@ module dammermani { >caurinus : any >psilurus : caurinus.psilurus >() => { var y = this; } : () => void ->y : melanops ->this : melanops +>y : this +>this : this >x : imperfecta.ciliolabrum xerophila(): panglima.abidi { var x: panglima.abidi; () => { var y = this; }; return x; } @@ -12220,8 +12220,8 @@ module dammermani { >patas : any >uralensis : patas.uralensis >() => { var y = this; } : () => void ->y : melanops ->this : melanops +>y : this +>this : this >x : panglima.abidi laminatus(): panglima.fundatus>> { var x: panglima.fundatus>>; () => { var y = this; }; return x; } @@ -12256,8 +12256,8 @@ module dammermani { >imperfecta : any >subspinosus : imperfecta.subspinosus >() => { var y = this; } : () => void ->y : melanops ->this : melanops +>y : this +>this : this >x : panglima.fundatus>> archeri(): howi.marcanoi { var x: howi.marcanoi; () => { var y = this; }; return x; } @@ -12268,8 +12268,8 @@ module dammermani { >howi : any >marcanoi : howi.marcanoi >() => { var y = this; } : () => void ->y : melanops ->this : melanops +>y : this +>this : this >x : howi.marcanoi hidalgo(): minutus.inez { var x: minutus.inez; () => { var y = this; }; return x; } @@ -12288,8 +12288,8 @@ module dammermani { >Lanthanum : any >jugularis : Lanthanum.jugularis >() => { var y = this; } : () => void ->y : melanops ->this : melanops +>y : this +>this : this >x : minutus.inez unicolor(): lutreolus.schlegeli { var x: lutreolus.schlegeli; () => { var y = this; }; return x; } @@ -12300,8 +12300,8 @@ module dammermani { >lutreolus : any >schlegeli : lutreolus.schlegeli >() => { var y = this; } : () => void ->y : melanops ->this : melanops +>y : this +>this : this >x : lutreolus.schlegeli philippii(): nigra.gracilis { var x: nigra.gracilis; () => { var y = this; }; return x; } @@ -12320,8 +12320,8 @@ module dammermani { >sagitta : any >stolzmanni : sagitta.stolzmanni >() => { var y = this; } : () => void ->y : melanops ->this : melanops +>y : this +>this : this >x : nigra.gracilis bocagei(): julianae.albidens { var x: julianae.albidens; () => { var y = this; }; return x; } @@ -12340,8 +12340,8 @@ module dammermani { >lavali : any >thaeleri : lavali.thaeleri >() => { var y = this; } : () => void ->y : melanops ->this : melanops +>y : this +>this : this >x : julianae.albidens } } @@ -12386,8 +12386,8 @@ module argurus { >quasiater : any >carolinensis : quasiater.carolinensis >() => { var y = this; } : () => void ->y : peninsulae ->this : peninsulae +>y : this +>this : this >x : trivirgatus.mixtus, panglima.amphibius> novaeangliae(): lavali.xanthognathus { var x: lavali.xanthognathus; () => { var y = this; }; return x; } @@ -12398,8 +12398,8 @@ module argurus { >lavali : any >xanthognathus : lavali.xanthognathus >() => { var y = this; } : () => void ->y : peninsulae ->this : peninsulae +>y : this +>this : this >x : lavali.xanthognathus olallae(): julianae.sumatrana { var x: julianae.sumatrana; () => { var y = this; }; return x; } @@ -12410,8 +12410,8 @@ module argurus { >julianae : any >sumatrana : julianae.sumatrana >() => { var y = this; } : () => void ->y : peninsulae ->this : peninsulae +>y : this +>this : this >x : julianae.sumatrana anselli(): dogramacii.aurata { var x: dogramacii.aurata; () => { var y = this; }; return x; } @@ -12422,8 +12422,8 @@ module argurus { >dogramacii : any >aurata : dogramacii.aurata >() => { var y = this; } : () => void ->y : peninsulae ->this : peninsulae +>y : this +>this : this >x : dogramacii.aurata timminsi(): macrorhinos.konganensis { var x: macrorhinos.konganensis; () => { var y = this; }; return x; } @@ -12434,8 +12434,8 @@ module argurus { >macrorhinos : any >konganensis : macrorhinos.konganensis >() => { var y = this; } : () => void ->y : peninsulae ->this : peninsulae +>y : this +>this : this >x : macrorhinos.konganensis sordidus(): rendalli.moojeni { var x: rendalli.moojeni; () => { var y = this; }; return x; } @@ -12454,8 +12454,8 @@ module argurus { >gabriellae : any >echinatus : gabriellae.echinatus >() => { var y = this; } : () => void ->y : peninsulae ->this : peninsulae +>y : this +>this : this >x : rendalli.moojeni telfordi(): trivirgatus.oconnelli { var x: trivirgatus.oconnelli; () => { var y = this; }; return x; } @@ -12466,8 +12466,8 @@ module argurus { >trivirgatus : any >oconnelli : trivirgatus.oconnelli >() => { var y = this; } : () => void ->y : peninsulae ->this : peninsulae +>y : this +>this : this >x : trivirgatus.oconnelli cavernarum(): minutus.inez { var x: minutus.inez; () => { var y = this; }; return x; } @@ -12486,8 +12486,8 @@ module argurus { >argurus : any >luctuosa : luctuosa >() => { var y = this; } : () => void ->y : peninsulae ->this : peninsulae +>y : this +>this : this >x : minutus.inez } } @@ -12523,8 +12523,8 @@ module argurus { >dogramacii : any >kaiseri : dogramacii.kaiseri >() => { var y = this; } : () => void ->y : netscheri ->this : netscheri +>y : this +>this : this >x : nigra.caucasica, dogramacii.kaiseri> ruschii(): imperfecta.lasiurus> { var x: imperfecta.lasiurus>; () => { var y = this; }; return x; } @@ -12551,8 +12551,8 @@ module argurus { >petrophilus : any >minutilla : petrophilus.minutilla >() => { var y = this; } : () => void ->y : netscheri ->this : netscheri +>y : this +>this : this >x : imperfecta.lasiurus> tricuspidatus(): lavali.wilsoni { var x: lavali.wilsoni; () => { var y = this; }; return x; } @@ -12563,8 +12563,8 @@ module argurus { >lavali : any >wilsoni : lavali.wilsoni >() => { var y = this; } : () => void ->y : netscheri ->this : netscheri +>y : this +>this : this >x : lavali.wilsoni fernandezi(): dammermani.siberu, panglima.abidi> { var x: dammermani.siberu, panglima.abidi>; () => { var y = this; }; return x; } @@ -12599,8 +12599,8 @@ module argurus { >argurus : any >peninsulae : peninsulae >() => { var y = this; } : () => void ->y : netscheri ->this : netscheri +>y : this +>this : this >x : dammermani.siberu, panglima.abidi> colletti(): samarensis.pallidus { var x: samarensis.pallidus; () => { var y = this; }; return x; } @@ -12611,8 +12611,8 @@ module argurus { >samarensis : any >pallidus : samarensis.pallidus >() => { var y = this; } : () => void ->y : netscheri ->this : netscheri +>y : this +>this : this >x : samarensis.pallidus microbullatus(): lutreolus.schlegeli { var x: lutreolus.schlegeli; () => { var y = this; }; return x; } @@ -12623,8 +12623,8 @@ module argurus { >lutreolus : any >schlegeli : lutreolus.schlegeli >() => { var y = this; } : () => void ->y : netscheri ->this : netscheri +>y : this +>this : this >x : lutreolus.schlegeli eburneae(): chrysaeolus.sarasinorum { var x: chrysaeolus.sarasinorum; () => { var y = this; }; return x; } @@ -12643,8 +12643,8 @@ module argurus { >julianae : any >acariensis : julianae.acariensis >() => { var y = this; } : () => void ->y : netscheri ->this : netscheri +>y : this +>this : this >x : chrysaeolus.sarasinorum tatei(): argurus.pygmaea> { var x: argurus.pygmaea>; () => { var y = this; }; return x; } @@ -12671,8 +12671,8 @@ module argurus { >macrorhinos : any >daphaenodon : macrorhinos.daphaenodon >() => { var y = this; } : () => void ->y : netscheri ->this : netscheri +>y : this +>this : this >x : pygmaea> millardi(): sagitta.walkeri { var x: sagitta.walkeri; () => { var y = this; }; return x; } @@ -12683,8 +12683,8 @@ module argurus { >sagitta : any >walkeri : sagitta.walkeri >() => { var y = this; } : () => void ->y : netscheri ->this : netscheri +>y : this +>this : this >x : sagitta.walkeri pruinosus(): trivirgatus.falconeri { var x: trivirgatus.falconeri; () => { var y = this; }; return x; } @@ -12695,8 +12695,8 @@ module argurus { >trivirgatus : any >falconeri : trivirgatus.falconeri >() => { var y = this; } : () => void ->y : netscheri ->this : netscheri +>y : this +>this : this >x : trivirgatus.falconeri delator(): argurus.netscheri { var x: argurus.netscheri; () => { var y = this; }; return x; } @@ -12715,8 +12715,8 @@ module argurus { >lavali : any >lepturus : lavali.lepturus >() => { var y = this; } : () => void ->y : netscheri ->this : netscheri +>y : this +>this : this >x : netscheri nyikae(): trivirgatus.tumidifrons, petrophilus.minutilla>, julianae.acariensis> { var x: trivirgatus.tumidifrons, petrophilus.minutilla>, julianae.acariensis>; () => { var y = this; }; return x; } @@ -12751,8 +12751,8 @@ module argurus { >julianae : any >acariensis : julianae.acariensis >() => { var y = this; } : () => void ->y : netscheri ->this : netscheri +>y : this +>this : this >x : trivirgatus.tumidifrons, petrophilus.minutilla>, julianae.acariensis> ruemmleri(): panglima.amphibius, gabriellae.echinatus>, dogramacii.aurata>, imperfecta.ciliolabrum> { var x: panglima.amphibius, gabriellae.echinatus>, dogramacii.aurata>, imperfecta.ciliolabrum>; () => { var y = this; }; return x; } @@ -12803,8 +12803,8 @@ module argurus { >lavali : any >beisa : lavali.beisa >() => { var y = this; } : () => void ->y : netscheri ->this : netscheri +>y : this +>this : this >x : panglima.amphibius, gabriellae.echinatus>, dogramacii.aurata>, imperfecta.ciliolabrum> } } @@ -12855,8 +12855,8 @@ module ruatanica { >rionegrensis : any >caniventer : rionegrensis.caniventer >() => { var y = this; } : () => void ->y : Praseodymium ->this : Praseodymium +>y : this +>this : this >x : panglima.amphibius, argurus.dauricus> spectabilis(): petrophilus.sodyi { var x: petrophilus.sodyi; () => { var y = this; }; return x; } @@ -12875,8 +12875,8 @@ module ruatanica { >quasiater : any >carolinensis : quasiater.carolinensis >() => { var y = this; } : () => void ->y : Praseodymium ->this : Praseodymium +>y : this +>this : this >x : petrophilus.sodyi kamensis(): trivirgatus.lotor, lavali.lepturus> { var x: trivirgatus.lotor, lavali.lepturus>; () => { var y = this; }; return x; } @@ -12903,8 +12903,8 @@ module ruatanica { >lavali : any >lepturus : lavali.lepturus >() => { var y = this; } : () => void ->y : Praseodymium ->this : Praseodymium +>y : this +>this : this >x : trivirgatus.lotor, lavali.lepturus> ruddi(): lutreolus.foina { var x: lutreolus.foina; () => { var y = this; }; return x; } @@ -12915,8 +12915,8 @@ module ruatanica { >lutreolus : any >foina : lutreolus.foina >() => { var y = this; } : () => void ->y : Praseodymium ->this : Praseodymium +>y : this +>this : this >x : lutreolus.foina bartelsii(): julianae.sumatrana { var x: julianae.sumatrana; () => { var y = this; }; return x; } @@ -12927,8 +12927,8 @@ module ruatanica { >julianae : any >sumatrana : julianae.sumatrana >() => { var y = this; } : () => void ->y : Praseodymium ->this : Praseodymium +>y : this +>this : this >x : julianae.sumatrana yerbabuenae(): dammermani.siberu, imperfecta.ciliolabrum> { var x: dammermani.siberu, imperfecta.ciliolabrum>; () => { var y = this; }; return x; } @@ -12963,8 +12963,8 @@ module ruatanica { >petrophilus : any >minutilla : petrophilus.minutilla >() => { var y = this; } : () => void ->y : Praseodymium ->this : Praseodymium +>y : this +>this : this >x : dammermani.siberu, imperfecta.ciliolabrum> davidi(): trivirgatus.mixtus { var x: trivirgatus.mixtus; () => { var y = this; }; return x; } @@ -12983,8 +12983,8 @@ module ruatanica { >sagitta : any >stolzmanni : sagitta.stolzmanni >() => { var y = this; } : () => void ->y : Praseodymium ->this : Praseodymium +>y : this +>this : this >x : trivirgatus.mixtus pilirostris(): argurus.wetmorei>, sagitta.leptoceros>>, macrorhinos.konganensis> { var x: argurus.wetmorei>, sagitta.leptoceros>>, macrorhinos.konganensis>; () => { var y = this; }; return x; } @@ -13043,8 +13043,8 @@ module ruatanica { >macrorhinos : any >konganensis : macrorhinos.konganensis >() => { var y = this; } : () => void ->y : Praseodymium ->this : Praseodymium +>y : this +>this : this >x : argurus.wetmorei>, sagitta.leptoceros>>, macrorhinos.konganensis> catherinae(): imperfecta.lasiurus, petrophilus.sodyi> { var x: imperfecta.lasiurus, petrophilus.sodyi>; () => { var y = this; }; return x; } @@ -13079,8 +13079,8 @@ module ruatanica { >caurinus : any >psilurus : caurinus.psilurus >() => { var y = this; } : () => void ->y : Praseodymium ->this : Praseodymium +>y : this +>this : this >x : imperfecta.lasiurus, petrophilus.sodyi> frontata(): argurus.oreas { var x: argurus.oreas; () => { var y = this; }; return x; } @@ -13091,8 +13091,8 @@ module ruatanica { >argurus : any >oreas : argurus.oreas >() => { var y = this; } : () => void ->y : Praseodymium ->this : Praseodymium +>y : this +>this : this >x : argurus.oreas Terbium(): caurinus.mahaganus { var x: caurinus.mahaganus; () => { var y = this; }; return x; } @@ -13111,8 +13111,8 @@ module ruatanica { >argurus : any >luctuosa : argurus.luctuosa >() => { var y = this; } : () => void ->y : Praseodymium ->this : Praseodymium +>y : this +>this : this >x : caurinus.mahaganus thomensis(): minutus.inez> { var x: minutus.inez>; () => { var y = this; }; return x; } @@ -13139,8 +13139,8 @@ module ruatanica { >gabriellae : any >echinatus : gabriellae.echinatus >() => { var y = this; } : () => void ->y : Praseodymium ->this : Praseodymium +>y : this +>this : this >x : minutus.inez> soricinus(): quasiater.carolinensis { var x: quasiater.carolinensis; () => { var y = this; }; return x; } @@ -13151,8 +13151,8 @@ module ruatanica { >quasiater : any >carolinensis : quasiater.carolinensis >() => { var y = this; } : () => void ->y : Praseodymium ->this : Praseodymium +>y : this +>this : this >x : quasiater.carolinensis } } @@ -13183,8 +13183,8 @@ module caurinus { >julianae : any >acariensis : julianae.acariensis >() => { var y = this; } : () => void ->y : johorensis ->this : johorensis +>y : this +>this : this >x : ruatanica.Praseodymium } } @@ -13234,8 +13234,8 @@ module argurus { >lutreolus : any >punicus : lutreolus.punicus >() => { var y = this; } : () => void ->y : luctuosa ->this : luctuosa +>y : this +>this : this >x : rendalli.moojeni, gabriellae.echinatus>, sagitta.stolzmanni>, lutreolus.punicus> } } @@ -13271,8 +13271,8 @@ module panamensis { >dogramacii : any >aurata : dogramacii.aurata >() => { var y = this; } : () => void ->y : setulosus ->this : setulosus +>y : this +>this : this >x : caurinus.mahaganus, dogramacii.aurata> guereza(): howi.coludo { var x: howi.coludo; () => { var y = this; }; return x; } @@ -13291,8 +13291,8 @@ module panamensis { >quasiater : any >carolinensis : quasiater.carolinensis >() => { var y = this; } : () => void ->y : setulosus ->this : setulosus +>y : this +>this : this >x : howi.coludo buselaphus(): daubentonii.nesiotes, dogramacii.koepckeae>, trivirgatus.mixtus> { var x: daubentonii.nesiotes, dogramacii.koepckeae>, trivirgatus.mixtus>; () => { var y = this; }; return x; } @@ -13335,8 +13335,8 @@ module panamensis { >lutreolus : any >punicus : lutreolus.punicus >() => { var y = this; } : () => void ->y : setulosus ->this : setulosus +>y : this +>this : this >x : daubentonii.nesiotes, dogramacii.koepckeae>, trivirgatus.mixtus> nuttalli(): sagitta.cinereus, chrysaeolus.sarasinorum> { var x: sagitta.cinereus, chrysaeolus.sarasinorum>; () => { var y = this; }; return x; } @@ -13371,8 +13371,8 @@ module panamensis { >lavali : any >xanthognathus : lavali.xanthognathus >() => { var y = this; } : () => void ->y : setulosus ->this : setulosus +>y : this +>this : this >x : sagitta.cinereus, chrysaeolus.sarasinorum> pelii(): rendalli.crenulata, julianae.steerii> { var x: rendalli.crenulata, julianae.steerii>; () => { var y = this; }; return x; } @@ -13399,8 +13399,8 @@ module panamensis { >julianae : any >steerii : julianae.steerii >() => { var y = this; } : () => void ->y : setulosus ->this : setulosus +>y : this +>this : this >x : rendalli.crenulata, julianae.steerii> tunneyi(): sagitta.stolzmanni { var x: sagitta.stolzmanni; () => { var y = this; }; return x; } @@ -13411,8 +13411,8 @@ module panamensis { >sagitta : any >stolzmanni : sagitta.stolzmanni >() => { var y = this; } : () => void ->y : setulosus ->this : setulosus +>y : this +>this : this >x : sagitta.stolzmanni lamula(): patas.uralensis { var x: patas.uralensis; () => { var y = this; }; return x; } @@ -13423,8 +13423,8 @@ module panamensis { >patas : any >uralensis : patas.uralensis >() => { var y = this; } : () => void ->y : setulosus ->this : setulosus +>y : this +>this : this >x : patas.uralensis vampyrus(): julianae.oralis { var x: julianae.oralis; () => { var y = this; }; return x; } @@ -13443,8 +13443,8 @@ module panamensis { >provocax : any >melanoleuca : provocax.melanoleuca >() => { var y = this; } : () => void ->y : setulosus ->this : setulosus +>y : this +>this : this >x : julianae.oralis } } @@ -13512,8 +13512,8 @@ module petrophilus { >quasiater : any >carolinensis : quasiater.carolinensis >() => { var y = this; } : () => void ->y : rosalia ->this : rosalia +>y : this +>this : this >x : panglima.amphibius>, trivirgatus.mixtus, panglima.amphibius>> baeops(): Lanthanum.nitidus { var x: Lanthanum.nitidus; () => { var y = this; }; return x; } @@ -13532,8 +13532,8 @@ module petrophilus { >lavali : any >lepturus : lavali.lepturus >() => { var y = this; } : () => void ->y : rosalia ->this : rosalia +>y : this +>this : this >x : Lanthanum.nitidus ozensis(): imperfecta.lasiurus, lutreolus.foina> { var x: imperfecta.lasiurus, lutreolus.foina>; () => { var y = this; }; return x; } @@ -13560,8 +13560,8 @@ module petrophilus { >lutreolus : any >foina : lutreolus.foina >() => { var y = this; } : () => void ->y : rosalia ->this : rosalia +>y : this +>this : this >x : imperfecta.lasiurus, lutreolus.foina> creaghi(): argurus.luctuosa { var x: argurus.luctuosa; () => { var y = this; }; return x; } @@ -13572,8 +13572,8 @@ module petrophilus { >argurus : any >luctuosa : argurus.luctuosa >() => { var y = this; } : () => void ->y : rosalia ->this : rosalia +>y : this +>this : this >x : argurus.luctuosa montivaga(): panamensis.setulosus> { var x: panamensis.setulosus>; () => { var y = this; }; return x; } @@ -13600,8 +13600,8 @@ module petrophilus { >caurinus : any >megaphyllus : caurinus.megaphyllus >() => { var y = this; } : () => void ->y : rosalia ->this : rosalia +>y : this +>this : this >x : panamensis.setulosus> } } @@ -13630,8 +13630,8 @@ module caurinus { >caurinus : any >psilurus : psilurus >() => { var y = this; } : () => void ->y : psilurus ->this : psilurus +>y : this +>this : this >x : panglima.amphibius lundi(): petrophilus.sodyi { var x: petrophilus.sodyi; () => { var y = this; }; return x; } @@ -13650,8 +13650,8 @@ module caurinus { >quasiater : any >bobrinskoi : quasiater.bobrinskoi >() => { var y = this; } : () => void ->y : psilurus ->this : psilurus +>y : this +>this : this >x : petrophilus.sodyi araeum(): imperfecta.ciliolabrum { var x: imperfecta.ciliolabrum; () => { var y = this; }; return x; } @@ -13670,8 +13670,8 @@ module caurinus { >lavali : any >beisa : lavali.beisa >() => { var y = this; } : () => void ->y : psilurus ->this : psilurus +>y : this +>this : this >x : imperfecta.ciliolabrum calamianensis(): julianae.gerbillus { var x: julianae.gerbillus; () => { var y = this; }; return x; } @@ -13690,8 +13690,8 @@ module caurinus { >quasiater : any >carolinensis : quasiater.carolinensis >() => { var y = this; } : () => void ->y : psilurus ->this : psilurus +>y : this +>this : this >x : julianae.gerbillus petersoni(): panamensis.setulosus { var x: panamensis.setulosus; () => { var y = this; }; return x; } @@ -13710,8 +13710,8 @@ module caurinus { >dogramacii : any >robustulus : dogramacii.robustulus >() => { var y = this; } : () => void ->y : psilurus ->this : psilurus +>y : this +>this : this >x : panamensis.setulosus nitela(): panamensis.linulus { var x: panamensis.linulus; () => { var y = this; }; return x; } @@ -13730,8 +13730,8 @@ module caurinus { >howi : any >marcanoi : howi.marcanoi >() => { var y = this; } : () => void ->y : psilurus ->this : psilurus +>y : this +>this : this >x : panamensis.linulus } } diff --git a/tests/baselines/reference/reuseInnerModuleMember.js b/tests/baselines/reference/reuseInnerModuleMember.js index 8999ccea633..a15ec5e39a2 100644 --- a/tests/baselines/reference/reuseInnerModuleMember.js +++ b/tests/baselines/reference/reuseInnerModuleMember.js @@ -9,7 +9,7 @@ declare module bar { interface alpha { } } -import f = require('reuseInnerModuleMember_0'); +import f = require('./reuseInnerModuleMember_0'); module bar { var x: alpha; } diff --git a/tests/baselines/reference/reuseInnerModuleMember.symbols b/tests/baselines/reference/reuseInnerModuleMember.symbols index 27301f1256b..5dbd830293f 100644 --- a/tests/baselines/reference/reuseInnerModuleMember.symbols +++ b/tests/baselines/reference/reuseInnerModuleMember.symbols @@ -1,17 +1,17 @@ === tests/cases/compiler/reuseInnerModuleMember_1.ts === /// declare module bar { ->bar : Symbol(bar, Decl(reuseInnerModuleMember_1.ts, 0, 0), Decl(reuseInnerModuleMember_1.ts, 5, 47)) +>bar : Symbol(bar, Decl(reuseInnerModuleMember_1.ts, 0, 0), Decl(reuseInnerModuleMember_1.ts, 5, 49)) interface alpha { } >alpha : Symbol(alpha, Decl(reuseInnerModuleMember_1.ts, 1, 20)) } -import f = require('reuseInnerModuleMember_0'); +import f = require('./reuseInnerModuleMember_0'); >f : Symbol(f, Decl(reuseInnerModuleMember_1.ts, 3, 1)) module bar { ->bar : Symbol(bar, Decl(reuseInnerModuleMember_1.ts, 0, 0), Decl(reuseInnerModuleMember_1.ts, 5, 47)) +>bar : Symbol(bar, Decl(reuseInnerModuleMember_1.ts, 0, 0), Decl(reuseInnerModuleMember_1.ts, 5, 49)) var x: alpha; >x : Symbol(x, Decl(reuseInnerModuleMember_1.ts, 7, 7)) diff --git a/tests/baselines/reference/reuseInnerModuleMember.types b/tests/baselines/reference/reuseInnerModuleMember.types index d42e071e16b..433da749b49 100644 --- a/tests/baselines/reference/reuseInnerModuleMember.types +++ b/tests/baselines/reference/reuseInnerModuleMember.types @@ -7,7 +7,7 @@ declare module bar { >alpha : alpha } -import f = require('reuseInnerModuleMember_0'); +import f = require('./reuseInnerModuleMember_0'); >f : typeof f module bar { diff --git a/tests/baselines/reference/scopeResolutionIdentifiers.types b/tests/baselines/reference/scopeResolutionIdentifiers.types index 37fa897863d..7c4eae23813 100644 --- a/tests/baselines/reference/scopeResolutionIdentifiers.types +++ b/tests/baselines/reference/scopeResolutionIdentifiers.types @@ -56,7 +56,7 @@ class C { n = this.s; >n : Date >this.s : Date ->this : C +>this : this >s : Date x() { @@ -65,7 +65,7 @@ class C { var p = this.n; >p : Date >this.n : Date ->this : C +>this : this >n : Date var p: Date; diff --git a/tests/baselines/reference/selfInCallback.types b/tests/baselines/reference/selfInCallback.types index 0f9b0f3a671..6010a64d80f 100644 --- a/tests/baselines/reference/selfInCallback.types +++ b/tests/baselines/reference/selfInCallback.types @@ -18,12 +18,12 @@ class C { this.callback(()=>{this.p1+1}); >this.callback(()=>{this.p1+1}) : void >this.callback : (cb: () => void) => void ->this : C +>this : this >callback : (cb: () => void) => void >()=>{this.p1+1} : () => void >this.p1+1 : number >this.p1 : number ->this : C +>this : this >p1 : number >1 : number } diff --git a/tests/baselines/reference/selfInLambdas.types b/tests/baselines/reference/selfInLambdas.types index e8905432e75..3addf07c75a 100644 --- a/tests/baselines/reference/selfInLambdas.types +++ b/tests/baselines/reference/selfInLambdas.types @@ -79,7 +79,7 @@ class X { var x = this.value; >x : string >this.value : string ->this : X +>this : this >value : string var inner = () => { @@ -89,7 +89,7 @@ class X { var y = this.value; >y : string >this.value : string ->this : X +>this : this >value : string } diff --git a/tests/baselines/reference/sourceMap-FileWithComments.types b/tests/baselines/reference/sourceMap-FileWithComments.types index f6b87c2e4c4..6f9ca201085 100644 --- a/tests/baselines/reference/sourceMap-FileWithComments.types +++ b/tests/baselines/reference/sourceMap-FileWithComments.types @@ -32,17 +32,17 @@ module Shapes { >this.x * this.x + this.y * this.y : number >this.x * this.x : number >this.x : number ->this : Point +>this : this >x : number >this.x : number ->this : Point +>this : this >x : number >this.y * this.y : number >this.y : number ->this : Point +>this : this >y : number >this.y : number ->this : Point +>this : this >y : number // Static member diff --git a/tests/baselines/reference/sourceMapValidationClass.types b/tests/baselines/reference/sourceMapValidationClass.types index e3b30a37227..3e5234b0d6e 100644 --- a/tests/baselines/reference/sourceMapValidationClass.types +++ b/tests/baselines/reference/sourceMapValidationClass.types @@ -14,7 +14,7 @@ class Greeter { >"

" + this.greeting : string >"

" : string >this.greeting : string ->this : Greeter +>this : this >greeting : string >"

" : string } @@ -30,7 +30,7 @@ class Greeter { return this.greeting; >this.greeting : string ->this : Greeter +>this : this >greeting : string } get greetings() { @@ -38,7 +38,7 @@ class Greeter { return this.greeting; >this.greeting : string ->this : Greeter +>this : this >greeting : string } set greetings(greetings: string) { @@ -48,7 +48,7 @@ class Greeter { this.greeting = greetings; >this.greeting = greetings : string >this.greeting : string ->this : Greeter +>this : this >greeting : string >greetings : string } diff --git a/tests/baselines/reference/sourceMapValidationClassWithDefaultConstructorAndCapturedThisStatement.types b/tests/baselines/reference/sourceMapValidationClassWithDefaultConstructorAndCapturedThisStatement.types index 266fe496193..a20410aa842 100644 --- a/tests/baselines/reference/sourceMapValidationClassWithDefaultConstructorAndCapturedThisStatement.types +++ b/tests/baselines/reference/sourceMapValidationClassWithDefaultConstructorAndCapturedThisStatement.types @@ -10,6 +10,6 @@ class Greeter { >returnA : () => number >() => this.a : () => number >this.a : number ->this : Greeter +>this : this >a : number } diff --git a/tests/baselines/reference/sourceMapValidationClasses.types b/tests/baselines/reference/sourceMapValidationClasses.types index 97e168d4701..5b3512c06c1 100644 --- a/tests/baselines/reference/sourceMapValidationClasses.types +++ b/tests/baselines/reference/sourceMapValidationClasses.types @@ -21,7 +21,7 @@ module Foo.Bar { >"

" + this.greeting : string >"

" : string >this.greeting : string ->this : Greeter +>this : this >greeting : string >"

" : string } diff --git a/tests/baselines/reference/sourceMapValidationDecorators.types b/tests/baselines/reference/sourceMapValidationDecorators.types index 9e83bb03509..2fc05972307 100644 --- a/tests/baselines/reference/sourceMapValidationDecorators.types +++ b/tests/baselines/reference/sourceMapValidationDecorators.types @@ -93,7 +93,7 @@ class Greeter { >"

" + this.greeting : string >"

" : string >this.greeting : string ->this : Greeter +>this : this >greeting : string >"

" : string } @@ -137,7 +137,7 @@ class Greeter { return this.greeting; >this.greeting : string ->this : Greeter +>this : this >greeting : string } @@ -154,7 +154,7 @@ class Greeter { return this.greeting; >this.greeting : string ->this : Greeter +>this : this >greeting : string } @@ -175,7 +175,7 @@ class Greeter { this.greeting = greetings; >this.greeting = greetings : string >this.greeting : string ->this : Greeter +>this : this >greeting : string >greetings : string } diff --git a/tests/baselines/reference/staticInstanceResolution.symbols b/tests/baselines/reference/staticInstanceResolution.symbols index 69d1894679f..1b58989347d 100644 --- a/tests/baselines/reference/staticInstanceResolution.symbols +++ b/tests/baselines/reference/staticInstanceResolution.symbols @@ -14,17 +14,17 @@ class Comment { >Comment : Symbol(Comment, Decl(staticInstanceResolution.ts, 0, 0)) { comments[0].getDocCommentText(); ->comments[0].getDocCommentText : Symbol(getDocCommentText, Decl(staticInstanceResolution.ts, 0, 15)) +>comments[0].getDocCommentText : Symbol(Comment.getDocCommentText, Decl(staticInstanceResolution.ts, 0, 15)) >comments : Symbol(comments, Decl(staticInstanceResolution.ts, 7, 29)) ->getDocCommentText : Symbol(getDocCommentText, Decl(staticInstanceResolution.ts, 0, 15)) +>getDocCommentText : Symbol(Comment.getDocCommentText, Decl(staticInstanceResolution.ts, 0, 15)) var c: Comment; >c : Symbol(c, Decl(staticInstanceResolution.ts, 10, 11)) >Comment : Symbol(Comment, Decl(staticInstanceResolution.ts, 0, 0)) c.getDocCommentText(); ->c.getDocCommentText : Symbol(getDocCommentText, Decl(staticInstanceResolution.ts, 0, 15)) +>c.getDocCommentText : Symbol(Comment.getDocCommentText, Decl(staticInstanceResolution.ts, 0, 15)) >c : Symbol(c, Decl(staticInstanceResolution.ts, 10, 11)) ->getDocCommentText : Symbol(getDocCommentText, Decl(staticInstanceResolution.ts, 0, 15)) +>getDocCommentText : Symbol(Comment.getDocCommentText, Decl(staticInstanceResolution.ts, 0, 15)) } } diff --git a/tests/baselines/reference/staticInstanceResolution3.js b/tests/baselines/reference/staticInstanceResolution3.js index 92a4e6522c7..0a41cd77909 100644 --- a/tests/baselines/reference/staticInstanceResolution3.js +++ b/tests/baselines/reference/staticInstanceResolution3.js @@ -9,7 +9,7 @@ export class Promise { //// [staticInstanceResolution3_1.ts] /// -import WinJS = require('staticInstanceResolution3_0'); +import WinJS = require('./staticInstanceResolution3_0'); WinJS.Promise.timeout(10); //// [staticInstanceResolution3_0.js] @@ -24,5 +24,5 @@ var Promise = (function () { exports.Promise = Promise; //// [staticInstanceResolution3_1.js] /// -var WinJS = require('staticInstanceResolution3_0'); +var WinJS = require('./staticInstanceResolution3_0'); WinJS.Promise.timeout(10); diff --git a/tests/baselines/reference/staticInstanceResolution3.symbols b/tests/baselines/reference/staticInstanceResolution3.symbols index 8d4fecbaab2..f1afeecd34e 100644 --- a/tests/baselines/reference/staticInstanceResolution3.symbols +++ b/tests/baselines/reference/staticInstanceResolution3.symbols @@ -1,6 +1,6 @@ === tests/cases/compiler/staticInstanceResolution3_1.ts === /// -import WinJS = require('staticInstanceResolution3_0'); +import WinJS = require('./staticInstanceResolution3_0'); >WinJS : Symbol(WinJS, Decl(staticInstanceResolution3_1.ts, 0, 0)) WinJS.Promise.timeout(10); diff --git a/tests/baselines/reference/staticInstanceResolution3.types b/tests/baselines/reference/staticInstanceResolution3.types index ef5c1cc5166..fe50c659f6d 100644 --- a/tests/baselines/reference/staticInstanceResolution3.types +++ b/tests/baselines/reference/staticInstanceResolution3.types @@ -1,6 +1,6 @@ === tests/cases/compiler/staticInstanceResolution3_1.ts === /// -import WinJS = require('staticInstanceResolution3_0'); +import WinJS = require('./staticInstanceResolution3_0'); >WinJS : typeof WinJS WinJS.Promise.timeout(10); diff --git a/tests/baselines/reference/stringIncludes.symbols b/tests/baselines/reference/stringIncludes.symbols index 0ca53dbb837..1348b62e566 100644 --- a/tests/baselines/reference/stringIncludes.symbols +++ b/tests/baselines/reference/stringIncludes.symbols @@ -5,11 +5,11 @@ var includes: boolean; includes = "abcde".includes("cd"); >includes : Symbol(includes, Decl(stringIncludes.ts, 1, 3)) ->"abcde".includes : Symbol(String.includes, Decl(lib.d.ts, 4222, 37)) ->includes : Symbol(String.includes, Decl(lib.d.ts, 4222, 37)) +>"abcde".includes : Symbol(String.includes, Decl(lib.d.ts, 4249, 37)) +>includes : Symbol(String.includes, Decl(lib.d.ts, 4249, 37)) includes = "abcde".includes("cd", 2); >includes : Symbol(includes, Decl(stringIncludes.ts, 1, 3)) ->"abcde".includes : Symbol(String.includes, Decl(lib.d.ts, 4222, 37)) ->includes : Symbol(String.includes, Decl(lib.d.ts, 4222, 37)) +>"abcde".includes : Symbol(String.includes, Decl(lib.d.ts, 4249, 37)) +>includes : Symbol(String.includes, Decl(lib.d.ts, 4249, 37)) diff --git a/tests/baselines/reference/superAccessInFatArrow1.types b/tests/baselines/reference/superAccessInFatArrow1.types index 0c50015c051..95f0d769655 100644 --- a/tests/baselines/reference/superAccessInFatArrow1.types +++ b/tests/baselines/reference/superAccessInFatArrow1.types @@ -23,7 +23,7 @@ module test { this.bar(() => { >this.bar(() => { super.foo(); }) : void >this.bar : (callback: () => void) => void ->this : B +>this : this >bar : (callback: () => void) => void >() => { super.foo(); } : () => void diff --git a/tests/baselines/reference/systemModule1.errors.txt b/tests/baselines/reference/systemModule1.errors.txt deleted file mode 100644 index 18b64607455..00000000000 --- a/tests/baselines/reference/systemModule1.errors.txt +++ /dev/null @@ -1,7 +0,0 @@ -error TS1204: Cannot compile modules into 'commonjs', 'amd', 'system' or 'umd' when targeting 'ES6' or higher. - - -!!! error TS1204: Cannot compile modules into 'commonjs', 'amd', 'system' or 'umd' when targeting 'ES6' or higher. -==== tests/cases/compiler/systemModule1.ts (0 errors) ==== - - export var x = 1; \ No newline at end of file diff --git a/tests/baselines/reference/systemModule1.js b/tests/baselines/reference/systemModule1.js index 9731106471c..573a7ae04c8 100644 --- a/tests/baselines/reference/systemModule1.js +++ b/tests/baselines/reference/systemModule1.js @@ -3,4 +3,12 @@ export var x = 1; //// [systemModule1.js] -export var x = 1; +System.register([], function(exports_1) { + var x; + return { + setters:[], + execute: function() { + x = 1; + } + } +}); diff --git a/tests/baselines/reference/systemModule1.symbols b/tests/baselines/reference/systemModule1.symbols new file mode 100644 index 00000000000..d6293c21fd9 --- /dev/null +++ b/tests/baselines/reference/systemModule1.symbols @@ -0,0 +1,5 @@ +=== tests/cases/compiler/systemModule1.ts === + +export var x = 1; +>x : Symbol(x, Decl(systemModule1.ts, 1, 10)) + diff --git a/tests/baselines/reference/systemModule1.types b/tests/baselines/reference/systemModule1.types new file mode 100644 index 00000000000..2adf73d116f --- /dev/null +++ b/tests/baselines/reference/systemModule1.types @@ -0,0 +1,6 @@ +=== tests/cases/compiler/systemModule1.ts === + +export var x = 1; +>x : number +>1 : number + diff --git a/tests/baselines/reference/systemModule17.js b/tests/baselines/reference/systemModule17.js new file mode 100644 index 00000000000..90efdc8872a --- /dev/null +++ b/tests/baselines/reference/systemModule17.js @@ -0,0 +1,84 @@ +//// [tests/cases/compiler/systemModule17.ts] //// + +//// [f1.ts] + + +export class A {} +export interface I {} + +//// [f2.ts] + +var x = 1; +interface I { } + +namespace N { + export var x = 1; + export interface I { } +} + +import IX = N.x; +import II = N.I; +import { A, A as EA, I as EI } from "f1"; + +export {x}; +export {x as x1}; + +export {I}; +export {I as I1}; + +export {A}; +export {A as A1}; + +export {EA}; +export {EA as EA1}; + +export {EI }; +export {EI as EI1}; + +export {IX}; +export {IX as IX1}; + +export {II}; +export {II as II1}; + +//// [f1.js] +System.register([], function(exports_1) { + var A; + return { + setters:[], + execute: function() { + A = (function () { + function A() { + } + return A; + })(); + exports_1("A", A); + } + } +}); +//// [f2.js] +System.register(["f1"], function(exports_1) { + var f1_1; + var x, N, IX; + return { + setters:[ + function (f1_1_1) { + f1_1 = f1_1_1; + }], + execute: function() { + x = 1; + (function (N) { + N.x = 1; + })(N || (N = {})); + IX = N.x; + exports_1("x", x); + exports_1("x1", x); + exports_1("A", f1_1.A); + exports_1("A1", f1_1.A); + exports_1("EA", f1_1.A); + exports_1("EA1", f1_1.A); + exports_1("IX", IX); + exports_1("IX1", IX); + } + } +}); diff --git a/tests/baselines/reference/systemModule17.symbols b/tests/baselines/reference/systemModule17.symbols new file mode 100644 index 00000000000..3bf19dad950 --- /dev/null +++ b/tests/baselines/reference/systemModule17.symbols @@ -0,0 +1,93 @@ +=== tests/cases/compiler/f1.ts === + + +export class A {} +>A : Symbol(A, Decl(f1.ts, 0, 0)) + +export interface I {} +>I : Symbol(I, Decl(f1.ts, 2, 17)) + +=== tests/cases/compiler/f2.ts === + +var x = 1; +>x : Symbol(x, Decl(f2.ts, 1, 3)) + +interface I { } +>I : Symbol(I, Decl(f2.ts, 1, 10)) + +namespace N { +>N : Symbol(N, Decl(f2.ts, 2, 15)) + + export var x = 1; +>x : Symbol(x, Decl(f2.ts, 5, 11)) + + export interface I { } +>I : Symbol(I, Decl(f2.ts, 5, 18)) +} + +import IX = N.x; +>IX : Symbol(IX, Decl(f2.ts, 7, 1)) +>N : Symbol(N, Decl(f2.ts, 2, 15)) +>x : Symbol(IX, Decl(f2.ts, 5, 11)) + +import II = N.I; +>II : Symbol(II, Decl(f2.ts, 9, 16)) +>N : Symbol(N, Decl(f2.ts, 2, 15)) +>I : Symbol(II, Decl(f2.ts, 5, 18)) + +import { A, A as EA, I as EI } from "f1"; +>A : Symbol(A, Decl(f2.ts, 11, 8)) +>A : Symbol(EA, Decl(f2.ts, 11, 11)) +>EA : Symbol(EA, Decl(f2.ts, 11, 11)) +>I : Symbol(EI, Decl(f2.ts, 11, 20)) +>EI : Symbol(EI, Decl(f2.ts, 11, 20)) + +export {x}; +>x : Symbol(x, Decl(f2.ts, 13, 8)) + +export {x as x1}; +>x : Symbol(x1, Decl(f2.ts, 14, 8)) +>x1 : Symbol(x1, Decl(f2.ts, 14, 8)) + +export {I}; +>I : Symbol(I, Decl(f2.ts, 16, 8)) + +export {I as I1}; +>I : Symbol(I1, Decl(f2.ts, 17, 8)) +>I1 : Symbol(I1, Decl(f2.ts, 17, 8)) + +export {A}; +>A : Symbol(A, Decl(f2.ts, 19, 8)) + +export {A as A1}; +>A : Symbol(A1, Decl(f2.ts, 20, 8)) +>A1 : Symbol(A1, Decl(f2.ts, 20, 8)) + +export {EA}; +>EA : Symbol(EA, Decl(f2.ts, 22, 8)) + +export {EA as EA1}; +>EA : Symbol(EA1, Decl(f2.ts, 23, 8)) +>EA1 : Symbol(EA1, Decl(f2.ts, 23, 8)) + +export {EI }; +>EI : Symbol(EI, Decl(f2.ts, 25, 8)) + +export {EI as EI1}; +>EI : Symbol(EI1, Decl(f2.ts, 26, 8)) +>EI1 : Symbol(EI1, Decl(f2.ts, 26, 8)) + +export {IX}; +>IX : Symbol(IX, Decl(f2.ts, 28, 8)) + +export {IX as IX1}; +>IX : Symbol(IX1, Decl(f2.ts, 29, 8)) +>IX1 : Symbol(IX1, Decl(f2.ts, 29, 8)) + +export {II}; +>II : Symbol(II, Decl(f2.ts, 31, 8)) + +export {II as II1}; +>II : Symbol(II1, Decl(f2.ts, 32, 8)) +>II1 : Symbol(II1, Decl(f2.ts, 32, 8)) + diff --git a/tests/baselines/reference/systemModule17.types b/tests/baselines/reference/systemModule17.types new file mode 100644 index 00000000000..1f0b1b51842 --- /dev/null +++ b/tests/baselines/reference/systemModule17.types @@ -0,0 +1,95 @@ +=== tests/cases/compiler/f1.ts === + + +export class A {} +>A : A + +export interface I {} +>I : I + +=== tests/cases/compiler/f2.ts === + +var x = 1; +>x : number +>1 : number + +interface I { } +>I : I + +namespace N { +>N : typeof N + + export var x = 1; +>x : number +>1 : number + + export interface I { } +>I : I +} + +import IX = N.x; +>IX : number +>N : typeof N +>x : number + +import II = N.I; +>II : any +>N : typeof N +>I : II + +import { A, A as EA, I as EI } from "f1"; +>A : typeof A +>A : typeof A +>EA : typeof A +>I : any +>EI : any + +export {x}; +>x : number + +export {x as x1}; +>x : number +>x1 : number + +export {I}; +>I : any + +export {I as I1}; +>I : any +>I1 : any + +export {A}; +>A : typeof A + +export {A as A1}; +>A : typeof A +>A1 : typeof A + +export {EA}; +>EA : typeof A + +export {EA as EA1}; +>EA : typeof A +>EA1 : typeof A + +export {EI }; +>EI : any + +export {EI as EI1}; +>EI : any +>EI1 : any + +export {IX}; +>IX : number + +export {IX as IX1}; +>IX : number +>IX1 : number + +export {II}; +>II : any + +export {II as II1}; +>II : any +>II1 : any + diff --git a/tests/baselines/reference/templateStringWithEmbeddedNewOperatorES6.symbols b/tests/baselines/reference/templateStringWithEmbeddedNewOperatorES6.symbols index 42a865e4e28..9d8b6024e0c 100644 --- a/tests/baselines/reference/templateStringWithEmbeddedNewOperatorES6.symbols +++ b/tests/baselines/reference/templateStringWithEmbeddedNewOperatorES6.symbols @@ -1,5 +1,5 @@ === tests/cases/conformance/es6/templates/templateStringWithEmbeddedNewOperatorES6.ts === var x = `abc${ new String("Hi") }def`; >x : Symbol(x, Decl(templateStringWithEmbeddedNewOperatorES6.ts, 0, 3)) ->String : Symbol(String, Decl(lib.d.ts, 275, 1), Decl(lib.d.ts, 443, 11), Decl(lib.d.ts, 4209, 1)) +>String : Symbol(String, Decl(lib.d.ts, 275, 1), Decl(lib.d.ts, 443, 11), Decl(lib.d.ts, 4236, 1)) diff --git a/tests/baselines/reference/thisBinding2.types b/tests/baselines/reference/thisBinding2.types index 5b6b5213524..99668ca4901 100644 --- a/tests/baselines/reference/thisBinding2.types +++ b/tests/baselines/reference/thisBinding2.types @@ -9,7 +9,7 @@ class C { this.x = (() => { >this.x = (() => { var x = 1; return this.x; })() : number >this.x : number ->this : C +>this : this >x : number >(() => { var x = 1; return this.x; })() : number >(() => { var x = 1; return this.x; }) : () => number @@ -21,14 +21,14 @@ class C { return this.x; >this.x : number ->this : C +>this : this >x : number })(); this.x = function() { >this.x = function() { var x = 1; return this.x; }() : any >this.x : number ->this : C +>this : this >x : number >function() { var x = 1; return this.x; }() : any >function() { var x = 1; return this.x; } : () => any diff --git a/tests/baselines/reference/thisCapture1.types b/tests/baselines/reference/thisCapture1.types index 05eabf5c914..eb4501203ca 100644 --- a/tests/baselines/reference/thisCapture1.types +++ b/tests/baselines/reference/thisCapture1.types @@ -25,7 +25,7 @@ class X { this.y = 0; >this.y = 0 : number >this.y : number ->this : X +>this : this >y : number >0 : number diff --git a/tests/baselines/reference/thisExpressionOfGenericObject.types b/tests/baselines/reference/thisExpressionOfGenericObject.types index 0a8e147f073..f7031d6cf80 100644 --- a/tests/baselines/reference/thisExpressionOfGenericObject.types +++ b/tests/baselines/reference/thisExpressionOfGenericObject.types @@ -9,8 +9,8 @@ class MyClass1 { constructor() { () => this; ->() => this : () => MyClass1 ->this : MyClass1 +>() => this : () => this +>this : this } } diff --git a/tests/baselines/reference/thisInInstanceMemberInitializer.types b/tests/baselines/reference/thisInInstanceMemberInitializer.types index 9c64929ca89..c7fcc69d006 100644 --- a/tests/baselines/reference/thisInInstanceMemberInitializer.types +++ b/tests/baselines/reference/thisInInstanceMemberInitializer.types @@ -3,8 +3,8 @@ class C { >C : C x = this; ->x : C ->this : C +>x : this +>this : this } class D { @@ -12,8 +12,8 @@ class D { >T : T x = this; ->x : D ->this : D +>x : this +>this : this y: T; >y : T diff --git a/tests/baselines/reference/thisInInvalidContexts.errors.txt b/tests/baselines/reference/thisInInvalidContexts.errors.txt index d6f24cbcfdc..76b90ed7c20 100644 --- a/tests/baselines/reference/thisInInvalidContexts.errors.txt +++ b/tests/baselines/reference/thisInInvalidContexts.errors.txt @@ -1,12 +1,13 @@ tests/cases/conformance/expressions/thisKeyword/thisInInvalidContexts.ts(3,16): error TS2334: 'this' cannot be referenced in a static property initializer. tests/cases/conformance/expressions/thisKeyword/thisInInvalidContexts.ts(22,15): error TS2332: 'this' cannot be referenced in current location. tests/cases/conformance/expressions/thisKeyword/thisInInvalidContexts.ts(28,13): error TS2331: 'this' cannot be referenced in a module or namespace body. +tests/cases/conformance/expressions/thisKeyword/thisInInvalidContexts.ts(36,13): error TS2526: A 'this' type is available only in a non-static member of a class or interface. tests/cases/conformance/expressions/thisKeyword/thisInInvalidContexts.ts(38,25): error TS2507: Type 'any' is not a constructor function type. tests/cases/conformance/expressions/thisKeyword/thisInInvalidContexts.ts(44,9): error TS2332: 'this' cannot be referenced in current location. tests/cases/conformance/expressions/thisKeyword/thisInInvalidContexts.ts(45,9): error TS2332: 'this' cannot be referenced in current location. -==== tests/cases/conformance/expressions/thisKeyword/thisInInvalidContexts.ts (6 errors) ==== +==== tests/cases/conformance/expressions/thisKeyword/thisInInvalidContexts.ts (7 errors) ==== //'this' in static member initializer class ErrClass1 { static t = this; // Error @@ -49,6 +50,8 @@ tests/cases/conformance/expressions/thisKeyword/thisInInvalidContexts.ts(45,9): //'this' as a type argument function genericFunc(x: T) { } genericFunc(undefined); // Should be an error + ~~~~ +!!! error TS2526: A 'this' type is available only in a non-static member of a class or interface. class ErrClass3 extends this { ~~~~ diff --git a/tests/baselines/reference/thisInInvalidContexts.js b/tests/baselines/reference/thisInInvalidContexts.js index 84b96404683..d5ba69ff536 100644 --- a/tests/baselines/reference/thisInInvalidContexts.js +++ b/tests/baselines/reference/thisInInvalidContexts.js @@ -92,7 +92,7 @@ var M; // function fn() { } // Error //'this' as a type argument function genericFunc(x) { } -genericFunc < this > (undefined); // Should be an error +genericFunc(undefined); // Should be an error var ErrClass3 = (function (_super) { __extends(ErrClass3, _super); function ErrClass3() { diff --git a/tests/baselines/reference/thisInInvalidContextsExternalModule.errors.txt b/tests/baselines/reference/thisInInvalidContextsExternalModule.errors.txt index df47901d771..2aa474d4cdc 100644 --- a/tests/baselines/reference/thisInInvalidContextsExternalModule.errors.txt +++ b/tests/baselines/reference/thisInInvalidContextsExternalModule.errors.txt @@ -1,13 +1,14 @@ tests/cases/conformance/expressions/thisKeyword/thisInInvalidContextsExternalModule.ts(3,16): error TS2334: 'this' cannot be referenced in a static property initializer. tests/cases/conformance/expressions/thisKeyword/thisInInvalidContextsExternalModule.ts(22,15): error TS2332: 'this' cannot be referenced in current location. tests/cases/conformance/expressions/thisKeyword/thisInInvalidContextsExternalModule.ts(28,13): error TS2331: 'this' cannot be referenced in a module or namespace body. +tests/cases/conformance/expressions/thisKeyword/thisInInvalidContextsExternalModule.ts(36,13): error TS2526: A 'this' type is available only in a non-static member of a class or interface. tests/cases/conformance/expressions/thisKeyword/thisInInvalidContextsExternalModule.ts(38,25): error TS2507: Type 'any' is not a constructor function type. tests/cases/conformance/expressions/thisKeyword/thisInInvalidContextsExternalModule.ts(44,9): error TS2332: 'this' cannot be referenced in current location. tests/cases/conformance/expressions/thisKeyword/thisInInvalidContextsExternalModule.ts(45,9): error TS2332: 'this' cannot be referenced in current location. tests/cases/conformance/expressions/thisKeyword/thisInInvalidContextsExternalModule.ts(48,1): error TS1148: Cannot compile modules unless the '--module' flag is provided. -==== tests/cases/conformance/expressions/thisKeyword/thisInInvalidContextsExternalModule.ts (7 errors) ==== +==== tests/cases/conformance/expressions/thisKeyword/thisInInvalidContextsExternalModule.ts (8 errors) ==== //'this' in static member initializer class ErrClass1 { static t = this; // Error @@ -50,6 +51,8 @@ tests/cases/conformance/expressions/thisKeyword/thisInInvalidContextsExternalMod //'this' as a type argument function genericFunc(x: T) { } genericFunc(undefined); // Should be an error + ~~~~ +!!! error TS2526: A 'this' type is available only in a non-static member of a class or interface. class ErrClass3 extends this { ~~~~ diff --git a/tests/baselines/reference/thisInInvalidContextsExternalModule.js b/tests/baselines/reference/thisInInvalidContextsExternalModule.js index 7de94be9420..7c195964947 100644 --- a/tests/baselines/reference/thisInInvalidContextsExternalModule.js +++ b/tests/baselines/reference/thisInInvalidContextsExternalModule.js @@ -92,7 +92,7 @@ var M; // function fn() { } // Error //'this' as a type argument function genericFunc(x) { } -genericFunc < this > (undefined); // Should be an error +genericFunc(undefined); // Should be an error var ErrClass3 = (function (_super) { __extends(ErrClass3, _super); function ErrClass3() { diff --git a/tests/baselines/reference/thisInLambda.types b/tests/baselines/reference/thisInLambda.types index ef4d7557abd..aea7fb08bd6 100644 --- a/tests/baselines/reference/thisInLambda.types +++ b/tests/baselines/reference/thisInLambda.types @@ -11,14 +11,14 @@ class Foo { this.x; // 'this' is type 'Foo' >this.x : string ->this : Foo +>this : this >x : string var f = () => this.x; // 'this' should be type 'Foo' as well >f : () => string >() => this.x : () => string >this.x : string ->this : Foo +>this : this >x : string } } @@ -42,8 +42,8 @@ class myCls { >() => { var x = this; } : () => void var x = this; ->x : myCls ->this : myCls +>x : this +>this : this }); }); diff --git a/tests/baselines/reference/thisInObjectLiterals.errors.txt b/tests/baselines/reference/thisInObjectLiterals.errors.txt new file mode 100644 index 00000000000..73300d86d74 --- /dev/null +++ b/tests/baselines/reference/thisInObjectLiterals.errors.txt @@ -0,0 +1,24 @@ +tests/cases/conformance/expressions/thisKeyword/thisInObjectLiterals.ts(7,13): error TS2403: Subsequent variable declarations must have the same type. Variable 't' must be of type '{ x: this; y: number; }', but here has type '{ x: MyClass; y: number; }'. + + +==== tests/cases/conformance/expressions/thisKeyword/thisInObjectLiterals.ts (1 errors) ==== + class MyClass { + t: number; + + fn() { + //type of 'this' in an object literal is the containing scope's this + var t = { x: this, y: this.t }; + var t: { x: MyClass; y: number }; + ~ +!!! error TS2403: Subsequent variable declarations must have the same type. Variable 't' must be of type '{ x: this; y: number; }', but here has type '{ x: MyClass; y: number; }'. + } + } + + //type of 'this' in an object literal property of a function type is Any + var obj = { + f() { + return this.spaaace; + } + }; + var obj: { f: () => any; }; + \ No newline at end of file diff --git a/tests/baselines/reference/thisInObjectLiterals.symbols b/tests/baselines/reference/thisInObjectLiterals.symbols deleted file mode 100644 index cb351ccd457..00000000000 --- a/tests/baselines/reference/thisInObjectLiterals.symbols +++ /dev/null @@ -1,42 +0,0 @@ -=== tests/cases/conformance/expressions/thisKeyword/thisInObjectLiterals.ts === -class MyClass { ->MyClass : Symbol(MyClass, Decl(thisInObjectLiterals.ts, 0, 0)) - - t: number; ->t : Symbol(t, Decl(thisInObjectLiterals.ts, 0, 15)) - - fn() { ->fn : Symbol(fn, Decl(thisInObjectLiterals.ts, 1, 14)) - - //type of 'this' in an object literal is the containing scope's this - var t = { x: this, y: this.t }; ->t : Symbol(t, Decl(thisInObjectLiterals.ts, 5, 11), Decl(thisInObjectLiterals.ts, 6, 11)) ->x : Symbol(x, Decl(thisInObjectLiterals.ts, 5, 17)) ->this : Symbol(MyClass, Decl(thisInObjectLiterals.ts, 0, 0)) ->y : Symbol(y, Decl(thisInObjectLiterals.ts, 5, 26)) ->this.t : Symbol(t, Decl(thisInObjectLiterals.ts, 0, 15)) ->this : Symbol(MyClass, Decl(thisInObjectLiterals.ts, 0, 0)) ->t : Symbol(t, Decl(thisInObjectLiterals.ts, 0, 15)) - - var t: { x: MyClass; y: number }; ->t : Symbol(t, Decl(thisInObjectLiterals.ts, 5, 11), Decl(thisInObjectLiterals.ts, 6, 11)) ->x : Symbol(x, Decl(thisInObjectLiterals.ts, 6, 16)) ->MyClass : Symbol(MyClass, Decl(thisInObjectLiterals.ts, 0, 0)) ->y : Symbol(y, Decl(thisInObjectLiterals.ts, 6, 28)) - } -} - -//type of 'this' in an object literal property of a function type is Any -var obj = { ->obj : Symbol(obj, Decl(thisInObjectLiterals.ts, 11, 3), Decl(thisInObjectLiterals.ts, 16, 3)) - - f() { ->f : Symbol(f, Decl(thisInObjectLiterals.ts, 11, 11)) - - return this.spaaace; - } -}; -var obj: { f: () => any; }; ->obj : Symbol(obj, Decl(thisInObjectLiterals.ts, 11, 3), Decl(thisInObjectLiterals.ts, 16, 3)) ->f : Symbol(f, Decl(thisInObjectLiterals.ts, 16, 10)) - diff --git a/tests/baselines/reference/thisInObjectLiterals.types b/tests/baselines/reference/thisInObjectLiterals.types deleted file mode 100644 index d3853389a9e..00000000000 --- a/tests/baselines/reference/thisInObjectLiterals.types +++ /dev/null @@ -1,47 +0,0 @@ -=== tests/cases/conformance/expressions/thisKeyword/thisInObjectLiterals.ts === -class MyClass { ->MyClass : MyClass - - t: number; ->t : number - - fn() { ->fn : () => void - - //type of 'this' in an object literal is the containing scope's this - var t = { x: this, y: this.t }; ->t : { x: MyClass; y: number; } ->{ x: this, y: this.t } : { x: MyClass; y: number; } ->x : MyClass ->this : MyClass ->y : number ->this.t : number ->this : MyClass ->t : number - - var t: { x: MyClass; y: number }; ->t : { x: MyClass; y: number; } ->x : MyClass ->MyClass : MyClass ->y : number - } -} - -//type of 'this' in an object literal property of a function type is Any -var obj = { ->obj : { f(): any; } ->{ f() { return this.spaaace; }} : { f(): any; } - - f() { ->f : () => any - - return this.spaaace; ->this.spaaace : any ->this : any ->spaaace : any - } -}; -var obj: { f: () => any; }; ->obj : { f(): any; } ->f : () => any - diff --git a/tests/baselines/reference/thisInPropertyBoundDeclarations.symbols b/tests/baselines/reference/thisInPropertyBoundDeclarations.symbols index 6a5f1417cd0..b10113ff43b 100644 --- a/tests/baselines/reference/thisInPropertyBoundDeclarations.symbols +++ b/tests/baselines/reference/thisInPropertyBoundDeclarations.symbols @@ -15,9 +15,9 @@ class Bug { >name : Symbol(name, Decl(thisInPropertyBoundDeclarations.ts, 4, 16)) that.foo(name); ->that.foo : Symbol(foo, Decl(thisInPropertyBoundDeclarations.ts, 7, 6)) +>that.foo : Symbol(Bug.foo, Decl(thisInPropertyBoundDeclarations.ts, 7, 6)) >that : Symbol(that, Decl(thisInPropertyBoundDeclarations.ts, 4, 6)) ->foo : Symbol(foo, Decl(thisInPropertyBoundDeclarations.ts, 7, 6)) +>foo : Symbol(Bug.foo, Decl(thisInPropertyBoundDeclarations.ts, 7, 6)) >name : Symbol(name, Decl(thisInPropertyBoundDeclarations.ts, 4, 16)) } ]; diff --git a/tests/baselines/reference/thisInPropertyBoundDeclarations.types b/tests/baselines/reference/thisInPropertyBoundDeclarations.types index 596632f1691..f871e78d219 100644 --- a/tests/baselines/reference/thisInPropertyBoundDeclarations.types +++ b/tests/baselines/reference/thisInPropertyBoundDeclarations.types @@ -32,7 +32,7 @@ class Bug { this.name = name; >this.name = name : string >this.name : string ->this : Bug +>this : this >name : string >name : string } @@ -110,21 +110,21 @@ class B { >B : B prop1 = this; ->prop1 : B ->this : B +>prop1 : this +>this : this prop2 = () => this; ->prop2 : () => B ->() => this : () => B ->this : B +>prop2 : () => this +>() => this : () => this +>this : this prop3 = () => () => () => () => this; ->prop3 : () => () => () => () => B ->() => () => () => () => this : () => () => () => () => B ->() => () => () => this : () => () => () => B ->() => () => this : () => () => B ->() => this : () => B ->this : B +>prop3 : () => () => () => () => this +>() => () => () => () => this : () => () => () => () => this +>() => () => () => this : () => () => () => this +>() => () => this : () => () => this +>() => this : () => this +>this : this prop4 = ' ' + >prop4 : string @@ -141,34 +141,34 @@ class B { >' ' : string (() => () => () => this); ->(() => () => () => this) : () => () => () => B ->() => () => () => this : () => () => () => B ->() => () => this : () => () => B ->() => this : () => B ->this : B +>(() => () => () => this) : () => () => () => this +>() => () => () => this : () => () => () => this +>() => () => this : () => () => this +>() => this : () => this +>this : this prop5 = { ->prop5 : { a: () => B; } ->{ a: () => { return this; } } : { a: () => B; } +>prop5 : { a: () => this; } +>{ a: () => { return this; } } : { a: () => this; } a: () => { return this; } ->a : () => B ->() => { return this; } : () => B ->this : B +>a : () => this +>() => { return this; } : () => this +>this : this }; prop6 = () => { ->prop6 : () => { a: () => B; } ->() => { return { a: () => { return this; } }; } : () => { a: () => B; } +>prop6 : () => { a: () => this; } +>() => { return { a: () => { return this; } }; } : () => { a: () => this; } return { ->{ a: () => { return this; } } : { a: () => B; } +>{ a: () => { return this; } } : { a: () => this; } a: () => { return this; } ->a : () => B ->() => { return this; } : () => B ->this : B +>a : () => this +>() => { return this; } : () => this +>this : this }; }; diff --git a/tests/baselines/reference/thisTypeErrors.errors.txt b/tests/baselines/reference/thisTypeErrors.errors.txt new file mode 100644 index 00000000000..17b7e0d39b9 --- /dev/null +++ b/tests/baselines/reference/thisTypeErrors.errors.txt @@ -0,0 +1,149 @@ +tests/cases/conformance/types/thisType/thisTypeErrors.ts(1,9): error TS2526: A 'this' type is available only in a non-static member of a class or interface. +tests/cases/conformance/types/thisType/thisTypeErrors.ts(2,14): error TS2526: A 'this' type is available only in a non-static member of a class or interface. +tests/cases/conformance/types/thisType/thisTypeErrors.ts(3,9): error TS2526: A 'this' type is available only in a non-static member of a class or interface. +tests/cases/conformance/types/thisType/thisTypeErrors.ts(5,16): error TS2526: A 'this' type is available only in a non-static member of a class or interface. +tests/cases/conformance/types/thisType/thisTypeErrors.ts(5,23): error TS2526: A 'this' type is available only in a non-static member of a class or interface. +tests/cases/conformance/types/thisType/thisTypeErrors.ts(6,12): error TS2526: A 'this' type is available only in a non-static member of a class or interface. +tests/cases/conformance/types/thisType/thisTypeErrors.ts(11,13): error TS2526: A 'this' type is available only in a non-static member of a class or interface. +tests/cases/conformance/types/thisType/thisTypeErrors.ts(12,14): error TS2526: A 'this' type is available only in a non-static member of a class or interface. +tests/cases/conformance/types/thisType/thisTypeErrors.ts(13,18): error TS2526: A 'this' type is available only in a non-static member of a class or interface. +tests/cases/conformance/types/thisType/thisTypeErrors.ts(14,23): error TS2526: A 'this' type is available only in a non-static member of a class or interface. +tests/cases/conformance/types/thisType/thisTypeErrors.ts(15,15): error TS2526: A 'this' type is available only in a non-static member of a class or interface. +tests/cases/conformance/types/thisType/thisTypeErrors.ts(15,22): error TS2526: A 'this' type is available only in a non-static member of a class or interface. +tests/cases/conformance/types/thisType/thisTypeErrors.ts(19,13): error TS2526: A 'this' type is available only in a non-static member of a class or interface. +tests/cases/conformance/types/thisType/thisTypeErrors.ts(20,14): error TS2526: A 'this' type is available only in a non-static member of a class or interface. +tests/cases/conformance/types/thisType/thisTypeErrors.ts(21,18): error TS2526: A 'this' type is available only in a non-static member of a class or interface. +tests/cases/conformance/types/thisType/thisTypeErrors.ts(22,23): error TS2526: A 'this' type is available only in a non-static member of a class or interface. +tests/cases/conformance/types/thisType/thisTypeErrors.ts(23,15): error TS2526: A 'this' type is available only in a non-static member of a class or interface. +tests/cases/conformance/types/thisType/thisTypeErrors.ts(23,22): error TS2526: A 'this' type is available only in a non-static member of a class or interface. +tests/cases/conformance/types/thisType/thisTypeErrors.ts(27,15): error TS2526: A 'this' type is available only in a non-static member of a class or interface. +tests/cases/conformance/types/thisType/thisTypeErrors.ts(28,17): error TS2526: A 'this' type is available only in a non-static member of a class or interface. +tests/cases/conformance/types/thisType/thisTypeErrors.ts(29,19): error TS2526: A 'this' type is available only in a non-static member of a class or interface. +tests/cases/conformance/types/thisType/thisTypeErrors.ts(29,26): error TS2526: A 'this' type is available only in a non-static member of a class or interface. +tests/cases/conformance/types/thisType/thisTypeErrors.ts(35,19): error TS2526: A 'this' type is available only in a non-static member of a class or interface. +tests/cases/conformance/types/thisType/thisTypeErrors.ts(36,20): error TS2331: 'this' cannot be referenced in a module or namespace body. +tests/cases/conformance/types/thisType/thisTypeErrors.ts(41,14): error TS2526: A 'this' type is available only in a non-static member of a class or interface. +tests/cases/conformance/types/thisType/thisTypeErrors.ts(41,21): error TS2526: A 'this' type is available only in a non-static member of a class or interface. +tests/cases/conformance/types/thisType/thisTypeErrors.ts(46,23): error TS2526: A 'this' type is available only in a non-static member of a class or interface. +tests/cases/conformance/types/thisType/thisTypeErrors.ts(46,30): error TS2526: A 'this' type is available only in a non-static member of a class or interface. +tests/cases/conformance/types/thisType/thisTypeErrors.ts(50,18): error TS2526: A 'this' type is available only in a non-static member of a class or interface. +tests/cases/conformance/types/thisType/thisTypeErrors.ts(50,25): error TS2526: A 'this' type is available only in a non-static member of a class or interface. + + +==== tests/cases/conformance/types/thisType/thisTypeErrors.ts (30 errors) ==== + var x1: this; + ~~~~ +!!! error TS2526: A 'this' type is available only in a non-static member of a class or interface. + var x2: { a: this }; + ~~~~ +!!! error TS2526: A 'this' type is available only in a non-static member of a class or interface. + var x3: this[]; + ~~~~ +!!! error TS2526: A 'this' type is available only in a non-static member of a class or interface. + + function f1(x: this): this { + ~~~~ +!!! error TS2526: A 'this' type is available only in a non-static member of a class or interface. + ~~~~ +!!! error TS2526: A 'this' type is available only in a non-static member of a class or interface. + var y: this; + ~~~~ +!!! error TS2526: A 'this' type is available only in a non-static member of a class or interface. + return this; + } + + interface I1 { + a: { x: this }; + ~~~~ +!!! error TS2526: A 'this' type is available only in a non-static member of a class or interface. + b: { (): this }; + ~~~~ +!!! error TS2526: A 'this' type is available only in a non-static member of a class or interface. + c: { new (): this }; + ~~~~ +!!! error TS2526: A 'this' type is available only in a non-static member of a class or interface. + d: { [x: string]: this }; + ~~~~ +!!! error TS2526: A 'this' type is available only in a non-static member of a class or interface. + e: { f(x: this): this }; + ~~~~ +!!! error TS2526: A 'this' type is available only in a non-static member of a class or interface. + ~~~~ +!!! error TS2526: A 'this' type is available only in a non-static member of a class or interface. + } + + class C1 { + a: { x: this }; + ~~~~ +!!! error TS2526: A 'this' type is available only in a non-static member of a class or interface. + b: { (): this }; + ~~~~ +!!! error TS2526: A 'this' type is available only in a non-static member of a class or interface. + c: { new (): this }; + ~~~~ +!!! error TS2526: A 'this' type is available only in a non-static member of a class or interface. + d: { [x: string]: this }; + ~~~~ +!!! error TS2526: A 'this' type is available only in a non-static member of a class or interface. + e: { f(x: this): this }; + ~~~~ +!!! error TS2526: A 'this' type is available only in a non-static member of a class or interface. + ~~~~ +!!! error TS2526: A 'this' type is available only in a non-static member of a class or interface. + } + + class C2 { + static x: this; + ~~~~ +!!! error TS2526: A 'this' type is available only in a non-static member of a class or interface. + static y = undefined; + ~~~~ +!!! error TS2526: A 'this' type is available only in a non-static member of a class or interface. + static foo(x: this): this { + ~~~~ +!!! error TS2526: A 'this' type is available only in a non-static member of a class or interface. + ~~~~ +!!! error TS2526: A 'this' type is available only in a non-static member of a class or interface. + return undefined; + } + } + + namespace N1 { + export var x: this; + ~~~~ +!!! error TS2526: A 'this' type is available only in a non-static member of a class or interface. + export var y = this; + ~~~~ +!!! error TS2331: 'this' cannot be referenced in a module or namespace body. + } + + class C3 { + x1 = { + g(x: this): this { + ~~~~ +!!! error TS2526: A 'this' type is available only in a non-static member of a class or interface. + ~~~~ +!!! error TS2526: A 'this' type is available only in a non-static member of a class or interface. + return undefined; + } + } + f() { + function g(x: this): this { + ~~~~ +!!! error TS2526: A 'this' type is available only in a non-static member of a class or interface. + ~~~~ +!!! error TS2526: A 'this' type is available only in a non-static member of a class or interface. + return undefined; + } + let x2 = { + h(x: this): this { + ~~~~ +!!! error TS2526: A 'this' type is available only in a non-static member of a class or interface. + ~~~~ +!!! error TS2526: A 'this' type is available only in a non-static member of a class or interface. + return undefined; + } + } + } + } + \ No newline at end of file diff --git a/tests/baselines/reference/thisTypeErrors.js b/tests/baselines/reference/thisTypeErrors.js new file mode 100644 index 00000000000..677feb374e1 --- /dev/null +++ b/tests/baselines/reference/thisTypeErrors.js @@ -0,0 +1,104 @@ +//// [thisTypeErrors.ts] +var x1: this; +var x2: { a: this }; +var x3: this[]; + +function f1(x: this): this { + var y: this; + return this; +} + +interface I1 { + a: { x: this }; + b: { (): this }; + c: { new (): this }; + d: { [x: string]: this }; + e: { f(x: this): this }; +} + +class C1 { + a: { x: this }; + b: { (): this }; + c: { new (): this }; + d: { [x: string]: this }; + e: { f(x: this): this }; +} + +class C2 { + static x: this; + static y = undefined; + static foo(x: this): this { + return undefined; + } +} + +namespace N1 { + export var x: this; + export var y = this; +} + +class C3 { + x1 = { + g(x: this): this { + return undefined; + } + } + f() { + function g(x: this): this { + return undefined; + } + let x2 = { + h(x: this): this { + return undefined; + } + } + } +} + + +//// [thisTypeErrors.js] +var x1; +var x2; +var x3; +function f1(x) { + var y; + return this; +} +var C1 = (function () { + function C1() { + } + return C1; +})(); +var C2 = (function () { + function C2() { + } + C2.foo = function (x) { + return undefined; + }; + C2.y = undefined; + return C2; +})(); +var N1; +(function (N1) { + N1.y = this; +})(N1 || (N1 = {})); +var C3 = (function () { + function C3() { + this.x1 = { + g: function (x) { + return undefined; + } + }; + } + C3.prototype.f = function () { + function g(x) { + return undefined; + } + var x2 = { + h: function (x) { + return undefined; + } + }; + }; + return C3; +})(); diff --git a/tests/baselines/reference/thisTypeInClasses.js b/tests/baselines/reference/thisTypeInClasses.js new file mode 100644 index 00000000000..93344fa62cb --- /dev/null +++ b/tests/baselines/reference/thisTypeInClasses.js @@ -0,0 +1,91 @@ +//// [thisTypeInClasses.ts] +class C1 { + x: this; + f(x: this): this { return undefined; } + constructor(x: this) { } +} + +class C2 { + [x: string]: this; +} + +interface Foo { + x: T; + y: this; +} + +class C3 { + a: this[]; + b: [this, this]; + c: this | Date; + d: this & Date; + e: (((this))); + f: (x: this) => this; + g: new (x: this) => this; + h: Foo; + i: Foo this)>; + j: (x: any) => x is this; +} + +declare class C4 { + x: this; + f(x: this): this; +} + +class C5 { + foo() { + let f1 = (x: this): this => this; + let f2 = (x: this) => this; + let f3 = (x: this) => (y: this) => this; + let f4 = (x: this) => { + let g = (y: this) => { + return () => this; + } + return g(this); + } + } + bar() { + let x1 = undefined; + let x2 = undefined as this; + } +} + + +//// [thisTypeInClasses.js] +var C1 = (function () { + function C1(x) { + } + C1.prototype.f = function (x) { return undefined; }; + return C1; +})(); +var C2 = (function () { + function C2() { + } + return C2; +})(); +var C3 = (function () { + function C3() { + } + return C3; +})(); +var C5 = (function () { + function C5() { + } + C5.prototype.foo = function () { + var _this = this; + var f1 = function (x) { return _this; }; + var f2 = function (x) { return _this; }; + var f3 = function (x) { return function (y) { return _this; }; }; + var f4 = function (x) { + var g = function (y) { + return function () { return _this; }; + }; + return g(_this); + }; + }; + C5.prototype.bar = function () { + var x1 = undefined; + var x2 = undefined; + }; + return C5; +})(); diff --git a/tests/baselines/reference/thisTypeInClasses.symbols b/tests/baselines/reference/thisTypeInClasses.symbols new file mode 100644 index 00000000000..6383bb01b8d --- /dev/null +++ b/tests/baselines/reference/thisTypeInClasses.symbols @@ -0,0 +1,140 @@ +=== tests/cases/conformance/types/thisType/thisTypeInClasses.ts === +class C1 { +>C1 : Symbol(C1, Decl(thisTypeInClasses.ts, 0, 0)) + + x: this; +>x : Symbol(x, Decl(thisTypeInClasses.ts, 0, 10)) + + f(x: this): this { return undefined; } +>f : Symbol(f, Decl(thisTypeInClasses.ts, 1, 12)) +>x : Symbol(x, Decl(thisTypeInClasses.ts, 2, 6)) +>undefined : Symbol(undefined) + + constructor(x: this) { } +>x : Symbol(x, Decl(thisTypeInClasses.ts, 3, 16)) +} + +class C2 { +>C2 : Symbol(C2, Decl(thisTypeInClasses.ts, 4, 1)) + + [x: string]: this; +>x : Symbol(x, Decl(thisTypeInClasses.ts, 7, 5)) +} + +interface Foo { +>Foo : Symbol(Foo, Decl(thisTypeInClasses.ts, 8, 1)) +>T : Symbol(T, Decl(thisTypeInClasses.ts, 10, 14)) + + x: T; +>x : Symbol(x, Decl(thisTypeInClasses.ts, 10, 18)) +>T : Symbol(T, Decl(thisTypeInClasses.ts, 10, 14)) + + y: this; +>y : Symbol(y, Decl(thisTypeInClasses.ts, 11, 9)) +} + +class C3 { +>C3 : Symbol(C3, Decl(thisTypeInClasses.ts, 13, 1)) + + a: this[]; +>a : Symbol(a, Decl(thisTypeInClasses.ts, 15, 10)) + + b: [this, this]; +>b : Symbol(b, Decl(thisTypeInClasses.ts, 16, 14)) + + c: this | Date; +>c : Symbol(c, Decl(thisTypeInClasses.ts, 17, 20)) +>Date : Symbol(Date, Decl(lib.d.ts, 633, 23), Decl(lib.d.ts, 815, 11)) + + d: this & Date; +>d : Symbol(d, Decl(thisTypeInClasses.ts, 18, 19)) +>Date : Symbol(Date, Decl(lib.d.ts, 633, 23), Decl(lib.d.ts, 815, 11)) + + e: (((this))); +>e : Symbol(e, Decl(thisTypeInClasses.ts, 19, 19)) + + f: (x: this) => this; +>f : Symbol(f, Decl(thisTypeInClasses.ts, 20, 18)) +>x : Symbol(x, Decl(thisTypeInClasses.ts, 21, 8)) + + g: new (x: this) => this; +>g : Symbol(g, Decl(thisTypeInClasses.ts, 21, 25)) +>x : Symbol(x, Decl(thisTypeInClasses.ts, 22, 12)) + + h: Foo; +>h : Symbol(h, Decl(thisTypeInClasses.ts, 22, 29)) +>Foo : Symbol(Foo, Decl(thisTypeInClasses.ts, 8, 1)) + + i: Foo this)>; +>i : Symbol(i, Decl(thisTypeInClasses.ts, 23, 17)) +>Foo : Symbol(Foo, Decl(thisTypeInClasses.ts, 8, 1)) + + j: (x: any) => x is this; +>j : Symbol(j, Decl(thisTypeInClasses.ts, 24, 32)) +>x : Symbol(x, Decl(thisTypeInClasses.ts, 25, 8)) +>x : Symbol(x, Decl(thisTypeInClasses.ts, 25, 8)) +} + +declare class C4 { +>C4 : Symbol(C4, Decl(thisTypeInClasses.ts, 26, 1)) + + x: this; +>x : Symbol(x, Decl(thisTypeInClasses.ts, 28, 18)) + + f(x: this): this; +>f : Symbol(f, Decl(thisTypeInClasses.ts, 29, 12)) +>x : Symbol(x, Decl(thisTypeInClasses.ts, 30, 6)) +} + +class C5 { +>C5 : Symbol(C5, Decl(thisTypeInClasses.ts, 31, 1)) + + foo() { +>foo : Symbol(foo, Decl(thisTypeInClasses.ts, 33, 10)) + + let f1 = (x: this): this => this; +>f1 : Symbol(f1, Decl(thisTypeInClasses.ts, 35, 11)) +>x : Symbol(x, Decl(thisTypeInClasses.ts, 35, 18)) +>this : Symbol(C5, Decl(thisTypeInClasses.ts, 31, 1)) +>this : Symbol(C5, Decl(thisTypeInClasses.ts, 31, 1)) + + let f2 = (x: this) => this; +>f2 : Symbol(f2, Decl(thisTypeInClasses.ts, 36, 11)) +>x : Symbol(x, Decl(thisTypeInClasses.ts, 36, 18)) +>this : Symbol(C5, Decl(thisTypeInClasses.ts, 31, 1)) + + let f3 = (x: this) => (y: this) => this; +>f3 : Symbol(f3, Decl(thisTypeInClasses.ts, 37, 11)) +>x : Symbol(x, Decl(thisTypeInClasses.ts, 37, 18)) +>y : Symbol(y, Decl(thisTypeInClasses.ts, 37, 31)) +>this : Symbol(C5, Decl(thisTypeInClasses.ts, 31, 1)) + + let f4 = (x: this) => { +>f4 : Symbol(f4, Decl(thisTypeInClasses.ts, 38, 11)) +>x : Symbol(x, Decl(thisTypeInClasses.ts, 38, 18)) + + let g = (y: this) => { +>g : Symbol(g, Decl(thisTypeInClasses.ts, 39, 15)) +>y : Symbol(y, Decl(thisTypeInClasses.ts, 39, 21)) + + return () => this; +>this : Symbol(C5, Decl(thisTypeInClasses.ts, 31, 1)) + } + return g(this); +>g : Symbol(g, Decl(thisTypeInClasses.ts, 39, 15)) +>this : Symbol(C5, Decl(thisTypeInClasses.ts, 31, 1)) + } + } + bar() { +>bar : Symbol(bar, Decl(thisTypeInClasses.ts, 44, 5)) + + let x1 = undefined; +>x1 : Symbol(x1, Decl(thisTypeInClasses.ts, 46, 11)) +>undefined : Symbol(undefined) + + let x2 = undefined as this; +>x2 : Symbol(x2, Decl(thisTypeInClasses.ts, 47, 11)) +>undefined : Symbol(undefined) + } +} + diff --git a/tests/baselines/reference/thisTypeInClasses.types b/tests/baselines/reference/thisTypeInClasses.types new file mode 100644 index 00000000000..ddfdfb277a9 --- /dev/null +++ b/tests/baselines/reference/thisTypeInClasses.types @@ -0,0 +1,150 @@ +=== tests/cases/conformance/types/thisType/thisTypeInClasses.ts === +class C1 { +>C1 : C1 + + x: this; +>x : this + + f(x: this): this { return undefined; } +>f : (x: this) => this +>x : this +>undefined : undefined + + constructor(x: this) { } +>x : this +} + +class C2 { +>C2 : C2 + + [x: string]: this; +>x : string +} + +interface Foo { +>Foo : Foo +>T : T + + x: T; +>x : T +>T : T + + y: this; +>y : this +} + +class C3 { +>C3 : C3 + + a: this[]; +>a : this[] + + b: [this, this]; +>b : [this, this] + + c: this | Date; +>c : this | Date +>Date : Date + + d: this & Date; +>d : this & Date +>Date : Date + + e: (((this))); +>e : this + + f: (x: this) => this; +>f : (x: this) => this +>x : this + + g: new (x: this) => this; +>g : new (x: this) => this +>x : this + + h: Foo; +>h : Foo +>Foo : Foo + + i: Foo this)>; +>i : Foo this)> +>Foo : Foo + + j: (x: any) => x is this; +>j : (x: any) => x is this +>x : any +>x : any +} + +declare class C4 { +>C4 : C4 + + x: this; +>x : this + + f(x: this): this; +>f : (x: this) => this +>x : this +} + +class C5 { +>C5 : C5 + + foo() { +>foo : () => void + + let f1 = (x: this): this => this; +>f1 : (x: this) => this +>(x: this): this => this : (x: this) => this +>x : this +>this : this +>this : this + + let f2 = (x: this) => this; +>f2 : (x: this) => this +>(x: this) => this : (x: this) => this +>x : this +>this : this + + let f3 = (x: this) => (y: this) => this; +>f3 : (x: this) => (y: this) => this +>(x: this) => (y: this) => this : (x: this) => (y: this) => this +>x : this +>(y: this) => this : (y: this) => this +>y : this +>this : this + + let f4 = (x: this) => { +>f4 : (x: this) => () => this +>(x: this) => { let g = (y: this) => { return () => this; } return g(this); } : (x: this) => () => this +>x : this + + let g = (y: this) => { +>g : (y: this) => () => this +>(y: this) => { return () => this; } : (y: this) => () => this +>y : this + + return () => this; +>() => this : () => this +>this : this + } + return g(this); +>g(this) : () => this +>g : (y: this) => () => this +>this : this + } + } + bar() { +>bar : () => void + + let x1 = undefined; +>x1 : this +>undefined : this +>undefined : undefined + + let x2 = undefined as this; +>x2 : this +>undefined as this : this +>undefined : undefined + } +} + diff --git a/tests/baselines/reference/thisTypeInInterfaces.js b/tests/baselines/reference/thisTypeInInterfaces.js new file mode 100644 index 00000000000..eb521918d33 --- /dev/null +++ b/tests/baselines/reference/thisTypeInInterfaces.js @@ -0,0 +1,32 @@ +//// [thisTypeInInterfaces.ts] +interface I1 { + x: this; + f(x: this): this; +} + +interface I2 { + (x: this): this; + new (x: this): this; + [x: string]: this; +} + +interface Foo { + x: T; + y: this; +} + +interface I3 { + a: this[]; + b: [this, this]; + c: this | Date; + d: this & Date; + e: (((this))); + f: (x: this) => this; + g: new (x: this) => this; + h: Foo; + i: Foo this)>; + j: (x: any) => x is this; +} + + +//// [thisTypeInInterfaces.js] diff --git a/tests/baselines/reference/thisTypeInInterfaces.symbols b/tests/baselines/reference/thisTypeInInterfaces.symbols new file mode 100644 index 00000000000..498fbcc8796 --- /dev/null +++ b/tests/baselines/reference/thisTypeInInterfaces.symbols @@ -0,0 +1,79 @@ +=== tests/cases/conformance/types/thisType/thisTypeInInterfaces.ts === +interface I1 { +>I1 : Symbol(I1, Decl(thisTypeInInterfaces.ts, 0, 0)) + + x: this; +>x : Symbol(x, Decl(thisTypeInInterfaces.ts, 0, 14)) + + f(x: this): this; +>f : Symbol(f, Decl(thisTypeInInterfaces.ts, 1, 12)) +>x : Symbol(x, Decl(thisTypeInInterfaces.ts, 2, 6)) +} + +interface I2 { +>I2 : Symbol(I2, Decl(thisTypeInInterfaces.ts, 3, 1)) + + (x: this): this; +>x : Symbol(x, Decl(thisTypeInInterfaces.ts, 6, 5)) + + new (x: this): this; +>x : Symbol(x, Decl(thisTypeInInterfaces.ts, 7, 9)) + + [x: string]: this; +>x : Symbol(x, Decl(thisTypeInInterfaces.ts, 8, 5)) +} + +interface Foo { +>Foo : Symbol(Foo, Decl(thisTypeInInterfaces.ts, 9, 1)) +>T : Symbol(T, Decl(thisTypeInInterfaces.ts, 11, 14)) + + x: T; +>x : Symbol(x, Decl(thisTypeInInterfaces.ts, 11, 18)) +>T : Symbol(T, Decl(thisTypeInInterfaces.ts, 11, 14)) + + y: this; +>y : Symbol(y, Decl(thisTypeInInterfaces.ts, 12, 9)) +} + +interface I3 { +>I3 : Symbol(I3, Decl(thisTypeInInterfaces.ts, 14, 1)) + + a: this[]; +>a : Symbol(a, Decl(thisTypeInInterfaces.ts, 16, 14)) + + b: [this, this]; +>b : Symbol(b, Decl(thisTypeInInterfaces.ts, 17, 14)) + + c: this | Date; +>c : Symbol(c, Decl(thisTypeInInterfaces.ts, 18, 20)) +>Date : Symbol(Date, Decl(lib.d.ts, 633, 23), Decl(lib.d.ts, 815, 11)) + + d: this & Date; +>d : Symbol(d, Decl(thisTypeInInterfaces.ts, 19, 19)) +>Date : Symbol(Date, Decl(lib.d.ts, 633, 23), Decl(lib.d.ts, 815, 11)) + + e: (((this))); +>e : Symbol(e, Decl(thisTypeInInterfaces.ts, 20, 19)) + + f: (x: this) => this; +>f : Symbol(f, Decl(thisTypeInInterfaces.ts, 21, 18)) +>x : Symbol(x, Decl(thisTypeInInterfaces.ts, 22, 8)) + + g: new (x: this) => this; +>g : Symbol(g, Decl(thisTypeInInterfaces.ts, 22, 25)) +>x : Symbol(x, Decl(thisTypeInInterfaces.ts, 23, 12)) + + h: Foo; +>h : Symbol(h, Decl(thisTypeInInterfaces.ts, 23, 29)) +>Foo : Symbol(Foo, Decl(thisTypeInInterfaces.ts, 9, 1)) + + i: Foo this)>; +>i : Symbol(i, Decl(thisTypeInInterfaces.ts, 24, 17)) +>Foo : Symbol(Foo, Decl(thisTypeInInterfaces.ts, 9, 1)) + + j: (x: any) => x is this; +>j : Symbol(j, Decl(thisTypeInInterfaces.ts, 25, 32)) +>x : Symbol(x, Decl(thisTypeInInterfaces.ts, 26, 8)) +>x : Symbol(x, Decl(thisTypeInInterfaces.ts, 26, 8)) +} + diff --git a/tests/baselines/reference/thisTypeInInterfaces.types b/tests/baselines/reference/thisTypeInInterfaces.types new file mode 100644 index 00000000000..5eadd7c13be --- /dev/null +++ b/tests/baselines/reference/thisTypeInInterfaces.types @@ -0,0 +1,79 @@ +=== tests/cases/conformance/types/thisType/thisTypeInInterfaces.ts === +interface I1 { +>I1 : I1 + + x: this; +>x : this + + f(x: this): this; +>f : (x: this) => this +>x : this +} + +interface I2 { +>I2 : I2 + + (x: this): this; +>x : this + + new (x: this): this; +>x : this + + [x: string]: this; +>x : string +} + +interface Foo { +>Foo : Foo +>T : T + + x: T; +>x : T +>T : T + + y: this; +>y : this +} + +interface I3 { +>I3 : I3 + + a: this[]; +>a : this[] + + b: [this, this]; +>b : [this, this] + + c: this | Date; +>c : this | Date +>Date : Date + + d: this & Date; +>d : this & Date +>Date : Date + + e: (((this))); +>e : this + + f: (x: this) => this; +>f : (x: this) => this +>x : this + + g: new (x: this) => this; +>g : new (x: this) => this +>x : this + + h: Foo; +>h : Foo +>Foo : Foo + + i: Foo this)>; +>i : Foo this)> +>Foo : Foo + + j: (x: any) => x is this; +>j : (x: any) => x is this +>x : any +>x : any +} + diff --git a/tests/baselines/reference/thisTypeInTuples.js b/tests/baselines/reference/thisTypeInTuples.js new file mode 100644 index 00000000000..b80cfded513 --- /dev/null +++ b/tests/baselines/reference/thisTypeInTuples.js @@ -0,0 +1,16 @@ +//// [thisTypeInTuples.ts] +interface Array { + slice(): this; +} + +let t: [number, string] = [42, "hello"]; +let a = t.slice(); +let b = t.slice(1); +let c = t.slice(0, 1); + + +//// [thisTypeInTuples.js] +var t = [42, "hello"]; +var a = t.slice(); +var b = t.slice(1); +var c = t.slice(0, 1); diff --git a/tests/baselines/reference/thisTypeInTuples.symbols b/tests/baselines/reference/thisTypeInTuples.symbols new file mode 100644 index 00000000000..5b9965510a7 --- /dev/null +++ b/tests/baselines/reference/thisTypeInTuples.symbols @@ -0,0 +1,30 @@ +=== tests/cases/conformance/types/thisType/thisTypeInTuples.ts === +interface Array { +>Array : Symbol(Array, Decl(lib.d.ts, 1000, 23), Decl(lib.d.ts, 1171, 11), Decl(thisTypeInTuples.ts, 0, 0)) +>T : Symbol(T, Decl(lib.d.ts, 1007, 16), Decl(thisTypeInTuples.ts, 0, 16)) + + slice(): this; +>slice : Symbol(slice, Decl(lib.d.ts, 1048, 15), Decl(thisTypeInTuples.ts, 0, 20)) +} + +let t: [number, string] = [42, "hello"]; +>t : Symbol(t, Decl(thisTypeInTuples.ts, 4, 3)) + +let a = t.slice(); +>a : Symbol(a, Decl(thisTypeInTuples.ts, 5, 3)) +>t.slice : Symbol(Array.slice, Decl(lib.d.ts, 1048, 15), Decl(thisTypeInTuples.ts, 0, 20)) +>t : Symbol(t, Decl(thisTypeInTuples.ts, 4, 3)) +>slice : Symbol(Array.slice, Decl(lib.d.ts, 1048, 15), Decl(thisTypeInTuples.ts, 0, 20)) + +let b = t.slice(1); +>b : Symbol(b, Decl(thisTypeInTuples.ts, 6, 3)) +>t.slice : Symbol(Array.slice, Decl(lib.d.ts, 1048, 15), Decl(thisTypeInTuples.ts, 0, 20)) +>t : Symbol(t, Decl(thisTypeInTuples.ts, 4, 3)) +>slice : Symbol(Array.slice, Decl(lib.d.ts, 1048, 15), Decl(thisTypeInTuples.ts, 0, 20)) + +let c = t.slice(0, 1); +>c : Symbol(c, Decl(thisTypeInTuples.ts, 7, 3)) +>t.slice : Symbol(Array.slice, Decl(lib.d.ts, 1048, 15), Decl(thisTypeInTuples.ts, 0, 20)) +>t : Symbol(t, Decl(thisTypeInTuples.ts, 4, 3)) +>slice : Symbol(Array.slice, Decl(lib.d.ts, 1048, 15), Decl(thisTypeInTuples.ts, 0, 20)) + diff --git a/tests/baselines/reference/thisTypeInTuples.types b/tests/baselines/reference/thisTypeInTuples.types new file mode 100644 index 00000000000..e0268840317 --- /dev/null +++ b/tests/baselines/reference/thisTypeInTuples.types @@ -0,0 +1,39 @@ +=== tests/cases/conformance/types/thisType/thisTypeInTuples.ts === +interface Array { +>Array : T[] +>T : T + + slice(): this; +>slice : { (start?: number, end?: number): T[]; (): this; } +} + +let t: [number, string] = [42, "hello"]; +>t : [number, string] +>[42, "hello"] : [number, string] +>42 : number +>"hello" : string + +let a = t.slice(); +>a : [number, string] +>t.slice() : [number, string] +>t.slice : { (start?: number, end?: number): (number | string)[]; (): [number, string]; } +>t : [number, string] +>slice : { (start?: number, end?: number): (number | string)[]; (): [number, string]; } + +let b = t.slice(1); +>b : (number | string)[] +>t.slice(1) : (number | string)[] +>t.slice : { (start?: number, end?: number): (number | string)[]; (): [number, string]; } +>t : [number, string] +>slice : { (start?: number, end?: number): (number | string)[]; (): [number, string]; } +>1 : number + +let c = t.slice(0, 1); +>c : (number | string)[] +>t.slice(0, 1) : (number | string)[] +>t.slice : { (start?: number, end?: number): (number | string)[]; (): [number, string]; } +>t : [number, string] +>slice : { (start?: number, end?: number): (number | string)[]; (): [number, string]; } +>0 : number +>1 : number + diff --git a/tests/baselines/reference/throwInEnclosingStatements.types b/tests/baselines/reference/throwInEnclosingStatements.types index f3ae0bacd60..bcff8653d52 100644 --- a/tests/baselines/reference/throwInEnclosingStatements.types +++ b/tests/baselines/reference/throwInEnclosingStatements.types @@ -81,13 +81,13 @@ class C { throw this.value; >this.value : T ->this : C +>this : this >value : T } constructor() { throw this; ->this : C +>this : this } } diff --git a/tests/baselines/reference/topLevel.types b/tests/baselines/reference/topLevel.types index d7ed4a27001..ac1dd1182b9 100644 --- a/tests/baselines/reference/topLevel.types +++ b/tests/baselines/reference/topLevel.types @@ -18,26 +18,26 @@ class Point implements IPoint { >y : any public move(xo:number,yo:number) { ->move : (xo: number, yo: number) => Point +>move : (xo: number, yo: number) => this >xo : number >yo : number this.x+=xo; >this.x+=xo : any >this.x : any ->this : Point +>this : this >x : any >xo : number this.y+=yo; >this.y+=yo : any >this.y : any ->this : Point +>this : this >y : any >yo : number return this; ->this : Point +>this : this } public toString() { >toString : () => string @@ -50,11 +50,11 @@ class Point implements IPoint { >"("+this.x : string >"(" : string >this.x : any ->this : Point +>this : this >x : any >"," : string >this.y : any ->this : Point +>this : this >y : any >")" : string } diff --git a/tests/baselines/reference/topLevelFileModule.js b/tests/baselines/reference/topLevelFileModule.js index 5d655f78397..a6e7a151eb9 100644 --- a/tests/baselines/reference/topLevelFileModule.js +++ b/tests/baselines/reference/topLevelFileModule.js @@ -7,13 +7,13 @@ export var x: number; export declare var y: number; //// [foo_1.ts] -import foo = require("vs/foo_0"); -import fum = require("vs/fum"); +import foo = require("./vs/foo_0"); +import fum = require("./vs/fum"); var z = foo.x + fum.y; //// [foo_0.js] //// [foo_1.js] -var foo = require("vs/foo_0"); -var fum = require("vs/fum"); +var foo = require("./vs/foo_0"); +var fum = require("./vs/fum"); var z = foo.x + fum.y; diff --git a/tests/baselines/reference/topLevelFileModule.symbols b/tests/baselines/reference/topLevelFileModule.symbols index a677274ec07..d3961c0fa72 100644 --- a/tests/baselines/reference/topLevelFileModule.symbols +++ b/tests/baselines/reference/topLevelFileModule.symbols @@ -1,9 +1,9 @@ === tests/cases/conformance/externalModules/foo_1.ts === -import foo = require("vs/foo_0"); +import foo = require("./vs/foo_0"); >foo : Symbol(foo, Decl(foo_1.ts, 0, 0)) -import fum = require("vs/fum"); ->fum : Symbol(fum, Decl(foo_1.ts, 0, 33)) +import fum = require("./vs/fum"); +>fum : Symbol(fum, Decl(foo_1.ts, 0, 35)) var z = foo.x + fum.y; >z : Symbol(z, Decl(foo_1.ts, 2, 3)) @@ -11,7 +11,7 @@ var z = foo.x + fum.y; >foo : Symbol(foo, Decl(foo_1.ts, 0, 0)) >x : Symbol(foo.x, Decl(foo_0.ts, 0, 10)) >fum.y : Symbol(fum.y, Decl(fum.d.ts, 0, 18)) ->fum : Symbol(fum, Decl(foo_1.ts, 0, 33)) +>fum : Symbol(fum, Decl(foo_1.ts, 0, 35)) >y : Symbol(fum.y, Decl(fum.d.ts, 0, 18)) === tests/cases/conformance/externalModules/vs/foo_0.ts === diff --git a/tests/baselines/reference/topLevelFileModule.types b/tests/baselines/reference/topLevelFileModule.types index 033dbf197d3..2706fd75670 100644 --- a/tests/baselines/reference/topLevelFileModule.types +++ b/tests/baselines/reference/topLevelFileModule.types @@ -1,8 +1,8 @@ === tests/cases/conformance/externalModules/foo_1.ts === -import foo = require("vs/foo_0"); +import foo = require("./vs/foo_0"); >foo : typeof foo -import fum = require("vs/fum"); +import fum = require("./vs/fum"); >fum : typeof fum var z = foo.x + fum.y; diff --git a/tests/baselines/reference/topLevelModuleDeclarationAndFile.errors.txt b/tests/baselines/reference/topLevelModuleDeclarationAndFile.errors.txt index de343803529..cb555b7a603 100644 --- a/tests/baselines/reference/topLevelModuleDeclarationAndFile.errors.txt +++ b/tests/baselines/reference/topLevelModuleDeclarationAndFile.errors.txt @@ -9,7 +9,7 @@ tests/cases/conformance/externalModules/foo_2.ts(3,14): error TS2339: Property ' !!! error TS2339: Property 'x' does not exist on type 'typeof "vs/foo_0"'. var z2 = foo.y() + 10; // Should resolve -==== tests/cases/conformance/externalModules/vs/foo_0.ts (0 errors) ==== +==== tests/cases/conformance/externalModules/vs/foo_0/index.ts (0 errors) ==== export var x: number = 42; ==== tests/cases/conformance/externalModules/foo_1.ts (0 errors) ==== diff --git a/tests/baselines/reference/topLevelModuleDeclarationAndFile.js b/tests/baselines/reference/topLevelModuleDeclarationAndFile.js index c47de516108..e223a293d7c 100644 --- a/tests/baselines/reference/topLevelModuleDeclarationAndFile.js +++ b/tests/baselines/reference/topLevelModuleDeclarationAndFile.js @@ -1,6 +1,6 @@ //// [tests/cases/conformance/externalModules/topLevelModuleDeclarationAndFile.ts] //// -//// [foo_0.ts] +//// [index.ts] export var x: number = 42; //// [foo_1.ts] @@ -17,8 +17,6 @@ var z2 = foo.y() + 10; // Should resolve //// [foo_1.js] -//// [foo_0.js] -exports.x = 42; //// [foo_2.js] /// var foo = require("vs/foo_0"); diff --git a/tests/baselines/reference/tsxEmit1.types b/tests/baselines/reference/tsxEmit1.types index a427270354e..c34896b08ad 100644 --- a/tests/baselines/reference/tsxEmit1.types +++ b/tests/baselines/reference/tsxEmit1.types @@ -115,8 +115,8 @@ class SomeClass { >rewrites1 : JSX.Element >
{() => this}
: JSX.Element >div : any ->() => this : () => SomeClass ->this : SomeClass +>() => this : () => this +>this : this >div : any var rewrites2 =
{[p, ...p, p]}
; @@ -143,8 +143,8 @@ class SomeClass { >
this}>
: JSX.Element >div : any >a : any ->() => this : () => SomeClass ->this : SomeClass +>() => this : () => this +>this : this >div : any var rewrites5 =
; diff --git a/tests/baselines/reference/tsxParseTests2.js b/tests/baselines/reference/tsxParseTests2.js new file mode 100644 index 00000000000..c179d75776a --- /dev/null +++ b/tests/baselines/reference/tsxParseTests2.js @@ -0,0 +1,11 @@ +//// [tsxParseTests2.tsx] +declare module JSX { + interface Element { } + interface IntrinsicElements { div; span; } +} + +var x = ; + + +//// [tsxParseTests2.jsx] +var x =
; diff --git a/tests/baselines/reference/tsxParseTests2.symbols b/tests/baselines/reference/tsxParseTests2.symbols new file mode 100644 index 00000000000..17b612df786 --- /dev/null +++ b/tests/baselines/reference/tsxParseTests2.symbols @@ -0,0 +1,18 @@ +=== tests/cases/conformance/jsx/tsxParseTests2.tsx === +declare module JSX { +>JSX : Symbol(JSX, Decl(tsxParseTests2.tsx, 0, 0)) + + interface Element { } +>Element : Symbol(Element, Decl(tsxParseTests2.tsx, 0, 20)) + + interface IntrinsicElements { div; span; } +>IntrinsicElements : Symbol(IntrinsicElements, Decl(tsxParseTests2.tsx, 1, 22)) +>div : Symbol(div, Decl(tsxParseTests2.tsx, 2, 30)) +>span : Symbol(span, Decl(tsxParseTests2.tsx, 2, 35)) +} + +var x = ; +>x : Symbol(x, Decl(tsxParseTests2.tsx, 5, 3)) +>div : Symbol(JSX.IntrinsicElements.div, Decl(tsxParseTests2.tsx, 2, 30)) +>div : Symbol(JSX.IntrinsicElements.div, Decl(tsxParseTests2.tsx, 2, 30)) + diff --git a/tests/baselines/reference/tsxParseTests2.types b/tests/baselines/reference/tsxParseTests2.types new file mode 100644 index 00000000000..5714a4d3483 --- /dev/null +++ b/tests/baselines/reference/tsxParseTests2.types @@ -0,0 +1,19 @@ +=== tests/cases/conformance/jsx/tsxParseTests2.tsx === +declare module JSX { +>JSX : any + + interface Element { } +>Element : Element + + interface IntrinsicElements { div; span; } +>IntrinsicElements : IntrinsicElements +>div : any +>span : any +} + +var x = ; +>x : JSX.Element +> : JSX.Element +>div : any +>div : any + diff --git a/tests/baselines/reference/tsxReactEmit1.types b/tests/baselines/reference/tsxReactEmit1.types index e180d2b6b70..4afe4be01dc 100644 --- a/tests/baselines/reference/tsxReactEmit1.types +++ b/tests/baselines/reference/tsxReactEmit1.types @@ -119,8 +119,8 @@ class SomeClass { >rewrites1 : JSX.Element >
{() => this}
: JSX.Element >div : any ->() => this : () => SomeClass ->this : SomeClass +>() => this : () => this +>this : this >div : any var rewrites2 =
{[p, ...p, p]}
; @@ -147,8 +147,8 @@ class SomeClass { >
this}>
: JSX.Element >div : any >a : any ->() => this : () => SomeClass ->this : SomeClass +>() => this : () => this +>this : this >div : any var rewrites5 =
; diff --git a/tests/baselines/reference/typeArgumentInferenceApparentType1.symbols b/tests/baselines/reference/typeArgumentInferenceApparentType1.symbols index 28cb344da6e..557175473da 100644 --- a/tests/baselines/reference/typeArgumentInferenceApparentType1.symbols +++ b/tests/baselines/reference/typeArgumentInferenceApparentType1.symbols @@ -3,7 +3,7 @@ function method(iterable: Iterable): T { >method : Symbol(method, Decl(typeArgumentInferenceApparentType1.ts, 0, 0)) >T : Symbol(T, Decl(typeArgumentInferenceApparentType1.ts, 0, 16)) >iterable : Symbol(iterable, Decl(typeArgumentInferenceApparentType1.ts, 0, 19)) ->Iterable : Symbol(Iterable, Decl(lib.d.ts, 4369, 1)) +>Iterable : Symbol(Iterable, Decl(lib.d.ts, 4396, 1)) >T : Symbol(T, Decl(typeArgumentInferenceApparentType1.ts, 0, 16)) >T : Symbol(T, Decl(typeArgumentInferenceApparentType1.ts, 0, 16)) diff --git a/tests/baselines/reference/typeArgumentInferenceApparentType2.symbols b/tests/baselines/reference/typeArgumentInferenceApparentType2.symbols index 2287b1db082..f25ca2bba6b 100644 --- a/tests/baselines/reference/typeArgumentInferenceApparentType2.symbols +++ b/tests/baselines/reference/typeArgumentInferenceApparentType2.symbols @@ -3,14 +3,14 @@ function method(iterable: Iterable): T { >method : Symbol(method, Decl(typeArgumentInferenceApparentType2.ts, 0, 0)) >T : Symbol(T, Decl(typeArgumentInferenceApparentType2.ts, 0, 16)) >iterable : Symbol(iterable, Decl(typeArgumentInferenceApparentType2.ts, 0, 19)) ->Iterable : Symbol(Iterable, Decl(lib.d.ts, 4369, 1)) +>Iterable : Symbol(Iterable, Decl(lib.d.ts, 4396, 1)) >T : Symbol(T, Decl(typeArgumentInferenceApparentType2.ts, 0, 16)) >T : Symbol(T, Decl(typeArgumentInferenceApparentType2.ts, 0, 16)) function inner>() { >inner : Symbol(inner, Decl(typeArgumentInferenceApparentType2.ts, 0, 46)) >U : Symbol(U, Decl(typeArgumentInferenceApparentType2.ts, 1, 19)) ->Iterable : Symbol(Iterable, Decl(lib.d.ts, 4369, 1)) +>Iterable : Symbol(Iterable, Decl(lib.d.ts, 4396, 1)) >T : Symbol(T, Decl(typeArgumentInferenceApparentType2.ts, 0, 16)) var u: U; diff --git a/tests/baselines/reference/typeArgumentInferenceWithClassExpression2.errors.txt b/tests/baselines/reference/typeArgumentInferenceWithClassExpression2.errors.txt index c630944306b..eb74ff0ade0 100644 --- a/tests/baselines/reference/typeArgumentInferenceWithClassExpression2.errors.txt +++ b/tests/baselines/reference/typeArgumentInferenceWithClassExpression2.errors.txt @@ -1,5 +1,5 @@ tests/cases/conformance/es6/classExpressions/typeArgumentInferenceWithClassExpression2.ts(6,5): error TS2345: Argument of type 'typeof (Anonymous class)' is not assignable to parameter of type 'typeof (Anonymous class)'. - Type '(Anonymous class)' is not assignable to type 'foo<{}>.'. + Type '(Anonymous class)' is not assignable to type 'foo<{}>.(Anonymous class)'. Property 'prop' is missing in type '(Anonymous class)'. @@ -12,5 +12,5 @@ tests/cases/conformance/es6/classExpressions/typeArgumentInferenceWithClassExpre foo(class { static prop = "hello" }).length; ~~~~~ !!! error TS2345: Argument of type 'typeof (Anonymous class)' is not assignable to parameter of type 'typeof (Anonymous class)'. -!!! error TS2345: Type '(Anonymous class)' is not assignable to type 'foo<{}>.'. +!!! error TS2345: Type '(Anonymous class)' is not assignable to type 'foo<{}>.(Anonymous class)'. !!! error TS2345: Property 'prop' is missing in type '(Anonymous class)'. \ No newline at end of file diff --git a/tests/baselines/reference/typeCheckObjectCreationExpressionWithUndefinedCallResolutionData.js b/tests/baselines/reference/typeCheckObjectCreationExpressionWithUndefinedCallResolutionData.js index b25ad480a9d..e75fa63c4b7 100644 --- a/tests/baselines/reference/typeCheckObjectCreationExpressionWithUndefinedCallResolutionData.js +++ b/tests/baselines/reference/typeCheckObjectCreationExpressionWithUndefinedCallResolutionData.js @@ -7,7 +7,7 @@ var classes = undefined; } //// [file2.ts] -import f = require('file1'); +import f = require('./file1'); f.foo(); @@ -18,7 +18,7 @@ function foo() { } exports.foo = foo; //// [file2.js] -var f = require('file1'); +var f = require('./file1'); f.foo(); diff --git a/tests/baselines/reference/typeCheckObjectCreationExpressionWithUndefinedCallResolutionData.symbols b/tests/baselines/reference/typeCheckObjectCreationExpressionWithUndefinedCallResolutionData.symbols index 2326ee5a8cd..4a4e4ef57da 100644 --- a/tests/baselines/reference/typeCheckObjectCreationExpressionWithUndefinedCallResolutionData.symbols +++ b/tests/baselines/reference/typeCheckObjectCreationExpressionWithUndefinedCallResolutionData.symbols @@ -1,5 +1,5 @@ === tests/cases/compiler/file2.ts === -import f = require('file1'); +import f = require('./file1'); >f : Symbol(f, Decl(file2.ts, 0, 0)) f.foo(); diff --git a/tests/baselines/reference/typeCheckObjectCreationExpressionWithUndefinedCallResolutionData.types b/tests/baselines/reference/typeCheckObjectCreationExpressionWithUndefinedCallResolutionData.types index 23d2c3167d6..044de70c5cd 100644 --- a/tests/baselines/reference/typeCheckObjectCreationExpressionWithUndefinedCallResolutionData.types +++ b/tests/baselines/reference/typeCheckObjectCreationExpressionWithUndefinedCallResolutionData.types @@ -1,5 +1,5 @@ === tests/cases/compiler/file2.ts === -import f = require('file1'); +import f = require('./file1'); >f : typeof f f.foo(); diff --git a/tests/baselines/reference/typeConstraintsWithConstructSignatures.types b/tests/baselines/reference/typeConstraintsWithConstructSignatures.types index 3814c014ece..9141aec0496 100644 --- a/tests/baselines/reference/typeConstraintsWithConstructSignatures.types +++ b/tests/baselines/reference/typeConstraintsWithConstructSignatures.types @@ -23,14 +23,14 @@ class C { >x : any >new this.data() : any >this.data : T ->this : C +>this : this >data : T var x2 = new this.data2(); // should not error >x2 : any >new this.data2() : any >this.data2 : Constructable ->this : C +>this : this >data2 : Constructable } } diff --git a/tests/baselines/reference/typeGuardsInProperties.types b/tests/baselines/reference/typeGuardsInProperties.types index 2167eb88642..ca4d8b94527 100644 --- a/tests/baselines/reference/typeGuardsInProperties.types +++ b/tests/baselines/reference/typeGuardsInProperties.types @@ -35,11 +35,11 @@ class C1 { >typeof this.pp1 === "string" : boolean >typeof this.pp1 : string >this.pp1 : string | number ->this : C1 +>this : this >pp1 : string | number >"string" : string >this.pp1 : string | number ->this : C1 +>this : this >pp1 : string | number strOrNum = typeof this.pp2 === "string" && this.pp2; // string | number @@ -49,11 +49,11 @@ class C1 { >typeof this.pp2 === "string" : boolean >typeof this.pp2 : string >this.pp2 : string | number ->this : C1 +>this : this >pp2 : string | number >"string" : string >this.pp2 : string | number ->this : C1 +>this : this >pp2 : string | number strOrNum = typeof this.pp3 === "string" && this.pp3; // string | number @@ -63,11 +63,11 @@ class C1 { >typeof this.pp3 === "string" : boolean >typeof this.pp3 : string >this.pp3 : string | number ->this : C1 +>this : this >pp3 : string | number >"string" : string >this.pp3 : string | number ->this : C1 +>this : this >pp3 : string | number } } diff --git a/tests/baselines/reference/typeInferenceReturnTypeCallback.types b/tests/baselines/reference/typeInferenceReturnTypeCallback.types index fb26424d892..408e60f90ec 100644 --- a/tests/baselines/reference/typeInferenceReturnTypeCallback.types +++ b/tests/baselines/reference/typeInferenceReturnTypeCallback.types @@ -54,7 +54,7 @@ class Cons implements IList{ return this.foldRight(new Nil(), (t, acc) => { >this.foldRight(new Nil(), (t, acc) => { return new Cons(); }) : Nil >this.foldRight : (z: E, f: (t: T, acc: E) => E) => E ->this : Cons +>this : this >foldRight : (z: E, f: (t: T, acc: E) => E) => E >new Nil() : Nil >Nil : typeof Nil diff --git a/tests/baselines/reference/typeOfThis.errors.txt b/tests/baselines/reference/typeOfThis.errors.txt index bc3e9754c09..83d450570fc 100644 --- a/tests/baselines/reference/typeOfThis.errors.txt +++ b/tests/baselines/reference/typeOfThis.errors.txt @@ -1,14 +1,24 @@ +tests/cases/conformance/expressions/thisKeyword/typeOfThis.ts(14,13): error TS2403: Subsequent variable declarations must have the same type. Variable 't' must be of type 'this', but here has type 'MyTestClass'. +tests/cases/conformance/expressions/thisKeyword/typeOfThis.ts(18,13): error TS2403: Subsequent variable declarations must have the same type. Variable 'p' must be of type 'this', but here has type 'MyTestClass'. tests/cases/conformance/expressions/thisKeyword/typeOfThis.ts(22,9): error TS1056: Accessors are only available when targeting ECMAScript 5 and higher. +tests/cases/conformance/expressions/thisKeyword/typeOfThis.ts(24,13): error TS2403: Subsequent variable declarations must have the same type. Variable 'p' must be of type 'this', but here has type 'MyTestClass'. tests/cases/conformance/expressions/thisKeyword/typeOfThis.ts(27,9): error TS1056: Accessors are only available when targeting ECMAScript 5 and higher. +tests/cases/conformance/expressions/thisKeyword/typeOfThis.ts(29,13): error TS2403: Subsequent variable declarations must have the same type. Variable 'p' must be of type 'this', but here has type 'MyTestClass'. +tests/cases/conformance/expressions/thisKeyword/typeOfThis.ts(37,13): error TS2403: Subsequent variable declarations must have the same type. Variable 't' must be of type 'this', but here has type 'MyTestClass'. tests/cases/conformance/expressions/thisKeyword/typeOfThis.ts(53,16): error TS1056: Accessors are only available when targeting ECMAScript 5 and higher. tests/cases/conformance/expressions/thisKeyword/typeOfThis.ts(61,16): error TS1056: Accessors are only available when targeting ECMAScript 5 and higher. +tests/cases/conformance/expressions/thisKeyword/typeOfThis.ts(83,13): error TS2403: Subsequent variable declarations must have the same type. Variable 't' must be of type 'this', but here has type 'MyGenericTestClass'. +tests/cases/conformance/expressions/thisKeyword/typeOfThis.ts(87,13): error TS2403: Subsequent variable declarations must have the same type. Variable 'p' must be of type 'this', but here has type 'MyGenericTestClass'. tests/cases/conformance/expressions/thisKeyword/typeOfThis.ts(91,9): error TS1056: Accessors are only available when targeting ECMAScript 5 and higher. +tests/cases/conformance/expressions/thisKeyword/typeOfThis.ts(93,13): error TS2403: Subsequent variable declarations must have the same type. Variable 'p' must be of type 'this', but here has type 'MyGenericTestClass'. tests/cases/conformance/expressions/thisKeyword/typeOfThis.ts(96,9): error TS1056: Accessors are only available when targeting ECMAScript 5 and higher. +tests/cases/conformance/expressions/thisKeyword/typeOfThis.ts(98,13): error TS2403: Subsequent variable declarations must have the same type. Variable 'p' must be of type 'this', but here has type 'MyGenericTestClass'. +tests/cases/conformance/expressions/thisKeyword/typeOfThis.ts(106,13): error TS2403: Subsequent variable declarations must have the same type. Variable 't' must be of type 'this', but here has type 'MyGenericTestClass'. tests/cases/conformance/expressions/thisKeyword/typeOfThis.ts(122,16): error TS1056: Accessors are only available when targeting ECMAScript 5 and higher. tests/cases/conformance/expressions/thisKeyword/typeOfThis.ts(130,16): error TS1056: Accessors are only available when targeting ECMAScript 5 and higher. -==== tests/cases/conformance/expressions/thisKeyword/typeOfThis.ts (8 errors) ==== +==== tests/cases/conformance/expressions/thisKeyword/typeOfThis.ts (18 errors) ==== class MyTestClass { private canary: number; static staticCanary: number; @@ -23,10 +33,14 @@ tests/cases/conformance/expressions/thisKeyword/typeOfThis.ts(130,16): error TS1 //type of 'this' in member function param list is the class instance type memberFunc(t = this) { var t: MyTestClass; + ~ +!!! error TS2403: Subsequent variable declarations must have the same type. Variable 't' must be of type 'this', but here has type 'MyTestClass'. //type of 'this' in member function body is the class instance type var p = this; var p: MyTestClass; + ~ +!!! error TS2403: Subsequent variable declarations must have the same type. Variable 'p' must be of type 'this', but here has type 'MyTestClass'. } //type of 'this' in member accessor(get and set) body is the class instance type @@ -35,6 +49,8 @@ tests/cases/conformance/expressions/thisKeyword/typeOfThis.ts(130,16): error TS1 !!! error TS1056: Accessors are only available when targeting ECMAScript 5 and higher. var p = this; var p: MyTestClass; + ~ +!!! error TS2403: Subsequent variable declarations must have the same type. Variable 'p' must be of type 'this', but here has type 'MyTestClass'. return this; } set prop(v) { @@ -42,6 +58,8 @@ tests/cases/conformance/expressions/thisKeyword/typeOfThis.ts(130,16): error TS1 !!! error TS1056: Accessors are only available when targeting ECMAScript 5 and higher. var p = this; var p: MyTestClass; + ~ +!!! error TS2403: Subsequent variable declarations must have the same type. Variable 'p' must be of type 'this', but here has type 'MyTestClass'. p = v; v = p; } @@ -50,6 +68,8 @@ tests/cases/conformance/expressions/thisKeyword/typeOfThis.ts(130,16): error TS1 //type of 'this' in member variable initializer is the class instance type var t = this; var t: MyTestClass; + ~ +!!! error TS2403: Subsequent variable declarations must have the same type. Variable 't' must be of type 'this', but here has type 'MyTestClass'. }; //type of 'this' in static function param list is constructor function type @@ -100,10 +120,14 @@ tests/cases/conformance/expressions/thisKeyword/typeOfThis.ts(130,16): error TS1 //type of 'this' in member function param list is the class instance type memberFunc(t = this) { var t: MyGenericTestClass; + ~ +!!! error TS2403: Subsequent variable declarations must have the same type. Variable 't' must be of type 'this', but here has type 'MyGenericTestClass'. //type of 'this' in member function body is the class instance type var p = this; var p: MyGenericTestClass; + ~ +!!! error TS2403: Subsequent variable declarations must have the same type. Variable 'p' must be of type 'this', but here has type 'MyGenericTestClass'. } //type of 'this' in member accessor(get and set) body is the class instance type @@ -112,6 +136,8 @@ tests/cases/conformance/expressions/thisKeyword/typeOfThis.ts(130,16): error TS1 !!! error TS1056: Accessors are only available when targeting ECMAScript 5 and higher. var p = this; var p: MyGenericTestClass; + ~ +!!! error TS2403: Subsequent variable declarations must have the same type. Variable 'p' must be of type 'this', but here has type 'MyGenericTestClass'. return this; } set prop(v) { @@ -119,6 +145,8 @@ tests/cases/conformance/expressions/thisKeyword/typeOfThis.ts(130,16): error TS1 !!! error TS1056: Accessors are only available when targeting ECMAScript 5 and higher. var p = this; var p: MyGenericTestClass; + ~ +!!! error TS2403: Subsequent variable declarations must have the same type. Variable 'p' must be of type 'this', but here has type 'MyGenericTestClass'. p = v; v = p; } @@ -127,6 +155,8 @@ tests/cases/conformance/expressions/thisKeyword/typeOfThis.ts(130,16): error TS1 //type of 'this' in member variable initializer is the class instance type var t = this; var t: MyGenericTestClass; + ~ +!!! error TS2403: Subsequent variable declarations must have the same type. Variable 't' must be of type 'this', but here has type 'MyGenericTestClass'. }; //type of 'this' in static function param list is constructor function type diff --git a/tests/baselines/reference/typeOfThisInMemberFunctions.types b/tests/baselines/reference/typeOfThisInMemberFunctions.types index 2be8af1ca75..7318bae2d32 100644 --- a/tests/baselines/reference/typeOfThisInMemberFunctions.types +++ b/tests/baselines/reference/typeOfThisInMemberFunctions.types @@ -6,8 +6,8 @@ class C { >foo : () => void var r = this; ->r : C ->this : C +>r : this +>this : this } static bar() { @@ -31,8 +31,8 @@ class D { >foo : () => void var r = this; ->r : D ->this : D +>r : this +>this : this } static bar() { @@ -57,8 +57,8 @@ class E { >foo : () => void var r = this; ->r : E ->this : E +>r : this +>this : this } static bar() { diff --git a/tests/baselines/reference/typeParameterExtendingUnion1.symbols b/tests/baselines/reference/typeParameterExtendingUnion1.symbols index 97d900b5d5e..39b67e6428c 100644 --- a/tests/baselines/reference/typeParameterExtendingUnion1.symbols +++ b/tests/baselines/reference/typeParameterExtendingUnion1.symbols @@ -33,9 +33,9 @@ function f(a: T) { >T : Symbol(T, Decl(typeParameterExtendingUnion1.ts, 8, 11)) a.run(); ->a.run : Symbol(Animal.run, Decl(typeParameterExtendingUnion1.ts, 0, 14)) +>a.run : Symbol(run, Decl(typeParameterExtendingUnion1.ts, 0, 14), Decl(typeParameterExtendingUnion1.ts, 0, 14)) >a : Symbol(a, Decl(typeParameterExtendingUnion1.ts, 8, 32)) ->run : Symbol(Animal.run, Decl(typeParameterExtendingUnion1.ts, 0, 14)) +>run : Symbol(run, Decl(typeParameterExtendingUnion1.ts, 0, 14), Decl(typeParameterExtendingUnion1.ts, 0, 14)) run(a); >run : Symbol(run, Decl(typeParameterExtendingUnion1.ts, 2, 33)) diff --git a/tests/baselines/reference/typeParameterExtendingUnion2.symbols b/tests/baselines/reference/typeParameterExtendingUnion2.symbols index 21866b3df92..44d47692a82 100644 --- a/tests/baselines/reference/typeParameterExtendingUnion2.symbols +++ b/tests/baselines/reference/typeParameterExtendingUnion2.symbols @@ -20,9 +20,9 @@ function run(a: Cat | Dog) { >Dog : Symbol(Dog, Decl(typeParameterExtendingUnion2.ts, 1, 33)) a.run(); ->a.run : Symbol(Animal.run, Decl(typeParameterExtendingUnion2.ts, 0, 14)) +>a.run : Symbol(run, Decl(typeParameterExtendingUnion2.ts, 0, 14), Decl(typeParameterExtendingUnion2.ts, 0, 14)) >a : Symbol(a, Decl(typeParameterExtendingUnion2.ts, 4, 13)) ->run : Symbol(Animal.run, Decl(typeParameterExtendingUnion2.ts, 0, 14)) +>run : Symbol(run, Decl(typeParameterExtendingUnion2.ts, 0, 14), Decl(typeParameterExtendingUnion2.ts, 0, 14)) } function f(a: T) { @@ -34,9 +34,9 @@ function f(a: T) { >T : Symbol(T, Decl(typeParameterExtendingUnion2.ts, 8, 11)) a.run(); ->a.run : Symbol(Animal.run, Decl(typeParameterExtendingUnion2.ts, 0, 14)) +>a.run : Symbol(run, Decl(typeParameterExtendingUnion2.ts, 0, 14), Decl(typeParameterExtendingUnion2.ts, 0, 14)) >a : Symbol(a, Decl(typeParameterExtendingUnion2.ts, 8, 32)) ->run : Symbol(Animal.run, Decl(typeParameterExtendingUnion2.ts, 0, 14)) +>run : Symbol(run, Decl(typeParameterExtendingUnion2.ts, 0, 14), Decl(typeParameterExtendingUnion2.ts, 0, 14)) run(a); >run : Symbol(run, Decl(typeParameterExtendingUnion2.ts, 2, 33)) diff --git a/tests/baselines/reference/typeRelationships.errors.txt b/tests/baselines/reference/typeRelationships.errors.txt new file mode 100644 index 00000000000..37954415778 --- /dev/null +++ b/tests/baselines/reference/typeRelationships.errors.txt @@ -0,0 +1,54 @@ +tests/cases/conformance/types/thisType/typeRelationships.ts(9,9): error TS2322: Type 'C' is not assignable to type 'this'. +tests/cases/conformance/types/thisType/typeRelationships.ts(35,9): error TS2322: Type 'C' is not assignable to type 'D'. + Property 'self1' is missing in type 'C'. +tests/cases/conformance/types/thisType/typeRelationships.ts(36,9): error TS2322: Type 'D' is not assignable to type 'this'. + + +==== tests/cases/conformance/types/thisType/typeRelationships.ts (3 errors) ==== + class C { + self = this; + c = new C(); + foo() { + return this; + } + f1() { + this.c = this.self; + this.self = this.c; // Error + ~~~~~~~~~ +!!! error TS2322: Type 'C' is not assignable to type 'this'. + } + f2() { + var a: C[]; + var a = [this, this.c]; // C[] since this is subtype of C + var b: this[]; + var b = [this, this.self, null, undefined]; + } + f3(b: boolean) { + return b ? this.c : this.self; // Should be C + } + } + + class D extends C { + self1 = this; + self2 = this.self; + self3 = this.foo(); + d = new D(); + bar() { + this.self = this.self1; + this.self = this.self2; + this.self = this.self3; + this.self1 = this.self; + this.self2 = this.self; + this.self3 = this.self; + this.d = this.self; + this.d = this.c; // Error + ~~~~~~ +!!! error TS2322: Type 'C' is not assignable to type 'D'. +!!! error TS2322: Property 'self1' is missing in type 'C'. + this.self = this.d; // Error + ~~~~~~~~~ +!!! error TS2322: Type 'D' is not assignable to type 'this'. + this.c = this.d; + } + } + \ No newline at end of file diff --git a/tests/baselines/reference/typeRelationships.js b/tests/baselines/reference/typeRelationships.js new file mode 100644 index 00000000000..1e31009f9b7 --- /dev/null +++ b/tests/baselines/reference/typeRelationships.js @@ -0,0 +1,94 @@ +//// [typeRelationships.ts] +class C { + self = this; + c = new C(); + foo() { + return this; + } + f1() { + this.c = this.self; + this.self = this.c; // Error + } + f2() { + var a: C[]; + var a = [this, this.c]; // C[] since this is subtype of C + var b: this[]; + var b = [this, this.self, null, undefined]; + } + f3(b: boolean) { + return b ? this.c : this.self; // Should be C + } +} + +class D extends C { + self1 = this; + self2 = this.self; + self3 = this.foo(); + d = new D(); + bar() { + this.self = this.self1; + this.self = this.self2; + this.self = this.self3; + this.self1 = this.self; + this.self2 = this.self; + this.self3 = this.self; + this.d = this.self; + this.d = this.c; // Error + this.self = this.d; // Error + this.c = this.d; + } +} + + +//// [typeRelationships.js] +var __extends = (this && this.__extends) || function (d, b) { + for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; + function __() { this.constructor = d; } + d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __()); +}; +var C = (function () { + function C() { + this.self = this; + this.c = new C(); + } + C.prototype.foo = function () { + return this; + }; + C.prototype.f1 = function () { + this.c = this.self; + this.self = this.c; // Error + }; + C.prototype.f2 = function () { + var a; + var a = [this, this.c]; // C[] since this is subtype of C + var b; + var b = [this, this.self, null, undefined]; + }; + C.prototype.f3 = function (b) { + return b ? this.c : this.self; // Should be C + }; + return C; +})(); +var D = (function (_super) { + __extends(D, _super); + function D() { + _super.apply(this, arguments); + this.self1 = this; + this.self2 = this.self; + this.self3 = this.foo(); + this.d = new D(); + } + D.prototype.bar = function () { + this.self = this.self1; + this.self = this.self2; + this.self = this.self3; + this.self1 = this.self; + this.self2 = this.self; + this.self3 = this.self; + this.d = this.self; + this.d = this.c; // Error + this.self = this.d; // Error + this.c = this.d; + }; + return D; +})(C); diff --git a/tests/baselines/reference/typeResolution.symbols b/tests/baselines/reference/typeResolution.symbols index dadc38ad58e..aa0d611e52e 100644 --- a/tests/baselines/reference/typeResolution.symbols +++ b/tests/baselines/reference/typeResolution.symbols @@ -18,26 +18,26 @@ export module TopLevelModule1 { var a1: ClassA; a1.AisIn1_1_1(); >a1 : Symbol(a1, Decl(typeResolution.ts, 6, 23)) >ClassA : Symbol(ClassA, Decl(typeResolution.ts, 2, 37)) ->a1.AisIn1_1_1 : Symbol(AisIn1_1_1, Decl(typeResolution.ts, 3, 33)) +>a1.AisIn1_1_1 : Symbol(ClassA.AisIn1_1_1, Decl(typeResolution.ts, 3, 33)) >a1 : Symbol(a1, Decl(typeResolution.ts, 6, 23)) ->AisIn1_1_1 : Symbol(AisIn1_1_1, Decl(typeResolution.ts, 3, 33)) +>AisIn1_1_1 : Symbol(ClassA.AisIn1_1_1, Decl(typeResolution.ts, 3, 33)) var a2: SubSubModule1.ClassA; a2.AisIn1_1_1(); >a2 : Symbol(a2, Decl(typeResolution.ts, 7, 23)) >SubSubModule1 : Symbol(SubSubModule1, Decl(typeResolution.ts, 1, 30)) >ClassA : Symbol(ClassA, Decl(typeResolution.ts, 2, 37)) ->a2.AisIn1_1_1 : Symbol(AisIn1_1_1, Decl(typeResolution.ts, 3, 33)) +>a2.AisIn1_1_1 : Symbol(ClassA.AisIn1_1_1, Decl(typeResolution.ts, 3, 33)) >a2 : Symbol(a2, Decl(typeResolution.ts, 7, 23)) ->AisIn1_1_1 : Symbol(AisIn1_1_1, Decl(typeResolution.ts, 3, 33)) +>AisIn1_1_1 : Symbol(ClassA.AisIn1_1_1, Decl(typeResolution.ts, 3, 33)) var a3: SubModule1.SubSubModule1.ClassA; a3.AisIn1_1_1(); >a3 : Symbol(a3, Decl(typeResolution.ts, 8, 23)) >SubModule1 : Symbol(SubModule1, Decl(typeResolution.ts, 0, 31)) >SubSubModule1 : Symbol(SubSubModule1, Decl(typeResolution.ts, 1, 30)) >ClassA : Symbol(ClassA, Decl(typeResolution.ts, 2, 37)) ->a3.AisIn1_1_1 : Symbol(AisIn1_1_1, Decl(typeResolution.ts, 3, 33)) +>a3.AisIn1_1_1 : Symbol(ClassA.AisIn1_1_1, Decl(typeResolution.ts, 3, 33)) >a3 : Symbol(a3, Decl(typeResolution.ts, 8, 23)) ->AisIn1_1_1 : Symbol(AisIn1_1_1, Decl(typeResolution.ts, 3, 33)) +>AisIn1_1_1 : Symbol(ClassA.AisIn1_1_1, Decl(typeResolution.ts, 3, 33)) var a4: TopLevelModule1.SubModule1.SubSubModule1.ClassA; a4.AisIn1_1_1(); >a4 : Symbol(a4, Decl(typeResolution.ts, 9, 23)) @@ -45,9 +45,9 @@ export module TopLevelModule1 { >SubModule1 : Symbol(SubModule1, Decl(typeResolution.ts, 0, 31)) >SubSubModule1 : Symbol(SubSubModule1, Decl(typeResolution.ts, 1, 30)) >ClassA : Symbol(ClassA, Decl(typeResolution.ts, 2, 37)) ->a4.AisIn1_1_1 : Symbol(AisIn1_1_1, Decl(typeResolution.ts, 3, 33)) +>a4.AisIn1_1_1 : Symbol(ClassA.AisIn1_1_1, Decl(typeResolution.ts, 3, 33)) >a4 : Symbol(a4, Decl(typeResolution.ts, 9, 23)) ->AisIn1_1_1 : Symbol(AisIn1_1_1, Decl(typeResolution.ts, 3, 33)) +>AisIn1_1_1 : Symbol(ClassA.AisIn1_1_1, Decl(typeResolution.ts, 3, 33)) // Two variants of qualifying a peer type var b1: ClassB; b1.BisIn1_1_1(); @@ -142,9 +142,9 @@ export module TopLevelModule1 { var b1: ClassB; b1.BisIn1_1_1(); >b1 : Symbol(b1, Decl(typeResolution.ts, 34, 23)) >ClassB : Symbol(ClassB, Decl(typeResolution.ts, 22, 13)) ->b1.BisIn1_1_1 : Symbol(BisIn1_1_1, Decl(typeResolution.ts, 23, 33)) +>b1.BisIn1_1_1 : Symbol(ClassB.BisIn1_1_1, Decl(typeResolution.ts, 23, 33)) >b1 : Symbol(b1, Decl(typeResolution.ts, 34, 23)) ->BisIn1_1_1 : Symbol(BisIn1_1_1, Decl(typeResolution.ts, 23, 33)) +>BisIn1_1_1 : Symbol(ClassB.BisIn1_1_1, Decl(typeResolution.ts, 23, 33)) var b2: TopLevelModule1.SubModule1.SubSubModule1.ClassB; b2.BisIn1_1_1(); >b2 : Symbol(b2, Decl(typeResolution.ts, 35, 23)) @@ -152,9 +152,9 @@ export module TopLevelModule1 { >SubModule1 : Symbol(SubModule1, Decl(typeResolution.ts, 0, 31)) >SubSubModule1 : Symbol(SubSubModule1, Decl(typeResolution.ts, 1, 30)) >ClassB : Symbol(ClassB, Decl(typeResolution.ts, 22, 13)) ->b2.BisIn1_1_1 : Symbol(BisIn1_1_1, Decl(typeResolution.ts, 23, 33)) +>b2.BisIn1_1_1 : Symbol(ClassB.BisIn1_1_1, Decl(typeResolution.ts, 23, 33)) >b2 : Symbol(b2, Decl(typeResolution.ts, 35, 23)) ->BisIn1_1_1 : Symbol(BisIn1_1_1, Decl(typeResolution.ts, 23, 33)) +>BisIn1_1_1 : Symbol(ClassB.BisIn1_1_1, Decl(typeResolution.ts, 23, 33)) // Type only accessible from the root var c1: TopLevelModule1.SubModule2.SubSubModule2.ClassA; c1.AisIn1_2_2(); diff --git a/tests/baselines/reference/typedArrays.symbols b/tests/baselines/reference/typedArrays.symbols index dcba2e51f48..41fbab91e3c 100644 --- a/tests/baselines/reference/typedArrays.symbols +++ b/tests/baselines/reference/typedArrays.symbols @@ -8,39 +8,39 @@ function CreateTypedArrayTypes() { typedArrays[0] = Int8Array; >typedArrays : Symbol(typedArrays, Decl(typedArrays.ts, 2, 7)) ->Int8Array : Symbol(Int8Array, Decl(lib.d.ts, 1379, 42), Decl(lib.d.ts, 1652, 11), Decl(lib.d.ts, 4704, 1)) +>Int8Array : Symbol(Int8Array, Decl(lib.d.ts, 1379, 42), Decl(lib.d.ts, 1652, 11), Decl(lib.d.ts, 4731, 1)) typedArrays[1] = Uint8Array; >typedArrays : Symbol(typedArrays, Decl(typedArrays.ts, 2, 7)) ->Uint8Array : Symbol(Uint8Array, Decl(lib.d.ts, 1652, 44), Decl(lib.d.ts, 1926, 11), Decl(lib.d.ts, 4736, 1)) +>Uint8Array : Symbol(Uint8Array, Decl(lib.d.ts, 1652, 44), Decl(lib.d.ts, 1926, 11), Decl(lib.d.ts, 4763, 1)) typedArrays[2] = Int16Array; >typedArrays : Symbol(typedArrays, Decl(typedArrays.ts, 2, 7)) ->Int16Array : Symbol(Int16Array, Decl(lib.d.ts, 2199, 60), Decl(lib.d.ts, 2473, 11), Decl(lib.d.ts, 4804, 1)) +>Int16Array : Symbol(Int16Array, Decl(lib.d.ts, 2199, 60), Decl(lib.d.ts, 2473, 11), Decl(lib.d.ts, 4831, 1)) typedArrays[3] = Uint16Array; >typedArrays : Symbol(typedArrays, Decl(typedArrays.ts, 2, 7)) ->Uint16Array : Symbol(Uint16Array, Decl(lib.d.ts, 2473, 46), Decl(lib.d.ts, 2747, 11), Decl(lib.d.ts, 4840, 1)) +>Uint16Array : Symbol(Uint16Array, Decl(lib.d.ts, 2473, 46), Decl(lib.d.ts, 2747, 11), Decl(lib.d.ts, 4867, 1)) typedArrays[4] = Int32Array; >typedArrays : Symbol(typedArrays, Decl(typedArrays.ts, 2, 7)) ->Int32Array : Symbol(Int32Array, Decl(lib.d.ts, 2747, 48), Decl(lib.d.ts, 3019, 11), Decl(lib.d.ts, 4872, 1)) +>Int32Array : Symbol(Int32Array, Decl(lib.d.ts, 2747, 48), Decl(lib.d.ts, 3019, 11), Decl(lib.d.ts, 4899, 1)) typedArrays[5] = Uint32Array; >typedArrays : Symbol(typedArrays, Decl(typedArrays.ts, 2, 7)) ->Uint32Array : Symbol(Uint32Array, Decl(lib.d.ts, 3019, 46), Decl(lib.d.ts, 3292, 11), Decl(lib.d.ts, 4904, 1)) +>Uint32Array : Symbol(Uint32Array, Decl(lib.d.ts, 3019, 46), Decl(lib.d.ts, 3292, 11), Decl(lib.d.ts, 4931, 1)) typedArrays[6] = Float32Array; >typedArrays : Symbol(typedArrays, Decl(typedArrays.ts, 2, 7)) ->Float32Array : Symbol(Float32Array, Decl(lib.d.ts, 3292, 48), Decl(lib.d.ts, 3566, 11), Decl(lib.d.ts, 4936, 1)) +>Float32Array : Symbol(Float32Array, Decl(lib.d.ts, 3292, 48), Decl(lib.d.ts, 3566, 11), Decl(lib.d.ts, 4963, 1)) typedArrays[7] = Float64Array; >typedArrays : Symbol(typedArrays, Decl(typedArrays.ts, 2, 7)) ->Float64Array : Symbol(Float64Array, Decl(lib.d.ts, 3566, 50), Decl(lib.d.ts, 3839, 11), Decl(lib.d.ts, 4968, 1)) +>Float64Array : Symbol(Float64Array, Decl(lib.d.ts, 3566, 50), Decl(lib.d.ts, 3839, 11), Decl(lib.d.ts, 4995, 1)) typedArrays[8] = Uint8ClampedArray; >typedArrays : Symbol(typedArrays, Decl(typedArrays.ts, 2, 7)) ->Uint8ClampedArray : Symbol(Uint8ClampedArray, Decl(lib.d.ts, 1926, 46), Decl(lib.d.ts, 2199, 11), Decl(lib.d.ts, 4768, 1)) +>Uint8ClampedArray : Symbol(Uint8ClampedArray, Decl(lib.d.ts, 1926, 46), Decl(lib.d.ts, 2199, 11), Decl(lib.d.ts, 4795, 1)) return typedArrays; >typedArrays : Symbol(typedArrays, Decl(typedArrays.ts, 2, 7)) @@ -55,47 +55,47 @@ function CreateTypedArrayInstancesFromLength(obj: number) { typedArrays[0] = new Int8Array(obj); >typedArrays : Symbol(typedArrays, Decl(typedArrays.ts, 17, 7)) ->Int8Array : Symbol(Int8Array, Decl(lib.d.ts, 1379, 42), Decl(lib.d.ts, 1652, 11), Decl(lib.d.ts, 4704, 1)) +>Int8Array : Symbol(Int8Array, Decl(lib.d.ts, 1379, 42), Decl(lib.d.ts, 1652, 11), Decl(lib.d.ts, 4731, 1)) >obj : Symbol(obj, Decl(typedArrays.ts, 16, 45)) typedArrays[1] = new Uint8Array(obj); >typedArrays : Symbol(typedArrays, Decl(typedArrays.ts, 17, 7)) ->Uint8Array : Symbol(Uint8Array, Decl(lib.d.ts, 1652, 44), Decl(lib.d.ts, 1926, 11), Decl(lib.d.ts, 4736, 1)) +>Uint8Array : Symbol(Uint8Array, Decl(lib.d.ts, 1652, 44), Decl(lib.d.ts, 1926, 11), Decl(lib.d.ts, 4763, 1)) >obj : Symbol(obj, Decl(typedArrays.ts, 16, 45)) typedArrays[2] = new Int16Array(obj); >typedArrays : Symbol(typedArrays, Decl(typedArrays.ts, 17, 7)) ->Int16Array : Symbol(Int16Array, Decl(lib.d.ts, 2199, 60), Decl(lib.d.ts, 2473, 11), Decl(lib.d.ts, 4804, 1)) +>Int16Array : Symbol(Int16Array, Decl(lib.d.ts, 2199, 60), Decl(lib.d.ts, 2473, 11), Decl(lib.d.ts, 4831, 1)) >obj : Symbol(obj, Decl(typedArrays.ts, 16, 45)) typedArrays[3] = new Uint16Array(obj); >typedArrays : Symbol(typedArrays, Decl(typedArrays.ts, 17, 7)) ->Uint16Array : Symbol(Uint16Array, Decl(lib.d.ts, 2473, 46), Decl(lib.d.ts, 2747, 11), Decl(lib.d.ts, 4840, 1)) +>Uint16Array : Symbol(Uint16Array, Decl(lib.d.ts, 2473, 46), Decl(lib.d.ts, 2747, 11), Decl(lib.d.ts, 4867, 1)) >obj : Symbol(obj, Decl(typedArrays.ts, 16, 45)) typedArrays[4] = new Int32Array(obj); >typedArrays : Symbol(typedArrays, Decl(typedArrays.ts, 17, 7)) ->Int32Array : Symbol(Int32Array, Decl(lib.d.ts, 2747, 48), Decl(lib.d.ts, 3019, 11), Decl(lib.d.ts, 4872, 1)) +>Int32Array : Symbol(Int32Array, Decl(lib.d.ts, 2747, 48), Decl(lib.d.ts, 3019, 11), Decl(lib.d.ts, 4899, 1)) >obj : Symbol(obj, Decl(typedArrays.ts, 16, 45)) typedArrays[5] = new Uint32Array(obj); >typedArrays : Symbol(typedArrays, Decl(typedArrays.ts, 17, 7)) ->Uint32Array : Symbol(Uint32Array, Decl(lib.d.ts, 3019, 46), Decl(lib.d.ts, 3292, 11), Decl(lib.d.ts, 4904, 1)) +>Uint32Array : Symbol(Uint32Array, Decl(lib.d.ts, 3019, 46), Decl(lib.d.ts, 3292, 11), Decl(lib.d.ts, 4931, 1)) >obj : Symbol(obj, Decl(typedArrays.ts, 16, 45)) typedArrays[6] = new Float32Array(obj); >typedArrays : Symbol(typedArrays, Decl(typedArrays.ts, 17, 7)) ->Float32Array : Symbol(Float32Array, Decl(lib.d.ts, 3292, 48), Decl(lib.d.ts, 3566, 11), Decl(lib.d.ts, 4936, 1)) +>Float32Array : Symbol(Float32Array, Decl(lib.d.ts, 3292, 48), Decl(lib.d.ts, 3566, 11), Decl(lib.d.ts, 4963, 1)) >obj : Symbol(obj, Decl(typedArrays.ts, 16, 45)) typedArrays[7] = new Float64Array(obj); >typedArrays : Symbol(typedArrays, Decl(typedArrays.ts, 17, 7)) ->Float64Array : Symbol(Float64Array, Decl(lib.d.ts, 3566, 50), Decl(lib.d.ts, 3839, 11), Decl(lib.d.ts, 4968, 1)) +>Float64Array : Symbol(Float64Array, Decl(lib.d.ts, 3566, 50), Decl(lib.d.ts, 3839, 11), Decl(lib.d.ts, 4995, 1)) >obj : Symbol(obj, Decl(typedArrays.ts, 16, 45)) typedArrays[8] = new Uint8ClampedArray(obj); >typedArrays : Symbol(typedArrays, Decl(typedArrays.ts, 17, 7)) ->Uint8ClampedArray : Symbol(Uint8ClampedArray, Decl(lib.d.ts, 1926, 46), Decl(lib.d.ts, 2199, 11), Decl(lib.d.ts, 4768, 1)) +>Uint8ClampedArray : Symbol(Uint8ClampedArray, Decl(lib.d.ts, 1926, 46), Decl(lib.d.ts, 2199, 11), Decl(lib.d.ts, 4795, 1)) >obj : Symbol(obj, Decl(typedArrays.ts, 16, 45)) return typedArrays; @@ -111,47 +111,47 @@ function CreateTypedArrayInstancesFromArray(obj: number[]) { typedArrays[0] = new Int8Array(obj); >typedArrays : Symbol(typedArrays, Decl(typedArrays.ts, 32, 7)) ->Int8Array : Symbol(Int8Array, Decl(lib.d.ts, 1379, 42), Decl(lib.d.ts, 1652, 11), Decl(lib.d.ts, 4704, 1)) +>Int8Array : Symbol(Int8Array, Decl(lib.d.ts, 1379, 42), Decl(lib.d.ts, 1652, 11), Decl(lib.d.ts, 4731, 1)) >obj : Symbol(obj, Decl(typedArrays.ts, 31, 44)) typedArrays[1] = new Uint8Array(obj); >typedArrays : Symbol(typedArrays, Decl(typedArrays.ts, 32, 7)) ->Uint8Array : Symbol(Uint8Array, Decl(lib.d.ts, 1652, 44), Decl(lib.d.ts, 1926, 11), Decl(lib.d.ts, 4736, 1)) +>Uint8Array : Symbol(Uint8Array, Decl(lib.d.ts, 1652, 44), Decl(lib.d.ts, 1926, 11), Decl(lib.d.ts, 4763, 1)) >obj : Symbol(obj, Decl(typedArrays.ts, 31, 44)) typedArrays[2] = new Int16Array(obj); >typedArrays : Symbol(typedArrays, Decl(typedArrays.ts, 32, 7)) ->Int16Array : Symbol(Int16Array, Decl(lib.d.ts, 2199, 60), Decl(lib.d.ts, 2473, 11), Decl(lib.d.ts, 4804, 1)) +>Int16Array : Symbol(Int16Array, Decl(lib.d.ts, 2199, 60), Decl(lib.d.ts, 2473, 11), Decl(lib.d.ts, 4831, 1)) >obj : Symbol(obj, Decl(typedArrays.ts, 31, 44)) typedArrays[3] = new Uint16Array(obj); >typedArrays : Symbol(typedArrays, Decl(typedArrays.ts, 32, 7)) ->Uint16Array : Symbol(Uint16Array, Decl(lib.d.ts, 2473, 46), Decl(lib.d.ts, 2747, 11), Decl(lib.d.ts, 4840, 1)) +>Uint16Array : Symbol(Uint16Array, Decl(lib.d.ts, 2473, 46), Decl(lib.d.ts, 2747, 11), Decl(lib.d.ts, 4867, 1)) >obj : Symbol(obj, Decl(typedArrays.ts, 31, 44)) typedArrays[4] = new Int32Array(obj); >typedArrays : Symbol(typedArrays, Decl(typedArrays.ts, 32, 7)) ->Int32Array : Symbol(Int32Array, Decl(lib.d.ts, 2747, 48), Decl(lib.d.ts, 3019, 11), Decl(lib.d.ts, 4872, 1)) +>Int32Array : Symbol(Int32Array, Decl(lib.d.ts, 2747, 48), Decl(lib.d.ts, 3019, 11), Decl(lib.d.ts, 4899, 1)) >obj : Symbol(obj, Decl(typedArrays.ts, 31, 44)) typedArrays[5] = new Uint32Array(obj); >typedArrays : Symbol(typedArrays, Decl(typedArrays.ts, 32, 7)) ->Uint32Array : Symbol(Uint32Array, Decl(lib.d.ts, 3019, 46), Decl(lib.d.ts, 3292, 11), Decl(lib.d.ts, 4904, 1)) +>Uint32Array : Symbol(Uint32Array, Decl(lib.d.ts, 3019, 46), Decl(lib.d.ts, 3292, 11), Decl(lib.d.ts, 4931, 1)) >obj : Symbol(obj, Decl(typedArrays.ts, 31, 44)) typedArrays[6] = new Float32Array(obj); >typedArrays : Symbol(typedArrays, Decl(typedArrays.ts, 32, 7)) ->Float32Array : Symbol(Float32Array, Decl(lib.d.ts, 3292, 48), Decl(lib.d.ts, 3566, 11), Decl(lib.d.ts, 4936, 1)) +>Float32Array : Symbol(Float32Array, Decl(lib.d.ts, 3292, 48), Decl(lib.d.ts, 3566, 11), Decl(lib.d.ts, 4963, 1)) >obj : Symbol(obj, Decl(typedArrays.ts, 31, 44)) typedArrays[7] = new Float64Array(obj); >typedArrays : Symbol(typedArrays, Decl(typedArrays.ts, 32, 7)) ->Float64Array : Symbol(Float64Array, Decl(lib.d.ts, 3566, 50), Decl(lib.d.ts, 3839, 11), Decl(lib.d.ts, 4968, 1)) +>Float64Array : Symbol(Float64Array, Decl(lib.d.ts, 3566, 50), Decl(lib.d.ts, 3839, 11), Decl(lib.d.ts, 4995, 1)) >obj : Symbol(obj, Decl(typedArrays.ts, 31, 44)) typedArrays[8] = new Uint8ClampedArray(obj); >typedArrays : Symbol(typedArrays, Decl(typedArrays.ts, 32, 7)) ->Uint8ClampedArray : Symbol(Uint8ClampedArray, Decl(lib.d.ts, 1926, 46), Decl(lib.d.ts, 2199, 11), Decl(lib.d.ts, 4768, 1)) +>Uint8ClampedArray : Symbol(Uint8ClampedArray, Decl(lib.d.ts, 1926, 46), Decl(lib.d.ts, 2199, 11), Decl(lib.d.ts, 4795, 1)) >obj : Symbol(obj, Decl(typedArrays.ts, 31, 44)) return typedArrays; @@ -167,65 +167,65 @@ function CreateIntegerTypedArraysFromArray2(obj:number[]) { typedArrays[0] = Int8Array.from(obj); >typedArrays : Symbol(typedArrays, Decl(typedArrays.ts, 47, 7)) ->Int8Array.from : Symbol(Int8ArrayConstructor.from, Decl(lib.d.ts, 1641, 38), Decl(lib.d.ts, 4727, 48)) ->Int8Array : Symbol(Int8Array, Decl(lib.d.ts, 1379, 42), Decl(lib.d.ts, 1652, 11), Decl(lib.d.ts, 4704, 1)) ->from : Symbol(Int8ArrayConstructor.from, Decl(lib.d.ts, 1641, 38), Decl(lib.d.ts, 4727, 48)) +>Int8Array.from : Symbol(Int8ArrayConstructor.from, Decl(lib.d.ts, 1641, 38), Decl(lib.d.ts, 4754, 48)) +>Int8Array : Symbol(Int8Array, Decl(lib.d.ts, 1379, 42), Decl(lib.d.ts, 1652, 11), Decl(lib.d.ts, 4731, 1)) +>from : Symbol(Int8ArrayConstructor.from, Decl(lib.d.ts, 1641, 38), Decl(lib.d.ts, 4754, 48)) >obj : Symbol(obj, Decl(typedArrays.ts, 46, 44)) typedArrays[1] = Uint8Array.from(obj); >typedArrays : Symbol(typedArrays, Decl(typedArrays.ts, 47, 7)) ->Uint8Array.from : Symbol(Uint8ArrayConstructor.from, Decl(lib.d.ts, 1915, 39), Decl(lib.d.ts, 4759, 49)) ->Uint8Array : Symbol(Uint8Array, Decl(lib.d.ts, 1652, 44), Decl(lib.d.ts, 1926, 11), Decl(lib.d.ts, 4736, 1)) ->from : Symbol(Uint8ArrayConstructor.from, Decl(lib.d.ts, 1915, 39), Decl(lib.d.ts, 4759, 49)) +>Uint8Array.from : Symbol(Uint8ArrayConstructor.from, Decl(lib.d.ts, 1915, 39), Decl(lib.d.ts, 4786, 49)) +>Uint8Array : Symbol(Uint8Array, Decl(lib.d.ts, 1652, 44), Decl(lib.d.ts, 1926, 11), Decl(lib.d.ts, 4763, 1)) +>from : Symbol(Uint8ArrayConstructor.from, Decl(lib.d.ts, 1915, 39), Decl(lib.d.ts, 4786, 49)) >obj : Symbol(obj, Decl(typedArrays.ts, 46, 44)) typedArrays[2] = Int16Array.from(obj); >typedArrays : Symbol(typedArrays, Decl(typedArrays.ts, 47, 7)) ->Int16Array.from : Symbol(Int16ArrayConstructor.from, Decl(lib.d.ts, 2462, 39), Decl(lib.d.ts, 4831, 49)) ->Int16Array : Symbol(Int16Array, Decl(lib.d.ts, 2199, 60), Decl(lib.d.ts, 2473, 11), Decl(lib.d.ts, 4804, 1)) ->from : Symbol(Int16ArrayConstructor.from, Decl(lib.d.ts, 2462, 39), Decl(lib.d.ts, 4831, 49)) +>Int16Array.from : Symbol(Int16ArrayConstructor.from, Decl(lib.d.ts, 2462, 39), Decl(lib.d.ts, 4858, 49)) +>Int16Array : Symbol(Int16Array, Decl(lib.d.ts, 2199, 60), Decl(lib.d.ts, 2473, 11), Decl(lib.d.ts, 4831, 1)) +>from : Symbol(Int16ArrayConstructor.from, Decl(lib.d.ts, 2462, 39), Decl(lib.d.ts, 4858, 49)) >obj : Symbol(obj, Decl(typedArrays.ts, 46, 44)) typedArrays[3] = Uint16Array.from(obj); >typedArrays : Symbol(typedArrays, Decl(typedArrays.ts, 47, 7)) ->Uint16Array.from : Symbol(Uint16ArrayConstructor.from, Decl(lib.d.ts, 2736, 40), Decl(lib.d.ts, 4863, 50)) ->Uint16Array : Symbol(Uint16Array, Decl(lib.d.ts, 2473, 46), Decl(lib.d.ts, 2747, 11), Decl(lib.d.ts, 4840, 1)) ->from : Symbol(Uint16ArrayConstructor.from, Decl(lib.d.ts, 2736, 40), Decl(lib.d.ts, 4863, 50)) +>Uint16Array.from : Symbol(Uint16ArrayConstructor.from, Decl(lib.d.ts, 2736, 40), Decl(lib.d.ts, 4890, 50)) +>Uint16Array : Symbol(Uint16Array, Decl(lib.d.ts, 2473, 46), Decl(lib.d.ts, 2747, 11), Decl(lib.d.ts, 4867, 1)) +>from : Symbol(Uint16ArrayConstructor.from, Decl(lib.d.ts, 2736, 40), Decl(lib.d.ts, 4890, 50)) >obj : Symbol(obj, Decl(typedArrays.ts, 46, 44)) typedArrays[4] = Int32Array.from(obj); >typedArrays : Symbol(typedArrays, Decl(typedArrays.ts, 47, 7)) ->Int32Array.from : Symbol(Int32ArrayConstructor.from, Decl(lib.d.ts, 3009, 39), Decl(lib.d.ts, 4895, 49)) ->Int32Array : Symbol(Int32Array, Decl(lib.d.ts, 2747, 48), Decl(lib.d.ts, 3019, 11), Decl(lib.d.ts, 4872, 1)) ->from : Symbol(Int32ArrayConstructor.from, Decl(lib.d.ts, 3009, 39), Decl(lib.d.ts, 4895, 49)) +>Int32Array.from : Symbol(Int32ArrayConstructor.from, Decl(lib.d.ts, 3009, 39), Decl(lib.d.ts, 4922, 49)) +>Int32Array : Symbol(Int32Array, Decl(lib.d.ts, 2747, 48), Decl(lib.d.ts, 3019, 11), Decl(lib.d.ts, 4899, 1)) +>from : Symbol(Int32ArrayConstructor.from, Decl(lib.d.ts, 3009, 39), Decl(lib.d.ts, 4922, 49)) >obj : Symbol(obj, Decl(typedArrays.ts, 46, 44)) typedArrays[5] = Uint32Array.from(obj); >typedArrays : Symbol(typedArrays, Decl(typedArrays.ts, 47, 7)) ->Uint32Array.from : Symbol(Uint32ArrayConstructor.from, Decl(lib.d.ts, 3282, 40), Decl(lib.d.ts, 4927, 50)) ->Uint32Array : Symbol(Uint32Array, Decl(lib.d.ts, 3019, 46), Decl(lib.d.ts, 3292, 11), Decl(lib.d.ts, 4904, 1)) ->from : Symbol(Uint32ArrayConstructor.from, Decl(lib.d.ts, 3282, 40), Decl(lib.d.ts, 4927, 50)) +>Uint32Array.from : Symbol(Uint32ArrayConstructor.from, Decl(lib.d.ts, 3282, 40), Decl(lib.d.ts, 4954, 50)) +>Uint32Array : Symbol(Uint32Array, Decl(lib.d.ts, 3019, 46), Decl(lib.d.ts, 3292, 11), Decl(lib.d.ts, 4931, 1)) +>from : Symbol(Uint32ArrayConstructor.from, Decl(lib.d.ts, 3282, 40), Decl(lib.d.ts, 4954, 50)) >obj : Symbol(obj, Decl(typedArrays.ts, 46, 44)) typedArrays[6] = Float32Array.from(obj); >typedArrays : Symbol(typedArrays, Decl(typedArrays.ts, 47, 7)) ->Float32Array.from : Symbol(Float32ArrayConstructor.from, Decl(lib.d.ts, 3555, 41), Decl(lib.d.ts, 4959, 51)) ->Float32Array : Symbol(Float32Array, Decl(lib.d.ts, 3292, 48), Decl(lib.d.ts, 3566, 11), Decl(lib.d.ts, 4936, 1)) ->from : Symbol(Float32ArrayConstructor.from, Decl(lib.d.ts, 3555, 41), Decl(lib.d.ts, 4959, 51)) +>Float32Array.from : Symbol(Float32ArrayConstructor.from, Decl(lib.d.ts, 3555, 41), Decl(lib.d.ts, 4986, 51)) +>Float32Array : Symbol(Float32Array, Decl(lib.d.ts, 3292, 48), Decl(lib.d.ts, 3566, 11), Decl(lib.d.ts, 4963, 1)) +>from : Symbol(Float32ArrayConstructor.from, Decl(lib.d.ts, 3555, 41), Decl(lib.d.ts, 4986, 51)) >obj : Symbol(obj, Decl(typedArrays.ts, 46, 44)) typedArrays[7] = Float64Array.from(obj); >typedArrays : Symbol(typedArrays, Decl(typedArrays.ts, 47, 7)) ->Float64Array.from : Symbol(Float64ArrayConstructor.from, Decl(lib.d.ts, 3829, 41), Decl(lib.d.ts, 4991, 51)) ->Float64Array : Symbol(Float64Array, Decl(lib.d.ts, 3566, 50), Decl(lib.d.ts, 3839, 11), Decl(lib.d.ts, 4968, 1)) ->from : Symbol(Float64ArrayConstructor.from, Decl(lib.d.ts, 3829, 41), Decl(lib.d.ts, 4991, 51)) +>Float64Array.from : Symbol(Float64ArrayConstructor.from, Decl(lib.d.ts, 3829, 41), Decl(lib.d.ts, 5018, 51)) +>Float64Array : Symbol(Float64Array, Decl(lib.d.ts, 3566, 50), Decl(lib.d.ts, 3839, 11), Decl(lib.d.ts, 4995, 1)) +>from : Symbol(Float64ArrayConstructor.from, Decl(lib.d.ts, 3829, 41), Decl(lib.d.ts, 5018, 51)) >obj : Symbol(obj, Decl(typedArrays.ts, 46, 44)) typedArrays[8] = Uint8ClampedArray.from(obj); >typedArrays : Symbol(typedArrays, Decl(typedArrays.ts, 47, 7)) ->Uint8ClampedArray.from : Symbol(Uint8ClampedArrayConstructor.from, Decl(lib.d.ts, 2189, 46), Decl(lib.d.ts, 4794, 56)) ->Uint8ClampedArray : Symbol(Uint8ClampedArray, Decl(lib.d.ts, 1926, 46), Decl(lib.d.ts, 2199, 11), Decl(lib.d.ts, 4768, 1)) ->from : Symbol(Uint8ClampedArrayConstructor.from, Decl(lib.d.ts, 2189, 46), Decl(lib.d.ts, 4794, 56)) +>Uint8ClampedArray.from : Symbol(Uint8ClampedArrayConstructor.from, Decl(lib.d.ts, 2189, 46), Decl(lib.d.ts, 4821, 56)) +>Uint8ClampedArray : Symbol(Uint8ClampedArray, Decl(lib.d.ts, 1926, 46), Decl(lib.d.ts, 2199, 11), Decl(lib.d.ts, 4795, 1)) +>from : Symbol(Uint8ClampedArrayConstructor.from, Decl(lib.d.ts, 2189, 46), Decl(lib.d.ts, 4821, 56)) >obj : Symbol(obj, Decl(typedArrays.ts, 46, 44)) return typedArrays; @@ -242,65 +242,65 @@ function CreateIntegerTypedArraysFromArrayLike(obj:ArrayLike) { typedArrays[0] = Int8Array.from(obj); >typedArrays : Symbol(typedArrays, Decl(typedArrays.ts, 62, 7)) ->Int8Array.from : Symbol(Int8ArrayConstructor.from, Decl(lib.d.ts, 1641, 38), Decl(lib.d.ts, 4727, 48)) ->Int8Array : Symbol(Int8Array, Decl(lib.d.ts, 1379, 42), Decl(lib.d.ts, 1652, 11), Decl(lib.d.ts, 4704, 1)) ->from : Symbol(Int8ArrayConstructor.from, Decl(lib.d.ts, 1641, 38), Decl(lib.d.ts, 4727, 48)) +>Int8Array.from : Symbol(Int8ArrayConstructor.from, Decl(lib.d.ts, 1641, 38), Decl(lib.d.ts, 4754, 48)) +>Int8Array : Symbol(Int8Array, Decl(lib.d.ts, 1379, 42), Decl(lib.d.ts, 1652, 11), Decl(lib.d.ts, 4731, 1)) +>from : Symbol(Int8ArrayConstructor.from, Decl(lib.d.ts, 1641, 38), Decl(lib.d.ts, 4754, 48)) >obj : Symbol(obj, Decl(typedArrays.ts, 61, 47)) typedArrays[1] = Uint8Array.from(obj); >typedArrays : Symbol(typedArrays, Decl(typedArrays.ts, 62, 7)) ->Uint8Array.from : Symbol(Uint8ArrayConstructor.from, Decl(lib.d.ts, 1915, 39), Decl(lib.d.ts, 4759, 49)) ->Uint8Array : Symbol(Uint8Array, Decl(lib.d.ts, 1652, 44), Decl(lib.d.ts, 1926, 11), Decl(lib.d.ts, 4736, 1)) ->from : Symbol(Uint8ArrayConstructor.from, Decl(lib.d.ts, 1915, 39), Decl(lib.d.ts, 4759, 49)) +>Uint8Array.from : Symbol(Uint8ArrayConstructor.from, Decl(lib.d.ts, 1915, 39), Decl(lib.d.ts, 4786, 49)) +>Uint8Array : Symbol(Uint8Array, Decl(lib.d.ts, 1652, 44), Decl(lib.d.ts, 1926, 11), Decl(lib.d.ts, 4763, 1)) +>from : Symbol(Uint8ArrayConstructor.from, Decl(lib.d.ts, 1915, 39), Decl(lib.d.ts, 4786, 49)) >obj : Symbol(obj, Decl(typedArrays.ts, 61, 47)) typedArrays[2] = Int16Array.from(obj); >typedArrays : Symbol(typedArrays, Decl(typedArrays.ts, 62, 7)) ->Int16Array.from : Symbol(Int16ArrayConstructor.from, Decl(lib.d.ts, 2462, 39), Decl(lib.d.ts, 4831, 49)) ->Int16Array : Symbol(Int16Array, Decl(lib.d.ts, 2199, 60), Decl(lib.d.ts, 2473, 11), Decl(lib.d.ts, 4804, 1)) ->from : Symbol(Int16ArrayConstructor.from, Decl(lib.d.ts, 2462, 39), Decl(lib.d.ts, 4831, 49)) +>Int16Array.from : Symbol(Int16ArrayConstructor.from, Decl(lib.d.ts, 2462, 39), Decl(lib.d.ts, 4858, 49)) +>Int16Array : Symbol(Int16Array, Decl(lib.d.ts, 2199, 60), Decl(lib.d.ts, 2473, 11), Decl(lib.d.ts, 4831, 1)) +>from : Symbol(Int16ArrayConstructor.from, Decl(lib.d.ts, 2462, 39), Decl(lib.d.ts, 4858, 49)) >obj : Symbol(obj, Decl(typedArrays.ts, 61, 47)) typedArrays[3] = Uint16Array.from(obj); >typedArrays : Symbol(typedArrays, Decl(typedArrays.ts, 62, 7)) ->Uint16Array.from : Symbol(Uint16ArrayConstructor.from, Decl(lib.d.ts, 2736, 40), Decl(lib.d.ts, 4863, 50)) ->Uint16Array : Symbol(Uint16Array, Decl(lib.d.ts, 2473, 46), Decl(lib.d.ts, 2747, 11), Decl(lib.d.ts, 4840, 1)) ->from : Symbol(Uint16ArrayConstructor.from, Decl(lib.d.ts, 2736, 40), Decl(lib.d.ts, 4863, 50)) +>Uint16Array.from : Symbol(Uint16ArrayConstructor.from, Decl(lib.d.ts, 2736, 40), Decl(lib.d.ts, 4890, 50)) +>Uint16Array : Symbol(Uint16Array, Decl(lib.d.ts, 2473, 46), Decl(lib.d.ts, 2747, 11), Decl(lib.d.ts, 4867, 1)) +>from : Symbol(Uint16ArrayConstructor.from, Decl(lib.d.ts, 2736, 40), Decl(lib.d.ts, 4890, 50)) >obj : Symbol(obj, Decl(typedArrays.ts, 61, 47)) typedArrays[4] = Int32Array.from(obj); >typedArrays : Symbol(typedArrays, Decl(typedArrays.ts, 62, 7)) ->Int32Array.from : Symbol(Int32ArrayConstructor.from, Decl(lib.d.ts, 3009, 39), Decl(lib.d.ts, 4895, 49)) ->Int32Array : Symbol(Int32Array, Decl(lib.d.ts, 2747, 48), Decl(lib.d.ts, 3019, 11), Decl(lib.d.ts, 4872, 1)) ->from : Symbol(Int32ArrayConstructor.from, Decl(lib.d.ts, 3009, 39), Decl(lib.d.ts, 4895, 49)) +>Int32Array.from : Symbol(Int32ArrayConstructor.from, Decl(lib.d.ts, 3009, 39), Decl(lib.d.ts, 4922, 49)) +>Int32Array : Symbol(Int32Array, Decl(lib.d.ts, 2747, 48), Decl(lib.d.ts, 3019, 11), Decl(lib.d.ts, 4899, 1)) +>from : Symbol(Int32ArrayConstructor.from, Decl(lib.d.ts, 3009, 39), Decl(lib.d.ts, 4922, 49)) >obj : Symbol(obj, Decl(typedArrays.ts, 61, 47)) typedArrays[5] = Uint32Array.from(obj); >typedArrays : Symbol(typedArrays, Decl(typedArrays.ts, 62, 7)) ->Uint32Array.from : Symbol(Uint32ArrayConstructor.from, Decl(lib.d.ts, 3282, 40), Decl(lib.d.ts, 4927, 50)) ->Uint32Array : Symbol(Uint32Array, Decl(lib.d.ts, 3019, 46), Decl(lib.d.ts, 3292, 11), Decl(lib.d.ts, 4904, 1)) ->from : Symbol(Uint32ArrayConstructor.from, Decl(lib.d.ts, 3282, 40), Decl(lib.d.ts, 4927, 50)) +>Uint32Array.from : Symbol(Uint32ArrayConstructor.from, Decl(lib.d.ts, 3282, 40), Decl(lib.d.ts, 4954, 50)) +>Uint32Array : Symbol(Uint32Array, Decl(lib.d.ts, 3019, 46), Decl(lib.d.ts, 3292, 11), Decl(lib.d.ts, 4931, 1)) +>from : Symbol(Uint32ArrayConstructor.from, Decl(lib.d.ts, 3282, 40), Decl(lib.d.ts, 4954, 50)) >obj : Symbol(obj, Decl(typedArrays.ts, 61, 47)) typedArrays[6] = Float32Array.from(obj); >typedArrays : Symbol(typedArrays, Decl(typedArrays.ts, 62, 7)) ->Float32Array.from : Symbol(Float32ArrayConstructor.from, Decl(lib.d.ts, 3555, 41), Decl(lib.d.ts, 4959, 51)) ->Float32Array : Symbol(Float32Array, Decl(lib.d.ts, 3292, 48), Decl(lib.d.ts, 3566, 11), Decl(lib.d.ts, 4936, 1)) ->from : Symbol(Float32ArrayConstructor.from, Decl(lib.d.ts, 3555, 41), Decl(lib.d.ts, 4959, 51)) +>Float32Array.from : Symbol(Float32ArrayConstructor.from, Decl(lib.d.ts, 3555, 41), Decl(lib.d.ts, 4986, 51)) +>Float32Array : Symbol(Float32Array, Decl(lib.d.ts, 3292, 48), Decl(lib.d.ts, 3566, 11), Decl(lib.d.ts, 4963, 1)) +>from : Symbol(Float32ArrayConstructor.from, Decl(lib.d.ts, 3555, 41), Decl(lib.d.ts, 4986, 51)) >obj : Symbol(obj, Decl(typedArrays.ts, 61, 47)) typedArrays[7] = Float64Array.from(obj); >typedArrays : Symbol(typedArrays, Decl(typedArrays.ts, 62, 7)) ->Float64Array.from : Symbol(Float64ArrayConstructor.from, Decl(lib.d.ts, 3829, 41), Decl(lib.d.ts, 4991, 51)) ->Float64Array : Symbol(Float64Array, Decl(lib.d.ts, 3566, 50), Decl(lib.d.ts, 3839, 11), Decl(lib.d.ts, 4968, 1)) ->from : Symbol(Float64ArrayConstructor.from, Decl(lib.d.ts, 3829, 41), Decl(lib.d.ts, 4991, 51)) +>Float64Array.from : Symbol(Float64ArrayConstructor.from, Decl(lib.d.ts, 3829, 41), Decl(lib.d.ts, 5018, 51)) +>Float64Array : Symbol(Float64Array, Decl(lib.d.ts, 3566, 50), Decl(lib.d.ts, 3839, 11), Decl(lib.d.ts, 4995, 1)) +>from : Symbol(Float64ArrayConstructor.from, Decl(lib.d.ts, 3829, 41), Decl(lib.d.ts, 5018, 51)) >obj : Symbol(obj, Decl(typedArrays.ts, 61, 47)) typedArrays[8] = Uint8ClampedArray.from(obj); >typedArrays : Symbol(typedArrays, Decl(typedArrays.ts, 62, 7)) ->Uint8ClampedArray.from : Symbol(Uint8ClampedArrayConstructor.from, Decl(lib.d.ts, 2189, 46), Decl(lib.d.ts, 4794, 56)) ->Uint8ClampedArray : Symbol(Uint8ClampedArray, Decl(lib.d.ts, 1926, 46), Decl(lib.d.ts, 2199, 11), Decl(lib.d.ts, 4768, 1)) ->from : Symbol(Uint8ClampedArrayConstructor.from, Decl(lib.d.ts, 2189, 46), Decl(lib.d.ts, 4794, 56)) +>Uint8ClampedArray.from : Symbol(Uint8ClampedArrayConstructor.from, Decl(lib.d.ts, 2189, 46), Decl(lib.d.ts, 4821, 56)) +>Uint8ClampedArray : Symbol(Uint8ClampedArray, Decl(lib.d.ts, 1926, 46), Decl(lib.d.ts, 2199, 11), Decl(lib.d.ts, 4795, 1)) +>from : Symbol(Uint8ClampedArrayConstructor.from, Decl(lib.d.ts, 2189, 46), Decl(lib.d.ts, 4821, 56)) >obj : Symbol(obj, Decl(typedArrays.ts, 61, 47)) return typedArrays; @@ -333,55 +333,55 @@ function CreateTypedArraysOf2() { typedArrays[0] = Int8Array.of(1,2,3,4); >typedArrays : Symbol(typedArrays, Decl(typedArrays.ts, 94, 7)) >Int8Array.of : Symbol(Int8ArrayConstructor.of, Decl(lib.d.ts, 1635, 30)) ->Int8Array : Symbol(Int8Array, Decl(lib.d.ts, 1379, 42), Decl(lib.d.ts, 1652, 11), Decl(lib.d.ts, 4704, 1)) +>Int8Array : Symbol(Int8Array, Decl(lib.d.ts, 1379, 42), Decl(lib.d.ts, 1652, 11), Decl(lib.d.ts, 4731, 1)) >of : Symbol(Int8ArrayConstructor.of, Decl(lib.d.ts, 1635, 30)) typedArrays[1] = Uint8Array.of(1,2,3,4); >typedArrays : Symbol(typedArrays, Decl(typedArrays.ts, 94, 7)) >Uint8Array.of : Symbol(Uint8ArrayConstructor.of, Decl(lib.d.ts, 1909, 30)) ->Uint8Array : Symbol(Uint8Array, Decl(lib.d.ts, 1652, 44), Decl(lib.d.ts, 1926, 11), Decl(lib.d.ts, 4736, 1)) +>Uint8Array : Symbol(Uint8Array, Decl(lib.d.ts, 1652, 44), Decl(lib.d.ts, 1926, 11), Decl(lib.d.ts, 4763, 1)) >of : Symbol(Uint8ArrayConstructor.of, Decl(lib.d.ts, 1909, 30)) typedArrays[2] = Int16Array.of(1,2,3,4); >typedArrays : Symbol(typedArrays, Decl(typedArrays.ts, 94, 7)) >Int16Array.of : Symbol(Int16ArrayConstructor.of, Decl(lib.d.ts, 2456, 30)) ->Int16Array : Symbol(Int16Array, Decl(lib.d.ts, 2199, 60), Decl(lib.d.ts, 2473, 11), Decl(lib.d.ts, 4804, 1)) +>Int16Array : Symbol(Int16Array, Decl(lib.d.ts, 2199, 60), Decl(lib.d.ts, 2473, 11), Decl(lib.d.ts, 4831, 1)) >of : Symbol(Int16ArrayConstructor.of, Decl(lib.d.ts, 2456, 30)) typedArrays[3] = Uint16Array.of(1,2,3,4); >typedArrays : Symbol(typedArrays, Decl(typedArrays.ts, 94, 7)) >Uint16Array.of : Symbol(Uint16ArrayConstructor.of, Decl(lib.d.ts, 2730, 30)) ->Uint16Array : Symbol(Uint16Array, Decl(lib.d.ts, 2473, 46), Decl(lib.d.ts, 2747, 11), Decl(lib.d.ts, 4840, 1)) +>Uint16Array : Symbol(Uint16Array, Decl(lib.d.ts, 2473, 46), Decl(lib.d.ts, 2747, 11), Decl(lib.d.ts, 4867, 1)) >of : Symbol(Uint16ArrayConstructor.of, Decl(lib.d.ts, 2730, 30)) typedArrays[4] = Int32Array.of(1,2,3,4); >typedArrays : Symbol(typedArrays, Decl(typedArrays.ts, 94, 7)) >Int32Array.of : Symbol(Int32ArrayConstructor.of, Decl(lib.d.ts, 3003, 30)) ->Int32Array : Symbol(Int32Array, Decl(lib.d.ts, 2747, 48), Decl(lib.d.ts, 3019, 11), Decl(lib.d.ts, 4872, 1)) +>Int32Array : Symbol(Int32Array, Decl(lib.d.ts, 2747, 48), Decl(lib.d.ts, 3019, 11), Decl(lib.d.ts, 4899, 1)) >of : Symbol(Int32ArrayConstructor.of, Decl(lib.d.ts, 3003, 30)) typedArrays[5] = Uint32Array.of(1,2,3,4); >typedArrays : Symbol(typedArrays, Decl(typedArrays.ts, 94, 7)) >Uint32Array.of : Symbol(Uint32ArrayConstructor.of, Decl(lib.d.ts, 3276, 30)) ->Uint32Array : Symbol(Uint32Array, Decl(lib.d.ts, 3019, 46), Decl(lib.d.ts, 3292, 11), Decl(lib.d.ts, 4904, 1)) +>Uint32Array : Symbol(Uint32Array, Decl(lib.d.ts, 3019, 46), Decl(lib.d.ts, 3292, 11), Decl(lib.d.ts, 4931, 1)) >of : Symbol(Uint32ArrayConstructor.of, Decl(lib.d.ts, 3276, 30)) typedArrays[6] = Float32Array.of(1,2,3,4); >typedArrays : Symbol(typedArrays, Decl(typedArrays.ts, 94, 7)) >Float32Array.of : Symbol(Float32ArrayConstructor.of, Decl(lib.d.ts, 3549, 30)) ->Float32Array : Symbol(Float32Array, Decl(lib.d.ts, 3292, 48), Decl(lib.d.ts, 3566, 11), Decl(lib.d.ts, 4936, 1)) +>Float32Array : Symbol(Float32Array, Decl(lib.d.ts, 3292, 48), Decl(lib.d.ts, 3566, 11), Decl(lib.d.ts, 4963, 1)) >of : Symbol(Float32ArrayConstructor.of, Decl(lib.d.ts, 3549, 30)) typedArrays[7] = Float64Array.of(1,2,3,4); >typedArrays : Symbol(typedArrays, Decl(typedArrays.ts, 94, 7)) >Float64Array.of : Symbol(Float64ArrayConstructor.of, Decl(lib.d.ts, 3823, 30)) ->Float64Array : Symbol(Float64Array, Decl(lib.d.ts, 3566, 50), Decl(lib.d.ts, 3839, 11), Decl(lib.d.ts, 4968, 1)) +>Float64Array : Symbol(Float64Array, Decl(lib.d.ts, 3566, 50), Decl(lib.d.ts, 3839, 11), Decl(lib.d.ts, 4995, 1)) >of : Symbol(Float64ArrayConstructor.of, Decl(lib.d.ts, 3823, 30)) typedArrays[8] = Uint8ClampedArray.of(1,2,3,4); >typedArrays : Symbol(typedArrays, Decl(typedArrays.ts, 94, 7)) >Uint8ClampedArray.of : Symbol(Uint8ClampedArrayConstructor.of, Decl(lib.d.ts, 2183, 30)) ->Uint8ClampedArray : Symbol(Uint8ClampedArray, Decl(lib.d.ts, 1926, 46), Decl(lib.d.ts, 2199, 11), Decl(lib.d.ts, 4768, 1)) +>Uint8ClampedArray : Symbol(Uint8ClampedArray, Decl(lib.d.ts, 1926, 46), Decl(lib.d.ts, 2199, 11), Decl(lib.d.ts, 4795, 1)) >of : Symbol(Uint8ClampedArrayConstructor.of, Decl(lib.d.ts, 2183, 30)) return typedArrays; @@ -401,73 +401,73 @@ function CreateTypedArraysFromMapFn(obj:ArrayLike, mapFn: (n:number, v:n typedArrays[0] = Int8Array.from(obj, mapFn); >typedArrays : Symbol(typedArrays, Decl(typedArrays.ts, 109, 7)) ->Int8Array.from : Symbol(Int8ArrayConstructor.from, Decl(lib.d.ts, 1641, 38), Decl(lib.d.ts, 4727, 48)) ->Int8Array : Symbol(Int8Array, Decl(lib.d.ts, 1379, 42), Decl(lib.d.ts, 1652, 11), Decl(lib.d.ts, 4704, 1)) ->from : Symbol(Int8ArrayConstructor.from, Decl(lib.d.ts, 1641, 38), Decl(lib.d.ts, 4727, 48)) +>Int8Array.from : Symbol(Int8ArrayConstructor.from, Decl(lib.d.ts, 1641, 38), Decl(lib.d.ts, 4754, 48)) +>Int8Array : Symbol(Int8Array, Decl(lib.d.ts, 1379, 42), Decl(lib.d.ts, 1652, 11), Decl(lib.d.ts, 4731, 1)) +>from : Symbol(Int8ArrayConstructor.from, Decl(lib.d.ts, 1641, 38), Decl(lib.d.ts, 4754, 48)) >obj : Symbol(obj, Decl(typedArrays.ts, 108, 36)) >mapFn : Symbol(mapFn, Decl(typedArrays.ts, 108, 58)) typedArrays[1] = Uint8Array.from(obj, mapFn); >typedArrays : Symbol(typedArrays, Decl(typedArrays.ts, 109, 7)) ->Uint8Array.from : Symbol(Uint8ArrayConstructor.from, Decl(lib.d.ts, 1915, 39), Decl(lib.d.ts, 4759, 49)) ->Uint8Array : Symbol(Uint8Array, Decl(lib.d.ts, 1652, 44), Decl(lib.d.ts, 1926, 11), Decl(lib.d.ts, 4736, 1)) ->from : Symbol(Uint8ArrayConstructor.from, Decl(lib.d.ts, 1915, 39), Decl(lib.d.ts, 4759, 49)) +>Uint8Array.from : Symbol(Uint8ArrayConstructor.from, Decl(lib.d.ts, 1915, 39), Decl(lib.d.ts, 4786, 49)) +>Uint8Array : Symbol(Uint8Array, Decl(lib.d.ts, 1652, 44), Decl(lib.d.ts, 1926, 11), Decl(lib.d.ts, 4763, 1)) +>from : Symbol(Uint8ArrayConstructor.from, Decl(lib.d.ts, 1915, 39), Decl(lib.d.ts, 4786, 49)) >obj : Symbol(obj, Decl(typedArrays.ts, 108, 36)) >mapFn : Symbol(mapFn, Decl(typedArrays.ts, 108, 58)) typedArrays[2] = Int16Array.from(obj, mapFn); >typedArrays : Symbol(typedArrays, Decl(typedArrays.ts, 109, 7)) ->Int16Array.from : Symbol(Int16ArrayConstructor.from, Decl(lib.d.ts, 2462, 39), Decl(lib.d.ts, 4831, 49)) ->Int16Array : Symbol(Int16Array, Decl(lib.d.ts, 2199, 60), Decl(lib.d.ts, 2473, 11), Decl(lib.d.ts, 4804, 1)) ->from : Symbol(Int16ArrayConstructor.from, Decl(lib.d.ts, 2462, 39), Decl(lib.d.ts, 4831, 49)) +>Int16Array.from : Symbol(Int16ArrayConstructor.from, Decl(lib.d.ts, 2462, 39), Decl(lib.d.ts, 4858, 49)) +>Int16Array : Symbol(Int16Array, Decl(lib.d.ts, 2199, 60), Decl(lib.d.ts, 2473, 11), Decl(lib.d.ts, 4831, 1)) +>from : Symbol(Int16ArrayConstructor.from, Decl(lib.d.ts, 2462, 39), Decl(lib.d.ts, 4858, 49)) >obj : Symbol(obj, Decl(typedArrays.ts, 108, 36)) >mapFn : Symbol(mapFn, Decl(typedArrays.ts, 108, 58)) typedArrays[3] = Uint16Array.from(obj, mapFn); >typedArrays : Symbol(typedArrays, Decl(typedArrays.ts, 109, 7)) ->Uint16Array.from : Symbol(Uint16ArrayConstructor.from, Decl(lib.d.ts, 2736, 40), Decl(lib.d.ts, 4863, 50)) ->Uint16Array : Symbol(Uint16Array, Decl(lib.d.ts, 2473, 46), Decl(lib.d.ts, 2747, 11), Decl(lib.d.ts, 4840, 1)) ->from : Symbol(Uint16ArrayConstructor.from, Decl(lib.d.ts, 2736, 40), Decl(lib.d.ts, 4863, 50)) +>Uint16Array.from : Symbol(Uint16ArrayConstructor.from, Decl(lib.d.ts, 2736, 40), Decl(lib.d.ts, 4890, 50)) +>Uint16Array : Symbol(Uint16Array, Decl(lib.d.ts, 2473, 46), Decl(lib.d.ts, 2747, 11), Decl(lib.d.ts, 4867, 1)) +>from : Symbol(Uint16ArrayConstructor.from, Decl(lib.d.ts, 2736, 40), Decl(lib.d.ts, 4890, 50)) >obj : Symbol(obj, Decl(typedArrays.ts, 108, 36)) >mapFn : Symbol(mapFn, Decl(typedArrays.ts, 108, 58)) typedArrays[4] = Int32Array.from(obj, mapFn); >typedArrays : Symbol(typedArrays, Decl(typedArrays.ts, 109, 7)) ->Int32Array.from : Symbol(Int32ArrayConstructor.from, Decl(lib.d.ts, 3009, 39), Decl(lib.d.ts, 4895, 49)) ->Int32Array : Symbol(Int32Array, Decl(lib.d.ts, 2747, 48), Decl(lib.d.ts, 3019, 11), Decl(lib.d.ts, 4872, 1)) ->from : Symbol(Int32ArrayConstructor.from, Decl(lib.d.ts, 3009, 39), Decl(lib.d.ts, 4895, 49)) +>Int32Array.from : Symbol(Int32ArrayConstructor.from, Decl(lib.d.ts, 3009, 39), Decl(lib.d.ts, 4922, 49)) +>Int32Array : Symbol(Int32Array, Decl(lib.d.ts, 2747, 48), Decl(lib.d.ts, 3019, 11), Decl(lib.d.ts, 4899, 1)) +>from : Symbol(Int32ArrayConstructor.from, Decl(lib.d.ts, 3009, 39), Decl(lib.d.ts, 4922, 49)) >obj : Symbol(obj, Decl(typedArrays.ts, 108, 36)) >mapFn : Symbol(mapFn, Decl(typedArrays.ts, 108, 58)) typedArrays[5] = Uint32Array.from(obj, mapFn); >typedArrays : Symbol(typedArrays, Decl(typedArrays.ts, 109, 7)) ->Uint32Array.from : Symbol(Uint32ArrayConstructor.from, Decl(lib.d.ts, 3282, 40), Decl(lib.d.ts, 4927, 50)) ->Uint32Array : Symbol(Uint32Array, Decl(lib.d.ts, 3019, 46), Decl(lib.d.ts, 3292, 11), Decl(lib.d.ts, 4904, 1)) ->from : Symbol(Uint32ArrayConstructor.from, Decl(lib.d.ts, 3282, 40), Decl(lib.d.ts, 4927, 50)) +>Uint32Array.from : Symbol(Uint32ArrayConstructor.from, Decl(lib.d.ts, 3282, 40), Decl(lib.d.ts, 4954, 50)) +>Uint32Array : Symbol(Uint32Array, Decl(lib.d.ts, 3019, 46), Decl(lib.d.ts, 3292, 11), Decl(lib.d.ts, 4931, 1)) +>from : Symbol(Uint32ArrayConstructor.from, Decl(lib.d.ts, 3282, 40), Decl(lib.d.ts, 4954, 50)) >obj : Symbol(obj, Decl(typedArrays.ts, 108, 36)) >mapFn : Symbol(mapFn, Decl(typedArrays.ts, 108, 58)) typedArrays[6] = Float32Array.from(obj, mapFn); >typedArrays : Symbol(typedArrays, Decl(typedArrays.ts, 109, 7)) ->Float32Array.from : Symbol(Float32ArrayConstructor.from, Decl(lib.d.ts, 3555, 41), Decl(lib.d.ts, 4959, 51)) ->Float32Array : Symbol(Float32Array, Decl(lib.d.ts, 3292, 48), Decl(lib.d.ts, 3566, 11), Decl(lib.d.ts, 4936, 1)) ->from : Symbol(Float32ArrayConstructor.from, Decl(lib.d.ts, 3555, 41), Decl(lib.d.ts, 4959, 51)) +>Float32Array.from : Symbol(Float32ArrayConstructor.from, Decl(lib.d.ts, 3555, 41), Decl(lib.d.ts, 4986, 51)) +>Float32Array : Symbol(Float32Array, Decl(lib.d.ts, 3292, 48), Decl(lib.d.ts, 3566, 11), Decl(lib.d.ts, 4963, 1)) +>from : Symbol(Float32ArrayConstructor.from, Decl(lib.d.ts, 3555, 41), Decl(lib.d.ts, 4986, 51)) >obj : Symbol(obj, Decl(typedArrays.ts, 108, 36)) >mapFn : Symbol(mapFn, Decl(typedArrays.ts, 108, 58)) typedArrays[7] = Float64Array.from(obj, mapFn); >typedArrays : Symbol(typedArrays, Decl(typedArrays.ts, 109, 7)) ->Float64Array.from : Symbol(Float64ArrayConstructor.from, Decl(lib.d.ts, 3829, 41), Decl(lib.d.ts, 4991, 51)) ->Float64Array : Symbol(Float64Array, Decl(lib.d.ts, 3566, 50), Decl(lib.d.ts, 3839, 11), Decl(lib.d.ts, 4968, 1)) ->from : Symbol(Float64ArrayConstructor.from, Decl(lib.d.ts, 3829, 41), Decl(lib.d.ts, 4991, 51)) +>Float64Array.from : Symbol(Float64ArrayConstructor.from, Decl(lib.d.ts, 3829, 41), Decl(lib.d.ts, 5018, 51)) +>Float64Array : Symbol(Float64Array, Decl(lib.d.ts, 3566, 50), Decl(lib.d.ts, 3839, 11), Decl(lib.d.ts, 4995, 1)) +>from : Symbol(Float64ArrayConstructor.from, Decl(lib.d.ts, 3829, 41), Decl(lib.d.ts, 5018, 51)) >obj : Symbol(obj, Decl(typedArrays.ts, 108, 36)) >mapFn : Symbol(mapFn, Decl(typedArrays.ts, 108, 58)) typedArrays[8] = Uint8ClampedArray.from(obj, mapFn); >typedArrays : Symbol(typedArrays, Decl(typedArrays.ts, 109, 7)) ->Uint8ClampedArray.from : Symbol(Uint8ClampedArrayConstructor.from, Decl(lib.d.ts, 2189, 46), Decl(lib.d.ts, 4794, 56)) ->Uint8ClampedArray : Symbol(Uint8ClampedArray, Decl(lib.d.ts, 1926, 46), Decl(lib.d.ts, 2199, 11), Decl(lib.d.ts, 4768, 1)) ->from : Symbol(Uint8ClampedArrayConstructor.from, Decl(lib.d.ts, 2189, 46), Decl(lib.d.ts, 4794, 56)) +>Uint8ClampedArray.from : Symbol(Uint8ClampedArrayConstructor.from, Decl(lib.d.ts, 2189, 46), Decl(lib.d.ts, 4821, 56)) +>Uint8ClampedArray : Symbol(Uint8ClampedArray, Decl(lib.d.ts, 1926, 46), Decl(lib.d.ts, 2199, 11), Decl(lib.d.ts, 4795, 1)) +>from : Symbol(Uint8ClampedArrayConstructor.from, Decl(lib.d.ts, 2189, 46), Decl(lib.d.ts, 4821, 56)) >obj : Symbol(obj, Decl(typedArrays.ts, 108, 36)) >mapFn : Symbol(mapFn, Decl(typedArrays.ts, 108, 58)) @@ -489,81 +489,81 @@ function CreateTypedArraysFromThisObj(obj:ArrayLike, mapFn: (n:number, v typedArrays[0] = Int8Array.from(obj, mapFn, thisArg); >typedArrays : Symbol(typedArrays, Decl(typedArrays.ts, 124, 7)) ->Int8Array.from : Symbol(Int8ArrayConstructor.from, Decl(lib.d.ts, 1641, 38), Decl(lib.d.ts, 4727, 48)) ->Int8Array : Symbol(Int8Array, Decl(lib.d.ts, 1379, 42), Decl(lib.d.ts, 1652, 11), Decl(lib.d.ts, 4704, 1)) ->from : Symbol(Int8ArrayConstructor.from, Decl(lib.d.ts, 1641, 38), Decl(lib.d.ts, 4727, 48)) +>Int8Array.from : Symbol(Int8ArrayConstructor.from, Decl(lib.d.ts, 1641, 38), Decl(lib.d.ts, 4754, 48)) +>Int8Array : Symbol(Int8Array, Decl(lib.d.ts, 1379, 42), Decl(lib.d.ts, 1652, 11), Decl(lib.d.ts, 4731, 1)) +>from : Symbol(Int8ArrayConstructor.from, Decl(lib.d.ts, 1641, 38), Decl(lib.d.ts, 4754, 48)) >obj : Symbol(obj, Decl(typedArrays.ts, 123, 38)) >mapFn : Symbol(mapFn, Decl(typedArrays.ts, 123, 60)) >thisArg : Symbol(thisArg, Decl(typedArrays.ts, 123, 98)) typedArrays[1] = Uint8Array.from(obj, mapFn, thisArg); >typedArrays : Symbol(typedArrays, Decl(typedArrays.ts, 124, 7)) ->Uint8Array.from : Symbol(Uint8ArrayConstructor.from, Decl(lib.d.ts, 1915, 39), Decl(lib.d.ts, 4759, 49)) ->Uint8Array : Symbol(Uint8Array, Decl(lib.d.ts, 1652, 44), Decl(lib.d.ts, 1926, 11), Decl(lib.d.ts, 4736, 1)) ->from : Symbol(Uint8ArrayConstructor.from, Decl(lib.d.ts, 1915, 39), Decl(lib.d.ts, 4759, 49)) +>Uint8Array.from : Symbol(Uint8ArrayConstructor.from, Decl(lib.d.ts, 1915, 39), Decl(lib.d.ts, 4786, 49)) +>Uint8Array : Symbol(Uint8Array, Decl(lib.d.ts, 1652, 44), Decl(lib.d.ts, 1926, 11), Decl(lib.d.ts, 4763, 1)) +>from : Symbol(Uint8ArrayConstructor.from, Decl(lib.d.ts, 1915, 39), Decl(lib.d.ts, 4786, 49)) >obj : Symbol(obj, Decl(typedArrays.ts, 123, 38)) >mapFn : Symbol(mapFn, Decl(typedArrays.ts, 123, 60)) >thisArg : Symbol(thisArg, Decl(typedArrays.ts, 123, 98)) typedArrays[2] = Int16Array.from(obj, mapFn, thisArg); >typedArrays : Symbol(typedArrays, Decl(typedArrays.ts, 124, 7)) ->Int16Array.from : Symbol(Int16ArrayConstructor.from, Decl(lib.d.ts, 2462, 39), Decl(lib.d.ts, 4831, 49)) ->Int16Array : Symbol(Int16Array, Decl(lib.d.ts, 2199, 60), Decl(lib.d.ts, 2473, 11), Decl(lib.d.ts, 4804, 1)) ->from : Symbol(Int16ArrayConstructor.from, Decl(lib.d.ts, 2462, 39), Decl(lib.d.ts, 4831, 49)) +>Int16Array.from : Symbol(Int16ArrayConstructor.from, Decl(lib.d.ts, 2462, 39), Decl(lib.d.ts, 4858, 49)) +>Int16Array : Symbol(Int16Array, Decl(lib.d.ts, 2199, 60), Decl(lib.d.ts, 2473, 11), Decl(lib.d.ts, 4831, 1)) +>from : Symbol(Int16ArrayConstructor.from, Decl(lib.d.ts, 2462, 39), Decl(lib.d.ts, 4858, 49)) >obj : Symbol(obj, Decl(typedArrays.ts, 123, 38)) >mapFn : Symbol(mapFn, Decl(typedArrays.ts, 123, 60)) >thisArg : Symbol(thisArg, Decl(typedArrays.ts, 123, 98)) typedArrays[3] = Uint16Array.from(obj, mapFn, thisArg); >typedArrays : Symbol(typedArrays, Decl(typedArrays.ts, 124, 7)) ->Uint16Array.from : Symbol(Uint16ArrayConstructor.from, Decl(lib.d.ts, 2736, 40), Decl(lib.d.ts, 4863, 50)) ->Uint16Array : Symbol(Uint16Array, Decl(lib.d.ts, 2473, 46), Decl(lib.d.ts, 2747, 11), Decl(lib.d.ts, 4840, 1)) ->from : Symbol(Uint16ArrayConstructor.from, Decl(lib.d.ts, 2736, 40), Decl(lib.d.ts, 4863, 50)) +>Uint16Array.from : Symbol(Uint16ArrayConstructor.from, Decl(lib.d.ts, 2736, 40), Decl(lib.d.ts, 4890, 50)) +>Uint16Array : Symbol(Uint16Array, Decl(lib.d.ts, 2473, 46), Decl(lib.d.ts, 2747, 11), Decl(lib.d.ts, 4867, 1)) +>from : Symbol(Uint16ArrayConstructor.from, Decl(lib.d.ts, 2736, 40), Decl(lib.d.ts, 4890, 50)) >obj : Symbol(obj, Decl(typedArrays.ts, 123, 38)) >mapFn : Symbol(mapFn, Decl(typedArrays.ts, 123, 60)) >thisArg : Symbol(thisArg, Decl(typedArrays.ts, 123, 98)) typedArrays[4] = Int32Array.from(obj, mapFn, thisArg); >typedArrays : Symbol(typedArrays, Decl(typedArrays.ts, 124, 7)) ->Int32Array.from : Symbol(Int32ArrayConstructor.from, Decl(lib.d.ts, 3009, 39), Decl(lib.d.ts, 4895, 49)) ->Int32Array : Symbol(Int32Array, Decl(lib.d.ts, 2747, 48), Decl(lib.d.ts, 3019, 11), Decl(lib.d.ts, 4872, 1)) ->from : Symbol(Int32ArrayConstructor.from, Decl(lib.d.ts, 3009, 39), Decl(lib.d.ts, 4895, 49)) +>Int32Array.from : Symbol(Int32ArrayConstructor.from, Decl(lib.d.ts, 3009, 39), Decl(lib.d.ts, 4922, 49)) +>Int32Array : Symbol(Int32Array, Decl(lib.d.ts, 2747, 48), Decl(lib.d.ts, 3019, 11), Decl(lib.d.ts, 4899, 1)) +>from : Symbol(Int32ArrayConstructor.from, Decl(lib.d.ts, 3009, 39), Decl(lib.d.ts, 4922, 49)) >obj : Symbol(obj, Decl(typedArrays.ts, 123, 38)) >mapFn : Symbol(mapFn, Decl(typedArrays.ts, 123, 60)) >thisArg : Symbol(thisArg, Decl(typedArrays.ts, 123, 98)) typedArrays[5] = Uint32Array.from(obj, mapFn, thisArg); >typedArrays : Symbol(typedArrays, Decl(typedArrays.ts, 124, 7)) ->Uint32Array.from : Symbol(Uint32ArrayConstructor.from, Decl(lib.d.ts, 3282, 40), Decl(lib.d.ts, 4927, 50)) ->Uint32Array : Symbol(Uint32Array, Decl(lib.d.ts, 3019, 46), Decl(lib.d.ts, 3292, 11), Decl(lib.d.ts, 4904, 1)) ->from : Symbol(Uint32ArrayConstructor.from, Decl(lib.d.ts, 3282, 40), Decl(lib.d.ts, 4927, 50)) +>Uint32Array.from : Symbol(Uint32ArrayConstructor.from, Decl(lib.d.ts, 3282, 40), Decl(lib.d.ts, 4954, 50)) +>Uint32Array : Symbol(Uint32Array, Decl(lib.d.ts, 3019, 46), Decl(lib.d.ts, 3292, 11), Decl(lib.d.ts, 4931, 1)) +>from : Symbol(Uint32ArrayConstructor.from, Decl(lib.d.ts, 3282, 40), Decl(lib.d.ts, 4954, 50)) >obj : Symbol(obj, Decl(typedArrays.ts, 123, 38)) >mapFn : Symbol(mapFn, Decl(typedArrays.ts, 123, 60)) >thisArg : Symbol(thisArg, Decl(typedArrays.ts, 123, 98)) typedArrays[6] = Float32Array.from(obj, mapFn, thisArg); >typedArrays : Symbol(typedArrays, Decl(typedArrays.ts, 124, 7)) ->Float32Array.from : Symbol(Float32ArrayConstructor.from, Decl(lib.d.ts, 3555, 41), Decl(lib.d.ts, 4959, 51)) ->Float32Array : Symbol(Float32Array, Decl(lib.d.ts, 3292, 48), Decl(lib.d.ts, 3566, 11), Decl(lib.d.ts, 4936, 1)) ->from : Symbol(Float32ArrayConstructor.from, Decl(lib.d.ts, 3555, 41), Decl(lib.d.ts, 4959, 51)) +>Float32Array.from : Symbol(Float32ArrayConstructor.from, Decl(lib.d.ts, 3555, 41), Decl(lib.d.ts, 4986, 51)) +>Float32Array : Symbol(Float32Array, Decl(lib.d.ts, 3292, 48), Decl(lib.d.ts, 3566, 11), Decl(lib.d.ts, 4963, 1)) +>from : Symbol(Float32ArrayConstructor.from, Decl(lib.d.ts, 3555, 41), Decl(lib.d.ts, 4986, 51)) >obj : Symbol(obj, Decl(typedArrays.ts, 123, 38)) >mapFn : Symbol(mapFn, Decl(typedArrays.ts, 123, 60)) >thisArg : Symbol(thisArg, Decl(typedArrays.ts, 123, 98)) typedArrays[7] = Float64Array.from(obj, mapFn, thisArg); >typedArrays : Symbol(typedArrays, Decl(typedArrays.ts, 124, 7)) ->Float64Array.from : Symbol(Float64ArrayConstructor.from, Decl(lib.d.ts, 3829, 41), Decl(lib.d.ts, 4991, 51)) ->Float64Array : Symbol(Float64Array, Decl(lib.d.ts, 3566, 50), Decl(lib.d.ts, 3839, 11), Decl(lib.d.ts, 4968, 1)) ->from : Symbol(Float64ArrayConstructor.from, Decl(lib.d.ts, 3829, 41), Decl(lib.d.ts, 4991, 51)) +>Float64Array.from : Symbol(Float64ArrayConstructor.from, Decl(lib.d.ts, 3829, 41), Decl(lib.d.ts, 5018, 51)) +>Float64Array : Symbol(Float64Array, Decl(lib.d.ts, 3566, 50), Decl(lib.d.ts, 3839, 11), Decl(lib.d.ts, 4995, 1)) +>from : Symbol(Float64ArrayConstructor.from, Decl(lib.d.ts, 3829, 41), Decl(lib.d.ts, 5018, 51)) >obj : Symbol(obj, Decl(typedArrays.ts, 123, 38)) >mapFn : Symbol(mapFn, Decl(typedArrays.ts, 123, 60)) >thisArg : Symbol(thisArg, Decl(typedArrays.ts, 123, 98)) typedArrays[8] = Uint8ClampedArray.from(obj, mapFn, thisArg); >typedArrays : Symbol(typedArrays, Decl(typedArrays.ts, 124, 7)) ->Uint8ClampedArray.from : Symbol(Uint8ClampedArrayConstructor.from, Decl(lib.d.ts, 2189, 46), Decl(lib.d.ts, 4794, 56)) ->Uint8ClampedArray : Symbol(Uint8ClampedArray, Decl(lib.d.ts, 1926, 46), Decl(lib.d.ts, 2199, 11), Decl(lib.d.ts, 4768, 1)) ->from : Symbol(Uint8ClampedArrayConstructor.from, Decl(lib.d.ts, 2189, 46), Decl(lib.d.ts, 4794, 56)) +>Uint8ClampedArray.from : Symbol(Uint8ClampedArrayConstructor.from, Decl(lib.d.ts, 2189, 46), Decl(lib.d.ts, 4821, 56)) +>Uint8ClampedArray : Symbol(Uint8ClampedArray, Decl(lib.d.ts, 1926, 46), Decl(lib.d.ts, 2199, 11), Decl(lib.d.ts, 4795, 1)) +>from : Symbol(Uint8ClampedArrayConstructor.from, Decl(lib.d.ts, 2189, 46), Decl(lib.d.ts, 4821, 56)) >obj : Symbol(obj, Decl(typedArrays.ts, 123, 38)) >mapFn : Symbol(mapFn, Decl(typedArrays.ts, 123, 60)) >thisArg : Symbol(thisArg, Decl(typedArrays.ts, 123, 98)) diff --git a/tests/baselines/reference/typeofAmbientExternalModules.errors.txt b/tests/baselines/reference/typeofAmbientExternalModules.errors.txt index cde3247b7cd..9046972c895 100644 --- a/tests/baselines/reference/typeofAmbientExternalModules.errors.txt +++ b/tests/baselines/reference/typeofAmbientExternalModules.errors.txt @@ -7,8 +7,8 @@ tests/cases/compiler/typeofAmbientExternalModules_2.ts(9,1): error TS2322: Type ==== tests/cases/compiler/typeofAmbientExternalModules_2.ts (2 errors) ==== /// /// - import ext = require('typeofAmbientExternalModules_0'); - import exp = require('typeofAmbientExternalModules_1'); + import ext = require('./typeofAmbientExternalModules_0'); + import exp = require('./typeofAmbientExternalModules_1'); var y1: typeof ext = ext; y1 = exp; diff --git a/tests/baselines/reference/typeofAmbientExternalModules.js b/tests/baselines/reference/typeofAmbientExternalModules.js index 1bfd549fb04..66e6d7d45ea 100644 --- a/tests/baselines/reference/typeofAmbientExternalModules.js +++ b/tests/baselines/reference/typeofAmbientExternalModules.js @@ -10,8 +10,8 @@ export = D; //// [typeofAmbientExternalModules_2.ts] /// /// -import ext = require('typeofAmbientExternalModules_0'); -import exp = require('typeofAmbientExternalModules_1'); +import ext = require('./typeofAmbientExternalModules_0'); +import exp = require('./typeofAmbientExternalModules_1'); var y1: typeof ext = ext; y1 = exp; @@ -35,8 +35,8 @@ module.exports = D; //// [typeofAmbientExternalModules_2.js] /// /// -var ext = require('typeofAmbientExternalModules_0'); -var exp = require('typeofAmbientExternalModules_1'); +var ext = require('./typeofAmbientExternalModules_0'); +var exp = require('./typeofAmbientExternalModules_1'); var y1 = ext; y1 = exp; var y2 = exp; diff --git a/tests/baselines/reference/typeofExternalModules.errors.txt b/tests/baselines/reference/typeofExternalModules.errors.txt index 05b56c9fe1b..0290a40c326 100644 --- a/tests/baselines/reference/typeofExternalModules.errors.txt +++ b/tests/baselines/reference/typeofExternalModules.errors.txt @@ -5,8 +5,8 @@ tests/cases/compiler/typeofExternalModules_core.ts(7,1): error TS2322: Type 'typ ==== tests/cases/compiler/typeofExternalModules_core.ts (2 errors) ==== - import ext = require('typeofExternalModules_external'); - import exp = require('typeofExternalModules_exportAssign'); + import ext = require('./typeofExternalModules_external'); + import exp = require('./typeofExternalModules_exportAssign'); var y1: typeof ext = ext; y1 = exp; diff --git a/tests/baselines/reference/typeofExternalModules.js b/tests/baselines/reference/typeofExternalModules.js index 8ffea8ca8ec..676f6f10b9f 100644 --- a/tests/baselines/reference/typeofExternalModules.js +++ b/tests/baselines/reference/typeofExternalModules.js @@ -8,8 +8,8 @@ class D { } export = D; //// [typeofExternalModules_core.ts] -import ext = require('typeofExternalModules_external'); -import exp = require('typeofExternalModules_exportAssign'); +import ext = require('./typeofExternalModules_external'); +import exp = require('./typeofExternalModules_exportAssign'); var y1: typeof ext = ext; y1 = exp; @@ -31,8 +31,8 @@ var D = (function () { })(); module.exports = D; //// [typeofExternalModules_core.js] -var ext = require('typeofExternalModules_external'); -var exp = require('typeofExternalModules_exportAssign'); +var ext = require('./typeofExternalModules_external'); +var exp = require('./typeofExternalModules_exportAssign'); var y1 = ext; y1 = exp; var y2 = exp; diff --git a/tests/baselines/reference/umdDependencyComment2.js b/tests/baselines/reference/umdDependencyComment2.js index cae34631517..f063df77308 100644 --- a/tests/baselines/reference/umdDependencyComment2.js +++ b/tests/baselines/reference/umdDependencyComment2.js @@ -7,14 +7,14 @@ m1.f(); //// [umdDependencyComment2.js] /// -(function (deps, factory) { +(function (factory) { if (typeof module === 'object' && typeof module.exports === 'object') { var v = factory(require, exports); if (v !== undefined) module.exports = v; } else if (typeof define === 'function' && define.amd) { - define(deps, factory); + define(["require", "exports", "bar", "m2"], factory); } -})(["require", "exports", "bar", "m2"], function (require, exports) { +})(function (require, exports) { var m1 = require("m2"); m1.f(); }); diff --git a/tests/baselines/reference/umdDependencyCommentName1.js b/tests/baselines/reference/umdDependencyCommentName1.js index 6cb87eb45f5..763e0523272 100644 --- a/tests/baselines/reference/umdDependencyCommentName1.js +++ b/tests/baselines/reference/umdDependencyCommentName1.js @@ -7,14 +7,14 @@ m1.f(); //// [umdDependencyCommentName1.js] /// -(function (deps, factory) { +(function (factory) { if (typeof module === 'object' && typeof module.exports === 'object') { var v = factory(require, exports); if (v !== undefined) module.exports = v; } else if (typeof define === 'function' && define.amd) { - define(deps, factory); + define(["require", "exports", "bar", "m2"], factory); } -})(["require", "exports", "bar", "m2"], function (require, exports, b) { +})(function (require, exports, b) { var m1 = require("m2"); m1.f(); }); diff --git a/tests/baselines/reference/umdDependencyCommentName2.js b/tests/baselines/reference/umdDependencyCommentName2.js index d474454936d..f749e4cc22d 100644 --- a/tests/baselines/reference/umdDependencyCommentName2.js +++ b/tests/baselines/reference/umdDependencyCommentName2.js @@ -11,14 +11,14 @@ m1.f(); /// /// /// -(function (deps, factory) { +(function (factory) { if (typeof module === 'object' && typeof module.exports === 'object') { var v = factory(require, exports); if (v !== undefined) module.exports = v; } else if (typeof define === 'function' && define.amd) { - define(deps, factory); + define(["require", "exports", "bar", "goo", "foo", "m2"], factory); } -})(["require", "exports", "bar", "goo", "foo", "m2"], function (require, exports, b, c) { +})(function (require, exports, b, c) { var m1 = require("m2"); m1.f(); }); diff --git a/tests/baselines/reference/underscoreMapFirst.types b/tests/baselines/reference/underscoreMapFirst.types index 4de320604bd..60cbcccda2b 100644 --- a/tests/baselines/reference/underscoreMapFirst.types +++ b/tests/baselines/reference/underscoreMapFirst.types @@ -124,7 +124,7 @@ class MyView extends View { >this.model.get("data") : any >this.model.get : any >this.model : any ->this : MyView +>this : this >model : any >get : any >"data" : string diff --git a/tests/baselines/reference/unusedImportDeclaration.js b/tests/baselines/reference/unusedImportDeclaration.js index 54885f09e36..04e897c081a 100644 --- a/tests/baselines/reference/unusedImportDeclaration.js +++ b/tests/baselines/reference/unusedImportDeclaration.js @@ -7,7 +7,7 @@ class TesterB { export = TesterB; //// [unusedImportDeclaration_testerA.ts] -import B = require("unusedImportDeclaration_testerB"); +import B = require("./unusedImportDeclaration_testerB"); var thingy: B = { me: "A" }; diff --git a/tests/baselines/reference/unusedImportDeclaration.symbols b/tests/baselines/reference/unusedImportDeclaration.symbols index 5506c4ad6b6..a298ba94631 100644 --- a/tests/baselines/reference/unusedImportDeclaration.symbols +++ b/tests/baselines/reference/unusedImportDeclaration.symbols @@ -1,5 +1,5 @@ === tests/cases/compiler/unusedImportDeclaration_testerA.ts === -import B = require("unusedImportDeclaration_testerB"); +import B = require("./unusedImportDeclaration_testerB"); >B : Symbol(B, Decl(unusedImportDeclaration_testerA.ts, 0, 0)) var thingy: B = { diff --git a/tests/baselines/reference/unusedImportDeclaration.types b/tests/baselines/reference/unusedImportDeclaration.types index dcedf3fd350..c14338756da 100644 --- a/tests/baselines/reference/unusedImportDeclaration.types +++ b/tests/baselines/reference/unusedImportDeclaration.types @@ -1,5 +1,5 @@ === tests/cases/compiler/unusedImportDeclaration_testerA.ts === -import B = require("unusedImportDeclaration_testerB"); +import B = require("./unusedImportDeclaration_testerB"); >B : typeof B var thingy: B = { diff --git a/tests/baselines/reference/validUseOfThisInSuper.types b/tests/baselines/reference/validUseOfThisInSuper.types index d7c882496e2..81b911dfdc9 100644 --- a/tests/baselines/reference/validUseOfThisInSuper.types +++ b/tests/baselines/reference/validUseOfThisInSuper.types @@ -15,9 +15,9 @@ class Super extends Base { super((() => this)()); // ok since this is not the case: The constructor declares parameter properties or the containing class declares instance member variables with initializers. >super((() => this)()) : void >super : typeof Base ->(() => this)() : Super ->(() => this) : () => Super ->() => this : () => Super ->this : Super +>(() => this)() : this +>(() => this) : () => this +>() => this : () => this +>this : this } } diff --git a/tests/baselines/reference/varArgsOnConstructorTypes.types b/tests/baselines/reference/varArgsOnConstructorTypes.types index 5ac9babd426..44987506101 100644 --- a/tests/baselines/reference/varArgsOnConstructorTypes.types +++ b/tests/baselines/reference/varArgsOnConstructorTypes.types @@ -28,14 +28,14 @@ export class B extends A { this.p1 = element; >this.p1 = element : any >this.p1 : number ->this : B +>this : this >p1 : number >element : any this.p2 = url; >this.p2 = url : string >this.p2 : string ->this : B +>this : this >p2 : string >url : string } diff --git a/tests/baselines/reference/visibilityOfCrossModuleTypeUsage.js b/tests/baselines/reference/visibilityOfCrossModuleTypeUsage.js index e3f60cfa17b..660a4017a7f 100644 --- a/tests/baselines/reference/visibilityOfCrossModuleTypeUsage.js +++ b/tests/baselines/reference/visibilityOfCrossModuleTypeUsage.js @@ -3,8 +3,8 @@ //// [visibilityOfCrossModuleTypeUsage_commands.ts] //visibilityOfCrossModuleTypeUsage -import fs = require('visibilityOfCrossModuleTypeUsage_fs'); -import server = require('visibilityOfCrossModuleTypeUsage_server'); +import fs = require('./visibilityOfCrossModuleTypeUsage_fs'); +import server = require('./visibilityOfCrossModuleTypeUsage_server'); export interface IConfiguration { workspace: server.IWorkspace; @@ -20,7 +20,7 @@ export interface IWorkspace { } //// [visibilityOfCrossModuleTypeUsage_fs.ts] -import commands = require('visibilityOfCrossModuleTypeUsage_commands'); +import commands = require('./visibilityOfCrossModuleTypeUsage_commands'); function run(configuration: commands.IConfiguration) { var absoluteWorkspacePath = configuration.workspace.toAbsolutePath(configuration.server); } diff --git a/tests/baselines/reference/visibilityOfCrossModuleTypeUsage.symbols b/tests/baselines/reference/visibilityOfCrossModuleTypeUsage.symbols index 0fdd5c4fbe1..d1132151097 100644 --- a/tests/baselines/reference/visibilityOfCrossModuleTypeUsage.symbols +++ b/tests/baselines/reference/visibilityOfCrossModuleTypeUsage.symbols @@ -1,12 +1,12 @@ === tests/cases/compiler/visibilityOfCrossModuleTypeUsage_fs.ts === -import commands = require('visibilityOfCrossModuleTypeUsage_commands'); +import commands = require('./visibilityOfCrossModuleTypeUsage_commands'); >commands : Symbol(commands, Decl(visibilityOfCrossModuleTypeUsage_fs.ts, 0, 0)) function run(configuration: commands.IConfiguration) { ->run : Symbol(run, Decl(visibilityOfCrossModuleTypeUsage_fs.ts, 0, 71)) +>run : Symbol(run, Decl(visibilityOfCrossModuleTypeUsage_fs.ts, 0, 73)) >configuration : Symbol(configuration, Decl(visibilityOfCrossModuleTypeUsage_fs.ts, 1, 13)) >commands : Symbol(commands, Decl(visibilityOfCrossModuleTypeUsage_fs.ts, 0, 0)) ->IConfiguration : Symbol(commands.IConfiguration, Decl(visibilityOfCrossModuleTypeUsage_commands.ts, 3, 67)) +>IConfiguration : Symbol(commands.IConfiguration, Decl(visibilityOfCrossModuleTypeUsage_commands.ts, 3, 69)) var absoluteWorkspacePath = configuration.workspace.toAbsolutePath(configuration.server); >absoluteWorkspacePath : Symbol(absoluteWorkspacePath, Decl(visibilityOfCrossModuleTypeUsage_fs.ts, 2, 7)) @@ -22,23 +22,23 @@ function run(configuration: commands.IConfiguration) { === tests/cases/compiler/visibilityOfCrossModuleTypeUsage_commands.ts === //visibilityOfCrossModuleTypeUsage -import fs = require('visibilityOfCrossModuleTypeUsage_fs'); +import fs = require('./visibilityOfCrossModuleTypeUsage_fs'); >fs : Symbol(fs, Decl(visibilityOfCrossModuleTypeUsage_commands.ts, 0, 0)) -import server = require('visibilityOfCrossModuleTypeUsage_server'); ->server : Symbol(server, Decl(visibilityOfCrossModuleTypeUsage_commands.ts, 2, 59)) +import server = require('./visibilityOfCrossModuleTypeUsage_server'); +>server : Symbol(server, Decl(visibilityOfCrossModuleTypeUsage_commands.ts, 2, 61)) export interface IConfiguration { ->IConfiguration : Symbol(IConfiguration, Decl(visibilityOfCrossModuleTypeUsage_commands.ts, 3, 67)) +>IConfiguration : Symbol(IConfiguration, Decl(visibilityOfCrossModuleTypeUsage_commands.ts, 3, 69)) workspace: server.IWorkspace; >workspace : Symbol(workspace, Decl(visibilityOfCrossModuleTypeUsage_commands.ts, 5, 33)) ->server : Symbol(server, Decl(visibilityOfCrossModuleTypeUsage_commands.ts, 2, 59)) +>server : Symbol(server, Decl(visibilityOfCrossModuleTypeUsage_commands.ts, 2, 61)) >IWorkspace : Symbol(server.IWorkspace, Decl(visibilityOfCrossModuleTypeUsage_server.ts, 1, 1)) server?: server.IServer; >server : Symbol(server, Decl(visibilityOfCrossModuleTypeUsage_commands.ts, 6, 33)) ->server : Symbol(server, Decl(visibilityOfCrossModuleTypeUsage_commands.ts, 2, 59)) +>server : Symbol(server, Decl(visibilityOfCrossModuleTypeUsage_commands.ts, 2, 61)) >IServer : Symbol(server.IServer, Decl(visibilityOfCrossModuleTypeUsage_server.ts, 0, 0)) } diff --git a/tests/baselines/reference/visibilityOfCrossModuleTypeUsage.types b/tests/baselines/reference/visibilityOfCrossModuleTypeUsage.types index 90cb54fe1e0..2ee7189a77c 100644 --- a/tests/baselines/reference/visibilityOfCrossModuleTypeUsage.types +++ b/tests/baselines/reference/visibilityOfCrossModuleTypeUsage.types @@ -1,5 +1,5 @@ === tests/cases/compiler/visibilityOfCrossModuleTypeUsage_fs.ts === -import commands = require('visibilityOfCrossModuleTypeUsage_commands'); +import commands = require('./visibilityOfCrossModuleTypeUsage_commands'); >commands : typeof commands function run(configuration: commands.IConfiguration) { @@ -23,10 +23,10 @@ function run(configuration: commands.IConfiguration) { === tests/cases/compiler/visibilityOfCrossModuleTypeUsage_commands.ts === //visibilityOfCrossModuleTypeUsage -import fs = require('visibilityOfCrossModuleTypeUsage_fs'); +import fs = require('./visibilityOfCrossModuleTypeUsage_fs'); >fs : typeof fs -import server = require('visibilityOfCrossModuleTypeUsage_server'); +import server = require('./visibilityOfCrossModuleTypeUsage_server'); >server : typeof server export interface IConfiguration { diff --git a/tests/baselines/reference/voidAsNonAmbiguousReturnType.errors.txt b/tests/baselines/reference/voidAsNonAmbiguousReturnType.errors.txt index aa61a114145..ce8b52f316c 100644 --- a/tests/baselines/reference/voidAsNonAmbiguousReturnType.errors.txt +++ b/tests/baselines/reference/voidAsNonAmbiguousReturnType.errors.txt @@ -3,7 +3,7 @@ tests/cases/compiler/voidAsNonAmbiguousReturnType_0.ts(1,17): error TS2394: Over ==== tests/cases/compiler/voidAsNonAmbiguousReturnType_1.ts (0 errors) ==== /// - import fs = require("voidAsNonAmbiguousReturnType_0"); + import fs = require("./voidAsNonAmbiguousReturnType_0"); function main() { fs.mkdirSync('test'); // should not error - return types are the same diff --git a/tests/baselines/reference/voidAsNonAmbiguousReturnType.js b/tests/baselines/reference/voidAsNonAmbiguousReturnType.js index 713c4ffe47b..0ab15304493 100644 --- a/tests/baselines/reference/voidAsNonAmbiguousReturnType.js +++ b/tests/baselines/reference/voidAsNonAmbiguousReturnType.js @@ -6,7 +6,7 @@ export function mkdirSync(path: string, mode?: string): void {} //// [voidAsNonAmbiguousReturnType_1.ts] /// -import fs = require("voidAsNonAmbiguousReturnType_0"); +import fs = require("./voidAsNonAmbiguousReturnType_0"); function main() { fs.mkdirSync('test'); // should not error - return types are the same @@ -18,7 +18,7 @@ function mkdirSync(path, mode) { } exports.mkdirSync = mkdirSync; //// [voidAsNonAmbiguousReturnType_1.js] /// -var fs = require("voidAsNonAmbiguousReturnType_0"); +var fs = require("./voidAsNonAmbiguousReturnType_0"); function main() { fs.mkdirSync('test'); // should not error - return types are the same } diff --git a/tests/cases/compiler/APISample_compile.ts b/tests/cases/compiler/APISample_compile.ts index d3cc650dd2a..c63009f7d63 100644 --- a/tests/cases/compiler/APISample_compile.ts +++ b/tests/cases/compiler/APISample_compile.ts @@ -1,5 +1,5 @@ // @module: commonjs -// @includebuiltfile: typescript.d.ts +// @includebuiltfile: typescript_standalone.d.ts // @stripInternal:true /* diff --git a/tests/cases/compiler/APISample_linter.ts b/tests/cases/compiler/APISample_linter.ts index 9f9b55a0a67..8cb6934cee3 100644 --- a/tests/cases/compiler/APISample_linter.ts +++ b/tests/cases/compiler/APISample_linter.ts @@ -1,5 +1,5 @@ // @module: commonjs -// @includebuiltfile: typescript.d.ts +// @includebuiltfile: typescript_standalone.d.ts // @stripInternal:true /* diff --git a/tests/cases/compiler/APISample_transform.ts b/tests/cases/compiler/APISample_transform.ts index 48e27c4e008..88b9754536a 100644 --- a/tests/cases/compiler/APISample_transform.ts +++ b/tests/cases/compiler/APISample_transform.ts @@ -1,5 +1,5 @@ // @module: commonjs -// @includebuiltfile: typescript.d.ts +// @includebuiltfile: typescript_standalone.d.ts // @stripInternal:true /* diff --git a/tests/cases/compiler/APISample_watcher.ts b/tests/cases/compiler/APISample_watcher.ts index b152f86c378..9afa53ddf14 100644 --- a/tests/cases/compiler/APISample_watcher.ts +++ b/tests/cases/compiler/APISample_watcher.ts @@ -1,5 +1,5 @@ // @module: commonjs -// @includebuiltfile: typescript.d.ts +// @includebuiltfile: typescript_standalone.d.ts // @stripInternal:true /* diff --git a/tests/cases/compiler/aliasAssignments.ts b/tests/cases/compiler/aliasAssignments.ts index 4a83ee80da7..6a7ed9a9974 100644 --- a/tests/cases/compiler/aliasAssignments.ts +++ b/tests/cases/compiler/aliasAssignments.ts @@ -5,7 +5,7 @@ export class someClass { } // @Filename: aliasAssignments_1.ts -import moduleA = require("aliasAssignments_moduleA"); +import moduleA = require("./aliasAssignments_moduleA"); var x = moduleA; x = 1; // Should be error var y = 1; diff --git a/tests/cases/compiler/aliasUsageInAccessorsOfClass.ts b/tests/cases/compiler/aliasUsageInAccessorsOfClass.ts index 2aeddbad947..c6d1b1480c0 100644 --- a/tests/cases/compiler/aliasUsageInAccessorsOfClass.ts +++ b/tests/cases/compiler/aliasUsageInAccessorsOfClass.ts @@ -1,4 +1,4 @@ -//@module: commonjs +// @module: commonjs // @target: ES5 // @Filename: aliasUsage1_backbone.ts export class Model { @@ -6,14 +6,14 @@ export class Model { } // @Filename: aliasUsage1_moduleA.ts -import Backbone = require("aliasUsage1_backbone"); +import Backbone = require("./aliasUsage1_backbone"); export class VisualizationModel extends Backbone.Model { // interesting stuff here } // @Filename: aliasUsage1_main.ts -import Backbone = require("aliasUsage1_backbone"); -import moduleA = require("aliasUsage1_moduleA"); +import Backbone = require("./aliasUsage1_backbone"); +import moduleA = require("./aliasUsage1_moduleA"); interface IHasVisualizationModel { VisualizationModel: typeof Backbone.Model; } diff --git a/tests/cases/compiler/aliasUsageInArray.ts b/tests/cases/compiler/aliasUsageInArray.ts index 9c2e4e64e48..7f71b00e72a 100644 --- a/tests/cases/compiler/aliasUsageInArray.ts +++ b/tests/cases/compiler/aliasUsageInArray.ts @@ -5,14 +5,14 @@ export class Model { } // @Filename: aliasUsageInArray_moduleA.ts -import Backbone = require("aliasUsageInArray_backbone"); +import Backbone = require("./aliasUsageInArray_backbone"); export class VisualizationModel extends Backbone.Model { // interesting stuff here } // @Filename: aliasUsageInArray_main.ts -import Backbone = require("aliasUsageInArray_backbone"); -import moduleA = require("aliasUsageInArray_moduleA"); +import Backbone = require("./aliasUsageInArray_backbone"); +import moduleA = require("./aliasUsageInArray_moduleA"); interface IHasVisualizationModel { VisualizationModel: typeof Backbone.Model; } diff --git a/tests/cases/compiler/aliasUsageInFunctionExpression.ts b/tests/cases/compiler/aliasUsageInFunctionExpression.ts index 47b377c5b28..4c9a91b713b 100644 --- a/tests/cases/compiler/aliasUsageInFunctionExpression.ts +++ b/tests/cases/compiler/aliasUsageInFunctionExpression.ts @@ -1,18 +1,18 @@ -//@module: commonjs +// @module: commonjs // @Filename: aliasUsageInFunctionExpression_backbone.ts export class Model { public someData: string; } // @Filename: aliasUsageInFunctionExpression_moduleA.ts -import Backbone = require("aliasUsageInFunctionExpression_backbone"); +import Backbone = require("./aliasUsageInFunctionExpression_backbone"); export class VisualizationModel extends Backbone.Model { // interesting stuff here } // @Filename: aliasUsageInFunctionExpression_main.ts -import Backbone = require("aliasUsageInFunctionExpression_backbone"); -import moduleA = require("aliasUsageInFunctionExpression_moduleA"); +import Backbone = require("./aliasUsageInFunctionExpression_backbone"); +import moduleA = require("./aliasUsageInFunctionExpression_moduleA"); interface IHasVisualizationModel { VisualizationModel: typeof Backbone.Model; } diff --git a/tests/cases/compiler/aliasUsageInGenericFunction.ts b/tests/cases/compiler/aliasUsageInGenericFunction.ts index d9966dbd299..f153195009c 100644 --- a/tests/cases/compiler/aliasUsageInGenericFunction.ts +++ b/tests/cases/compiler/aliasUsageInGenericFunction.ts @@ -1,18 +1,18 @@ -//@module: commonjs +// @module: commonjs // @Filename: aliasUsageInGenericFunction_backbone.ts export class Model { public someData: string; } // @Filename: aliasUsageInGenericFunction_moduleA.ts -import Backbone = require("aliasUsageInGenericFunction_backbone"); +import Backbone = require("./aliasUsageInGenericFunction_backbone"); export class VisualizationModel extends Backbone.Model { // interesting stuff here } // @Filename: aliasUsageInGenericFunction_main.ts -import Backbone = require("aliasUsageInGenericFunction_backbone"); -import moduleA = require("aliasUsageInGenericFunction_moduleA"); +import Backbone = require("./aliasUsageInGenericFunction_backbone"); +import moduleA = require("./aliasUsageInGenericFunction_moduleA"); interface IHasVisualizationModel { VisualizationModel: typeof Backbone.Model; } diff --git a/tests/cases/compiler/aliasUsageInIndexerOfClass.ts b/tests/cases/compiler/aliasUsageInIndexerOfClass.ts index a6df86fbc99..a9aca7d2970 100644 --- a/tests/cases/compiler/aliasUsageInIndexerOfClass.ts +++ b/tests/cases/compiler/aliasUsageInIndexerOfClass.ts @@ -1,18 +1,18 @@ -//@module: commonjs +// @module: commonjs // @Filename: aliasUsageInIndexerOfClass_backbone.ts export class Model { public someData: string; } // @Filename: aliasUsageInIndexerOfClass_moduleA.ts -import Backbone = require("aliasUsageInIndexerOfClass_backbone"); +import Backbone = require("./aliasUsageInIndexerOfClass_backbone"); export class VisualizationModel extends Backbone.Model { // interesting stuff here } // @Filename: aliasUsageInIndexerOfClass_main.ts -import Backbone = require("aliasUsageInIndexerOfClass_backbone"); -import moduleA = require("aliasUsageInIndexerOfClass_moduleA"); +import Backbone = require("./aliasUsageInIndexerOfClass_backbone"); +import moduleA = require("./aliasUsageInIndexerOfClass_moduleA"); interface IHasVisualizationModel { VisualizationModel: typeof Backbone.Model; } diff --git a/tests/cases/compiler/aliasUsageInObjectLiteral.ts b/tests/cases/compiler/aliasUsageInObjectLiteral.ts index a9d2017d50c..e16d5552fe6 100644 --- a/tests/cases/compiler/aliasUsageInObjectLiteral.ts +++ b/tests/cases/compiler/aliasUsageInObjectLiteral.ts @@ -1,18 +1,18 @@ -//@module: commonjs +// @module: commonjs // @Filename: aliasUsageInObjectLiteral_backbone.ts export class Model { public someData: string; } // @Filename: aliasUsageInObjectLiteral_moduleA.ts -import Backbone = require("aliasUsageInObjectLiteral_backbone"); +import Backbone = require("./aliasUsageInObjectLiteral_backbone"); export class VisualizationModel extends Backbone.Model { // interesting stuff here } // @Filename: aliasUsageInObjectLiteral_main.ts -import Backbone = require("aliasUsageInObjectLiteral_backbone"); -import moduleA = require("aliasUsageInObjectLiteral_moduleA"); +import Backbone = require("./aliasUsageInObjectLiteral_backbone"); +import moduleA = require("./aliasUsageInObjectLiteral_moduleA"); interface IHasVisualizationModel { VisualizationModel: typeof Backbone.Model; } diff --git a/tests/cases/compiler/aliasUsageInOrExpression.ts b/tests/cases/compiler/aliasUsageInOrExpression.ts index e7ddd4014f0..540a3ae91c0 100644 --- a/tests/cases/compiler/aliasUsageInOrExpression.ts +++ b/tests/cases/compiler/aliasUsageInOrExpression.ts @@ -1,18 +1,18 @@ -//@module: commonjs +// @module: commonjs // @Filename: aliasUsageInOrExpression_backbone.ts export class Model { public someData: string; } // @Filename: aliasUsageInOrExpression_moduleA.ts -import Backbone = require("aliasUsageInOrExpression_backbone"); +import Backbone = require("./aliasUsageInOrExpression_backbone"); export class VisualizationModel extends Backbone.Model { // interesting stuff here } // @Filename: aliasUsageInOrExpression_main.ts -import Backbone = require("aliasUsageInOrExpression_backbone"); -import moduleA = require("aliasUsageInOrExpression_moduleA"); +import Backbone = require("./aliasUsageInOrExpression_backbone"); +import moduleA = require("./aliasUsageInOrExpression_moduleA"); interface IHasVisualizationModel { VisualizationModel: typeof Backbone.Model; } diff --git a/tests/cases/compiler/aliasUsageInTypeArgumentOfExtendsClause.ts b/tests/cases/compiler/aliasUsageInTypeArgumentOfExtendsClause.ts index 548963ff123..c09c715ed3a 100644 --- a/tests/cases/compiler/aliasUsageInTypeArgumentOfExtendsClause.ts +++ b/tests/cases/compiler/aliasUsageInTypeArgumentOfExtendsClause.ts @@ -1,18 +1,18 @@ -//@module: commonjs +// @module: commonjs // @Filename: aliasUsageInTypeArgumentOfExtendsClause_backbone.ts export class Model { public someData: string; } // @Filename: aliasUsageInTypeArgumentOfExtendsClause_moduleA.ts -import Backbone = require("aliasUsageInTypeArgumentOfExtendsClause_backbone"); +import Backbone = require("./aliasUsageInTypeArgumentOfExtendsClause_backbone"); export class VisualizationModel extends Backbone.Model { // interesting stuff here } // @Filename: aliasUsageInTypeArgumentOfExtendsClause_main.ts -import Backbone = require("aliasUsageInTypeArgumentOfExtendsClause_backbone"); -import moduleA = require("aliasUsageInTypeArgumentOfExtendsClause_moduleA"); +import Backbone = require("./aliasUsageInTypeArgumentOfExtendsClause_backbone"); +import moduleA = require("./aliasUsageInTypeArgumentOfExtendsClause_moduleA"); interface IHasVisualizationModel { VisualizationModel: typeof Backbone.Model; } diff --git a/tests/cases/compiler/aliasUsageInVarAssignment.ts b/tests/cases/compiler/aliasUsageInVarAssignment.ts index 1644c825a4d..ed14d4241f5 100644 --- a/tests/cases/compiler/aliasUsageInVarAssignment.ts +++ b/tests/cases/compiler/aliasUsageInVarAssignment.ts @@ -1,18 +1,18 @@ -//@module: commonjs +// @module: commonjs // @Filename: aliasUsageInVarAssignment_backbone.ts export class Model { public someData: string; } // @Filename: aliasUsageInVarAssignment_moduleA.ts -import Backbone = require("aliasUsageInVarAssignment_backbone"); +import Backbone = require("./aliasUsageInVarAssignment_backbone"); export class VisualizationModel extends Backbone.Model { // interesting stuff here } // @Filename: aliasUsageInVarAssignment_main.ts -import Backbone = require("aliasUsageInVarAssignment_backbone"); -import moduleA = require("aliasUsageInVarAssignment_moduleA"); +import Backbone = require("./aliasUsageInVarAssignment_backbone"); +import moduleA = require("./aliasUsageInVarAssignment_moduleA"); interface IHasVisualizationModel { VisualizationModel: typeof Backbone.Model; } diff --git a/tests/cases/compiler/aliasUsedAsNameValue.ts b/tests/cases/compiler/aliasUsedAsNameValue.ts index 20b60b53d1e..2426399252b 100644 --- a/tests/cases/compiler/aliasUsedAsNameValue.ts +++ b/tests/cases/compiler/aliasUsedAsNameValue.ts @@ -1,4 +1,4 @@ -//@module: commonjs +// @module: commonjs // @Filename: aliasUsedAsNameValue_0.ts export var id: number; @@ -8,8 +8,8 @@ export function b(a: any): any { return null; } // @Filename: aliasUsedAsNameValue_2.ts /// /// -import mod = require("aliasUsedAsNameValue_0"); -import b = require("aliasUsedAsNameValue_1"); +import mod = require("./aliasUsedAsNameValue_0"); +import b = require("./aliasUsedAsNameValue_1"); export var a = function () { //var x = mod.id; // TODO needed hack that mod is loaded diff --git a/tests/cases/compiler/aliasWithInterfaceExportAssignmentUsedInVarInitializer.ts b/tests/cases/compiler/aliasWithInterfaceExportAssignmentUsedInVarInitializer.ts index f4d818d9562..37a6c42caee 100644 --- a/tests/cases/compiler/aliasWithInterfaceExportAssignmentUsedInVarInitializer.ts +++ b/tests/cases/compiler/aliasWithInterfaceExportAssignmentUsedInVarInitializer.ts @@ -1,4 +1,4 @@ -//@module: commonjs +// @module: commonjs // @Filename: aliasWithInterfaceExportAssignmentUsedInVarInitializer_0.ts interface c { q3: number; @@ -6,5 +6,5 @@ interface c { export = c; // @Filename: aliasWithInterfaceExportAssignmentUsedInVarInitializer_1.ts -import moduleA = require("aliasWithInterfaceExportAssignmentUsedInVarInitializer_0"); +import moduleA = require("./aliasWithInterfaceExportAssignmentUsedInVarInitializer_0"); var d = b.q3; \ No newline at end of file diff --git a/tests/cases/compiler/arrayOfExportedClass.ts b/tests/cases/compiler/arrayOfExportedClass.ts index 020be79408c..794a83fbd83 100644 --- a/tests/cases/compiler/arrayOfExportedClass.ts +++ b/tests/cases/compiler/arrayOfExportedClass.ts @@ -1,4 +1,4 @@ -//@module: commonjs +// @module: commonjs // @Filename: arrayOfExportedClass_0.ts class Car { foo: string; @@ -8,7 +8,7 @@ export = Car; // @Filename: arrayOfExportedClass_1.ts /// -import Car = require('arrayOfExportedClass_0'); +import Car = require('./arrayOfExportedClass_0'); class Road { diff --git a/tests/cases/compiler/chainedImportAlias.ts b/tests/cases/compiler/chainedImportAlias.ts index 97bf28bf4a5..5b91c58f4bc 100644 --- a/tests/cases/compiler/chainedImportAlias.ts +++ b/tests/cases/compiler/chainedImportAlias.ts @@ -1,10 +1,10 @@ -//@module: commonjs +// @module: commonjs // @Filename: chainedImportAlias_file0.ts export module m { export function foo() { } } // @Filename: chainedImportAlias_file1.ts -import x = require('chainedImportAlias_file0'); +import x = require('./chainedImportAlias_file0'); import y = x; y.m.foo(); diff --git a/tests/cases/compiler/commentInEmptyParameterList1.ts b/tests/cases/compiler/commentInEmptyParameterList1.ts index cae197735d5..65ddbca16dd 100644 --- a/tests/cases/compiler/commentInEmptyParameterList1.ts +++ b/tests/cases/compiler/commentInEmptyParameterList1.ts @@ -1,3 +1,3 @@ -// @comments:true +// @removeComments: false function foo(/** nothing */) { } \ No newline at end of file diff --git a/tests/cases/compiler/commentOnAmbientClass1.ts b/tests/cases/compiler/commentOnAmbientClass1.ts index c13e4193512..1c153e86bf2 100644 --- a/tests/cases/compiler/commentOnAmbientClass1.ts +++ b/tests/cases/compiler/commentOnAmbientClass1.ts @@ -1,5 +1,10 @@ //@filename: a.ts -/*! Keep this pinned comment */ +/*!========= + Keep this pinned comment + ========= +*/ + +/*! Don't keep this pinned comment */ declare class C { } diff --git a/tests/cases/compiler/commentOnAmbientEnum.ts b/tests/cases/compiler/commentOnAmbientEnum.ts index a9ebe107c98..20d89c1b70d 100644 --- a/tests/cases/compiler/commentOnAmbientEnum.ts +++ b/tests/cases/compiler/commentOnAmbientEnum.ts @@ -1,5 +1,10 @@ //@filename: a.ts -/*! Keep this pinned comment */ +/*!========= + Keep this pinned comment + ========= +*/ + +/*! Don't keep this pinned comment */ declare enum C { a, b, diff --git a/tests/cases/compiler/commentOnAmbientModule.ts b/tests/cases/compiler/commentOnAmbientModule.ts index 41e12a61902..a8aeab7efba 100644 --- a/tests/cases/compiler/commentOnAmbientModule.ts +++ b/tests/cases/compiler/commentOnAmbientModule.ts @@ -1,5 +1,10 @@ //@filename: a.ts -/*! Keep this pinned comment */ +/*!========= + Keep this pinned comment + ========= +*/ + +/*! Don't keep this pinned comment */ declare module C { function foo(); } diff --git a/tests/cases/compiler/commentOnAmbientVariable1.ts b/tests/cases/compiler/commentOnAmbientVariable1.ts index 0124be05053..ef539441bd2 100644 --- a/tests/cases/compiler/commentOnAmbientVariable1.ts +++ b/tests/cases/compiler/commentOnAmbientVariable1.ts @@ -1,4 +1,9 @@ -/*! Keep this pinned comment */ +/*!========= + Keep this pinned comment + ========= +*/ + +/*! Don't keep this pinned comment */ declare var v: number; // Don't keep this comment. diff --git a/tests/cases/compiler/commentOnAmbientfunction.ts b/tests/cases/compiler/commentOnAmbientfunction.ts index d549303fc4f..51f3b6194b5 100644 --- a/tests/cases/compiler/commentOnAmbientfunction.ts +++ b/tests/cases/compiler/commentOnAmbientfunction.ts @@ -1,5 +1,10 @@ //@filename: a.ts -/*! Keep this pinned comment */ +/*!========= + Keep this pinned comment + ========= +*/ + +/*! Don't keep this pinned comment */ declare function foo(); // Don't keep this comment. diff --git a/tests/cases/compiler/commentOnClassMethod1.ts b/tests/cases/compiler/commentOnClassMethod1.ts index 048e0de984c..a4cca2be8a2 100644 --- a/tests/cases/compiler/commentOnClassMethod1.ts +++ b/tests/cases/compiler/commentOnClassMethod1.ts @@ -1,4 +1,4 @@ -// @comments:true +// @removeComments: false class WebControls { /** * Render a control diff --git a/tests/cases/compiler/commentOnElidedModule1.ts b/tests/cases/compiler/commentOnElidedModule1.ts index 22014a86f5b..0cdb7694273 100644 --- a/tests/cases/compiler/commentOnElidedModule1.ts +++ b/tests/cases/compiler/commentOnElidedModule1.ts @@ -1,5 +1,10 @@ //@filename: a.ts -/*! Keep this pinned comment */ +/*!================= + Keep this pinned + ================= +*/ + +/*! Don't keep this pinned comment */ module ElidedModule { } diff --git a/tests/cases/compiler/commentOnExpressionStatement1.ts b/tests/cases/compiler/commentOnExpressionStatement1.ts index 430d226ff70..2f64fbcc08d 100644 --- a/tests/cases/compiler/commentOnExpressionStatement1.ts +++ b/tests/cases/compiler/commentOnExpressionStatement1.ts @@ -1,3 +1,3 @@ -// @comments: true +// @removeComments: false 1 + 1; // Comment. \ No newline at end of file diff --git a/tests/cases/compiler/commentOnIfStatement1.ts b/tests/cases/compiler/commentOnIfStatement1.ts index afff0000c86..295a0f513f7 100644 --- a/tests/cases/compiler/commentOnIfStatement1.ts +++ b/tests/cases/compiler/commentOnIfStatement1.ts @@ -1,4 +1,4 @@ -// @comments: true +// @removeComments: false // Test if (true) { diff --git a/tests/cases/compiler/commentOnImportStatement1.ts b/tests/cases/compiler/commentOnImportStatement1.ts index e26faf21fb6..597509075b3 100644 --- a/tests/cases/compiler/commentOnImportStatement1.ts +++ b/tests/cases/compiler/commentOnImportStatement1.ts @@ -1,5 +1,5 @@ -//@module: amd -// @comments: true +// @module: amd +// @removeComments: false /* Copyright */ import foo = require('./foo'); diff --git a/tests/cases/compiler/commentOnImportStatement2.ts b/tests/cases/compiler/commentOnImportStatement2.ts index 096041f3f5b..ccb5b57887a 100644 --- a/tests/cases/compiler/commentOnImportStatement2.ts +++ b/tests/cases/compiler/commentOnImportStatement2.ts @@ -1,4 +1,4 @@ -//@module: commonjs -// @comments: true +// @module: commonjs +// @removeComments: false /* not copyright */ import foo = require('./foo'); \ No newline at end of file diff --git a/tests/cases/compiler/commentOnImportStatement3.ts b/tests/cases/compiler/commentOnImportStatement3.ts index 0cfef3feeff..d60756ecf7e 100644 --- a/tests/cases/compiler/commentOnImportStatement3.ts +++ b/tests/cases/compiler/commentOnImportStatement3.ts @@ -1,5 +1,5 @@ -//@module: commonjs -// @comments: true +// @module: commonjs +// @removeComments: false /* copyright */ /* not copyright */ diff --git a/tests/cases/compiler/commentOnInterface1.ts b/tests/cases/compiler/commentOnInterface1.ts index a394da0dd2c..c22229b7ccf 100644 --- a/tests/cases/compiler/commentOnInterface1.ts +++ b/tests/cases/compiler/commentOnInterface1.ts @@ -1,5 +1,10 @@ //@filename: a.ts -/*! Keep this pinned comment */ +/*!================= + Keep this pinned + ================= +*/ + +/*! Don't keep this pinned comment */ interface I { } diff --git a/tests/cases/compiler/commentOnSignature1.ts b/tests/cases/compiler/commentOnSignature1.ts index 770c103a9fc..e8d2d831e8b 100644 --- a/tests/cases/compiler/commentOnSignature1.ts +++ b/tests/cases/compiler/commentOnSignature1.ts @@ -1,5 +1,10 @@ // @filename: a.ts -/*! Keep this pinned comment */ +/*!================= + Keep this pinned + ================= +*/ + +/*! Don't keep this pinned comment */ function foo(n: number): void; // Don't keep this comment. function foo(s: string): void; diff --git a/tests/cases/compiler/commentOnSimpleArrowFunctionBody1.ts b/tests/cases/compiler/commentOnSimpleArrowFunctionBody1.ts index 548548de3d6..b1edc61cb82 100644 --- a/tests/cases/compiler/commentOnSimpleArrowFunctionBody1.ts +++ b/tests/cases/compiler/commentOnSimpleArrowFunctionBody1.ts @@ -1,4 +1,4 @@ -// @comments: true +// @removeComments: false function Foo(x: any) { } diff --git a/tests/cases/compiler/commentsBeforeFunctionExpression1.ts b/tests/cases/compiler/commentsBeforeFunctionExpression1.ts index 64fe3b7b6ec..d3b21c18475 100644 --- a/tests/cases/compiler/commentsBeforeFunctionExpression1.ts +++ b/tests/cases/compiler/commentsBeforeFunctionExpression1.ts @@ -1,4 +1,4 @@ -// @comments:true +// @removeComments: false var v = { f: /**own f*/ (a) => 0 } diff --git a/tests/cases/compiler/commentsBeforeVariableStatement1.ts b/tests/cases/compiler/commentsBeforeVariableStatement1.ts index e6c49f17d7f..e4e019cef5e 100644 --- a/tests/cases/compiler/commentsBeforeVariableStatement1.ts +++ b/tests/cases/compiler/commentsBeforeVariableStatement1.ts @@ -1,4 +1,4 @@ -//@module: amd -// @comments: true +// @module: amd +// @removeComments: false /** b's comment*/ export var b: number; diff --git a/tests/cases/compiler/commentsClass.ts b/tests/cases/compiler/commentsClass.ts index e9a8f3cee1d..8823f5db6d2 100644 --- a/tests/cases/compiler/commentsClass.ts +++ b/tests/cases/compiler/commentsClass.ts @@ -1,6 +1,6 @@ // @target: ES5 // @declaration: true -// @comments: true +// @removeComments: false /** This is class c2 without constuctor*/ class c2 { diff --git a/tests/cases/compiler/commentsClassMembers.ts b/tests/cases/compiler/commentsClassMembers.ts index 92a3a1356f2..414f560c2a7 100644 --- a/tests/cases/compiler/commentsClassMembers.ts +++ b/tests/cases/compiler/commentsClassMembers.ts @@ -1,6 +1,6 @@ // @target: ES5 // @declaration: true -// @comments: true +// @removeComments: false /** This is comment for c1*/ class c1 { diff --git a/tests/cases/compiler/commentsCommentParsing.ts b/tests/cases/compiler/commentsCommentParsing.ts index 7bfc9de4fd2..a1fbf50c61f 100644 --- a/tests/cases/compiler/commentsCommentParsing.ts +++ b/tests/cases/compiler/commentsCommentParsing.ts @@ -1,6 +1,6 @@ // @target: ES5 // @declaration: true -// @comments: true +// @removeComments: false /// This is simple /// comments function simple() { diff --git a/tests/cases/compiler/commentsDottedModuleName.ts b/tests/cases/compiler/commentsDottedModuleName.ts index 136d189d1ac..55266931036 100644 --- a/tests/cases/compiler/commentsDottedModuleName.ts +++ b/tests/cases/compiler/commentsDottedModuleName.ts @@ -1,7 +1,7 @@ -//@module: amd +// @module: amd // @target: ES5 // @declaration: true -// @comments: true +// @removeComments: false /** this is multi declare module*/ export module outerModule.InnerModule { diff --git a/tests/cases/compiler/commentsEnums.ts b/tests/cases/compiler/commentsEnums.ts index 2d69c863f2d..d7d654c1e72 100644 --- a/tests/cases/compiler/commentsEnums.ts +++ b/tests/cases/compiler/commentsEnums.ts @@ -1,6 +1,6 @@ // @target: ES5 // @declaration: true -// @comments: true +// @removeComments: false /** Enum of colors*/ enum Colors { diff --git a/tests/cases/compiler/commentsExternalModules.ts b/tests/cases/compiler/commentsExternalModules.ts index 86c6b2be8d3..04489611427 100644 --- a/tests/cases/compiler/commentsExternalModules.ts +++ b/tests/cases/compiler/commentsExternalModules.ts @@ -1,7 +1,7 @@ -//@module: amd +// @module: amd // @target: ES5 // @declaration: true -// @comments: true +// @removeComments: false // @Filename: commentsExternalModules_0.ts /** Module comment*/ diff --git a/tests/cases/compiler/commentsExternalModules2.ts b/tests/cases/compiler/commentsExternalModules2.ts index 354e74738be..b1dfb04902b 100644 --- a/tests/cases/compiler/commentsExternalModules2.ts +++ b/tests/cases/compiler/commentsExternalModules2.ts @@ -1,7 +1,7 @@ -//@module: amd +// @module: amd // @target: ES5 // @declaration: true -// @comments: true +// @removeComments: false // @Filename: commentsExternalModules2_0.ts /** Module comment*/ diff --git a/tests/cases/compiler/commentsExternalModules3.ts b/tests/cases/compiler/commentsExternalModules3.ts index 2f214c5d28c..a59458893ca 100644 --- a/tests/cases/compiler/commentsExternalModules3.ts +++ b/tests/cases/compiler/commentsExternalModules3.ts @@ -1,7 +1,7 @@ -//@module: commonjs +// @module: commonjs // @target: ES5 // @declaration: true -// @comments: true +// @removeComments: false // @Filename: commentsExternalModules2_0.ts /** Module comment*/ @@ -56,7 +56,7 @@ var myvar2 = new m4.m2.c(); // @Filename: commentsExternalModules_1.ts /**This is on import declaration*/ -import extMod = require("commentsExternalModules2_0"); // trailing comment 1 +import extMod = require("./commentsExternalModules2_0"); // trailing comment 1 extMod.m1.fooExport(); export var newVar = new extMod.m1.m2.c(); extMod.m4.fooExport(); diff --git a/tests/cases/compiler/commentsFormatting.ts b/tests/cases/compiler/commentsFormatting.ts index b413f0f92ea..c0f2d3093f9 100644 --- a/tests/cases/compiler/commentsFormatting.ts +++ b/tests/cases/compiler/commentsFormatting.ts @@ -1,6 +1,6 @@ // @target: ES5 // @declaration: true -// @comments: true +// @removeComments: false module m { /** this is first line - aligned to class declaration diff --git a/tests/cases/compiler/commentsFunction.ts b/tests/cases/compiler/commentsFunction.ts index b71da4ae085..1b379fd15c6 100644 --- a/tests/cases/compiler/commentsFunction.ts +++ b/tests/cases/compiler/commentsFunction.ts @@ -1,6 +1,6 @@ // @target: ES5 // @declaration: true -// @comments: true +// @removeComments: false /** This comment should appear for foo*/ function foo() { diff --git a/tests/cases/compiler/commentsInheritance.ts b/tests/cases/compiler/commentsInheritance.ts index aa4c54ee128..40924851766 100644 --- a/tests/cases/compiler/commentsInheritance.ts +++ b/tests/cases/compiler/commentsInheritance.ts @@ -1,6 +1,6 @@ // @target: ES5 // @declaration: true -// @comments: true +// @removeComments: false /** i1 is interface with properties*/ interface i1 { diff --git a/tests/cases/compiler/commentsInterface.ts b/tests/cases/compiler/commentsInterface.ts index b6455e9235d..2e35a95f207 100644 --- a/tests/cases/compiler/commentsInterface.ts +++ b/tests/cases/compiler/commentsInterface.ts @@ -1,6 +1,6 @@ // @target: ES5 // @declaration: true -// @comments: true +// @removeComments: false /** this is interface 1*/ interface i1 { } diff --git a/tests/cases/compiler/commentsModules.ts b/tests/cases/compiler/commentsModules.ts index 29ac0c22373..943ef640545 100644 --- a/tests/cases/compiler/commentsModules.ts +++ b/tests/cases/compiler/commentsModules.ts @@ -1,6 +1,6 @@ // @target: ES5 // @declaration: true -// @comments: true +// @removeComments: false /** Module comment*/ module m1 { /** b's comment*/ diff --git a/tests/cases/compiler/commentsMultiModuleMultiFile.ts b/tests/cases/compiler/commentsMultiModuleMultiFile.ts index 2d19f775bda..04066b975ab 100644 --- a/tests/cases/compiler/commentsMultiModuleMultiFile.ts +++ b/tests/cases/compiler/commentsMultiModuleMultiFile.ts @@ -1,7 +1,7 @@ -//@module: amd +// @module: amd // @target: ES5 // @declaration: true -// @comments: true +// @removeComments: false // @Filename: commentsMultiModuleMultiFile_0.ts /** this is multi declare module*/ diff --git a/tests/cases/compiler/commentsMultiModuleSingleFile.ts b/tests/cases/compiler/commentsMultiModuleSingleFile.ts index a9871d31dbe..651a3cb07ba 100644 --- a/tests/cases/compiler/commentsMultiModuleSingleFile.ts +++ b/tests/cases/compiler/commentsMultiModuleSingleFile.ts @@ -1,6 +1,6 @@ // @target: ES5 // @declaration: true -// @comments: true +// @removeComments: false /** this is multi declare module*/ module multiM { diff --git a/tests/cases/compiler/commentsOnObjectLiteral1.ts b/tests/cases/compiler/commentsOnObjectLiteral1.ts index 7bc92e8664e..79e5aa81205 100644 --- a/tests/cases/compiler/commentsOnObjectLiteral1.ts +++ b/tests/cases/compiler/commentsOnObjectLiteral1.ts @@ -1,4 +1,4 @@ -// @comments: true +// @removeComments: false var Person = makeClass( /** @scope Person diff --git a/tests/cases/compiler/commentsOnObjectLiteral2.ts b/tests/cases/compiler/commentsOnObjectLiteral2.ts index da2ee14b730..952df7ed969 100644 --- a/tests/cases/compiler/commentsOnObjectLiteral2.ts +++ b/tests/cases/compiler/commentsOnObjectLiteral2.ts @@ -1,4 +1,4 @@ -// @comments: true +// @removeComments: false var Person = makeClass( { /** diff --git a/tests/cases/compiler/commentsOnObjectLiteral3.ts b/tests/cases/compiler/commentsOnObjectLiteral3.ts index 6650b21e167..b983364bf1f 100644 --- a/tests/cases/compiler/commentsOnObjectLiteral3.ts +++ b/tests/cases/compiler/commentsOnObjectLiteral3.ts @@ -1,4 +1,4 @@ -// @comments: true +// @removeComments: false // @target: ES5 var v = { diff --git a/tests/cases/compiler/commentsOnObjectLiteral4.ts b/tests/cases/compiler/commentsOnObjectLiteral4.ts index e13668530c7..d685304f31e 100644 --- a/tests/cases/compiler/commentsOnObjectLiteral4.ts +++ b/tests/cases/compiler/commentsOnObjectLiteral4.ts @@ -1,4 +1,4 @@ -// @comments: true +// @removeComments: false // @target: ES5 var v = { diff --git a/tests/cases/compiler/commentsOnReturnStatement1.ts b/tests/cases/compiler/commentsOnReturnStatement1.ts index 966d66511b3..0f689fb4681 100644 --- a/tests/cases/compiler/commentsOnReturnStatement1.ts +++ b/tests/cases/compiler/commentsOnReturnStatement1.ts @@ -1,4 +1,4 @@ -// @comments: true +// @removeComments: false class DebugClass { public static debugFunc() { // Start Debugger Test Code diff --git a/tests/cases/compiler/commentsOnStaticMembers.ts b/tests/cases/compiler/commentsOnStaticMembers.ts index 7dc1a41c953..dd5169a972a 100644 --- a/tests/cases/compiler/commentsOnStaticMembers.ts +++ b/tests/cases/compiler/commentsOnStaticMembers.ts @@ -1,4 +1,4 @@ -// @comments: true +// @removeComments: false class test { /** diff --git a/tests/cases/compiler/commentsOverloads.ts b/tests/cases/compiler/commentsOverloads.ts index 85a1a9d8064..efb5d73df8f 100644 --- a/tests/cases/compiler/commentsOverloads.ts +++ b/tests/cases/compiler/commentsOverloads.ts @@ -1,6 +1,6 @@ // @target: ES5 // @declaration: true -// @comments: true +// @removeComments: false /** this is signature 1*/ function f1(/**param a*/a: number): number; function f1(b: string): number; diff --git a/tests/cases/compiler/commentsPropertySignature1.ts b/tests/cases/compiler/commentsPropertySignature1.ts index b92b9c6ded7..48ba5c3fda1 100644 --- a/tests/cases/compiler/commentsPropertySignature1.ts +++ b/tests/cases/compiler/commentsPropertySignature1.ts @@ -1,4 +1,4 @@ -// @comments: true +// @removeComments: false var a = { /** own x*/ x: 0 diff --git a/tests/cases/compiler/commentsTypeParameters.ts b/tests/cases/compiler/commentsTypeParameters.ts index 4fc3a30a192..c1e49280ed0 100644 --- a/tests/cases/compiler/commentsTypeParameters.ts +++ b/tests/cases/compiler/commentsTypeParameters.ts @@ -1,5 +1,5 @@ // @declaration: true -// @comments: true +// @removeComments: false class C { method(a: U) { } diff --git a/tests/cases/compiler/commentsVarDecl.ts b/tests/cases/compiler/commentsVarDecl.ts index 3b7d56e4078..cb244e94365 100644 --- a/tests/cases/compiler/commentsVarDecl.ts +++ b/tests/cases/compiler/commentsVarDecl.ts @@ -1,6 +1,6 @@ // @target: ES5 // @declaration: true -// @comments: true +// @removeComments: false /** Variable comments*/ var myVariable = 10; // This trailing Comment1 diff --git a/tests/cases/compiler/commentsVariableStatement1.ts b/tests/cases/compiler/commentsVariableStatement1.ts index 368115af17c..e9c9ca28a08 100644 --- a/tests/cases/compiler/commentsVariableStatement1.ts +++ b/tests/cases/compiler/commentsVariableStatement1.ts @@ -1,5 +1,5 @@ // @declaration: true -// @comments: true +// @removeComments: false /** Comment */ var v = 1; \ No newline at end of file diff --git a/tests/cases/compiler/commentsdoNotEmitComments.ts b/tests/cases/compiler/commentsdoNotEmitComments.ts index 6895f67b6b0..e2aaa269e1f 100644 --- a/tests/cases/compiler/commentsdoNotEmitComments.ts +++ b/tests/cases/compiler/commentsdoNotEmitComments.ts @@ -1,6 +1,6 @@ // @target: ES5 // @declaration: true -// @comments: false +// @removeComments: true /** Variable comments*/ var myVariable = 10; diff --git a/tests/cases/compiler/commentsemitComments.ts b/tests/cases/compiler/commentsemitComments.ts index fdedb787739..b20fbb9641a 100644 --- a/tests/cases/compiler/commentsemitComments.ts +++ b/tests/cases/compiler/commentsemitComments.ts @@ -1,6 +1,6 @@ // @target: ES5 // @declaration: true -// @comments: true +// @removeComments: false /** Variable comments*/ var myVariable = 10; diff --git a/tests/cases/compiler/constEnumToStringNoComments.ts b/tests/cases/compiler/constEnumToStringNoComments.ts index 802ee9068bb..f98ae8d509e 100644 --- a/tests/cases/compiler/constEnumToStringNoComments.ts +++ b/tests/cases/compiler/constEnumToStringNoComments.ts @@ -1,4 +1,4 @@ -// @comments: false +// @removeComments: true const enum Foo { X = 100, Y = 0.5, diff --git a/tests/cases/compiler/constEnumToStringWithComments.ts b/tests/cases/compiler/constEnumToStringWithComments.ts index e10c3591131..ce85d8b256f 100644 --- a/tests/cases/compiler/constEnumToStringWithComments.ts +++ b/tests/cases/compiler/constEnumToStringWithComments.ts @@ -1,4 +1,4 @@ -// @comments: true +// @removeComments: false const enum Foo { X = 100, Y = 0.5, diff --git a/tests/cases/compiler/declFileAccessors.ts b/tests/cases/compiler/declFileAccessors.ts index ea9b05f2fef..bc41722f77d 100644 --- a/tests/cases/compiler/declFileAccessors.ts +++ b/tests/cases/compiler/declFileAccessors.ts @@ -1,6 +1,6 @@ // @target: ES5 // @declaration: true -// @comments: true +// @removeComments: false // @module: commonjs // @Filename: declFileAccessors_0.ts diff --git a/tests/cases/compiler/declFileAliasUseBeforeDeclaration.ts b/tests/cases/compiler/declFileAliasUseBeforeDeclaration.ts index c803f65cf7c..63cd2761a9e 100644 --- a/tests/cases/compiler/declFileAliasUseBeforeDeclaration.ts +++ b/tests/cases/compiler/declFileAliasUseBeforeDeclaration.ts @@ -1,9 +1,9 @@ -//@module: commonjs -//@declaration: true +// @module: commonjs +// @declaration: true // @Filename: declFileAliasUseBeforeDeclaration_foo.ts export class Foo { } // @Filename: declFileAliasUseBeforeDeclaration_test.ts export function bar(a: foo.Foo) { } -import foo = require("declFileAliasUseBeforeDeclaration_foo"); \ No newline at end of file +import foo = require("./declFileAliasUseBeforeDeclaration_foo"); \ No newline at end of file diff --git a/tests/cases/compiler/declFileCallSignatures.ts b/tests/cases/compiler/declFileCallSignatures.ts index 9ff74730fbf..4225c580755 100644 --- a/tests/cases/compiler/declFileCallSignatures.ts +++ b/tests/cases/compiler/declFileCallSignatures.ts @@ -1,6 +1,6 @@ // @target: ES5 // @declaration: true -// @comments: true +// @removeComments: false // @module: commonjs // @Filename: declFileCallSignatures_0.ts diff --git a/tests/cases/compiler/declFileConstructSignatures.ts b/tests/cases/compiler/declFileConstructSignatures.ts index b81e4f831ea..717619e8b2f 100644 --- a/tests/cases/compiler/declFileConstructSignatures.ts +++ b/tests/cases/compiler/declFileConstructSignatures.ts @@ -1,6 +1,6 @@ // @target: ES5 // @declaration: true -// @comments: true +// @removeComments: false // @module: commonjs // @Filename: declFileConstructSignatures_0.ts diff --git a/tests/cases/compiler/declFileConstructors.ts b/tests/cases/compiler/declFileConstructors.ts index c1f4862e44c..8a6a8a6c473 100644 --- a/tests/cases/compiler/declFileConstructors.ts +++ b/tests/cases/compiler/declFileConstructors.ts @@ -1,6 +1,6 @@ // @target: ES5 // @declaration: true -// @comments: true +// @removeComments: false // @module: commonjs // @Filename: declFileConstructors_0.ts diff --git a/tests/cases/compiler/declFileForExportedImport.ts b/tests/cases/compiler/declFileForExportedImport.ts index ec286c2711e..8809d0baa37 100644 --- a/tests/cases/compiler/declFileForExportedImport.ts +++ b/tests/cases/compiler/declFileForExportedImport.ts @@ -5,7 +5,7 @@ export var x: number; // @Filename: declFileForExportedImport_1.ts /// -export import a = require('declFileForExportedImport_0'); +export import a = require('./declFileForExportedImport_0'); var y = a.x; export import b = a; diff --git a/tests/cases/compiler/declFileFunctions.ts b/tests/cases/compiler/declFileFunctions.ts index 7b9c55e9214..4217fdf6e95 100644 --- a/tests/cases/compiler/declFileFunctions.ts +++ b/tests/cases/compiler/declFileFunctions.ts @@ -1,6 +1,6 @@ // @target: ES5 // @declaration: true -// @comments: true +// @removeComments: false // @module: commonjs // @Filename: declFileFunctions_0.ts diff --git a/tests/cases/compiler/declFileImportModuleWithExportAssignment.ts b/tests/cases/compiler/declFileImportModuleWithExportAssignment.ts index 3e00557eec5..3a619905768 100644 --- a/tests/cases/compiler/declFileImportModuleWithExportAssignment.ts +++ b/tests/cases/compiler/declFileImportModuleWithExportAssignment.ts @@ -1,4 +1,4 @@ -//@module: commonjs +// @module: commonjs // @declaration: true // @Filename: declFileImportModuleWithExportAssignment_0.ts @@ -21,6 +21,6 @@ export = m2; // @Filename: declFileImportModuleWithExportAssignment_1.ts /**This is on import declaration*/ -import a1 = require("declFileImportModuleWithExportAssignment_0"); +import a1 = require("./declFileImportModuleWithExportAssignment_0"); export var a = a1; a.test1(null, null, null); diff --git a/tests/cases/compiler/declFileIndexSignatures.ts b/tests/cases/compiler/declFileIndexSignatures.ts index 3c9aaf34bfc..efc43f80e1f 100644 --- a/tests/cases/compiler/declFileIndexSignatures.ts +++ b/tests/cases/compiler/declFileIndexSignatures.ts @@ -1,6 +1,6 @@ // @target: ES5 // @declaration: true -// @comments: true +// @removeComments: false // @module: commonjs // @Filename: declFileIndexSignatures_0.ts diff --git a/tests/cases/compiler/declFileMethods.ts b/tests/cases/compiler/declFileMethods.ts index a5c31728ccd..50add66d97c 100644 --- a/tests/cases/compiler/declFileMethods.ts +++ b/tests/cases/compiler/declFileMethods.ts @@ -1,6 +1,6 @@ // @target: ES5 // @declaration: true -// @comments: true +// @removeComments: false // @module: commonjs // @Filename: declFileMethods_0.ts diff --git a/tests/cases/compiler/declarationEmit_exportAssignment.ts b/tests/cases/compiler/declarationEmit_exportAssignment.ts index 166f4abe8e7..bf9e443c85a 100644 --- a/tests/cases/compiler/declarationEmit_exportAssignment.ts +++ b/tests/cases/compiler/declarationEmit_exportAssignment.ts @@ -8,5 +8,5 @@ export function bar() { } export interface Buzz { } // @filename: index.ts -import {foo} from "utils"; +import {foo} from "./utils"; export = foo; \ No newline at end of file diff --git a/tests/cases/compiler/declarationEmit_exportDeclaration.ts b/tests/cases/compiler/declarationEmit_exportDeclaration.ts index a9e0bda761f..c7cff923b08 100644 --- a/tests/cases/compiler/declarationEmit_exportDeclaration.ts +++ b/tests/cases/compiler/declarationEmit_exportDeclaration.ts @@ -8,7 +8,7 @@ export function bar() { } export interface Buzz { } // @filename: index.ts -import {foo, bar, Buzz} from "utils"; +import {foo, bar, Buzz} from "./utils"; foo(); let obj: Buzz; diff --git a/tests/cases/compiler/declarationEmit_nameConflicts.ts b/tests/cases/compiler/declarationEmit_nameConflicts.ts index 66eb732ddae..a30f4b2ff1b 100644 --- a/tests/cases/compiler/declarationEmit_nameConflicts.ts +++ b/tests/cases/compiler/declarationEmit_nameConflicts.ts @@ -5,7 +5,7 @@ module f { export class c { } } export = f; // @Filename: declarationEmit_nameConflicts_0.ts -import im = require('declarationEmit_nameConflicts_1'); +import im = require('./declarationEmit_nameConflicts_1'); export module M { export function f() { } export class C { } diff --git a/tests/cases/compiler/destructuringWithGenericParameter.ts b/tests/cases/compiler/destructuringWithGenericParameter.ts new file mode 100644 index 00000000000..99b5bfade36 --- /dev/null +++ b/tests/cases/compiler/destructuringWithGenericParameter.ts @@ -0,0 +1,13 @@ +class GenericClass { + payload: T; +} + +var genericObject = new GenericClass<{ greeting: string }>(); + +function genericFunction(object: GenericClass, callback: (payload: T) => void) { + callback(object.payload); +} + +genericFunction(genericObject, ({greeting}) => { + var s = greeting.toLocaleLowerCase(); // Greeting should be of type string +}); diff --git a/tests/cases/compiler/doNotEmitDetachedComments.ts b/tests/cases/compiler/doNotEmitDetachedComments.ts new file mode 100644 index 00000000000..13facb6625e --- /dev/null +++ b/tests/cases/compiler/doNotEmitDetachedComments.ts @@ -0,0 +1,27 @@ +// @removeComments: true +/* + + multi line + comment +*/ + +var x = 10; + +// Single Line comment + +function foo() { } + + +/* + multi-line comment + +*/ + + +//======================== + + +function bar() { } + + +//======================== diff --git a/tests/cases/compiler/doNotEmitDetachedCommentsAtStartOfConstructor.ts b/tests/cases/compiler/doNotEmitDetachedCommentsAtStartOfConstructor.ts new file mode 100644 index 00000000000..094d624df40 --- /dev/null +++ b/tests/cases/compiler/doNotEmitDetachedCommentsAtStartOfConstructor.ts @@ -0,0 +1,38 @@ +// @removeComments: true +class A { + constructor() { + // Single Line Comment + + var x = 10; + } +} + +class B { + constructor() { + /* + Multi-line comment + */ + + var y = 10; + } +} + +class C { + constructor() { + // Single Line Comment with more than one blank line + + + var x = 10; + } +} + +class D { + constructor() { + /* + Multi-line comment with more than one blank line + */ + + + var y = 10; + } +} \ No newline at end of file diff --git a/tests/cases/compiler/doNotEmitDetachedCommentsAtStartOfFunctionBody.ts b/tests/cases/compiler/doNotEmitDetachedCommentsAtStartOfFunctionBody.ts new file mode 100644 index 00000000000..83dd8716df2 --- /dev/null +++ b/tests/cases/compiler/doNotEmitDetachedCommentsAtStartOfFunctionBody.ts @@ -0,0 +1,33 @@ +// @removeComments: true +function foo1() { + // Single line comment + + return 42; +} + +function foo2() { + /* + + multi line + comment + */ + + return 42; +} + +function foo3() { + // Single line comment with more than one blank line + + + return 42; +} + +function foo4() { + /* + + multi line comment with more than one blank line + */ + + return 42; +} + diff --git a/tests/cases/compiler/doNotEmitDetachedCommentsAtStartOfLambdaFunction.ts b/tests/cases/compiler/doNotEmitDetachedCommentsAtStartOfLambdaFunction.ts new file mode 100644 index 00000000000..be6cd7b37ce --- /dev/null +++ b/tests/cases/compiler/doNotEmitDetachedCommentsAtStartOfLambdaFunction.ts @@ -0,0 +1,30 @@ +// @removeComments: true +() => { + // Single line comment + + return 0; +} + +() => { + /* + multi-line comment + */ + + return 0; +} + +() => { + // Single line comment with more than one blank line + + + return 0; +} + +() => { + /* + multi-line comment with more than one blank line + */ + + + return 0; +} diff --git a/tests/cases/compiler/doNotEmitPinnedCommentNotOnTopOfFile.ts b/tests/cases/compiler/doNotEmitPinnedCommentNotOnTopOfFile.ts new file mode 100644 index 00000000000..bae1654af87 --- /dev/null +++ b/tests/cases/compiler/doNotEmitPinnedCommentNotOnTopOfFile.ts @@ -0,0 +1,10 @@ +// @removeComments: true +var x = 10; + +/*! + + multi line + comment +*/ + +var x = 10; \ No newline at end of file diff --git a/tests/cases/compiler/doNotEmitPinnedCommentOnNotEmittedNode.ts b/tests/cases/compiler/doNotEmitPinnedCommentOnNotEmittedNode.ts new file mode 100644 index 00000000000..23a1000fa11 --- /dev/null +++ b/tests/cases/compiler/doNotEmitPinnedCommentOnNotEmittedNode.ts @@ -0,0 +1,13 @@ +// @removeComments: true + +class C { + /*! remove pinned comment anywhere else */ + public foo(x: string, y: any) + public foo(x: string, y: number) { } +} + +// @Filename: file1.ts +var x = 10; + +/*! remove pinned comment anywhere else */ +declare var OData: any; \ No newline at end of file diff --git a/tests/cases/compiler/doNotEmitPinnedCommentOnNotEmittedNodets.ts b/tests/cases/compiler/doNotEmitPinnedCommentOnNotEmittedNodets.ts new file mode 100644 index 00000000000..27c5c5f6b7b --- /dev/null +++ b/tests/cases/compiler/doNotEmitPinnedCommentOnNotEmittedNodets.ts @@ -0,0 +1,10 @@ +// @removeComments: true + +class C { + /*! remove pinned comment anywhere else */ + public foo(x: string, y: any) + public foo(x: string, y: number) { } +} + +/*! remove pinned comment anywhere else */ +declare var OData: any; \ No newline at end of file diff --git a/tests/cases/compiler/doNotEmitPinnedDetachedComments.ts b/tests/cases/compiler/doNotEmitPinnedDetachedComments.ts new file mode 100644 index 00000000000..f30dc9299ee --- /dev/null +++ b/tests/cases/compiler/doNotEmitPinnedDetachedComments.ts @@ -0,0 +1,32 @@ +// @removeComments: true +var x = 10; + +/*! Single Line comment */ + +function baz() { } + + +/*! + multi-line comment + +*/ + + +//======================== + + +function bar() { + /*! + Remove this comment + */ + +} + +function foo() { + /*! Remove this */ + + return 0; +} + + +//======================== diff --git a/tests/cases/compiler/doNotEmitTripleSlashCommentsInEmptyFile.ts b/tests/cases/compiler/doNotEmitTripleSlashCommentsInEmptyFile.ts new file mode 100644 index 00000000000..357ce67dbed --- /dev/null +++ b/tests/cases/compiler/doNotEmitTripleSlashCommentsInEmptyFile.ts @@ -0,0 +1,10 @@ +// @removeComments: true + +// @Filename: file0.ts + +// @Filename: file1.ts + +// @Filename: file2.ts +/// +/// +/// \ No newline at end of file diff --git a/tests/cases/compiler/doNotEmitTripleSlashCommentsOnNotEmittedNode.ts b/tests/cases/compiler/doNotEmitTripleSlashCommentsOnNotEmittedNode.ts new file mode 100644 index 00000000000..bfa5c5ffc67 --- /dev/null +++ b/tests/cases/compiler/doNotEmitTripleSlashCommentsOnNotEmittedNode.ts @@ -0,0 +1,10 @@ +// @removeComments: true + +// @Filename: file0.ts +/// +declare var OData: any; + +// @Filename: file1.ts +/// +interface F { } + diff --git a/tests/cases/compiler/doNotemitTripleSlashComments.ts b/tests/cases/compiler/doNotemitTripleSlashComments.ts new file mode 100644 index 00000000000..14fdfda2d72 --- /dev/null +++ b/tests/cases/compiler/doNotemitTripleSlashComments.ts @@ -0,0 +1,35 @@ +// @removeComments: true + +// @Filename: file0.ts +/// +/// +/// +var x = 10; + +/// +var y = "hello"; + + +/// + +// @Filename: file1.ts +/// + +function foo() { } + + +/// + + +var z = "world"; + +// @Filename: file2.ts +/// + + +/// ==================================== + + +function bar() { } + + diff --git a/tests/cases/compiler/elidingImportNames.ts b/tests/cases/compiler/elidingImportNames.ts index b5893461664..f9cbf457d53 100644 --- a/tests/cases/compiler/elidingImportNames.ts +++ b/tests/cases/compiler/elidingImportNames.ts @@ -1,10 +1,10 @@ // @module: commonjs // @Filename: elidingImportNames_test.ts -import a = require('elidingImportNames_main'); // alias used in typeof +import a = require('./elidingImportNames_main'); // alias used in typeof var b = a; var x: typeof a; -import a2 = require('elidingImportNames_main1'); // alias not used in typeof +import a2 = require('./elidingImportNames_main1'); // alias not used in typeof var b2 = a2; diff --git a/tests/cases/compiler/emitCommentsOnlyFile.ts b/tests/cases/compiler/emitCommentsOnlyFile.ts index 9ded82be8e9..bcdf34c57b8 100644 --- a/tests/cases/compiler/emitCommentsOnlyFile.ts +++ b/tests/cases/compiler/emitCommentsOnlyFile.ts @@ -1,4 +1,4 @@ -// @comments: true +// @removeComments: false /** * @name Foo diff --git a/tests/cases/compiler/emitPinnedCommentsOnTopOfFile.ts b/tests/cases/compiler/emitPinnedCommentsOnTopOfFile.ts new file mode 100644 index 00000000000..985a5f638b8 --- /dev/null +++ b/tests/cases/compiler/emitPinnedCommentsOnTopOfFile.ts @@ -0,0 +1,8 @@ +// @removeComments: true +/*! + + multi line + comment +*/ + +var x = 10; \ No newline at end of file diff --git a/tests/cases/compiler/emitPostComments.ts b/tests/cases/compiler/emitPostComments.ts index b76f8dcb2bb..767bf033295 100644 --- a/tests/cases/compiler/emitPostComments.ts +++ b/tests/cases/compiler/emitPostComments.ts @@ -1,4 +1,4 @@ -// @comments: true +// @removeComments: false var y = 10; /** diff --git a/tests/cases/compiler/emitPreComments.ts b/tests/cases/compiler/emitPreComments.ts index e43c4baaa3b..2d98231e000 100644 --- a/tests/cases/compiler/emitPreComments.ts +++ b/tests/cases/compiler/emitPreComments.ts @@ -1,4 +1,4 @@ -// @comments: true +// @removeComments: false // This is pre comment var y = 10; diff --git a/tests/cases/compiler/emitTopOfFileTripleSlashCommentOnNotEmittedNodeIfRemoveCommentsIsFalse.ts b/tests/cases/compiler/emitTopOfFileTripleSlashCommentOnNotEmittedNodeIfRemoveCommentsIsFalse.ts new file mode 100644 index 00000000000..56f7814104d --- /dev/null +++ b/tests/cases/compiler/emitTopOfFileTripleSlashCommentOnNotEmittedNodeIfRemoveCommentsIsFalse.ts @@ -0,0 +1,13 @@ +// @removeComments: false + +// @Filename: file0.ts +var x = 10 + +// @Filename: file1.ts +/// +declare var OData: any; + +/// +interface F { } + + diff --git a/tests/cases/compiler/emptyModuleName.ts b/tests/cases/compiler/emptyModuleName.ts new file mode 100644 index 00000000000..d82ff2ba608 --- /dev/null +++ b/tests/cases/compiler/emptyModuleName.ts @@ -0,0 +1,4 @@ +// @module: commonjs +import * as A from ""; +class B extends A { +} \ No newline at end of file diff --git a/tests/cases/compiler/enumFromExternalModule.ts b/tests/cases/compiler/enumFromExternalModule.ts index 3047dd52db3..2e943caf413 100644 --- a/tests/cases/compiler/enumFromExternalModule.ts +++ b/tests/cases/compiler/enumFromExternalModule.ts @@ -1,9 +1,9 @@ -//@module: commonjs +// @module: commonjs // @Filename: enumFromExternalModule_0.ts export enum Mode { Open } // @Filename: enumFromExternalModule_1.ts /// -import f = require('enumFromExternalModule_0'); +import f = require('./enumFromExternalModule_0'); var x = f.Mode.Open; diff --git a/tests/cases/compiler/errorWithTruncatedType.ts b/tests/cases/compiler/errorWithTruncatedType.ts index 307ff642ed9..c615ff928e4 100644 --- a/tests/cases/compiler/errorWithTruncatedType.ts +++ b/tests/cases/compiler/errorWithTruncatedType.ts @@ -1,4 +1,4 @@ -// @errortruncation: true +// @noErrorTruncation: false var x: { propertyWithAnExceedinglyLongName1: string; diff --git a/tests/cases/compiler/errorsOnImportedSymbol.ts b/tests/cases/compiler/errorsOnImportedSymbol.ts index 17f3e5fb92c..b3da9da162e 100644 --- a/tests/cases/compiler/errorsOnImportedSymbol.ts +++ b/tests/cases/compiler/errorsOnImportedSymbol.ts @@ -1,4 +1,4 @@ -//@module: commonjs +// @module: commonjs // @target: ES5 // @Filename: errorsOnImportedSymbol_0.ts @@ -9,7 +9,7 @@ interface Sammy { export = Sammy; // @Filename: errorsOnImportedSymbol_1.ts -import Sammy = require("errorsOnImportedSymbol_0"); +import Sammy = require("./errorsOnImportedSymbol_0"); var x = new Sammy.Sammy(); var y = Sammy.Sammy(); - + diff --git a/tests/cases/compiler/es3defaultAliasIsQuoted.ts b/tests/cases/compiler/es3defaultAliasIsQuoted.ts new file mode 100644 index 00000000000..ccaa0268906 --- /dev/null +++ b/tests/cases/compiler/es3defaultAliasIsQuoted.ts @@ -0,0 +1,15 @@ +// @module: commonjs +// @target: es3 + +// @Filename: es3defaultAliasQuoted_file0.ts +export class Foo { + static CONSTANT = "Foo"; +} + +export default function assert(value: boolean) { + if (!value) throw new Error("Assertion failed!"); +} + +// @Filename: es3defaultAliasQuoted_file1.ts +import {Foo, default as assert} from "./es3defaultAliasQuoted_file0"; +assert(Foo.CONSTANT === "Foo"); \ No newline at end of file diff --git a/tests/cases/compiler/es5andes6module.ts b/tests/cases/compiler/es5andes6module.ts new file mode 100644 index 00000000000..0fbff3c23d2 --- /dev/null +++ b/tests/cases/compiler/es5andes6module.ts @@ -0,0 +1,17 @@ +// @target: ES5 +// @sourcemap: false +// @declaration: false +// @module: es6 + +export default class A +{ + constructor () + { + + } + + public B() + { + return 42; + } +} diff --git a/tests/cases/compiler/es6ExportAllInEs5.ts b/tests/cases/compiler/es6ExportAllInEs5.ts index ed754e5cacb..3ee95e1a217 100644 --- a/tests/cases/compiler/es6ExportAllInEs5.ts +++ b/tests/cases/compiler/es6ExportAllInEs5.ts @@ -15,4 +15,4 @@ export module uninstantiated { } // @filename: client.ts -export * from "server"; \ No newline at end of file +export * from "./server"; \ No newline at end of file diff --git a/tests/cases/compiler/es6ExportClauseWithoutModuleSpecifierInEs5.ts b/tests/cases/compiler/es6ExportClauseWithoutModuleSpecifierInEs5.ts index 6361c013367..24dbc77e98f 100644 --- a/tests/cases/compiler/es6ExportClauseWithoutModuleSpecifierInEs5.ts +++ b/tests/cases/compiler/es6ExportClauseWithoutModuleSpecifierInEs5.ts @@ -15,8 +15,8 @@ export module uninstantiated { } // @filename: 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"; \ No newline at end of file +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"; \ No newline at end of file diff --git a/tests/cases/compiler/es6ImportDefaultBindingDts.ts b/tests/cases/compiler/es6ImportDefaultBindingDts.ts index 8b8a9787fdd..b4b82768691 100644 --- a/tests/cases/compiler/es6ImportDefaultBindingDts.ts +++ b/tests/cases/compiler/es6ImportDefaultBindingDts.ts @@ -7,6 +7,6 @@ class c { } export default c; // @filename: client.ts -import defaultBinding from "server"; +import defaultBinding from "./server"; export var x = new defaultBinding(); -import defaultBinding2 from "server"; // elide this import since defaultBinding2 is not used +import defaultBinding2 from "./server"; // elide this import since defaultBinding2 is not used diff --git a/tests/cases/compiler/es6ImportDefaultBindingFollowedWithNamedImport.ts b/tests/cases/compiler/es6ImportDefaultBindingFollowedWithNamedImport.ts index 9a6e1a8ebf5..cb84036af5e 100644 --- a/tests/cases/compiler/es6ImportDefaultBindingFollowedWithNamedImport.ts +++ b/tests/cases/compiler/es6ImportDefaultBindingFollowedWithNamedImport.ts @@ -9,15 +9,15 @@ export var m = a; export default {}; // @filename: es6ImportDefaultBindingFollowedWithNamedImport_1.ts -import defaultBinding1, { } from "es6ImportDefaultBindingFollowedWithNamedImport_0"; -import defaultBinding2, { a } 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"; +import defaultBinding3, { a as b } from "./es6ImportDefaultBindingFollowedWithNamedImport_0"; var x1: number = b; -import defaultBinding4, { x, a as y } from "es6ImportDefaultBindingFollowedWithNamedImport_0"; +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"; +import defaultBinding5, { x as z, } from "./es6ImportDefaultBindingFollowedWithNamedImport_0"; var x1: number = z; -import defaultBinding6, { m, } from "es6ImportDefaultBindingFollowedWithNamedImport_0"; +import defaultBinding6, { m, } from "./es6ImportDefaultBindingFollowedWithNamedImport_0"; var x1: number = m; diff --git a/tests/cases/compiler/es6ImportDefaultBindingFollowedWithNamedImport1InEs5.ts b/tests/cases/compiler/es6ImportDefaultBindingFollowedWithNamedImport1InEs5.ts index d5c9a6a395d..fc13b26e737 100644 --- a/tests/cases/compiler/es6ImportDefaultBindingFollowedWithNamedImport1InEs5.ts +++ b/tests/cases/compiler/es6ImportDefaultBindingFollowedWithNamedImport1InEs5.ts @@ -7,15 +7,15 @@ var a = 10; export default a; // @filename: es6ImportDefaultBindingFollowedWithNamedImport1InEs5_1.ts -import defaultBinding1, { } from "es6ImportDefaultBindingFollowedWithNamedImport1InEs5_0"; +import defaultBinding1, { } from "./es6ImportDefaultBindingFollowedWithNamedImport1InEs5_0"; var x: number = defaultBinding1; -import defaultBinding2, { a } from "es6ImportDefaultBindingFollowedWithNamedImport1InEs5_0"; +import defaultBinding2, { a } from "./es6ImportDefaultBindingFollowedWithNamedImport1InEs5_0"; var x: number = defaultBinding2; -import defaultBinding3, { a as b } from "es6ImportDefaultBindingFollowedWithNamedImport1InEs5_0"; +import defaultBinding3, { a as b } from "./es6ImportDefaultBindingFollowedWithNamedImport1InEs5_0"; var x: number = defaultBinding3; -import defaultBinding4, { x, a as y } from "es6ImportDefaultBindingFollowedWithNamedImport1InEs5_0"; +import defaultBinding4, { x, a as y } from "./es6ImportDefaultBindingFollowedWithNamedImport1InEs5_0"; var x: number = defaultBinding4; -import defaultBinding5, { x as z, } from "es6ImportDefaultBindingFollowedWithNamedImport1InEs5_0"; +import defaultBinding5, { x as z, } from "./es6ImportDefaultBindingFollowedWithNamedImport1InEs5_0"; var x: number = defaultBinding5; -import defaultBinding6, { m, } from "es6ImportDefaultBindingFollowedWithNamedImport1InEs5_0"; +import defaultBinding6, { m, } from "./es6ImportDefaultBindingFollowedWithNamedImport1InEs5_0"; var x: number = defaultBinding6; diff --git a/tests/cases/compiler/es6ImportDefaultBindingFollowedWithNamedImport1WithExport.ts b/tests/cases/compiler/es6ImportDefaultBindingFollowedWithNamedImport1WithExport.ts index 23ec8767d94..ca2b0561433 100644 --- a/tests/cases/compiler/es6ImportDefaultBindingFollowedWithNamedImport1WithExport.ts +++ b/tests/cases/compiler/es6ImportDefaultBindingFollowedWithNamedImport1WithExport.ts @@ -7,15 +7,15 @@ var a = 10; export default a; // @filename: client.ts -export import defaultBinding1, { } from "server"; +export import defaultBinding1, { } from "./server"; export var x1: number = defaultBinding1; -export import defaultBinding2, { a } from "server"; +export import defaultBinding2, { a } from "./server"; export var x1: number = defaultBinding2; -export import defaultBinding3, { a as b } from "server"; +export import defaultBinding3, { a as b } from "./server"; export var x1: number = defaultBinding3; -export import defaultBinding4, { x, a as y } from "server"; +export import defaultBinding4, { x, a as y } from "./server"; export var x1: number = defaultBinding4; -export import defaultBinding5, { x as z, } from "server"; +export import defaultBinding5, { x as z, } from "./server"; export var x1: number = defaultBinding5; -export import defaultBinding6, { m, } from "server"; +export import defaultBinding6, { m, } from "./server"; export var x1: number = defaultBinding6; diff --git a/tests/cases/compiler/es6ImportDefaultBindingFollowedWithNamedImportDts.ts b/tests/cases/compiler/es6ImportDefaultBindingFollowedWithNamedImportDts.ts index a84dab94033..87782d66aff 100644 --- a/tests/cases/compiler/es6ImportDefaultBindingFollowedWithNamedImportDts.ts +++ b/tests/cases/compiler/es6ImportDefaultBindingFollowedWithNamedImportDts.ts @@ -10,15 +10,15 @@ export class a12 { } export class x11 { } // @filename: client.ts -import defaultBinding1, { } from "server"; -import defaultBinding2, { a } from "server"; +import defaultBinding1, { } from "./server"; +import defaultBinding2, { a } from "./server"; export var x1 = new a(); -import defaultBinding3, { a11 as b } from "server"; +import defaultBinding3, { a11 as b } from "./server"; export var x2 = new b(); -import defaultBinding4, { x, a12 as y } from "server"; +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"; +import defaultBinding5, { x11 as z, } from "./server"; export var x3 = new z(); -import defaultBinding6, { m, } from "server"; +import defaultBinding6, { m, } from "./server"; export var x6 = new m(); diff --git a/tests/cases/compiler/es6ImportDefaultBindingFollowedWithNamedImportDts1.ts b/tests/cases/compiler/es6ImportDefaultBindingFollowedWithNamedImportDts1.ts index 7940f211ec7..64e771bebd1 100644 --- a/tests/cases/compiler/es6ImportDefaultBindingFollowedWithNamedImportDts1.ts +++ b/tests/cases/compiler/es6ImportDefaultBindingFollowedWithNamedImportDts1.ts @@ -7,15 +7,15 @@ class a { } export default a; // @filename: client.ts -import defaultBinding1, { } from "server"; +import defaultBinding1, { } from "./server"; export var x1 = new defaultBinding1(); -import defaultBinding2, { a } from "server"; +import defaultBinding2, { a } from "./server"; export var x2 = new defaultBinding2(); -import defaultBinding3, { a as b } from "server"; +import defaultBinding3, { a as b } from "./server"; export var x3 = new defaultBinding3(); -import defaultBinding4, { x, a as y } from "server"; +import defaultBinding4, { x, a as y } from "./server"; export var x4 = new defaultBinding4(); -import defaultBinding5, { x as z, } from "server"; +import defaultBinding5, { x as z, } from "./server"; export var x5 = new defaultBinding5(); -import defaultBinding6, { m, } from "server"; +import defaultBinding6, { m, } from "./server"; export var x6 = new defaultBinding6(); \ No newline at end of file diff --git a/tests/cases/compiler/es6ImportDefaultBindingFollowedWithNamedImportInEs5.ts b/tests/cases/compiler/es6ImportDefaultBindingFollowedWithNamedImportInEs5.ts index 6e42898d1bc..9a7902d66a0 100644 --- a/tests/cases/compiler/es6ImportDefaultBindingFollowedWithNamedImportInEs5.ts +++ b/tests/cases/compiler/es6ImportDefaultBindingFollowedWithNamedImportInEs5.ts @@ -8,15 +8,15 @@ export var x = a; export var m = a; // @filename: es6ImportDefaultBindingFollowedWithNamedImportInEs5_1.ts -import defaultBinding1, { } from "es6ImportDefaultBindingFollowedWithNamedImportInEs5_0"; -import defaultBinding2, { a } 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"; +import defaultBinding3, { a as b } from "./es6ImportDefaultBindingFollowedWithNamedImportInEs5_0"; var x1: number = b; -import defaultBinding4, { x, a as y } from "es6ImportDefaultBindingFollowedWithNamedImportInEs5_0"; +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"; +import defaultBinding5, { x as z, } from "./es6ImportDefaultBindingFollowedWithNamedImportInEs5_0"; var x1: number = z; -import defaultBinding6, { m, } from "es6ImportDefaultBindingFollowedWithNamedImportInEs5_0"; +import defaultBinding6, { m, } from "./es6ImportDefaultBindingFollowedWithNamedImportInEs5_0"; var x1: number = m; diff --git a/tests/cases/compiler/es6ImportDefaultBindingFollowedWithNamespaceBinding1InEs5.ts b/tests/cases/compiler/es6ImportDefaultBindingFollowedWithNamespaceBinding1InEs5.ts index 6195b279f72..133abf147cb 100644 --- a/tests/cases/compiler/es6ImportDefaultBindingFollowedWithNamespaceBinding1InEs5.ts +++ b/tests/cases/compiler/es6ImportDefaultBindingFollowedWithNamespaceBinding1InEs5.ts @@ -7,5 +7,5 @@ var a = 10; export default a; // @filename: es6ImportDefaultBindingFollowedWithNamespaceBindingInEs5_1.ts -import defaultBinding, * as nameSpaceBinding from "es6ImportDefaultBindingFollowedWithNamespaceBindingInEs5_0"; +import defaultBinding, * as nameSpaceBinding from "./es6ImportDefaultBindingFollowedWithNamespaceBindingInEs5_0"; var x: number = defaultBinding; \ No newline at end of file diff --git a/tests/cases/compiler/es6ImportDefaultBindingFollowedWithNamespaceBindingDts.ts b/tests/cases/compiler/es6ImportDefaultBindingFollowedWithNamespaceBindingDts.ts index 732f7ef7ba0..c9bb1a6dd10 100644 --- a/tests/cases/compiler/es6ImportDefaultBindingFollowedWithNamespaceBindingDts.ts +++ b/tests/cases/compiler/es6ImportDefaultBindingFollowedWithNamespaceBindingDts.ts @@ -5,5 +5,5 @@ export class a { } // @filename: client.ts -import defaultBinding, * as nameSpaceBinding from "server"; +import defaultBinding, * as nameSpaceBinding from "./server"; export var x = new nameSpaceBinding.a(); \ No newline at end of file diff --git a/tests/cases/compiler/es6ImportDefaultBindingFollowedWithNamespaceBindingInEs5.ts b/tests/cases/compiler/es6ImportDefaultBindingFollowedWithNamespaceBindingInEs5.ts index c58ba286e0a..cdc1590ec8f 100644 --- a/tests/cases/compiler/es6ImportDefaultBindingFollowedWithNamespaceBindingInEs5.ts +++ b/tests/cases/compiler/es6ImportDefaultBindingFollowedWithNamespaceBindingInEs5.ts @@ -6,5 +6,5 @@ export var a = 10; // @filename: es6ImportDefaultBindingFollowedWithNamespaceBindingInEs5_1.ts -import defaultBinding, * as nameSpaceBinding from "es6ImportDefaultBindingFollowedWithNamespaceBindingInEs5_0"; +import defaultBinding, * as nameSpaceBinding from "./es6ImportDefaultBindingFollowedWithNamespaceBindingInEs5_0"; var x: number = nameSpaceBinding.a; \ No newline at end of file diff --git a/tests/cases/compiler/es6ImportDefaultBindingFollowedWithNamespaceBindingWithExport.ts b/tests/cases/compiler/es6ImportDefaultBindingFollowedWithNamespaceBindingWithExport.ts index cafcace08a0..768386f67f6 100644 --- a/tests/cases/compiler/es6ImportDefaultBindingFollowedWithNamespaceBindingWithExport.ts +++ b/tests/cases/compiler/es6ImportDefaultBindingFollowedWithNamespaceBindingWithExport.ts @@ -5,5 +5,5 @@ export var a = 10; // @filename: client.ts -export import defaultBinding, * as nameSpaceBinding from "server"; +export import defaultBinding, * as nameSpaceBinding from "./server"; export var x: number = nameSpaceBinding.a; \ No newline at end of file diff --git a/tests/cases/compiler/es6ImportDefaultBindingInEs5.ts b/tests/cases/compiler/es6ImportDefaultBindingInEs5.ts index e0877bd74c1..261c1b6079c 100644 --- a/tests/cases/compiler/es6ImportDefaultBindingInEs5.ts +++ b/tests/cases/compiler/es6ImportDefaultBindingInEs5.ts @@ -7,4 +7,4 @@ var a = 10; export = a; // @filename: es6ImportDefaultBindingInEs5_1.ts -import defaultBinding from "es6ImportDefaultBindingInEs5_0"; \ No newline at end of file +import defaultBinding from "./es6ImportDefaultBindingInEs5_0"; \ No newline at end of file diff --git a/tests/cases/compiler/es6ImportDefaultBindingMergeErrors.ts b/tests/cases/compiler/es6ImportDefaultBindingMergeErrors.ts index 1d87fde5784..3d637abd798 100644 --- a/tests/cases/compiler/es6ImportDefaultBindingMergeErrors.ts +++ b/tests/cases/compiler/es6ImportDefaultBindingMergeErrors.ts @@ -6,11 +6,11 @@ var a = 10; export default a; // @filename: es6ImportDefaultBindingMergeErrors_1.ts -import defaultBinding from "es6ImportDefaultBindingMergeErrors_0"; +import defaultBinding from "./es6ImportDefaultBindingMergeErrors_0"; interface defaultBinding { // This is ok } var x = defaultBinding; -import defaultBinding2 from "es6ImportDefaultBindingMergeErrors_0"; // Should be error +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 +import defaultBinding3 from "./es6ImportDefaultBindingMergeErrors_0"; // Should be error +import defaultBinding3 from "./es6ImportDefaultBindingMergeErrors_0"; // SHould be error diff --git a/tests/cases/compiler/es6ImportDefaultBindingNoDefaultProperty.ts b/tests/cases/compiler/es6ImportDefaultBindingNoDefaultProperty.ts index 5ab1c743721..74b2abfa83c 100644 --- a/tests/cases/compiler/es6ImportDefaultBindingNoDefaultProperty.ts +++ b/tests/cases/compiler/es6ImportDefaultBindingNoDefaultProperty.ts @@ -4,4 +4,4 @@ export var a = 10; // @filename: es6ImportDefaultBindingNoDefaultProperty_1.ts -import defaultBinding from "es6ImportDefaultBindingNoDefaultProperty_0"; +import defaultBinding from "./es6ImportDefaultBindingNoDefaultProperty_0"; diff --git a/tests/cases/compiler/es6ImportNameSpaceImport.ts b/tests/cases/compiler/es6ImportNameSpaceImport.ts index 0c831d323d1..87fc59fdbaa 100644 --- a/tests/cases/compiler/es6ImportNameSpaceImport.ts +++ b/tests/cases/compiler/es6ImportNameSpaceImport.ts @@ -6,6 +6,6 @@ export var a = 10; // @filename: 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 +import * as nameSpaceBinding2 from "./es6ImportNameSpaceImport_0"; // elide this diff --git a/tests/cases/compiler/es6ImportNameSpaceImportDts.ts b/tests/cases/compiler/es6ImportNameSpaceImportDts.ts index 95b85e53edc..77e65123e78 100644 --- a/tests/cases/compiler/es6ImportNameSpaceImportDts.ts +++ b/tests/cases/compiler/es6ImportNameSpaceImportDts.ts @@ -5,6 +5,6 @@ export class c { }; // @filename: client.ts -import * as nameSpaceBinding from "server"; +import * as nameSpaceBinding from "./server"; export var x = new nameSpaceBinding.c(); -import * as nameSpaceBinding2 from "server"; // unreferenced \ No newline at end of file +import * as nameSpaceBinding2 from "./server"; // unreferenced \ No newline at end of file diff --git a/tests/cases/compiler/es6ImportNameSpaceImportInEs5.ts b/tests/cases/compiler/es6ImportNameSpaceImportInEs5.ts index 8104fe8b3c0..7900e5b5a2b 100644 --- a/tests/cases/compiler/es6ImportNameSpaceImportInEs5.ts +++ b/tests/cases/compiler/es6ImportNameSpaceImportInEs5.ts @@ -6,6 +6,6 @@ export var a = 10; // @filename: 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 +import * as nameSpaceBinding2 from "./es6ImportNameSpaceImportInEs5_0"; // elide this diff --git a/tests/cases/compiler/es6ImportNameSpaceImportMergeErrors.ts b/tests/cases/compiler/es6ImportNameSpaceImportMergeErrors.ts index d4b69e8bcf4..cdedbe3fe9b 100644 --- a/tests/cases/compiler/es6ImportNameSpaceImportMergeErrors.ts +++ b/tests/cases/compiler/es6ImportNameSpaceImportMergeErrors.ts @@ -5,11 +5,11 @@ export var a = 10; // @filename: es6ImportNameSpaceImportMergeErrors_1.ts -import * as nameSpaceBinding from "es6ImportNameSpaceImportMergeErrors_0"; +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 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 +import * as nameSpaceBinding3 from "./es6ImportNameSpaceImportMergeErrors_0"; // should be error var nameSpaceBinding3 = 10; diff --git a/tests/cases/compiler/es6ImportNameSpaceImportNoNamedExports.ts b/tests/cases/compiler/es6ImportNameSpaceImportNoNamedExports.ts index 7d3bdcec94c..fe471dbc6c7 100644 --- a/tests/cases/compiler/es6ImportNameSpaceImportNoNamedExports.ts +++ b/tests/cases/compiler/es6ImportNameSpaceImportNoNamedExports.ts @@ -6,4 +6,4 @@ var a = 10; export = a; // @filename: es6ImportNameSpaceImportNoNamedExports_1.ts -import * as nameSpaceBinding from "es6ImportNameSpaceImportNoNamedExports_0"; // error \ No newline at end of file +import * as nameSpaceBinding from "./es6ImportNameSpaceImportNoNamedExports_0"; // error \ No newline at end of file diff --git a/tests/cases/compiler/es6ImportNamedImport.ts b/tests/cases/compiler/es6ImportNamedImport.ts index 0a12e10169b..d71b27eeede 100644 --- a/tests/cases/compiler/es6ImportNamedImport.ts +++ b/tests/cases/compiler/es6ImportNamedImport.ts @@ -13,30 +13,30 @@ export var z2 = 10; export var aaaa = 10; // @filename: es6ImportNamedImport_1.ts -import { } from "es6ImportNamedImport_0"; -import { a } from "es6ImportNamedImport_0"; +import { } from "./es6ImportNamedImport_0"; +import { a } from "./es6ImportNamedImport_0"; var xxxx = a; -import { a as b } from "es6ImportNamedImport_0"; +import { a as b } from "./es6ImportNamedImport_0"; var xxxx = b; -import { x, a as y } from "es6ImportNamedImport_0"; +import { x, a as y } from "./es6ImportNamedImport_0"; var xxxx = x; var xxxx = y; -import { x as z, } from "es6ImportNamedImport_0"; +import { x as z, } from "./es6ImportNamedImport_0"; var xxxx = z; -import { m, } from "es6ImportNamedImport_0"; +import { m, } from "./es6ImportNamedImport_0"; var xxxx = m; -import { a1, x1 } from "es6ImportNamedImport_0"; +import { a1, x1 } from "./es6ImportNamedImport_0"; var xxxx = a1; var xxxx = x1; -import { a1 as a11, x1 as x11 } from "es6ImportNamedImport_0"; +import { a1 as a11, x1 as x11 } from "./es6ImportNamedImport_0"; var xxxx = a11; var xxxx = x11; -import { z1 } from "es6ImportNamedImport_0"; +import { z1 } from "./es6ImportNamedImport_0"; var z111 = z1; -import { z2 as z3 } from "es6ImportNamedImport_0"; +import { z2 as z3 } from "./es6ImportNamedImport_0"; var z2 = z3; // z2 shouldn't give redeclare error // These are elided -import { aaaa } from "es6ImportNamedImport_0"; +import { aaaa } from "./es6ImportNamedImport_0"; // These are elided -import { aaaa as bbbb } from "es6ImportNamedImport_0"; +import { aaaa as bbbb } from "./es6ImportNamedImport_0"; diff --git a/tests/cases/compiler/es6ImportNamedImportDts.ts b/tests/cases/compiler/es6ImportNamedImportDts.ts index d83672f3754..b98a20ecfa1 100644 --- a/tests/cases/compiler/es6ImportNamedImportDts.ts +++ b/tests/cases/compiler/es6ImportNamedImportDts.ts @@ -18,29 +18,29 @@ export class aaaa { } export class aaaa1 { } // @filename: client.ts -import { } from "server"; -import { a } from "server"; +import { } from "./server"; +import { a } from "./server"; export var xxxx = new a(); -import { a11 as b } from "server"; +import { a11 as b } from "./server"; export var xxxx1 = new b(); -import { x, a12 as y } from "server"; +import { x, a12 as y } from "./server"; export var xxxx2 = new x(); export var xxxx3 = new y(); -import { x11 as z, } from "server"; +import { x11 as z, } from "./server"; export var xxxx4 = new z(); -import { m, } from "server"; +import { m, } from "./server"; export var xxxx5 = new m(); -import { a1, x1 } from "server"; +import { a1, x1 } from "./server"; export var xxxx6 = new a1(); export var xxxx7 = new x1(); -import { a111 as a11, x111 as x11 } from "server"; +import { a111 as a11, x111 as x11 } from "./server"; export var xxxx8 = new a11(); export var xxxx9 = new x11(); -import { z1 } from "server"; +import { z1 } from "./server"; export var z111 = new z1(); -import { z2 as z3 } from "server"; +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"; +import { aaaa } from "./server"; +import { aaaa1 as bbbb } from "./server"; diff --git a/tests/cases/compiler/es6ImportNamedImportInEs5.ts b/tests/cases/compiler/es6ImportNamedImportInEs5.ts index e12a8d032d3..428ad235329 100644 --- a/tests/cases/compiler/es6ImportNamedImportInEs5.ts +++ b/tests/cases/compiler/es6ImportNamedImportInEs5.ts @@ -13,30 +13,30 @@ export var z2 = 10; export var aaaa = 10; // @filename: es6ImportNamedImportInEs5_1.ts -import { } from "es6ImportNamedImportInEs5_0"; -import { a } from "es6ImportNamedImportInEs5_0"; +import { } from "./es6ImportNamedImportInEs5_0"; +import { a } from "./es6ImportNamedImportInEs5_0"; var xxxx = a; -import { a as b } from "es6ImportNamedImportInEs5_0"; +import { a as b } from "./es6ImportNamedImportInEs5_0"; var xxxx = b; -import { x, a as y } from "es6ImportNamedImportInEs5_0"; +import { x, a as y } from "./es6ImportNamedImportInEs5_0"; var xxxx = x; var xxxx = y; -import { x as z, } from "es6ImportNamedImportInEs5_0"; +import { x as z, } from "./es6ImportNamedImportInEs5_0"; var xxxx = z; -import { m, } from "es6ImportNamedImportInEs5_0"; +import { m, } from "./es6ImportNamedImportInEs5_0"; var xxxx = m; -import { a1, x1 } from "es6ImportNamedImportInEs5_0"; +import { a1, x1 } from "./es6ImportNamedImportInEs5_0"; var xxxx = a1; var xxxx = x1; -import { a1 as a11, x1 as x11 } from "es6ImportNamedImportInEs5_0"; +import { a1 as a11, x1 as x11 } from "./es6ImportNamedImportInEs5_0"; var xxxx = a11; var xxxx = x11; -import { z1 } from "es6ImportNamedImportInEs5_0"; +import { z1 } from "./es6ImportNamedImportInEs5_0"; var z111 = z1; -import { z2 as z3 } from "es6ImportNamedImportInEs5_0"; +import { z2 as z3 } from "./es6ImportNamedImportInEs5_0"; var z2 = z3; // z2 shouldn't give redeclare error // These are elided -import { aaaa } from "es6ImportNamedImportInEs5_0"; +import { aaaa } from "./es6ImportNamedImportInEs5_0"; // These are elided -import { aaaa as bbbb } from "es6ImportNamedImportInEs5_0"; +import { aaaa as bbbb } from "./es6ImportNamedImportInEs5_0"; diff --git a/tests/cases/compiler/es6ImportNamedImportInExportAssignment.ts b/tests/cases/compiler/es6ImportNamedImportInExportAssignment.ts index 7a4519c68bb..e3f64e1e747 100644 --- a/tests/cases/compiler/es6ImportNamedImportInExportAssignment.ts +++ b/tests/cases/compiler/es6ImportNamedImportInExportAssignment.ts @@ -6,5 +6,5 @@ export var a = 10; // @filename: es6ImportNamedImportInExportAssignment_1.ts -import { a } from "es6ImportNamedImportInExportAssignment_0"; +import { a } from "./es6ImportNamedImportInExportAssignment_0"; export = a; \ No newline at end of file diff --git a/tests/cases/compiler/es6ImportNamedImportInIndirectExportAssignment.ts b/tests/cases/compiler/es6ImportNamedImportInIndirectExportAssignment.ts index 16d11d4e19f..381a21f58ea 100644 --- a/tests/cases/compiler/es6ImportNamedImportInIndirectExportAssignment.ts +++ b/tests/cases/compiler/es6ImportNamedImportInIndirectExportAssignment.ts @@ -8,6 +8,6 @@ export module a { } // @filename: es6ImportNamedImportInIndirectExportAssignment_1.ts -import { a } from "es6ImportNamedImportInIndirectExportAssignment_0"; +import { a } from "./es6ImportNamedImportInIndirectExportAssignment_0"; import x = a; export = x; \ No newline at end of file diff --git a/tests/cases/compiler/es6ImportNamedImportMergeErrors.ts b/tests/cases/compiler/es6ImportNamedImportMergeErrors.ts index 54e30be1e23..60f13d51355 100644 --- a/tests/cases/compiler/es6ImportNamedImportMergeErrors.ts +++ b/tests/cases/compiler/es6ImportNamedImportMergeErrors.ts @@ -7,13 +7,13 @@ export var z = a; export var z1 = a; // @filename: es6ImportNamedImportMergeErrors_1.ts -import { a } from "es6ImportNamedImportMergeErrors_0"; +import { a } from "./es6ImportNamedImportMergeErrors_0"; interface a { } // shouldnt be error -import { x as x1 } from "es6ImportNamedImportMergeErrors_0"; +import { x as x1 } from "./es6ImportNamedImportMergeErrors_0"; interface x1 { } // shouldnt be error -import { x } from "es6ImportNamedImportMergeErrors_0"; // should be error +import { x } from "./es6ImportNamedImportMergeErrors_0"; // should be error var x = 10; -import { x as x44 } from "es6ImportNamedImportMergeErrors_0"; // should be error +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 +import { z } from "./es6ImportNamedImportMergeErrors_0"; // should be error +import { z1 as z } from "./es6ImportNamedImportMergeErrors_0"; // should be error diff --git a/tests/cases/compiler/es6ImportNamedImportNoExportMember.ts b/tests/cases/compiler/es6ImportNamedImportNoExportMember.ts index bd507308d8d..48f8036a753 100644 --- a/tests/cases/compiler/es6ImportNamedImportNoExportMember.ts +++ b/tests/cases/compiler/es6ImportNamedImportNoExportMember.ts @@ -5,5 +5,5 @@ export var a = 10; export var x = a; // @filename: es6ImportNamedImport_1.ts -import { a1 } from "es6ImportNamedImportNoExportMember_0"; -import { x1 as x } from "es6ImportNamedImportNoExportMember_0"; \ No newline at end of file +import { a1 } from "./es6ImportNamedImportNoExportMember_0"; +import { x1 as x } from "./es6ImportNamedImportNoExportMember_0"; \ No newline at end of file diff --git a/tests/cases/compiler/es6ImportNamedImportNoNamedExports.ts b/tests/cases/compiler/es6ImportNamedImportNoNamedExports.ts index 9dd243ff36d..9e46253cc9c 100644 --- a/tests/cases/compiler/es6ImportNamedImportNoNamedExports.ts +++ b/tests/cases/compiler/es6ImportNamedImportNoNamedExports.ts @@ -6,5 +6,5 @@ var a = 10; export = a; // @filename: es6ImportNamedImportNoNamedExports_1.ts -import { a } from "es6ImportNamedImportNoNamedExports_0"; -import { a as x } from "es6ImportNamedImportNoNamedExports_0"; \ No newline at end of file +import { a } from "./es6ImportNamedImportNoNamedExports_0"; +import { a as x } from "./es6ImportNamedImportNoNamedExports_0"; \ No newline at end of file diff --git a/tests/cases/compiler/es6ImportNamedImportWithExport.ts b/tests/cases/compiler/es6ImportNamedImportWithExport.ts index f25a3779b99..9643a82b9b9 100644 --- a/tests/cases/compiler/es6ImportNamedImportWithExport.ts +++ b/tests/cases/compiler/es6ImportNamedImportWithExport.ts @@ -12,29 +12,29 @@ export var z2 = 10; export var aaaa = 10; // @filename: client.ts -export import { } from "server"; -export import { a } from "server"; +export import { } from "./server"; +export import { a } from "./server"; export var xxxx = a; -export import { a as b } from "server"; +export import { a as b } from "./server"; export var xxxx = b; -export import { x, a as y } from "server"; +export import { x, a as y } from "./server"; export var xxxx = x; export var xxxx = y; -export import { x as z, } from "server"; +export import { x as z, } from "./server"; export var xxxx = z; -export import { m, } from "server"; +export import { m, } from "./server"; export var xxxx = m; -export import { a1, x1 } from "server"; +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 import { a1 as a11, x1 as x11 } from "./server"; export var xxxx = a11; export var xxxx = x11; -export import { z1 } from "server"; +export import { z1 } from "./server"; export var z111 = z1; -export import { z2 as z3 } from "server"; +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"; +export import { aaaa } from "./server"; +export import { aaaa as bbbb } from "./server"; diff --git a/tests/cases/compiler/es6ImportNamedImportWithTypesAndValues.ts b/tests/cases/compiler/es6ImportNamedImportWithTypesAndValues.ts index 08294e57232..4b5a2f17ab0 100644 --- a/tests/cases/compiler/es6ImportNamedImportWithTypesAndValues.ts +++ b/tests/cases/compiler/es6ImportNamedImportWithTypesAndValues.ts @@ -16,6 +16,6 @@ export class C2 implements I2 { } // @filename: 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 +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(); \ No newline at end of file diff --git a/tests/cases/compiler/es6modulekind.ts b/tests/cases/compiler/es6modulekind.ts new file mode 100644 index 00000000000..0722e1690a3 --- /dev/null +++ b/tests/cases/compiler/es6modulekind.ts @@ -0,0 +1,17 @@ +// @target: ES6 +// @sourcemap: false +// @declaration: false +// @module: es6 + +export default class A +{ + constructor () + { + + } + + public B() + { + return 42; + } +} \ No newline at end of file diff --git a/tests/cases/compiler/exportAssignClassAndModule.ts b/tests/cases/compiler/exportAssignClassAndModule.ts index 1124234ae8d..0ac65454b00 100644 --- a/tests/cases/compiler/exportAssignClassAndModule.ts +++ b/tests/cases/compiler/exportAssignClassAndModule.ts @@ -1,4 +1,4 @@ -//@module: commonjs +// @module: commonjs // @Filename: exportAssignClassAndModule_0.ts class Foo { x: Foo.Bar; @@ -11,7 +11,7 @@ export = Foo; // @Filename: exportAssignClassAndModule_1.ts /// -import Foo = require('exportAssignClassAndModule_0'); +import Foo = require('./exportAssignClassAndModule_0'); var z: Foo.Bar; var zz: Foo; diff --git a/tests/cases/compiler/exportAssignmentEnum.ts b/tests/cases/compiler/exportAssignmentEnum.ts index debaab1e5e8..dff61fdb5df 100644 --- a/tests/cases/compiler/exportAssignmentEnum.ts +++ b/tests/cases/compiler/exportAssignmentEnum.ts @@ -1,4 +1,4 @@ -//@module: commonjs +// @module: commonjs // @Filename: exportAssignmentEnum_A.ts enum E { A, @@ -9,7 +9,7 @@ enum E { export = E; // @Filename: exportAssignmentEnum_B.ts -import EnumE = require("exportAssignmentEnum_A"); +import EnumE = require("./exportAssignmentEnum_A"); var a = EnumE.A; var b = EnumE.B; diff --git a/tests/cases/compiler/exportAssignmentOfDeclaredExternalModule.ts b/tests/cases/compiler/exportAssignmentOfDeclaredExternalModule.ts index 63c1f01eb28..fd6b55c9c08 100644 --- a/tests/cases/compiler/exportAssignmentOfDeclaredExternalModule.ts +++ b/tests/cases/compiler/exportAssignmentOfDeclaredExternalModule.ts @@ -1,4 +1,4 @@ -//@module: commonjs +// @module: commonjs // @Filename: exportAssignmentOfDeclaredExternalModule_0.ts interface Sammy { new (): any; // a constructor signature @@ -8,7 +8,7 @@ export = Sammy; // @Filename: exportAssignmentOfDeclaredExternalModule_1.ts /// -import Sammy = require('exportAssignmentOfDeclaredExternalModule_0'); +import Sammy = require('./exportAssignmentOfDeclaredExternalModule_0'); var x = new Sammy(); // error to use as constructor as there is not constructor symbol var y = Sammy(); // error to use interface name as call target var z: Sammy; // no error - z is of type interface Sammy from module 'M' diff --git a/tests/cases/compiler/exportAssignmentVariable.ts b/tests/cases/compiler/exportAssignmentVariable.ts index b1ba2452884..9bb53a7c89d 100644 --- a/tests/cases/compiler/exportAssignmentVariable.ts +++ b/tests/cases/compiler/exportAssignmentVariable.ts @@ -1,10 +1,10 @@ -//@module: commonjs +// @module: commonjs // @Filename: exportAssignmentVariable_A.ts var x = 0; export = x; // @Filename: exportAssignmentVariable_B.ts -import y = require("exportAssignmentVariable_A"); +import y = require("./exportAssignmentVariable_A"); var n: number = y; \ No newline at end of file diff --git a/tests/cases/compiler/exportEqualMemberMissing.ts b/tests/cases/compiler/exportEqualMemberMissing.ts index 6f916b65260..89b328f0536 100644 --- a/tests/cases/compiler/exportEqualMemberMissing.ts +++ b/tests/cases/compiler/exportEqualMemberMissing.ts @@ -1,4 +1,4 @@ -//@module: commonjs +// @module: commonjs // @Filename: exportEqualMemberMissing_0.ts module server { export interface connectModule { @@ -16,5 +16,5 @@ export = server; // @Filename: exportEqualMemberMissing_1.ts /// -import connect = require('exportEqualMemberMissing_0'); +import connect = require('./exportEqualMemberMissing_0'); connect().use(connect.static('foo')); // Error 1 The property 'static' does not exist on value of type ''. diff --git a/tests/cases/compiler/exportStarFromEmptyModule.ts b/tests/cases/compiler/exportStarFromEmptyModule.ts index 163576f1c08..8e4ea8a7b21 100644 --- a/tests/cases/compiler/exportStarFromEmptyModule.ts +++ b/tests/cases/compiler/exportStarFromEmptyModule.ts @@ -11,15 +11,15 @@ export class A { // empty // @filename: exportStarFromEmptyModule_module3.ts -export * from "exportStarFromEmptyModule_module2"; -export * from "exportStarFromEmptyModule_module1"; +export * from "./exportStarFromEmptyModule_module2"; +export * from "./exportStarFromEmptyModule_module1"; export class A { static q; } // @filename: exportStarFromEmptyModule_module4.ts -import * as X from "exportStarFromEmptyModule_module3"; +import * as X from "./exportStarFromEmptyModule_module3"; var s: X.A; X.A.q; X.A.r; // Error \ No newline at end of file diff --git a/tests/cases/compiler/exportsInAmbientModules1.ts b/tests/cases/compiler/exportsInAmbientModules1.ts new file mode 100644 index 00000000000..53e169fcf5d --- /dev/null +++ b/tests/cases/compiler/exportsInAmbientModules1.ts @@ -0,0 +1,10 @@ +// @module: amd + +// @filename: external.d.ts +export var x: number + +// @filename: main.ts + +declare module "M" { + export {x} from "external" +} \ No newline at end of file diff --git a/tests/cases/compiler/exportsInAmbientModules2.ts b/tests/cases/compiler/exportsInAmbientModules2.ts new file mode 100644 index 00000000000..0fbfa022d13 --- /dev/null +++ b/tests/cases/compiler/exportsInAmbientModules2.ts @@ -0,0 +1,10 @@ +// @module: amd + +// @filename: external.d.ts +export default class C {} + +// @filename: main.ts + +declare module "M" { + export * from "external" +} \ No newline at end of file diff --git a/tests/cases/compiler/extendingClassFromAliasAndUsageInIndexer.ts b/tests/cases/compiler/extendingClassFromAliasAndUsageInIndexer.ts index 9cd73deb90d..4e5a67665d9 100644 --- a/tests/cases/compiler/extendingClassFromAliasAndUsageInIndexer.ts +++ b/tests/cases/compiler/extendingClassFromAliasAndUsageInIndexer.ts @@ -1,25 +1,25 @@ -//@module: commonjs +// @module: commonjs // @Filename: extendingClassFromAliasAndUsageInIndexer_backbone.ts export class Model { public someData: string; } // @Filename: extendingClassFromAliasAndUsageInIndexer_moduleA.ts -import Backbone = require("extendingClassFromAliasAndUsageInIndexer_backbone"); +import Backbone = require("./extendingClassFromAliasAndUsageInIndexer_backbone"); export class VisualizationModel extends Backbone.Model { // interesting stuff here } // @Filename: extendingClassFromAliasAndUsageInIndexer_moduleB.ts -import Backbone = require("extendingClassFromAliasAndUsageInIndexer_backbone"); +import Backbone = require("./extendingClassFromAliasAndUsageInIndexer_backbone"); export class VisualizationModel extends Backbone.Model { // different interesting stuff here } // @Filename: extendingClassFromAliasAndUsageInIndexer_main.ts -import Backbone = require("extendingClassFromAliasAndUsageInIndexer_backbone"); -import moduleA = require("extendingClassFromAliasAndUsageInIndexer_moduleA"); -import moduleB = require("extendingClassFromAliasAndUsageInIndexer_moduleB"); +import Backbone = require("./extendingClassFromAliasAndUsageInIndexer_backbone"); +import moduleA = require("./extendingClassFromAliasAndUsageInIndexer_moduleA"); +import moduleB = require("./extendingClassFromAliasAndUsageInIndexer_moduleB"); interface IHasVisualizationModel { VisualizationModel: typeof Backbone.Model; } diff --git a/tests/cases/compiler/externalModuleExportingGenericClass.ts b/tests/cases/compiler/externalModuleExportingGenericClass.ts index 882dd1c5603..b20afb56013 100644 --- a/tests/cases/compiler/externalModuleExportingGenericClass.ts +++ b/tests/cases/compiler/externalModuleExportingGenericClass.ts @@ -8,7 +8,7 @@ export = C; // @Filename: externalModuleExportingGenericClass_file1.ts -import a = require('externalModuleExportingGenericClass_file0'); +import a = require('./externalModuleExportingGenericClass_file0'); var v: a; // this should report error var v2: any = (new a()).foo; var v3: number = (new a()).foo; diff --git a/tests/cases/compiler/externalModuleImmutableBindings.ts b/tests/cases/compiler/externalModuleImmutableBindings.ts index 2321961f6f8..33e1b9894e1 100644 --- a/tests/cases/compiler/externalModuleImmutableBindings.ts +++ b/tests/cases/compiler/externalModuleImmutableBindings.ts @@ -5,7 +5,7 @@ export var x = 1; // @Filename: f2.ts // all mutations below are illegal and should be fixed -import * as stuff from 'f1'; +import * as stuff from './f1'; var n = 'baz'; diff --git a/tests/cases/compiler/externalModuleRefernceResolutionOrderInImportDeclaration.ts b/tests/cases/compiler/externalModuleRefernceResolutionOrderInImportDeclaration.ts index 79cf425bdda..55922da6ca8 100644 --- a/tests/cases/compiler/externalModuleRefernceResolutionOrderInImportDeclaration.ts +++ b/tests/cases/compiler/externalModuleRefernceResolutionOrderInImportDeclaration.ts @@ -1,4 +1,4 @@ -//@module: commonjs +// @module: commonjs // @Filename: externalModuleRefernceResolutionOrderInImportDeclaration_file1.ts export function foo() { }; @@ -10,7 +10,7 @@ declare module "externalModuleRefernceResolutionOrderInImportDeclaration_file1" // @Filename: externalModuleRefernceResolutionOrderInImportDeclaration_file3.ts /// -import file1 = require('externalModuleRefernceResolutionOrderInImportDeclaration_file1'); +import file1 = require('./externalModuleRefernceResolutionOrderInImportDeclaration_file1'); file1.foo(); file1.bar(); diff --git a/tests/cases/compiler/externalModuleWithoutCompilerFlag1.ts b/tests/cases/compiler/externalModuleWithoutCompilerFlag1.ts index 4283e3d32a9..875e3205407 100644 --- a/tests/cases/compiler/externalModuleWithoutCompilerFlag1.ts +++ b/tests/cases/compiler/externalModuleWithoutCompilerFlag1.ts @@ -1,4 +1,3 @@ -// @module: unspecified // Not on line 0 because we want to verify the error is placed in the appropriate location. export module M { diff --git a/tests/cases/compiler/implementsInClassExpression.ts b/tests/cases/compiler/implementsInClassExpression.ts new file mode 100644 index 00000000000..4504c6a2622 --- /dev/null +++ b/tests/cases/compiler/implementsInClassExpression.ts @@ -0,0 +1,7 @@ +interface Foo { + doThing(): void; +} + +let cls = class implements Foo { + doThing() { } +} \ No newline at end of file diff --git a/tests/cases/compiler/importAsBaseClass.ts b/tests/cases/compiler/importAsBaseClass.ts index b533453773c..4077ca952b9 100644 --- a/tests/cases/compiler/importAsBaseClass.ts +++ b/tests/cases/compiler/importAsBaseClass.ts @@ -1,9 +1,9 @@ -//@module: commonjs +// @module: commonjs // @Filename: importAsBaseClass_0.ts export class Greeter { greet() { return 'greet' } } // @Filename: importAsBaseClass_1.ts -import Greeter = require("importAsBaseClass_0"); +import Greeter = require("./importAsBaseClass_0"); class Hello extends Greeter { } diff --git a/tests/cases/compiler/importDecl.ts b/tests/cases/compiler/importDecl.ts index c28b332eb43..e7c3a0789ce 100644 --- a/tests/cases/compiler/importDecl.ts +++ b/tests/cases/compiler/importDecl.ts @@ -1,4 +1,4 @@ -//@module: commonjs +// @module: commonjs // @declaration: true // @Filename: importDecl_require.ts export class d { @@ -29,7 +29,7 @@ export var x: d; export function foo(): d { return null; } // @Filename: importDecl_require4.ts -import m4 = require("importDecl_require"); +import m4 = require("./importDecl_require"); export function foo2(): m4.d { return null; } // @Filename: importDecl_1.ts @@ -38,7 +38,7 @@ export function foo2(): m4.d { return null; } /// /// /// -import m4 = require("importDecl_require"); // Emit used +import m4 = require("./importDecl_require"); // Emit used export var x4 = m4.x; export var d4 = m4.d; export var f4 = m4.foo(); @@ -54,16 +54,16 @@ export module m1 { } //Emit global only usage -import glo_m4 = require("importDecl_require1"); +import glo_m4 = require("./importDecl_require1"); export var useGlo_m4_d4 = glo_m4.d; export var useGlo_m4_f4 = glo_m4.foo(); //Emit even when used just in function type -import fncOnly_m4 = require("importDecl_require2"); +import fncOnly_m4 = require("./importDecl_require2"); export var useFncOnly_m4_f4 = fncOnly_m4.foo(); // only used privately no need to emit -import private_m4 = require("importDecl_require3"); +import private_m4 = require("./importDecl_require3"); export module usePrivate_m4_m1 { var x3 = private_m4.x; var d3 = private_m4.d; @@ -71,11 +71,11 @@ export module usePrivate_m4_m1 { } // Do not emit unused import -import m5 = require("importDecl_require4"); +import m5 = require("./importDecl_require4"); export var d = m5.foo2(); // Do not emit multiple used import statements -import multiImport_m4 = require("importDecl_require"); // Emit used +import multiImport_m4 = require("./importDecl_require"); // Emit used export var useMultiImport_m4_x4 = multiImport_m4.x; export var useMultiImport_m4_d4 = multiImport_m4.d; export var useMultiImport_m4_f4 = multiImport_m4.foo(); diff --git a/tests/cases/compiler/importDeclarationUsedAsTypeQuery.ts b/tests/cases/compiler/importDeclarationUsedAsTypeQuery.ts index aea205dd447..5fc77ca1a8e 100644 --- a/tests/cases/compiler/importDeclarationUsedAsTypeQuery.ts +++ b/tests/cases/compiler/importDeclarationUsedAsTypeQuery.ts @@ -1,4 +1,4 @@ -//@module: commonjs +// @module: commonjs // @declaration: true // @Filename: importDeclarationUsedAsTypeQuery_require.ts export class B { @@ -7,5 +7,5 @@ export class B { // @Filename: importDeclarationUsedAsTypeQuery_1.ts /// -import a = require('importDeclarationUsedAsTypeQuery_require'); +import a = require('./importDeclarationUsedAsTypeQuery_require'); export var x: typeof a; diff --git a/tests/cases/compiler/importUsedInExtendsList1.ts b/tests/cases/compiler/importUsedInExtendsList1.ts index f76ccc874c9..f5e3b77f1e3 100644 --- a/tests/cases/compiler/importUsedInExtendsList1.ts +++ b/tests/cases/compiler/importUsedInExtendsList1.ts @@ -1,10 +1,10 @@ -//@module: commonjs +// @module: commonjs // @Filename: importUsedInExtendsList1_require.ts export class Super { foo: string; } // @Filename: importUsedInExtendsList1_1.ts /// -import foo = require('importUsedInExtendsList1_require'); +import foo = require('./importUsedInExtendsList1_require'); class Sub extends foo.Super { } var s: Sub; var r: string = s.foo; diff --git a/tests/cases/compiler/importsInAmbientModules1.ts b/tests/cases/compiler/importsInAmbientModules1.ts new file mode 100644 index 00000000000..afd3b071af6 --- /dev/null +++ b/tests/cases/compiler/importsInAmbientModules1.ts @@ -0,0 +1,10 @@ +// @module: amd + +// @filename: external.d.ts +export var x: number + +// @filename: main.ts + +declare module "M" { + import {x} from "external" +} \ No newline at end of file diff --git a/tests/cases/compiler/importsInAmbientModules2.ts b/tests/cases/compiler/importsInAmbientModules2.ts new file mode 100644 index 00000000000..587d7d2069d --- /dev/null +++ b/tests/cases/compiler/importsInAmbientModules2.ts @@ -0,0 +1,10 @@ +// @module: amd + +// @filename: external.d.ts +export default class C {} + +// @filename: main.ts + +declare module "M" { + import C from "external" +} \ No newline at end of file diff --git a/tests/cases/compiler/importsInAmbientModules3.ts b/tests/cases/compiler/importsInAmbientModules3.ts new file mode 100644 index 00000000000..cae5b404b9c --- /dev/null +++ b/tests/cases/compiler/importsInAmbientModules3.ts @@ -0,0 +1,10 @@ +// @module: amd + +// @filename: external.d.ts +export default class C {} + +// @filename: main.ts + +declare module "M" { + import C = require("external"); +} \ No newline at end of file diff --git a/tests/cases/compiler/initializersInAmbientEnums.ts b/tests/cases/compiler/initializersInAmbientEnums.ts new file mode 100644 index 00000000000..728fc881903 --- /dev/null +++ b/tests/cases/compiler/initializersInAmbientEnums.ts @@ -0,0 +1,5 @@ +declare enum E { + a = 10, + b = a, + e = 10 << 2 * 8, +} \ No newline at end of file diff --git a/tests/cases/compiler/keywordInJsxIdentifier.tsx b/tests/cases/compiler/keywordInJsxIdentifier.tsx new file mode 100644 index 00000000000..ce858edae5d --- /dev/null +++ b/tests/cases/compiler/keywordInJsxIdentifier.tsx @@ -0,0 +1,7 @@ +//@jsx: react + +declare var React: any; +; +; +; +; diff --git a/tests/cases/compiler/lambdaASIEmit.ts b/tests/cases/compiler/lambdaASIEmit.ts index 44ee992ff47..c803b87411d 100644 --- a/tests/cases/compiler/lambdaASIEmit.ts +++ b/tests/cases/compiler/lambdaASIEmit.ts @@ -1,4 +1,4 @@ -// @comments: true +// @removeComments: false function Foo(x: any) { diff --git a/tests/cases/compiler/localAliasExportAssignment.ts b/tests/cases/compiler/localAliasExportAssignment.ts index 8e6df40403b..9fe29ba91d1 100644 --- a/tests/cases/compiler/localAliasExportAssignment.ts +++ b/tests/cases/compiler/localAliasExportAssignment.ts @@ -1,4 +1,4 @@ -//@module: commonjs +// @module: commonjs // @Filename: localAliasExportAssignment_0.ts var server: { (): any; @@ -8,7 +8,7 @@ export = server; // @Filename: localAliasExportAssignment_1.ts /// -import connect = require('localAliasExportAssignment_0'); +import connect = require('./localAliasExportAssignment_0'); connect(); diff --git a/tests/cases/compiler/moduleInTypePosition1.ts b/tests/cases/compiler/moduleInTypePosition1.ts index 170afc1f876..51481a5c0ea 100644 --- a/tests/cases/compiler/moduleInTypePosition1.ts +++ b/tests/cases/compiler/moduleInTypePosition1.ts @@ -1,4 +1,4 @@ -//@module: commonjs +// @module: commonjs // @Filename: moduleInTypePosition1_0.ts export class Promise { foo: string; @@ -6,5 +6,5 @@ export class Promise { // @Filename: moduleInTypePosition1_1.ts /// -import WinJS = require('moduleInTypePosition1_0'); +import WinJS = require('./moduleInTypePosition1_0'); var x = (w1: WinJS) => { }; diff --git a/tests/cases/compiler/multiImportExport.ts b/tests/cases/compiler/multiImportExport.ts index 939a6e1061e..fe253e282ad 100644 --- a/tests/cases/compiler/multiImportExport.ts +++ b/tests/cases/compiler/multiImportExport.ts @@ -5,10 +5,10 @@ import Drawing = require('./Drawing'); var addr = new Drawing.Math.Adder(); // @Filename: Drawing.ts -export import Math = require('Math/Math') +export import Math = require('./Math/Math') // @Filename: Math/Math.ts -import Adder = require('Math/Adder'); +import Adder = require('./Adder'); var Math = { Adder:Adder diff --git a/tests/cases/compiler/nodeResolution4.ts b/tests/cases/compiler/nodeResolution4.ts new file mode 100644 index 00000000000..247546c3f0c --- /dev/null +++ b/tests/cases/compiler/nodeResolution4.ts @@ -0,0 +1,12 @@ +// @module: commonjs +// @moduleResolution: node + +// @filename: ref.ts +var x = 1; + +// @filename: a.ts +/// +export var y; + +// @filename: b.ts +import y = require("./a"); \ No newline at end of file diff --git a/tests/cases/compiler/nodeResolution5.ts b/tests/cases/compiler/nodeResolution5.ts new file mode 100644 index 00000000000..313dabd7899 --- /dev/null +++ b/tests/cases/compiler/nodeResolution5.ts @@ -0,0 +1,10 @@ +// @module: commonjs +// @moduleResolution: node + +// @filename: node_modules/a.d.ts +declare module "a" { + var x: number; +} + +// @filename: b.ts +import y = require("a"); diff --git a/tests/cases/compiler/nodeResolution6.ts b/tests/cases/compiler/nodeResolution6.ts new file mode 100644 index 00000000000..3f6dc81c847 --- /dev/null +++ b/tests/cases/compiler/nodeResolution6.ts @@ -0,0 +1,13 @@ +// @module: commonjs +// @moduleResolution: node + +// @filename: node_modules/ref.ts +var x = 1; + +// @filename: node_modules/a.d.ts +/// +export declare var y; + + +// @filename: b.ts +import y = require("a"); diff --git a/tests/cases/compiler/nodeResolution7.ts b/tests/cases/compiler/nodeResolution7.ts new file mode 100644 index 00000000000..b4283edb76a --- /dev/null +++ b/tests/cases/compiler/nodeResolution7.ts @@ -0,0 +1,10 @@ +// @module: commonjs +// @moduleResolution: node + +// @filename: node_modules/a/index.d.ts +declare module "a" { + var x: number; +} + +// @filename: b.ts +import y = require("a"); diff --git a/tests/cases/compiler/nodeResolution8.ts b/tests/cases/compiler/nodeResolution8.ts new file mode 100644 index 00000000000..0a6e528f20a --- /dev/null +++ b/tests/cases/compiler/nodeResolution8.ts @@ -0,0 +1,13 @@ +// @module: commonjs +// @moduleResolution: node + +// @filename: node_modules/a/ref.ts +var x = 1; + +// @filename: node_modules/a/index.d.ts +/// +export declare var y; + + +// @filename: b.ts +import y = require("a"); \ No newline at end of file diff --git a/tests/cases/compiler/out-flag.ts b/tests/cases/compiler/out-flag.ts index 45a8d92805c..07cd55224a5 100644 --- a/tests/cases/compiler/out-flag.ts +++ b/tests/cases/compiler/out-flag.ts @@ -3,7 +3,7 @@ // @declaration: true // @module: commonjs //// @out: bin\ -// @comments: true +// @removeComments: false // my class comments class MyClass diff --git a/tests/cases/compiler/pinnedComments1.ts b/tests/cases/compiler/pinnedComments1.ts index 474769e9b20..1bf99943c5b 100644 --- a/tests/cases/compiler/pinnedComments1.ts +++ b/tests/cases/compiler/pinnedComments1.ts @@ -1,6 +1,10 @@ -// @comments: false +// @removeComments: true +/*!========= + Keep this pinned comment + ========= +*/ /* unpinned comment */ -/*! pinned comment */ +/*! pinned comment that need to be removed */ class C { } \ No newline at end of file diff --git a/tests/cases/compiler/privacyCannotNameAccessorDeclFile.ts b/tests/cases/compiler/privacyCannotNameAccessorDeclFile.ts index 1150cf963bf..70369c47895 100644 --- a/tests/cases/compiler/privacyCannotNameAccessorDeclFile.ts +++ b/tests/cases/compiler/privacyCannotNameAccessorDeclFile.ts @@ -36,7 +36,7 @@ export module SpecializedWidget { // @Filename:privacyCannotNameAccessorDeclFile_exporter.ts /// -import Widgets = require("privacyCannotNameAccessorDeclFile_Widgets"); +import Widgets = require("./privacyCannotNameAccessorDeclFile_Widgets"); import Widgets1 = require("GlobalWidgets"); export function createExportedWidget1() { return Widgets.createWidget1(); @@ -52,7 +52,7 @@ export function createExportedWidget4() { } // @Filename:privacyCannotNameAccessorDeclFile_consumer.ts -import exporter = require("privacyCannotNameAccessorDeclFile_exporter"); +import exporter = require("./privacyCannotNameAccessorDeclFile_exporter"); export class publicClassWithWithPrivateGetAccessorTypes { static get myPublicStaticMethod() { // Error return exporter.createExportedWidget1(); diff --git a/tests/cases/compiler/privacyCannotNameVarTypeDeclFile.ts b/tests/cases/compiler/privacyCannotNameVarTypeDeclFile.ts index e49d31946c6..1135e3c86f4 100644 --- a/tests/cases/compiler/privacyCannotNameVarTypeDeclFile.ts +++ b/tests/cases/compiler/privacyCannotNameVarTypeDeclFile.ts @@ -36,7 +36,7 @@ export module SpecializedWidget { // @Filename:privacyCannotNameVarTypeDeclFile_exporter.ts /// -import Widgets = require("privacyCannotNameVarTypeDeclFile_Widgets"); +import Widgets = require("./privacyCannotNameVarTypeDeclFile_Widgets"); import Widgets1 = require("GlobalWidgets"); export function createExportedWidget1() { return Widgets.createWidget1(); @@ -52,7 +52,7 @@ export function createExportedWidget4() { } // @Filename:privacyCannotNameVarTypeDeclFile_consumer.ts -import exporter = require("privacyCannotNameVarTypeDeclFile_exporter"); +import exporter = require("./privacyCannotNameVarTypeDeclFile_exporter"); export class publicClassWithWithPrivatePropertyTypes { static myPublicStaticProperty = exporter.createExportedWidget1(); // Error private static myPrivateStaticProperty = exporter.createExportedWidget1(); diff --git a/tests/cases/compiler/privacyCheckExternalModuleExportAssignmentOfGenericClass.ts b/tests/cases/compiler/privacyCheckExternalModuleExportAssignmentOfGenericClass.ts index b412622ad40..a214104fafb 100644 --- a/tests/cases/compiler/privacyCheckExternalModuleExportAssignmentOfGenericClass.ts +++ b/tests/cases/compiler/privacyCheckExternalModuleExportAssignmentOfGenericClass.ts @@ -1,5 +1,5 @@ -//@module: commonjs -//@declaration: true +// @module: commonjs +// @declaration: true // @Filename: privacyCheckExternalModuleExportAssignmentOfGenericClass_0.ts export = Foo; class Foo
{ @@ -7,7 +7,7 @@ class Foo { } // @Filename: privacyCheckExternalModuleExportAssignmentOfGenericClass_1.ts -import Foo = require("privacyCheckExternalModuleExportAssignmentOfGenericClass_0"); +import Foo = require("./privacyCheckExternalModuleExportAssignmentOfGenericClass_0"); export = Bar; interface Bar { foo: Foo; diff --git a/tests/cases/compiler/privacyFunctionCannotNameParameterTypeDeclFile.ts b/tests/cases/compiler/privacyFunctionCannotNameParameterTypeDeclFile.ts index f24ed8ea32b..dd5eaf82bdf 100644 --- a/tests/cases/compiler/privacyFunctionCannotNameParameterTypeDeclFile.ts +++ b/tests/cases/compiler/privacyFunctionCannotNameParameterTypeDeclFile.ts @@ -36,7 +36,7 @@ export module SpecializedWidget { // @Filename:privacyFunctionCannotNameParameterTypeDeclFile_exporter.ts /// -import Widgets = require("privacyFunctionCannotNameParameterTypeDeclFile_Widgets"); +import Widgets = require("./privacyFunctionCannotNameParameterTypeDeclFile_Widgets"); import Widgets1 = require("GlobalWidgets"); export function createExportedWidget1() { return Widgets.createWidget1(); @@ -52,7 +52,7 @@ export function createExportedWidget4() { } // @Filename:privacyFunctionCannotNameParameterTypeDeclFile_consumer.ts -import exporter = require("privacyFunctionCannotNameParameterTypeDeclFile_exporter"); +import exporter = require("./privacyFunctionCannotNameParameterTypeDeclFile_exporter"); export class publicClassWithWithPrivateParmeterTypes { static myPublicStaticMethod(param = exporter.createExportedWidget1()) { // Error } diff --git a/tests/cases/compiler/privacyFunctionCannotNameReturnTypeDeclFile.ts b/tests/cases/compiler/privacyFunctionCannotNameReturnTypeDeclFile.ts index 2eff22327b5..cb1993286a4 100644 --- a/tests/cases/compiler/privacyFunctionCannotNameReturnTypeDeclFile.ts +++ b/tests/cases/compiler/privacyFunctionCannotNameReturnTypeDeclFile.ts @@ -36,7 +36,7 @@ export module SpecializedWidget { // @Filename:privacyFunctionReturnTypeDeclFile_exporter.ts /// -import Widgets = require("privacyFunctionReturnTypeDeclFile_Widgets"); +import Widgets = require("./privacyFunctionReturnTypeDeclFile_Widgets"); import Widgets1 = require("GlobalWidgets"); export function createExportedWidget1() { return Widgets.createWidget1(); @@ -52,7 +52,7 @@ export function createExportedWidget4() { } // @Filename:privacyFunctionReturnTypeDeclFile_consumer.ts -import exporter = require("privacyFunctionReturnTypeDeclFile_exporter"); +import exporter = require("./privacyFunctionReturnTypeDeclFile_exporter"); export class publicClassWithWithPrivateParmeterTypes { static myPublicStaticMethod() { // Error return exporter.createExportedWidget1(); diff --git a/tests/cases/compiler/privacyTopLevelAmbientExternalModuleImportWithExport.ts b/tests/cases/compiler/privacyTopLevelAmbientExternalModuleImportWithExport.ts index 16c6e19fb59..1ea30d1f3c4 100644 --- a/tests/cases/compiler/privacyTopLevelAmbientExternalModuleImportWithExport.ts +++ b/tests/cases/compiler/privacyTopLevelAmbientExternalModuleImportWithExport.ts @@ -1,5 +1,5 @@ -//@module: commonjs -//@declaration: true +// @module: commonjs +// @declaration: true // @Filename: privacyTopLevelAmbientExternalModuleImportWithExport_require.ts // Public elements export class c_public { @@ -32,8 +32,8 @@ declare module 'm2' { /// /// // Privacy errors - importing private elements -export import im_public_mi_private = require("privacyTopLevelAmbientExternalModuleImportWithExport_require"); -export import im_public_mu_private = require("privacyTopLevelAmbientExternalModuleImportWithExport_require1"); +export import im_public_mi_private = require("./privacyTopLevelAmbientExternalModuleImportWithExport_require"); +export import im_public_mu_private = require("./privacyTopLevelAmbientExternalModuleImportWithExport_require1"); export import im_public_mi_public = require("m"); export import im_public_mu_public = require("m2"); diff --git a/tests/cases/compiler/requireOfAnEmptyFile1.ts b/tests/cases/compiler/requireOfAnEmptyFile1.ts index 365817f1339..98d5003ad67 100644 --- a/tests/cases/compiler/requireOfAnEmptyFile1.ts +++ b/tests/cases/compiler/requireOfAnEmptyFile1.ts @@ -1,7 +1,7 @@ -//@module: commonjs +// @module: commonjs //requireOfAnEmptyFile1 // @Filename: requireOfAnEmptyFile1_a.ts -import fs = require('requireOfAnEmptyFile1_b'); +import fs = require('./requireOfAnEmptyFile1_b'); // @Filename: requireOfAnEmptyFile1_b.ts diff --git a/tests/cases/compiler/reuseInnerModuleMember.ts b/tests/cases/compiler/reuseInnerModuleMember.ts index ebffcad6060..e2f9900e73f 100644 --- a/tests/cases/compiler/reuseInnerModuleMember.ts +++ b/tests/cases/compiler/reuseInnerModuleMember.ts @@ -1,4 +1,4 @@ -//@module: commonjs +// @module: commonjs // @Filename: reuseInnerModuleMember_0.ts export module M { } @@ -8,7 +8,7 @@ declare module bar { interface alpha { } } -import f = require('reuseInnerModuleMember_0'); +import f = require('./reuseInnerModuleMember_0'); module bar { var x: alpha; } diff --git a/tests/cases/compiler/sourceMap-FileWithComments.ts b/tests/cases/compiler/sourceMap-FileWithComments.ts index a3e5930d7c1..5dcf602c3de 100644 --- a/tests/cases/compiler/sourceMap-FileWithComments.ts +++ b/tests/cases/compiler/sourceMap-FileWithComments.ts @@ -1,5 +1,5 @@ // @sourcemap: true -// @comments: true +// @removeComments: false // Interface interface IPoint { diff --git a/tests/cases/compiler/staticInstanceResolution3.ts b/tests/cases/compiler/staticInstanceResolution3.ts index ae8cefc8102..bc4586b2adf 100644 --- a/tests/cases/compiler/staticInstanceResolution3.ts +++ b/tests/cases/compiler/staticInstanceResolution3.ts @@ -1,4 +1,4 @@ -//@module: commonjs +// @module: commonjs // @Filename: staticInstanceResolution3_0.ts export class Promise { static timeout(delay: number): Promise { @@ -8,5 +8,5 @@ export class Promise { // @Filename: staticInstanceResolution3_1.ts /// -import WinJS = require('staticInstanceResolution3_0'); +import WinJS = require('./staticInstanceResolution3_0'); WinJS.Promise.timeout(10); \ No newline at end of file diff --git a/tests/cases/compiler/systemModule17.ts b/tests/cases/compiler/systemModule17.ts new file mode 100644 index 00000000000..f6b6d6ea2f2 --- /dev/null +++ b/tests/cases/compiler/systemModule17.ts @@ -0,0 +1,41 @@ +// @module: system + +// @filename: f1.ts + +export class A {} +export interface I {} + +// @filename: f2.ts + +var x = 1; +interface I { } + +namespace N { + export var x = 1; + export interface I { } +} + +import IX = N.x; +import II = N.I; +import { A, A as EA, I as EI } from "f1"; + +export {x}; +export {x as x1}; + +export {I}; +export {I as I1}; + +export {A}; +export {A as A1}; + +export {EA}; +export {EA as EA1}; + +export {EI }; +export {EI as EI1}; + +export {IX}; +export {IX as IX1}; + +export {II}; +export {II as II1}; \ No newline at end of file diff --git a/tests/cases/compiler/typeCheckObjectCreationExpressionWithUndefinedCallResolutionData.ts b/tests/cases/compiler/typeCheckObjectCreationExpressionWithUndefinedCallResolutionData.ts index 28a9e821131..70be28f74eb 100644 --- a/tests/cases/compiler/typeCheckObjectCreationExpressionWithUndefinedCallResolutionData.ts +++ b/tests/cases/compiler/typeCheckObjectCreationExpressionWithUndefinedCallResolutionData.ts @@ -1,4 +1,4 @@ -//@module: commonjs +// @module: commonjs // @declaration: true // @Filename: file1.ts export function foo() { @@ -7,5 +7,5 @@ var classes = undefined; } // @Filename: file2.ts -import f = require('file1'); +import f = require('./file1'); f.foo(); diff --git a/tests/cases/compiler/typeofAmbientExternalModules.ts b/tests/cases/compiler/typeofAmbientExternalModules.ts index df3283bfb45..b6b8237dac6 100644 --- a/tests/cases/compiler/typeofAmbientExternalModules.ts +++ b/tests/cases/compiler/typeofAmbientExternalModules.ts @@ -1,4 +1,4 @@ -//@module: commonjs +// @module: commonjs // @Filename: typeofAmbientExternalModules_0.ts export class C { foo: string; } @@ -9,8 +9,8 @@ export = D; // @Filename: typeofAmbientExternalModules_2.ts /// /// -import ext = require('typeofAmbientExternalModules_0'); -import exp = require('typeofAmbientExternalModules_1'); +import ext = require('./typeofAmbientExternalModules_0'); +import exp = require('./typeofAmbientExternalModules_1'); var y1: typeof ext = ext; y1 = exp; diff --git a/tests/cases/compiler/typeofExternalModules.ts b/tests/cases/compiler/typeofExternalModules.ts index fe3dfad5d86..32475215e24 100644 --- a/tests/cases/compiler/typeofExternalModules.ts +++ b/tests/cases/compiler/typeofExternalModules.ts @@ -1,4 +1,4 @@ -//@module: commonjs +// @module: commonjs // @Filename: typeofExternalModules_external.ts export class C { } @@ -7,8 +7,8 @@ class D { } export = D; // @Filename: typeofExternalModules_core.ts -import ext = require('typeofExternalModules_external'); -import exp = require('typeofExternalModules_exportAssign'); +import ext = require('./typeofExternalModules_external'); +import exp = require('./typeofExternalModules_exportAssign'); var y1: typeof ext = ext; y1 = exp; diff --git a/tests/cases/compiler/unusedImportDeclaration.ts b/tests/cases/compiler/unusedImportDeclaration.ts index 263b355f69c..71fe5aae5a3 100644 --- a/tests/cases/compiler/unusedImportDeclaration.ts +++ b/tests/cases/compiler/unusedImportDeclaration.ts @@ -1,5 +1,5 @@ -//@module: commonjs -//@declaration: true +// @module: commonjs +// @declaration: true // @Filename: unusedImportDeclaration_testerB.ts class TesterB { me: string; @@ -7,7 +7,7 @@ class TesterB { export = TesterB; // @Filename: unusedImportDeclaration_testerA.ts -import B = require("unusedImportDeclaration_testerB"); +import B = require("./unusedImportDeclaration_testerB"); var thingy: B = { me: "A" }; diff --git a/tests/cases/compiler/visibilityOfCrossModuleTypeUsage.ts b/tests/cases/compiler/visibilityOfCrossModuleTypeUsage.ts index ff9610a2f65..ee22e3a4172 100644 --- a/tests/cases/compiler/visibilityOfCrossModuleTypeUsage.ts +++ b/tests/cases/compiler/visibilityOfCrossModuleTypeUsage.ts @@ -1,9 +1,9 @@ -//@module: commonjs +// @module: commonjs //visibilityOfCrossModuleTypeUsage // @Filename: visibilityOfCrossModuleTypeUsage_commands.ts -import fs = require('visibilityOfCrossModuleTypeUsage_fs'); -import server = require('visibilityOfCrossModuleTypeUsage_server'); +import fs = require('./visibilityOfCrossModuleTypeUsage_fs'); +import server = require('./visibilityOfCrossModuleTypeUsage_server'); export interface IConfiguration { workspace: server.IWorkspace; @@ -19,7 +19,7 @@ export interface IWorkspace { } // @Filename: visibilityOfCrossModuleTypeUsage_fs.ts -import commands = require('visibilityOfCrossModuleTypeUsage_commands'); +import commands = require('./visibilityOfCrossModuleTypeUsage_commands'); function run(configuration: commands.IConfiguration) { var absoluteWorkspacePath = configuration.workspace.toAbsolutePath(configuration.server); } \ No newline at end of file diff --git a/tests/cases/compiler/voidAsNonAmbiguousReturnType.ts b/tests/cases/compiler/voidAsNonAmbiguousReturnType.ts index d20f9941fbf..c00ef99e1aa 100644 --- a/tests/cases/compiler/voidAsNonAmbiguousReturnType.ts +++ b/tests/cases/compiler/voidAsNonAmbiguousReturnType.ts @@ -1,11 +1,11 @@ -//@module: commonjs +// @module: commonjs // @Filename: voidAsNonAmbiguousReturnType_0.ts export function mkdirSync(path: string, mode?: number): void; export function mkdirSync(path: string, mode?: string): void {} // @Filename: voidAsNonAmbiguousReturnType_1.ts /// -import fs = require("voidAsNonAmbiguousReturnType_0"); +import fs = require("./voidAsNonAmbiguousReturnType_0"); function main() { fs.mkdirSync('test'); // should not error - return types are the same diff --git a/tests/cases/conformance/es6/destructuring/declarationsAndAssignments.ts b/tests/cases/conformance/es6/destructuring/declarationsAndAssignments.ts index 2202a482f8b..69b7462cd03 100644 --- a/tests/cases/conformance/es6/destructuring/declarationsAndAssignments.ts +++ b/tests/cases/conformance/es6/destructuring/declarationsAndAssignments.ts @@ -2,8 +2,8 @@ function f0() { var [] = [1, "hello"]; var [x] = [1, "hello"]; var [x, y] = [1, "hello"]; - var [x, y, z] = [1, "hello"]; // Error - var [,, z] = [0, 1, 2]; + var [x, y, z] = [1, "hello"]; + var [,, x] = [0, 1, 2]; var x: number; var y: string; } @@ -19,14 +19,14 @@ function f1() { } function f2() { - var { } = { x: 5, y: "hello" }; - var { x } = { x: 5, y: "hello" }; - var { y } = { x: 5, y: "hello" }; + var { } = { x: 5, y: "hello" }; // Error, no x and y in target + var { x } = { x: 5, y: "hello" }; // Error, no y in target + var { y } = { x: 5, y: "hello" }; // Error, no x in target var { x, y } = { x: 5, y: "hello" }; var x: number; var y: string; - var { x: a } = { x: 5, y: "hello" }; - var { y: b } = { x: 5, y: "hello" }; + var { x: a } = { x: 5, y: "hello" }; // Error, no y in target + var { y: b } = { x: 5, y: "hello" }; // Error, no x in target var { x: a, y: b } = { x: 5, y: "hello" }; var a: number; var b: string; diff --git a/tests/cases/conformance/es6/destructuring/destructuringWithLiteralInitializers.ts b/tests/cases/conformance/es6/destructuring/destructuringWithLiteralInitializers.ts new file mode 100644 index 00000000000..17de6dd2858 --- /dev/null +++ b/tests/cases/conformance/es6/destructuring/destructuringWithLiteralInitializers.ts @@ -0,0 +1,65 @@ +// (arg: { x: any, y: any }) => void +function f1({ x, y }) { } +f1({ x: 1, y: 1 }); + +// (arg: { x: any, y?: number }) => void +function f2({ x, y = 0 }) { } +f2({ x: 1 }); +f2({ x: 1, y: 1 }); + +// (arg: { x?: number, y?: number }) => void +function f3({ x = 0, y = 0 }) { } +f3({}); +f3({ x: 1 }); +f3({ y: 1 }); +f3({ x: 1, y: 1 }); + +// (arg?: { x: number, y: number }) => void +function f4({ x, y } = { x: 0, y: 0 }) { } +f4(); +f4({ x: 1, y: 1 }); + +// (arg?: { x: number, y?: number }) => void +function f5({ x, y = 0 } = { x: 0 }) { } +f5(); +f5({ x: 1 }); +f5({ x: 1, y: 1 }); + +// (arg?: { x?: number, y?: number }) => void +function f6({ x = 0, y = 0 } = {}) { } +f6(); +f6({}); +f6({ x: 1 }); +f6({ y: 1 }); +f6({ x: 1, y: 1 }); + +// (arg?: { a: { x?: number, y?: number } }) => void +function f7({ a: { x = 0, y = 0 } } = { a: {} }) { } +f7(); +f7({ a: {} }); +f7({ a: { x: 1 } }); +f7({ a: { y: 1 } }); +f7({ a: { x: 1, y: 1 } }); + +// (arg: [any, any]) => void +function g1([x, y]) { } +g1([1, 1]); + +// (arg: [number, number]) => void +function g2([x = 0, y = 0]) { } +g2([1, 1]); + +// (arg?: [number, number]) => void +function g3([x, y] = [0, 0]) { } +g3(); +g3([1, 1]); + +// (arg?: [number, number]) => void +function g4([x, y = 0] = [0]) { } +g4(); +g4([1, 1]); + +// (arg?: [number, number]) => void +function g5([x = 0, y = 0] = []) { } +g5(); +g5([1, 1]); diff --git a/tests/cases/conformance/es6/destructuring/emptyArrayBindingPatternParameter01.ts b/tests/cases/conformance/es6/destructuring/emptyArrayBindingPatternParameter01.ts index 64b198b0916..90e25765847 100644 --- a/tests/cases/conformance/es6/destructuring/emptyArrayBindingPatternParameter01.ts +++ b/tests/cases/conformance/es6/destructuring/emptyArrayBindingPatternParameter01.ts @@ -1,4 +1,4 @@ - +// @declaration: true function f([]) { var x, y, z; diff --git a/tests/cases/conformance/es6/destructuring/emptyArrayBindingPatternParameter02.ts b/tests/cases/conformance/es6/destructuring/emptyArrayBindingPatternParameter02.ts index 39663a4bed7..e9e99c6d0eb 100644 --- a/tests/cases/conformance/es6/destructuring/emptyArrayBindingPatternParameter02.ts +++ b/tests/cases/conformance/es6/destructuring/emptyArrayBindingPatternParameter02.ts @@ -1,4 +1,4 @@ - +// @declaration: true function f(a, []) { var x, y, z; diff --git a/tests/cases/conformance/es6/destructuring/emptyArrayBindingPatternParameter03.ts b/tests/cases/conformance/es6/destructuring/emptyArrayBindingPatternParameter03.ts index 39663a4bed7..e9e99c6d0eb 100644 --- a/tests/cases/conformance/es6/destructuring/emptyArrayBindingPatternParameter03.ts +++ b/tests/cases/conformance/es6/destructuring/emptyArrayBindingPatternParameter03.ts @@ -1,4 +1,4 @@ - +// @declaration: true function f(a, []) { var x, y, z; diff --git a/tests/cases/conformance/es6/destructuring/emptyArrayBindingPatternParameter04.ts b/tests/cases/conformance/es6/destructuring/emptyArrayBindingPatternParameter04.ts index 313d4fe6708..7f57c6a6acf 100644 --- a/tests/cases/conformance/es6/destructuring/emptyArrayBindingPatternParameter04.ts +++ b/tests/cases/conformance/es6/destructuring/emptyArrayBindingPatternParameter04.ts @@ -1,4 +1,4 @@ - +// @declaration: true function f([] = [1,2,3,4]) { var x, y, z; diff --git a/tests/cases/conformance/es6/destructuring/emptyAssignmentPatterns01_ES5.ts b/tests/cases/conformance/es6/destructuring/emptyAssignmentPatterns01_ES5.ts index dd10e552615..44175dbb63a 100644 --- a/tests/cases/conformance/es6/destructuring/emptyAssignmentPatterns01_ES5.ts +++ b/tests/cases/conformance/es6/destructuring/emptyAssignmentPatterns01_ES5.ts @@ -1,4 +1,5 @@ // @target: es5 +// @declaration: true var a: any; diff --git a/tests/cases/conformance/es6/destructuring/emptyAssignmentPatterns01_ES6.ts b/tests/cases/conformance/es6/destructuring/emptyAssignmentPatterns01_ES6.ts index 043f0cf1108..4f367ee8853 100644 --- a/tests/cases/conformance/es6/destructuring/emptyAssignmentPatterns01_ES6.ts +++ b/tests/cases/conformance/es6/destructuring/emptyAssignmentPatterns01_ES6.ts @@ -1,4 +1,5 @@ // @target: es6 +// @declaration: true var a: any; diff --git a/tests/cases/conformance/es6/destructuring/emptyAssignmentPatterns02_ES5.ts b/tests/cases/conformance/es6/destructuring/emptyAssignmentPatterns02_ES5.ts index 60fe89758d6..1d291425e67 100644 --- a/tests/cases/conformance/es6/destructuring/emptyAssignmentPatterns02_ES5.ts +++ b/tests/cases/conformance/es6/destructuring/emptyAssignmentPatterns02_ES5.ts @@ -1,4 +1,5 @@ // @target: es5 +// @declaration: true var a: any; let x, y, z, a1, a2, a3; diff --git a/tests/cases/conformance/es6/destructuring/emptyAssignmentPatterns02_ES6.ts b/tests/cases/conformance/es6/destructuring/emptyAssignmentPatterns02_ES6.ts index 295401545d4..b156883f7d2 100644 --- a/tests/cases/conformance/es6/destructuring/emptyAssignmentPatterns02_ES6.ts +++ b/tests/cases/conformance/es6/destructuring/emptyAssignmentPatterns02_ES6.ts @@ -1,4 +1,5 @@ // @target: es6 +// @declaration: true var a: any; let x, y, z, a1, a2, a3; diff --git a/tests/cases/conformance/es6/destructuring/emptyAssignmentPatterns03_ES5.ts b/tests/cases/conformance/es6/destructuring/emptyAssignmentPatterns03_ES5.ts index 080c828ad62..dbe79355cd8 100644 --- a/tests/cases/conformance/es6/destructuring/emptyAssignmentPatterns03_ES5.ts +++ b/tests/cases/conformance/es6/destructuring/emptyAssignmentPatterns03_ES5.ts @@ -1,4 +1,5 @@ // @target: es5 +// @declaration: true var a: any; diff --git a/tests/cases/conformance/es6/destructuring/emptyAssignmentPatterns03_ES6.ts b/tests/cases/conformance/es6/destructuring/emptyAssignmentPatterns03_ES6.ts index 10d67254cd8..d86f01f5c79 100644 --- a/tests/cases/conformance/es6/destructuring/emptyAssignmentPatterns03_ES6.ts +++ b/tests/cases/conformance/es6/destructuring/emptyAssignmentPatterns03_ES6.ts @@ -1,4 +1,5 @@ // @target: es6 +// @declaration: true var a: any; diff --git a/tests/cases/conformance/es6/destructuring/emptyAssignmentPatterns04_ES5.ts b/tests/cases/conformance/es6/destructuring/emptyAssignmentPatterns04_ES5.ts index 0233ddcda70..ac79e87a11c 100644 --- a/tests/cases/conformance/es6/destructuring/emptyAssignmentPatterns04_ES5.ts +++ b/tests/cases/conformance/es6/destructuring/emptyAssignmentPatterns04_ES5.ts @@ -1,4 +1,5 @@ // @target: es5 +// @declaration: true var a: any; let x, y, z, a1, a2, a3; diff --git a/tests/cases/conformance/es6/destructuring/emptyAssignmentPatterns04_ES6.ts b/tests/cases/conformance/es6/destructuring/emptyAssignmentPatterns04_ES6.ts index 3380a56aaa7..25e56c353b9 100644 --- a/tests/cases/conformance/es6/destructuring/emptyAssignmentPatterns04_ES6.ts +++ b/tests/cases/conformance/es6/destructuring/emptyAssignmentPatterns04_ES6.ts @@ -1,4 +1,5 @@ // @target: es6 +// @declaration: true var a: any; let x, y, z, a1, a2, a3; diff --git a/tests/cases/conformance/es6/destructuring/emptyObjectBindingPatternParameter01.ts b/tests/cases/conformance/es6/destructuring/emptyObjectBindingPatternParameter01.ts index 01aa5b54230..270d7f10227 100644 --- a/tests/cases/conformance/es6/destructuring/emptyObjectBindingPatternParameter01.ts +++ b/tests/cases/conformance/es6/destructuring/emptyObjectBindingPatternParameter01.ts @@ -1,4 +1,4 @@ - +// @declaration: true function f({}) { var x, y, z; diff --git a/tests/cases/conformance/es6/destructuring/emptyObjectBindingPatternParameter02.ts b/tests/cases/conformance/es6/destructuring/emptyObjectBindingPatternParameter02.ts index f34503c1152..79d026eac9e 100644 --- a/tests/cases/conformance/es6/destructuring/emptyObjectBindingPatternParameter02.ts +++ b/tests/cases/conformance/es6/destructuring/emptyObjectBindingPatternParameter02.ts @@ -1,4 +1,4 @@ - +// @declaration: true function f(a, {}) { var x, y, z; diff --git a/tests/cases/conformance/es6/destructuring/emptyObjectBindingPatternParameter03.ts b/tests/cases/conformance/es6/destructuring/emptyObjectBindingPatternParameter03.ts index a940c659703..c5d51b20cfa 100644 --- a/tests/cases/conformance/es6/destructuring/emptyObjectBindingPatternParameter03.ts +++ b/tests/cases/conformance/es6/destructuring/emptyObjectBindingPatternParameter03.ts @@ -1,4 +1,4 @@ - +// @declaration: true function f({}, a) { var x, y, z; diff --git a/tests/cases/conformance/es6/destructuring/emptyObjectBindingPatternParameter04.ts b/tests/cases/conformance/es6/destructuring/emptyObjectBindingPatternParameter04.ts index da05e5cb428..0273e174de0 100644 --- a/tests/cases/conformance/es6/destructuring/emptyObjectBindingPatternParameter04.ts +++ b/tests/cases/conformance/es6/destructuring/emptyObjectBindingPatternParameter04.ts @@ -1,4 +1,4 @@ - +// @declaration: true function f({} = {a: 1, b: "2", c: true}) { var x, y, z; diff --git a/tests/cases/conformance/es6/destructuring/emptyVariableDeclarationBindingPatterns01_ES5.ts b/tests/cases/conformance/es6/destructuring/emptyVariableDeclarationBindingPatterns01_ES5.ts new file mode 100644 index 00000000000..bc7a729fd1e --- /dev/null +++ b/tests/cases/conformance/es6/destructuring/emptyVariableDeclarationBindingPatterns01_ES5.ts @@ -0,0 +1,50 @@ +// @target: es5 + +(function () { + var a: any; + + var {} = a; + let {} = a; + const {} = a; + + var [] = a; + let [] = a; + const [] = a; + + var {} = a, [] = a; + let {} = a, [] = a; + const {} = a, [] = a; + + var { p1: {}, p2: [] } = a; + let { p1: {}, p2: [] } = a; + const { p1: {}, p2: [] } = a; + + for (var {} = {}, {} = {}; false; void 0) { + } + + function f({} = a, [] = a, { p: {} = a} = a) { + return ({} = a, [] = a, { p: {} = a } = a) => a; + } +})(); + +(function () { + const ns: number[][] = []; + + for (var {} of ns) { + } + + for (let {} of ns) { + } + + for (const {} of ns) { + } + + for (var [] of ns) { + } + + for (let [] of ns) { + } + + for (const [] of ns) { + } +})(); \ No newline at end of file diff --git a/tests/cases/conformance/es6/destructuring/emptyVariableDeclarationBindingPatterns01_ES6.ts b/tests/cases/conformance/es6/destructuring/emptyVariableDeclarationBindingPatterns01_ES6.ts new file mode 100644 index 00000000000..9f2a9905480 --- /dev/null +++ b/tests/cases/conformance/es6/destructuring/emptyVariableDeclarationBindingPatterns01_ES6.ts @@ -0,0 +1,50 @@ +// @target: es6 + +(function () { + var a: any; + + var {} = a; + let {} = a; + const {} = a; + + var [] = a; + let [] = a; + const [] = a; + + var {} = a, [] = a; + let {} = a, [] = a; + const {} = a, [] = a; + + var { p1: {}, p2: [] } = a; + let { p1: {}, p2: [] } = a; + const { p1: {}, p2: [] } = a; + + for (var {} = {}, {} = {}; false; void 0) { + } + + function f({} = a, [] = a, { p: {} = a} = a) { + return ({} = a, [] = a, { p: {} = a } = a) => a; + } +})(); + +(function () { + const ns: number[][] = []; + + for (var {} of ns) { + } + + for (let {} of ns) { + } + + for (const {} of ns) { + } + + for (var [] of ns) { + } + + for (let [] of ns) { + } + + for (const [] of ns) { + } +})(); \ No newline at end of file diff --git a/tests/cases/conformance/es6/destructuring/emptyVariableDeclarationBindingPatterns02_ES5.ts b/tests/cases/conformance/es6/destructuring/emptyVariableDeclarationBindingPatterns02_ES5.ts new file mode 100644 index 00000000000..34c05e1838f --- /dev/null +++ b/tests/cases/conformance/es6/destructuring/emptyVariableDeclarationBindingPatterns02_ES5.ts @@ -0,0 +1,12 @@ +// @target: es5 +// @declaration: true + +(function () { + var {}; + let {}; + const {}; + + var []; + let []; + const []; +})(); \ No newline at end of file diff --git a/tests/cases/conformance/es6/destructuring/emptyVariableDeclarationBindingPatterns02_ES6.ts b/tests/cases/conformance/es6/destructuring/emptyVariableDeclarationBindingPatterns02_ES6.ts new file mode 100644 index 00000000000..3146fec4cb7 --- /dev/null +++ b/tests/cases/conformance/es6/destructuring/emptyVariableDeclarationBindingPatterns02_ES6.ts @@ -0,0 +1,12 @@ +// @target: es6 +// @declaration: true + +(function () { + var {}; + let {}; + const {}; + + var []; + let []; + const []; +})(); \ No newline at end of file diff --git a/tests/cases/conformance/es6/destructuring/missingAndExcessProperties.ts b/tests/cases/conformance/es6/destructuring/missingAndExcessProperties.ts new file mode 100644 index 00000000000..ef91b8249da --- /dev/null +++ b/tests/cases/conformance/es6/destructuring/missingAndExcessProperties.ts @@ -0,0 +1,33 @@ +// Missing properties +function f1() { + var { x, y } = {}; + var { x = 1, y } = {}; + var { x, y = 1 } = {}; + var { x = 1, y = 1 } = {}; +} + +// Missing properties +function f2() { + var x: number, y: number; + ({ x, y } = {}); + ({ x: x = 1, y } = {}); + ({ x, y: y = 1 } = {}); + ({ x: x = 1, y: y = 1 } = {}); +} + +// Excess properties +function f3() { + var { } = { x: 0, y: 0 }; + var { x } = { x: 0, y: 0 }; + var { y } = { x: 0, y: 0 }; + var { x, y } = { x: 0, y: 0 }; +} + +// Excess properties +function f4() { + var x: number, y: number; + ({ } = { x: 0, y: 0 }); + ({ x } = { x: 0, y: 0 }); + ({ y } = { x: 0, y: 0 }); + ({ x, y } = { x: 0, y: 0 }); +} diff --git a/tests/cases/conformance/es6/modules/multipleDefaultExports01.ts b/tests/cases/conformance/es6/modules/multipleDefaultExports01.ts index 84172248e93..e6a467820b4 100644 --- a/tests/cases/conformance/es6/modules/multipleDefaultExports01.ts +++ b/tests/cases/conformance/es6/modules/multipleDefaultExports01.ts @@ -14,6 +14,6 @@ var x = 10; export default x; // @filename: m2.ts -import Entity from "m1" +import Entity from "./m1" Entity(); \ No newline at end of file diff --git a/tests/cases/conformance/es6/modules/multipleDefaultExports02.ts b/tests/cases/conformance/es6/modules/multipleDefaultExports02.ts index 1e9c8dabc13..d642b72b6f3 100644 --- a/tests/cases/conformance/es6/modules/multipleDefaultExports02.ts +++ b/tests/cases/conformance/es6/modules/multipleDefaultExports02.ts @@ -11,6 +11,6 @@ export default function bar() { } // @filename: m2.ts -import Entity from "m1" +import Entity from "./m1" Entity(); \ No newline at end of file diff --git a/tests/cases/conformance/expressions/asOperator/asOperator4.ts b/tests/cases/conformance/expressions/asOperator/asOperator4.ts new file mode 100644 index 00000000000..33fcbf920a1 --- /dev/null +++ b/tests/cases/conformance/expressions/asOperator/asOperator4.ts @@ -0,0 +1,11 @@ +//@module: commonjs +//@filename: foo.ts + +export function foo() { } + +//@filename: bar.ts +import { foo } from './foo'; + +// These should emit identically +foo; +(foo as any); diff --git a/tests/cases/conformance/externalModules/topLevelFileModule.ts b/tests/cases/conformance/externalModules/topLevelFileModule.ts index 7f694f6f98d..e6680889d26 100644 --- a/tests/cases/conformance/externalModules/topLevelFileModule.ts +++ b/tests/cases/conformance/externalModules/topLevelFileModule.ts @@ -6,6 +6,6 @@ export var x: number; export declare var y: number; // @Filename: foo_1.ts -import foo = require("vs/foo_0"); -import fum = require("vs/fum"); +import foo = require("./vs/foo_0"); +import fum = require("./vs/fum"); var z = foo.x + fum.y; diff --git a/tests/cases/conformance/externalModules/topLevelModuleDeclarationAndFile.ts b/tests/cases/conformance/externalModules/topLevelModuleDeclarationAndFile.ts index db0e2ce742c..456527acfae 100644 --- a/tests/cases/conformance/externalModules/topLevelModuleDeclarationAndFile.ts +++ b/tests/cases/conformance/externalModules/topLevelModuleDeclarationAndFile.ts @@ -1,5 +1,5 @@ // @module: commonjs -// @Filename: vs/foo_0.ts +// @Filename: vs/foo_0/index.ts export var x: number = 42; // @Filename: foo_1.ts diff --git a/tests/cases/conformance/jsx/tsxParseTests2.tsx b/tests/cases/conformance/jsx/tsxParseTests2.tsx new file mode 100644 index 00000000000..9ced9b93b79 --- /dev/null +++ b/tests/cases/conformance/jsx/tsxParseTests2.tsx @@ -0,0 +1,8 @@ +//@filename: file.tsx +//@jsx: preserve +declare module JSX { + interface Element { } + interface IntrinsicElements { div; span; } +} + +var x = ; diff --git a/tests/cases/conformance/types/contextualTypes/methodDeclarations/contextuallyTypedClassExpressionMethodDeclaration01.ts b/tests/cases/conformance/types/contextualTypes/methodDeclarations/contextuallyTypedClassExpressionMethodDeclaration01.ts new file mode 100644 index 00000000000..7ceb5bd34bc --- /dev/null +++ b/tests/cases/conformance/types/contextualTypes/methodDeclarations/contextuallyTypedClassExpressionMethodDeclaration01.ts @@ -0,0 +1,47 @@ +// @noImplicitAny: true + +interface A { + numProp: number; +} + +interface B { + strProp: string; +} + +interface Foo { + method1(arg: A): void; + method2(arg: B): void; +} + +function getFoo1(): Foo { + return class { + static method1(arg) { + arg.numProp = 10; + } + static method2(arg) { + arg.strProp = "hello"; + } + } +} + +function getFoo2(): Foo { + return class { + static method1 = (arg) => { + arg.numProp = 10; + } + static method2 = (arg) => { + arg.strProp = "hello"; + } + } +} + +function getFoo3(): Foo { + return class { + static method1 = function (arg) { + arg.numProp = 10; + } + static method2 = function (arg) { + arg.strProp = "hello"; + } + } +} \ No newline at end of file diff --git a/tests/cases/conformance/types/contextualTypes/methodDeclarations/contextuallyTypedClassExpressionMethodDeclaration02.ts b/tests/cases/conformance/types/contextualTypes/methodDeclarations/contextuallyTypedClassExpressionMethodDeclaration02.ts new file mode 100644 index 00000000000..2f1f6f079c8 --- /dev/null +++ b/tests/cases/conformance/types/contextualTypes/methodDeclarations/contextuallyTypedClassExpressionMethodDeclaration02.ts @@ -0,0 +1,51 @@ +// @noImplicitAny: true + +interface A { + numProp: number; +} + +interface B { + strProp: string; +} + +interface Foo { + new (): Bar; +} + +interface Bar { + method1(arg: A): void; + method2(arg: B): void; +} + +function getFoo1(): Foo { + return class { + method1(arg) { + arg.numProp = 10; + } + method2(arg) { + arg.strProp = "hello"; + } + } +} + +function getFoo2(): Foo { + return class { + method1 = (arg) => { + arg.numProp = 10; + } + method2 = (arg) => { + arg.strProp = "hello"; + } + } +} + +function getFoo3(): Foo { + return class { + method1 = function (arg) { + arg.numProp = 10; + } + method2 = function (arg) { + arg.strProp = "hello"; + } + } +} \ No newline at end of file diff --git a/tests/cases/conformance/types/contextualTypes/methodDeclarations/contextuallyTypedObjectLiteralMethodDeclaration01.ts b/tests/cases/conformance/types/contextualTypes/methodDeclarations/contextuallyTypedObjectLiteralMethodDeclaration01.ts new file mode 100644 index 00000000000..ed8912317fe --- /dev/null +++ b/tests/cases/conformance/types/contextualTypes/methodDeclarations/contextuallyTypedObjectLiteralMethodDeclaration01.ts @@ -0,0 +1,47 @@ +// @noImplicitAny: true + +interface A { + numProp: number; +} + +interface B { + strProp: string; +} + +interface Foo { + method1(arg: A): void; + method2(arg: B): void; +} + +function getFoo1(): Foo { + return { + method1(arg) { + arg.numProp = 10; + }, + method2(arg) { + arg.strProp = "hello"; + } + } +} + +function getFoo2(): Foo { + return { + method1: (arg) => { + arg.numProp = 10; + }, + method2: (arg) => { + arg.strProp = "hello"; + } + } +} + +function getFoo3(): Foo { + return { + method1: function (arg) { + arg.numProp = 10; + }, + method2: function (arg) { + arg.strProp = "hello"; + } + } +} \ No newline at end of file diff --git a/tests/cases/conformance/types/thisType/contextualThisType.ts b/tests/cases/conformance/types/thisType/contextualThisType.ts new file mode 100644 index 00000000000..fdda5494b5e --- /dev/null +++ b/tests/cases/conformance/types/thisType/contextualThisType.ts @@ -0,0 +1,14 @@ +interface X { + a: (p: this) => this; +} + +interface Y extends X { +} + +var x: Y = { + a(p) { + return p; + } +} + +var y = x.a(x); diff --git a/tests/cases/conformance/types/thisType/declarationFiles.ts b/tests/cases/conformance/types/thisType/declarationFiles.ts new file mode 100644 index 00000000000..462e497a90e --- /dev/null +++ b/tests/cases/conformance/types/thisType/declarationFiles.ts @@ -0,0 +1,48 @@ +// @declaration: true + +class C1 { + x: this; + f(x: this): this { return undefined; } + constructor(x: this) { } +} + +class C2 { + [x: string]: this; +} + +interface Foo { + x: T; + y: this; +} + +class C3 { + a: this[]; + b: [this, this]; + c: this | Date; + d: this & Date; + e: (((this))); + f: (x: this) => this; + g: new (x: this) => this; + h: Foo; + i: Foo this)>; + j: (x: any) => x is this; +} + +class C4 { + x1 = { a: this }; + x2 = [this]; + x3 = [{ a: this }]; + x4 = () => this; + f1() { + return { a: this }; + } + f2() { + return [this]; + } + f3() { + return [{ a: this }]; + } + f4() { + return () => this; + } +} diff --git a/tests/cases/conformance/types/thisType/fluentClasses.ts b/tests/cases/conformance/types/thisType/fluentClasses.ts new file mode 100644 index 00000000000..c9e791cb6f1 --- /dev/null +++ b/tests/cases/conformance/types/thisType/fluentClasses.ts @@ -0,0 +1,17 @@ +class A { + foo() { + return this; + } +} +class B extends A { + bar() { + return this; + } +} +class C extends B { + baz() { + return this; + } +} +var c: C; +var z = c.foo().bar().baz(); // Fluent pattern diff --git a/tests/cases/conformance/types/thisType/fluentInterfaces.ts b/tests/cases/conformance/types/thisType/fluentInterfaces.ts new file mode 100644 index 00000000000..d5fabd56bf9 --- /dev/null +++ b/tests/cases/conformance/types/thisType/fluentInterfaces.ts @@ -0,0 +1,11 @@ +interface A { + foo(): this; +} +interface B extends A { + bar(): this; +} +interface C extends B { + baz(): this; +} +var c: C; +var z = c.foo().bar().baz(); // Fluent pattern diff --git a/tests/cases/conformance/types/thisType/thisTypeErrors.ts b/tests/cases/conformance/types/thisType/thisTypeErrors.ts new file mode 100644 index 00000000000..a7e4a46493d --- /dev/null +++ b/tests/cases/conformance/types/thisType/thisTypeErrors.ts @@ -0,0 +1,55 @@ +var x1: this; +var x2: { a: this }; +var x3: this[]; + +function f1(x: this): this { + var y: this; + return this; +} + +interface I1 { + a: { x: this }; + b: { (): this }; + c: { new (): this }; + d: { [x: string]: this }; + e: { f(x: this): this }; +} + +class C1 { + a: { x: this }; + b: { (): this }; + c: { new (): this }; + d: { [x: string]: this }; + e: { f(x: this): this }; +} + +class C2 { + static x: this; + static y = undefined; + static foo(x: this): this { + return undefined; + } +} + +namespace N1 { + export var x: this; + export var y = this; +} + +class C3 { + x1 = { + g(x: this): this { + return undefined; + } + } + f() { + function g(x: this): this { + return undefined; + } + let x2 = { + h(x: this): this { + return undefined; + } + } + } +} diff --git a/tests/cases/conformance/types/thisType/thisTypeInClasses.ts b/tests/cases/conformance/types/thisType/thisTypeInClasses.ts new file mode 100644 index 00000000000..17dc13cf558 --- /dev/null +++ b/tests/cases/conformance/types/thisType/thisTypeInClasses.ts @@ -0,0 +1,50 @@ +class C1 { + x: this; + f(x: this): this { return undefined; } + constructor(x: this) { } +} + +class C2 { + [x: string]: this; +} + +interface Foo { + x: T; + y: this; +} + +class C3 { + a: this[]; + b: [this, this]; + c: this | Date; + d: this & Date; + e: (((this))); + f: (x: this) => this; + g: new (x: this) => this; + h: Foo; + i: Foo this)>; + j: (x: any) => x is this; +} + +declare class C4 { + x: this; + f(x: this): this; +} + +class C5 { + foo() { + let f1 = (x: this): this => this; + let f2 = (x: this) => this; + let f3 = (x: this) => (y: this) => this; + let f4 = (x: this) => { + let g = (y: this) => { + return () => this; + } + return g(this); + } + } + bar() { + let x1 = undefined; + let x2 = undefined as this; + } +} diff --git a/tests/cases/conformance/types/thisType/thisTypeInInterfaces.ts b/tests/cases/conformance/types/thisType/thisTypeInInterfaces.ts new file mode 100644 index 00000000000..c1f48ad8f15 --- /dev/null +++ b/tests/cases/conformance/types/thisType/thisTypeInInterfaces.ts @@ -0,0 +1,28 @@ +interface I1 { + x: this; + f(x: this): this; +} + +interface I2 { + (x: this): this; + new (x: this): this; + [x: string]: this; +} + +interface Foo { + x: T; + y: this; +} + +interface I3 { + a: this[]; + b: [this, this]; + c: this | Date; + d: this & Date; + e: (((this))); + f: (x: this) => this; + g: new (x: this) => this; + h: Foo; + i: Foo this)>; + j: (x: any) => x is this; +} diff --git a/tests/cases/conformance/types/thisType/thisTypeInTuples.ts b/tests/cases/conformance/types/thisType/thisTypeInTuples.ts new file mode 100644 index 00000000000..f7f4084a1a9 --- /dev/null +++ b/tests/cases/conformance/types/thisType/thisTypeInTuples.ts @@ -0,0 +1,8 @@ +interface Array { + slice(): this; +} + +let t: [number, string] = [42, "hello"]; +let a = t.slice(); +let b = t.slice(1); +let c = t.slice(0, 1); diff --git a/tests/cases/conformance/types/thisType/typeRelationships.ts b/tests/cases/conformance/types/thisType/typeRelationships.ts new file mode 100644 index 00000000000..c3ca6f3ef70 --- /dev/null +++ b/tests/cases/conformance/types/thisType/typeRelationships.ts @@ -0,0 +1,39 @@ +class C { + self = this; + c = new C(); + foo() { + return this; + } + f1() { + this.c = this.self; + this.self = this.c; // Error + } + f2() { + var a: C[]; + var a = [this, this.c]; // C[] since this is subtype of C + var b: this[]; + var b = [this, this.self, null, undefined]; + } + f3(b: boolean) { + return b ? this.c : this.self; // Should be C + } +} + +class D extends C { + self1 = this; + self2 = this.self; + self3 = this.foo(); + d = new D(); + bar() { + this.self = this.self1; + this.self = this.self2; + this.self = this.self3; + this.self1 = this.self; + this.self2 = this.self; + this.self3 = this.self; + this.d = this.self; + this.d = this.c; // Error + this.self = this.d; // Error + this.c = this.d; + } +} diff --git a/tests/cases/fourslash/asOperatorCompletion.ts b/tests/cases/fourslash/asOperatorCompletion.ts new file mode 100644 index 00000000000..2eaaae7e75d --- /dev/null +++ b/tests/cases/fourslash/asOperatorCompletion.ts @@ -0,0 +1,8 @@ +/// + +//// type T = number; +//// var x; +//// var y = x as /**/ + +goTo.marker(); +verify.completionListContains('T'); diff --git a/tests/cases/fourslash/commentsOverloads.ts b/tests/cases/fourslash/commentsOverloads.ts index 878ea8ea004..d32c35b0508 100644 --- a/tests/cases/fourslash/commentsOverloads.ts +++ b/tests/cases/fourslash/commentsOverloads.ts @@ -482,8 +482,8 @@ verify.quickInfoIs("(method) c.prop1(a: number): number (+1 overload)", ""); goTo.marker('46'); verify.currentSignatureHelpDocCommentIs(""); verify.currentParameterHelpArgumentDocCommentIs(""); -goTo.marker('46q'); -verify.quickInfoIs("(method) c.prop1(b: string): number (+1 overload)", ""); +//goTo.marker('46q'); +//verify.quickInfoIs("(method) c.prop1(b: string): number (+1 overload)", ""); goTo.marker('47'); verify.currentSignatureHelpDocCommentIs("prop2 1"); @@ -494,8 +494,8 @@ verify.quickInfoIs("(method) c.prop2(a: number): number (+1 overload)", "prop2 1 goTo.marker('48'); verify.currentSignatureHelpDocCommentIs(""); verify.currentParameterHelpArgumentDocCommentIs(""); -goTo.marker('48q'); -verify.quickInfoIs("(method) c.prop2(b: string): number (+1 overload)", ""); +//goTo.marker('48q'); +//verify.quickInfoIs("(method) c.prop2(b: string): number (+1 overload)", ""); goTo.marker('49'); verify.currentSignatureHelpDocCommentIs(""); @@ -506,8 +506,8 @@ verify.quickInfoIs("(method) c.prop3(a: number): number (+1 overload)", ""); goTo.marker('50'); verify.currentSignatureHelpDocCommentIs("prop3 2"); verify.currentParameterHelpArgumentDocCommentIs(""); -goTo.marker('50q'); -verify.quickInfoIs("(method) c.prop3(b: string): number (+1 overload)", "prop3 2"); +//goTo.marker('50q'); +//verify.quickInfoIs("(method) c.prop3(b: string): number (+1 overload)", "prop3 2"); goTo.marker('51'); verify.currentSignatureHelpDocCommentIs("prop4 1"); @@ -518,8 +518,8 @@ verify.quickInfoIs("(method) c.prop4(a: number): number (+1 overload)", "prop4 1 goTo.marker('52'); verify.currentSignatureHelpDocCommentIs("prop4 2"); verify.currentParameterHelpArgumentDocCommentIs(""); -goTo.marker('52q'); -verify.quickInfoIs("(method) c.prop4(b: string): number (+1 overload)", "prop4 2"); +//goTo.marker('52q'); +//verify.quickInfoIs("(method) c.prop4(b: string): number (+1 overload)", "prop4 2"); goTo.marker('53'); verify.currentSignatureHelpDocCommentIs("prop5 1"); @@ -530,8 +530,8 @@ verify.quickInfoIs("(method) c.prop5(a: number): number (+1 overload)", "prop5 1 goTo.marker('54'); verify.currentSignatureHelpDocCommentIs("prop5 2"); verify.currentParameterHelpArgumentDocCommentIs(""); -goTo.marker('54q'); -verify.quickInfoIs("(method) c.prop5(b: string): number (+1 overload)", "prop5 2"); +//goTo.marker('54q'); +//verify.quickInfoIs("(method) c.prop5(b: string): number (+1 overload)", "prop5 2"); goTo.marker('55'); verify.currentSignatureHelpDocCommentIs(""); diff --git a/tests/cases/fourslash/completionListInstanceProtectedMembers.ts b/tests/cases/fourslash/completionListInstanceProtectedMembers.ts index 996bef7077b..e396a71247a 100644 --- a/tests/cases/fourslash/completionListInstanceProtectedMembers.ts +++ b/tests/cases/fourslash/completionListInstanceProtectedMembers.ts @@ -31,15 +31,15 @@ // Same class, everything is visible -goTo.marker("1"); -verify.memberListContains('privateMethod'); -verify.memberListContains('privateProperty'); -verify.memberListContains('protectedMethod'); -verify.memberListContains('protectedProperty'); -verify.memberListContains('publicMethod'); -verify.memberListContains('publicProperty'); -verify.memberListContains('protectedOverriddenMethod'); -verify.memberListContains('protectedOverriddenProperty'); +//goTo.marker("1"); +//verify.memberListContains('privateMethod'); +//verify.memberListContains('privateProperty'); +//verify.memberListContains('protectedMethod'); +//verify.memberListContains('protectedProperty'); +//verify.memberListContains('publicMethod'); +//verify.memberListContains('publicProperty'); +//verify.memberListContains('protectedOverriddenMethod'); +//verify.memberListContains('protectedOverriddenProperty'); goTo.marker("2"); verify.memberListContains('privateMethod'); diff --git a/tests/cases/fourslash/completionListInstanceProtectedMembers2.ts b/tests/cases/fourslash/completionListInstanceProtectedMembers2.ts index c074bc06314..fed310aba21 100644 --- a/tests/cases/fourslash/completionListInstanceProtectedMembers2.ts +++ b/tests/cases/fourslash/completionListInstanceProtectedMembers2.ts @@ -32,15 +32,15 @@ // Same class, everything is visible -goTo.marker("1"); -verify.not.memberListContains('privateMethod'); -verify.not.memberListContains('privateProperty'); -verify.memberListContains('protectedMethod'); -verify.memberListContains('protectedProperty'); -verify.memberListContains('publicMethod'); -verify.memberListContains('publicProperty'); -verify.memberListContains('protectedOverriddenMethod'); -verify.memberListContains('protectedOverriddenProperty'); +//goTo.marker("1"); +//verify.not.memberListContains('privateMethod'); +//verify.not.memberListContains('privateProperty'); +//verify.memberListContains('protectedMethod'); +//verify.memberListContains('protectedProperty'); +//verify.memberListContains('publicMethod'); +//verify.memberListContains('publicProperty'); +//verify.memberListContains('protectedOverriddenMethod'); +//verify.memberListContains('protectedOverriddenProperty'); // Can not access properties on super goTo.marker("2"); diff --git a/tests/cases/fourslash/completionListProtectedMembers.ts b/tests/cases/fourslash/completionListProtectedMembers.ts index 4715a9fb714..8ddd8aca4d0 100644 --- a/tests/cases/fourslash/completionListProtectedMembers.ts +++ b/tests/cases/fourslash/completionListProtectedMembers.ts @@ -18,25 +18,25 @@ ////var b: Base; ////f./*5*/ -goTo.marker("1"); -verify.memberListContains("y"); -verify.memberListContains("x"); -verify.not.memberListContains("z"); +//goTo.marker("1"); +//verify.memberListContains("y"); +//verify.memberListContains("x"); +//verify.not.memberListContains("z"); -goTo.marker("2"); -verify.memberListContains("y"); -verify.memberListContains("x"); -verify.memberListContains("z"); +//goTo.marker("2"); +//verify.memberListContains("y"); +//verify.memberListContains("x"); +//verify.memberListContains("z"); -goTo.marker("3"); -verify.memberListContains("y"); -verify.memberListContains("x"); -verify.not.memberListContains("z"); +//goTo.marker("3"); +//verify.memberListContains("y"); +//verify.memberListContains("x"); +//verify.not.memberListContains("z"); -goTo.marker("4"); -verify.memberListContains("y"); -verify.memberListContains("x"); -verify.memberListContains("z"); +//goTo.marker("4"); +//verify.memberListContains("y"); +//verify.memberListContains("x"); +//verify.memberListContains("z"); goTo.marker("5"); verify.not.memberListContains("x"); diff --git a/tests/cases/fourslash/contextuallyTypedObjectLiteralMethodDeclarationParam01.ts b/tests/cases/fourslash/contextuallyTypedObjectLiteralMethodDeclarationParam01.ts new file mode 100644 index 00000000000..6aabbbdbdce --- /dev/null +++ b/tests/cases/fourslash/contextuallyTypedObjectLiteralMethodDeclarationParam01.ts @@ -0,0 +1,32 @@ +/// + +// @noImplicitAny: true + +////interface A { +//// numProp: number; +////} +//// +////interface B { +//// strProp: string; +////} +//// +////interface Foo { +//// method1(arg: A): void; +//// method2(arg: B): void; +////} +//// +////function getFoo1(): Foo { +//// return { +//// method1(/*param1*/arg) { +//// arg.numProp = 10; +//// }, +//// method2(/*param2*/arg) { +//// arg.strProp = "hello"; +//// } +//// } +////} + +goTo.marker("param1"); +verify.quickInfoIs("(parameter) arg: A") +goTo.marker("param2"); +verify.quickInfoIs("(parameter) arg: B") diff --git a/tests/cases/fourslash/docCommentTemplateClassDecl01.ts b/tests/cases/fourslash/docCommentTemplateClassDecl01.ts new file mode 100644 index 00000000000..958a8c60fa4 --- /dev/null +++ b/tests/cases/fourslash/docCommentTemplateClassDecl01.ts @@ -0,0 +1,36 @@ +/// + +const CRLF = "\r\n"; +/** + * @returns the given value with '\n' normalized to '\r\n' and with no leading newline + */ +function useCRLFAndStripLeadingNewline(str: string): string { + str = str.replace(/\r?\n/g, CRLF); + if (str.indexOf(CRLF) === 0) { + str = str.slice(CRLF.length); + } + return str; +} + +function confirmNormalizedJsDoc(markerName: string, newTextOffset: number, template: string): void { + goTo.marker(markerName); + const normalized = useCRLFAndStripLeadingNewline(template); + verify.DocCommentTemplate(normalized, newTextOffset); +} + +/////*decl*/class C { +//// private p; +//// constructor(a, b, c, d); +//// constructor(public a, private b, protected c, d, e?) { +//// } +//// +//// foo(); +//// foo(a?, b?, ...args) { +//// } +////} + +confirmNormalizedJsDoc("decl", /*newTextOffset*/ 8, ` +/** + * + */ +`); diff --git a/tests/cases/fourslash/docCommentTemplateClassDeclMethods01.ts b/tests/cases/fourslash/docCommentTemplateClassDeclMethods01.ts new file mode 100644 index 00000000000..da407b632ef --- /dev/null +++ b/tests/cases/fourslash/docCommentTemplateClassDeclMethods01.ts @@ -0,0 +1,79 @@ +/// + +const CRLF = "\r\n"; +/** + * @returns the given value with '\n' normalized to '\r\n' and with no leading newline + */ +function useCRLFAndStripLeadingNewline(str: string): string { + str = str.replace(/\r?\n/g, CRLF); + if (str.indexOf(CRLF) === 0) { + str = str.slice(CRLF.length); + } + return str; +} + +function confirmNormalizedJsDoc(markerName: string, indentation: number, template: string): void { + goTo.marker(markerName); + const normalized = useCRLFAndStripLeadingNewline(template); + verify.DocCommentTemplate(normalized, indentation); +} + +const enum Indentation { + Standard = 8, + Indented = 12, +} + + +////class C { +/////*0*/ /*1*/ +//// foo(); +//// /*2*/foo(a); +//// /*3*/foo(a, b); +//// /*4*/ foo(a, {x: string}, [c]); +//// /*5*/foo(a?, b?, ...args) { +//// } +////} + +confirmNormalizedJsDoc("0", Indentation.Standard, ` +/** + * + */`); + + +confirmNormalizedJsDoc("1", Indentation.Indented, + `/** + * + */`); + + +confirmNormalizedJsDoc("2", Indentation.Indented, + `/** + * + * @param a + */ + `); + +confirmNormalizedJsDoc("3", Indentation.Indented, + `/** + * + * @param a + * @param b + */ + `); + +confirmNormalizedJsDoc("4", Indentation.Indented, + `/** + * + * @param a + * @param param1 + * @param param2 + */`); + +confirmNormalizedJsDoc("5", Indentation.Indented, + `/** + * + * @param a + * @param b + * @param args + */ + `); diff --git a/tests/cases/fourslash/docCommentTemplateClassDeclMethods02.ts b/tests/cases/fourslash/docCommentTemplateClassDeclMethods02.ts new file mode 100644 index 00000000000..99392cf3855 --- /dev/null +++ b/tests/cases/fourslash/docCommentTemplateClassDeclMethods02.ts @@ -0,0 +1,46 @@ +/// + +const CRLF = "\r\n"; +/** + * @returns the given value with '\n' normalized to '\r\n' and with no leading newline + */ +function useCRLFAndStripLeadingNewline(str: string): string { + str = str.replace(/\r?\n/g, CRLF); + if (str.indexOf(CRLF) === 0) { + str = str.slice(CRLF.length); + } + return str; +} + +function confirmNormalizedJsDoc(markerName: string, indentation: number, template: string): void { + goTo.marker(markerName); + const normalized = useCRLFAndStripLeadingNewline(template); + verify.DocCommentTemplate(normalized, indentation); +} + +const enum Indentation { + Indented = 12, +} + + +////class C { +//// /*0*/ +//// [Symbol.iterator]() { +//// return undefined; +//// } +//// /*1*/ +//// [1 + 2 + 3 + Math.rand()](x: number, y: string, z = true) { } +////} + +confirmNormalizedJsDoc("0", Indentation.Indented, + `/** + * + */`); + +confirmNormalizedJsDoc("1", Indentation.Indented, + `/** + * + * @param x + * @param y + * @param z + */`); \ No newline at end of file diff --git a/tests/cases/fourslash/docCommentTemplateConstructor01.ts b/tests/cases/fourslash/docCommentTemplateConstructor01.ts new file mode 100644 index 00000000000..b26ece7a5e6 --- /dev/null +++ b/tests/cases/fourslash/docCommentTemplateConstructor01.ts @@ -0,0 +1,52 @@ +/// + +const CRLF = "\r\n"; +/** + * @returns the given value with '\n' normalized to '\r\n' and with no leading newline + */ +function useCRLFAndStripLeadingNewline(str: string): string { + str = str.replace(/\r?\n/g, CRLF); + if (str.indexOf(CRLF) === 0) { + str = str.slice(CRLF.length); + } + return str; +} + +function confirmNormalizedJsDoc(markerName: string, newTextOffset: number, template: string): void { + goTo.marker(markerName); + const normalized = useCRLFAndStripLeadingNewline(template); + verify.DocCommentTemplate(normalized, newTextOffset); +} + +////class C { +//// private p; +//// /*0*/ +//// constructor(a, b, c, d); +//// /*1*/ +//// constructor(public a, private b, protected c, d, e?) { +//// } +//// +//// foo(); +//// foo(a?, b?, ...args) { +//// } +////} + +const newTextOffset = 12; +confirmNormalizedJsDoc("0", /*newTextOffset*/ newTextOffset, + `/** + * + * @param a + * @param b + * @param c + * @param d + */`); + +confirmNormalizedJsDoc("1", /*newTextOffset*/ newTextOffset, + `/** + * + * @param a + * @param b + * @param c + * @param d + * @param e + */`); diff --git a/tests/cases/fourslash/docCommentTemplateNamespacesAndModules01.ts b/tests/cases/fourslash/docCommentTemplateNamespacesAndModules01.ts new file mode 100644 index 00000000000..4d9fb987be5 --- /dev/null +++ b/tests/cases/fourslash/docCommentTemplateNamespacesAndModules01.ts @@ -0,0 +1,46 @@ +/// + +const CRLF = "\r\n"; +/** + * @returns the given value with '\n' normalized to '\r\n' and with no leading newline + */ +function useCRLFAndStripLeadingNewline(str: string): string { + str = str.replace(/\r?\n/g, CRLF); + if (str.indexOf(CRLF) === 0) { + str = str.slice(CRLF.length); + } + return str; +} + +function confirmNormalizedJsDoc(markerName: string, charOffset: number, template: string): void { + goTo.marker(markerName); + const normalized = useCRLFAndStripLeadingNewline(template); + verify.DocCommentTemplate(normalized, charOffset); +} + +/////*namespaceN*/ +////namespace n { +////} +//// +/////*namespaceM*/ +////module m { +////} +//// +/////*ambientModule*/ +////module "ambientModule" { +////} + +confirmNormalizedJsDoc("namespaceN", /*indentation*/ 8, ` +/** + * + */`); + +confirmNormalizedJsDoc("namespaceM", /*indentation*/ 8, ` +/** + * + */`); + +confirmNormalizedJsDoc("namespaceM", /*indentation*/ 8, ` +/** + * + */`); diff --git a/tests/cases/fourslash/docCommentTemplateNamespacesAndModules02.ts b/tests/cases/fourslash/docCommentTemplateNamespacesAndModules02.ts new file mode 100644 index 00000000000..e59b16d6163 --- /dev/null +++ b/tests/cases/fourslash/docCommentTemplateNamespacesAndModules02.ts @@ -0,0 +1,36 @@ +/// + +const CRLF = "\r\n"; +/** + * @returns the given value with '\n' normalized to '\r\n' and with no leading newline + */ +function useCRLFAndStripLeadingNewline(str: string): string { + str = str.replace(/\r?\n/g, CRLF); + if (str.indexOf(CRLF) === 0) { + str = str.slice(CRLF.length); + } + return str; +} + +function confirmNormalizedJsDoc(markerName: string, charOffset: number, template: string): void { + goTo.marker(markerName); + const normalized = useCRLFAndStripLeadingNewline(template); + verify.DocCommentTemplate(normalized, charOffset); +} + +/////*top*/ +////namespace n1. +//// /*n2*/ n2. +//// /*n3*/ n3 { +////} + +confirmNormalizedJsDoc("top", /*indentation*/ 8, ` +/** + * + */`); + +goTo.marker("n2"); +verify.noDocCommentTemplate(); + +goTo.marker("n3"); +verify.noDocCommentTemplate(); \ No newline at end of file diff --git a/tests/cases/fourslash/docCommentTemplateObjectLiteralMethods01.ts b/tests/cases/fourslash/docCommentTemplateObjectLiteralMethods01.ts new file mode 100644 index 00000000000..4af1b60c698 --- /dev/null +++ b/tests/cases/fourslash/docCommentTemplateObjectLiteralMethods01.ts @@ -0,0 +1,46 @@ +/// + +const CRLF = "\r\n"; +/** + * @returns the given value with '\n' normalized to '\r\n' and with no leading newline + */ +function useCRLFAndStripLeadingNewline(str: string): string { + str = str.replace(/\r?\n/g, CRLF); + if (str.indexOf(CRLF) === 0) { + str = str.slice(CRLF.length); + } + return str; +} + +function confirmNormalizedJsDoc(markerName: string, indentation: number, template: string): void { + goTo.marker(markerName); + const normalized = useCRLFAndStripLeadingNewline(template); + verify.DocCommentTemplate(normalized, indentation); +} + +const enum Indentation { + Indented = 12, +} + + +////var x = { +//// /*0*/ +//// foo() { +//// return undefined; +//// } +//// /*1*/ +//// [1 + 2 + 3 + Math.rand()](x: number, y: string, z = true) { } +////} + +confirmNormalizedJsDoc("0", Indentation.Indented, + `/** + * + */`); + +confirmNormalizedJsDoc("1", Indentation.Indented, + `/** + * + * @param x + * @param y + * @param z + */`); \ No newline at end of file diff --git a/tests/cases/fourslash/docCommentTemplateVariableStatements01.ts b/tests/cases/fourslash/docCommentTemplateVariableStatements01.ts new file mode 100644 index 00000000000..b901919fa1f --- /dev/null +++ b/tests/cases/fourslash/docCommentTemplateVariableStatements01.ts @@ -0,0 +1,70 @@ +/// + +const CRLF = "\r\n"; +/** + * @returns the given value with '\n' normalized to '\r\n' and with no leading newline + */ +function useCRLFAndStripLeadingNewline(str: string): string { + str = str.replace(/\r?\n/g, CRLF); + if (str.indexOf(CRLF) === 0) { + str = str.slice(CRLF.length); + } + return str; +} + +function confirmNormalizedJsDoc(markerName: string, newTextOffset: number, template: string): void { + goTo.marker(markerName); + const normalized = useCRLFAndStripLeadingNewline(template); + verify.DocCommentTemplate(normalized, newTextOffset); +} + +/////*a*/ +////var a = 10; +//// +/////*b*/ +////let b = ""; +//// +/////*c*/ +////const c = 30; +//// +/////*d*/ +////let d = { +//// foo: 10, +//// bar: "20" +////}; +//// +/////*e*/ +////let e = function e(x, y, z) { +//// return +(x + y + z); +////}; +//// +/////*f*/ +////let f = class F { +//// constructor(a, b, c) { +//// this.a = a; +//// this.b = b || (this.c = c); +//// } +////} + +for (const varName of "abcd".split("")) { + confirmNormalizedJsDoc(varName, /*newTextOffset*/ 8, ` +/** + * + */`); +} + +confirmNormalizedJsDoc("e", /*newTextOffset*/ 8, ` +/** + * + * @param x + * @param y + * @param z + */`); + +confirmNormalizedJsDoc("f", /*newTextOffset*/ 8, ` +/** + * + * @param a + * @param b + * @param c + */`); \ No newline at end of file diff --git a/tests/cases/fourslash/docCommentTemplateVariableStatements02.ts b/tests/cases/fourslash/docCommentTemplateVariableStatements02.ts new file mode 100644 index 00000000000..9339e703570 --- /dev/null +++ b/tests/cases/fourslash/docCommentTemplateVariableStatements02.ts @@ -0,0 +1,54 @@ +/// + +const CRLF = "\r\n"; +/** + * @returns the given value with '\n' normalized to '\r\n' and with no leading newline + */ +function useCRLFAndStripLeadingNewline(str: string): string { + str = str.replace(/\r?\n/g, CRLF); + if (str.indexOf(CRLF) === 0) { + str = str.slice(CRLF.length); + } + return str; +} + +function confirmNormalizedJsDoc(markerName: string, newTextOffset: number, template: string): void { + goTo.marker(markerName); + const normalized = useCRLFAndStripLeadingNewline(template); + verify.DocCommentTemplate(normalized, newTextOffset); +} + +/////*a*/ +////var a1 = 10, a2 = 20; +//// +/////*b*/ +////let b1 = "", b2 = true; +//// +/////*c*/ +////const c1 = 30, c2 = 40; +//// +/////*d*/ +////let d1 = function d(x, y, z) { +//// return +(x + y + z); +////}, d2 = 50; +//// +/////*e*/ +////let e1 = class E { +//// constructor(a, b, c) { +//// this.a = a; +//// this.b = b || (this.c = c); +//// } +////}, e2 = () => 100; +//// +/////*f*/ +////let f1 = { +//// foo: 10, +//// bar: "20" +////}, f2 = null; + +for (const varName of "abcdef".split("")) { + confirmNormalizedJsDoc(varName, /*newTextOffset*/ 8, ` +/** + * + */`); +} diff --git a/tests/cases/fourslash/docCommentTemplateVariableStatements03.ts b/tests/cases/fourslash/docCommentTemplateVariableStatements03.ts new file mode 100644 index 00000000000..e473cb798b7 --- /dev/null +++ b/tests/cases/fourslash/docCommentTemplateVariableStatements03.ts @@ -0,0 +1,90 @@ +/// + +const CRLF = "\r\n"; +/** + * @returns the given value with '\n' normalized to '\r\n' and with no leading newline + */ +function useCRLFAndStripLeadingNewline(str: string): string { + str = str.replace(/\r?\n/g, CRLF); + if (str.indexOf(CRLF) === 0) { + str = str.slice(CRLF.length); + } + return str; +} + +function confirmNormalizedJsDoc(markerName: string, newTextOffset: number, template: string): void { + goTo.marker(markerName); + const normalized = useCRLFAndStripLeadingNewline(template); + verify.DocCommentTemplate(normalized, newTextOffset); +} + +/////*a*/ +////var a = x => x +//// +/////*b*/ +////let b = (x,y,z) => x + y + z; +//// +/////*c*/ +////const c = ((x => +x)) +//// +/////*d*/ +////let d = (function () { }) +//// +/////*e*/ +////let e = function e([a,b,c]) { +//// return "hello" +////}; +//// +/////*f*/ +////let f = class { +////} +//// +/////*g*/ +////const g = ((class G { +//// constructor(private x); +//// constructor(x,y,z); +//// constructor(x,y,z, ...okayThatsEnough) { +//// } +////})) + +confirmNormalizedJsDoc("a", /*newTextOffset*/ 8, ` +/** + * + * @param x + */`); + +confirmNormalizedJsDoc("b", /*newTextOffset*/ 8, ` +/** + * + * @param x + * @param y + * @param z + */`); + +confirmNormalizedJsDoc("c", /*newTextOffset*/ 8, ` +/** + * + * @param x + */`); + +confirmNormalizedJsDoc("d", /*newTextOffset*/ 8, ` +/** + * + */`); + +confirmNormalizedJsDoc("e", /*newTextOffset*/ 8, ` +/** + * + * @param param0 + */`); + +confirmNormalizedJsDoc("f", /*newTextOffset*/ 8, ` +/** + * + */`); + +confirmNormalizedJsDoc("g", /*newTextOffset*/ 8, ` +/** + * + * @param x + */`); \ No newline at end of file diff --git a/tests/cases/fourslash/findAllRefsForVariableInExtendsClause01.ts b/tests/cases/fourslash/findAllRefsForVariableInExtendsClause01.ts new file mode 100644 index 00000000000..1ec144d7e82 --- /dev/null +++ b/tests/cases/fourslash/findAllRefsForVariableInExtendsClause01.ts @@ -0,0 +1,15 @@ +/// + + +////var [|Base|] = class { }; +////class C extends [|Base|] { } + +let ranges = test.ranges(); +for (let range of ranges) { + goTo.position(range.start); + + verify.referencesCountIs(ranges.length); + for (let expectedReference of ranges) { + verify.referencesAtPositionContains(expectedReference); + } +} \ No newline at end of file diff --git a/tests/cases/fourslash/findAllRefsForVariableInExtendsClause02.ts b/tests/cases/fourslash/findAllRefsForVariableInExtendsClause02.ts new file mode 100644 index 00000000000..0f06a3c4202 --- /dev/null +++ b/tests/cases/fourslash/findAllRefsForVariableInExtendsClause02.ts @@ -0,0 +1,17 @@ +/// + +////interface [|Base|] { } +////namespace n { +//// var Base = class { }; +//// interface I extends [|Base|] { } +////} + +let ranges = test.ranges(); +for (let range of ranges) { + goTo.position(range.start); + + verify.referencesCountIs(ranges.length); + for (let expectedReference of ranges) { + verify.referencesAtPositionContains(expectedReference); + } +} \ No newline at end of file diff --git a/tests/cases/fourslash/findAllRefsForVariableInImplementsClause01.ts b/tests/cases/fourslash/findAllRefsForVariableInImplementsClause01.ts new file mode 100644 index 00000000000..93f8cec8109 --- /dev/null +++ b/tests/cases/fourslash/findAllRefsForVariableInImplementsClause01.ts @@ -0,0 +1,10 @@ +/// + + +////var Base = class { }; +////class C extends Base implements [|Base|] { } + +let ranges = test.ranges(); +for (let range of ranges) { + verify.referencesCountIs(0); +} \ No newline at end of file diff --git a/tests/cases/fourslash/formatInTsxFiles.ts b/tests/cases/fourslash/formatInTsxFiles.ts new file mode 100644 index 00000000000..2585520305c --- /dev/null +++ b/tests/cases/fourslash/formatInTsxFiles.ts @@ -0,0 +1,8 @@ +/// + +//@Filename: file.tsx +////interface I { +//// next: I + +////let t: number; +////t +/////*nextlineWithEqual*/=2+2; +////t= +/////*nextlineWithoutEqual*/2 +/////*nextline2*/+2; +////t +/////*addition*/+= 22 +/////*nextlineSemicolon*/; +////t +////=t +/////*chained*/=t+ 4; + +format.document(); + +goTo.marker("nextlineWithEqual"); +verify.indentationIs(4); +verify.currentLineContentIs(" = 2 + 2;"); +goTo.marker("nextlineWithoutEqual"); +verify.indentationIs(4); +verify.currentLineContentIs(" 2"); +goTo.marker("nextline2"); +verify.indentationIs(4); +verify.currentLineContentIs(" + 2;"); +goTo.marker("addition"); +verify.indentationIs(4); +verify.currentLineContentIs(" += 22"); +goTo.marker("nextlineSemicolon"); +verify.indentationIs(4); +verify.currentLineContentIs(" ;"); +goTo.marker("chained"); +verify.indentationIs(4); +verify.currentLineContentIs(" = t + 4;"); \ No newline at end of file diff --git a/tests/cases/fourslash/formattingOnStatementsWithNoSemicolon.ts b/tests/cases/fourslash/formattingOnStatementsWithNoSemicolon.ts index e33298a5a3b..6dfa61cf294 100644 --- a/tests/cases/fourslash/formattingOnStatementsWithNoSemicolon.ts +++ b/tests/cases/fourslash/formattingOnStatementsWithNoSemicolon.ts @@ -155,7 +155,7 @@ verify.currentLineContentIs(" else"); goTo.marker("61"); verify.currentLineContentIs(" x += 2"); goTo.marker("62"); -verify.currentLineContentIs(" ;"); +verify.currentLineContentIs(" ;"); goTo.marker("63"); verify.currentLineContentIs("do do do do"); goTo.marker("64"); diff --git a/tests/cases/fourslash/genericTypeAliasIntersectionCompletions.ts b/tests/cases/fourslash/genericTypeAliasIntersectionCompletions.ts new file mode 100644 index 00000000000..0b2646291da --- /dev/null +++ b/tests/cases/fourslash/genericTypeAliasIntersectionCompletions.ts @@ -0,0 +1,33 @@ +/// + +//// type MixinCtor = new () => A & B & { constructor: MixinCtor }; +//// function merge(a: { prototype: A }, b: { prototype: B }): MixinCtor { +//// let merged = function() { } +//// Object.assign(merged.prototype, a.prototype, b.prototype); +//// return >merged; +//// } +//// +//// class TreeNode { +//// value: any; +//// } +//// +//// abstract class LeftSideNode extends TreeNode { +//// abstract right(): TreeNode; +//// left(): TreeNode { +//// return null; +//// } +//// } +//// +//// abstract class RightSideNode extends TreeNode { +//// abstract left(): TreeNode; +//// right(): TreeNode { +//// return null; +//// }; +//// } +//// +//// var obj = new (merge(LeftSideNode, RightSideNode))(); +//// obj./**/ + +goTo.marker(); +verify.completionListContains("left"); +verify.completionListContains("right"); diff --git a/tests/cases/fourslash/parameterWithDestructuring.ts b/tests/cases/fourslash/parameterWithDestructuring.ts new file mode 100644 index 00000000000..72dfefd553a --- /dev/null +++ b/tests/cases/fourslash/parameterWithDestructuring.ts @@ -0,0 +1,22 @@ +/// + +// Repros from issues #4949 and #4818 + +////const result = [{ foo: 'hello' }] +//// .map(({ /*1*/foo }) => /*2*/foo) +//// .map(foo => foo); +//// +////const f = (foo: (bar: string[]) => void) => { }; +//// +////f(([a, b]) => { +//// /*3*/a.charAt(0); // Not okay: inferred as `any` +////}); + +goTo.marker('1'); +verify.quickInfoIs('var foo: string'); + +goTo.marker('2'); +verify.quickInfoIs('var foo: string'); + +goTo.marker('3'); +verify.quickInfoIs('var a: string'); diff --git a/tests/cases/fourslash/tsxCompletion8.ts b/tests/cases/fourslash/tsxCompletion8.ts new file mode 100644 index 00000000000..59ad8385b9d --- /dev/null +++ b/tests/cases/fourslash/tsxCompletion8.ts @@ -0,0 +1,19 @@ +/// + +//@Filename: file.tsx +//// declare module JSX { +//// interface Element { } +//// interface IntrinsicElements { +//// div: { ONE: string; TWO: number; } +//// } +//// } +//// var x =
; + + +goTo.marker('1'); +verify.completionListContains("ONE"); +verify.not.completionListAllowsNewIdentifier(); + +goTo.marker('2'); +verify.completionListContains("ONE"); +verify.not.completionListAllowsNewIdentifier(); diff --git a/tests/cases/fourslash/whiteSpaceTrimming2.ts b/tests/cases/fourslash/whiteSpaceTrimming2.ts new file mode 100644 index 00000000000..de7bd0ae446 --- /dev/null +++ b/tests/cases/fourslash/whiteSpaceTrimming2.ts @@ -0,0 +1,21 @@ +/// + +////let noSubTemplate = `/* /*1*/`; +////let templateHead = `/* /*2*/${1 + 2}`; +////let templateMiddle = `/* ${1 + 2 /*3*/}`; +////let templateTail = `/* ${1 + 2} /*4*/`; + +goTo.marker('1'); +edit.insert("\n"); + +goTo.marker('2'); +edit.insert("\n"); + +goTo.marker('3'); +edit.insert("\n"); + +goTo.marker('4'); +edit.insert("\n"); + + +verify.currentFileContentIs("let noSubTemplate = `/* \n`;\nlet templateHead = `/* \n${1 + 2}`;\nlet templateMiddle = `/* ${1 + 2\n }`;\nlet templateTail = `/* ${1 + 2} \n`;"); diff --git a/tests/cases/fourslash/whiteSpaceTrimming3.ts b/tests/cases/fourslash/whiteSpaceTrimming3.ts new file mode 100644 index 00000000000..93d236773e4 --- /dev/null +++ b/tests/cases/fourslash/whiteSpaceTrimming3.ts @@ -0,0 +1,10 @@ +/// + +////let t = "foo \ +////bar \ +////"/*1*/ + +goTo.marker('1'); +edit.insert(";"); + +verify.currentFileContentIs("let t = \"foo \\\nbar \\ \n\";"); diff --git a/tests/cases/fourslash/whiteSpaceTrimming4.ts b/tests/cases/fourslash/whiteSpaceTrimming4.ts new file mode 100644 index 00000000000..59223197681 --- /dev/null +++ b/tests/cases/fourslash/whiteSpaceTrimming4.ts @@ -0,0 +1,8 @@ +/// + +////var re = /\w+ /*1*//; + +goTo.marker('1'); +edit.insert("\n"); + +verify.currentFileContentIs("var re = /\\w+ \n /;"); diff --git a/tests/cases/unittests/moduleResolution.ts b/tests/cases/unittests/moduleResolution.ts index 0917e72f1ce..809782bae6f 100644 --- a/tests/cases/unittests/moduleResolution.ts +++ b/tests/cases/unittests/moduleResolution.ts @@ -40,8 +40,9 @@ module ts { let containingFile = { name: containingFileName } let moduleFile = { name: moduleFileNameNoExt + ext } let resolution = nodeModuleNameResolver(moduleName, containingFile.name, createModuleResolutionHost(containingFile, moduleFile)); - assert.equal(resolution.resolvedFileName, moduleFile.name); - + assert.equal(resolution.resolvedModule.resolvedFileName, moduleFile.name); + assert.equal(!!resolution.resolvedModule.isExternalLibraryImport, false); + let failedLookupLocations: string[] = []; let dir = getDirectoryPath(containingFileName); for (let e of supportedExtensions) { @@ -78,7 +79,8 @@ module ts { let packageJson = { name: packageJsonFileName, content: JSON.stringify({ "typings": fieldRef }) }; let moduleFile = { name: moduleFileName }; let resolution = nodeModuleNameResolver(moduleName, containingFile.name, createModuleResolutionHost(containingFile, packageJson, moduleFile)); - assert.equal(resolution.resolvedFileName, moduleFile.name); + assert.equal(resolution.resolvedModule.resolvedFileName, moduleFile.name); + assert.equal(!!resolution.resolvedModule.isExternalLibraryImport, false); // expect three failed lookup location - attempt to load module as file with all supported extensions assert.equal(resolution.failedLookupLocations.length, 3); } @@ -95,7 +97,8 @@ module ts { let packageJson = {name: "/a/b/foo/package.json", content: JSON.stringify({main: "/c/d"})}; let indexFile = { name: "/a/b/foo/index.d.ts" }; let resolution = nodeModuleNameResolver("./foo", containingFile.name, createModuleResolutionHost(containingFile, packageJson, indexFile)); - assert.equal(resolution.resolvedFileName, indexFile.name); + assert.equal(resolution.resolvedModule.resolvedFileName, indexFile.name); + assert.equal(!!resolution.resolvedModule.isExternalLibraryImport, false); assert.deepEqual(resolution.failedLookupLocations, [ "/a/b/foo.ts", "/a/b/foo.tsx", @@ -111,7 +114,7 @@ module ts { let containingFile = { name: "/a/b/c/d/e.ts" }; let moduleFile = { name: "/a/b/node_modules/foo.ts" }; let resolution = nodeModuleNameResolver("foo", containingFile.name, createModuleResolutionHost(containingFile, moduleFile)); - assert.equal(resolution.resolvedFileName, undefined); + assert.equal(resolution.resolvedModule, undefined); assert.deepEqual(resolution.failedLookupLocations, [ "/a/b/c/d/node_modules/foo.d.ts", "/a/b/c/d/node_modules/foo/package.json", @@ -135,14 +138,16 @@ module ts { let containingFile = { name: "/a/b/c/d/e.ts" }; let moduleFile = { name: "/a/b/node_modules/foo.d.ts" }; let resolution = nodeModuleNameResolver("foo", containingFile.name, createModuleResolutionHost(containingFile, moduleFile)); - assert.equal(resolution.resolvedFileName, moduleFile.name); + assert.equal(resolution.resolvedModule.resolvedFileName, moduleFile.name); + assert.equal(resolution.resolvedModule.isExternalLibraryImport, true); }); it("load module as directory", () => { let containingFile = { name: "/a/node_modules/b/c/node_modules/d/e.ts" }; let moduleFile = { name: "/a/node_modules/foo/index.d.ts" }; let resolution = nodeModuleNameResolver("foo", containingFile.name, createModuleResolutionHost(containingFile, moduleFile)); - assert.equal(resolution.resolvedFileName, moduleFile.name); + assert.equal(resolution.resolvedModule.resolvedFileName, moduleFile.name); + assert.equal(resolution.resolvedModule.isExternalLibraryImport, true); assert.deepEqual(resolution.failedLookupLocations, [ "/a/node_modules/b/c/node_modules/d/node_modules/foo.d.ts", "/a/node_modules/b/c/node_modules/d/node_modules/foo/package.json", @@ -159,63 +164,69 @@ module ts { }); }); - describe("BaseUrl mode", () => { + describe("Module resolution - relative imports", () => { + it("should find all modules", () => { + const options: CompilerOptions = { module: ModuleKind.CommonJS }; + const files: Map = { + "/a/b/c/first/shared.ts": ` +class A {} +export = A`, + "/a/b/c/first/second/class_a.ts": ` +import Shared = require('../shared'); +import C = require('../../third/class_c'); +class B {} +export = B;`, + "/a/b/c/third/class_c.ts":` +import Shared = require('../first/shared'); +class C {} +export = C; + ` + }; + const currentDirectory = "/a/b/c/first/second"; + const host: CompilerHost = { + getSourceFile: (fileName: string, languageVersion: ScriptTarget) => { + let path = normalizePath(combinePaths(currentDirectory, fileName)); + return hasProperty(files, path) ? createSourceFile(fileName, files[path], languageVersion) : undefined; + }, + getDefaultLibFileName: () => "lib.d.ts", + writeFile: (fileName, content): void => { throw new Error("NotImplemented"); }, + getCurrentDirectory: () => currentDirectory, + getCanonicalFileName: fileName => fileName.toLowerCase(), + getNewLine: () => "\r\n", + useCaseSensitiveFileNames: () => false, + fileExists: fileName => { + let path = normalizePath(combinePaths(currentDirectory, fileName)); + return hasProperty(files, path); + }, + readFile: (fileName): string => { throw new Error("NotImplemented"); } + }; - it ("load module as relative url", () => { - function test(containingFileName: string, moduleFileName: string, moduleName: string): void { - let containingFile = {name: containingFileName }; - let moduleFile = { name: moduleFileName }; - let resolution = baseUrlModuleNameResolver(moduleName, containingFile.name, "", createModuleResolutionHost(containingFile, moduleFile)); - assert.equal(resolution.resolvedFileName, moduleFile.name); - let expectedFailedLookupLocations: string[] = []; - - let moduleNameHasExt = forEach(supportedExtensions, e => fileExtensionIs(moduleName, e)); - if (!moduleNameHasExt) { - let dir = getDirectoryPath(containingFileName); - - // add candidates with extensions that precede extension of the actual module name file in the list of supportd extensions - for (let ext of supportedExtensions) { - - let hasExtension = ext !== ".ts" - ? fileExtensionIs(moduleFileName, ext) - : fileExtensionIs(moduleFileName, ".ts") && !fileExtensionIs(moduleFileName, ".d.ts"); - - if (hasExtension) { - break; - } - else { - expectedFailedLookupLocations.push(normalizePath(combinePaths(dir, moduleName + ext))); - } - } - } - - assert.deepEqual(resolution.failedLookupLocations, expectedFailedLookupLocations) - } - - test("/a/b/c/d.ts", "/foo.ts", "/foo"); - test("/a/b/c/d.ts", "/foo.d.ts", "/foo"); - test("/a/b/c/d.ts", "/foo.tsx", "/foo"); - - test("/a/b/c/d.ts", "/a/b/c/foo.ts", "./foo"); - test("/a/b/c/d.ts", "/a/b/c/foo.d.ts", "./foo"); - test("/a/b/c/d.ts", "/a/b/c/foo.tsx", "./foo"); + const program = createProgram(["class_a.ts"], options, host); - test("/a/b/c/d.ts", "/a/b/foo.ts", "../foo"); - test("/a/b/c/d.ts", "/a/b/foo.d.ts", "../foo"); - test("/a/b/c/d.ts", "/a/b/foo.tsx", "../foo"); - }); - - it ("load module using base url", () => { - function test(containingFileName: string, moduleFileName: string, moduleName: string, baseUrl: string): void { - let containingFile = { name: containingFileName }; - let moduleFile = { name: moduleFileName }; - let resolution = baseUrlModuleNameResolver(moduleName, containingFileName, baseUrl, createModuleResolutionHost(containingFile, moduleFile)); - assert.equal(resolution.resolvedFileName, moduleFile.name); + assert.equal(program.getSourceFiles().length, 3); + const syntacticDiagnostics = program.getSyntacticDiagnostics(); + assert.equal(syntacticDiagnostics.length, 0, `expect no syntactic diagnostics, got: ${JSON.stringify(syntacticDiagnostics.map(diagnosticToString))}`); + const semanticDiagnostics = program.getSemanticDiagnostics(); + assert.equal(semanticDiagnostics.length, 0, `expect no semantic diagnostics, got: ${JSON.stringify(semanticDiagnostics.map(diagnosticToString))}`); + + // try to get file using a relative name + const fileC = program.getSourceFile("../../../c/third/class_c.ts"); + assert.isTrue(fileC !== undefined, `expected to get file by relative name, got ${fileC}`); + }); + + function diagnosticToString(diagnostic: Diagnostic) { + let output = ""; + + if (diagnostic.file) { + let loc = getLineAndCharacterOfPosition(diagnostic.file, diagnostic.start); + + output += `${ diagnostic.file.fileName }(${ loc.line + 1 },${ loc.character + 1 }): `; } - - test("/a/base/c/d.ts", "/a/base/c/d/e.ts", "c/d/e", "/a/base"); - test("/a/base/c/d.ts", "/a/base/c/d/e.d.ts", "c/d/e", "/a/base"); - test("/a/base/c/d.ts", "/a/base/c/d/e.tsx", "c/d/e", "/a/base"); - }); + + let category = DiagnosticCategory[diagnostic.category].toLowerCase(); + output += `${ category } TS${ diagnostic.code }: ${ flattenDiagnosticMessageText(diagnostic.messageText, sys.newLine) }${ sys.newLine }`; + + return output; + } }); } \ No newline at end of file diff --git a/tests/cases/unittests/reuseProgramStructure.ts b/tests/cases/unittests/reuseProgramStructure.ts index 56b1dedbcbb..5f313eeae2b 100644 --- a/tests/cases/unittests/reuseProgramStructure.ts +++ b/tests/cases/unittests/reuseProgramStructure.ts @@ -160,7 +160,7 @@ module ts { return size; } - function checkResolvedModulesCache(program: Program, fileName: string, expectedContent: Map): void { + function checkResolvedModulesCache(program: Program, fileName: string, expectedContent: Map): void { let file = program.getSourceFile(fileName); assert.isTrue(file !== undefined, `cannot find file ${fileName}`); if (expectedContent === undefined) { @@ -175,7 +175,16 @@ module ts { for (let id in expectedContent) { if (hasProperty(expectedContent, id)) { assert.isTrue(hasProperty(file.resolvedModules, id), `expected ${id} to be found in resolved modules`); - assert.isTrue(expectedContent[id] === file.resolvedModules[id], `expected '${expectedContent[id]}' to be equal to '${file.resolvedModules[id]}'`); + if (expectedContent[id]) { + const expected = expectedContent[id]; + const actual = file.resolvedModules[id]; + assert.isTrue(actual !== undefined); + assert.isTrue(expected.resolvedFileName === actual.resolvedFileName, `'resolvedFileName': expected '${expected.resolvedFileName}' to be equal to '${actual.resolvedFileName}'`); + assert.isTrue(expected.isExternalLibraryImport === actual.isExternalLibraryImport, `'shouldBeProperExternalModule': expected '${expected.isExternalLibraryImport}' to be equal to '${actual.isExternalLibraryImport}'`); + } + else { + assert.isTrue(file.resolvedModules[id] === undefined); + } } } } @@ -237,7 +246,7 @@ module ts { var options: CompilerOptions = { target }; var program_1 = newProgram(files, ["a.ts"], options); - checkResolvedModulesCache(program_1, "a.ts", { "b": "b.ts" }); + checkResolvedModulesCache(program_1, "a.ts", { "b": { resolvedFileName: "b.ts" } }); checkResolvedModulesCache(program_1, "b.ts", undefined); var program_2 = updateProgram(program_1, ["a.ts"], options, files => { @@ -246,7 +255,7 @@ module ts { assert.isTrue(program_1.structureIsReused); // content of resolution cache should not change - checkResolvedModulesCache(program_1, "a.ts", { "b": "b.ts" }); + checkResolvedModulesCache(program_1, "a.ts", { "b": { resolvedFileName: "b.ts" } }); checkResolvedModulesCache(program_1, "b.ts", undefined); // imports has changed - program is not reused @@ -263,7 +272,7 @@ module ts { files[0].text = files[0].text.updateImportsAndExports(newImports); }); assert.isTrue(!program_3.structureIsReused); - checkResolvedModulesCache(program_4, "a.ts", { "b": "b.ts", "c": undefined }); + checkResolvedModulesCache(program_4, "a.ts", { "b": { resolvedFileName: "b.ts" }, "c": undefined }); }); }) } \ No newline at end of file diff --git a/tests/cases/unittests/services/preProcessFile.ts b/tests/cases/unittests/services/preProcessFile.ts index 982c45f0f2d..a3f8db5528f 100644 --- a/tests/cases/unittests/services/preProcessFile.ts +++ b/tests/cases/unittests/services/preProcessFile.ts @@ -173,6 +173,20 @@ describe('PreProcessFile:', function () { isLibFile: false }) }); + + it("Correctly handles export import declarations", function () { + test("export import a = require(\"m1\");", + true, + { + referencedFiles: [], + importedFiles: [ + { fileName: "m1", pos: 26, end: 28 } + ], + ambientExternalModules: undefined, + isLibFile: false + }) + }); + }); }); diff --git a/tests/cases/unittests/transpile.ts b/tests/cases/unittests/transpile.ts index 9336c323bb4..ca7d1faa4a9 100644 --- a/tests/cases/unittests/transpile.ts +++ b/tests/cases/unittests/transpile.ts @@ -202,14 +202,14 @@ var x = 0;`, `declare function use(a: any);\n` + `use(foo);` let output = - `(function (deps, factory) {\n` + + `(function (factory) {\n` + ` if (typeof module === 'object' && typeof module.exports === 'object') {\n` + ` var v = factory(require, exports); if (v !== undefined) module.exports = v;\n` + ` }\n` + ` else if (typeof define === 'function' && define.amd) {\n` + - ` define(deps, factory);\n` + + ` define(["require", "exports", "SomeOtherName"], factory);\n` + ` }\n` + - `})(["require", "exports", "SomeOtherName"], function (require, exports) {\n` + + `})(function (require, exports) {\n` + ` var SomeName_1 = require("SomeOtherName");\n` + ` use(SomeName_1.foo);\n` + `});\n`; diff --git a/tslint.json b/tslint.json index 71dc6730de4..19ccd30ca9f 100644 --- a/tslint.json +++ b/tslint.json @@ -8,10 +8,9 @@ "spaces" ], "one-line": [true, - "check-open-brace" + "check-open-brace", + "check-whitespace" ], - "no-unreachable": true, - "no-use-before-declare": true, "no-var-keyword": true, "quotemark": [true, "double" @@ -21,7 +20,8 @@ "check-branch", "check-operator", "check-separator", - "check-type" + "check-type", + "check-module" ], "typedef-whitespace": [true, { "call-signature": "nospace", @@ -29,6 +29,15 @@ "parameter": "nospace", "property-declaration": "nospace", "variable-declaration": "nospace" - }] + }], + "next-line": [true, + "check-catch", + "check-else" + ], + "no-internal-module": true, + "no-trailing-whitespace": true, + "no-inferrable-types": true, + "no-null": true, + "boolean-trivia": true } }