From da57ffb8c9ef805ebcc46d339d0f512d2d469c70 Mon Sep 17 00:00:00 2001 From: yoyo930021 Date: Sun, 11 Oct 2020 15:32:17 +0800 Subject: [PATCH] Pass version in new template sourceFile --- server/src/services/typescriptService/preprocess.ts | 12 ++++++++++-- 1 file changed, 10 insertions(+), 2 deletions(-) diff --git a/server/src/services/typescriptService/preprocess.ts b/server/src/services/typescriptService/preprocess.ts index ff7bc6bbf5..d9aa394ea8 100644 --- a/server/src/services/typescriptService/preprocess.ts +++ b/server/src/services/typescriptService/preprocess.ts @@ -122,6 +122,14 @@ export function createUpdater(tsModule: T_TypeScript, allChildComponentsInfo: Ma true /* setParentNodes: Need this to walk the AST */, tsModule.ScriptKind.JS ); + // Don't update program and file every time + // *internal* property + (newSourceFile as any).version = (sourceFile as any).version; + (newSourceFile as any).scriptSnapshot = { + getText: (start: number, end: number) => newText.substring(start, end), + getLength: () => newText.length, + getChangeRange: () => void 0 + }; const templateFsPath = URI.file(vueTemplateFileName).fsPath; const sourceMapNodes = generateSourceMap(tsModule, sourceFile, newSourceFile); @@ -179,7 +187,7 @@ function modifyVueScript(tsModule: T_TypeScript, sourceFile: ts.SourceFile): voi st => st.kind === tsModule.SyntaxKind.ExportAssignment && (st as ts.ExportAssignment).expression.kind === tsModule.SyntaxKind.ObjectLiteralExpression - ); + ) as ts.ExportAssignment; if (exportDefaultObject) { // 1. add `import Vue from 'vue' // (the span of the inserted statement must be (0,0) to avoid overlapping existing statements) @@ -204,7 +212,7 @@ function modifyVueScript(tsModule: T_TypeScript, sourceFile: ts.SourceFile): voi end: objectLiteral.pos + 1 }); (exportDefaultObject as any).expression = setObjPos(tsModule.createCall(vue, undefined, [objectLiteral])); - setObjPos(((exportDefaultObject as ts.ExportAssignment).expression as ts.CallExpression).arguments!); + setObjPos((exportDefaultObject.expression as ts.CallExpression).arguments!); } }