From 3da6de205cc224204a6c6d71cc06ae5d27efc047 Mon Sep 17 00:00:00 2001 From: Mohamed Hegazy Date: Wed, 19 Aug 2015 23:12:25 -0700 Subject: [PATCH 01/56] remove unused list of supported switchs --- src/harness/harness.ts | 10 ---------- 1 file changed, 10 deletions(-) diff --git a/src/harness/harness.ts b/src/harness/harness.ts index a0366c0c40b..b1560d78a7a 100644 --- a/src/harness/harness.ts +++ b/src/harness/harness.ts @@ -1519,16 +1519,6 @@ 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", "suppressimplicitanyindexerrors", "stripinternal", - "isolatedmodules", "inlinesourcemap", "maproot", "sourceroot", - "inlinesources", "emitdecoratormetadata", "experimentaldecorators", - "skipdefaultlibcheck", "jsx"]; - function extractCompilerSettings(content: string): CompilerSetting[] { let opts: CompilerSetting[] = []; From eef8f04e5d39f00bb80e819c7837610008d464d0 Mon Sep 17 00:00:00 2001 From: Mohamed Hegazy Date: Wed, 19 Aug 2015 23:15:40 -0700 Subject: [PATCH 02/56] remove unused flag aliases --- src/harness/harness.ts | 4 ---- 1 file changed, 4 deletions(-) diff --git a/src/harness/harness.ts b/src/harness/harness.ts index b1560d78a7a..618a3b20ec2 100644 --- a/src/harness/harness.ts +++ b/src/harness/harness.ts @@ -1017,7 +1017,6 @@ module Harness { 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; @@ -1038,7 +1037,6 @@ module Harness { break; case "target": - case "codegentarget": if (typeof setting.value === "string") { if (setting.value.toLowerCase() === "es3") { options.target = ts.ScriptTarget.ES3; @@ -1087,11 +1085,9 @@ module Harness { break; case "out": - case "outfileoption": options.out = setting.value; break; - case "outdiroption": case "outdir": options.outDir = setting.value; break; From b2ac33da9e99255d11efb963ac95a21109db698e Mon Sep 17 00:00:00 2001 From: Mohamed Hegazy Date: Wed, 19 Aug 2015 23:16:58 -0700 Subject: [PATCH 03/56] Export setCompilerOptionForSetting --- src/harness/harness.ts | 340 ++++++++++++++++++++--------------------- 1 file changed, 170 insertions(+), 170 deletions(-) diff --git a/src/harness/harness.ts b/src/harness/harness.ts index 618a3b20ec2..317171daeb9 100644 --- a/src/harness/harness.ts +++ b/src/harness/harness.ts @@ -910,6 +910,175 @@ module Harness { }; } + export function setCompilerOptionForSetting(setting: Harness.TestCaseParser.CompilerSetting, options: ts.CompilerOptions): void { + switch (setting.flag.toLowerCase()) { + case "module": + 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; + } 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 "target": + 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": + options.out = setting.value; + break; + + 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 "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); + } + } + export class HarnessCompiler { private inputFiles: { unitName: string; content: string }[] = []; private compileOptions: ts.CompilerOptions; @@ -989,7 +1158,7 @@ module Harness { let includeBuiltFiles: { unitName: string; content: string }[] = []; let useCaseSensitiveFileNames = ts.sys.useCaseSensitiveFileNames; - this.settings.forEach(setCompilerOptionForSetting); + this.settings.forEach(setting => setCompilerOptionForSetting(setting, options)); let fileOutputs: GeneratedFile[] = []; @@ -1013,175 +1182,6 @@ module Harness { ts.sys.newLine = newLine; 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": - 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; - } 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 "target": - 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": - options.out = setting.value; - break; - - 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 "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; }[], From b28befdc1e0a0d58b262ab379a172ecea98d76d6 Mon Sep 17 00:00:00 2001 From: Mohamed Hegazy Date: Wed, 19 Aug 2015 23:53:19 -0700 Subject: [PATCH 04/56] Handel additional properties --- src/harness/harness.ts | 27 ++++++++++++++++++++------- 1 file changed, 20 insertions(+), 7 deletions(-) diff --git a/src/harness/harness.ts b/src/harness/harness.ts index 317171daeb9..c17c00bcfc4 100644 --- a/src/harness/harness.ts +++ b/src/harness/harness.ts @@ -910,7 +910,12 @@ module Harness { }; } - export function setCompilerOptionForSetting(setting: Harness.TestCaseParser.CompilerSetting, options: ts.CompilerOptions): void { + interface HarnesOptions { + useCaseSensitiveFileNames?: boolean; + includeBuiltFileNames?: string[]; + } + + export function setCompilerOptionForSetting(setting: Harness.TestCaseParser.CompilerSetting, options: ts.CompilerOptions & HarnesOptions): void { switch (setting.flag.toLowerCase()) { case "module": if (typeof setting.value === "string") { @@ -1028,7 +1033,7 @@ module Harness { options.stripInternal = setting.value === "true"; case "usecasesensitivefilenames": - useCaseSensitiveFileNames = setting.value === "true"; + options.useCaseSensitiveFileNames = setting.value === "true"; break; case "filename": @@ -1056,8 +1061,10 @@ module Harness { break; case "includebuiltfile": - let builtFileName = libFolder + setting.value; - includeBuiltFiles.push({ unitName: builtFileName, content: normalizeLineEndings(IO.readFile(builtFileName), newLine) }); + if (!options.includeBuiltFileNames) { + options.includeBuiltFileNames = []; + } + options.includeBuiltFileNames.push(setting.value); break; case "inlinesourcemap": @@ -1136,7 +1143,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 & HarnesOptions, // Current directory is needed for rwcRunner to be able to use currentDirectory defined in json file currentDirectory?: string) { @@ -1153,12 +1160,18 @@ module Harness { let newLine = "\r\n"; options.skipDefaultLibCheck = true; + // Parse settings + this.settings.forEach(setting => setCompilerOptionForSetting(setting, 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 }[] = []; + ts.forEach(options.includeBuiltFileNames, fileName => { + let builtFileName = libFolder + fileName; + includeBuiltFiles.push({ unitName: builtFileName, content: normalizeLineEndings(IO.readFile(builtFileName), newLine) }); + }); - let useCaseSensitiveFileNames = ts.sys.useCaseSensitiveFileNames; - this.settings.forEach(setting => setCompilerOptionForSetting(setting, options)); + let useCaseSensitiveFileNames = options.useCaseSensitiveFileNames !== undefined ? options.useCaseSensitiveFileNames : ts.sys.useCaseSensitiveFileNames; let fileOutputs: GeneratedFile[] = []; From 527f197a4ef32278aac29a54d89e760d63968ada Mon Sep 17 00:00:00 2001 From: Mohamed Hegazy Date: Thu, 20 Aug 2015 00:40:45 -0700 Subject: [PATCH 05/56] consolidate toLower call --- src/harness/harness.ts | 121 +++++++++++++++++++++-------------------- 1 file changed, 62 insertions(+), 59 deletions(-) diff --git a/src/harness/harness.ts b/src/harness/harness.ts index c17c00bcfc4..6304c6f2c9e 100644 --- a/src/harness/harness.ts +++ b/src/harness/harness.ts @@ -916,124 +916,118 @@ module Harness { } export function setCompilerOptionForSetting(setting: Harness.TestCaseParser.CompilerSetting, options: ts.CompilerOptions & HarnesOptions): void { - switch (setting.flag.toLowerCase()) { + let name = setting.flag.toLowerCase(); + let value = setting.value ? setting.value.toLowerCase() : setting.value; + switch (name) { case "module": - 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; - } 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); - } + if (value === "amd") { + options.module = ts.ModuleKind.AMD; + } else if (value === "umd") { + options.module = ts.ModuleKind.UMD; + } else if (value === "commonjs") { + options.module = ts.ModuleKind.CommonJS; + } else if (value === "system") { + options.module = ts.ModuleKind.System; + } else if (value === "unspecified") { + options.module = ts.ModuleKind.None; } else { - options.module = setting.value; + throw new Error("Unknown module type " + value); } break; case "target": - 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); - } + if (value === "es3") { + options.target = ts.ScriptTarget.ES3; + } else if (value === "es5") { + options.target = ts.ScriptTarget.ES5; + } else if (value === "es6") { + options.target = ts.ScriptTarget.ES6; } else { - options.target = setting.value; + throw new Error("Unknown compile target " + value); } break; case "experimentaldecorators": - options.experimentalDecorators = setting.value === "true"; + options.experimentalDecorators = value === "true"; break; case "emitdecoratormetadata": - options.emitDecoratorMetadata = setting.value === "true"; + options.emitDecoratorMetadata = value === "true"; break; case "experimentalasyncfunctions": - options.experimentalAsyncFunctions = setting.value === "true"; + options.experimentalAsyncFunctions = value === "true"; break; case "noemithelpers": - options.noEmitHelpers = setting.value === "true"; + options.noEmitHelpers = value === "true"; break; case "noemitonerror": - options.noEmitOnError = setting.value === "true"; + options.noEmitOnError = value === "true"; break; case "noresolve": - options.noResolve = setting.value === "true"; + options.noResolve = value === "true"; break; case "noimplicitany": - options.noImplicitAny = setting.value === "true"; + options.noImplicitAny = value === "true"; break; case "nolib": - options.noLib = setting.value === "true"; + options.noLib = value === "true"; break; case "out": - options.out = setting.value; + options.out = value; break; case "outdir": - options.outDir = setting.value; + options.outDir = value; break; case "skipdefaultlibcheck": - options.skipDefaultLibCheck = setting.value === "true"; + options.skipDefaultLibCheck = value === "true"; break; case "sourceroot": - options.sourceRoot = setting.value; + options.sourceRoot = value; break; case "maproot": - options.mapRoot = setting.value; + options.mapRoot = value; break; case "sourcemap": - options.sourceMap = setting.value === "true"; + options.sourceMap = value === "true"; break; case "declaration": - options.declaration = setting.value === "true"; + options.declaration = value === "true"; break; case "newline": - if (setting.value.toLowerCase() === "crlf") { + if (value === "crlf") { options.newLine = ts.NewLineKind.CarriageReturnLineFeed; } - else if (setting.value.toLowerCase() === "lf") { + else if (value === "lf") { options.newLine = ts.NewLineKind.LineFeed; } else { - throw new Error("Unknown option for newLine: " + setting.value); + throw new Error("Unknown option for newLine: " + value); } break; case "comments": - options.removeComments = setting.value === "false"; + options.removeComments = value === "false"; break; case "stripinternal": - options.stripInternal = setting.value === "true"; + options.stripInternal = value === "true"; case "usecasesensitivefilenames": - options.useCaseSensitiveFileNames = setting.value === "true"; + options.useCaseSensitiveFileNames = value === "true"; break; case "filename": @@ -1041,44 +1035,53 @@ module Harness { break; case "emitbom": - options.emitBOM = setting.value === "true"; + options.emitBOM = value === "true"; break; case "errortruncation": - options.noErrorTruncation = setting.value === "false"; + options.noErrorTruncation = value === "false"; break; case "preserveconstenums": - options.preserveConstEnums = setting.value === "true"; + options.preserveConstEnums = value === "true"; break; case "isolatedmodules": - options.isolatedModules = setting.value === "true"; + options.isolatedModules = value === "true"; break; case "suppressimplicitanyindexerrors": - options.suppressImplicitAnyIndexErrors = setting.value === "true"; + options.suppressImplicitAnyIndexErrors = value === "true"; break; case "includebuiltfile": if (!options.includeBuiltFileNames) { options.includeBuiltFileNames = []; } - options.includeBuiltFileNames.push(setting.value); + options.includeBuiltFileNames.push(value); break; case "inlinesourcemap": - options.inlineSourceMap = setting.value === "true"; + options.inlineSourceMap = value === "true"; break; case "inlinesources": - options.inlineSources = setting.value === "true"; + options.inlineSources = value === "true"; break; case "jsx": - options.jsx = setting.value.toLowerCase() === "react" ? ts.JsxEmit.React : - setting.value.toLowerCase() === "preserve" ? ts.JsxEmit.Preserve : - ts.JsxEmit.None; + if (value === "react") { + options.jsx = ts.JsxEmit.React; + } + else if (value === "preserve") { + options.jsx = ts.JsxEmit.Preserve; + } + else if (value === "none") { + options.jsx = ts.JsxEmit.None; + } + else { + throw new Error("Unknown option for jsx: " + value); + } break; default: From b1f90e677582ead794af0cbc575bcb0bd34b5d30 Mon Sep 17 00:00:00 2001 From: Mohamed Hegazy Date: Thu, 20 Aug 2015 00:41:14 -0700 Subject: [PATCH 06/56] change to use map instead of flag, value tuple. --- src/harness/harness.ts | 369 ++++++++++++++++++++--------------------- 1 file changed, 184 insertions(+), 185 deletions(-) diff --git a/src/harness/harness.ts b/src/harness/harness.ts index 6304c6f2c9e..f5a348a23c9 100644 --- a/src/harness/harness.ts +++ b/src/harness/harness.ts @@ -915,190 +915,194 @@ module Harness { includeBuiltFileNames?: string[]; } - export function setCompilerOptionForSetting(setting: Harness.TestCaseParser.CompilerSetting, options: ts.CompilerOptions & HarnesOptions): void { - let name = setting.flag.toLowerCase(); - let value = setting.value ? setting.value.toLowerCase() : setting.value; - switch (name) { - case "module": - if (value === "amd") { - options.module = ts.ModuleKind.AMD; - } else if (value === "umd") { - options.module = ts.ModuleKind.UMD; - } else if (value === "commonjs") { - options.module = ts.ModuleKind.CommonJS; - } else if (value === "system") { - options.module = ts.ModuleKind.System; - } else if (value === "unspecified") { - options.module = ts.ModuleKind.None; - } else { - throw new Error("Unknown module type " + value); + export function setCompilerOptionForSetting(settings: Harness.TestCaseParser.CompilerSettings, options: ts.CompilerOptions & HarnesOptions): void { + for (let name in settings) { + if (settings.hasOwnProperty(name)) { + let value = settings[name] ? settings[name].toLowerCase() : settings[name]; + switch (name.toLowerCase()) { + case "module": + if (value === "amd") { + options.module = ts.ModuleKind.AMD; + } else if (value === "umd") { + options.module = ts.ModuleKind.UMD; + } else if (value === "commonjs") { + options.module = ts.ModuleKind.CommonJS; + } else if (value === "system") { + options.module = ts.ModuleKind.System; + } else if (value === "unspecified") { + options.module = ts.ModuleKind.None; + } else { + throw new Error("Unknown module type " + value); + } + break; + + case "target": + if (value === "es3") { + options.target = ts.ScriptTarget.ES3; + } else if (value === "es5") { + options.target = ts.ScriptTarget.ES5; + } else if (value === "es6") { + options.target = ts.ScriptTarget.ES6; + } else { + throw new Error("Unknown compile target " + value); + } + break; + + case "experimentaldecorators": + options.experimentalDecorators = value === "true"; + break; + + case "emitdecoratormetadata": + options.emitDecoratorMetadata = value === "true"; + break; + + case "experimentalasyncfunctions": + options.experimentalAsyncFunctions = value === "true"; + break; + + case "noemithelpers": + options.noEmitHelpers = value === "true"; + break; + + case "noemitonerror": + options.noEmitOnError = value === "true"; + break; + + case "noresolve": + options.noResolve = value === "true"; + break; + + case "noimplicitany": + options.noImplicitAny = value === "true"; + break; + + case "nolib": + options.noLib = value === "true"; + break; + + case "out": + options.out = settings[name]; + break; + + case "outdir": + options.outDir = settings[name]; + break; + + case "skipdefaultlibcheck": + options.skipDefaultLibCheck = value === "true"; + break; + + case "sourceroot": + options.sourceRoot = settings[name]; + break; + + case "maproot": + options.mapRoot = settings[name]; + break; + + case "sourcemap": + options.sourceMap = value === "true"; + break; + + case "declaration": + options.declaration = value === "true"; + break; + + case "newline": + if (value === "crlf") { + options.newLine = ts.NewLineKind.CarriageReturnLineFeed; + } + else if (value === "lf") { + options.newLine = ts.NewLineKind.LineFeed; + } + else { + throw new Error("Unknown option for newLine: " + value); + } + break; + + case "comments": + options.removeComments = value === "false"; + break; + + case "stripinternal": + options.stripInternal = value === "true"; + break; + + case "usecasesensitivefilenames": + options.useCaseSensitiveFileNames = value === "true"; + break; + + case "filename": + // Not supported yet + break; + + case "emitbom": + options.emitBOM = value === "true"; + break; + + case "errortruncation": + options.noErrorTruncation = value === "false"; + break; + + case "preserveconstenums": + options.preserveConstEnums = value === "true"; + break; + + case "isolatedmodules": + options.isolatedModules = value === "true"; + break; + + case "suppressimplicitanyindexerrors": + options.suppressImplicitAnyIndexErrors = value === "true"; + break; + + case "includebuiltfile": + if (!options.includeBuiltFileNames) { + options.includeBuiltFileNames = []; + } + options.includeBuiltFileNames.push(settings[name]); + break; + + case "inlinesourcemap": + options.inlineSourceMap = value === "true"; + break; + + case "inlinesources": + options.inlineSources = value === "true"; + break; + + case "jsx": + if (value === "react") { + options.jsx = ts.JsxEmit.React; + } + else if (value === "preserve") { + options.jsx = ts.JsxEmit.Preserve; + } + else if (value === "none") { + options.jsx = ts.JsxEmit.None; + } + else { + throw new Error("Unknown option for jsx: " + value); + } + break; + + default: + throw new Error("Unsupported compiler setting " + value); } - break; - - case "target": - if (value === "es3") { - options.target = ts.ScriptTarget.ES3; - } else if (value === "es5") { - options.target = ts.ScriptTarget.ES5; - } else if (value === "es6") { - options.target = ts.ScriptTarget.ES6; - } else { - throw new Error("Unknown compile target " + value); - } - break; - - case "experimentaldecorators": - options.experimentalDecorators = value === "true"; - break; - - case "emitdecoratormetadata": - options.emitDecoratorMetadata = value === "true"; - break; - - case "experimentalasyncfunctions": - options.experimentalAsyncFunctions = value === "true"; - break; - - case "noemithelpers": - options.noEmitHelpers = value === "true"; - break; - - case "noemitonerror": - options.noEmitOnError = value === "true"; - break; - - case "noresolve": - options.noResolve = value === "true"; - break; - - case "noimplicitany": - options.noImplicitAny = value === "true"; - break; - - case "nolib": - options.noLib = value === "true"; - break; - - case "out": - options.out = value; - break; - - case "outdir": - options.outDir = value; - break; - - case "skipdefaultlibcheck": - options.skipDefaultLibCheck = value === "true"; - break; - - case "sourceroot": - options.sourceRoot = value; - break; - - case "maproot": - options.mapRoot = value; - break; - - case "sourcemap": - options.sourceMap = value === "true"; - break; - - case "declaration": - options.declaration = value === "true"; - break; - - case "newline": - if (value === "crlf") { - options.newLine = ts.NewLineKind.CarriageReturnLineFeed; - } - else if (value === "lf") { - options.newLine = ts.NewLineKind.LineFeed; - } - else { - throw new Error("Unknown option for newLine: " + value); - } - break; - - case "comments": - options.removeComments = value === "false"; - break; - - case "stripinternal": - options.stripInternal = value === "true"; - - case "usecasesensitivefilenames": - options.useCaseSensitiveFileNames = value === "true"; - break; - - case "filename": - // Not supported yet - break; - - case "emitbom": - options.emitBOM = value === "true"; - break; - - case "errortruncation": - options.noErrorTruncation = value === "false"; - break; - - case "preserveconstenums": - options.preserveConstEnums = value === "true"; - break; - - case "isolatedmodules": - options.isolatedModules = value === "true"; - break; - - case "suppressimplicitanyindexerrors": - options.suppressImplicitAnyIndexErrors = value === "true"; - break; - - case "includebuiltfile": - if (!options.includeBuiltFileNames) { - options.includeBuiltFileNames = []; - } - options.includeBuiltFileNames.push(value); - break; - - case "inlinesourcemap": - options.inlineSourceMap = value === "true"; - break; - - case "inlinesources": - options.inlineSources = value === "true"; - break; - - case "jsx": - if (value === "react") { - options.jsx = ts.JsxEmit.React; - } - else if (value === "preserve") { - options.jsx = ts.JsxEmit.Preserve; - } - else if (value === "none") { - options.jsx = ts.JsxEmit.None; - } - else { - throw new Error("Unknown option for jsx: " + value); - } - break; - - default: - throw new Error("Unsupported compiler setting " + setting.flag); + } } } 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 = []; } @@ -1106,11 +1110,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; } @@ -1164,7 +1164,7 @@ module Harness { options.skipDefaultLibCheck = true; // Parse settings - this.settings.forEach(setting => setCompilerOptionForSetting(setting, options)); + setCompilerOptionForSetting(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. @@ -1514,9 +1514,8 @@ module Harness { export module 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 */ @@ -1531,20 +1530,20 @@ 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 - function extractCompilerSettings(content: string): CompilerSetting[] { + function extractCompilerSettings(content: string): CompilerSettings { - let opts: CompilerSetting[] = []; + 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 From 014137b544388bc06a25674d0284640260705672 Mon Sep 17 00:00:00 2001 From: Mohamed Hegazy Date: Thu, 20 Aug 2015 00:41:35 -0700 Subject: [PATCH 07/56] remove unused createNewInstance support --- src/harness/compilerRunner.ts | 32 ++------------------------------ 1 file changed, 2 insertions(+), 30 deletions(-) diff --git a/src/harness/compilerRunner.ts b/src/harness/compilerRunner.ts index 87e22e08cfa..a24ed30ae14 100644 --- a/src/harness/compilerRunner.ts +++ b/src/harness/compilerRunner.ts @@ -44,10 +44,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 +61,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(); @@ -100,27 +97,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. @@ -402,10 +378,6 @@ class CompilerBaselineRunner extends RunnerBase { else { this.tests.forEach(test => this.checkTestCodeOutput(test)); } - - describe("Cleanup after compiler baselines", () => { - let harnessCompiler = Harness.Compiler.getCompiler(); - }); }); } From 539d94502c125d1783456131e00a3e3b8e7ed250 Mon Sep 17 00:00:00 2001 From: Mohamed Hegazy Date: Thu, 20 Aug 2015 14:21:19 -0700 Subject: [PATCH 08/56] Use same parsing function for fourslash tests --- src/harness/fourslash.ts | 80 +++++++--------------------------------- src/harness/harness.ts | 9 +++++ 2 files changed, 22 insertions(+), 67 deletions(-) diff --git a/src/harness/fourslash.ts b/src/harness/fourslash.ts index 1d2ad83d98a..bb2edd52cce 100644 --- a/src/harness/fourslash.ts +++ b/src/harness/fourslash.ts @@ -29,13 +29,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,70 +117,18 @@ 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", - outDir: "outDir", - sourceMap: "sourceMap", - sourceRoot: "sourceRoot", - allowNonTsExtensions: "allowNonTsExtensions", resolveReference: "ResolveReference", // This flag is used to specify entry file for resolve file references. The flag is only allow once per test file }; // List of allowed metadata names let fileMetadataNames = [metadataOptionNames.fileName, metadataOptionNames.emitThisFile, metadataOptionNames.resolveReference]; - let globalMetadataNames = [metadataOptionNames.allowNonTsExtensions, metadataOptionNames.baselineFile, metadataOptionNames.declaration, - metadataOptionNames.mapRoot, metadataOptionNames.module, metadataOptionNames.out, - metadataOptionNames.outDir, metadataOptionNames.sourceMap, metadataOptionNames.sourceRoot]; function convertGlobalOptionsToCompilerOptions(globalOptions: { [idx: string]: string }): ts.CompilerOptions { 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.outDir: - settings.outDir = globalOptions[prop]; - break; - case metadataOptionNames.sourceMap: - settings.sourceMap = globalOptions[prop] === "true"; - break; - case metadataOptionNames.sourceRoot: - settings.sourceRoot = globalOptions[prop]; - break; - } - } - } + + Harness.Compiler.setCompilerOptionForSetting(globalOptions, settings); return settings; } @@ -2495,12 +2443,16 @@ module FourSlash { // 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); @@ -2521,12 +2473,6 @@ module FourSlash { // 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 '==='? diff --git a/src/harness/harness.ts b/src/harness/harness.ts index f5a348a23c9..75e497d4706 100644 --- a/src/harness/harness.ts +++ b/src/harness/harness.ts @@ -913,6 +913,7 @@ module Harness { interface HarnesOptions { useCaseSensitiveFileNames?: boolean; includeBuiltFileNames?: string[]; + baselineFile?: string; } export function setCompilerOptionForSetting(settings: Harness.TestCaseParser.CompilerSettings, options: ts.CompilerOptions & HarnesOptions): void { @@ -1086,6 +1087,14 @@ module Harness { } break; + case "allownontsextensions": + options.allowNonTsExtensions = value === "true"; + break; + + case "baselinefile": + options.baselineFile = settings[name]; + break; + default: throw new Error("Unsupported compiler setting " + value); } From 55d7edf89f3b32cdaf400709b3a47c7407d964d6 Mon Sep 17 00:00:00 2001 From: Mohamed Hegazy Date: Fri, 21 Aug 2015 15:50:31 -0700 Subject: [PATCH 09/56] Rename setCompilerOptionsFromSetting to setCompilerOptionsFromHarnessSetting --- src/harness/fourslash.ts | 2 +- src/harness/harness.ts | 4 ++-- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/src/harness/fourslash.ts b/src/harness/fourslash.ts index c2961f60ab6..ae131b8390f 100644 --- a/src/harness/fourslash.ts +++ b/src/harness/fourslash.ts @@ -127,7 +127,7 @@ module FourSlash { function convertGlobalOptionsToCompilerOptions(globalOptions: { [idx: string]: string }): ts.CompilerOptions { let settings: ts.CompilerOptions = { target: ts.ScriptTarget.ES5 }; - Harness.Compiler.setCompilerOptionForSetting(globalOptions, settings); + Harness.Compiler.setCompilerOptionsFromHarnessSetting(globalOptions, settings); return settings; } diff --git a/src/harness/harness.ts b/src/harness/harness.ts index 741a9e700a0..1e4d1174d90 100644 --- a/src/harness/harness.ts +++ b/src/harness/harness.ts @@ -942,7 +942,7 @@ module Harness { baselineFile?: string; } - export function setCompilerOptionForSetting(settings: Harness.TestCaseParser.CompilerSettings, options: ts.CompilerOptions & HarnesOptions): void { + export function setCompilerOptionsFromHarnessSetting(settings: Harness.TestCaseParser.CompilerSettings, options: ts.CompilerOptions & HarnesOptions): void { for (let name in settings) { if (settings.hasOwnProperty(name)) { let value = settings[name] ? settings[name].toLowerCase() : settings[name]; @@ -1203,7 +1203,7 @@ module Harness { options.skipDefaultLibCheck = true; // Parse settings - setCompilerOptionForSetting(this.settings, options); + 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. From b911dc3faf7ebbcd9ce5df2ef7d4a78a9c35e8cc Mon Sep 17 00:00:00 2001 From: Mohamed Hegazy Date: Fri, 21 Aug 2015 17:17:16 -0700 Subject: [PATCH 10/56] git fix wrong merge --- src/harness/harness.ts | 9 +++------ 1 file changed, 3 insertions(+), 6 deletions(-) diff --git a/src/harness/harness.ts b/src/harness/harness.ts index 1e4d1174d90..e168c9419d5 100644 --- a/src/harness/harness.ts +++ b/src/harness/harness.ts @@ -1213,8 +1213,8 @@ module Harness { includeBuiltFiles.push({ unitName: builtFileName, content: normalizeLineEndings(IO.readFile(builtFileName), newLine) }); }); - let useCaseSensitiveFileNames = options.useCaseSensitiveFileNames !== undefined ? options.useCaseSensitiveFileNames : ts.sys.useCaseSensitiveFileNames; - + let useCaseSensitiveFileNames = options.useCaseSensitiveFileNames !== undefined ? options.useCaseSensitiveFileNames : Harness.IO.useCaseSensitiveFileNames(); + let fileOutputs: GeneratedFile[] = []; let programFiles = inputFiles.concat(includeBuiltFiles).map(file => file.unitName); @@ -1230,13 +1230,10 @@ module Harness { let errors = ts.getPreEmitDiagnostics(program).concat(emitResult.diagnostics); this.lastErrors = errors; - let result = new CompilerResult(fileOutputs, errors, program, ts.sys.getCurrentDirectory(), emitResult.sourceMaps); + let result = new CompilerResult(fileOutputs, errors, program, Harness.IO.getCurrentDirectory(), emitResult.sourceMaps); onComplete(result, program); - // reset what newline means in case the last test changed it - ts.sys.newLine = newLine; return options; - } public compileDeclarationFiles(inputFiles: { unitName: string; content: string; }[], From 60e25a7e1d60c47d71a50fa1ed64dac954c8748a Mon Sep 17 00:00:00 2001 From: Mohamed Hegazy Date: Fri, 21 Aug 2015 19:17:09 -0700 Subject: [PATCH 11/56] use commandlineParser's optionDeclarations to parse compiler options instead of doing it explicitlly --- src/harness/harness.ts | 262 +++++------------- .../compiler/commentInEmptyParameterList1.ts | 2 +- tests/cases/compiler/commentOnClassMethod1.ts | 2 +- .../compiler/commentOnExpressionStatement1.ts | 2 +- tests/cases/compiler/commentOnIfStatement1.ts | 2 +- .../compiler/commentOnImportStatement1.ts | 4 +- .../compiler/commentOnImportStatement2.ts | 4 +- .../compiler/commentOnImportStatement3.ts | 4 +- .../commentOnSimpleArrowFunctionBody1.ts | 2 +- .../commentsBeforeFunctionExpression1.ts | 2 +- .../commentsBeforeVariableStatement1.ts | 4 +- tests/cases/compiler/commentsClass.ts | 2 +- tests/cases/compiler/commentsClassMembers.ts | 2 +- .../cases/compiler/commentsCommentParsing.ts | 2 +- .../compiler/commentsDottedModuleName.ts | 4 +- tests/cases/compiler/commentsEnums.ts | 2 +- .../cases/compiler/commentsExternalModules.ts | 4 +- .../compiler/commentsExternalModules2.ts | 4 +- .../compiler/commentsExternalModules3.ts | 4 +- tests/cases/compiler/commentsFormatting.ts | 2 +- tests/cases/compiler/commentsFunction.ts | 2 +- tests/cases/compiler/commentsInheritance.ts | 2 +- tests/cases/compiler/commentsInterface.ts | 2 +- tests/cases/compiler/commentsModules.ts | 2 +- .../compiler/commentsMultiModuleMultiFile.ts | 4 +- .../compiler/commentsMultiModuleSingleFile.ts | 2 +- .../compiler/commentsOnObjectLiteral1.ts | 2 +- .../compiler/commentsOnObjectLiteral2.ts | 2 +- .../compiler/commentsOnObjectLiteral3.ts | 2 +- .../compiler/commentsOnObjectLiteral4.ts | 2 +- .../compiler/commentsOnReturnStatement1.ts | 2 +- .../cases/compiler/commentsOnStaticMembers.ts | 2 +- tests/cases/compiler/commentsOverloads.ts | 2 +- .../compiler/commentsPropertySignature1.ts | 2 +- .../cases/compiler/commentsTypeParameters.ts | 2 +- tests/cases/compiler/commentsVarDecl.ts | 2 +- .../compiler/commentsVariableStatement1.ts | 2 +- .../compiler/commentsdoNotEmitComments.ts | 2 +- tests/cases/compiler/commentsemitComments.ts | 2 +- .../compiler/constEnumToStringNoComments.ts | 2 +- .../compiler/constEnumToStringWithComments.ts | 2 +- tests/cases/compiler/declFileAccessors.ts | 2 +- .../cases/compiler/declFileCallSignatures.ts | 2 +- .../compiler/declFileConstructSignatures.ts | 2 +- tests/cases/compiler/declFileConstructors.ts | 2 +- tests/cases/compiler/declFileFunctions.ts | 2 +- .../cases/compiler/declFileIndexSignatures.ts | 2 +- tests/cases/compiler/declFileMethods.ts | 2 +- tests/cases/compiler/emitCommentsOnlyFile.ts | 2 +- tests/cases/compiler/emitPostComments.ts | 2 +- tests/cases/compiler/emitPreComments.ts | 2 +- .../cases/compiler/errorWithTruncatedType.ts | 2 +- .../externalModuleWithoutCompilerFlag1.ts | 1 - tests/cases/compiler/lambdaASIEmit.ts | 2 +- tests/cases/compiler/out-flag.ts | 2 +- tests/cases/compiler/pinnedComments1.ts | 2 +- .../compiler/sourceMap-FileWithComments.ts | 2 +- 57 files changed, 127 insertions(+), 264 deletions(-) diff --git a/src/harness/harness.ts b/src/harness/harness.ts index e168c9419d5..213faf365a1 100644 --- a/src/harness/harness.ts +++ b/src/harness/harness.ts @@ -838,9 +838,9 @@ 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; @@ -870,13 +870,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 { @@ -894,7 +894,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))) { @@ -938,200 +938,64 @@ module Harness { interface HarnesOptions { useCaseSensitiveFileNames?: boolean; - includeBuiltFileNames?: string[]; + 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 & HarnesOptions): void { for (let name in settings) { if (settings.hasOwnProperty(name)) { - let value = settings[name] ? settings[name].toLowerCase() : settings[name]; - switch (name.toLowerCase()) { - case "module": - if (value === "amd") { - options.module = ts.ModuleKind.AMD; - } else if (value === "umd") { - options.module = ts.ModuleKind.UMD; - } else if (value === "commonjs") { - options.module = ts.ModuleKind.CommonJS; - } else if (value === "system") { - options.module = ts.ModuleKind.System; - } else if (value === "unspecified") { - options.module = ts.ModuleKind.None; - } else { - throw new Error("Unknown module type " + value); - } - break; - - case "target": - if (value === "es3") { - options.target = ts.ScriptTarget.ES3; - } else if (value === "es5") { - options.target = ts.ScriptTarget.ES5; - } else if (value === "es6") { - options.target = ts.ScriptTarget.ES6; - } else { - throw new Error("Unknown compile target " + value); - } - break; - - case "experimentaldecorators": - options.experimentalDecorators = value === "true"; - break; - - case "emitdecoratormetadata": - options.emitDecoratorMetadata = value === "true"; - break; - - case "experimentalasyncfunctions": - options.experimentalAsyncFunctions = value === "true"; - break; - - case "noemithelpers": - options.noEmitHelpers = value === "true"; - break; - - case "noemitonerror": - options.noEmitOnError = value === "true"; - break; - - case "noresolve": - options.noResolve = value === "true"; - break; - - case "noimplicitany": - options.noImplicitAny = value === "true"; - break; - - case "nolib": - options.noLib = value === "true"; - break; - - case "out": - options.out = settings[name]; - break; - - case "outfile": - options.outFile = settings[name]; - break; - - case "outdir": - options.outDir = settings[name]; - break; - - case "skipdefaultlibcheck": - options.skipDefaultLibCheck = value === "true"; - break; - - case "sourceroot": - options.sourceRoot = settings[name]; - break; - - case "maproot": - options.mapRoot = settings[name]; - break; - - case "sourcemap": - options.sourceMap = value === "true"; - break; - - case "declaration": - options.declaration = value === "true"; - break; - - case "newline": - if (value === "crlf") { - options.newLine = ts.NewLineKind.CarriageReturnLineFeed; - } - else if (value === "lf") { - options.newLine = ts.NewLineKind.LineFeed; - } - else { - throw new Error("Unknown option for newLine: " + value); - } - break; - - case "comments": - options.removeComments = value === "false"; - break; - - case "stripinternal": - options.stripInternal = value === "true"; - break; - - case "usecasesensitivefilenames": - options.useCaseSensitiveFileNames = value === "true"; - break; - - case "filename": - // Not supported yet - break; - - case "emitbom": - options.emitBOM = value === "true"; - break; - - case "errortruncation": - options.noErrorTruncation = value === "false"; - break; - - case "preserveconstenums": - options.preserveConstEnums = value === "true"; - break; - - case "isolatedmodules": - options.isolatedModules = value === "true"; - break; - - case "suppressimplicitanyindexerrors": - options.suppressImplicitAnyIndexErrors = value === "true"; - break; - - case "includebuiltfile": - if (!options.includeBuiltFileNames) { - options.includeBuiltFileNames = []; - } - options.includeBuiltFileNames.push(settings[name]); - break; - - case "inlinesourcemap": - options.inlineSourceMap = value === "true"; - break; - - case "inlinesources": - options.inlineSources = value === "true"; - break; - - case "jsx": - if (value === "react") { - options.jsx = ts.JsxEmit.React; - } - else if (value === "preserve") { - options.jsx = ts.JsxEmit.Preserve; - } - else if (value === "none") { - options.jsx = ts.JsxEmit.None; - } - else { - throw new Error("Unknown option for jsx: " + value); - } - break; - - case "allownontsextensions": - options.allowNonTsExtensions = value === "true"; - break; - - case "baselinefile": - options.baselineFile = settings[name]; - break; - - default: - throw new Error("Unsupported compiler setting " + value); + let value = settings[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(`Unkown value '${value}' for compiler option '${name}'.`); + } + } + } + else { + throw new Error(`Unkown compiler option '${name}'.`); } } } } - + export class HarnessCompiler { private inputFiles: { unitName: string; content: string }[] = []; private compileOptions: ts.CompilerOptions; @@ -1194,13 +1058,13 @@ 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); @@ -1208,10 +1072,10 @@ module Harness { // 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 }[] = []; - ts.forEach(options.includeBuiltFileNames, fileName => { - let builtFileName = libFolder + fileName; + if (options.includeBuiltFile) { + let builtFileName = libFolder + options.includeBuiltFile; includeBuiltFiles.push({ unitName: builtFileName, content: normalizeLineEndings(IO.readFile(builtFileName), newLine) }); - }); + } let useCaseSensitiveFileNames = options.useCaseSensitiveFileNames !== undefined ? options.useCaseSensitiveFileNames : Harness.IO.useCaseSensitiveFileNames(); 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/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/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/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..e6979939ac8 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*/ 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/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/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/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/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/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/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/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/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/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..613efc3aef5 100644 --- a/tests/cases/compiler/pinnedComments1.ts +++ b/tests/cases/compiler/pinnedComments1.ts @@ -1,4 +1,4 @@ -// @comments: false +// @removeComments: true /* unpinned comment */ /*! pinned comment */ 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 { From 9d3907ffbe9f35f17616850188f3d167f01c7a14 Mon Sep 17 00:00:00 2001 From: Daniel Rosenwasser Date: Tue, 1 Sep 2015 16:09:44 -0700 Subject: [PATCH 12/56] Added declaration option to empty destructuring tests. --- .../es6/destructuring/emptyArrayBindingPatternParameter01.ts | 2 +- .../es6/destructuring/emptyArrayBindingPatternParameter02.ts | 2 +- .../es6/destructuring/emptyArrayBindingPatternParameter03.ts | 2 +- .../es6/destructuring/emptyArrayBindingPatternParameter04.ts | 2 +- .../es6/destructuring/emptyAssignmentPatterns01_ES5.ts | 1 + .../es6/destructuring/emptyAssignmentPatterns01_ES6.ts | 1 + .../es6/destructuring/emptyAssignmentPatterns02_ES5.ts | 1 + .../es6/destructuring/emptyAssignmentPatterns02_ES6.ts | 1 + .../es6/destructuring/emptyAssignmentPatterns03_ES5.ts | 1 + .../es6/destructuring/emptyAssignmentPatterns03_ES6.ts | 1 + .../es6/destructuring/emptyAssignmentPatterns04_ES5.ts | 1 + .../es6/destructuring/emptyAssignmentPatterns04_ES6.ts | 1 + .../es6/destructuring/emptyObjectBindingPatternParameter01.ts | 2 +- .../es6/destructuring/emptyObjectBindingPatternParameter02.ts | 2 +- .../es6/destructuring/emptyObjectBindingPatternParameter03.ts | 2 +- .../es6/destructuring/emptyObjectBindingPatternParameter04.ts | 2 +- 16 files changed, 16 insertions(+), 8 deletions(-) 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; From 232e33e8547324dda065402ec9bd94a6ded7a115 Mon Sep 17 00:00:00 2001 From: Daniel Rosenwasser Date: Tue, 1 Sep 2015 17:22:13 -0700 Subject: [PATCH 13/56] Accepted baselines. --- .../emptyArrayBindingPatternParameter01.js | 5 ++++- .../emptyArrayBindingPatternParameter01.symbols | 7 +++---- .../emptyArrayBindingPatternParameter01.types | 1 - .../emptyArrayBindingPatternParameter02.js | 5 ++++- .../emptyArrayBindingPatternParameter02.symbols | 9 ++++----- .../emptyArrayBindingPatternParameter02.types | 1 - .../emptyArrayBindingPatternParameter03.js | 5 ++++- .../emptyArrayBindingPatternParameter03.symbols | 9 ++++----- .../emptyArrayBindingPatternParameter03.types | 1 - .../emptyArrayBindingPatternParameter04.js | 5 ++++- .../emptyArrayBindingPatternParameter04.symbols | 7 +++---- .../emptyArrayBindingPatternParameter04.types | 1 - .../reference/emptyAssignmentPatterns01_ES5.js | 4 ++++ .../reference/emptyAssignmentPatterns01_ES6.js | 4 ++++ .../reference/emptyAssignmentPatterns02_ES5.js | 5 +++++ .../reference/emptyAssignmentPatterns02_ES6.js | 5 +++++ .../reference/emptyAssignmentPatterns03_ES5.js | 4 ++++ .../reference/emptyAssignmentPatterns03_ES6.js | 4 ++++ .../reference/emptyAssignmentPatterns04_ES5.js | 5 +++++ .../reference/emptyAssignmentPatterns04_ES6.js | 5 +++++ .../emptyObjectBindingPatternParameter01.js | 5 ++++- .../emptyObjectBindingPatternParameter01.symbols | 7 +++---- .../emptyObjectBindingPatternParameter01.types | 1 - .../emptyObjectBindingPatternParameter02.js | 5 ++++- .../emptyObjectBindingPatternParameter02.symbols | 9 ++++----- .../emptyObjectBindingPatternParameter02.types | 1 - .../emptyObjectBindingPatternParameter03.js | 5 ++++- .../emptyObjectBindingPatternParameter03.symbols | 9 ++++----- .../emptyObjectBindingPatternParameter03.types | 1 - .../emptyObjectBindingPatternParameter04.js | 9 ++++++++- .../emptyObjectBindingPatternParameter04.symbols | 13 ++++++------- .../emptyObjectBindingPatternParameter04.types | 1 - 32 files changed, 103 insertions(+), 55 deletions(-) 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/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.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 index 9922d4cd074..1b594d9e38a 100644 --- a/tests/baselines/reference/emptyObjectBindingPatternParameter04.symbols +++ b/tests/baselines/reference/emptyObjectBindingPatternParameter04.symbols @@ -1,14 +1,13 @@ === 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)) +>a : Symbol(a, Decl(emptyObjectBindingPatternParameter04.ts, 1, 17)) +>b : Symbol(b, Decl(emptyObjectBindingPatternParameter04.ts, 1, 22)) +>c : Symbol(c, Decl(emptyObjectBindingPatternParameter04.ts, 1, 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)) +>x : Symbol(x, Decl(emptyObjectBindingPatternParameter04.ts, 2, 7)) +>y : Symbol(y, Decl(emptyObjectBindingPatternParameter04.ts, 2, 10)) +>z : Symbol(z, Decl(emptyObjectBindingPatternParameter04.ts, 2, 13)) } diff --git a/tests/baselines/reference/emptyObjectBindingPatternParameter04.types b/tests/baselines/reference/emptyObjectBindingPatternParameter04.types index 5ee32d422a9..fddc23e854a 100644 --- a/tests/baselines/reference/emptyObjectBindingPatternParameter04.types +++ b/tests/baselines/reference/emptyObjectBindingPatternParameter04.types @@ -1,6 +1,5 @@ === 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; } From e3657bccff7726777fc230f0a58116fe65bab465 Mon Sep 17 00:00:00 2001 From: Daniel Rosenwasser Date: Tue, 1 Sep 2015 17:36:20 -0700 Subject: [PATCH 14/56] Added tests. --- ...mptyVariableDeclarationBindingPatterns01_ES5.ts | 14 ++++++++++++++ ...mptyVariableDeclarationBindingPatterns01_ES6.ts | 14 ++++++++++++++ ...mptyVariableDeclarationBindingPatterns02_ES5.ts | 12 ++++++++++++ ...mptyVariableDeclarationBindingPatterns02_ES6.ts | 12 ++++++++++++ 4 files changed, 52 insertions(+) create mode 100644 tests/cases/conformance/es6/destructuring/emptyVariableDeclarationBindingPatterns01_ES5.ts create mode 100644 tests/cases/conformance/es6/destructuring/emptyVariableDeclarationBindingPatterns01_ES6.ts create mode 100644 tests/cases/conformance/es6/destructuring/emptyVariableDeclarationBindingPatterns02_ES5.ts create mode 100644 tests/cases/conformance/es6/destructuring/emptyVariableDeclarationBindingPatterns02_ES6.ts 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..50beb289f60 --- /dev/null +++ b/tests/cases/conformance/es6/destructuring/emptyVariableDeclarationBindingPatterns01_ES5.ts @@ -0,0 +1,14 @@ +// @target: es5 +// @declaration: true + +(function () { + var a: any; + + var {} = a; + let {} = a; + const {} = a; + + var [] = a; + let [] = a; + const [] = a; +})(); \ 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..8fd5beef63b --- /dev/null +++ b/tests/cases/conformance/es6/destructuring/emptyVariableDeclarationBindingPatterns01_ES6.ts @@ -0,0 +1,14 @@ +// @target: es6 +// @declaration: true + +(function () { + var a: any; + + var {} = a; + let {} = a; + const {} = a; + + var [] = a; + let [] = a; + const [] = a; +})(); \ 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 From 906634f0a48e5842d633a9e07178269e47a91bbc Mon Sep 17 00:00:00 2001 From: Daniel Rosenwasser Date: Tue, 1 Sep 2015 17:45:47 -0700 Subject: [PATCH 15/56] Accepted baselines. --- ...ariableDeclarationBindingPatterns01_ES5.js | 27 ++++++++++++++++ ...leDeclarationBindingPatterns01_ES5.symbols | 25 +++++++++++++++ ...ableDeclarationBindingPatterns01_ES5.types | 29 +++++++++++++++++ ...ariableDeclarationBindingPatterns01_ES6.js | 27 ++++++++++++++++ ...leDeclarationBindingPatterns01_ES6.symbols | 25 +++++++++++++++ ...ableDeclarationBindingPatterns01_ES6.types | 29 +++++++++++++++++ ...eclarationBindingPatterns02_ES5.errors.txt | 31 +++++++++++++++++++ ...ariableDeclarationBindingPatterns02_ES5.js | 24 ++++++++++++++ ...eclarationBindingPatterns02_ES6.errors.txt | 31 +++++++++++++++++++ ...ariableDeclarationBindingPatterns02_ES6.js | 24 ++++++++++++++ 10 files changed, 272 insertions(+) create mode 100644 tests/baselines/reference/emptyVariableDeclarationBindingPatterns01_ES5.js create mode 100644 tests/baselines/reference/emptyVariableDeclarationBindingPatterns01_ES5.symbols create mode 100644 tests/baselines/reference/emptyVariableDeclarationBindingPatterns01_ES5.types create mode 100644 tests/baselines/reference/emptyVariableDeclarationBindingPatterns01_ES6.js create mode 100644 tests/baselines/reference/emptyVariableDeclarationBindingPatterns01_ES6.symbols create mode 100644 tests/baselines/reference/emptyVariableDeclarationBindingPatterns01_ES6.types create mode 100644 tests/baselines/reference/emptyVariableDeclarationBindingPatterns02_ES5.errors.txt create mode 100644 tests/baselines/reference/emptyVariableDeclarationBindingPatterns02_ES5.js create mode 100644 tests/baselines/reference/emptyVariableDeclarationBindingPatterns02_ES6.errors.txt create mode 100644 tests/baselines/reference/emptyVariableDeclarationBindingPatterns02_ES6.js diff --git a/tests/baselines/reference/emptyVariableDeclarationBindingPatterns01_ES5.js b/tests/baselines/reference/emptyVariableDeclarationBindingPatterns01_ES5.js new file mode 100644 index 00000000000..2b50bc58dd7 --- /dev/null +++ b/tests/baselines/reference/emptyVariableDeclarationBindingPatterns01_ES5.js @@ -0,0 +1,27 @@ +//// [emptyVariableDeclarationBindingPatterns01_ES5.ts] + +(function () { + var a: any; + + var {} = a; + let {} = a; + const {} = a; + + var [] = a; + let [] = a; + const [] = a; +})(); + +//// [emptyVariableDeclarationBindingPatterns01_ES5.js] +(function () { + var a; + var ; + var ; + var ; + var ; + var ; + var ; +})(); + + +//// [emptyVariableDeclarationBindingPatterns01_ES5.d.ts] diff --git a/tests/baselines/reference/emptyVariableDeclarationBindingPatterns01_ES5.symbols b/tests/baselines/reference/emptyVariableDeclarationBindingPatterns01_ES5.symbols new file mode 100644 index 00000000000..eac59730e49 --- /dev/null +++ b/tests/baselines/reference/emptyVariableDeclarationBindingPatterns01_ES5.symbols @@ -0,0 +1,25 @@ +=== 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)) + +})(); diff --git a/tests/baselines/reference/emptyVariableDeclarationBindingPatterns01_ES5.types b/tests/baselines/reference/emptyVariableDeclarationBindingPatterns01_ES5.types new file mode 100644 index 00000000000..9508ef00a54 --- /dev/null +++ b/tests/baselines/reference/emptyVariableDeclarationBindingPatterns01_ES5.types @@ -0,0 +1,29 @@ +=== 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;})() : void +>(function () { var a: any; var {} = a; let {} = a; const {} = a; var [] = a; let [] = a; const [] = a;}) : () => void +>function () { var a: any; var {} = a; let {} = a; const {} = a; var [] = a; let [] = a; const [] = 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 + +})(); diff --git a/tests/baselines/reference/emptyVariableDeclarationBindingPatterns01_ES6.js b/tests/baselines/reference/emptyVariableDeclarationBindingPatterns01_ES6.js new file mode 100644 index 00000000000..ba08ad93c3c --- /dev/null +++ b/tests/baselines/reference/emptyVariableDeclarationBindingPatterns01_ES6.js @@ -0,0 +1,27 @@ +//// [emptyVariableDeclarationBindingPatterns01_ES6.ts] + +(function () { + var a: any; + + var {} = a; + let {} = a; + const {} = a; + + var [] = a; + let [] = a; + const [] = a; +})(); + +//// [emptyVariableDeclarationBindingPatterns01_ES6.js] +(function () { + var a; + var { } = a; + let { } = a; + const { } = a; + var [] = a; + let [] = a; + const [] = a; +})(); + + +//// [emptyVariableDeclarationBindingPatterns01_ES6.d.ts] diff --git a/tests/baselines/reference/emptyVariableDeclarationBindingPatterns01_ES6.symbols b/tests/baselines/reference/emptyVariableDeclarationBindingPatterns01_ES6.symbols new file mode 100644 index 00000000000..9a8130c87ca --- /dev/null +++ b/tests/baselines/reference/emptyVariableDeclarationBindingPatterns01_ES6.symbols @@ -0,0 +1,25 @@ +=== 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)) + +})(); diff --git a/tests/baselines/reference/emptyVariableDeclarationBindingPatterns01_ES6.types b/tests/baselines/reference/emptyVariableDeclarationBindingPatterns01_ES6.types new file mode 100644 index 00000000000..09c04100695 --- /dev/null +++ b/tests/baselines/reference/emptyVariableDeclarationBindingPatterns01_ES6.types @@ -0,0 +1,29 @@ +=== 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;})() : void +>(function () { var a: any; var {} = a; let {} = a; const {} = a; var [] = a; let [] = a; const [] = a;}) : () => void +>function () { var a: any; var {} = a; let {} = a; const {} = a; var [] = a; let [] = a; const [] = 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 + +})(); 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] From a579d41a57b4b2edcfa92371d41ed2da7fa80e77 Mon Sep 17 00:00:00 2001 From: Mohamed Hegazy Date: Thu, 3 Sep 2015 13:53:00 -0700 Subject: [PATCH 16/56] Do not add symbol if it is undefined --- src/compiler/checker.ts | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/src/compiler/checker.ts b/src/compiler/checker.ts index a7e9561c57f..01403c70de7 100644 --- a/src/compiler/checker.ts +++ b/src/compiler/checker.ts @@ -14166,7 +14166,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; } From 568e4a56014f8e0c5a06e436c37da5c7e153369a Mon Sep 17 00:00:00 2001 From: Wesley Wigham Date: Wed, 2 Sep 2015 18:33:45 -0700 Subject: [PATCH 17/56] sample --- ...genericTypeAliasIntersectionCompletions.ts | 32 +++++++++++++++++++ 1 file changed, 32 insertions(+) create mode 100644 tests/cases/fourslash/genericTypeAliasIntersectionCompletions.ts diff --git a/tests/cases/fourslash/genericTypeAliasIntersectionCompletions.ts b/tests/cases/fourslash/genericTypeAliasIntersectionCompletions.ts new file mode 100644 index 00000000000..7c0fa3e5b17 --- /dev/null +++ b/tests/cases/fourslash/genericTypeAliasIntersectionCompletions.ts @@ -0,0 +1,32 @@ +/// + +//// 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.completionListItemsCountIsGreaterThan(0); From 7a0c28ccc84184763476e9d92915b7dff9de0a6b Mon Sep 17 00:00:00 2001 From: Mohamed Hegazy Date: Thu, 3 Sep 2015 14:11:54 -0700 Subject: [PATCH 18/56] make the test more specific --- .../cases/fourslash/genericTypeAliasIntersectionCompletions.ts | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/tests/cases/fourslash/genericTypeAliasIntersectionCompletions.ts b/tests/cases/fourslash/genericTypeAliasIntersectionCompletions.ts index 7c0fa3e5b17..0b2646291da 100644 --- a/tests/cases/fourslash/genericTypeAliasIntersectionCompletions.ts +++ b/tests/cases/fourslash/genericTypeAliasIntersectionCompletions.ts @@ -29,4 +29,5 @@ //// obj./**/ goTo.marker(); -verify.completionListItemsCountIsGreaterThan(0); +verify.completionListContains("left"); +verify.completionListContains("right"); From 3518ad1723625a4dcf6df0faea6f7a2585038337 Mon Sep 17 00:00:00 2001 From: Daniel Rosenwasser Date: Fri, 4 Sep 2015 12:14:57 -0700 Subject: [PATCH 19/56] Added more test cases. --- ...ariableDeclarationBindingPatterns01_ES5.ts | 34 ++++++++++++++++++- ...ariableDeclarationBindingPatterns01_ES6.ts | 34 ++++++++++++++++++- 2 files changed, 66 insertions(+), 2 deletions(-) diff --git a/tests/cases/conformance/es6/destructuring/emptyVariableDeclarationBindingPatterns01_ES5.ts b/tests/cases/conformance/es6/destructuring/emptyVariableDeclarationBindingPatterns01_ES5.ts index 50beb289f60..dec00737658 100644 --- a/tests/cases/conformance/es6/destructuring/emptyVariableDeclarationBindingPatterns01_ES5.ts +++ b/tests/cases/conformance/es6/destructuring/emptyVariableDeclarationBindingPatterns01_ES5.ts @@ -1,5 +1,4 @@ // @target: es5 -// @declaration: true (function () { var a: any; @@ -11,4 +10,37 @@ 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 () { + 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 index 8fd5beef63b..9f90dc28998 100644 --- a/tests/cases/conformance/es6/destructuring/emptyVariableDeclarationBindingPatterns01_ES6.ts +++ b/tests/cases/conformance/es6/destructuring/emptyVariableDeclarationBindingPatterns01_ES6.ts @@ -1,5 +1,4 @@ // @target: es6 -// @declaration: true (function () { var a: any; @@ -11,4 +10,37 @@ 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 () { + 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 From 9ba2fdaf68427574ad39b2a11f7e1b164418c0e4 Mon Sep 17 00:00:00 2001 From: Daniel Rosenwasser Date: Fri, 4 Sep 2015 12:31:54 -0700 Subject: [PATCH 20/56] Accepted baselines. --- ...ariableDeclarationBindingPatterns01_ES5.js | 65 +++++++++++++++- ...leDeclarationBindingPatterns01_ES5.symbols | 52 +++++++++++++ ...ableDeclarationBindingPatterns01_ES5.types | 74 ++++++++++++++++++- ...ariableDeclarationBindingPatterns01_ES6.js | 59 ++++++++++++++- ...leDeclarationBindingPatterns01_ES6.symbols | 52 +++++++++++++ ...ableDeclarationBindingPatterns01_ES6.types | 74 ++++++++++++++++++- 6 files changed, 364 insertions(+), 12 deletions(-) diff --git a/tests/baselines/reference/emptyVariableDeclarationBindingPatterns01_ES5.js b/tests/baselines/reference/emptyVariableDeclarationBindingPatterns01_ES5.js index 2b50bc58dd7..2c8d1c2f44f 100644 --- a/tests/baselines/reference/emptyVariableDeclarationBindingPatterns01_ES5.js +++ b/tests/baselines/reference/emptyVariableDeclarationBindingPatterns01_ES5.js @@ -10,6 +10,39 @@ 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 () { + 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] @@ -21,7 +54,33 @@ var ; var ; var ; + var , ; + var , ; + var , ; + var _a = a.p1, _b = a.p2; + var _c = a.p1, _d = a.p2; + var _e = a.p1, _f = a.p2; + for (var _g = {}, _h = {}; false; void 0) { + } +})(); +(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]; + } })(); - - -//// [emptyVariableDeclarationBindingPatterns01_ES5.d.ts] diff --git a/tests/baselines/reference/emptyVariableDeclarationBindingPatterns01_ES5.symbols b/tests/baselines/reference/emptyVariableDeclarationBindingPatterns01_ES5.symbols index eac59730e49..f8cc7d2546f 100644 --- a/tests/baselines/reference/emptyVariableDeclarationBindingPatterns01_ES5.symbols +++ b/tests/baselines/reference/emptyVariableDeclarationBindingPatterns01_ES5.symbols @@ -22,4 +22,56 @@ 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 () { + const ns: number[][] = []; +>ns : Symbol(ns, Decl(emptyVariableDeclarationBindingPatterns01_ES5.ts, 25, 9)) + + for (var {} of ns) { +>ns : Symbol(ns, Decl(emptyVariableDeclarationBindingPatterns01_ES5.ts, 25, 9)) + } + + for (let {} of ns) { +>ns : Symbol(ns, Decl(emptyVariableDeclarationBindingPatterns01_ES5.ts, 25, 9)) + } + + for (const {} of ns) { +>ns : Symbol(ns, Decl(emptyVariableDeclarationBindingPatterns01_ES5.ts, 25, 9)) + } + + for (var [] of ns) { +>ns : Symbol(ns, Decl(emptyVariableDeclarationBindingPatterns01_ES5.ts, 25, 9)) + } + + for (let [] of ns) { +>ns : Symbol(ns, Decl(emptyVariableDeclarationBindingPatterns01_ES5.ts, 25, 9)) + } + + for (const [] of ns) { +>ns : Symbol(ns, Decl(emptyVariableDeclarationBindingPatterns01_ES5.ts, 25, 9)) + } })(); diff --git a/tests/baselines/reference/emptyVariableDeclarationBindingPatterns01_ES5.types b/tests/baselines/reference/emptyVariableDeclarationBindingPatterns01_ES5.types index 9508ef00a54..b4e3da1454b 100644 --- a/tests/baselines/reference/emptyVariableDeclarationBindingPatterns01_ES5.types +++ b/tests/baselines/reference/emptyVariableDeclarationBindingPatterns01_ES5.types @@ -1,9 +1,9 @@ === 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;})() : void ->(function () { var a: any; var {} = a; let {} = a; const {} = a; var [] = a; let [] = a; const [] = a;}) : () => void ->function () { var a: any; var {} = a; let {} = a; const {} = a; var [] = a; let [] = a; const [] = 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) { }})() : 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) { }}) : () => 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) { }} : () => void var a: any; >a : any @@ -26,4 +26,72 @@ 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 () { +>(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 index ba08ad93c3c..924303c1976 100644 --- a/tests/baselines/reference/emptyVariableDeclarationBindingPatterns01_ES6.js +++ b/tests/baselines/reference/emptyVariableDeclarationBindingPatterns01_ES6.js @@ -10,6 +10,39 @@ 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 () { + 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] @@ -21,7 +54,27 @@ 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 () { + 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) { + } })(); - - -//// [emptyVariableDeclarationBindingPatterns01_ES6.d.ts] diff --git a/tests/baselines/reference/emptyVariableDeclarationBindingPatterns01_ES6.symbols b/tests/baselines/reference/emptyVariableDeclarationBindingPatterns01_ES6.symbols index 9a8130c87ca..d158e3a4891 100644 --- a/tests/baselines/reference/emptyVariableDeclarationBindingPatterns01_ES6.symbols +++ b/tests/baselines/reference/emptyVariableDeclarationBindingPatterns01_ES6.symbols @@ -22,4 +22,56 @@ 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 () { + const ns: number[][] = []; +>ns : Symbol(ns, Decl(emptyVariableDeclarationBindingPatterns01_ES6.ts, 25, 9)) + + for (var {} of ns) { +>ns : Symbol(ns, Decl(emptyVariableDeclarationBindingPatterns01_ES6.ts, 25, 9)) + } + + for (let {} of ns) { +>ns : Symbol(ns, Decl(emptyVariableDeclarationBindingPatterns01_ES6.ts, 25, 9)) + } + + for (const {} of ns) { +>ns : Symbol(ns, Decl(emptyVariableDeclarationBindingPatterns01_ES6.ts, 25, 9)) + } + + for (var [] of ns) { +>ns : Symbol(ns, Decl(emptyVariableDeclarationBindingPatterns01_ES6.ts, 25, 9)) + } + + for (let [] of ns) { +>ns : Symbol(ns, Decl(emptyVariableDeclarationBindingPatterns01_ES6.ts, 25, 9)) + } + + for (const [] of ns) { +>ns : Symbol(ns, Decl(emptyVariableDeclarationBindingPatterns01_ES6.ts, 25, 9)) + } })(); diff --git a/tests/baselines/reference/emptyVariableDeclarationBindingPatterns01_ES6.types b/tests/baselines/reference/emptyVariableDeclarationBindingPatterns01_ES6.types index 09c04100695..e8dd5025288 100644 --- a/tests/baselines/reference/emptyVariableDeclarationBindingPatterns01_ES6.types +++ b/tests/baselines/reference/emptyVariableDeclarationBindingPatterns01_ES6.types @@ -1,9 +1,9 @@ === 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;})() : void ->(function () { var a: any; var {} = a; let {} = a; const {} = a; var [] = a; let [] = a; const [] = a;}) : () => void ->function () { var a: any; var {} = a; let {} = a; const {} = a; var [] = a; let [] = a; const [] = 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) { }})() : 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) { }}) : () => 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) { }} : () => void var a: any; >a : any @@ -26,4 +26,72 @@ 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 () { +>(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[][] + } })(); From 97b846c444843c3c2c1bdad332c7d0407fcea5df Mon Sep 17 00:00:00 2001 From: Vladimir Matveev Date: Fri, 4 Sep 2015 10:53:33 -0700 Subject: [PATCH 21/56] handle jsx identifiers correctly, indent content of JsxSelfClosingElement --- src/services/formatting/formattingScanner.ts | 25 ++++++- src/services/formatting/smartIndenter.ts | 1 + .../cases/fourslash/formattingJsxElements.ts | 70 ++++++++++++++++++- 3 files changed, 92 insertions(+), 4 deletions(-) diff --git a/src/services/formatting/formattingScanner.ts b/src/services/formatting/formattingScanner.ts index 7e77878051c..6f6167d6ba9 100644 --- a/src/services/formatting/formattingScanner.ts +++ b/src/services/formatting/formattingScanner.ts @@ -17,7 +17,8 @@ namespace ts.formatting { Scan, RescanGreaterThanToken, RescanSlashToken, - RescanTemplateToken + RescanTemplateToken, + RescanJsxIdentifier } export function getFormattingScanner(sourceFile: SourceFile, startPos: number, endPos: number): FormattingScanner { @@ -108,6 +109,20 @@ namespace ts.formatting { return false; } + + function shouldRescanJsxIdentifier(node: Node): boolean { + if (node.parent) { + switch(node.parent.kind) { + case SyntaxKind.JsxAttribute: + case SyntaxKind.JsxOpeningElement: + case SyntaxKind.JsxClosingElement: + case SyntaxKind.JsxSelfClosingElement: + return node.kind === SyntaxKind.Identifier; + } + } + + return false; + } function shouldRescanSlashToken(container: Node): boolean { return container.kind === SyntaxKind.RegularExpressionLiteral; @@ -141,7 +156,9 @@ namespace ts.formatting { ? ScanAction.RescanSlashToken : shouldRescanTemplateToken(n) ? ScanAction.RescanTemplateToken - : ScanAction.Scan + : shouldRescanJsxIdentifier(n) + ? ScanAction.RescanJsxIdentifier + : ScanAction.Scan if (lastTokenInfo && expectedScanAction === lastScanAction) { // readTokenInfo was called before with the same expected scan action. @@ -176,6 +193,10 @@ namespace ts.formatting { currentToken = scanner.reScanTemplateToken(); lastScanAction = ScanAction.RescanTemplateToken; } + else if (expectedScanAction === ScanAction.RescanJsxIdentifier && currentToken === SyntaxKind.Identifier) { + currentToken = scanner.scanJsxIdentifier(); + lastScanAction = ScanAction.RescanJsxIdentifier; + } else { lastScanAction = ScanAction.Scan; } diff --git a/src/services/formatting/smartIndenter.ts b/src/services/formatting/smartIndenter.ts index 9c19e32ab6f..8355fac03f5 100644 --- a/src/services/formatting/smartIndenter.ts +++ b/src/services/formatting/smartIndenter.ts @@ -431,6 +431,7 @@ namespace ts.formatting { case SyntaxKind.ArrayBindingPattern: case SyntaxKind.ObjectBindingPattern: case SyntaxKind.JsxElement: + case SyntaxKind.JsxSelfClosingElement: case SyntaxKind.MethodSignature: case SyntaxKind.CallSignature: case SyntaxKind.ConstructSignature: diff --git a/tests/cases/fourslash/formattingJsxElements.ts b/tests/cases/fourslash/formattingJsxElements.ts index d0c77804ed5..fd4ccc504a4 100644 --- a/tests/cases/fourslash/formattingJsxElements.ts +++ b/tests/cases/fourslash/formattingJsxElements.ts @@ -1,7 +1,7 @@ /// //@Filename: file.tsx -////function () { +////function foo0() { //// return ( ////
////Hello, World!/*autoformat*/ @@ -10,10 +10,76 @@ //// ) ////} //// +////function foo1() { +//// return ( +////
+////Hello, World!/*autoformat1*/ +/////*indent1*/ +////
+//// ) +////} +//// +////function foo2() { +//// return ( +////
/*2*/ +////Hello, World!/*autoformat2*/ +/////*indent2*/ +////
+//// ) +////} +////function foo3() { +//// return ( +//// /*4*/ +//// Hello, World!/*autoformat3*/ +//// /*indent3*/ +//// +//// ) +////} +////function foo4() { +//// return ( +//// /*6*/ +//// ) +////} format.document(); goTo.marker("autoformat"); verify.currentLineContentIs(' Hello, World!'); goTo.marker("indent"); -verify.indentationIs(12); \ No newline at end of file +verify.indentationIs(12); + +goTo.marker("autoformat1"); +verify.currentLineContentIs(' Hello, World!'); +goTo.marker("indent1"); +verify.indentationIs(12); + +goTo.marker("1"); +verify.currentLineContentIs(' class1= {'); +goTo.marker("2"); +verify.currentLineContentIs(' }>'); + +goTo.marker("autoformat2"); +verify.currentLineContentIs(' Hello, World!'); +goTo.marker("indent2"); +verify.indentationIs(12); + +goTo.marker("3"); +verify.currentLineContentIs(' class2= {'); +goTo.marker("4"); +verify.currentLineContentIs(' }>'); + +goTo.marker("autoformat3"); +verify.currentLineContentIs(' Hello, World!'); +goTo.marker("indent3"); +verify.indentationIs(12); + +goTo.marker("5"); +verify.currentLineContentIs(' class3= {'); +goTo.marker("6"); +verify.currentLineContentIs(' }/>'); From 5297a7f319d1c76b07f995418e25600eda974a9a Mon Sep 17 00:00:00 2001 From: Daniel Rosenwasser Date: Fri, 4 Sep 2015 17:53:56 -0700 Subject: [PATCH 22/56] Ensure that zero-element binding patterns don't try to reuse assigned identifiers. --- src/compiler/emitter.ts | 59 ++++++++++++++++++++++++++--------------- 1 file changed, 37 insertions(+), 22 deletions(-) diff --git a/src/compiler/emitter.ts b/src/compiler/emitter.ts index eeaab6d2123..485181a91cc 100644 --- a/src/compiler/emitter.ts +++ b/src/compiler/emitter.ts @@ -3210,22 +3210,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; @@ -3276,7 +3286,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) { @@ -3291,7 +3301,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]; @@ -3336,7 +3346,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); @@ -3346,7 +3356,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; @@ -3356,14 +3366,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 @@ -3375,7 +3390,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)); } } From 8952ed66b2e3ba78d64e8399384dd55ecfccabd8 Mon Sep 17 00:00:00 2001 From: Daniel Rosenwasser Date: Fri, 4 Sep 2015 17:57:06 -0700 Subject: [PATCH 23/56] Accepted baselines. --- ...ariableDeclarationBindingPatterns01_ES5.js | 26 +++++++++---------- 1 file changed, 13 insertions(+), 13 deletions(-) diff --git a/tests/baselines/reference/emptyVariableDeclarationBindingPatterns01_ES5.js b/tests/baselines/reference/emptyVariableDeclarationBindingPatterns01_ES5.js index 2c8d1c2f44f..9ce2a04dad4 100644 --- a/tests/baselines/reference/emptyVariableDeclarationBindingPatterns01_ES5.js +++ b/tests/baselines/reference/emptyVariableDeclarationBindingPatterns01_ES5.js @@ -48,19 +48,19 @@ //// [emptyVariableDeclarationBindingPatterns01_ES5.js] (function () { var a; - var ; - var ; - var ; - var ; - var ; - var ; - var , ; - var , ; - var , ; - var _a = a.p1, _b = a.p2; - var _c = a.p1, _d = a.p2; - var _e = a.p1, _f = a.p2; - for (var _g = {}, _h = {}; false; void 0) { + 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 () { From 8a38a1e4b9d67181d91b21f1ffc1879e42106b72 Mon Sep 17 00:00:00 2001 From: Mohamed Hegazy Date: Tue, 8 Sep 2015 12:26:29 -0700 Subject: [PATCH 24/56] Change typescript.d.ts to be an external module instead of an ambient external module declaration --- Jakefile.js | 15 ++++++++++++--- lib/typescript.d.ts | 18 ++++++++++-------- tests/cases/compiler/APISample_compile.ts | 2 +- tests/cases/compiler/APISample_linter.ts | 2 +- tests/cases/compiler/APISample_transform.ts | 2 +- tests/cases/compiler/APISample_watcher.ts | 2 +- 6 files changed, 26 insertions(+), 15 deletions(-) diff --git a/Jakefile.js b/Jakefile.js index ea13cce6685..96c2b44c088 100644 --- a/Jakefile.js +++ b/Jakefile.js @@ -394,6 +394,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 +411,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); }); diff --git a/lib/typescript.d.ts b/lib/typescript.d.ts index bf0510cf1c8..5e6492cfe1e 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; } @@ -1405,7 +1405,7 @@ declare module "typescript" { newLength: number; } } -declare module "typescript" { +declare namespace ts { interface System { args: string[]; newLine: string; @@ -1429,7 +1429,7 @@ declare module "typescript" { } var sys: System; } -declare module "typescript" { +declare namespace ts { interface ErrorCallback { (message: DiagnosticMessage, length: number): void; } @@ -1474,7 +1474,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,14 +1504,14 @@ 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; @@ -1524,7 +1524,7 @@ declare module "typescript" { 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 @@ -1551,7 +1551,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 { @@ -2139,3 +2139,5 @@ declare module "typescript" { */ function getDefaultLibFilePath(options: CompilerOptions): string; } + +export = ts; \ No newline at end of file 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 /* From 5aa17cd671ff56bc9a97f62a76191d640196c17d Mon Sep 17 00:00:00 2001 From: Daniel Rosenwasser Date: Wed, 9 Sep 2015 12:47:31 -0700 Subject: [PATCH 25/56] Added tests for parameter initializers. --- .../emptyVariableDeclarationBindingPatterns01_ES5.ts | 4 ++++ .../emptyVariableDeclarationBindingPatterns01_ES6.ts | 4 ++++ 2 files changed, 8 insertions(+) diff --git a/tests/cases/conformance/es6/destructuring/emptyVariableDeclarationBindingPatterns01_ES5.ts b/tests/cases/conformance/es6/destructuring/emptyVariableDeclarationBindingPatterns01_ES5.ts index dec00737658..bc7a729fd1e 100644 --- a/tests/cases/conformance/es6/destructuring/emptyVariableDeclarationBindingPatterns01_ES5.ts +++ b/tests/cases/conformance/es6/destructuring/emptyVariableDeclarationBindingPatterns01_ES5.ts @@ -21,6 +21,10 @@ for (var {} = {}, {} = {}; false; void 0) { } + + function f({} = a, [] = a, { p: {} = a} = a) { + return ({} = a, [] = a, { p: {} = a } = a) => a; + } })(); (function () { diff --git a/tests/cases/conformance/es6/destructuring/emptyVariableDeclarationBindingPatterns01_ES6.ts b/tests/cases/conformance/es6/destructuring/emptyVariableDeclarationBindingPatterns01_ES6.ts index 9f90dc28998..9f2a9905480 100644 --- a/tests/cases/conformance/es6/destructuring/emptyVariableDeclarationBindingPatterns01_ES6.ts +++ b/tests/cases/conformance/es6/destructuring/emptyVariableDeclarationBindingPatterns01_ES6.ts @@ -21,6 +21,10 @@ for (var {} = {}, {} = {}; false; void 0) { } + + function f({} = a, [] = a, { p: {} = a} = a) { + return ({} = a, [] = a, { p: {} = a } = a) => a; + } })(); (function () { From fb889bee4ee5b4cba2083b12ae878e4833bd2dfd Mon Sep 17 00:00:00 2001 From: Daniel Rosenwasser Date: Wed, 9 Sep 2015 13:05:39 -0700 Subject: [PATCH 26/56] Accepted baselines. --- ...ariableDeclarationBindingPatterns01_ES5.js | 15 ++++++++++ ...leDeclarationBindingPatterns01_ES5.symbols | 29 ++++++++++++++----- ...ableDeclarationBindingPatterns01_ES5.types | 24 +++++++++++++-- ...ariableDeclarationBindingPatterns01_ES6.js | 7 +++++ ...leDeclarationBindingPatterns01_ES6.symbols | 29 ++++++++++++++----- ...ableDeclarationBindingPatterns01_ES6.types | 24 +++++++++++++-- 6 files changed, 108 insertions(+), 20 deletions(-) diff --git a/tests/baselines/reference/emptyVariableDeclarationBindingPatterns01_ES5.js b/tests/baselines/reference/emptyVariableDeclarationBindingPatterns01_ES5.js index 9ce2a04dad4..11c4f4e1807 100644 --- a/tests/baselines/reference/emptyVariableDeclarationBindingPatterns01_ES5.js +++ b/tests/baselines/reference/emptyVariableDeclarationBindingPatterns01_ES5.js @@ -21,6 +21,10 @@ for (var {} = {}, {} = {}; false; void 0) { } + + function f({} = a, [] = a, { p: {} = a} = a) { + return ({} = a, [] = a, { p: {} = a } = a) => a; + } })(); (function () { @@ -62,6 +66,17 @@ 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 = []; diff --git a/tests/baselines/reference/emptyVariableDeclarationBindingPatterns01_ES5.symbols b/tests/baselines/reference/emptyVariableDeclarationBindingPatterns01_ES5.symbols index f8cc7d2546f..ddba9738e08 100644 --- a/tests/baselines/reference/emptyVariableDeclarationBindingPatterns01_ES5.symbols +++ b/tests/baselines/reference/emptyVariableDeclarationBindingPatterns01_ES5.symbols @@ -45,33 +45,48 @@ 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, 25, 9)) +>ns : Symbol(ns, Decl(emptyVariableDeclarationBindingPatterns01_ES5.ts, 29, 9)) for (var {} of ns) { ->ns : Symbol(ns, Decl(emptyVariableDeclarationBindingPatterns01_ES5.ts, 25, 9)) +>ns : Symbol(ns, Decl(emptyVariableDeclarationBindingPatterns01_ES5.ts, 29, 9)) } for (let {} of ns) { ->ns : Symbol(ns, Decl(emptyVariableDeclarationBindingPatterns01_ES5.ts, 25, 9)) +>ns : Symbol(ns, Decl(emptyVariableDeclarationBindingPatterns01_ES5.ts, 29, 9)) } for (const {} of ns) { ->ns : Symbol(ns, Decl(emptyVariableDeclarationBindingPatterns01_ES5.ts, 25, 9)) +>ns : Symbol(ns, Decl(emptyVariableDeclarationBindingPatterns01_ES5.ts, 29, 9)) } for (var [] of ns) { ->ns : Symbol(ns, Decl(emptyVariableDeclarationBindingPatterns01_ES5.ts, 25, 9)) +>ns : Symbol(ns, Decl(emptyVariableDeclarationBindingPatterns01_ES5.ts, 29, 9)) } for (let [] of ns) { ->ns : Symbol(ns, Decl(emptyVariableDeclarationBindingPatterns01_ES5.ts, 25, 9)) +>ns : Symbol(ns, Decl(emptyVariableDeclarationBindingPatterns01_ES5.ts, 29, 9)) } for (const [] of ns) { ->ns : Symbol(ns, Decl(emptyVariableDeclarationBindingPatterns01_ES5.ts, 25, 9)) +>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 index b4e3da1454b..ed6b935db0f 100644 --- a/tests/baselines/reference/emptyVariableDeclarationBindingPatterns01_ES5.types +++ b/tests/baselines/reference/emptyVariableDeclarationBindingPatterns01_ES5.types @@ -1,9 +1,9 @@ === 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) { }})() : 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) { }}) : () => 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) { }} : () => 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 +>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 @@ -60,6 +60,24 @@ >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 () { diff --git a/tests/baselines/reference/emptyVariableDeclarationBindingPatterns01_ES6.js b/tests/baselines/reference/emptyVariableDeclarationBindingPatterns01_ES6.js index 924303c1976..1303ab1e3d0 100644 --- a/tests/baselines/reference/emptyVariableDeclarationBindingPatterns01_ES6.js +++ b/tests/baselines/reference/emptyVariableDeclarationBindingPatterns01_ES6.js @@ -21,6 +21,10 @@ for (var {} = {}, {} = {}; false; void 0) { } + + function f({} = a, [] = a, { p: {} = a} = a) { + return ({} = a, [] = a, { p: {} = a } = a) => a; + } })(); (function () { @@ -62,6 +66,9 @@ 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 = []; diff --git a/tests/baselines/reference/emptyVariableDeclarationBindingPatterns01_ES6.symbols b/tests/baselines/reference/emptyVariableDeclarationBindingPatterns01_ES6.symbols index d158e3a4891..6a826d4b6c9 100644 --- a/tests/baselines/reference/emptyVariableDeclarationBindingPatterns01_ES6.symbols +++ b/tests/baselines/reference/emptyVariableDeclarationBindingPatterns01_ES6.symbols @@ -45,33 +45,48 @@ 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, 25, 9)) +>ns : Symbol(ns, Decl(emptyVariableDeclarationBindingPatterns01_ES6.ts, 29, 9)) for (var {} of ns) { ->ns : Symbol(ns, Decl(emptyVariableDeclarationBindingPatterns01_ES6.ts, 25, 9)) +>ns : Symbol(ns, Decl(emptyVariableDeclarationBindingPatterns01_ES6.ts, 29, 9)) } for (let {} of ns) { ->ns : Symbol(ns, Decl(emptyVariableDeclarationBindingPatterns01_ES6.ts, 25, 9)) +>ns : Symbol(ns, Decl(emptyVariableDeclarationBindingPatterns01_ES6.ts, 29, 9)) } for (const {} of ns) { ->ns : Symbol(ns, Decl(emptyVariableDeclarationBindingPatterns01_ES6.ts, 25, 9)) +>ns : Symbol(ns, Decl(emptyVariableDeclarationBindingPatterns01_ES6.ts, 29, 9)) } for (var [] of ns) { ->ns : Symbol(ns, Decl(emptyVariableDeclarationBindingPatterns01_ES6.ts, 25, 9)) +>ns : Symbol(ns, Decl(emptyVariableDeclarationBindingPatterns01_ES6.ts, 29, 9)) } for (let [] of ns) { ->ns : Symbol(ns, Decl(emptyVariableDeclarationBindingPatterns01_ES6.ts, 25, 9)) +>ns : Symbol(ns, Decl(emptyVariableDeclarationBindingPatterns01_ES6.ts, 29, 9)) } for (const [] of ns) { ->ns : Symbol(ns, Decl(emptyVariableDeclarationBindingPatterns01_ES6.ts, 25, 9)) +>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 index e8dd5025288..fcb48048148 100644 --- a/tests/baselines/reference/emptyVariableDeclarationBindingPatterns01_ES6.types +++ b/tests/baselines/reference/emptyVariableDeclarationBindingPatterns01_ES6.types @@ -1,9 +1,9 @@ === 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) { }})() : 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) { }}) : () => 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) { }} : () => 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 +>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 @@ -60,6 +60,24 @@ >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 () { From ee56e60ca0772f292f604f85555a271dfc21095c Mon Sep 17 00:00:00 2001 From: Vladimir Matveev Date: Tue, 8 Sep 2015 18:40:30 -0700 Subject: [PATCH 27/56] do not emit '=' in jsx attribute if initializer is missing --- src/compiler/emitter.ts | 6 ++++-- .../reference/jsxEmitAttributeWithPreserve.js | 7 +++++++ .../reference/jsxEmitAttributeWithPreserve.symbols | 8 ++++++++ .../reference/jsxEmitAttributeWithPreserve.types | 10 ++++++++++ .../baselines/reference/jsxInvalidEsprimaTestSuite.js | 6 +++--- tests/baselines/reference/jsxReactTestSuite.js | 4 ++-- tests/baselines/reference/tsxAttributeResolution6.js | 6 +++--- .../reference/tsxGenericArrowFunctionParsing.js | 2 +- tests/cases/compiler/jsxEmitAttributeWithPreserve.tsx | 4 ++++ 9 files changed, 42 insertions(+), 11 deletions(-) create mode 100644 tests/baselines/reference/jsxEmitAttributeWithPreserve.js create mode 100644 tests/baselines/reference/jsxEmitAttributeWithPreserve.symbols create mode 100644 tests/baselines/reference/jsxEmitAttributeWithPreserve.types create mode 100644 tests/cases/compiler/jsxEmitAttributeWithPreserve.tsx diff --git a/src/compiler/emitter.ts b/src/compiler/emitter.ts index 54c308217da..2d5bda1bba2 100644 --- a/src/compiler/emitter.ts +++ b/src/compiler/emitter.ts @@ -1292,8 +1292,10 @@ var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, Promi function jsxEmitPreserve(node: JsxElement|JsxSelfClosingElement) { function emitJsxAttribute(node: JsxAttribute) { emit(node.name); - write("="); - emit(node.initializer); + if (node.initializer) { + write("="); + emit(node.initializer); + } } function emitJsxSpreadAttribute(node: JsxSpreadAttribute) { diff --git a/tests/baselines/reference/jsxEmitAttributeWithPreserve.js b/tests/baselines/reference/jsxEmitAttributeWithPreserve.js new file mode 100644 index 00000000000..07cb0dee485 --- /dev/null +++ b/tests/baselines/reference/jsxEmitAttributeWithPreserve.js @@ -0,0 +1,7 @@ +//// [jsxEmitAttributeWithPreserve.tsx] + +declare var React: any; + + +//// [jsxEmitAttributeWithPreserve.jsx] +; diff --git a/tests/baselines/reference/jsxEmitAttributeWithPreserve.symbols b/tests/baselines/reference/jsxEmitAttributeWithPreserve.symbols new file mode 100644 index 00000000000..4ffadb8e888 --- /dev/null +++ b/tests/baselines/reference/jsxEmitAttributeWithPreserve.symbols @@ -0,0 +1,8 @@ +=== tests/cases/compiler/jsxEmitAttributeWithPreserve.tsx === + +declare var React: any; +>React : Symbol(React, Decl(jsxEmitAttributeWithPreserve.tsx, 1, 11)) + + +>data : Symbol(unknown) + diff --git a/tests/baselines/reference/jsxEmitAttributeWithPreserve.types b/tests/baselines/reference/jsxEmitAttributeWithPreserve.types new file mode 100644 index 00000000000..972ca1c3d88 --- /dev/null +++ b/tests/baselines/reference/jsxEmitAttributeWithPreserve.types @@ -0,0 +1,10 @@ +=== tests/cases/compiler/jsxEmitAttributeWithPreserve.tsx === + +declare var React: any; +>React : any + + +> : any +>foo : any +>data : any + diff --git a/tests/baselines/reference/jsxInvalidEsprimaTestSuite.js b/tests/baselines/reference/jsxInvalidEsprimaTestSuite.js index daf344b08da..d623e127be7 100644 --- a/tests/baselines/reference/jsxInvalidEsprimaTestSuite.js +++ b/tests/baselines/reference/jsxInvalidEsprimaTestSuite.js @@ -47,9 +47,9 @@ a / > ; < a; b > ; b > ; -; +; b.c > ; -; +; c > ; ; < .a > ; @@ -67,7 +67,7 @@ var x =
one
two
;; var x =
one
/* intervening comment */ /* intervening comment */
two
;; {"str"}}; id="b" />; -
>; +
>;
;
stuff
...props}>; diff --git a/tests/baselines/reference/jsxReactTestSuite.js b/tests/baselines/reference/jsxReactTestSuite.js index 300274a1614..18013d4be9b 100644 --- a/tests/baselines/reference/jsxReactTestSuite.js +++ b/tests/baselines/reference/jsxReactTestSuite.js @@ -158,14 +158,14 @@ var x =
; ; ; -; +; ; ; ; ; ; ; -; +; ; ; Text; diff --git a/tests/baselines/reference/tsxAttributeResolution6.js b/tests/baselines/reference/tsxAttributeResolution6.js index f4af0ba875a..5d6ad1e20c6 100644 --- a/tests/baselines/reference/tsxAttributeResolution6.js +++ b/tests/baselines/reference/tsxAttributeResolution6.js @@ -20,10 +20,10 @@ declare module JSX { //// [tsxAttributeResolution6.jsx] // Error -; +; ; ; // OK -; +; ; -; +; diff --git a/tests/baselines/reference/tsxGenericArrowFunctionParsing.js b/tests/baselines/reference/tsxGenericArrowFunctionParsing.js index f493347ca9c..ece48831f8e 100644 --- a/tests/baselines/reference/tsxGenericArrowFunctionParsing.js +++ b/tests/baselines/reference/tsxGenericArrowFunctionParsing.js @@ -42,5 +42,5 @@ x3(); var x4 = () => ; x4.isElement; // This is an element -var x5 = () => ; +var x5 = () => ; x5.isElement; diff --git a/tests/cases/compiler/jsxEmitAttributeWithPreserve.tsx b/tests/cases/compiler/jsxEmitAttributeWithPreserve.tsx new file mode 100644 index 00000000000..dc32ef7a0ca --- /dev/null +++ b/tests/cases/compiler/jsxEmitAttributeWithPreserve.tsx @@ -0,0 +1,4 @@ +//@jsx: preserve + +declare var React: any; + \ No newline at end of file From 7e1739604a81b9f18ee43b96b1801e9cbfda10bb Mon Sep 17 00:00:00 2001 From: Mohamed Hegazy Date: Thu, 10 Sep 2015 13:24:45 -0700 Subject: [PATCH 28/56] Fix #4727: prerocess `export import` declarations correctelly --- src/services/services.ts | 20 +++++++++++++++++++ .../unittests/services/preProcessFile.ts | 14 +++++++++++++ 2 files changed, 34 insertions(+) diff --git a/src/services/services.ts b/src/services/services.ts index b174f240875..58f59843078 100644 --- a/src/services/services.ts +++ b/src/services/services.ts @@ -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(); } diff --git a/tests/cases/unittests/services/preProcessFile.ts b/tests/cases/unittests/services/preProcessFile.ts index 982c45f0f2d..7b645069212 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 handeles export import declarations", function () { + test("export import a = require(\"m1\");", + true, + { + referencedFiles: [], + importedFiles: [ + { fileName: "m1", pos: 26, end: 28 } + ], + ambientExternalModules: undefined, + isLibFile: false + }) + }); + }); }); From fae7a129eb91e66d7a32bbfddfec1d0c24ce66dc Mon Sep 17 00:00:00 2001 From: Daniel Rosenwasser Date: Thu, 10 Sep 2015 13:50:12 -0700 Subject: [PATCH 29/56] Assert condition to track root cause of issue. --- src/compiler/commandLineParser.ts | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/src/compiler/commandLineParser.ts b/src/compiler/commandLineParser.ts index c56a18b3ab2..c9df1747999 100644 --- a/src/compiler/commandLineParser.ts +++ b/src/compiler/commandLineParser.ts @@ -326,9 +326,12 @@ namespace ts { if (hasProperty(map, key)) { options[opt.name] = map[key]; } - else { + else if (opt.error) { errors.push(createCompilerDiagnostic(opt.error)); } + else { + Debug.fail(`Command line option for '${opt.name}' doesn't account for invalid options.`); + } } } else { From c18051d5fff0ed5e2f0904a81b6eed28f7bc7368 Mon Sep 17 00:00:00 2001 From: Mohamed Hegazy Date: Thu, 10 Sep 2015 14:22:31 -0700 Subject: [PATCH 30/56] Update version to 1.6.2 --- package.json | 2 +- src/compiler/program.ts | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/package.json b/package.json index abd81e12f47..8ce9989b617 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.6.2", "license": "Apache-2.0", "description": "TypeScript is a language for application scale JavaScript development", "keywords": [ diff --git a/src/compiler/program.ts b/src/compiler/program.ts index a1861f6b462..c239b18efb7 100644 --- a/src/compiler/program.ts +++ b/src/compiler/program.ts @@ -12,7 +12,7 @@ namespace ts { let emptyArray: any[] = []; - export const version = "1.6.0"; + export const version = "1.6.2"; export function findConfigFile(searchPath: string): string { let fileName = "tsconfig.json"; From 4b15c5f6281f6022eda2433382bbc19dc225b1cc Mon Sep 17 00:00:00 2001 From: Daniel Rosenwasser Date: Thu, 10 Sep 2015 14:23:33 -0700 Subject: [PATCH 31/56] Added error for bad argument, fixed diagnostic for '--help' message. --- src/compiler/commandLineParser.ts | 5 +++-- src/compiler/diagnosticInformationMap.generated.ts | 3 ++- src/compiler/diagnosticMessages.json | 7 ++++++- 3 files changed, 11 insertions(+), 4 deletions(-) diff --git a/src/compiler/commandLineParser.ts b/src/compiler/commandLineParser.ts index c9df1747999..93153e5fddb 100644 --- a/src/compiler/commandLineParser.ts +++ b/src/compiler/commandLineParser.ts @@ -243,8 +243,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 */ diff --git a/src/compiler/diagnosticInformationMap.generated.ts b/src/compiler/diagnosticInformationMap.generated.ts index f7351bf6912..1c9232d1515 100644 --- a/src/compiler/diagnosticInformationMap.generated.ts +++ b/src/compiler/diagnosticInformationMap.generated.ts @@ -560,13 +560,14 @@ namespace ts { 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'." }, + Argument_for_moduleResolution_option_must_be_node_or_classic: { code: 6063, category: DiagnosticCategory.Error, key: "Argument for '--moduleResolution' option must be 'node' or 'classic'." }, 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) ." }, + Specifies_module_resolution_strategy_Colon_node_Node_js_or_classic_TypeScript_pre_1_6: { code: 6069, category: 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: 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." }, diff --git a/src/compiler/diagnosticMessages.json b/src/compiler/diagnosticMessages.json index 9fd08ef9bca..f6875c45c47 100644 --- a/src/compiler/diagnosticMessages.json +++ b/src/compiler/diagnosticMessages.json @@ -2230,6 +2230,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 @@ -2254,7 +2259,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 }, From 535efd1b5de9cf86a6bf04a4a003f01c5c0d215b Mon Sep 17 00:00:00 2001 From: Daniel Rosenwasser Date: Thu, 10 Sep 2015 14:23:56 -0700 Subject: [PATCH 32/56] Encode the conditional presence of 'error' in the type system. --- src/compiler/commandLineParser.ts | 7 ++----- src/compiler/types.ts | 17 +++++++++++++++-- 2 files changed, 17 insertions(+), 7 deletions(-) diff --git a/src/compiler/commandLineParser.ts b/src/compiler/commandLineParser.ts index 93153e5fddb..9b7558f315a 100644 --- a/src/compiler/commandLineParser.ts +++ b/src/compiler/commandLineParser.ts @@ -327,11 +327,8 @@ namespace ts { if (hasProperty(map, key)) { options[opt.name] = map[key]; } - else if (opt.error) { - errors.push(createCompilerDiagnostic(opt.error)); - } else { - Debug.fail(`Command line option for '${opt.name}' doesn't account for invalid options.`); + errors.push(createCompilerDiagnostic((opt).error)); } } } @@ -444,7 +441,7 @@ namespace ts { value = optType[key]; } else { - errors.push(createCompilerDiagnostic(opt.error)); + errors.push(createCompilerDiagnostic((opt).error)); value = 0; } } diff --git a/src/compiler/types.ts b/src/compiler/types.ts index 47182e39527..f9d1b506274 100644 --- a/src/compiler/types.ts +++ b/src/compiler/types.ts @@ -2112,17 +2112,30 @@ namespace ts { } /* @internal */ - export interface CommandLineOption { + 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, From 50e122f90162d3715287268633536da5bfc0331f Mon Sep 17 00:00:00 2001 From: Mohamed Hegazy Date: Thu, 10 Sep 2015 15:19:59 -0700 Subject: [PATCH 33/56] Update LKG --- lib/lib.d.ts | 32 ++++- lib/lib.dom.d.ts | 32 ++++- lib/lib.es6.d.ts | 32 ++++- lib/lib.webworker.d.ts | 32 ++++- lib/tsc.js | 143 +++++++++++---------- lib/tsserver.js | 215 +++++++++++++++++++------------- lib/typescript.js | 252 ++++++++++++++++++++++++-------------- lib/typescriptServices.js | 252 ++++++++++++++++++++++++-------------- 8 files changed, 653 insertions(+), 337 deletions(-) diff --git a/lib/lib.d.ts b/lib/lib.d.ts index c55970d9aca..d25e29bddb4 100644 --- a/lib/lib.d.ts +++ b/lib/lib.d.ts @@ -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..76e5f1b20a1 100644 --- a/lib/lib.dom.d.ts +++ b/lib/lib.dom.d.ts @@ -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..507f0da5004 100644 --- a/lib/lib.es6.d.ts +++ b/lib/lib.es6.d.ts @@ -5216,6 +5216,7 @@ declare module Intl { timeZoneName?: string; formatMatcher?: string; hour12?: boolean; + timeZone?: string; } interface ResolvedDateTimeFormatOptions { @@ -5285,18 +5286,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..56e08ff6efc 100644 --- a/lib/lib.webworker.d.ts +++ b/lib/lib.webworker.d.ts @@ -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..019ef143cc8 100644 --- a/lib/tsc.js +++ b/lib/tsc.js @@ -1564,13 +1564,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." }, @@ -14049,6 +14050,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; @@ -20970,7 +20972,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; } @@ -24505,8 +24510,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("{..."); @@ -26029,19 +26036,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 +26089,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 +26102,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 +26144,7 @@ var ts; if (root.parent.kind !== 170) { write("("); } - value = ensureIdentifier(value); + value = ensureIdentifier(value, true); emitDestructuringAssignment(target, value); write(", "); emit(value); @@ -26156,10 +26163,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 +26177,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)); } } @@ -27289,50 +27297,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"); } @@ -29332,7 +29339,7 @@ var ts; ts.ioReadTime = 0; ts.ioWriteTime = 0; var emptyArray = []; - ts.version = "1.6.0"; + ts.version = "1.6.2"; function findConfigFile(searchPath) { var fileName = "tsconfig.json"; while (true) { @@ -30397,8 +30404,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; diff --git a/lib/tsserver.js b/lib/tsserver.js index 78836160678..fc5f34dec2a 100644 --- a/lib/tsserver.js +++ b/lib/tsserver.js @@ -1564,13 +1564,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." }, @@ -3223,8 +3224,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; @@ -14511,6 +14512,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; @@ -21432,7 +21434,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; } @@ -24967,8 +24972,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("{..."); @@ -26491,19 +26498,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 +26551,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 +26564,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 +26606,7 @@ var ts; if (root.parent.kind !== 170) { write("("); } - value = ensureIdentifier(value); + value = ensureIdentifier(value, true); emitDestructuringAssignment(target, value); write(", "); emit(value); @@ -26618,10 +26625,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 +26639,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)); } } @@ -27751,50 +27759,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"); } @@ -29794,7 +29801,7 @@ var ts; ts.ioReadTime = 0; ts.ioWriteTime = 0; var emptyArray = []; - ts.version = "1.6.0"; + ts.version = "1.6.2"; function findConfigFile(searchPath) { var fileName = "tsconfig.json"; while (true) { @@ -32681,7 +32688,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 +32696,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); } } } @@ -33143,6 +33151,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 +33187,9 @@ var ts; ? 2 : shouldRescanTemplateToken(n) ? 3 - : 0; + : shouldRescanJsxIdentifier(n) + ? 4 + : 0; if (lastTokenInfo && expectedScanAction === lastScanAction) { return fixTokenKind(lastTokenInfo, n); } @@ -33191,6 +33213,10 @@ var ts; currentToken = scanner.reScanTemplateToken(); lastScanAction = 3; } + else if (expectedScanAction === 4 && currentToken === 67) { + currentToken = scanner.scanJsxIdentifier(); + lastScanAction = 4; + } else { lastScanAction = 0; } @@ -33469,7 +33495,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); @@ -33536,6 +33562,8 @@ var ts; 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.SpaceBeforeAmpersand = new formatting.Rule(formatting.RuleDescriptor.create3(45, formatting.Shared.TokenRange.Any), formatting.RuleOperation.create2(new formatting.RuleOperationContext(Rules.IsSameLineTokenContext), 2)); + this.SpaceAfterAmpersand = new formatting.Rule(formatting.RuleDescriptor.create2(formatting.Shared.TokenRange.Any, 45), formatting.RuleOperation.create2(new formatting.RuleOperationContext(Rules.IsSameLineTokenContext), 2)); this.HighPriorityCommonRules = [ this.IgnoreBeforeComment, this.IgnoreAfterLineComment, @@ -33566,6 +33594,7 @@ var ts; this.SpaceAfterTypeKeyword, this.NoSpaceAfterTypeKeyword, this.SpaceBetweenTagAndTemplateString, this.NoSpaceBetweenTagAndTemplateString, this.SpaceBeforeBar, this.NoSpaceBeforeBar, this.SpaceAfterBar, this.NoSpaceAfterBar, + this.SpaceBeforeAmpersand, this.SpaceAfterAmpersand, this.NoSpaceAfterConstructor, this.NoSpaceAfterModuleImport, this.SpaceAfterCertainTypeScriptKeywords, this.SpaceBeforeCertainTypeScriptKeywords, this.SpaceAfterModuleName, @@ -33736,6 +33765,7 @@ var ts; Rules.NodeIsTypeScriptDeclWithBlockContext = function (node) { switch (node.kind) { case 212: + case 184: case 213: case 215: case 153: @@ -35266,6 +35296,7 @@ var ts; function nodeContentIsAlwaysIndented(kind) { switch (kind) { case 212: + case 184: case 213: case 215: case 214: @@ -35290,13 +35321,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: @@ -36267,7 +36298,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 +36612,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(); } diff --git a/lib/typescript.js b/lib/typescript.js index b4d21639d3b..f6701d019cc 100644 --- a/lib/typescript.js +++ b/lib/typescript.js @@ -2433,13 +2433,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." }, @@ -17021,7 +17022,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. */ @@ -17228,6 +17229,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; @@ -25637,7 +25642,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; } @@ -29561,8 +29569,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("{..."); @@ -31270,21 +31280,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 +31349,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 +31364,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 +31406,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 +31427,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 +31447,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)); } } @@ -32840,50 +32862,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"); } @@ -35103,7 +35124,7 @@ var ts; /* @internal */ ts.ioWriteTime = 0; /** The version of the TypeScript compiler release */ var emptyArray = []; - ts.version = "1.6.0"; + ts.version = "1.6.2"; function findConfigFile(searchPath) { var fileName = "tsconfig.json"; while (true) { @@ -36251,8 +36272,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; @@ -38721,7 +38742,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 +38750,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 +39192,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 +39266,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 +39305,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 +39338,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 +39682,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 */]); @@ -39727,11 +39776,13 @@ var ts; // 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 + // type operation 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 */)); + this.SpaceBeforeAmpersand = new formatting.Rule(formatting.RuleDescriptor.create3(45 /* AmpersandToken */, formatting.Shared.TokenRange.Any), formatting.RuleOperation.create2(new formatting.RuleOperationContext(Rules.IsSameLineTokenContext), 2 /* Space */)); + this.SpaceAfterAmpersand = new formatting.Rule(formatting.RuleDescriptor.create2(formatting.Shared.TokenRange.Any, 45 /* AmpersandToken */), formatting.RuleOperation.create2(new formatting.RuleOperationContext(Rules.IsSameLineTokenContext), 2 /* Space */)); // These rules are higher in priority than user-configurable rules. this.HighPriorityCommonRules = [ @@ -39763,6 +39814,7 @@ var ts; this.SpaceAfterTypeKeyword, this.NoSpaceAfterTypeKeyword, this.SpaceBetweenTagAndTemplateString, this.NoSpaceBetweenTagAndTemplateString, this.SpaceBeforeBar, this.NoSpaceBeforeBar, this.SpaceAfterBar, this.NoSpaceAfterBar, + this.SpaceBeforeAmpersand, this.SpaceAfterAmpersand, // TypeScript-specific rules this.NoSpaceAfterConstructor, this.NoSpaceAfterModuleImport, this.SpaceAfterCertainTypeScriptKeywords, this.SpaceBeforeCertainTypeScriptKeywords, @@ -39967,6 +40019,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 */: @@ -41704,6 +41757,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 +41782,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 +42912,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 +43160,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 +43281,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(); } diff --git a/lib/typescriptServices.js b/lib/typescriptServices.js index b4d21639d3b..f6701d019cc 100644 --- a/lib/typescriptServices.js +++ b/lib/typescriptServices.js @@ -2433,13 +2433,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." }, @@ -17021,7 +17022,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. */ @@ -17228,6 +17229,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; @@ -25637,7 +25642,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; } @@ -29561,8 +29569,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("{..."); @@ -31270,21 +31280,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 +31349,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 +31364,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 +31406,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 +31427,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 +31447,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)); } } @@ -32840,50 +32862,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"); } @@ -35103,7 +35124,7 @@ var ts; /* @internal */ ts.ioWriteTime = 0; /** The version of the TypeScript compiler release */ var emptyArray = []; - ts.version = "1.6.0"; + ts.version = "1.6.2"; function findConfigFile(searchPath) { var fileName = "tsconfig.json"; while (true) { @@ -36251,8 +36272,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; @@ -38721,7 +38742,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 +38750,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 +39192,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 +39266,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 +39305,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 +39338,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 +39682,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 */]); @@ -39727,11 +39776,13 @@ var ts; // 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 + // type operation 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 */)); + this.SpaceBeforeAmpersand = new formatting.Rule(formatting.RuleDescriptor.create3(45 /* AmpersandToken */, formatting.Shared.TokenRange.Any), formatting.RuleOperation.create2(new formatting.RuleOperationContext(Rules.IsSameLineTokenContext), 2 /* Space */)); + this.SpaceAfterAmpersand = new formatting.Rule(formatting.RuleDescriptor.create2(formatting.Shared.TokenRange.Any, 45 /* AmpersandToken */), formatting.RuleOperation.create2(new formatting.RuleOperationContext(Rules.IsSameLineTokenContext), 2 /* Space */)); // These rules are higher in priority than user-configurable rules. this.HighPriorityCommonRules = [ @@ -39763,6 +39814,7 @@ var ts; this.SpaceAfterTypeKeyword, this.NoSpaceAfterTypeKeyword, this.SpaceBetweenTagAndTemplateString, this.NoSpaceBetweenTagAndTemplateString, this.SpaceBeforeBar, this.NoSpaceBeforeBar, this.SpaceAfterBar, this.NoSpaceAfterBar, + this.SpaceBeforeAmpersand, this.SpaceAfterAmpersand, // TypeScript-specific rules this.NoSpaceAfterConstructor, this.NoSpaceAfterModuleImport, this.SpaceAfterCertainTypeScriptKeywords, this.SpaceBeforeCertainTypeScriptKeywords, @@ -39967,6 +40019,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 */: @@ -41704,6 +41757,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 +41782,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 +42912,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 +43160,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 +43281,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(); } From 4b5c2fe31c94a6f3e4422024107a70e96a14c3d8 Mon Sep 17 00:00:00 2001 From: Vladimir Matveev Date: Thu, 10 Sep 2015 10:46:39 -0700 Subject: [PATCH 34/56] reattach file diagnostics for modified files when reusing program structure --- src/compiler/program.ts | 78 +++++++++++-------- src/compiler/types.ts | 3 + src/compiler/utilities.ts | 13 +++- .../cases/unittests/reuseProgramStructure.ts | 9 ++- 4 files changed, 67 insertions(+), 36 deletions(-) diff --git a/src/compiler/program.ts b/src/compiler/program.ts index c239b18efb7..925ebfeb8af 100644 --- a/src/compiler/program.ts +++ b/src/compiler/program.ts @@ -358,7 +358,8 @@ namespace ts { export function createProgram(rootNames: string[], options: CompilerOptions, host?: CompilerHost, oldProgram?: Program): Program { let program: Program; let files: SourceFile[] = []; - let diagnostics = createDiagnosticCollection(); + let fileProcessingDiagnostics = createDiagnosticCollection(); + let programDiagnostics = createDiagnosticCollection(); let commonSourceDirectory: string; let diagnosticsProducingTypeChecker: TypeChecker; @@ -428,6 +429,7 @@ namespace ts { getIdentifierCount: () => getDiagnosticsProducingTypeChecker().getIdentifierCount(), getSymbolCount: () => getDiagnosticsProducingTypeChecker().getSymbolCount(), getTypeCount: () => getDiagnosticsProducingTypeChecker().getTypeCount(), + getFileProcessingDiagnostics: () => fileProcessingDiagnostics }; return program; @@ -460,6 +462,7 @@ namespace ts { // check if program source files has changed in the way that can affect structure of the program let newSourceFiles: SourceFile[] = []; + let modifiedSourceFiles: SourceFile[] = []; for (let oldSourceFile of oldProgram.getSourceFiles()) { let newSourceFile = host.getSourceFile(oldSourceFile.fileName, options.target); if (!newSourceFile) { @@ -499,6 +502,7 @@ namespace ts { } // 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 @@ -515,7 +519,11 @@ namespace ts { } files = newSourceFiles; + fileProcessingDiagnostics = oldProgram.getFileProcessingDiagnostics(); + for (let modifiedFile of modifiedSourceFiles) { + fileProcessingDiagnostics.reattachFileDiagnostics(modifiedFile); + } oldProgram.structureIsReused = true; return true; @@ -645,9 +653,10 @@ namespace ts { Debug.assert(!!sourceFile.bindDiagnostics); let bindDiagnostics = sourceFile.bindDiagnostics; let checkDiagnostics = typeChecker.getDiagnostics(sourceFile, cancellationToken); - let programDiagnostics = diagnostics.getDiagnostics(sourceFile.fileName); + let fileProcessingDiagnosticsInFile = fileProcessingDiagnostics.getDiagnostics(sourceFile.fileName); + let programDiagnosticsInFile = programDiagnostics.getDiagnostics(sourceFile.fileName); - return bindDiagnostics.concat(checkDiagnostics).concat(programDiagnostics); + return bindDiagnostics.concat(checkDiagnostics).concat(fileProcessingDiagnosticsInFile).concat(programDiagnosticsInFile); }); } @@ -664,7 +673,8 @@ namespace ts { function getOptionsDiagnostics(): Diagnostic[] { let allDiagnostics: Diagnostic[] = []; - addRange(allDiagnostics, diagnostics.getGlobalDiagnostics()); + addRange(allDiagnostics, fileProcessingDiagnostics.getGlobalDiagnostics()) + addRange(allDiagnostics, programDiagnostics.getGlobalDiagnostics()); return sortAndDeduplicateDiagnostics(allDiagnostics); } @@ -772,10 +782,10 @@ namespace ts { if (diagnostic) { if (refFile !== undefined && refEnd !== undefined && refPos !== undefined) { - diagnostics.add(createFileDiagnostic(refFile, refPos, refEnd - refPos, diagnostic, ...diagnosticArgument)); + fileProcessingDiagnostics.add(createFileDiagnostic(refFile, refPos, refEnd - refPos, diagnostic, ...diagnosticArgument)); } else { - diagnostics.add(createCompilerDiagnostic(diagnostic, ...diagnosticArgument)); + fileProcessingDiagnostics.add(createCompilerDiagnostic(diagnostic, ...diagnosticArgument)); } } } @@ -797,11 +807,11 @@ namespace ts { // 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) { - diagnostics.add(createFileDiagnostic(refFile, refPos, refEnd - refPos, + fileProcessingDiagnostics.add(createFileDiagnostic(refFile, refPos, refEnd - refPos, Diagnostics.Cannot_read_file_0_Colon_1, fileName, hostErrorMessage)); } else { - diagnostics.add(createCompilerDiagnostic(Diagnostics.Cannot_read_file_0_Colon_1, fileName, hostErrorMessage)); + fileProcessingDiagnostics.add(createCompilerDiagnostic(Diagnostics.Cannot_read_file_0_Colon_1, fileName, hostErrorMessage)); } }); filesByName.set(canonicalName, file); @@ -837,11 +847,11 @@ namespace ts { let sourceFileName = useAbsolutePath ? getNormalizedAbsolutePath(file.fileName, host.getCurrentDirectory()) : file.fileName; if (canonicalName !== sourceFileName) { if (refFile !== undefined && refPos !== undefined && refEnd !== undefined) { - diagnostics.add(createFileDiagnostic(refFile, refPos, refEnd - refPos, + fileProcessingDiagnostics.add(createFileDiagnostic(refFile, refPos, refEnd - refPos, Diagnostics.File_name_0_differs_from_already_included_file_name_1_only_in_casing, fileName, sourceFileName)); } else { - diagnostics.add(createCompilerDiagnostic(Diagnostics.File_name_0_differs_from_already_included_file_name_1_only_in_casing, fileName, sourceFileName)); + fileProcessingDiagnostics.add(createCompilerDiagnostic(Diagnostics.File_name_0_differs_from_already_included_file_name_1_only_in_casing, fileName, sourceFileName)); } } } @@ -877,7 +887,7 @@ namespace ts { return; function findModuleSourceFile(fileName: string, nameLiteral: Expression) { - return findSourceFile(fileName, /* isDefaultLib */ false, file, nameLiteral.pos, nameLiteral.end); + return findSourceFile(fileName, /* isDefaultLib */ false, file, skipTrivia(file.text, nameLiteral.pos), nameLiteral.end); } } @@ -902,7 +912,7 @@ namespace ts { for (let i = 0, n = Math.min(commonPathComponents.length, sourcePathComponents.length); i < n; i++) { if (commonPathComponents[i] !== sourcePathComponents[i]) { if (i === 0) { - diagnostics.add(createCompilerDiagnostic(Diagnostics.Cannot_find_the_common_subdirectory_path_for_the_input_files)); + programDiagnostics.add(createCompilerDiagnostic(Diagnostics.Cannot_find_the_common_subdirectory_path_for_the_input_files)); return; } @@ -931,7 +941,7 @@ namespace ts { if (!isDeclarationFile(sourceFile)) { let absoluteSourceFilePath = host.getCanonicalFileName(getNormalizedAbsolutePath(sourceFile.fileName, currentDirectory)); if (absoluteSourceFilePath.indexOf(absoluteRootDirectoryPath) !== 0) { - diagnostics.add(createCompilerDiagnostic(Diagnostics.File_0_is_not_under_rootDir_1_rootDir_is_expected_to_contain_all_source_files, sourceFile.fileName, options.rootDir)); + programDiagnostics.add(createCompilerDiagnostic(Diagnostics.File_0_is_not_under_rootDir_1_rootDir_is_expected_to_contain_all_source_files, sourceFile.fileName, options.rootDir)); allFilesBelongToPath = false; } } @@ -944,52 +954,52 @@ namespace ts { function verifyCompilerOptions() { if (options.isolatedModules) { if (options.declaration) { - diagnostics.add(createCompilerDiagnostic(Diagnostics.Option_0_cannot_be_specified_with_option_1, "declaration", "isolatedModules")); + programDiagnostics.add(createCompilerDiagnostic(Diagnostics.Option_0_cannot_be_specified_with_option_1, "declaration", "isolatedModules")); } if (options.noEmitOnError) { - diagnostics.add(createCompilerDiagnostic(Diagnostics.Option_0_cannot_be_specified_with_option_1, "noEmitOnError", "isolatedModules")); + programDiagnostics.add(createCompilerDiagnostic(Diagnostics.Option_0_cannot_be_specified_with_option_1, "noEmitOnError", "isolatedModules")); } if (options.out) { - diagnostics.add(createCompilerDiagnostic(Diagnostics.Option_0_cannot_be_specified_with_option_1, "out", "isolatedModules")); + programDiagnostics.add(createCompilerDiagnostic(Diagnostics.Option_0_cannot_be_specified_with_option_1, "out", "isolatedModules")); } if (options.outFile) { - diagnostics.add(createCompilerDiagnostic(Diagnostics.Option_0_cannot_be_specified_with_option_1, "outFile", "isolatedModules")); + programDiagnostics.add(createCompilerDiagnostic(Diagnostics.Option_0_cannot_be_specified_with_option_1, "outFile", "isolatedModules")); } } if (options.inlineSourceMap) { if (options.sourceMap) { - diagnostics.add(createCompilerDiagnostic(Diagnostics.Option_0_cannot_be_specified_with_option_1, "sourceMap", "inlineSourceMap")); + programDiagnostics.add(createCompilerDiagnostic(Diagnostics.Option_0_cannot_be_specified_with_option_1, "sourceMap", "inlineSourceMap")); } if (options.mapRoot) { - diagnostics.add(createCompilerDiagnostic(Diagnostics.Option_0_cannot_be_specified_with_option_1, "mapRoot", "inlineSourceMap")); + programDiagnostics.add(createCompilerDiagnostic(Diagnostics.Option_0_cannot_be_specified_with_option_1, "mapRoot", "inlineSourceMap")); } if (options.sourceRoot) { - diagnostics.add(createCompilerDiagnostic(Diagnostics.Option_0_cannot_be_specified_with_option_1, "sourceRoot", "inlineSourceMap")); + programDiagnostics.add(createCompilerDiagnostic(Diagnostics.Option_0_cannot_be_specified_with_option_1, "sourceRoot", "inlineSourceMap")); } } if (options.inlineSources) { if (!options.sourceMap && !options.inlineSourceMap) { - diagnostics.add(createCompilerDiagnostic(Diagnostics.Option_inlineSources_can_only_be_used_when_either_option_inlineSourceMap_or_option_sourceMap_is_provided)); + programDiagnostics.add(createCompilerDiagnostic(Diagnostics.Option_inlineSources_can_only_be_used_when_either_option_inlineSourceMap_or_option_sourceMap_is_provided)); } } if (options.out && options.outFile) { - diagnostics.add(createCompilerDiagnostic(Diagnostics.Option_0_cannot_be_specified_with_option_1, "out", "outFile")); + programDiagnostics.add(createCompilerDiagnostic(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(createCompilerDiagnostic(Diagnostics.Option_0_cannot_be_specified_without_specifying_option_1, "mapRoot", "sourceMap")); + programDiagnostics.add(createCompilerDiagnostic(Diagnostics.Option_0_cannot_be_specified_without_specifying_option_1, "mapRoot", "sourceMap")); } if (options.sourceRoot) { - diagnostics.add(createCompilerDiagnostic(Diagnostics.Option_0_cannot_be_specified_without_specifying_option_1, "sourceRoot", "sourceMap")); + programDiagnostics.add(createCompilerDiagnostic(Diagnostics.Option_0_cannot_be_specified_without_specifying_option_1, "sourceRoot", "sourceMap")); } return; } @@ -1000,24 +1010,24 @@ namespace ts { let firstExternalModuleSourceFile = forEach(files, f => isExternalModule(f) ? f : undefined); if (options.isolatedModules) { if (!options.module && languageVersion < ScriptTarget.ES6) { - diagnostics.add(createCompilerDiagnostic(Diagnostics.Option_isolatedModules_can_only_be_used_when_either_option_module_is_provided_or_option_target_is_ES6_or_higher)); + programDiagnostics.add(createCompilerDiagnostic(Diagnostics.Option_isolatedModules_can_only_be_used_when_either_option_module_is_provided_or_option_target_is_ES6_or_higher)); } let firstNonExternalModuleSourceFile = forEach(files, f => !isExternalModule(f) && !isDeclarationFile(f) ? f : undefined); if (firstNonExternalModuleSourceFile) { let span = getErrorSpanForNode(firstNonExternalModuleSourceFile, firstNonExternalModuleSourceFile); - diagnostics.add(createFileDiagnostic(firstNonExternalModuleSourceFile, span.start, span.length, Diagnostics.Cannot_compile_namespaces_when_the_isolatedModules_flag_is_provided)); + programDiagnostics.add(createFileDiagnostic(firstNonExternalModuleSourceFile, span.start, span.length, Diagnostics.Cannot_compile_namespaces_when_the_isolatedModules_flag_is_provided)); } } else if (firstExternalModuleSourceFile && languageVersion < ScriptTarget.ES6 && !options.module) { // We cannot use createDiagnosticFromNode because nodes do not have parents yet let span = getErrorSpanForNode(firstExternalModuleSourceFile, firstExternalModuleSourceFile.externalModuleIndicator); - diagnostics.add(createFileDiagnostic(firstExternalModuleSourceFile, span.start, span.length, Diagnostics.Cannot_compile_modules_unless_the_module_flag_is_provided)); + 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) { - diagnostics.add(createCompilerDiagnostic(Diagnostics.Cannot_compile_modules_into_commonjs_amd_system_or_umd_when_targeting_ES6_or_higher)); + programDiagnostics.add(createCompilerDiagnostic(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 @@ -1046,30 +1056,30 @@ namespace ts { if (options.noEmit) { if (options.out) { - diagnostics.add(createCompilerDiagnostic(Diagnostics.Option_0_cannot_be_specified_with_option_1, "noEmit", "out")); + programDiagnostics.add(createCompilerDiagnostic(Diagnostics.Option_0_cannot_be_specified_with_option_1, "noEmit", "out")); } if (options.outFile) { - diagnostics.add(createCompilerDiagnostic(Diagnostics.Option_0_cannot_be_specified_with_option_1, "noEmit", "outFile")); + programDiagnostics.add(createCompilerDiagnostic(Diagnostics.Option_0_cannot_be_specified_with_option_1, "noEmit", "outFile")); } if (options.outDir) { - diagnostics.add(createCompilerDiagnostic(Diagnostics.Option_0_cannot_be_specified_with_option_1, "noEmit", "outDir")); + programDiagnostics.add(createCompilerDiagnostic(Diagnostics.Option_0_cannot_be_specified_with_option_1, "noEmit", "outDir")); } if (options.declaration) { - diagnostics.add(createCompilerDiagnostic(Diagnostics.Option_0_cannot_be_specified_with_option_1, "noEmit", "declaration")); + programDiagnostics.add(createCompilerDiagnostic(Diagnostics.Option_0_cannot_be_specified_with_option_1, "noEmit", "declaration")); } } if (options.emitDecoratorMetadata && !options.experimentalDecorators) { - diagnostics.add(createCompilerDiagnostic(Diagnostics.Option_0_cannot_be_specified_without_specifying_option_1, "emitDecoratorMetadata", "experimentalDecorators")); + programDiagnostics.add(createCompilerDiagnostic(Diagnostics.Option_0_cannot_be_specified_without_specifying_option_1, "emitDecoratorMetadata", "experimentalDecorators")); } if (options.experimentalAsyncFunctions && options.target !== ScriptTarget.ES6) { - diagnostics.add(createCompilerDiagnostic(Diagnostics.Option_experimentalAsyncFunctions_cannot_be_specified_when_targeting_ES5_or_lower)); + programDiagnostics.add(createCompilerDiagnostic(Diagnostics.Option_experimentalAsyncFunctions_cannot_be_specified_when_targeting_ES5_or_lower)); } } } diff --git a/src/compiler/types.ts b/src/compiler/types.ts index f9d1b506274..5b5e7aef743 100644 --- a/src/compiler/types.ts +++ b/src/compiler/types.ts @@ -1359,6 +1359,7 @@ namespace ts { /* @internal */ getSymbolCount(): number; /* @internal */ getTypeCount(): number; + /* @internal */ getFileProcessingDiagnostics(): DiagnosticCollection; // For testing purposes only. /* @internal */ structureIsReused?: boolean; } @@ -2335,5 +2336,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 99ea06532a0..6c5bd8df95d 100644 --- a/src/compiler/utilities.ts +++ b/src/compiler/utilities.ts @@ -1507,12 +1507,23 @@ namespace ts { add, getGlobalDiagnostics, getDiagnostics, - getModificationCount + getModificationCount, + reattachFileDiagnostics }; 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; + } + } function add(diagnostic: Diagnostic): void { let diagnostics: Diagnostic[]; diff --git a/tests/cases/unittests/reuseProgramStructure.ts b/tests/cases/unittests/reuseProgramStructure.ts index 6c043299c8f..56b1dedbcbb 100644 --- a/tests/cases/unittests/reuseProgramStructure.ts +++ b/tests/cases/unittests/reuseProgramStructure.ts @@ -184,7 +184,11 @@ module ts { describe("Reuse program structure", () => { let target = ScriptTarget.Latest; let files = [ - { name: "a.ts", text: SourceText.New(`/// `, "", `var x = 1`) }, + { name: "a.ts", text: SourceText.New( + ` +/// +/// +`, "",`var x = 1`) }, { name: "b.ts", text: SourceText.New(`/// `, "", `var y = 2`) }, { name: "c.ts", text: SourceText.New("", "", `var z = 1;`) }, ] @@ -195,6 +199,9 @@ module ts { files[0].text = files[0].text.updateProgram("var x = 100"); }); assert.isTrue(program_1.structureIsReused); + let program1Diagnostics = program_1.getSemanticDiagnostics(program_1.getSourceFile("a.ts")) + let program2Diagnostics = program_2.getSemanticDiagnostics(program_1.getSourceFile("a.ts")) + assert.equal(program1Diagnostics.length, program2Diagnostics.length); }); it("fails if change affects tripleslash references", () => { From 98f31635f89ac52da14f8ccbeb8fc6bfbfc18014 Mon Sep 17 00:00:00 2001 From: Vladimir Matveev Date: Thu, 10 Sep 2015 11:36:31 -0700 Subject: [PATCH 35/56] Check if imported file is a proper external module --- src/compiler/checker.ts | 4 +- .../diagnosticInformationMap.generated.ts | 2 + src/compiler/diagnosticMessages.json | 8 ++ src/compiler/program.ts | 91 +++++++++---------- src/compiler/types.ts | 17 +++- src/compiler/utilities.ts | 10 +- src/harness/harnessLanguageService.ts | 4 +- src/server/editorServices.ts | 14 +-- src/services/services.ts | 4 +- src/services/shims.ts | 13 ++- tests/baselines/reference/nodeResolution4.js | 17 ++++ .../reference/nodeResolution4.symbols | 14 +++ .../baselines/reference/nodeResolution4.types | 15 +++ .../reference/nodeResolution5.errors.txt | 14 +++ tests/baselines/reference/nodeResolution5.js | 13 +++ .../reference/nodeResolution6.errors.txt | 17 ++++ tests/baselines/reference/nodeResolution6.js | 18 ++++ .../reference/nodeResolution7.errors.txt | 14 +++ tests/baselines/reference/nodeResolution7.js | 13 +++ .../reference/nodeResolution8.errors.txt | 16 ++++ tests/baselines/reference/nodeResolution8.js | 17 ++++ tests/cases/compiler/nodeResolution4.ts | 12 +++ tests/cases/compiler/nodeResolution5.ts | 10 ++ tests/cases/compiler/nodeResolution6.ts | 13 +++ tests/cases/compiler/nodeResolution7.ts | 10 ++ tests/cases/compiler/nodeResolution8.ts | 13 +++ tests/cases/unittests/moduleResolution.ts | 79 +++------------- .../cases/unittests/reuseProgramStructure.ts | 19 +++- 28 files changed, 347 insertions(+), 144 deletions(-) create mode 100644 tests/baselines/reference/nodeResolution4.js create mode 100644 tests/baselines/reference/nodeResolution4.symbols create mode 100644 tests/baselines/reference/nodeResolution4.types create mode 100644 tests/baselines/reference/nodeResolution5.errors.txt create mode 100644 tests/baselines/reference/nodeResolution5.js create mode 100644 tests/baselines/reference/nodeResolution6.errors.txt create mode 100644 tests/baselines/reference/nodeResolution6.js create mode 100644 tests/baselines/reference/nodeResolution7.errors.txt create mode 100644 tests/baselines/reference/nodeResolution7.js create mode 100644 tests/baselines/reference/nodeResolution8.errors.txt create mode 100644 tests/baselines/reference/nodeResolution8.js create mode 100644 tests/cases/compiler/nodeResolution4.ts create mode 100644 tests/cases/compiler/nodeResolution5.ts create mode 100644 tests/cases/compiler/nodeResolution6.ts create mode 100644 tests/cases/compiler/nodeResolution7.ts create mode 100644 tests/cases/compiler/nodeResolution8.ts diff --git a/src/compiler/checker.ts b/src/compiler/checker.ts index 6c45f630ed7..0ae5bc8e795 100644 --- a/src/compiler/checker.ts +++ b/src/compiler/checker.ts @@ -976,8 +976,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; diff --git a/src/compiler/diagnosticInformationMap.generated.ts b/src/compiler/diagnosticInformationMap.generated.ts index 1c9232d1515..2b67d676d51 100644 --- a/src/compiler/diagnosticInformationMap.generated.ts +++ b/src/compiler/diagnosticInformationMap.generated.ts @@ -427,6 +427,8 @@ namespace ts { 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." }, + Proper_external_module_that_carries_external_typings_cannot_contain_tripleslash_references: { code: 2654, category: DiagnosticCategory.Error, key: "Proper external module that carries external typings cannot contain tripleslash references." }, + Proper_external_module_that_carries_external_typings_should_be_d_ts_file: { code: 2655, category: DiagnosticCategory.Error, key: "Proper external module that carries external typings should be '.d.ts' file." }, 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}'." }, diff --git a/src/compiler/diagnosticMessages.json b/src/compiler/diagnosticMessages.json index f6875c45c47..ad82541ad79 100644 --- a/src/compiler/diagnosticMessages.json +++ b/src/compiler/diagnosticMessages.json @@ -1697,6 +1697,14 @@ "category": "Error", "code": 2652 }, + "Proper external module that carries external typings cannot contain tripleslash references.": { + "category": "Error", + "code": 2654 + }, + "Proper external module that carries external typings should be '.d.ts' file.": { + "category": "Error", + "code": 2655 + }, "Import declaration '{0}' is using private name '{1}'.": { "category": "Error", "code": 4000 diff --git a/src/compiler/program.ts b/src/compiler/program.ts index 925ebfeb8af..f6931aea545 100644 --- a/src/compiler/program.ts +++ b/src/compiler/program.ts @@ -36,7 +36,7 @@ namespace ts { return normalizePath(referencedFileName); } - export function resolveModuleName(moduleName: string, containingFile: string, compilerOptions: CompilerOptions, host: ModuleResolutionHost): ResolvedModule { + 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; @@ -47,7 +47,7 @@ namespace ts { } } - export function nodeModuleNameResolver(moduleName: string, containingFile: string, host: ModuleResolutionHost): ResolvedModule { + export function nodeModuleNameResolver(moduleName: string, containingFile: string, host: ModuleResolutionHost): ResolvedModuleWithFailedLookupLocations { let containingDirectory = getDirectoryPath(containingFile); if (getRootLength(moduleName) !== 0 || nameStartsWithDotSlashOrDotDotSlash(moduleName)) { @@ -56,11 +56,13 @@ namespace ts { 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); @@ -117,7 +119,7 @@ namespace ts { return loadNodeModuleFromFile(combinePaths(candidate, "index"), loadOnlyDts, failedLookupLocation, host); } - function loadModuleFromNodeModules(moduleName: string, directory: string, host: ModuleResolutionHost): ResolvedModule { + function loadModuleFromNodeModules(moduleName: string, directory: string, host: ModuleResolutionHost): ResolvedModuleWithFailedLookupLocations { let failedLookupLocations: string[] = []; directory = normalizeSlashes(directory); while (true) { @@ -127,12 +129,12 @@ 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, shouldBeProperExternalModule: true }, failedLookupLocations }; } result = loadNodeModuleFromDirectory(candidate, /* loadOnlyDts */ true, failedLookupLocations, host); if (result) { - return { resolvedFileName: result, failedLookupLocations }; + return { resolvedModule: { resolvedFileName: result, shouldBeProperExternalModule: true }, failedLookupLocations }; } } @@ -144,47 +146,19 @@ namespace ts { directory = parentPath; } - return { resolvedFileName: 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; - } - } + return { resolvedModule: undefined, failedLookupLocations }; } 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: [] }; + return { resolvedModule: undefined, failedLookupLocations: [] }; } let searchPath = getDirectoryPath(containingFile); @@ -222,7 +196,9 @@ namespace ts { searchPath = parentPath; } - return { resolvedFileName: referencedSourceFile, failedLookupLocations }; + return referencedSourceFile + ? { resolvedModule: { resolvedFileName: referencedSourceFile }, failedLookupLocations } + : { resolvedModule: undefined, failedLookupLocations }; } /* @internal */ @@ -372,9 +348,9 @@ namespace ts { 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)); @@ -494,10 +470,17 @@ namespace ts { 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.shouldBeProperExternalModule !== !!newResolution.shouldBeProperExternalModule + : newResolution; + + if (resolutionChanged) { return false; - } + } } } // pass the cache of module resolutions from the old source file @@ -874,9 +857,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.shouldBeProperExternalModule) { + if (!isExternalModule(importedFile)) { + let start = getTokenPosOfNode(file.imports[i], file) + diagnostics.add(createFileDiagnostic(file, start, file.imports[i].end - start, Diagnostics.File_0_is_not_a_module, importedFile.fileName)); + } + else if (!fileExtensionIs(importedFile.fileName, ".d.ts")) { + let start = getTokenPosOfNode(file.imports[i], file) + diagnostics.add(createFileDiagnostic(file, start, file.imports[i].end - start, Diagnostics.Proper_external_module_that_carries_external_typings_should_be_d_ts_file)); + } + else if (importedFile.referencedFiles.length) { + let firstRef = importedFile.referencedFiles[0]; + diagnostics.add(createFileDiagnostic(importedFile, firstRef.pos, firstRef.end - firstRef.pos, Diagnostics.Proper_external_module_that_carries_external_typings_cannot_contain_tripleslash_references)); + } + } } } } diff --git a/src/compiler/types.ts b/src/compiler/types.ts index 5b5e7aef743..191d723afa2 100644 --- a/src/compiler/types.ts +++ b/src/compiler/types.ts @@ -1284,7 +1284,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[]; } @@ -2283,11 +2283,20 @@ namespace ts { export interface ResolvedModule { resolvedFileName: string; + /* + * Denotes if 'resolvedFileName' should be proper external module: + * - be a .d.ts file + * - use top level imports\exports + * - don't use tripleslash references + */ + shouldBeProperExternalModule?: 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; getCancellationToken?(): CancellationToken; @@ -2305,7 +2314,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 { diff --git a/src/compiler/utilities.ts b/src/compiler/utilities.ts index 6c5bd8df95d..5332c8fb440 100644 --- a/src/compiler/utilities.ts +++ b/src/compiler/utilities.ts @@ -99,20 +99,20 @@ 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. diff --git a/src/harness/harnessLanguageService.ts b/src/harness/harnessLanguageService.ts index f228bc862d8..c97ce50d275 100644 --- a/src/harness/harnessLanguageService.ts +++ b/src/harness/harnessLanguageService.ts @@ -225,8 +225,8 @@ 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); diff --git a/src/server/editorServices.ts b/src/server/editorServices.ts index dd29d3cf2c9..572656b98fb 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/services/services.ts b/src/services/services.ts index 58f59843078..c3df7a8a9f8 100644 --- a/src/services/services.ts +++ b/src/services/services.ts @@ -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[]; } // 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/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..1fc4e1cee52 --- /dev/null +++ b/tests/baselines/reference/nodeResolution5.errors.txt @@ -0,0 +1,14 @@ +tests/cases/compiler/b.ts(1,20): error TS2306: File 'tests/cases/compiler/node_modules/a.d.ts' is not a module. + + +==== tests/cases/compiler/b.ts (1 errors) ==== + import y = require("a"); + ~~~ +!!! error TS2306: File 'a.d.ts' is not a module. + +==== 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..8a462043207 --- /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: Proper external module that carries external typings cannot contain tripleslash references. + + +==== 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: Proper external module that carries external typings cannot contain tripleslash references. + 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..1e1f822f0d4 --- /dev/null +++ b/tests/baselines/reference/nodeResolution7.errors.txt @@ -0,0 +1,14 @@ +tests/cases/compiler/b.ts(1,20): error TS2306: File 'tests/cases/compiler/node_modules/a/index.d.ts' is not a module. + + +==== tests/cases/compiler/b.ts (1 errors) ==== + import y = require("a"); + ~~~ +!!! error TS2306: File 'index.d.ts' is not a module. + +==== 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..82753a2049b --- /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: Proper external module that carries external typings cannot contain tripleslash references. + + +==== 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: Proper external module that carries external typings cannot contain tripleslash references. + 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/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/unittests/moduleResolution.ts b/tests/cases/unittests/moduleResolution.ts index 0917e72f1ce..ab12119ec5a 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.shouldBeProperExternalModule, 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.shouldBeProperExternalModule, 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.shouldBeProperExternalModule, 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.shouldBeProperExternalModule, 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.shouldBeProperExternalModule, 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", @@ -158,64 +163,4 @@ module ts { ]); }); }); - - describe("BaseUrl mode", () => { - - 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"); - - 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); - } - - 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"); - }); - }); } \ No newline at end of file diff --git a/tests/cases/unittests/reuseProgramStructure.ts b/tests/cases/unittests/reuseProgramStructure.ts index 56b1dedbcbb..4d167cb1bb0 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.shouldBeProperExternalModule === actual.shouldBeProperExternalModule, `'shouldBeProperExternalModule': expected '${expected.shouldBeProperExternalModule}' to be equal to '${actual.shouldBeProperExternalModule}'`); + } + 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 From 031fdf19e03af0a29b200bda58420942bcaa379e Mon Sep 17 00:00:00 2001 From: Vladimir Matveev Date: Thu, 10 Sep 2015 16:42:02 -0700 Subject: [PATCH 36/56] addressed PR feedback --- src/compiler/diagnosticInformationMap.generated.ts | 4 ++-- src/compiler/diagnosticMessages.json | 4 ++-- src/compiler/program.ts | 12 ++++++------ src/compiler/types.ts | 4 ++-- 4 files changed, 12 insertions(+), 12 deletions(-) diff --git a/src/compiler/diagnosticInformationMap.generated.ts b/src/compiler/diagnosticInformationMap.generated.ts index 2b67d676d51..1ff650a399f 100644 --- a/src/compiler/diagnosticInformationMap.generated.ts +++ b/src/compiler/diagnosticInformationMap.generated.ts @@ -427,8 +427,8 @@ namespace ts { 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." }, - Proper_external_module_that_carries_external_typings_cannot_contain_tripleslash_references: { code: 2654, category: DiagnosticCategory.Error, key: "Proper external module that carries external typings cannot contain tripleslash references." }, - Proper_external_module_that_carries_external_typings_should_be_d_ts_file: { code: 2655, category: DiagnosticCategory.Error, key: "Proper external module that carries external typings should be '.d.ts' file." }, + Exported_external_package_typings_file_cannot_contain_tripleslash_references_Please_contact_the_package_author_to_update_the_package_definition: { code: 2654, category: 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: DiagnosticCategory.Error, key: "Exported external package typings can only be in '.d.ts' files. Please contact the package author to update the package definition." }, 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}'." }, diff --git a/src/compiler/diagnosticMessages.json b/src/compiler/diagnosticMessages.json index ad82541ad79..2fdf5869d1a 100644 --- a/src/compiler/diagnosticMessages.json +++ b/src/compiler/diagnosticMessages.json @@ -1697,11 +1697,11 @@ "category": "Error", "code": 2652 }, - "Proper external module that carries external typings cannot contain tripleslash references.": { + "Exported external package typings file cannot contain tripleslash references. Please contact the package author to update the package definition.": { "category": "Error", "code": 2654 }, - "Proper external module that carries external typings should be '.d.ts' file.": { + "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 }, diff --git a/src/compiler/program.ts b/src/compiler/program.ts index f6931aea545..dba608c2ebc 100644 --- a/src/compiler/program.ts +++ b/src/compiler/program.ts @@ -129,12 +129,12 @@ namespace ts { let candidate = normalizePath(combinePaths(nodeModulesFolder, moduleName)); let result = loadNodeModuleFromFile(candidate, /* loadOnlyDts */ true, failedLookupLocations, host); if (result) { - return { resolvedModule: { resolvedFileName: result, shouldBeProperExternalModule: true }, failedLookupLocations }; + return { resolvedModule: { resolvedFileName: result, isExternalLibraryImport: true }, failedLookupLocations }; } result = loadNodeModuleFromDirectory(candidate, /* loadOnlyDts */ true, failedLookupLocations, host); if (result) { - return { resolvedModule: { resolvedFileName: result, shouldBeProperExternalModule: true }, failedLookupLocations }; + return { resolvedModule: { resolvedFileName: result, isExternalLibraryImport: true }, failedLookupLocations }; } } @@ -475,7 +475,7 @@ namespace ts { let resolutionChanged = oldResolution ? !newResolution || oldResolution.resolvedFileName !== newResolution.resolvedFileName || - !!oldResolution.shouldBeProperExternalModule !== !!newResolution.shouldBeProperExternalModule + !!oldResolution.isExternalLibraryImport !== !!newResolution.isExternalLibraryImport : newResolution; if (resolutionChanged) { @@ -860,18 +860,18 @@ namespace ts { setResolvedModule(file, moduleNames[i], resolution); if (resolution && !options.noResolve) { const importedFile = findModuleSourceFile(resolution.resolvedFileName, file.imports[i]); - if (importedFile && resolution.shouldBeProperExternalModule) { + if (importedFile && resolution.isExternalLibraryImport) { if (!isExternalModule(importedFile)) { let start = getTokenPosOfNode(file.imports[i], file) diagnostics.add(createFileDiagnostic(file, start, file.imports[i].end - start, Diagnostics.File_0_is_not_a_module, importedFile.fileName)); } else if (!fileExtensionIs(importedFile.fileName, ".d.ts")) { let start = getTokenPosOfNode(file.imports[i], file) - diagnostics.add(createFileDiagnostic(file, start, file.imports[i].end - start, Diagnostics.Proper_external_module_that_carries_external_typings_should_be_d_ts_file)); + diagnostics.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]; - diagnostics.add(createFileDiagnostic(importedFile, firstRef.pos, firstRef.end - firstRef.pos, Diagnostics.Proper_external_module_that_carries_external_typings_cannot_contain_tripleslash_references)); + diagnostics.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)); } } } diff --git a/src/compiler/types.ts b/src/compiler/types.ts index 191d723afa2..880feb0bf73 100644 --- a/src/compiler/types.ts +++ b/src/compiler/types.ts @@ -2284,12 +2284,12 @@ namespace ts { export interface ResolvedModule { resolvedFileName: string; /* - * Denotes if 'resolvedFileName' should be proper external module: + * 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 */ - shouldBeProperExternalModule?: boolean; + isExternalLibraryImport?: boolean; } export interface ResolvedModuleWithFailedLookupLocations { From a880be1f7555d0b2ad167fd3f18e2d4d665c5cae Mon Sep 17 00:00:00 2001 From: Vladimir Matveev Date: Thu, 10 Sep 2015 17:00:29 -0700 Subject: [PATCH 37/56] resolve merge conflicts, update tests --- src/compiler/program.ts | 6 +++--- tests/baselines/reference/nodeResolution6.errors.txt | 4 ++-- tests/baselines/reference/nodeResolution8.errors.txt | 4 ++-- tests/cases/unittests/moduleResolution.ts | 10 +++++----- tests/cases/unittests/reuseProgramStructure.ts | 2 +- 5 files changed, 13 insertions(+), 13 deletions(-) diff --git a/src/compiler/program.ts b/src/compiler/program.ts index dba608c2ebc..0acb81f1908 100644 --- a/src/compiler/program.ts +++ b/src/compiler/program.ts @@ -863,15 +863,15 @@ namespace ts { if (importedFile && resolution.isExternalLibraryImport) { if (!isExternalModule(importedFile)) { let start = getTokenPosOfNode(file.imports[i], file) - diagnostics.add(createFileDiagnostic(file, start, file.imports[i].end - start, Diagnostics.File_0_is_not_a_module, importedFile.fileName)); + fileProcessingDiagnostics.add(createFileDiagnostic(file, start, file.imports[i].end - start, Diagnostics.File_0_is_not_a_module, importedFile.fileName)); } else if (!fileExtensionIs(importedFile.fileName, ".d.ts")) { let start = getTokenPosOfNode(file.imports[i], file) - diagnostics.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)); + 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]; - diagnostics.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)); + 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)); } } } diff --git a/tests/baselines/reference/nodeResolution6.errors.txt b/tests/baselines/reference/nodeResolution6.errors.txt index 8a462043207..6bab6e34389 100644 --- a/tests/baselines/reference/nodeResolution6.errors.txt +++ b/tests/baselines/reference/nodeResolution6.errors.txt @@ -1,4 +1,4 @@ -tests/cases/compiler/node_modules/a.d.ts(1,1): error TS2654: Proper external module that carries external typings cannot contain tripleslash references. +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) ==== @@ -11,7 +11,7 @@ tests/cases/compiler/node_modules/a.d.ts(1,1): error TS2654: Proper external mod ==== tests/cases/compiler/node_modules/a.d.ts (1 errors) ==== /// ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ -!!! error TS2654: Proper external module that carries external typings cannot contain tripleslash references. +!!! 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.errors.txt b/tests/baselines/reference/nodeResolution8.errors.txt index 82753a2049b..3f14a4313c8 100644 --- a/tests/baselines/reference/nodeResolution8.errors.txt +++ b/tests/baselines/reference/nodeResolution8.errors.txt @@ -1,4 +1,4 @@ -tests/cases/compiler/node_modules/a/index.d.ts(1,1): error TS2654: Proper external module that carries external typings cannot contain tripleslash references. +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) ==== @@ -10,7 +10,7 @@ tests/cases/compiler/node_modules/a/index.d.ts(1,1): error TS2654: Proper extern ==== tests/cases/compiler/node_modules/a/index.d.ts (1 errors) ==== /// ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ -!!! error TS2654: Proper external module that carries external typings cannot contain tripleslash references. +!!! 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/cases/unittests/moduleResolution.ts b/tests/cases/unittests/moduleResolution.ts index ab12119ec5a..ed9f0b0a986 100644 --- a/tests/cases/unittests/moduleResolution.ts +++ b/tests/cases/unittests/moduleResolution.ts @@ -41,7 +41,7 @@ module ts { let moduleFile = { name: moduleFileNameNoExt + ext } let resolution = nodeModuleNameResolver(moduleName, containingFile.name, createModuleResolutionHost(containingFile, moduleFile)); assert.equal(resolution.resolvedModule.resolvedFileName, moduleFile.name); - assert.equal(!!resolution.resolvedModule.shouldBeProperExternalModule, false); + assert.equal(!!resolution.resolvedModule.isExternalLibraryImport, false); let failedLookupLocations: string[] = []; let dir = getDirectoryPath(containingFileName); @@ -80,7 +80,7 @@ module ts { let moduleFile = { name: moduleFileName }; let resolution = nodeModuleNameResolver(moduleName, containingFile.name, createModuleResolutionHost(containingFile, packageJson, moduleFile)); assert.equal(resolution.resolvedModule.resolvedFileName, moduleFile.name); - assert.equal(!!resolution.resolvedModule.shouldBeProperExternalModule, false); + 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); } @@ -98,7 +98,7 @@ module ts { let indexFile = { name: "/a/b/foo/index.d.ts" }; let resolution = nodeModuleNameResolver("./foo", containingFile.name, createModuleResolutionHost(containingFile, packageJson, indexFile)); assert.equal(resolution.resolvedModule.resolvedFileName, indexFile.name); - assert.equal(!!resolution.resolvedModule.shouldBeProperExternalModule, false); + assert.equal(!!resolution.resolvedModule.isExternalLibraryImport, false); assert.deepEqual(resolution.failedLookupLocations, [ "/a/b/foo.ts", "/a/b/foo.tsx", @@ -139,7 +139,7 @@ module ts { let moduleFile = { name: "/a/b/node_modules/foo.d.ts" }; let resolution = nodeModuleNameResolver("foo", containingFile.name, createModuleResolutionHost(containingFile, moduleFile)); assert.equal(resolution.resolvedModule.resolvedFileName, moduleFile.name); - assert.equal(resolution.resolvedModule.shouldBeProperExternalModule, true); + assert.equal(resolution.resolvedModule.isExternalLibraryImport, true); }); it("load module as directory", () => { @@ -147,7 +147,7 @@ module ts { let moduleFile = { name: "/a/node_modules/foo/index.d.ts" }; let resolution = nodeModuleNameResolver("foo", containingFile.name, createModuleResolutionHost(containingFile, moduleFile)); assert.equal(resolution.resolvedModule.resolvedFileName, moduleFile.name); - assert.equal(resolution.resolvedModule.shouldBeProperExternalModule, true); + 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", diff --git a/tests/cases/unittests/reuseProgramStructure.ts b/tests/cases/unittests/reuseProgramStructure.ts index 4d167cb1bb0..5f313eeae2b 100644 --- a/tests/cases/unittests/reuseProgramStructure.ts +++ b/tests/cases/unittests/reuseProgramStructure.ts @@ -180,7 +180,7 @@ module ts { 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.shouldBeProperExternalModule === actual.shouldBeProperExternalModule, `'shouldBeProperExternalModule': expected '${expected.shouldBeProperExternalModule}' to be equal to '${actual.shouldBeProperExternalModule}'`); + assert.isTrue(expected.isExternalLibraryImport === actual.isExternalLibraryImport, `'shouldBeProperExternalModule': expected '${expected.isExternalLibraryImport}' to be equal to '${actual.isExternalLibraryImport}'`); } else { assert.isTrue(file.resolvedModules[id] === undefined); From 0e5196180e03c66f92efd0713d8b4a00aea81f55 Mon Sep 17 00:00:00 2001 From: Vladimir Matveev Date: Fri, 11 Sep 2015 09:36:17 -0700 Subject: [PATCH 38/56] emit export specifiers in system modules only if export has a value side --- src/compiler/emitter.ts | 6 +- tests/baselines/reference/systemModule17.js | 84 ++++++++++++++++ .../reference/systemModule17.symbols | 93 ++++++++++++++++++ .../baselines/reference/systemModule17.types | 95 +++++++++++++++++++ tests/cases/compiler/systemModule17.ts | 41 ++++++++ 5 files changed, 318 insertions(+), 1 deletion(-) create mode 100644 tests/baselines/reference/systemModule17.js create mode 100644 tests/baselines/reference/systemModule17.symbols create mode 100644 tests/baselines/reference/systemModule17.types create mode 100644 tests/cases/compiler/systemModule17.ts diff --git a/src/compiler/emitter.ts b/src/compiler/emitter.ts index 2d5bda1bba2..a5c9b88b7dd 100644 --- a/src/compiler/emitter.ts +++ b/src/compiler/emitter.ts @@ -3144,6 +3144,10 @@ var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, Promi function emitExportSpecifierInSystemModule(specifier: ExportSpecifier): void { Debug.assert(compilerOptions.module === ModuleKind.System); + + if (!resolver.getReferencedValueDeclaration(specifier.propertyName || specifier.name) && !resolver.isValueAliasDeclaration(specifier) ) { + return; + } writeLine(); emitStart(specifier.name); @@ -6106,7 +6110,7 @@ var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, Promi return; } - if (isInternalModuleImportEqualsDeclaration(node)) { + if (isInternalModuleImportEqualsDeclaration(node) && resolver.isValueAliasDeclaration(node)) { if (!hoistedVars) { hoistedVars = []; } 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/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 From a44d8e76c68e7c685cef3d34943158021acd04e5 Mon Sep 17 00:00:00 2001 From: Mohamed Hegazy Date: Fri, 11 Sep 2015 11:32:35 -0700 Subject: [PATCH 39/56] Update LKG --- lib/tsc.js | 192 ++++++++++++++++++------------- lib/tsserver.js | 219 +++++++++++++++++++++--------------- lib/typescript.d.ts | 16 +-- lib/typescript.js | 213 ++++++++++++++++++++--------------- lib/typescriptServices.d.ts | 16 +-- lib/typescriptServices.js | 213 ++++++++++++++++++++--------------- 6 files changed, 505 insertions(+), 364 deletions(-) diff --git a/lib/tsc.js b/lib/tsc.js index 019ef143cc8..a98799b1d86 100644 --- a/lib/tsc.js +++ b/lib/tsc.js @@ -1431,6 +1431,8 @@ 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." }, + 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." }, 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}'." }, @@ -3760,21 +3762,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; @@ -4976,11 +4978,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) { @@ -10966,8 +10978,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; @@ -25985,6 +25997,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 + "(\""); @@ -28253,7 +28268,7 @@ var ts; } return; } - if (ts.isInternalModuleImportEqualsDeclaration(node)) { + if (ts.isInternalModuleImportEqualsDeclaration(node) && resolver.isValueAliasDeclaration(node)) { if (!hoistedVars) { hoistedVars = []; } @@ -29379,10 +29394,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); @@ -29440,11 +29457,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); @@ -29453,36 +29470,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; @@ -29511,7 +29507,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 = { @@ -29624,7 +29622,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; @@ -29632,8 +29631,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(); @@ -29673,7 +29673,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() { @@ -29697,6 +29698,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); @@ -29718,13 +29720,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; @@ -29736,6 +29745,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; } @@ -29817,8 +29831,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) { @@ -29832,7 +29847,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() { @@ -29922,10 +29938,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))); } } } @@ -29942,10 +29958,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); @@ -29973,10 +29989,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)); } } } @@ -29997,9 +30013,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.File_0_is_not_a_module, 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)); + } + } } } } @@ -30008,7 +30038,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) { @@ -30027,7 +30057,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; @@ -30050,7 +30080,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; } } @@ -30061,43 +30091,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; } @@ -30106,20 +30136,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 || @@ -30137,25 +30167,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) { - 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)); } } } diff --git a/lib/tsserver.js b/lib/tsserver.js index fc5f34dec2a..ce095409d9a 100644 --- a/lib/tsserver.js +++ b/lib/tsserver.js @@ -1431,6 +1431,8 @@ 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." }, + 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." }, 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}'." }, @@ -3508,21 +3510,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; @@ -4724,11 +4726,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) { @@ -11428,8 +11440,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; @@ -26447,6 +26459,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 + "(\""); @@ -28715,7 +28730,7 @@ var ts; } return; } - if (ts.isInternalModuleImportEqualsDeclaration(node)) { + if (ts.isInternalModuleImportEqualsDeclaration(node) && resolver.isValueAliasDeclaration(node)) { if (!hoistedVars) { hoistedVars = []; } @@ -29841,10 +29856,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); @@ -29902,11 +29919,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); @@ -29915,36 +29932,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; @@ -29973,7 +29969,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 = { @@ -30086,7 +30084,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; @@ -30094,8 +30093,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(); @@ -30135,7 +30135,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() { @@ -30159,6 +30160,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); @@ -30180,13 +30182,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; @@ -30198,6 +30207,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; } @@ -30279,8 +30293,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) { @@ -30294,7 +30309,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() { @@ -30384,10 +30400,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))); } } } @@ -30404,10 +30420,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); @@ -30435,10 +30451,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)); } } } @@ -30459,9 +30475,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.File_0_is_not_a_module, 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)); + } + } } } } @@ -30470,7 +30500,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) { @@ -30489,7 +30519,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; @@ -30512,7 +30542,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; } } @@ -30523,43 +30553,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; } @@ -30568,20 +30598,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 || @@ -30599,25 +30629,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) { - 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)); } } } @@ -37213,9 +37243,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; @@ -37410,9 +37440,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) { @@ -41760,7 +41790,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]; @@ -41777,15 +41807,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; @@ -43749,7 +43779,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; + }); }; } } @@ -44224,7 +44257,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 5e6492cfe1e..ec4ccd15589 100644 --- a/lib/typescript.d.ts +++ b/lib/typescript.d.ts @@ -1382,9 +1382,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 +1397,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 +1518,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; @@ -1649,7 +1651,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/typescript.js b/lib/typescript.js index f6701d019cc..ebc0ba70357 100644 --- a/lib/typescript.js +++ b/lib/typescript.js @@ -2300,6 +2300,8 @@ 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." }, + 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." }, 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}'." }, @@ -5012,21 +5014,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); @@ -6363,11 +6365,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) { @@ -13745,8 +13757,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; @@ -31225,6 +31237,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 + "(\""); @@ -33896,7 +33911,7 @@ var ts; } return; } - if (ts.isInternalModuleImportEqualsDeclaration(node)) { + if (ts.isInternalModuleImportEqualsDeclaration(node) && resolver.isValueAliasDeclaration(node)) { if (!hoistedVars) { hoistedVars = []; } @@ -35164,10 +35179,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); @@ -35227,11 +35244,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); @@ -35240,39 +35257,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; @@ -35303,7 +35297,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 */ @@ -35420,7 +35416,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; @@ -35428,8 +35425,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 @@ -35476,7 +35474,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() { @@ -35503,6 +35502,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); @@ -35531,14 +35531,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 @@ -35553,6 +35560,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; } @@ -35654,8 +35666,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) { @@ -35670,7 +35683,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() { @@ -35768,10 +35782,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))); } } } @@ -35791,10 +35805,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); @@ -35824,10 +35838,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)); } } } @@ -35848,9 +35862,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.File_0_is_not_a_module, 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)); + } + } } } } @@ -35860,7 +35888,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) { @@ -35881,7 +35909,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 @@ -35906,7 +35934,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; } } @@ -35917,44 +35945,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; } @@ -35963,22 +35991,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 @@ -36003,25 +36031,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)); } } } @@ -44003,9 +44031,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 @@ -44253,13 +44281,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) { @@ -48631,7 +48659,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; + }); }; } } @@ -49178,7 +49209,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..4ce3cd34cb5 100644 --- a/lib/typescriptServices.d.ts +++ b/lib/typescriptServices.d.ts @@ -1382,9 +1382,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 +1397,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 +1518,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; @@ -1649,7 +1651,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 f6701d019cc..ebc0ba70357 100644 --- a/lib/typescriptServices.js +++ b/lib/typescriptServices.js @@ -2300,6 +2300,8 @@ 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." }, + 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." }, 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}'." }, @@ -5012,21 +5014,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); @@ -6363,11 +6365,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) { @@ -13745,8 +13757,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; @@ -31225,6 +31237,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 + "(\""); @@ -33896,7 +33911,7 @@ var ts; } return; } - if (ts.isInternalModuleImportEqualsDeclaration(node)) { + if (ts.isInternalModuleImportEqualsDeclaration(node) && resolver.isValueAliasDeclaration(node)) { if (!hoistedVars) { hoistedVars = []; } @@ -35164,10 +35179,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); @@ -35227,11 +35244,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); @@ -35240,39 +35257,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; @@ -35303,7 +35297,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 */ @@ -35420,7 +35416,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; @@ -35428,8 +35425,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 @@ -35476,7 +35474,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() { @@ -35503,6 +35502,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); @@ -35531,14 +35531,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 @@ -35553,6 +35560,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; } @@ -35654,8 +35666,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) { @@ -35670,7 +35683,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() { @@ -35768,10 +35782,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))); } } } @@ -35791,10 +35805,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); @@ -35824,10 +35838,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)); } } } @@ -35848,9 +35862,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.File_0_is_not_a_module, 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)); + } + } } } } @@ -35860,7 +35888,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) { @@ -35881,7 +35909,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 @@ -35906,7 +35934,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; } } @@ -35917,44 +35945,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; } @@ -35963,22 +35991,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 @@ -36003,25 +36031,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)); } } } @@ -44003,9 +44031,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 @@ -44253,13 +44281,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) { @@ -48631,7 +48659,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; + }); }; } } @@ -49178,7 +49209,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) { From 62b9b556c8da6539bcea48dfe6adac875559c1d0 Mon Sep 17 00:00:00 2001 From: Mohamed Hegazy Date: Sat, 12 Sep 2015 05:21:08 -0700 Subject: [PATCH 40/56] use sting templates --- src/harness/instrumenter.ts | 8 ++++++-- 1 file changed, 6 insertions(+), 2 deletions(-) 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 = '') { From 36acaff6dc238fb26b6ece20b1cbef1717abab31 Mon Sep 17 00:00:00 2001 From: Mohamed Hegazy Date: Sat, 12 Sep 2015 05:23:53 -0700 Subject: [PATCH 41/56] Add wrapSystem function --- src/harness/loggedIO.ts | 172 ++++++++++++++++++++-------------------- 1 file changed, 87 insertions(+), 85 deletions(-) diff --git a/src/harness/loggedIO.ts b/src/harness/loggedIO.ts index 5a572e220b3..3d1833b061f 100644 --- a/src/harness/loggedIO.ts +++ b/src/harness/loggedIO.ts @@ -95,6 +95,8 @@ module Playback { export interface PlaybackIO extends Harness.IO, PlaybackControl { } + export interface PlaybackSystem extends ts.System, PlaybackControl { } + function createEmptyLog(): IOLog { return { timestamp: (new Date()).toString(), @@ -114,8 +116,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 +139,79 @@ module Playback { wrapper.startRecord = (fileNameBase) => { recordLogFileNameBase = fileNameBase; recordLog = createEmptyLog(); + + if (underlying.args !== undefined && 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: 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); }; } @@ -227,93 +304,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 From d37eaa8d701afad991fe0b7c8c1bafeb613a0aa4 Mon Sep 17 00:00:00 2001 From: Vladimir Matveev Date: Sat, 12 Sep 2015 12:46:18 -0700 Subject: [PATCH 42/56] update error message text --- src/compiler/diagnosticInformationMap.generated.ts | 1 + src/compiler/diagnosticMessages.json | 4 ++++ src/compiler/program.ts | 2 +- tests/baselines/reference/nodeResolution5.errors.txt | 4 ++-- tests/baselines/reference/nodeResolution7.errors.txt | 4 ++-- 5 files changed, 10 insertions(+), 5 deletions(-) diff --git a/src/compiler/diagnosticInformationMap.generated.ts b/src/compiler/diagnosticInformationMap.generated.ts index cf30e250d85..7d1d63e5a56 100644 --- a/src/compiler/diagnosticInformationMap.generated.ts +++ b/src/compiler/diagnosticInformationMap.generated.ts @@ -431,6 +431,7 @@ namespace ts { 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}'." }, Exported_external_package_typings_file_cannot_contain_tripleslash_references_Please_contact_the_package_author_to_update_the_package_definition: { code: 2654, category: 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: 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: 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: 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}'." }, diff --git a/src/compiler/diagnosticMessages.json b/src/compiler/diagnosticMessages.json index 4720303df25..245be4a3c9b 100644 --- a/src/compiler/diagnosticMessages.json +++ b/src/compiler/diagnosticMessages.json @@ -1713,6 +1713,10 @@ "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 diff --git a/src/compiler/program.ts b/src/compiler/program.ts index 28dd477666b..1ac4151e834 100644 --- a/src/compiler/program.ts +++ b/src/compiler/program.ts @@ -863,7 +863,7 @@ namespace ts { 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.File_0_is_not_a_module, importedFile.fileName)); + 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) diff --git a/tests/baselines/reference/nodeResolution5.errors.txt b/tests/baselines/reference/nodeResolution5.errors.txt index 1fc4e1cee52..c36cce45b6d 100644 --- a/tests/baselines/reference/nodeResolution5.errors.txt +++ b/tests/baselines/reference/nodeResolution5.errors.txt @@ -1,10 +1,10 @@ -tests/cases/compiler/b.ts(1,20): error TS2306: File 'tests/cases/compiler/node_modules/a.d.ts' is not a module. +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 TS2306: File 'a.d.ts' is not a module. +!!! 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) ==== diff --git a/tests/baselines/reference/nodeResolution7.errors.txt b/tests/baselines/reference/nodeResolution7.errors.txt index 1e1f822f0d4..f9e8ef7ac0f 100644 --- a/tests/baselines/reference/nodeResolution7.errors.txt +++ b/tests/baselines/reference/nodeResolution7.errors.txt @@ -1,10 +1,10 @@ -tests/cases/compiler/b.ts(1,20): error TS2306: File 'tests/cases/compiler/node_modules/a/index.d.ts' is not a module. +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 TS2306: File 'index.d.ts' is not a module. +!!! 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) ==== From 0d126e2ad78252eb6584f2667758deb2b6a03a85 Mon Sep 17 00:00:00 2001 From: Mohamed Hegazy Date: Sat, 12 Sep 2015 14:40:05 -0700 Subject: [PATCH 43/56] add support for tsconfig files in the rwc instrumenter/replay --- src/harness/harness.ts | 8 ++++++++ src/harness/loggedIO.ts | 18 +++++++++++++++++- src/harness/rwcRunner.ts | 20 +++++++++++++++++++- 3 files changed, 44 insertions(+), 2 deletions(-) diff --git a/src/harness/harness.ts b/src/harness/harness.ts index f65a4f88730..2493eec867b 100644 --- a/src/harness/harness.ts +++ b/src/harness/harness.ts @@ -428,6 +428,7 @@ module Harness { args(): string[]; getExecutingFilePath(): string; exit(exitCode?: number): void; + readDirectory(path: string, extension?: string, exclude?: string[]): string[]; } export var IO: IO; @@ -464,6 +465,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)) { @@ -532,6 +534,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); @@ -730,6 +734,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)); + } } } diff --git a/src/harness/loggedIO.ts b/src/harness/loggedIO.ts index 3d1833b061f..38c9cc7e795 100644 --- a/src/harness/loggedIO.ts +++ b/src/harness/loggedIO.ts @@ -59,6 +59,12 @@ interface IOLog { path: string; result?: string; }[]; + directoriesRead: { + path: string, + extension: string, + exclude: string[], + result: string[] + }[]; } interface PlaybackControl { @@ -103,6 +109,7 @@ module Playback { arguments: [], currentDirectory: "", filesRead: [], + directoriesRead: [], filesWritten: [], filesDeleted: [], filesAppended: [], @@ -118,7 +125,7 @@ module Playback { 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 { + function initWrapper(wrapper: PlaybackSystem | PlaybackIO, underlying: ts.System | Harness.IO): void { ts.forEach(Object.keys(underlying), prop => { (wrapper)[prop] = (underlying)[prop]; }); @@ -203,6 +210,15 @@ module Playback { }, 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: path, contents: contents, bom: false }), (path, contents) => noOpReplay("writeFile")); diff --git a/src/harness/rwcRunner.ts b/src/harness/rwcRunner.ts index a1aaeed3d55..8bfb8400c59 100644 --- a/src/harness/rwcRunner.ts +++ b/src/harness/rwcRunner.ts @@ -19,6 +19,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,8 +72,17 @@ 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 configParseResult = ts.parseConfigFile(tsconfigFileContents.content, Harness.IO, ts.getDirectoryPath(tsconfigFile.path)); + fileNames = configParseResult.fileNames; + } + // Load the files - ts.forEach(opts.fileNames, fileName => { + ts.forEach(fileNames, fileName => { inputFiles.push(getHarnessCompilerInputUnit(fileName)); }); @@ -79,6 +93,10 @@ 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; From 7ae902d75ae6ef8b861bcdfde2dc1b0439b36123 Mon Sep 17 00:00:00 2001 From: Mohamed Hegazy Date: Sun, 13 Sep 2015 23:26:52 -0700 Subject: [PATCH 44/56] Handel compiler options correctelly --- src/harness/rwcRunner.ts | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/src/harness/rwcRunner.ts b/src/harness/rwcRunner.ts index 8bfb8400c59..c6637562ce5 100644 --- a/src/harness/rwcRunner.ts +++ b/src/harness/rwcRunner.ts @@ -77,8 +77,10 @@ module RWC { let tsconfigFile = ts.forEach(ioLog.filesRead, f => isTsConfigFile(f) ? f : undefined); if (tsconfigFile) { let tsconfigFileContents = getHarnessCompilerInputUnit(tsconfigFile.path); - let configParseResult = ts.parseConfigFile(tsconfigFileContents.content, Harness.IO, ts.getDirectoryPath(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 From d9112f5e989eb6d0e3b606ee73deff607a19b9e2 Mon Sep 17 00:00:00 2001 From: Mohamed Hegazy Date: Sun, 13 Sep 2015 23:35:22 -0700 Subject: [PATCH 45/56] use resolvePath to handel relative references correctelly --- src/harness/loggedIO.ts | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/src/harness/loggedIO.ts b/src/harness/loggedIO.ts index 38c9cc7e795..46a791944b6 100644 --- a/src/harness/loggedIO.ts +++ b/src/harness/loggedIO.ts @@ -270,7 +270,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) { @@ -286,6 +286,7 @@ 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); From 5636655cf4229c84c82ee401cf65774c8c34d989 Mon Sep 17 00:00:00 2001 From: Vladimir Matveev Date: Mon, 14 Sep 2015 14:33:35 -0700 Subject: [PATCH 46/56] report error if module name is empty --- src/compiler/checker.ts | 2 +- .../reference/emptyModuleName.errors.txt | 9 +++++++++ tests/baselines/reference/emptyModuleName.js | 19 +++++++++++++++++++ tests/cases/compiler/emptyModuleName.ts | 4 ++++ 4 files changed, 33 insertions(+), 1 deletion(-) create mode 100644 tests/baselines/reference/emptyModuleName.errors.txt create mode 100644 tests/baselines/reference/emptyModuleName.js create mode 100644 tests/cases/compiler/emptyModuleName.ts diff --git a/src/compiler/checker.ts b/src/compiler/checker.ts index f2d1f070b2d..13eb00f5af7 100644 --- a/src/compiler/checker.ts +++ b/src/compiler/checker.ts @@ -965,7 +965,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); 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/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 From c63dfbd4c7c0905b016e9b317ca2bb150ea24136 Mon Sep 17 00:00:00 2001 From: Mohamed Hegazy Date: Tue, 15 Sep 2015 11:43:28 -0700 Subject: [PATCH 47/56] Update node resolution tests --- .../aliasUsageInFunctionExpression.symbols | 16 ++--- .../aliasUsageInFunctionExpression.types | 6 +- .../reference/aliasUsageInGenericFunction.js | 10 ++-- .../aliasUsageInGenericFunction.symbols | 18 +++--- .../aliasUsageInGenericFunction.types | 6 +- .../reference/aliasUsageInIndexerOfClass.js | 10 ++-- .../aliasUsageInIndexerOfClass.symbols | 20 +++---- .../aliasUsageInIndexerOfClass.types | 6 +- .../reference/aliasUsageInObjectLiteral.js | 10 ++-- .../aliasUsageInObjectLiteral.symbols | 24 ++++---- .../reference/aliasUsageInObjectLiteral.types | 6 +- .../reference/aliasUsageInOrExpression.js | 10 ++-- .../aliasUsageInOrExpression.symbols | 36 +++++------ .../reference/aliasUsageInOrExpression.types | 6 +- ...aliasUsageInTypeArgumentOfExtendsClause.js | 10 ++-- ...UsageInTypeArgumentOfExtendsClause.symbols | 18 +++--- ...asUsageInTypeArgumentOfExtendsClause.types | 6 +- .../reference/aliasUsageInVarAssignment.js | 8 +-- .../aliasUsageInVarAssignment.symbols | 16 ++--- .../reference/aliasUsageInVarAssignment.types | 6 +- .../reference/aliasUsedAsNameValue.js | 8 +-- .../reference/aliasUsedAsNameValue.symbols | 8 +-- .../reference/aliasUsedAsNameValue.types | 4 +- ...tAssignmentUsedInVarInitializer.errors.txt | 2 +- ...aceExportAssignmentUsedInVarInitializer.js | 2 +- .../reference/arrayOfExportedClass.js | 2 +- .../reference/arrayOfExportedClass.symbols | 8 +-- .../reference/arrayOfExportedClass.types | 2 +- .../baselines/reference/chainedImportAlias.js | 4 +- .../reference/chainedImportAlias.symbols | 6 +- .../reference/chainedImportAlias.types | 2 +- .../reference/commentsExternalModules3.js | 6 +- .../commentsExternalModules3.symbols | 2 +- .../reference/commentsExternalModules3.types | 2 +- .../declFileAliasUseBeforeDeclaration.js | 4 +- .../declFileAliasUseBeforeDeclaration.symbols | 2 +- .../declFileAliasUseBeforeDeclaration.types | 2 +- .../reference/declFileForExportedImport.js | 6 +- .../declFileForExportedImport.symbols | 2 +- .../reference/declFileForExportedImport.types | 2 +- ...eclFileImportModuleWithExportAssignment.js | 6 +- ...leImportModuleWithExportAssignment.symbols | 2 +- ...FileImportModuleWithExportAssignment.types | 2 +- .../declarationEmit_exportAssignment.js | 6 +- .../declarationEmit_exportAssignment.symbols | 2 +- .../declarationEmit_exportAssignment.types | 2 +- .../declarationEmit_exportDeclaration.js | 6 +- .../declarationEmit_exportDeclaration.symbols | 2 +- .../declarationEmit_exportDeclaration.types | 2 +- .../declarationEmit_nameConflicts.js | 6 +- .../declarationEmit_nameConflicts.symbols | 30 +++++----- .../declarationEmit_nameConflicts.types | 2 +- .../defaultExportsCannotMerge01.errors.txt | 19 ++---- .../defaultExportsCannotMerge02.errors.txt | 19 ++---- .../defaultExportsCannotMerge03.errors.txt | 19 ++---- .../baselines/reference/elidingImportNames.js | 8 +-- .../reference/elidingImportNames.symbols | 4 +- .../reference/elidingImportNames.types | 4 +- .../reference/enumFromExternalModule.js | 4 +- .../reference/enumFromExternalModule.symbols | 2 +- .../reference/enumFromExternalModule.types | 2 +- .../errorsOnImportedSymbol.errors.txt | 2 +- .../reference/errorsOnImportedSymbol.js | 2 +- .../baselines/reference/es6ExportAllInEs5.js | 6 +- .../reference/es6ExportAllInEs5.symbols | 2 +- .../reference/es6ExportAllInEs5.types | 2 +- ...ExportClauseWithoutModuleSpecifierInEs5.js | 28 ++++----- ...tClauseWithoutModuleSpecifierInEs5.symbols | 10 ++-- ...ortClauseWithoutModuleSpecifierInEs5.types | 10 ++-- .../reference/es6ImportDefaultBindingDts.js | 8 +-- .../es6ImportDefaultBindingDts.symbols | 4 +- .../es6ImportDefaultBindingDts.types | 4 +- ...tBindingFollowedWithNamedImport.errors.txt | 12 ++-- ...rtDefaultBindingFollowedWithNamedImport.js | 22 +++---- ...ngFollowedWithNamedImport1InEs5.errors.txt | 12 ++-- ...ultBindingFollowedWithNamedImport1InEs5.js | 24 ++++---- ...lowedWithNamedImport1WithExport.errors.txt | 12 ++-- ...ndingFollowedWithNamedImport1WithExport.js | 24 ++++---- ...ndingFollowedWithNamedImportDts.errors.txt | 12 ++-- ...efaultBindingFollowedWithNamedImportDts.js | 32 +++++----- ...dingFollowedWithNamedImportDts1.errors.txt | 12 ++-- ...faultBindingFollowedWithNamedImportDts1.js | 26 ++++---- ...ingFollowedWithNamedImportInEs5.errors.txt | 12 ++-- ...aultBindingFollowedWithNamedImportInEs5.js | 22 +++---- ...ndingFollowedWithNamespaceBinding1InEs5.js | 4 +- ...FollowedWithNamespaceBinding1InEs5.symbols | 2 +- ...ngFollowedWithNamespaceBinding1InEs5.types | 2 +- ...FollowedWithNamespaceBindingDts.errors.txt | 2 +- ...tBindingFollowedWithNamespaceBindingDts.js | 6 +- ...llowedWithNamespaceBindingInEs5.errors.txt | 2 +- ...indingFollowedWithNamespaceBindingInEs5.js | 4 +- ...dWithNamespaceBindingWithExport.errors.txt | 2 +- ...gFollowedWithNamespaceBindingWithExport.js | 4 +- .../es6ImportDefaultBindingInEs5.errors.txt | 2 +- .../reference/es6ImportDefaultBindingInEs5.js | 2 +- ...ImportDefaultBindingMergeErrors.errors.txt | 8 +-- .../es6ImportDefaultBindingMergeErrors.js | 10 ++-- ...DefaultBindingNoDefaultProperty.errors.txt | 2 +- ...s6ImportDefaultBindingNoDefaultProperty.js | 2 +- .../es6ImportNameSpaceImport.errors.txt | 4 +- .../reference/es6ImportNameSpaceImport.js | 6 +- .../reference/es6ImportNameSpaceImportDts.js | 8 +-- .../es6ImportNameSpaceImportDts.symbols | 4 +- .../es6ImportNameSpaceImportDts.types | 4 +- .../es6ImportNameSpaceImportInEs5.js | 6 +- .../es6ImportNameSpaceImportInEs5.symbols | 4 +- .../es6ImportNameSpaceImportInEs5.types | 4 +- ...mportNameSpaceImportMergeErrors.errors.txt | 8 +-- .../es6ImportNameSpaceImportMergeErrors.js | 8 +-- .../es6ImportNameSpaceImportNoNamedExports.js | 2 +- ...mportNameSpaceImportNoNamedExports.symbols | 2 +- ...6ImportNameSpaceImportNoNamedExports.types | 2 +- .../reference/es6ImportNamedImport.errors.txt | 24 ++++---- .../reference/es6ImportNamedImport.js | 42 ++++++------- .../reference/es6ImportNamedImportDts.js | 60 +++++++++---------- .../reference/es6ImportNamedImportDts.symbols | 24 ++++---- .../reference/es6ImportNamedImportDts.types | 24 ++++---- .../reference/es6ImportNamedImportInEs5.js | 42 ++++++------- .../es6ImportNamedImportInEs5.symbols | 24 ++++---- .../reference/es6ImportNamedImportInEs5.types | 24 ++++---- ...rtNamedImportInExportAssignment.errors.txt | 2 +- .../es6ImportNamedImportInExportAssignment.js | 6 +- ...rtNamedImportInIndirectExportAssignment.js | 6 +- ...edImportInIndirectExportAssignment.symbols | 6 +- ...amedImportInIndirectExportAssignment.types | 2 +- ...es6ImportNamedImportMergeErrors.errors.txt | 12 ++-- .../es6ImportNamedImportMergeErrors.js | 12 ++-- ...ImportNamedImportNoExportMember.errors.txt | 4 +- .../es6ImportNamedImportNoExportMember.js | 4 +- ...ImportNamedImportNoNamedExports.errors.txt | 4 +- .../es6ImportNamedImportNoNamedExports.js | 4 +- .../es6ImportNamedImportWithExport.errors.txt | 24 ++++---- .../es6ImportNamedImportWithExport.js | 42 ++++++------- .../es6ImportNamedImportWithTypesAndValues.js | 6 +- ...mportNamedImportWithTypesAndValues.symbols | 4 +- ...6ImportNamedImportWithTypesAndValues.types | 2 +- .../reference/exportAssignClassAndModule.js | 2 +- .../exportAssignClassAndModule.symbols | 2 +- .../exportAssignClassAndModule.types | 2 +- .../reference/exportAssignmentEnum.js | 4 +- .../reference/exportAssignmentEnum.symbols | 2 +- .../reference/exportAssignmentEnum.types | 2 +- ...ignmentOfDeclaredExternalModule.errors.txt | 2 +- ...xportAssignmentOfDeclaredExternalModule.js | 2 +- .../reference/exportAssignmentVariable.js | 4 +- .../exportAssignmentVariable.symbols | 2 +- .../reference/exportAssignmentVariable.types | 2 +- .../exportEqualMemberMissing.errors.txt | 2 +- .../reference/exportEqualMemberMissing.js | 4 +- .../exportStarFromEmptyModule.errors.txt | 8 +-- .../reference/exportStarFromEmptyModule.js | 16 ++--- ...xtendingClassFromAliasAndUsageInIndexer.js | 18 +++--- ...ingClassFromAliasAndUsageInIndexer.symbols | 30 +++++----- ...ndingClassFromAliasAndUsageInIndexer.types | 10 ++-- ...rnalModuleExportingGenericClass.errors.txt | 2 +- .../externalModuleExportingGenericClass.js | 4 +- ...externalModuleImmutableBindings.errors.txt | 2 +- .../externalModuleImmutableBindings.js | 4 +- .../reference/importAsBaseClass.errors.txt | 2 +- .../baselines/reference/importAsBaseClass.js | 4 +- tests/baselines/reference/importDecl.js | 34 +++++------ tests/baselines/reference/importDecl.symbols | 22 +++---- tests/baselines/reference/importDecl.types | 14 ++--- .../importDeclarationUsedAsTypeQuery.js | 4 +- .../importDeclarationUsedAsTypeQuery.symbols | 2 +- .../importDeclarationUsedAsTypeQuery.types | 2 +- .../reference/importUsedInExtendsList1.js | 4 +- .../importUsedInExtendsList1.symbols | 6 +- .../reference/importUsedInExtendsList1.types | 2 +- .../reference/localAliasExportAssignment.js | 4 +- .../localAliasExportAssignment.symbols | 2 +- .../localAliasExportAssignment.types | 2 +- .../moduleInTypePosition1.errors.txt | 2 +- .../reference/moduleInTypePosition1.js | 2 +- .../baselines/reference/multiImportExport.js | 12 ++-- .../reference/multiImportExport.symbols | 4 +- .../reference/multiImportExport.types | 4 +- .../multipleDefaultExports01.errors.txt | 2 +- .../reference/multipleDefaultExports01.js | 4 +- .../multipleDefaultExports02.errors.txt | 2 +- .../reference/multipleDefaultExports02.js | 4 +- ...ivacyCannotNameAccessorDeclFile.errors.txt | 4 +- .../privacyCannotNameAccessorDeclFile.js | 10 ++-- ...rivacyCannotNameVarTypeDeclFile.errors.txt | 4 +- .../privacyCannotNameVarTypeDeclFile.js | 10 ++-- ...nalModuleExportAssignmentOfGenericClass.js | 4 +- ...duleExportAssignmentOfGenericClass.symbols | 2 +- ...ModuleExportAssignmentOfGenericClass.types | 2 +- ...CannotNameParameterTypeDeclFile.errors.txt | 4 +- ...FunctionCannotNameParameterTypeDeclFile.js | 10 ++-- ...ionCannotNameReturnTypeDeclFile.errors.txt | 4 +- ...acyFunctionCannotNameReturnTypeDeclFile.js | 10 ++-- ...elAmbientExternalModuleImportWithExport.js | 12 ++-- ...ientExternalModuleImportWithExport.symbols | 20 +++---- ...mbientExternalModuleImportWithExport.types | 4 +- .../requireOfAnEmptyFile1.errors.txt | 4 +- .../reference/requireOfAnEmptyFile1.js | 2 +- .../reference/reuseInnerModuleMember.js | 2 +- .../reference/reuseInnerModuleMember.symbols | 6 +- .../reference/reuseInnerModuleMember.types | 2 +- .../reference/staticInstanceResolution3.js | 4 +- .../staticInstanceResolution3.symbols | 2 +- .../reference/staticInstanceResolution3.types | 2 +- .../baselines/reference/topLevelFileModule.js | 8 +-- .../reference/topLevelFileModule.symbols | 8 +-- .../reference/topLevelFileModule.types | 4 +- ...pressionWithUndefinedCallResolutionData.js | 4 +- ...ionWithUndefinedCallResolutionData.symbols | 2 +- ...ssionWithUndefinedCallResolutionData.types | 2 +- .../typeofAmbientExternalModules.errors.txt | 4 +- .../reference/typeofAmbientExternalModules.js | 8 +-- .../typeofExternalModules.errors.txt | 4 +- .../reference/typeofExternalModules.js | 8 +-- .../reference/unusedImportDeclaration.js | 2 +- .../reference/unusedImportDeclaration.symbols | 2 +- .../reference/unusedImportDeclaration.types | 2 +- .../visibilityOfCrossModuleTypeUsage.js | 6 +- .../visibilityOfCrossModuleTypeUsage.symbols | 18 +++--- .../visibilityOfCrossModuleTypeUsage.types | 6 +- .../voidAsNonAmbiguousReturnType.errors.txt | 2 +- .../reference/voidAsNonAmbiguousReturnType.js | 4 +- tests/cases/compiler/aliasAssignments.ts | 2 +- .../compiler/aliasUsageInAccessorsOfClass.ts | 8 +-- tests/cases/compiler/aliasUsageInArray.ts | 6 +- .../aliasUsageInFunctionExpression.ts | 8 +-- .../compiler/aliasUsageInGenericFunction.ts | 8 +-- .../compiler/aliasUsageInIndexerOfClass.ts | 8 +-- .../compiler/aliasUsageInObjectLiteral.ts | 8 +-- .../compiler/aliasUsageInOrExpression.ts | 8 +-- ...aliasUsageInTypeArgumentOfExtendsClause.ts | 8 +-- .../compiler/aliasUsageInVarAssignment.ts | 8 +-- tests/cases/compiler/aliasUsedAsNameValue.ts | 6 +- ...aceExportAssignmentUsedInVarInitializer.ts | 4 +- tests/cases/compiler/arrayOfExportedClass.ts | 4 +- tests/cases/compiler/chainedImportAlias.ts | 4 +- .../compiler/commentsExternalModules3.ts | 2 +- .../declFileAliasUseBeforeDeclaration.ts | 6 +- .../compiler/declFileForExportedImport.ts | 2 +- ...eclFileImportModuleWithExportAssignment.ts | 4 +- .../declarationEmit_exportAssignment.ts | 2 +- .../declarationEmit_exportDeclaration.ts | 2 +- .../compiler/declarationEmit_nameConflicts.ts | 2 +- tests/cases/compiler/elidingImportNames.ts | 4 +- .../cases/compiler/enumFromExternalModule.ts | 4 +- .../cases/compiler/errorsOnImportedSymbol.ts | 6 +- tests/cases/compiler/es6ExportAllInEs5.ts | 2 +- ...ExportClauseWithoutModuleSpecifierInEs5.ts | 10 ++-- .../compiler/es6ImportDefaultBindingDts.ts | 4 +- ...rtDefaultBindingFollowedWithNamedImport.ts | 12 ++-- ...ultBindingFollowedWithNamedImport1InEs5.ts | 12 ++-- ...ndingFollowedWithNamedImport1WithExport.ts | 12 ++-- ...efaultBindingFollowedWithNamedImportDts.ts | 12 ++-- ...faultBindingFollowedWithNamedImportDts1.ts | 12 ++-- ...aultBindingFollowedWithNamedImportInEs5.ts | 12 ++-- ...ndingFollowedWithNamespaceBinding1InEs5.ts | 2 +- ...tBindingFollowedWithNamespaceBindingDts.ts | 2 +- ...indingFollowedWithNamespaceBindingInEs5.ts | 2 +- ...gFollowedWithNamespaceBindingWithExport.ts | 2 +- .../compiler/es6ImportDefaultBindingInEs5.ts | 2 +- .../es6ImportDefaultBindingMergeErrors.ts | 8 +-- ...s6ImportDefaultBindingNoDefaultProperty.ts | 2 +- .../compiler/es6ImportNameSpaceImport.ts | 4 +- .../compiler/es6ImportNameSpaceImportDts.ts | 4 +- .../compiler/es6ImportNameSpaceImportInEs5.ts | 4 +- .../es6ImportNameSpaceImportMergeErrors.ts | 8 +-- .../es6ImportNameSpaceImportNoNamedExports.ts | 2 +- tests/cases/compiler/es6ImportNamedImport.ts | 24 ++++---- .../cases/compiler/es6ImportNamedImportDts.ts | 24 ++++---- .../compiler/es6ImportNamedImportInEs5.ts | 24 ++++---- .../es6ImportNamedImportInExportAssignment.ts | 2 +- ...rtNamedImportInIndirectExportAssignment.ts | 2 +- .../es6ImportNamedImportMergeErrors.ts | 12 ++-- .../es6ImportNamedImportNoExportMember.ts | 4 +- .../es6ImportNamedImportNoNamedExports.ts | 4 +- .../es6ImportNamedImportWithExport.ts | 24 ++++---- .../es6ImportNamedImportWithTypesAndValues.ts | 2 +- .../compiler/exportAssignClassAndModule.ts | 4 +- tests/cases/compiler/exportAssignmentEnum.ts | 4 +- ...xportAssignmentOfDeclaredExternalModule.ts | 4 +- .../compiler/exportAssignmentVariable.ts | 4 +- .../compiler/exportEqualMemberMissing.ts | 4 +- .../compiler/exportStarFromEmptyModule.ts | 6 +- ...xtendingClassFromAliasAndUsageInIndexer.ts | 12 ++-- .../externalModuleExportingGenericClass.ts | 2 +- .../externalModuleImmutableBindings.ts | 2 +- ...ernceResolutionOrderInImportDeclaration.ts | 4 +- tests/cases/compiler/importAsBaseClass.ts | 4 +- tests/cases/compiler/importDecl.ts | 16 ++--- .../importDeclarationUsedAsTypeQuery.ts | 4 +- .../compiler/importUsedInExtendsList1.ts | 4 +- .../compiler/localAliasExportAssignment.ts | 4 +- tests/cases/compiler/moduleInTypePosition1.ts | 4 +- tests/cases/compiler/multiImportExport.ts | 4 +- .../privacyCannotNameAccessorDeclFile.ts | 4 +- .../privacyCannotNameVarTypeDeclFile.ts | 4 +- ...nalModuleExportAssignmentOfGenericClass.ts | 6 +- ...FunctionCannotNameParameterTypeDeclFile.ts | 4 +- ...acyFunctionCannotNameReturnTypeDeclFile.ts | 4 +- ...elAmbientExternalModuleImportWithExport.ts | 8 +-- tests/cases/compiler/requireOfAnEmptyFile1.ts | 4 +- .../cases/compiler/reuseInnerModuleMember.ts | 4 +- .../compiler/staticInstanceResolution3.ts | 4 +- ...pressionWithUndefinedCallResolutionData.ts | 4 +- .../compiler/typeofAmbientExternalModules.ts | 6 +- tests/cases/compiler/typeofExternalModules.ts | 6 +- .../cases/compiler/unusedImportDeclaration.ts | 6 +- .../visibilityOfCrossModuleTypeUsage.ts | 8 +-- .../compiler/voidAsNonAmbiguousReturnType.ts | 4 +- .../es6/modules/multipleDefaultExports01.ts | 2 +- .../es6/modules/multipleDefaultExports02.ts | 2 +- .../externalModules/topLevelFileModule.ts | 4 +- .../topLevelModuleDeclarationAndFile.ts | 2 +- 312 files changed, 1149 insertions(+), 1176 deletions(-) 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/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..1e41e82e448 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 { 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/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/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/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/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/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/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/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/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/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/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/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 index 2688d4af06f..b0b7465477b 100644 --- a/tests/baselines/reference/es6ImportDefaultBindingFollowedWithNamedImport.errors.txt +++ b/tests/baselines/reference/es6ImportDefaultBindingFollowedWithNamedImport.errors.txt @@ -10,16 +10,16 @@ error TS1204: Cannot compile modules into 'commonjs', 'amd', 'system' or 'umd' w export default {}; ==== tests/cases/compiler/es6ImportDefaultBindingFollowedWithNamedImport_1.ts (0 errors) ==== - 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; \ No newline at end of file diff --git a/tests/baselines/reference/es6ImportDefaultBindingFollowedWithNamedImport.js b/tests/baselines/reference/es6ImportDefaultBindingFollowedWithNamedImport.js index 641941db9e5..554fecf9116 100644 --- a/tests/baselines/reference/es6ImportDefaultBindingFollowedWithNamedImport.js +++ b/tests/baselines/reference/es6ImportDefaultBindingFollowedWithNamedImport.js @@ -8,17 +8,17 @@ 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; @@ -28,16 +28,16 @@ export var x = a; export var m = a; export default {}; //// [es6ImportDefaultBindingFollowedWithNamedImport_1.js] -import { a } from "es6ImportDefaultBindingFollowedWithNamedImport_0"; +import { a } from "./es6ImportDefaultBindingFollowedWithNamedImport_0"; var x1 = a; -import { a as b } from "es6ImportDefaultBindingFollowedWithNamedImport_0"; +import { a as b } from "./es6ImportDefaultBindingFollowedWithNamedImport_0"; var x1 = b; -import { x, a as y } from "es6ImportDefaultBindingFollowedWithNamedImport_0"; +import { x, a as y } from "./es6ImportDefaultBindingFollowedWithNamedImport_0"; var x1 = x; var x1 = y; -import { x as z } from "es6ImportDefaultBindingFollowedWithNamedImport_0"; +import { x as z } from "./es6ImportDefaultBindingFollowedWithNamedImport_0"; var x1 = z; -import { m } from "es6ImportDefaultBindingFollowedWithNamedImport_0"; +import { m } from "./es6ImportDefaultBindingFollowedWithNamedImport_0"; var x1 = m; 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/es6ImportNameSpaceImport.errors.txt b/tests/baselines/reference/es6ImportNameSpaceImport.errors.txt index 00a6dcb2cfd..67616662ca8 100644 --- a/tests/baselines/reference/es6ImportNameSpaceImport.errors.txt +++ b/tests/baselines/reference/es6ImportNameSpaceImport.errors.txt @@ -7,7 +7,7 @@ error TS1204: Cannot compile modules into 'commonjs', 'amd', 'system' or 'umd' w export var a = 10; ==== tests/cases/compiler/es6ImportNameSpaceImport_1.ts (0 errors) ==== - 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 \ No newline at end of file diff --git a/tests/baselines/reference/es6ImportNameSpaceImport.js b/tests/baselines/reference/es6ImportNameSpaceImport.js index 653feeb22b7..7498b8ee9e8 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; //// [es6ImportNameSpaceImport_1.js] -import * as nameSpaceBinding from "es6ImportNameSpaceImport_0"; +import * as nameSpaceBinding from "./es6ImportNameSpaceImport_0"; var x = nameSpaceBinding.a; 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 index 12dcf331967..efcda1f5368 100644 --- a/tests/baselines/reference/es6ImportNamedImport.errors.txt +++ b/tests/baselines/reference/es6ImportNamedImport.errors.txt @@ -14,31 +14,31 @@ error TS1204: Cannot compile modules into 'commonjs', 'amd', 'system' or 'umd' w export var aaaa = 10; ==== tests/cases/compiler/es6ImportNamedImport_1.ts (0 errors) ==== - 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"; \ No newline at end of file diff --git a/tests/baselines/reference/es6ImportNamedImport.js b/tests/baselines/reference/es6ImportNamedImport.js index 9606c59351b..6edb6ccb7cd 100644 --- a/tests/baselines/reference/es6ImportNamedImport.js +++ b/tests/baselines/reference/es6ImportNamedImport.js @@ -12,33 +12,33 @@ 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] @@ -51,26 +51,26 @@ export var z1 = 10; export var z2 = 10; export var aaaa = 10; //// [es6ImportNamedImport_1.js] -import { a } 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 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 index 970c51973b2..fec4d182158 100644 --- a/tests/baselines/reference/es6ImportNamedImportInExportAssignment.errors.txt +++ b/tests/baselines/reference/es6ImportNamedImportInExportAssignment.errors.txt @@ -8,7 +8,7 @@ tests/cases/compiler/es6ImportNamedImportInExportAssignment_1.ts(2,1): error TS1 export var a = 10; ==== tests/cases/compiler/es6ImportNamedImportInExportAssignment_1.ts (1 errors) ==== - import { a } from "es6ImportNamedImportInExportAssignment_0"; + 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..44ac0d188b3 100644 --- a/tests/baselines/reference/es6ImportNamedImportInExportAssignment.js +++ b/tests/baselines/reference/es6ImportNamedImportInExportAssignment.js @@ -5,17 +5,17 @@ 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; //// [es6ImportNamedImportInExportAssignment_1.js] -import { a } from "es6ImportNamedImportInExportAssignment_0"; +import { a } from "./es6ImportNamedImportInExportAssignment_0"; //// [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/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/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/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/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/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/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/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/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/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/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/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/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/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/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/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/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/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/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/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/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/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/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/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/commentsExternalModules3.ts b/tests/cases/compiler/commentsExternalModules3.ts index e6979939ac8..a59458893ca 100644 --- a/tests/cases/compiler/commentsExternalModules3.ts +++ b/tests/cases/compiler/commentsExternalModules3.ts @@ -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/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/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/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/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/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/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/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/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/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/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/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/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/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/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/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/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/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 From d491a301e578d57a1c7c769098efcebc797c4bef Mon Sep 17 00:00:00 2001 From: Mohamed Hegazy Date: Tue, 15 Sep 2015 11:44:12 -0700 Subject: [PATCH 48/56] Breaking changes from node resolution changes. ambient module declarations do not take precedance any longer. --- ...eRefernceResolutionOrderInImportDeclaration.errors.txt | 8 ++++---- ...nalModuleRefernceResolutionOrderInImportDeclaration.js | 4 ++-- .../reference/topLevelModuleDeclarationAndFile.errors.txt | 2 +- .../reference/topLevelModuleDeclarationAndFile.js | 4 +--- 4 files changed, 8 insertions(+), 10 deletions(-) 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/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"); From 48d0e6d1978b7b742e4640c61dd1d838df861f66 Mon Sep 17 00:00:00 2001 From: Mohamed Hegazy Date: Tue, 15 Sep 2015 12:08:55 -0700 Subject: [PATCH 49/56] Update tests to use "removeComments" instead of "comments" --- tests/cases/compiler/doNotEmitDetachedComments.ts | 2 +- .../compiler/doNotEmitDetachedCommentsAtStartOfConstructor.ts | 2 +- .../compiler/doNotEmitDetachedCommentsAtStartOfFunctionBody.ts | 2 +- .../doNotEmitDetachedCommentsAtStartOfLambdaFunction.ts | 2 +- tests/cases/compiler/doNotEmitPinnedCommentNotOnTopOfFile.ts | 2 +- tests/cases/compiler/doNotEmitPinnedCommentOnNotEmittedNode.ts | 2 +- .../cases/compiler/doNotEmitPinnedCommentOnNotEmittedNodets.ts | 2 +- tests/cases/compiler/doNotEmitPinnedDetachedComments.ts | 2 +- tests/cases/compiler/doNotEmitTripleSlashCommentsInEmptyFile.ts | 2 +- .../compiler/doNotEmitTripleSlashCommentsOnNotEmittedNode.ts | 2 +- tests/cases/compiler/doNotemitTripleSlashComments.ts | 2 +- tests/cases/compiler/emitPinnedCommentsOnTopOfFile.ts | 2 +- ...TripleSlashCommentOnNotEmittedNodeIfRemoveCommentsIsFalse.ts | 2 +- 13 files changed, 13 insertions(+), 13 deletions(-) diff --git a/tests/cases/compiler/doNotEmitDetachedComments.ts b/tests/cases/compiler/doNotEmitDetachedComments.ts index 412dbeac19b..13facb6625e 100644 --- a/tests/cases/compiler/doNotEmitDetachedComments.ts +++ b/tests/cases/compiler/doNotEmitDetachedComments.ts @@ -1,4 +1,4 @@ -// @comments: false +// @removeComments: true /* multi line diff --git a/tests/cases/compiler/doNotEmitDetachedCommentsAtStartOfConstructor.ts b/tests/cases/compiler/doNotEmitDetachedCommentsAtStartOfConstructor.ts index 1ea96993a5e..094d624df40 100644 --- a/tests/cases/compiler/doNotEmitDetachedCommentsAtStartOfConstructor.ts +++ b/tests/cases/compiler/doNotEmitDetachedCommentsAtStartOfConstructor.ts @@ -1,4 +1,4 @@ -// @comments: false +// @removeComments: true class A { constructor() { // Single Line Comment diff --git a/tests/cases/compiler/doNotEmitDetachedCommentsAtStartOfFunctionBody.ts b/tests/cases/compiler/doNotEmitDetachedCommentsAtStartOfFunctionBody.ts index 31adbc18de8..83dd8716df2 100644 --- a/tests/cases/compiler/doNotEmitDetachedCommentsAtStartOfFunctionBody.ts +++ b/tests/cases/compiler/doNotEmitDetachedCommentsAtStartOfFunctionBody.ts @@ -1,4 +1,4 @@ -// @comments: false +// @removeComments: true function foo1() { // Single line comment diff --git a/tests/cases/compiler/doNotEmitDetachedCommentsAtStartOfLambdaFunction.ts b/tests/cases/compiler/doNotEmitDetachedCommentsAtStartOfLambdaFunction.ts index c6a9cfc9e25..be6cd7b37ce 100644 --- a/tests/cases/compiler/doNotEmitDetachedCommentsAtStartOfLambdaFunction.ts +++ b/tests/cases/compiler/doNotEmitDetachedCommentsAtStartOfLambdaFunction.ts @@ -1,4 +1,4 @@ -// @comments: false +// @removeComments: true () => { // Single line comment diff --git a/tests/cases/compiler/doNotEmitPinnedCommentNotOnTopOfFile.ts b/tests/cases/compiler/doNotEmitPinnedCommentNotOnTopOfFile.ts index 0fbb1fddd81..bae1654af87 100644 --- a/tests/cases/compiler/doNotEmitPinnedCommentNotOnTopOfFile.ts +++ b/tests/cases/compiler/doNotEmitPinnedCommentNotOnTopOfFile.ts @@ -1,4 +1,4 @@ -// @comments: false +// @removeComments: true var x = 10; /*! diff --git a/tests/cases/compiler/doNotEmitPinnedCommentOnNotEmittedNode.ts b/tests/cases/compiler/doNotEmitPinnedCommentOnNotEmittedNode.ts index 48e02a372f7..23a1000fa11 100644 --- a/tests/cases/compiler/doNotEmitPinnedCommentOnNotEmittedNode.ts +++ b/tests/cases/compiler/doNotEmitPinnedCommentOnNotEmittedNode.ts @@ -1,4 +1,4 @@ -// @comments: false +// @removeComments: true class C { /*! remove pinned comment anywhere else */ diff --git a/tests/cases/compiler/doNotEmitPinnedCommentOnNotEmittedNodets.ts b/tests/cases/compiler/doNotEmitPinnedCommentOnNotEmittedNodets.ts index a59e13df55c..27c5c5f6b7b 100644 --- a/tests/cases/compiler/doNotEmitPinnedCommentOnNotEmittedNodets.ts +++ b/tests/cases/compiler/doNotEmitPinnedCommentOnNotEmittedNodets.ts @@ -1,4 +1,4 @@ -// @comments: false +// @removeComments: true class C { /*! remove pinned comment anywhere else */ diff --git a/tests/cases/compiler/doNotEmitPinnedDetachedComments.ts b/tests/cases/compiler/doNotEmitPinnedDetachedComments.ts index 534963cf4b7..f30dc9299ee 100644 --- a/tests/cases/compiler/doNotEmitPinnedDetachedComments.ts +++ b/tests/cases/compiler/doNotEmitPinnedDetachedComments.ts @@ -1,4 +1,4 @@ -// @comments: false +// @removeComments: true var x = 10; /*! Single Line comment */ diff --git a/tests/cases/compiler/doNotEmitTripleSlashCommentsInEmptyFile.ts b/tests/cases/compiler/doNotEmitTripleSlashCommentsInEmptyFile.ts index 047510e2ec9..357ce67dbed 100644 --- a/tests/cases/compiler/doNotEmitTripleSlashCommentsInEmptyFile.ts +++ b/tests/cases/compiler/doNotEmitTripleSlashCommentsInEmptyFile.ts @@ -1,4 +1,4 @@ -// @comments: false +// @removeComments: true // @Filename: file0.ts diff --git a/tests/cases/compiler/doNotEmitTripleSlashCommentsOnNotEmittedNode.ts b/tests/cases/compiler/doNotEmitTripleSlashCommentsOnNotEmittedNode.ts index 91941a6cf81..bfa5c5ffc67 100644 --- a/tests/cases/compiler/doNotEmitTripleSlashCommentsOnNotEmittedNode.ts +++ b/tests/cases/compiler/doNotEmitTripleSlashCommentsOnNotEmittedNode.ts @@ -1,4 +1,4 @@ -// @comments: false +// @removeComments: true // @Filename: file0.ts /// diff --git a/tests/cases/compiler/doNotemitTripleSlashComments.ts b/tests/cases/compiler/doNotemitTripleSlashComments.ts index f3b90662159..14fdfda2d72 100644 --- a/tests/cases/compiler/doNotemitTripleSlashComments.ts +++ b/tests/cases/compiler/doNotemitTripleSlashComments.ts @@ -1,4 +1,4 @@ -// @comments: false +// @removeComments: true // @Filename: file0.ts /// diff --git a/tests/cases/compiler/emitPinnedCommentsOnTopOfFile.ts b/tests/cases/compiler/emitPinnedCommentsOnTopOfFile.ts index bbe6c400601..985a5f638b8 100644 --- a/tests/cases/compiler/emitPinnedCommentsOnTopOfFile.ts +++ b/tests/cases/compiler/emitPinnedCommentsOnTopOfFile.ts @@ -1,4 +1,4 @@ -// @comments: false +// @removeComments: true /*! multi line diff --git a/tests/cases/compiler/emitTopOfFileTripleSlashCommentOnNotEmittedNodeIfRemoveCommentsIsFalse.ts b/tests/cases/compiler/emitTopOfFileTripleSlashCommentOnNotEmittedNodeIfRemoveCommentsIsFalse.ts index 20c04702544..56f7814104d 100644 --- a/tests/cases/compiler/emitTopOfFileTripleSlashCommentOnNotEmittedNodeIfRemoveCommentsIsFalse.ts +++ b/tests/cases/compiler/emitTopOfFileTripleSlashCommentOnNotEmittedNodeIfRemoveCommentsIsFalse.ts @@ -1,4 +1,4 @@ -// @comments: true +// @removeComments: false // @Filename: file0.ts var x = 10 From c1e536f2555a7842ae9afa545f6661400f77d4d5 Mon Sep 17 00:00:00 2001 From: Mohamed Hegazy Date: Tue, 15 Sep 2015 12:33:45 -0700 Subject: [PATCH 50/56] code review comments --- src/harness/loggedIO.ts | 50 ++++++++++++++++++++++++----------------- 1 file changed, 30 insertions(+), 20 deletions(-) diff --git a/src/harness/loggedIO.ts b/src/harness/loggedIO.ts index 46a791944b6..d0801612500 100644 --- a/src/harness/loggedIO.ts +++ b/src/harness/loggedIO.ts @@ -147,7 +147,7 @@ module Playback { recordLogFileNameBase = fileNameBase; recordLog = createEmptyLog(); - if (underlying.args !== undefined && typeof underlying.args !== "function") { + if (typeof underlying.args !== "function") { recordLog.arguments = underlying.args; } }; @@ -166,13 +166,14 @@ module Playback { }; wrapper.fileExists = recordReplay(wrapper.fileExists, underlying)( - (path) => callAndRecord(underlying.fileExists(path), recordLog.fileExists, { path: path }), - memoize((path) => { + 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: path }, false); + } + else { + return findResultByFields(replayLog.fileExists, { path }, false); } }) ); @@ -180,9 +181,11 @@ module Playback { wrapper.getExecutingFilePath = () => { if (replayLog !== undefined) { return replayLog.executingPath; - } else if (recordLog !== undefined) { + } + else if (recordLog !== undefined) { return recordLog.executingPath = underlying.getExecutingFilePath(); - } else { + } + else { return underlying.getExecutingFilePath(); } }; @@ -190,25 +193,27 @@ module Playback { wrapper.getCurrentDirectory = () => { if (replayLog !== undefined) { return replayLog.currentDirectory || ""; - } else if (recordLog !== undefined) { + } + else if (recordLog !== undefined) { return recordLog.currentDirectory = underlying.getCurrentDirectory(); - } else { + } + 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)))); + 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) => { + path => { let result = underlying.readFile(path); - let logEntry = { path: path, codepage: 0, result: { contents: result, codepage: 0 } }; + let logEntry = { path, codepage: 0, result: { contents: result, codepage: 0 } }; recordLog.filesRead.push(logEntry); return result; }, - memoize((path) => findResultByPath(wrapper, replayLog.filesRead, path).contents)); + memoize(path => findResultByPath(wrapper, replayLog.filesRead, path).contents)); wrapper.readDirectory = recordReplay(wrapper.readDirectory, underlying)( (path, extension, exclude) => { @@ -220,7 +225,7 @@ module Playback { (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: path, contents: contents, bom: false }), + (path, contents) => callAndRecord(underlying.writeFile(path, contents), recordLog.filesWritten, { path, contents, bom: false }), (path, contents) => noOpReplay("writeFile")); wrapper.exit = (exitCode) => { @@ -236,9 +241,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); } }); @@ -262,7 +269,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)); } } @@ -290,7 +298,8 @@ 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; } } @@ -308,7 +317,8 @@ module Playback { } if (pathEquivCache.hasOwnProperty(key)) { return pathEquivCache[key]; - } else { + } + else { return pathEquivCache[key] = check(); } } From c735a98523e112ccb1e7a45fc854fb3e21327939 Mon Sep 17 00:00:00 2001 From: Mohamed Hegazy Date: Tue, 15 Sep 2015 12:47:11 -0700 Subject: [PATCH 51/56] Respond to code review comments --- src/harness/fourslash.ts | 2 +- src/harness/harness.ts | 15 +++++++++------ 2 files changed, 10 insertions(+), 7 deletions(-) diff --git a/src/harness/fourslash.ts b/src/harness/fourslash.ts index ae131b8390f..1d333a29ccb 100644 --- a/src/harness/fourslash.ts +++ b/src/harness/fourslash.ts @@ -125,7 +125,7 @@ module FourSlash { // List of allowed metadata names let fileMetadataNames = [metadataOptionNames.fileName, metadataOptionNames.emitThisFile, metadataOptionNames.resolveReference]; - function convertGlobalOptionsToCompilerOptions(globalOptions: { [idx: string]: string }): ts.CompilerOptions { + function convertGlobalOptionsToCompilerOptions(globalOptions: Harness.TestCaseParser.CompilerSettings): ts.CompilerOptions { let settings: ts.CompilerOptions = { target: ts.ScriptTarget.ES5 }; Harness.Compiler.setCompilerOptionsFromHarnessSetting(globalOptions, settings); return settings; diff --git a/src/harness/harness.ts b/src/harness/harness.ts index c4287bacb43..01b583d64e1 100644 --- a/src/harness/harness.ts +++ b/src/harness/harness.ts @@ -949,7 +949,7 @@ module Harness { }; } - interface HarnesOptions { + interface HarnessOptions { useCaseSensitiveFileNames?: boolean; includeBuiltFile?: string; baselineFile?: string; @@ -977,10 +977,13 @@ module Harness { return ts.lookUp(optionsIndex, name.toLowerCase()); } - export function setCompilerOptionsFromHarnessSetting(settings: Harness.TestCaseParser.CompilerSettings, options: ts.CompilerOptions & HarnesOptions): void { + 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) { @@ -993,17 +996,17 @@ module Harness { // 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(); + let key = value.toLowerCase(); if (ts.hasProperty(map, key)) { options[option.name] = map[key]; } else { - throw new Error(`Unkown value '${value}' for compiler option '${name}'.`); + throw new Error(`Unknown value '${value}' for compiler option '${name}'.`); } } } else { - throw new Error(`Unkown compiler option '${name}'.`); + throw new Error(`Unknown compiler option '${name}'.`); } } } @@ -1062,7 +1065,7 @@ module Harness { otherFiles: { unitName: string; content: string }[], onComplete: (result: CompilerResult, program: ts.Program) => void, settingsCallback?: (settings: ts.CompilerOptions) => void, - options?: ts.CompilerOptions & HarnesOptions, + options?: ts.CompilerOptions & HarnessOptions, // Current directory is needed for rwcRunner to be able to use currentDirectory defined in json file currentDirectory?: string) { From 00dcb57e3b7403918923991782a99a4a7822f527 Mon Sep 17 00:00:00 2001 From: Daniel Rosenwasser Date: Tue, 15 Sep 2015 15:08:48 -0700 Subject: [PATCH 52/56] Bump version back to 1.7.0. --- package.json | 2 +- src/compiler/program.ts | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/package.json b/package.json index 8ce9989b617..b743b04838d 100644 --- a/package.json +++ b/package.json @@ -2,7 +2,7 @@ "name": "typescript", "author": "Microsoft Corp.", "homepage": "http://typescriptlang.org/", - "version": "1.6.2", + "version": "1.7.0", "license": "Apache-2.0", "description": "TypeScript is a language for application scale JavaScript development", "keywords": [ diff --git a/src/compiler/program.ts b/src/compiler/program.ts index 5664fc7c462..3da3c354fb2 100644 --- a/src/compiler/program.ts +++ b/src/compiler/program.ts @@ -12,7 +12,7 @@ namespace ts { let emptyArray: any[] = []; - export const version = "1.6.2"; + export const version = "1.7.0"; export function findConfigFile(searchPath: string): string { let fileName = "tsconfig.json"; From ad8bcfabdce1a50d0220eca391bdc5d2735a7853 Mon Sep 17 00:00:00 2001 From: Daniel Rosenwasser Date: Tue, 15 Sep 2015 15:18:24 -0700 Subject: [PATCH 53/56] handeles -> handles --- tests/cases/unittests/services/preProcessFile.ts | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/tests/cases/unittests/services/preProcessFile.ts b/tests/cases/unittests/services/preProcessFile.ts index 7b645069212..a3f8db5528f 100644 --- a/tests/cases/unittests/services/preProcessFile.ts +++ b/tests/cases/unittests/services/preProcessFile.ts @@ -174,7 +174,7 @@ describe('PreProcessFile:', function () { }) }); - it("Correctly handeles export import declarations", function () { + it("Correctly handles export import declarations", function () { test("export import a = require(\"m1\");", true, { From 4fedd77c3310eeebb6bc189f99e0be2b2e916766 Mon Sep 17 00:00:00 2001 From: Daniel Rosenwasser Date: Tue, 15 Sep 2015 15:18:59 -0700 Subject: [PATCH 54/56] Update LKG. --- lib/tsc.js | 303 ++++++++++++------- lib/tsserver.js | 570 ++++++++++++++---------------------- lib/typescript.d.ts | 5 +- lib/typescript.js | 397 ++++++++++++++++--------- lib/typescriptServices.d.ts | 5 +- lib/typescriptServices.js | 397 ++++++++++++++++--------- 6 files changed, 932 insertions(+), 745 deletions(-) diff --git a/lib/tsc.js b/lib/tsc.js index a98799b1d86..3983b8c1e1b 100644 --- a/lib/tsc.js +++ b/lib/tsc.js @@ -1248,7 +1248,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 +1419,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,8 +1432,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}'." }, @@ -1625,6 +1628,10 @@ var ts; /// var ts; (function (ts) { + function tokenIsIdentifierOrKeyword(token) { + return token >= 67; + } + ts.tokenIsIdentifierOrKeyword = tokenIsIdentifierOrKeyword; var textToToken = { "abstract": 113, "any": 115, @@ -2916,7 +2923,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); @@ -4032,6 +4039,7 @@ var ts; } ts.getJsDocComments = getJsDocComments; ts.fullTripleSlashReferencePathRegEx = /^(\/\/\/\s*/; + ts.fullTripleSlashAMDReferencePathRegEx = /^(\/\/\/\s*/; function isTypeNode(node) { if (149 <= node.kind && node.kind <= 158) { return true; @@ -6434,10 +6442,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; } @@ -6457,7 +6465,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); @@ -6548,9 +6556,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: @@ -6576,7 +6584,7 @@ var ts; } function nextTokenIsIdentifierOrKeyword() { nextToken(); - return isIdentifierOrKeyword(); + return ts.tokenIsIdentifierOrKeyword(token); } function isHeritageClauseExtendsOrImplementsKeyword() { if (token === 104 || @@ -6944,7 +6952,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); @@ -7234,7 +7242,7 @@ var ts; return result; } } - if (isIdentifierOrKeyword()) { + if (ts.tokenIsIdentifierOrKeyword(token)) { return parsePropertyOrMethodSignature(); } } @@ -8527,12 +8535,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(); @@ -8540,7 +8545,7 @@ var ts; } function nextTokenIsIdentifierOrKeywordOrNumberOnSameLine() { nextToken(); - return (isIdentifierOrKeyword() || token === 8) && !scanner.hasPrecedingLineBreak(); + return (ts.tokenIsIdentifierOrKeyword(token) || token === 8) && !scanner.hasPrecedingLineBreak(); } function isDeclaration() { while (true) { @@ -8568,7 +8573,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 || @@ -9055,7 +9060,7 @@ var ts; if (isIndexSignature()) { return parseIndexSignatureDeclaration(fullStart, decorators, modifiers); } - if (isIdentifierOrKeyword() || + if (ts.tokenIsIdentifierOrKeyword(token) || token === 9 || token === 8 || token === 37 || @@ -9183,12 +9188,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); } @@ -9448,7 +9454,7 @@ var ts; case 95: return true; } - return isIdentifierOrKeyword(); + return ts.tokenIsIdentifierOrKeyword(token); } JSDocParser.isJSDocType = isJSDocType; function parseJSDocTypeExpressionForTests(content, start, length) { @@ -10968,7 +10974,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); @@ -12099,52 +12105,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); @@ -13466,11 +13472,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) { @@ -13958,7 +13964,9 @@ var ts; } return 0; } - source = getRegularTypeOfObjectLiteral(source); + if (target.flags & 49152) { + source = getRegularTypeOfObjectLiteral(source); + } } var saveErrorInfo = errorInfo; if (source.flags & 16384) { @@ -14357,8 +14365,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; } @@ -14366,8 +14374,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)) { @@ -14690,6 +14698,7 @@ var ts; regularType.constructSignatures = type.constructSignatures; regularType.stringIndexType = type.stringIndexType; regularType.numberIndexType = type.numberIndexType; + type.regularType = regularType; } return regularType; } @@ -15586,7 +15595,7 @@ var ts; } } if (ts.isBindingPattern(declaration.name)) { - return getTypeFromBindingPattern(declaration.name); + return getTypeFromBindingPattern(declaration.name, true); } } return undefined; @@ -15878,11 +15887,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); @@ -15903,12 +15913,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); @@ -15940,6 +15973,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]; @@ -15960,6 +15996,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) { @@ -15978,11 +16028,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)) { @@ -17066,7 +17131,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); @@ -19732,6 +19797,9 @@ 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. @@ -19758,9 +19826,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 { @@ -23696,6 +23769,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(); } @@ -25364,7 +25438,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; } @@ -26432,7 +26507,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 && @@ -26750,7 +26825,7 @@ var ts; } else if (member.kind === 141 || node.kind === 140) { if (!member.body) { - return emitOnlyPinnedOrTripleSlashComments(member); + return emitCommentsOnNotEmittedNode(member); } writeLine(); emitLeadingComments(member); @@ -26816,7 +26891,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 || @@ -26863,7 +26938,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; @@ -27493,7 +27568,7 @@ var ts; return argumentsWritten; } function emitInterfaceDeclaration(node) { - emitOnlyPinnedOrTripleSlashComments(node); + emitCommentsOnNotEmittedNode(node); } function shouldEmitEnumDeclaration(node) { var isConstEnum = ts.isConst(node); @@ -27600,7 +27675,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); @@ -28738,7 +28813,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); @@ -28970,14 +29045,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) { @@ -28998,26 +29079,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(); @@ -29025,12 +29126,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; @@ -29068,17 +29176,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); @@ -29354,7 +29451,7 @@ var ts; ts.ioReadTime = 0; ts.ioWriteTime = 0; var emptyArray = []; - ts.version = "1.6.2"; + ts.version = "1.7.0"; function findConfigFile(searchPath) { var fileName = "tsconfig.json"; while (true) { @@ -30019,7 +30116,7 @@ var ts; 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.File_0_is_not_a_module, importedFile.fileName)); + 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); @@ -30549,10 +30646,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) }; @@ -30821,7 +30918,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 ce095409d9a..875e63028b2 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,8 +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}'." }, @@ -1621,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, @@ -1872,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 || @@ -2916,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); @@ -2983,10 +2972,6 @@ var ts; } ts.createScanner = createScanner; })(ts || (ts = {})); -/// -/// -/// -/// var ts; (function (ts) { ts.optionDeclarations = [ @@ -3341,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) }; @@ -3445,7 +3430,6 @@ var ts; } ts.parseConfigFile = parseConfigFile; })(ts || (ts = {})); -/// var ts; (function (ts) { function getDeclarationOfKind(symbol, kind) { @@ -3780,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; @@ -5393,8 +5378,6 @@ var ts; } ts.getTypeParameterOwner = getTypeParameterOwner; })(ts || (ts = {})); -/// -/// var ts; (function (ts) { var nodeConstructors = new Array(270); @@ -5885,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; @@ -6182,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; } @@ -6205,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); @@ -6296,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: @@ -6324,7 +6303,7 @@ var ts; } function nextTokenIsIdentifierOrKeyword() { nextToken(); - return isIdentifierOrKeyword(); + return ts.tokenIsIdentifierOrKeyword(token); } function isHeritageClauseExtendsOrImplementsKeyword() { if (token === 104 || @@ -6692,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); @@ -6982,7 +6961,7 @@ var ts; return result; } } - if (isIdentifierOrKeyword()) { + if (ts.tokenIsIdentifierOrKeyword(token)) { return parsePropertyOrMethodSignature(); } } @@ -7220,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); @@ -7247,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(); } @@ -8224,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); @@ -8275,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(); @@ -8288,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) { @@ -8316,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 || @@ -8803,7 +8765,7 @@ var ts; if (isIndexSignature()) { return parseIndexSignatureDeclaration(fullStart, decorators, modifiers); } - if (isIdentifierOrKeyword() || + if (ts.tokenIsIdentifierOrKeyword(token) || token === 9 || token === 8 || token === 37 || @@ -8840,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); } @@ -8931,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); } @@ -9007,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; @@ -9196,7 +9151,7 @@ var ts; case 95: return true; } - return isIdentifierOrKeyword(); + return ts.tokenIsIdentifierOrKeyword(token); } JSDocParser.isJSDocType = isJSDocType; function parseJSDocTypeExpressionForTests(content, start, length) { @@ -9969,7 +9924,6 @@ var ts; } })(IncrementalParser || (IncrementalParser = {})); })(ts || (ts = {})); -/// var ts; (function (ts) { ts.bindTime = 0; @@ -10683,7 +10637,6 @@ var ts; } } })(ts || (ts = {})); -/// var ts; (function (ts) { var nextSymbolId = 1; @@ -11430,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); @@ -12561,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); @@ -13928,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) { @@ -14420,7 +14373,9 @@ var ts; } return 0; } - source = getRegularTypeOfObjectLiteral(source); + if (target.flags & 49152) { + source = getRegularTypeOfObjectLiteral(source); + } } var saveErrorInfo = errorInfo; if (source.flags & 16384) { @@ -14819,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; } @@ -14828,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)) { @@ -15152,6 +15107,7 @@ var ts; regularType.constructSignatures = type.constructSignatures; regularType.stringIndexType = type.stringIndexType; regularType.numberIndexType = type.numberIndexType; + type.regularType = regularType; } return regularType; } @@ -16048,7 +16004,7 @@ var ts; } } if (ts.isBindingPattern(declaration.name)) { - return getTypeFromBindingPattern(declaration.name); + return getTypeFromBindingPattern(declaration.name, true); } } return undefined; @@ -16340,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); @@ -16365,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); @@ -16402,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]; @@ -16422,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) { @@ -16440,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)) { @@ -17528,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); @@ -18523,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); @@ -19169,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; } @@ -19520,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; } @@ -20194,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]; @@ -20220,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 { @@ -22736,7 +22727,6 @@ var ts; } ts.createTypeChecker = createTypeChecker; })(ts || (ts = {})); -/// var ts; (function (ts) { function getDeclarationDiagnostics(host, resolver, targetSourceFile) { @@ -24064,8 +24054,6 @@ var ts; } ts.writeDeclarationFile = writeDeclarationFile; })(ts || (ts = {})); -/// -/// var ts; (function (ts) { function isExternalModuleOrDeclarationFile(sourceFile) { @@ -24158,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(); } @@ -24804,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; } @@ -25826,7 +25802,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; } @@ -26156,26 +26133,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); @@ -26894,7 +26851,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 && @@ -27212,7 +27169,7 @@ var ts; } else if (member.kind === 141 || node.kind === 140) { if (!member.body) { - return emitOnlyPinnedOrTripleSlashComments(member); + return emitCommentsOnNotEmittedNode(member); } writeLine(); emitLeadingComments(member); @@ -27278,7 +27235,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 || @@ -27325,7 +27282,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; @@ -27955,7 +27912,7 @@ var ts; return argumentsWritten; } function emitInterfaceDeclaration(node) { - emitOnlyPinnedOrTripleSlashComments(node); + emitCommentsOnNotEmittedNode(node); } function shouldEmitEnumDeclaration(node) { var isConstEnum = ts.isConst(node); @@ -28062,7 +28019,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); @@ -28906,17 +28863,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 = []; @@ -29200,7 +29146,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); @@ -29432,14 +29378,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) { @@ -29460,26 +29412,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(); @@ -29487,12 +29459,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; @@ -29530,17 +29509,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); @@ -29806,9 +29774,6 @@ var ts; "diams": 0x2666 }; })(ts || (ts = {})); -/// -/// -/// var ts; (function (ts) { ts.programTime = 0; @@ -29816,7 +29781,7 @@ var ts; ts.ioReadTime = 0; ts.ioWriteTime = 0; var emptyArray = []; - ts.version = "1.6.2"; + ts.version = "1.7.0"; function findConfigFile(searchPath) { var fileName = "tsconfig.json"; while (true) { @@ -30481,7 +30446,7 @@ var ts; 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.File_0_is_not_a_module, importedFile.fileName)); + 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); @@ -30653,9 +30618,6 @@ var ts; } 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; @@ -31315,7 +31277,6 @@ var ts; NavigateTo.getNavigateToItems = getNavigateToItems; })(NavigateTo = ts.NavigateTo || (ts.NavigateTo = {})); })(ts || (ts = {})); -/// var ts; (function (ts) { var NavigationBar; @@ -32136,7 +32097,6 @@ var ts; return transition; } })(ts || (ts = {})); -/// var ts; (function (ts) { var SignatureHelp; @@ -33104,8 +33064,6 @@ var ts; } ts.stripQuotes = stripQuotes; })(ts || (ts = {})); -/// -/// var ts; (function (ts) { var formatting; @@ -33299,7 +33257,6 @@ var ts; formatting.getFormattingScanner = getFormattingScanner; })(formatting = ts.formatting || (ts.formatting = {})); })(ts || (ts = {})); -/// var ts; (function (ts) { var formatting; @@ -33378,8 +33335,6 @@ var ts; formatting.FormattingContext = FormattingContext; })(formatting = ts.formatting || (ts.formatting = {})); })(ts || (ts = {})); -/// -/// var ts; (function (ts) { var formatting; @@ -33401,8 +33356,6 @@ var ts; formatting.Rule = Rule; })(formatting = ts.formatting || (ts.formatting = {})); })(ts || (ts = {})); -/// -/// var ts; (function (ts) { var formatting; @@ -33433,8 +33386,6 @@ var ts; formatting.RuleDescriptor = RuleDescriptor; })(formatting = ts.formatting || (ts.formatting = {})); })(ts || (ts = {})); -/// -/// var ts; (function (ts) { var formatting; @@ -33462,7 +33413,6 @@ var ts; formatting.RuleOperation = RuleOperation; })(formatting = ts.formatting || (ts.formatting = {})); })(ts || (ts = {})); -/// var ts; (function (ts) { var formatting; @@ -33496,16 +33446,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)); @@ -33546,7 +33492,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)); @@ -33560,7 +33506,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)); @@ -33581,19 +33527,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.SpaceBeforeAmpersand = new formatting.Rule(formatting.RuleDescriptor.create3(45, formatting.Shared.TokenRange.Any), formatting.RuleOperation.create2(new formatting.RuleOperationContext(Rules.IsSameLineTokenContext), 2)); - this.SpaceAfterAmpersand = new formatting.Rule(formatting.RuleDescriptor.create2(formatting.Shared.TokenRange.Any, 45), formatting.RuleOperation.create2(new formatting.RuleOperationContext(Rules.IsSameLineTokenContext), 2)); this.HighPriorityCommonRules = [ this.IgnoreBeforeComment, this.IgnoreAfterLineComment, @@ -33619,12 +33553,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.SpaceBeforeAmpersand, this.SpaceAfterAmpersand, + this.SpaceBetweenAsyncAndFunctionKeyword, + this.SpaceBetweenTagAndTemplateString, this.NoSpaceAfterConstructor, this.NoSpaceAfterModuleImport, this.SpaceAfterCertainTypeScriptKeywords, this.SpaceBeforeCertainTypeScriptKeywords, this.SpaceAfterModuleName, @@ -33700,6 +33630,8 @@ var ts; case 180: case 187: case 148: + case 156: + case 157: return true; case 161: case 214: @@ -33724,22 +33656,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) { @@ -33923,7 +33839,6 @@ var ts; formatting.Rules = Rules; })(formatting = ts.formatting || (ts.formatting = {})); })(ts || (ts = {})); -/// var ts; (function (ts) { var formatting; @@ -34060,7 +33975,6 @@ var ts; formatting.RulesBucket = RulesBucket; })(formatting = ts.formatting || (ts.formatting = {})); })(ts || (ts = {})); -/// var ts; (function (ts) { var formatting; @@ -34175,19 +34089,6 @@ var ts; })(Shared = formatting.Shared || (formatting.Shared = {})); })(formatting = ts.formatting || (ts.formatting = {})); })(ts || (ts = {})); -/// -/// -/// -/// -/// -/// -/// -/// -/// -/// -/// -/// -/// var ts; (function (ts) { var formatting; @@ -34283,10 +34184,6 @@ var ts; formatting.RulesProvider = RulesProvider; })(formatting = ts.formatting || (ts.formatting = {})); })(ts || (ts = {})); -/// -/// -/// -/// var ts; (function (ts) { var formatting; @@ -34543,13 +34440,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) { @@ -34718,8 +34616,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)) { @@ -34727,14 +34629,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; @@ -34744,8 +34644,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; @@ -35033,7 +34932,6 @@ var ts; formatting.getIndentationString = getIndentationString; })(formatting = ts.formatting || (ts.formatting = {})); })(ts || (ts = {})); -/// var ts; (function (ts) { var formatting; @@ -35392,21 +35290,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"; @@ -39357,6 +39245,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)); @@ -40240,8 +40129,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; @@ -40744,10 +40631,6 @@ var ts; } initializeServices(); })(ts || (ts = {})); -/// -/// -/// -/// var ts; (function (ts) { var server; @@ -41710,10 +41593,6 @@ var ts; server.Session = Session; })(server = ts.server || (ts.server = {})); })(ts || (ts = {})); -/// -/// -/// -/// var ts; (function (ts) { var server; @@ -43496,8 +43375,6 @@ var ts; server.LineLeaf = LineLeaf; })(server = ts.server || (ts.server = {})); })(ts || (ts = {})); -/// -/// var ts; (function (ts) { var server; @@ -43720,21 +43597,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) { diff --git a/lib/typescript.d.ts b/lib/typescript.d.ts index ec4ccd15589..2cd3a663fce 100644 --- a/lib/typescript.d.ts +++ b/lib/typescript.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[]; @@ -1532,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; }; diff --git a/lib/typescript.js b/lib/typescript.js index ebc0ba70357..2c70f56d0a6 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,8 +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}'." }, @@ -2494,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 */, @@ -3929,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); @@ -5331,6 +5339,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; @@ -8131,10 +8140,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 */; } @@ -8154,7 +8163,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]: @@ -8270,9 +8279,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 */: @@ -8305,7 +8314,7 @@ var ts; } function nextTokenIsIdentifierOrKeyword() { nextToken(); - return isIdentifierOrKeyword(); + return ts.tokenIsIdentifierOrKeyword(token); } function isHeritageClauseExtendsOrImplementsKeyword() { if (token === 104 /* ImplementsKeyword */ || @@ -8799,7 +8808,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, @@ -9183,7 +9192,7 @@ var ts; return result; } } - if (isIdentifierOrKeyword()) { + if (ts.tokenIsIdentifierOrKeyword(token)) { return parsePropertyOrMethodSignature(); } } @@ -10776,12 +10785,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(); @@ -10789,7 +10795,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) { @@ -10839,7 +10845,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 */ || @@ -11379,7 +11385,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 */ || @@ -11518,12 +11524,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); } @@ -11857,7 +11866,7 @@ var ts; case 95 /* ThisKeyword */: return true; } - return isIdentifierOrKeyword(); + return ts.tokenIsIdentifierOrKeyword(token); } JSDocParser.isJSDocType = isJSDocType; function parseJSDocTypeExpressionForTests(content, start, length) { @@ -13747,7 +13756,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); @@ -15051,7 +15060,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; @@ -15059,45 +15068,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 @@ -15107,10 +15116,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 @@ -16578,11 +16587,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) { @@ -17119,7 +17128,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 @@ -17567,8 +17578,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. @@ -17578,8 +17589,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)) { @@ -17928,6 +17939,7 @@ var ts; regularType.constructSignatures = type.constructSignatures; regularType.stringIndexType = type.stringIndexType; regularType.numberIndexType = type.numberIndexType; + type.regularType = regularType; } return regularType; } @@ -18949,7 +18961,7 @@ var ts; } } if (ts.isBindingPattern(declaration.name)) { - return getTypeFromBindingPattern(declaration.name); + return getTypeFromBindingPattern(declaration.name, /*includePatternInType*/ true); } } return undefined; @@ -19307,11 +19319,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); @@ -19344,12 +19357,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); @@ -19407,6 +19447,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]; @@ -19427,6 +19470,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) { @@ -19450,11 +19511,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)) { @@ -20963,7 +21041,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); @@ -24274,6 +24352,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. @@ -24305,12 +24386,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 { @@ -28622,6 +28708,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(); } @@ -30532,7 +30620,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; } @@ -31723,7 +31812,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. @@ -32149,7 +32238,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); @@ -32215,7 +32304,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 */ || @@ -32266,7 +32355,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) { @@ -33070,7 +33159,7 @@ var ts; return argumentsWritten; } function emitInterfaceDeclaration(node) { - emitOnlyPinnedOrTripleSlashComments(node); + emitCommentsOnNotEmittedNode(node); } function shouldEmitEnumDeclaration(node) { var isConstEnum = ts.isConst(node); @@ -33182,7 +33271,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); @@ -34474,7 +34563,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 @@ -34722,21 +34811,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 @@ -34761,23 +34856,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); } @@ -34787,11 +34905,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 @@ -34801,13 +34925,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; @@ -34852,17 +34989,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); @@ -35139,7 +35265,7 @@ var ts; /* @internal */ ts.ioWriteTime = 0; /** The version of the TypeScript compiler release */ var emptyArray = []; - ts.version = "1.6.2"; + ts.version = "1.7.0"; function findConfigFile(searchPath) { var fileName = "tsconfig.json"; while (true) { @@ -35868,7 +35994,7 @@ var ts; 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.File_0_is_not_a_module, importedFile.fileName)); + 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); @@ -36423,10 +36549,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) }; @@ -39743,7 +39869,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 */)); @@ -39767,7 +39893,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 */)); @@ -39795,22 +39921,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 */)); - // type operation - 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 */)); - this.SpaceBeforeAmpersand = new formatting.Rule(formatting.RuleDescriptor.create3(45 /* AmpersandToken */, formatting.Shared.TokenRange.Any), formatting.RuleOperation.create2(new formatting.RuleOperationContext(Rules.IsSameLineTokenContext), 2 /* Space */)); - this.SpaceAfterAmpersand = new formatting.Rule(formatting.RuleDescriptor.create2(formatting.Shared.TokenRange.Any, 45 /* AmpersandToken */), formatting.RuleOperation.create2(new formatting.RuleOperationContext(Rules.IsSameLineTokenContext), 2 /* Space */)); // These rules are higher in priority than user-configurable rules. this.HighPriorityCommonRules = [ @@ -39837,12 +39949,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.SpaceBeforeAmpersand, this.SpaceAfterAmpersand, + this.SpaceBetweenAsyncAndFunctionKeyword, + this.SpaceBetweenTagAndTemplateString, // TypeScript-specific rules this.NoSpaceAfterConstructor, this.NoSpaceAfterModuleImport, this.SpaceAfterCertainTypeScriptKeywords, this.SpaceBeforeCertainTypeScriptKeywords, @@ -39937,6 +40045,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 */: @@ -40894,7 +41004,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 // .. { @@ -40902,9 +41012,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) { @@ -41106,8 +41217,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)) { @@ -41115,14 +41230,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; @@ -41133,8 +41246,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; @@ -46451,6 +46563,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. diff --git a/lib/typescriptServices.d.ts b/lib/typescriptServices.d.ts index 4ce3cd34cb5..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[]; @@ -1532,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; }; diff --git a/lib/typescriptServices.js b/lib/typescriptServices.js index ebc0ba70357..2c70f56d0a6 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,8 +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}'." }, @@ -2494,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 */, @@ -3929,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); @@ -5331,6 +5339,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; @@ -8131,10 +8140,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 */; } @@ -8154,7 +8163,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]: @@ -8270,9 +8279,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 */: @@ -8305,7 +8314,7 @@ var ts; } function nextTokenIsIdentifierOrKeyword() { nextToken(); - return isIdentifierOrKeyword(); + return ts.tokenIsIdentifierOrKeyword(token); } function isHeritageClauseExtendsOrImplementsKeyword() { if (token === 104 /* ImplementsKeyword */ || @@ -8799,7 +8808,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, @@ -9183,7 +9192,7 @@ var ts; return result; } } - if (isIdentifierOrKeyword()) { + if (ts.tokenIsIdentifierOrKeyword(token)) { return parsePropertyOrMethodSignature(); } } @@ -10776,12 +10785,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(); @@ -10789,7 +10795,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) { @@ -10839,7 +10845,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 */ || @@ -11379,7 +11385,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 */ || @@ -11518,12 +11524,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); } @@ -11857,7 +11866,7 @@ var ts; case 95 /* ThisKeyword */: return true; } - return isIdentifierOrKeyword(); + return ts.tokenIsIdentifierOrKeyword(token); } JSDocParser.isJSDocType = isJSDocType; function parseJSDocTypeExpressionForTests(content, start, length) { @@ -13747,7 +13756,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); @@ -15051,7 +15060,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; @@ -15059,45 +15068,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 @@ -15107,10 +15116,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 @@ -16578,11 +16587,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) { @@ -17119,7 +17128,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 @@ -17567,8 +17578,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. @@ -17578,8 +17589,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)) { @@ -17928,6 +17939,7 @@ var ts; regularType.constructSignatures = type.constructSignatures; regularType.stringIndexType = type.stringIndexType; regularType.numberIndexType = type.numberIndexType; + type.regularType = regularType; } return regularType; } @@ -18949,7 +18961,7 @@ var ts; } } if (ts.isBindingPattern(declaration.name)) { - return getTypeFromBindingPattern(declaration.name); + return getTypeFromBindingPattern(declaration.name, /*includePatternInType*/ true); } } return undefined; @@ -19307,11 +19319,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); @@ -19344,12 +19357,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); @@ -19407,6 +19447,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]; @@ -19427,6 +19470,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) { @@ -19450,11 +19511,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)) { @@ -20963,7 +21041,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); @@ -24274,6 +24352,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. @@ -24305,12 +24386,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 { @@ -28622,6 +28708,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(); } @@ -30532,7 +30620,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; } @@ -31723,7 +31812,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. @@ -32149,7 +32238,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); @@ -32215,7 +32304,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 */ || @@ -32266,7 +32355,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) { @@ -33070,7 +33159,7 @@ var ts; return argumentsWritten; } function emitInterfaceDeclaration(node) { - emitOnlyPinnedOrTripleSlashComments(node); + emitCommentsOnNotEmittedNode(node); } function shouldEmitEnumDeclaration(node) { var isConstEnum = ts.isConst(node); @@ -33182,7 +33271,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); @@ -34474,7 +34563,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 @@ -34722,21 +34811,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 @@ -34761,23 +34856,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); } @@ -34787,11 +34905,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 @@ -34801,13 +34925,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; @@ -34852,17 +34989,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); @@ -35139,7 +35265,7 @@ var ts; /* @internal */ ts.ioWriteTime = 0; /** The version of the TypeScript compiler release */ var emptyArray = []; - ts.version = "1.6.2"; + ts.version = "1.7.0"; function findConfigFile(searchPath) { var fileName = "tsconfig.json"; while (true) { @@ -35868,7 +35994,7 @@ var ts; 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.File_0_is_not_a_module, importedFile.fileName)); + 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); @@ -36423,10 +36549,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) }; @@ -39743,7 +39869,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 */)); @@ -39767,7 +39893,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 */)); @@ -39795,22 +39921,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 */)); - // type operation - 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 */)); - this.SpaceBeforeAmpersand = new formatting.Rule(formatting.RuleDescriptor.create3(45 /* AmpersandToken */, formatting.Shared.TokenRange.Any), formatting.RuleOperation.create2(new formatting.RuleOperationContext(Rules.IsSameLineTokenContext), 2 /* Space */)); - this.SpaceAfterAmpersand = new formatting.Rule(formatting.RuleDescriptor.create2(formatting.Shared.TokenRange.Any, 45 /* AmpersandToken */), formatting.RuleOperation.create2(new formatting.RuleOperationContext(Rules.IsSameLineTokenContext), 2 /* Space */)); // These rules are higher in priority than user-configurable rules. this.HighPriorityCommonRules = [ @@ -39837,12 +39949,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.SpaceBeforeAmpersand, this.SpaceAfterAmpersand, + this.SpaceBetweenAsyncAndFunctionKeyword, + this.SpaceBetweenTagAndTemplateString, // TypeScript-specific rules this.NoSpaceAfterConstructor, this.NoSpaceAfterModuleImport, this.SpaceAfterCertainTypeScriptKeywords, this.SpaceBeforeCertainTypeScriptKeywords, @@ -39937,6 +40045,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 */: @@ -40894,7 +41004,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 // .. { @@ -40902,9 +41012,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) { @@ -41106,8 +41217,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)) { @@ -41115,14 +41230,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; @@ -41133,8 +41246,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; @@ -46451,6 +46563,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. From 5b5d876cc215b4196fd8f2931bc0ec1a54c16a4e Mon Sep 17 00:00:00 2001 From: Mohamed Hegazy Date: Tue, 15 Sep 2015 17:47:50 -0700 Subject: [PATCH 55/56] more code review comments --- src/harness/rwcRunner.ts | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/src/harness/rwcRunner.ts b/src/harness/rwcRunner.ts index c6637562ce5..1e81392049d 100644 --- a/src/harness/rwcRunner.ts +++ b/src/harness/rwcRunner.ts @@ -84,9 +84,9 @@ module RWC { } // Load the files - ts.forEach(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; From 32048ca5ac45a6855484178ba86f294828d16e6a Mon Sep 17 00:00:00 2001 From: Basarat Ali Syed Date: Wed, 16 Sep 2015 10:57:54 +1000 Subject: [PATCH 56/56] fix types : export the base as children are exported --- src/compiler/types.ts | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/compiler/types.ts b/src/compiler/types.ts index fd9adc331d3..d2757bb7937 100644 --- a/src/compiler/types.ts +++ b/src/compiler/types.ts @@ -2116,7 +2116,7 @@ namespace ts { } /* @internal */ - interface CommandLineOptionBase { + 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