MCPcopy Index your code
hub / github.com/nodejs/node / createBuilderProgram

Function createBuilderProgram

test/fixtures/snapshot/typescript.js:120762–121018  ·  view source on GitHub ↗
(kind, _a)

Source from the content-addressed store, hash-verified

120760 }
120761 ts.getBuilderCreationParameters = getBuilderCreationParameters;
120762 function createBuilderProgram(kind, _a) {
120763 var newProgram = _a.newProgram, host = _a.host, oldProgram = _a.oldProgram, configFileParsingDiagnostics = _a.configFileParsingDiagnostics;
120764 // Return same program if underlying program doesnt change
120765 var oldState = oldProgram && oldProgram.getState();
120766 if (oldState && newProgram === oldState.program && configFileParsingDiagnostics === newProgram.getConfigFileParsingDiagnostics()) {
120767 newProgram = undefined; // TODO: GH#18217
120768 oldState = undefined;
120769 return oldProgram;
120770 }
120771 /**
120772 * Create the canonical file name for identity
120773 */
120774 var getCanonicalFileName = ts.createGetCanonicalFileName(host.useCaseSensitiveFileNames());
120775 /**
120776 * Computing hash to for signature verification
120777 */
120778 var computeHash = ts.maybeBind(host, host.createHash);
120779 var state = createBuilderProgramState(newProgram, getCanonicalFileName, oldState, host.disableUseFileVersionAsSignature);
120780 var backupState;
120781 newProgram.getProgramBuildInfo = function () { return getProgramBuildInfo(state, getCanonicalFileName); };
120782 // To ensure that we arent storing any references to old program or new program without state
120783 newProgram = undefined; // TODO: GH#18217
120784 oldProgram = undefined;
120785 oldState = undefined;
120786 var getState = function () { return state; };
120787 var builderProgram = createRedirectedBuilderProgram(getState, configFileParsingDiagnostics);
120788 builderProgram.getState = getState;
120789 builderProgram.backupState = function () {
120790 ts.Debug.assert(backupState === undefined);
120791 backupState = cloneBuilderProgramState(state);
120792 };
120793 builderProgram.restoreState = function () {
120794 state = ts.Debug.checkDefined(backupState);
120795 backupState = undefined;
120796 };
120797 builderProgram.getAllDependencies = function (sourceFile) { return ts.BuilderState.getAllDependencies(state, ts.Debug.checkDefined(state.program), sourceFile); };
120798 builderProgram.getSemanticDiagnostics = getSemanticDiagnostics;
120799 builderProgram.emit = emit;
120800 builderProgram.releaseProgram = function () {
120801 releaseCache(state);
120802 backupState = undefined;
120803 };
120804 if (kind === BuilderProgramKind.SemanticDiagnosticsBuilderProgram) {
120805 builderProgram.getSemanticDiagnosticsOfNextAffectedFile = getSemanticDiagnosticsOfNextAffectedFile;
120806 }
120807 else if (kind === BuilderProgramKind.EmitAndSemanticDiagnosticsBuilderProgram) {
120808 builderProgram.getSemanticDiagnosticsOfNextAffectedFile = getSemanticDiagnosticsOfNextAffectedFile;
120809 builderProgram.emitNextAffectedFile = emitNextAffectedFile;
120810 builderProgram.emitBuildInfo = emitBuildInfo;
120811 }
120812 else {
120813 ts.notImplemented();
120814 }
120815 return builderProgram;
120816 function emitBuildInfo(writeFile, cancellationToken) {
120817 if (state.buildInfoEmitPending) {
120818 var result = ts.Debug.checkDefined(state.program).emitBuildInfo(writeFile || ts.maybeBind(host, host.writeFile), cancellationToken);
120819 state.buildInfoEmitPending = false;

Callers

nothing calls this directly

Calls 7

getProgramBuildInfoFunction · 0.85
cloneBuilderProgramStateFunction · 0.85
releaseCacheFunction · 0.85
getStateMethod · 0.80
assertMethod · 0.80

Tested by

no test coverage detected

Used in the wild real call sites across dependent graphs

searching dependent graphs…