From fe8f73620789976b8894f8cef907996e85caccd3 Mon Sep 17 00:00:00 2001 From: Sheetal Nandi Date: Fri, 3 Oct 2014 15:07:18 -0700 Subject: [PATCH] Enable tests for the case sensitive and non case sensitive path resolution during soucemap path calculation --- src/harness/fourslash.ts | 22 +-- src/harness/harness.ts | 50 +++++- .../sourceMapWithCaseSensitiveFileNames.js | 26 +++ ...sourceMapWithCaseSensitiveFileNames.js.map | 2 + ...apWithCaseSensitiveFileNames.sourcemap.txt | 150 ++++++++++++++++++ .../sourceMapWithCaseSensitiveFileNames.types | 11 ++ .../sourceMapWithNonCaseSensitiveFileNames.js | 26 +++ ...rceMapWithNonCaseSensitiveFileNames.js.map | 2 + ...ithNonCaseSensitiveFileNames.sourcemap.txt | 150 ++++++++++++++++++ ...urceMapWithNonCaseSensitiveFileNames.types | 11 ++ .../sourceMapWithCaseSensitiveFileNames.ts | 12 ++ .../sourceMapWithNonCaseSensitiveFileNames.ts | 12 ++ 12 files changed, 452 insertions(+), 22 deletions(-) create mode 100644 tests/baselines/reference/sourceMapWithCaseSensitiveFileNames.js create mode 100644 tests/baselines/reference/sourceMapWithCaseSensitiveFileNames.js.map create mode 100644 tests/baselines/reference/sourceMapWithCaseSensitiveFileNames.sourcemap.txt create mode 100644 tests/baselines/reference/sourceMapWithCaseSensitiveFileNames.types create mode 100644 tests/baselines/reference/sourceMapWithNonCaseSensitiveFileNames.js create mode 100644 tests/baselines/reference/sourceMapWithNonCaseSensitiveFileNames.js.map create mode 100644 tests/baselines/reference/sourceMapWithNonCaseSensitiveFileNames.sourcemap.txt create mode 100644 tests/baselines/reference/sourceMapWithNonCaseSensitiveFileNames.types create mode 100644 tests/cases/compiler/sourceMapWithCaseSensitiveFileNames.ts create mode 100644 tests/cases/compiler/sourceMapWithNonCaseSensitiveFileNames.ts diff --git a/src/harness/fourslash.ts b/src/harness/fourslash.ts index e746bd9e7c9..e0c34bacb67 100644 --- a/src/harness/fourslash.ts +++ b/src/harness/fourslash.ts @@ -2096,9 +2096,6 @@ module FourSlash { xmlData.push(xml); } - // Cache these between executions so we don't have to re-parse them for every test - var fourslashSourceFile: ts.SourceFile = undefined; - export function runFourSlashTestContent(content: string, fileName: string): TestXmlData { // Parse out the files and their metadata var testData = parseTestData(content, fileName); @@ -2106,21 +2103,16 @@ module FourSlash { currentTestState = new TestState(testData); var result = ''; - var fourslashFilename = 'fourslash.ts'; - var tsFn = 'tests/cases/fourslash/' + fourslashFilename; - fourslashSourceFile = fourslashSourceFile || ts.createSourceFile(tsFn, Harness.IO.readFile(tsFn), ts.ScriptTarget.ES5, /*version*/ "0", /*isOpen*/ false); - - var files: { [filename: string]: ts.SourceFile; } = {}; - files[Harness.Compiler.getCanonicalFileName(fourslashFilename)] = fourslashSourceFile; - files[Harness.Compiler.getCanonicalFileName(fileName)] = ts.createSourceFile(fileName, content, ts.ScriptTarget.ES5, /*version*/ "0", /*isOpen*/ false); - files[Harness.Compiler.getCanonicalFileName(Harness.Compiler.defaultLibFileName)] = Harness.Compiler.defaultLibSourceFile; - - var host = Harness.Compiler.createCompilerHost(files, (fn, contents) => result = contents); - var program = ts.createProgram([fourslashFilename, fileName], { out: "fourslashTestOutput.js" }, host); + var host = Harness.Compiler.createCompilerHost([{ unitName: Harness.Compiler.fourslashFilename, content: undefined }, + { unitName: fileName, content: content }], + (fn, contents) => result = contents, + ts.ScriptTarget.ES5, + sys.useCaseSensitiveFileNames); + var program = ts.createProgram([Harness.Compiler.fourslashFilename, fileName], { out: "fourslashTestOutput.js" }, host); var checker = ts.createTypeChecker(program, /*fullTypeCheckMode*/ true); checker.checkProgram(); - var errs = checker.getDiagnostics(files[fileName]); + var errs = checker.getDiagnostics(program.getSourceFile(fileName)); if (errs.length > 0) { throw new Error('Error compiling ' + fileName + ': ' + errs.map(e => e.messageText).join('\r\n')); } diff --git a/src/harness/harness.ts b/src/harness/harness.ts index 268d2125c2c..686f6f9bd0f 100644 --- a/src/harness/harness.ts +++ b/src/harness/harness.ts @@ -534,18 +534,47 @@ module Harness { export var defaultLibFileName = 'lib.d.ts'; export var defaultLibSourceFile = ts.createSourceFile(defaultLibFileName, IO.readFile(libFolder + 'lib.core.d.ts'), /*languageVersion*/ ts.ScriptTarget.ES5, /*version:*/ "0"); + // Cache these between executions so we don't have to re-parse them for every test + export var fourslashFilename = 'fourslash.ts'; + export var fourslashSourceFile: ts.SourceFile; + export function getCanonicalFileName(fileName: string): string { return sys.useCaseSensitiveFileNames ? fileName : fileName.toLowerCase(); } - export function createCompilerHost(filemap: { [filename: string]: ts.SourceFile; }, writeFile: (fn: string, contents: string, writeByteOrderMark:boolean) => void): ts.CompilerHost { + export function createCompilerHost(inputFiles: { unitName: string; content: string; }[], + writeFile: (fn: string, contents: string, writeByteOrderMark: boolean) => void, + scriptTarget: ts.ScriptTarget, + useCaseSensitiveFileNames: boolean): ts.CompilerHost { + + // Local get canonical file name function, that depends on passed in parameter for useCaseSensitiveFileNames + function getCanonicalFileName(fileName: string): string { + return useCaseSensitiveFileNames ? fileName : fileName.toLowerCase(); + } + + var filemap: { [filename: string]: ts.SourceFile; } = {}; + // Register input files + function register(file: { unitName: string; content: string; }) { + if (file.content !== undefined) { + var filename = Path.switchToForwardSlashes(file.unitName); + filemap[getCanonicalFileName(filename)] = ts.createSourceFile(filename, file.content, scriptTarget, /*version:*/ "0"); + } + }; + inputFiles.forEach(register); + return { getCurrentDirectory: sys.getCurrentDirectory, getCancellationToken: (): any => undefined, getSourceFile: (fn, languageVersion) => { if (Object.prototype.hasOwnProperty.call(filemap, getCanonicalFileName(fn))) { return filemap[getCanonicalFileName(fn)]; - } else { + } + else if (fn === fourslashFilename) { + var tsFn = 'tests/cases/fourslash/' + fourslashFilename; + fourslashSourceFile = fourslashSourceFile || ts.createSourceFile(tsFn, Harness.IO.readFile(tsFn), scriptTarget, /*version*/ "0", /*isOpen*/ false); + return fourslashSourceFile; + } + else { var lib = defaultLibFileName; if (fn === defaultLibFileName) { return defaultLibSourceFile; @@ -557,7 +586,7 @@ module Harness { getDefaultLibFilename: () => defaultLibFileName, writeFile: writeFile, getCanonicalFileName: getCanonicalFileName, - useCaseSensitiveFileNames: () => sys.useCaseSensitiveFileNames, + useCaseSensitiveFileNames: () => useCaseSensitiveFileNames, getNewLine: ()=> sys.newLine }; } @@ -614,7 +643,7 @@ module Harness { } public compileFiles(inputFiles: { unitName: string; content: string }[], - otherFiles: { unitName: string; content?: string }[], + otherFiles: { unitName: string; content: string }[], onComplete: (result: CompilerResult, checker: ts.TypeChecker) => void, settingsCallback?: (settings: ts.CompilerOptions) => void, options?: ts.CompilerOptions) { @@ -628,6 +657,7 @@ module Harness { settingsCallback(null); } + var useCaseSensitiveFileNames = sys.useCaseSensitiveFileNames; this.settings.forEach(setting => { switch (setting.flag.toLowerCase()) { // "filename", "comments", "declaration", "module", "nolib", "sourcemap", "target", "out", "outDir", "noimplicitany", "noresolve" @@ -706,10 +736,13 @@ module Harness { options.removeComments = setting.value === 'false'; break; + case 'usecasesensitivefilenames': + useCaseSensitiveFileNames = setting.value === 'true'; + break; + case 'mapsourcefiles': case 'maproot': case 'generatedeclarationfiles': - case 'usecasesensitivefileresolution': case 'gatherDiagnostics': case 'codepage': case 'createFileLog': @@ -748,7 +781,10 @@ module Harness { var fileOutputs: GeneratedFile[] = []; var programFiles = inputFiles.map(file => file.unitName); - var program = ts.createProgram(programFiles, options, createCompilerHost(filemap, (fn, contents, writeByteOrderMark) => fileOutputs.push({ fileName: fn, code: contents, writeByteOrderMark: writeByteOrderMark }))); + var program = ts.createProgram(programFiles, options, createCompilerHost(inputFiles.concat(otherFiles), + (fn, contents, writeByteOrderMark) => fileOutputs.push({ fileName: fn, code: contents, writeByteOrderMark: writeByteOrderMark }), + options.target, + useCaseSensitiveFileNames)); var hadParseErrors = program.getDiagnostics().length > 0; @@ -1034,7 +1070,7 @@ module Harness { var optionRegex = /^[\/]{2}\s*@(\w+)\s*:\s*(\S*)/gm; // multiple matches on multiple lines // List of allowed metadata names - var fileMetadataNames = ["filename", "comments", "declaration", "module", "nolib", "sourcemap", "target", "out", "outDir", "noimplicitany", "noresolve", "newline", "newlines", "emitbom", "errortruncation"]; + var fileMetadataNames = ["filename", "comments", "declaration", "module", "nolib", "sourcemap", "target", "out", "outDir", "noimplicitany", "noresolve", "newline", "newlines", "emitbom", "errortruncation", "usecasesensitivefilenames"]; function extractCompilerSettings(content: string): CompilerSetting[] { diff --git a/tests/baselines/reference/sourceMapWithCaseSensitiveFileNames.js b/tests/baselines/reference/sourceMapWithCaseSensitiveFileNames.js new file mode 100644 index 00000000000..37ef08d97fb --- /dev/null +++ b/tests/baselines/reference/sourceMapWithCaseSensitiveFileNames.js @@ -0,0 +1,26 @@ +//// [tests/cases/compiler/sourceMapWithCaseSensitiveFileNames.ts] //// + +//// [app.ts] +// Note in the out result we are using same folder name only different in casing +// Since this is case sensitive, the folders are different and hence the relative paths in sourcemap shouldn't be just app.ts or app2.ts +class c { +} + +//// [app2.ts] +class d { +} + +//// [fooResult.js] +// Note in the out result we are using same folder name only different in casing +// Since this is case sensitive, the folders are different and hence the relative paths in sourcemap shouldn't be just app.ts or app2.ts +var c = (function () { + function c() { + } + return c; +})(); +var d = (function () { + function d() { + } + return d; +})(); +//# sourceMappingURL=fooResult.js.map \ No newline at end of file diff --git a/tests/baselines/reference/sourceMapWithCaseSensitiveFileNames.js.map b/tests/baselines/reference/sourceMapWithCaseSensitiveFileNames.js.map new file mode 100644 index 00000000000..384caae23ea --- /dev/null +++ b/tests/baselines/reference/sourceMapWithCaseSensitiveFileNames.js.map @@ -0,0 +1,2 @@ +//// [fooResult.js.map] +{"version":3,"file":"fooResult.js","sourceRoot":"","sources":["../testFiles/app.ts","../testFiles/app2.ts"],"names":["c","c.constructor","d","d.constructor"],"mappings":"AAEA,AAFA,gFAAgF;AAChF,wIAAwI;IAClI,CAAC;IAAPA,SAAMA,CAACA;IACPC,CAACA;IAADD,QAACA;AAADA,CAACA,AADD,IACC;ACHD,IAAM,CAAC;IAAPE,SAAMA,CAACA;IACPC,CAACA;IAADD,QAACA;AAADA,CAACA,AADD,IACC"} \ No newline at end of file diff --git a/tests/baselines/reference/sourceMapWithCaseSensitiveFileNames.sourcemap.txt b/tests/baselines/reference/sourceMapWithCaseSensitiveFileNames.sourcemap.txt new file mode 100644 index 00000000000..b67d4e3be57 --- /dev/null +++ b/tests/baselines/reference/sourceMapWithCaseSensitiveFileNames.sourcemap.txt @@ -0,0 +1,150 @@ +=================================================================== +JsFile: fooResult.js +mapUrl: fooResult.js.map +sourceRoot: +sources: ../testFiles/app.ts,../testFiles/app2.ts +=================================================================== +------------------------------------------------------------------- +emittedFile:tests/cases/compiler/testfiles/fooResult.js +sourceFile:../testFiles/app.ts +------------------------------------------------------------------- +>>>// Note in the out result we are using same folder name only different in casing +1 > +2 > +3 >^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +4 > ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^-> +1 >// Note in the out result we are using same folder name only different in casing + >// Since this is case sensitive, the folders are different and hence the relative paths in sourcemap shouldn't be just app.ts or app2.ts + > +2 > +3 >// Note in the out result we are using same folder name only different in casing +1 >Emitted(1, 1) Source(3, 1) + SourceIndex(0) +2 >Emitted(1, 1) Source(1, 1) + SourceIndex(0) +3 >Emitted(1, 81) Source(1, 81) + SourceIndex(0) +--- +>>>// Since this is case sensitive, the folders are different and hence the relative paths in sourcemap shouldn't be just app.ts or app2.ts +1-> +2 >^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +1-> + > +2 >// Since this is case sensitive, the folders are different and hence the relative paths in sourcemap shouldn't be just app.ts or app2.ts +1->Emitted(2, 1) Source(2, 1) + SourceIndex(0) +2 >Emitted(2, 137) Source(2, 137) + SourceIndex(0) +--- +>>>var c = (function () { +1 >^^^^ +2 > ^ +3 > ^^^^^^^^^^^^^^-> +1 > + >class +2 > c +1 >Emitted(3, 5) Source(3, 7) + SourceIndex(0) +2 >Emitted(3, 6) Source(3, 8) + SourceIndex(0) +--- +>>> function c() { +1->^^^^ +2 > ^^^^^^^^^ +3 > ^ +1-> +2 > class +3 > c +1->Emitted(4, 5) Source(3, 1) + SourceIndex(0) name (c) +2 >Emitted(4, 14) Source(3, 7) + SourceIndex(0) name (c) +3 >Emitted(4, 15) Source(3, 8) + SourceIndex(0) name (c) +--- +>>> } +1 >^^^^ +2 > ^ +3 > ^^^^^^^^^-> +1 > { + > +2 > } +1 >Emitted(5, 5) Source(4, 1) + SourceIndex(0) name (c.constructor) +2 >Emitted(5, 6) Source(4, 2) + SourceIndex(0) name (c.constructor) +--- +>>> return c; +1->^^^^ +2 > ^^^^^^^^ +1-> +2 > } +1->Emitted(6, 5) Source(4, 1) + SourceIndex(0) name (c) +2 >Emitted(6, 13) Source(4, 2) + SourceIndex(0) name (c) +--- +>>>})(); +1 > +2 >^ +3 > +4 > ^^^^ +5 > ^^^^^^^^^^^^^^^^^^-> +1 > +2 >} +3 > +4 > class c { + > } +1 >Emitted(7, 1) Source(4, 1) + SourceIndex(0) name (c) +2 >Emitted(7, 2) Source(4, 2) + SourceIndex(0) name (c) +3 >Emitted(7, 2) Source(3, 1) + SourceIndex(0) +4 >Emitted(7, 6) Source(4, 2) + SourceIndex(0) +--- +------------------------------------------------------------------- +emittedFile:tests/cases/compiler/testfiles/fooResult.js +sourceFile:../testFiles/app2.ts +------------------------------------------------------------------- +>>>var d = (function () { +1-> +2 >^^^^ +3 > ^ +4 > ^^^^^^^^^^^^^^-> +1-> +2 >class +3 > d +1->Emitted(8, 1) Source(1, 1) + SourceIndex(1) +2 >Emitted(8, 5) Source(1, 7) + SourceIndex(1) +3 >Emitted(8, 6) Source(1, 8) + SourceIndex(1) +--- +>>> function d() { +1->^^^^ +2 > ^^^^^^^^^ +3 > ^ +1-> +2 > class +3 > d +1->Emitted(9, 5) Source(1, 1) + SourceIndex(1) name (d) +2 >Emitted(9, 14) Source(1, 7) + SourceIndex(1) name (d) +3 >Emitted(9, 15) Source(1, 8) + SourceIndex(1) name (d) +--- +>>> } +1 >^^^^ +2 > ^ +3 > ^^^^^^^^^-> +1 > { + > +2 > } +1 >Emitted(10, 5) Source(2, 1) + SourceIndex(1) name (d.constructor) +2 >Emitted(10, 6) Source(2, 2) + SourceIndex(1) name (d.constructor) +--- +>>> return d; +1->^^^^ +2 > ^^^^^^^^ +1-> +2 > } +1->Emitted(11, 5) Source(2, 1) + SourceIndex(1) name (d) +2 >Emitted(11, 13) Source(2, 2) + SourceIndex(1) name (d) +--- +>>>})(); +1 > +2 >^ +3 > +4 > ^^^^ +5 > ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^-> +1 > +2 >} +3 > +4 > class d { + > } +1 >Emitted(12, 1) Source(2, 1) + SourceIndex(1) name (d) +2 >Emitted(12, 2) Source(2, 2) + SourceIndex(1) name (d) +3 >Emitted(12, 2) Source(1, 1) + SourceIndex(1) +4 >Emitted(12, 6) Source(2, 2) + SourceIndex(1) +--- +>>>//# sourceMappingURL=fooResult.js.map \ No newline at end of file diff --git a/tests/baselines/reference/sourceMapWithCaseSensitiveFileNames.types b/tests/baselines/reference/sourceMapWithCaseSensitiveFileNames.types new file mode 100644 index 00000000000..2d42e0b5e4b --- /dev/null +++ b/tests/baselines/reference/sourceMapWithCaseSensitiveFileNames.types @@ -0,0 +1,11 @@ +=== tests/cases/compiler/testFiles/app.ts === +// Note in the out result we are using same folder name only different in casing +// Since this is case sensitive, the folders are different and hence the relative paths in sourcemap shouldn't be just app.ts or app2.ts +class c { +>c : c +} + +=== tests/cases/compiler/testFiles/app2.ts === +class d { +>d : d +} diff --git a/tests/baselines/reference/sourceMapWithNonCaseSensitiveFileNames.js b/tests/baselines/reference/sourceMapWithNonCaseSensitiveFileNames.js new file mode 100644 index 00000000000..50a3a2f3bc8 --- /dev/null +++ b/tests/baselines/reference/sourceMapWithNonCaseSensitiveFileNames.js @@ -0,0 +1,26 @@ +//// [tests/cases/compiler/sourceMapWithNonCaseSensitiveFileNames.ts] //// + +//// [app.ts] +// Note in the out result we are using same folder name only different in casing +// Since this is non case sensitive, the relative paths should be just app.ts and app2.ts in the sourcemap +class c { +} + +//// [app2.ts] +class d { +} + +//// [fooResult.js] +// Note in the out result we are using same folder name only different in casing +// Since this is non case sensitive, the relative paths should be just app.ts and app2.ts in the sourcemap +var c = (function () { + function c() { + } + return c; +})(); +var d = (function () { + function d() { + } + return d; +})(); +//# sourceMappingURL=fooResult.js.map \ No newline at end of file diff --git a/tests/baselines/reference/sourceMapWithNonCaseSensitiveFileNames.js.map b/tests/baselines/reference/sourceMapWithNonCaseSensitiveFileNames.js.map new file mode 100644 index 00000000000..49f94ed3829 --- /dev/null +++ b/tests/baselines/reference/sourceMapWithNonCaseSensitiveFileNames.js.map @@ -0,0 +1,2 @@ +//// [fooResult.js.map] +{"version":3,"file":"fooResult.js","sourceRoot":"","sources":["../testFiles/app.ts","../testFiles/app2.ts"],"names":["c","c.constructor","d","d.constructor"],"mappings":"AAEA,AAFA,gFAAgF;AAChF,0GAA0G;IACpG,CAAC;IAAPA,SAAMA,CAACA;IACPC,CAACA;IAADD,QAACA;AAADA,CAACA,AADD,IACC;ACHD,IAAM,CAAC;IAAPE,SAAMA,CAACA;IACPC,CAACA;IAADD,QAACA;AAADA,CAACA,AADD,IACC"} \ No newline at end of file diff --git a/tests/baselines/reference/sourceMapWithNonCaseSensitiveFileNames.sourcemap.txt b/tests/baselines/reference/sourceMapWithNonCaseSensitiveFileNames.sourcemap.txt new file mode 100644 index 00000000000..67f80b38bec --- /dev/null +++ b/tests/baselines/reference/sourceMapWithNonCaseSensitiveFileNames.sourcemap.txt @@ -0,0 +1,150 @@ +=================================================================== +JsFile: fooResult.js +mapUrl: fooResult.js.map +sourceRoot: +sources: ../testFiles/app.ts,../testFiles/app2.ts +=================================================================== +------------------------------------------------------------------- +emittedFile:tests/cases/compiler/testfiles/fooResult.js +sourceFile:../testFiles/app.ts +------------------------------------------------------------------- +>>>// Note in the out result we are using same folder name only different in casing +1 > +2 > +3 >^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +4 > ^^^^^^^^^^^^^^^^^^^^^^^^^^^-> +1 >// Note in the out result we are using same folder name only different in casing + >// Since this is non case sensitive, the relative paths should be just app.ts and app2.ts in the sourcemap + > +2 > +3 >// Note in the out result we are using same folder name only different in casing +1 >Emitted(1, 1) Source(3, 1) + SourceIndex(0) +2 >Emitted(1, 1) Source(1, 1) + SourceIndex(0) +3 >Emitted(1, 81) Source(1, 81) + SourceIndex(0) +--- +>>>// Since this is non case sensitive, the relative paths should be just app.ts and app2.ts in the sourcemap +1-> +2 >^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +1-> + > +2 >// Since this is non case sensitive, the relative paths should be just app.ts and app2.ts in the sourcemap +1->Emitted(2, 1) Source(2, 1) + SourceIndex(0) +2 >Emitted(2, 107) Source(2, 107) + SourceIndex(0) +--- +>>>var c = (function () { +1 >^^^^ +2 > ^ +3 > ^^^^^^^^^^^^^^-> +1 > + >class +2 > c +1 >Emitted(3, 5) Source(3, 7) + SourceIndex(0) +2 >Emitted(3, 6) Source(3, 8) + SourceIndex(0) +--- +>>> function c() { +1->^^^^ +2 > ^^^^^^^^^ +3 > ^ +1-> +2 > class +3 > c +1->Emitted(4, 5) Source(3, 1) + SourceIndex(0) name (c) +2 >Emitted(4, 14) Source(3, 7) + SourceIndex(0) name (c) +3 >Emitted(4, 15) Source(3, 8) + SourceIndex(0) name (c) +--- +>>> } +1 >^^^^ +2 > ^ +3 > ^^^^^^^^^-> +1 > { + > +2 > } +1 >Emitted(5, 5) Source(4, 1) + SourceIndex(0) name (c.constructor) +2 >Emitted(5, 6) Source(4, 2) + SourceIndex(0) name (c.constructor) +--- +>>> return c; +1->^^^^ +2 > ^^^^^^^^ +1-> +2 > } +1->Emitted(6, 5) Source(4, 1) + SourceIndex(0) name (c) +2 >Emitted(6, 13) Source(4, 2) + SourceIndex(0) name (c) +--- +>>>})(); +1 > +2 >^ +3 > +4 > ^^^^ +5 > ^^^^^^^^^^^^^^^^^^-> +1 > +2 >} +3 > +4 > class c { + > } +1 >Emitted(7, 1) Source(4, 1) + SourceIndex(0) name (c) +2 >Emitted(7, 2) Source(4, 2) + SourceIndex(0) name (c) +3 >Emitted(7, 2) Source(3, 1) + SourceIndex(0) +4 >Emitted(7, 6) Source(4, 2) + SourceIndex(0) +--- +------------------------------------------------------------------- +emittedFile:tests/cases/compiler/testfiles/fooResult.js +sourceFile:../testFiles/app2.ts +------------------------------------------------------------------- +>>>var d = (function () { +1-> +2 >^^^^ +3 > ^ +4 > ^^^^^^^^^^^^^^-> +1-> +2 >class +3 > d +1->Emitted(8, 1) Source(1, 1) + SourceIndex(1) +2 >Emitted(8, 5) Source(1, 7) + SourceIndex(1) +3 >Emitted(8, 6) Source(1, 8) + SourceIndex(1) +--- +>>> function d() { +1->^^^^ +2 > ^^^^^^^^^ +3 > ^ +1-> +2 > class +3 > d +1->Emitted(9, 5) Source(1, 1) + SourceIndex(1) name (d) +2 >Emitted(9, 14) Source(1, 7) + SourceIndex(1) name (d) +3 >Emitted(9, 15) Source(1, 8) + SourceIndex(1) name (d) +--- +>>> } +1 >^^^^ +2 > ^ +3 > ^^^^^^^^^-> +1 > { + > +2 > } +1 >Emitted(10, 5) Source(2, 1) + SourceIndex(1) name (d.constructor) +2 >Emitted(10, 6) Source(2, 2) + SourceIndex(1) name (d.constructor) +--- +>>> return d; +1->^^^^ +2 > ^^^^^^^^ +1-> +2 > } +1->Emitted(11, 5) Source(2, 1) + SourceIndex(1) name (d) +2 >Emitted(11, 13) Source(2, 2) + SourceIndex(1) name (d) +--- +>>>})(); +1 > +2 >^ +3 > +4 > ^^^^ +5 > ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^-> +1 > +2 >} +3 > +4 > class d { + > } +1 >Emitted(12, 1) Source(2, 1) + SourceIndex(1) name (d) +2 >Emitted(12, 2) Source(2, 2) + SourceIndex(1) name (d) +3 >Emitted(12, 2) Source(1, 1) + SourceIndex(1) +4 >Emitted(12, 6) Source(2, 2) + SourceIndex(1) +--- +>>>//# sourceMappingURL=fooResult.js.map \ No newline at end of file diff --git a/tests/baselines/reference/sourceMapWithNonCaseSensitiveFileNames.types b/tests/baselines/reference/sourceMapWithNonCaseSensitiveFileNames.types new file mode 100644 index 00000000000..2dd1319e9dd --- /dev/null +++ b/tests/baselines/reference/sourceMapWithNonCaseSensitiveFileNames.types @@ -0,0 +1,11 @@ +=== tests/cases/compiler/testFiles/app.ts === +// Note in the out result we are using same folder name only different in casing +// Since this is non case sensitive, the relative paths should be just app.ts and app2.ts in the sourcemap +class c { +>c : c +} + +=== tests/cases/compiler/testFiles/app2.ts === +class d { +>d : d +} diff --git a/tests/cases/compiler/sourceMapWithCaseSensitiveFileNames.ts b/tests/cases/compiler/sourceMapWithCaseSensitiveFileNames.ts new file mode 100644 index 00000000000..d0dff702aae --- /dev/null +++ b/tests/cases/compiler/sourceMapWithCaseSensitiveFileNames.ts @@ -0,0 +1,12 @@ +// @out: tests/cases/compiler/testfiles/fooResult.js +// @sourcemap: true +// @useCaseSensitiveFileNames: true +// @Filename: testFiles/app.ts +// Note in the out result we are using same folder name only different in casing +// Since this is case sensitive, the folders are different and hence the relative paths in sourcemap shouldn't be just app.ts or app2.ts +class c { +} + +// @Filename: testFiles/app2.ts +class d { +} \ No newline at end of file diff --git a/tests/cases/compiler/sourceMapWithNonCaseSensitiveFileNames.ts b/tests/cases/compiler/sourceMapWithNonCaseSensitiveFileNames.ts new file mode 100644 index 00000000000..85905fb29b9 --- /dev/null +++ b/tests/cases/compiler/sourceMapWithNonCaseSensitiveFileNames.ts @@ -0,0 +1,12 @@ +// @out: tests/cases/compiler/testfiles/fooResult.js +// @sourcemap: true +// @useCaseSensitiveFileNames: false +// @Filename: testFiles/app.ts +// Note in the out result we are using same folder name only different in casing +// Since this is non case sensitive, the relative paths should be just app.ts and app2.ts in the sourcemap +class c { +} + +// @Filename: testFiles/app2.ts +class d { +} \ No newline at end of file