From b1821b2344933e2c443f6aebceef9d57935cb6fd Mon Sep 17 00:00:00 2001 From: houhaoyu Date: Wed, 23 Mar 2022 14:47:38 +0800 Subject: [PATCH] houhaoyu@huawei.com MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit 极速预览bug修复 Signed-off-by: houhaoyu Change-Id: I93dcba21d535e3a89133523e9f5380d02cd81b41 --- compiler/src/process_component_build.ts | 21 ++++++++++++++++----- 1 file changed, 16 insertions(+), 5 deletions(-) diff --git a/compiler/src/process_component_build.ts b/compiler/src/process_component_build.ts index cc6349e..2b03657 100644 --- a/compiler/src/process_component_build.ts +++ b/compiler/src/process_component_build.ts @@ -202,10 +202,18 @@ function validateEtsComponentNode(node: ts.CallExpression | ts.EtsComponentExpre } } +let sourceNode: ts.SourceFile; + export function processComponentChild(node: ts.Block | ts.SourceFile, newStatements: ts.Statement[], log: LogInfo[], supplement: supplementType = {isAcceleratePreview: false, line: 0, column: 0, fileName: ''}): void { if (supplement.isAcceleratePreview) { newsupplement = supplement; + const compilerOptions = ts.readConfigFile( + path.resolve(__dirname, '../tsconfig.json'), ts.sys.readFile).config.compilerOptions; + Object.assign(compilerOptions, { + "sourceMap": false, + }); + sourceNode = ts.createSourceFile('', node.getText(), ts.ScriptTarget.Latest, true, ts.ScriptKind.ETS, compilerOptions); } if (node.statements.length) { node.statements.forEach((item, index, array) => { @@ -316,19 +324,22 @@ function processInnerComponent(node: ts.ExpressionStatement, index: number, arr: const res: CreateResult = createComponent(node, COMPONENT_CREATE_FUNCTION); newStatements.push(res.newNode); if (projectConfig.isPreview && !NO_DEBUG_LINE_COMPONENT.has(name)) { - const posOfNode: ts.LineAndCharacter = - transformLog.sourceFile.getLineAndCharacterOfPosition(getRealNodePos(node)); - const projectPath: string = projectConfig.projectPath; - let curFileName: string = transformLog.sourceFile.fileName.replace(/\.ts$/, ''); + let posOfNode: ts.LineAndCharacter; + let curFileName: string; let line: number = 1; let col: number = 1; if (newsupplement.isAcceleratePreview) { + posOfNode = sourceNode.getLineAndCharacterOfPosition(getRealNodePos(node)); + curFileName = newsupplement.fileName; if (posOfNode.line === 0) { col = newsupplement.column - 15; } line = newsupplement.line; - curFileName = newsupplement.fileName; + } else { + posOfNode = transformLog.sourceFile.getLineAndCharacterOfPosition(getRealNodePos(node)); + curFileName = transformLog.sourceFile.fileName.replace(/\.ts$/, ''); } + const projectPath: string = projectConfig.projectPath; newsupplement = { isAcceleratePreview: false, line: 0,