mirror of
https://github.com/microsoft/TypeScript.git
synced 2026-02-05 08:11:30 -06:00
Remove unnecessary requirement for createHash since we already handle absence of it (#40891)
This commit is contained in:
parent
6a5527e0c6
commit
5ecdcef4ce
@ -900,7 +900,7 @@ namespace ts {
|
||||
/**
|
||||
* Computing hash to for signature verification
|
||||
*/
|
||||
const computeHash = host.createHash || generateDjb2Hash;
|
||||
const computeHash = maybeBind(host, host.createHash);
|
||||
let state = createBuilderProgramState(newProgram, getCanonicalFileName, oldState);
|
||||
let backupState: BuilderProgramState | undefined;
|
||||
newProgram.getProgramBuildInfo = () => getProgramBuildInfo(state, getCanonicalFileName);
|
||||
|
||||
@ -77,7 +77,7 @@ namespace ts {
|
||||
/**
|
||||
* Compute the hash to store the shape of the file
|
||||
*/
|
||||
export type ComputeHash = (data: string) => string;
|
||||
export type ComputeHash = ((data: string) => string) | undefined;
|
||||
|
||||
/**
|
||||
* Exported modules to from declaration emit being computed.
|
||||
@ -337,7 +337,7 @@ namespace ts {
|
||||
emitOutput.outputFiles.length > 0 ? emitOutput.outputFiles[0] : undefined;
|
||||
if (firstDts) {
|
||||
Debug.assert(fileExtensionIs(firstDts.name, Extension.Dts), "File extension for signature expected to be dts", () => `Found: ${getAnyExtensionFromPath(firstDts.name)} for ${firstDts.name}:: All output files: ${JSON.stringify(emitOutput.outputFiles.map(f => f.name))}`);
|
||||
latestSignature = computeHash(firstDts.text);
|
||||
latestSignature = (computeHash || generateDjb2Hash)(firstDts.text);
|
||||
if (exportedModulesMapCache && latestSignature !== prevSignature) {
|
||||
updateExportedModules(sourceFile, emitOutput.exportedModulesFromDeclarationEmit, exportedModulesMapCache);
|
||||
}
|
||||
@ -521,7 +521,7 @@ namespace ts {
|
||||
/**
|
||||
* When program emits modular code, gets the files affected by the sourceFile whose shape has changed
|
||||
*/
|
||||
function getFilesAffectedByUpdatedShapeWhenModuleEmit(state: BuilderState, programOfThisState: Program, sourceFileWithUpdatedShape: SourceFile, cacheToUpdateSignature: ESMap<Path, string>, cancellationToken: CancellationToken | undefined, computeHash: ComputeHash | undefined, exportedModulesMapCache: ComputingExportedModulesMap | undefined) {
|
||||
function getFilesAffectedByUpdatedShapeWhenModuleEmit(state: BuilderState, programOfThisState: Program, sourceFileWithUpdatedShape: SourceFile, cacheToUpdateSignature: ESMap<Path, string>, cancellationToken: CancellationToken | undefined, computeHash: ComputeHash, exportedModulesMapCache: ComputingExportedModulesMap | undefined) {
|
||||
if (isFileAffectingGlobalScope(sourceFileWithUpdatedShape)) {
|
||||
return getAllFilesExcludingDefaultLibraryFile(state, programOfThisState, sourceFileWithUpdatedShape);
|
||||
}
|
||||
@ -544,7 +544,7 @@ namespace ts {
|
||||
if (!seenFileNamesMap.has(currentPath)) {
|
||||
const currentSourceFile = programOfThisState.getSourceFileByPath(currentPath)!;
|
||||
seenFileNamesMap.set(currentPath, currentSourceFile);
|
||||
if (currentSourceFile && updateShapeSignature(state, programOfThisState, currentSourceFile, cacheToUpdateSignature, cancellationToken, computeHash!, exportedModulesMapCache)) { // TODO: GH#18217
|
||||
if (currentSourceFile && updateShapeSignature(state, programOfThisState, currentSourceFile, cacheToUpdateSignature, cancellationToken, computeHash, exportedModulesMapCache)) {
|
||||
queue.push(...getReferencedByPaths(state, currentSourceFile.resolvedPath));
|
||||
}
|
||||
}
|
||||
|
||||
@ -73,6 +73,7 @@ namespace ts {
|
||||
export function createCompilerHostWorker(options: CompilerOptions, setParentNodes?: boolean, system = sys): CompilerHost {
|
||||
const existingDirectories = new Map<string, boolean>();
|
||||
const getCanonicalFileName = createGetCanonicalFileName(system.useCaseSensitiveFileNames);
|
||||
const computeHash = maybeBind(system, system.createHash) || generateDjb2Hash;
|
||||
function getSourceFile(fileName: string, languageVersion: ScriptTarget, onError?: (message: string) => void): SourceFile | undefined {
|
||||
let text: string | undefined;
|
||||
try {
|
||||
@ -128,7 +129,7 @@ namespace ts {
|
||||
|
||||
let outputFingerprints: ESMap<string, OutputFingerprint>;
|
||||
function writeFileWorker(fileName: string, data: string, writeByteOrderMark: boolean) {
|
||||
if (!isWatchSet(options) || !system.createHash || !system.getModifiedTime) {
|
||||
if (!isWatchSet(options) || !system.getModifiedTime) {
|
||||
system.writeFile(fileName, data, writeByteOrderMark);
|
||||
return;
|
||||
}
|
||||
@ -137,7 +138,7 @@ namespace ts {
|
||||
outputFingerprints = new Map<string, OutputFingerprint>();
|
||||
}
|
||||
|
||||
const hash = system.createHash(data);
|
||||
const hash = computeHash(data);
|
||||
const mtimeBefore = system.getModifiedTime(fileName);
|
||||
|
||||
if (mtimeBefore) {
|
||||
|
||||
@ -345,11 +345,11 @@ namespace ts {
|
||||
|
||||
export function setGetSourceFileAsHashVersioned(compilerHost: CompilerHost, host: { createHash?(data: string): string; }) {
|
||||
const originalGetSourceFile = compilerHost.getSourceFile;
|
||||
const computeHash = host.createHash || generateDjb2Hash;
|
||||
const computeHash = maybeBind(host, host.createHash) || generateDjb2Hash;
|
||||
compilerHost.getSourceFile = (...args) => {
|
||||
const result = originalGetSourceFile.call(compilerHost, ...args);
|
||||
if (result) {
|
||||
result.version = computeHash.call(host, result.text);
|
||||
result.version = computeHash(result.text);
|
||||
}
|
||||
return result;
|
||||
};
|
||||
|
||||
@ -730,7 +730,6 @@ namespace ts.server {
|
||||
this.syntaxOnly = false;
|
||||
}
|
||||
|
||||
Debug.assert(!!this.host.createHash, "'ServerHost.createHash' is required for ProjectService");
|
||||
if (this.host.realpath) {
|
||||
this.realpathToScriptInfos = createMultiMap();
|
||||
}
|
||||
|
||||
@ -631,8 +631,16 @@ namespace ts.server {
|
||||
}
|
||||
updateProjectIfDirty(this);
|
||||
this.builderState = BuilderState.create(this.program!, this.projectService.toCanonicalFileName, this.builderState);
|
||||
return mapDefined(BuilderState.getFilesAffectedBy(this.builderState, this.program!, scriptInfo.path, this.cancellationToken, data => this.projectService.host.createHash!(data)), // TODO: GH#18217
|
||||
sourceFile => this.shouldEmitFile(this.projectService.getScriptInfoForPath(sourceFile.path)) ? sourceFile.fileName : undefined);
|
||||
return mapDefined(
|
||||
BuilderState.getFilesAffectedBy(
|
||||
this.builderState,
|
||||
this.program!,
|
||||
scriptInfo.path,
|
||||
this.cancellationToken,
|
||||
maybeBind(this.projectService.host, this.projectService.host.createHash)
|
||||
),
|
||||
sourceFile => this.shouldEmitFile(this.projectService.getScriptInfoForPath(sourceFile.path)) ? sourceFile.fileName : undefined
|
||||
);
|
||||
}
|
||||
|
||||
/**
|
||||
@ -654,7 +662,10 @@ namespace ts.server {
|
||||
const dtsFiles = outputFiles.filter(f => fileExtensionIs(f.name, Extension.Dts));
|
||||
if (dtsFiles.length === 1) {
|
||||
const sourceFile = this.program!.getSourceFile(scriptInfo.fileName)!;
|
||||
BuilderState.updateSignatureOfFile(this.builderState, this.projectService.host.createHash!(dtsFiles[0].text), sourceFile.resolvedPath);
|
||||
const signature = this.projectService.host.createHash ?
|
||||
this.projectService.host.createHash(dtsFiles[0].text) :
|
||||
generateDjb2Hash(dtsFiles[0].text);
|
||||
BuilderState.updateSignatureOfFile(this.builderState, signature, sourceFile.resolvedPath);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
Loading…
x
Reference in New Issue
Block a user