From 45b995d03083e1624f07e300cd29bb66ef8edb5b Mon Sep 17 00:00:00 2001 From: Sheetal Nandi Date: Wed, 28 Oct 2015 15:45:00 -0700 Subject: [PATCH] Remove extensions doesnt need to depend on compiler options any more --- src/compiler/binder.ts | 8 ++++---- src/compiler/checker.ts | 2 +- src/compiler/core.ts | 6 ++---- src/compiler/utilities.ts | 13 ++++--------- src/harness/harness.ts | 2 +- src/harness/projectsRunner.ts | 6 +++--- src/harness/test262Runner.ts | 2 +- src/services/navigationBar.ts | 2 +- tests/cases/unittests/transpile.ts | 2 +- 9 files changed, 18 insertions(+), 25 deletions(-) diff --git a/src/compiler/binder.ts b/src/compiler/binder.ts index 2b9183e7115..c12a9afad62 100644 --- a/src/compiler/binder.ts +++ b/src/compiler/binder.ts @@ -77,13 +77,13 @@ namespace ts { IsContainerWithLocals = IsContainer | HasLocals } - export function bindSourceFile(file: SourceFile, compilerOptions: CompilerOptions) { + export function bindSourceFile(file: SourceFile) { let start = new Date().getTime(); - bindSourceFileWorker(file, compilerOptions); + bindSourceFileWorker(file); bindTime += new Date().getTime() - start; } - function bindSourceFileWorker(file: SourceFile, compilerOptions: CompilerOptions) { + function bindSourceFileWorker(file: SourceFile) { let parent: Node; let container: Node; let blockScopeContainer: Node; @@ -949,7 +949,7 @@ namespace ts { function bindSourceFileIfExternalModule() { setExportContextFlag(file); if (isExternalModule(file)) { - bindAnonymousDeclaration(file, SymbolFlags.ValueModule, `"${removeFileExtension(file.fileName, getSupportedExtensions(compilerOptions))}"`); + bindAnonymousDeclaration(file, SymbolFlags.ValueModule, `"${removeFileExtension(file.fileName)}"`); } } diff --git a/src/compiler/checker.ts b/src/compiler/checker.ts index ec9a8e67f2f..c329ff729f9 100644 --- a/src/compiler/checker.ts +++ b/src/compiler/checker.ts @@ -14871,7 +14871,7 @@ namespace ts { function initializeTypeChecker() { // Bind all source files and propagate errors forEach(host.getSourceFiles(), file => { - bindSourceFile(file, compilerOptions); + bindSourceFile(file); }); // Initialize global symbol table diff --git a/src/compiler/core.ts b/src/compiler/core.ts index bb07062ec57..26e53aebab1 100644 --- a/src/compiler/core.ts +++ b/src/compiler/core.ts @@ -747,10 +747,8 @@ namespace ts { return false; } - export function removeFileExtension(path: string, supportedExtensions: string[]): string { - // Sort the extensions in descending order of their length - let extensionsToRemove = supportedExtensions.slice(0, supportedExtensions.length) // Get duplicate array - .sort((ext1, ext2) => compareValues(ext2.length, ext1.length)); // Sort in descending order of extension length + export const extensionsToRemove = ["d.ts", "ts", "js", "tsx", "jsx"]; + export function removeFileExtension(path: string): string { for (let ext of extensionsToRemove) { if (fileExtensionIs(path, ext)) { return path.substr(0, path.length - ext.length - 1); diff --git a/src/compiler/utilities.ts b/src/compiler/utilities.ts index b889e8b119d..7c88e1a9417 100644 --- a/src/compiler/utilities.ts +++ b/src/compiler/utilities.ts @@ -1759,19 +1759,14 @@ namespace ts { }; } - export function getExtensionsToRemoveForEmitPath(compilerOptons: CompilerOptions) { - return getSupportedExtensions(compilerOptons).concat("jsx", "js"); - } - export function getOwnEmitOutputFilePath(sourceFile: SourceFile, host: EmitHost, extension: string) { let compilerOptions = host.getCompilerOptions(); let emitOutputFilePathWithoutExtension: string; if (compilerOptions.outDir) { - emitOutputFilePathWithoutExtension = removeFileExtension(getSourceFilePathInNewDir(sourceFile, host, compilerOptions.outDir), - getExtensionsToRemoveForEmitPath(compilerOptions)); + emitOutputFilePathWithoutExtension = removeFileExtension(getSourceFilePathInNewDir(sourceFile, host, compilerOptions.outDir)); } else { - emitOutputFilePathWithoutExtension = removeFileExtension(sourceFile.fileName, getExtensionsToRemoveForEmitPath(compilerOptions)); + emitOutputFilePathWithoutExtension = removeFileExtension(sourceFile.fileName); } return emitOutputFilePathWithoutExtension + extension; @@ -1816,7 +1811,7 @@ namespace ts { } function getDeclarationEmitFilePath(jsFilePath: string, options: CompilerOptions) { - return options.declaration ? removeFileExtension(jsFilePath, getExtensionsToRemoveForEmitPath(options)) + ".d.ts" : undefined; + return options.declaration ? removeFileExtension(jsFilePath) + ".d.ts" : undefined; } export function hasFile(sourceFiles: SourceFile[], fileName: string) { @@ -2144,7 +2139,7 @@ namespace ts { export function isJavaScript(fileName: string) { // Treat file as typescript if the extension is not supportedTypeScript - return hasExtension(fileName) && !forEach(supportedTypeScriptExtensions, extension => fileExtensionIs(fileName, extension)); + return hasExtension(fileName) && forEach(supportedJavascriptExtensions, extension => fileExtensionIs(fileName, extension)); } export function isTsx(fileName: string) { diff --git a/src/harness/harness.ts b/src/harness/harness.ts index 7fac374c09c..f19ed70b40d 100644 --- a/src/harness/harness.ts +++ b/src/harness/harness.ts @@ -1193,7 +1193,7 @@ namespace Harness { sourceFileName = outFile; } - let dTsFileName = ts.removeFileExtension(sourceFileName, ts.getExtensionsToRemoveForEmitPath(options)) + ".d.ts"; + let dTsFileName = ts.removeFileExtension(sourceFileName) + ".d.ts"; return ts.forEach(result.declFilesCode, declFile => declFile.fileName === dTsFileName ? declFile : undefined); } diff --git a/src/harness/projectsRunner.ts b/src/harness/projectsRunner.ts index f596b421e18..286409672d0 100644 --- a/src/harness/projectsRunner.ts +++ b/src/harness/projectsRunner.ts @@ -354,17 +354,17 @@ class ProjectRunner extends RunnerBase { if (compilerOptions.outDir) { let sourceFilePath = ts.getNormalizedAbsolutePath(sourceFile.fileName, compilerResult.program.getCurrentDirectory()); sourceFilePath = sourceFilePath.replace(compilerResult.program.getCommonSourceDirectory(), ""); - emitOutputFilePathWithoutExtension = ts.removeFileExtension(ts.combinePaths(compilerOptions.outDir, sourceFilePath), ts.getExtensionsToRemoveForEmitPath(compilerOptions)); + emitOutputFilePathWithoutExtension = ts.removeFileExtension(ts.combinePaths(compilerOptions.outDir, sourceFilePath)); } else { - emitOutputFilePathWithoutExtension = ts.removeFileExtension(sourceFile.fileName, ts.getExtensionsToRemoveForEmitPath(compilerOptions)); + emitOutputFilePathWithoutExtension = ts.removeFileExtension(sourceFile.fileName); } let outputDtsFileName = emitOutputFilePathWithoutExtension + ".d.ts"; allInputFiles.unshift(findOutpuDtsFile(outputDtsFileName)); } else { - let outputDtsFileName = ts.removeFileExtension(compilerOptions.outFile || compilerOptions.out, ts.getExtensionsToRemoveForEmitPath(compilerOptions)) + ".d.ts"; + let outputDtsFileName = ts.removeFileExtension(compilerOptions.outFile || compilerOptions.out) + ".d.ts"; let outputDtsFile = findOutpuDtsFile(outputDtsFileName); if (!ts.contains(allInputFiles, outputDtsFile)) { allInputFiles.unshift(outputDtsFile); diff --git a/src/harness/test262Runner.ts b/src/harness/test262Runner.ts index 1e95fc4ae74..491c71a5839 100644 --- a/src/harness/test262Runner.ts +++ b/src/harness/test262Runner.ts @@ -37,7 +37,7 @@ class Test262BaselineRunner extends RunnerBase { before(() => { let content = Harness.IO.readFile(filePath); - let testFilename = ts.removeFileExtension(filePath, ["js"]).replace(/\//g, "_") + ".test"; + let testFilename = ts.removeFileExtension(filePath).replace(/\//g, "_") + ".test"; let testCaseContent = Harness.TestCaseParser.makeUnitsFromTest(content, testFilename); let inputFiles = testCaseContent.testUnitData.map(unit => { diff --git a/src/services/navigationBar.ts b/src/services/navigationBar.ts index 5dbc514d462..46ec807a881 100644 --- a/src/services/navigationBar.ts +++ b/src/services/navigationBar.ts @@ -442,7 +442,7 @@ namespace ts.NavigationBar { hasGlobalNode = true; let rootName = isExternalModule(node) - ? "\"" + escapeString(getBaseFileName(removeFileExtension(normalizePath(node.fileName), getSupportedExtensions(compilerOptions)))) + "\"" + ? "\"" + escapeString(getBaseFileName(removeFileExtension(normalizePath(node.fileName)))) + "\"" : "" return getNavigationBarItem(rootName, diff --git a/tests/cases/unittests/transpile.ts b/tests/cases/unittests/transpile.ts index 06949e174c1..1d688f091a4 100644 --- a/tests/cases/unittests/transpile.ts +++ b/tests/cases/unittests/transpile.ts @@ -64,7 +64,7 @@ module ts { let transpileModuleResultWithSourceMap = transpileModule(input, transpileOptions); assert.isTrue(transpileModuleResultWithSourceMap.sourceMapText !== undefined); - let expectedSourceMapFileName = removeFileExtension(getBaseFileName(normalizeSlashes(transpileOptions.fileName)), ts.getExtensionsToRemoveForEmitPath(transpileOptions.compilerOptions)) + ".js.map"; + let expectedSourceMapFileName = removeFileExtension(getBaseFileName(normalizeSlashes(transpileOptions.fileName))) + ".js.map"; let expectedSourceMappingUrlLine = `//# sourceMappingURL=${expectedSourceMapFileName}`; if (testSettings.expectedOutput !== undefined) {