houhaoyu@huawei.com

fix debugline fileName

Signed-off-by: houhaoyu <houhaoyu@huawei.com>
Change-Id: Iaeb719f4775f03e498f46f9324633c0a7c8e429a
This commit is contained in:
houhaoyu
2022-03-15 13:19:08 +08:00
parent 74bc0d09ec
commit 4b7e08c9cf
3 changed files with 27 additions and 17 deletions
+16 -8
View File
@@ -15,6 +15,7 @@
const WebSocket = require('ws'); const WebSocket = require('ws');
const ts = require('typescript'); const ts = require('typescript');
const path = require('path');
const { processComponentChild } = require('../lib/process_component_build'); const { processComponentChild } = require('../lib/process_component_build');
@@ -25,7 +26,8 @@ let pluginSocket = '';
let supplement = { let supplement = {
isAcceleratePreview: false, isAcceleratePreview: false,
line: 0, line: 0,
column: 0 column: 0,
fileName: ''
} }
const pluginCommandChannelMessageHandlers = { const pluginCommandChannelMessageHandlers = {
@@ -56,16 +58,22 @@ function handlePluginCommand(jsonData) {
function handlePluginCompileComponent(jsonData) { function handlePluginCompileComponent(jsonData) {
const receivedMsg = jsonData; const receivedMsg = jsonData;
const sourceNode = ts.createSourceFile('preview.ts', receivedMsg.data.script, const compilerOptions = ts.readConfigFile(
ts.ScriptTarget.Latest, true, ts.ScriptKind.TS); path.resolve(__dirname, '../tsconfig.json'), ts.sys.readFile).config.compilerOptions;
Object.assign(compilerOptions, {
"sourceMap": false,
});
const sourceNode = ts.createSourceFile('preview.ets', 'struct{build(){' + receivedMsg.data.script + '}}',
ts.ScriptTarget.Latest, true, ts.ScriptKind.ETS, compilerOptions);
const previewStatements = []; const previewStatements = [];
const log = []; const log = [];
supplement = { supplement = {
isAcceleratePreview: true, isAcceleratePreview: true,
line: parseInt(JSON.parse(receivedMsg.data.offset).line), line: parseInt(JSON.parse(receivedMsg.data.offset).line),
column: parseInt(JSON.parse(receivedMsg.data.offset).column) column: parseInt(JSON.parse(receivedMsg.data.offset).column),
fileName: receivedMsg.data.filePath || ''
} }
processComponentChild(sourceNode, previewStatements, log, supplement); processComponentChild(sourceNode.statements[0].members[1].body, previewStatements, log, supplement);
supplement.isAcceleratePreview = false; supplement.isAcceleratePreview = false;
const newSource = ts.factory.updateSourceFile(sourceNode, previewStatements); const newSource = ts.factory.updateSourceFile(sourceNode, previewStatements);
const printer = ts.createPrinter({ newLine: ts.NewLineKind.LineFeed }); const printer = ts.createPrinter({ newLine: ts.NewLineKind.LineFeed });
@@ -73,11 +81,11 @@ function handlePluginCompileComponent(jsonData) {
receivedMsg.data.script = ts.transpileModule(result, {}).outputText; receivedMsg.data.script = ts.transpileModule(result, {}).outputText;
if (receivedMsg.data.offset) { if (receivedMsg.data.offset) {
for (let i = 0; i < log.length; i++) { for (let i = 0; i < log.length; i++) {
let line = parseInt(newSource.getLineAndCharacterOfPosition(log[i].pos).line); let line = parseInt(sourceNode.getLineAndCharacterOfPosition(log[i].pos).line);
let column = parseInt(newSource.getLineAndCharacterOfPosition(log[i].pos).character); let column = parseInt(sourceNode.getLineAndCharacterOfPosition(log[i].pos).character);
if (line === 0) { if (line === 0) {
log[i].line = parseInt(JSON.parse(receivedMsg.data.offset).line); log[i].line = parseInt(JSON.parse(receivedMsg.data.offset).line);
log[i].column = parseInt(JSON.parse(receivedMsg.data.offset).column) + column; log[i].column = parseInt(JSON.parse(receivedMsg.data.offset).column) + column - 15;
} else { } else {
log[i].line = parseInt(JSON.parse(receivedMsg.data.offset).line) + line; log[i].line = parseInt(JSON.parse(receivedMsg.data.offset).line) + line;
log[i].column = column; log[i].column = column;
+11 -7
View File
@@ -151,13 +151,15 @@ function validateRootNode(node: ts.MethodDeclaration, log: LogInfo[]): boolean {
interface supplementType { interface supplementType {
isAcceleratePreview: boolean, isAcceleratePreview: boolean,
line: number, line: number,
column: number column: number,
fileName: string
} }
let newsupplement: supplementType = { let newsupplement: supplementType = {
isAcceleratePreview: false, isAcceleratePreview: false,
line: 0, line: 0,
column: 0 column: 0,
fileName: ''
}; };
function validateEtsComponentNode(node: ts.CallExpression | ts.EtsComponentExpression) { function validateEtsComponentNode(node: ts.CallExpression | ts.EtsComponentExpression) {
@@ -173,8 +175,8 @@ function validateEtsComponentNode(node: ts.CallExpression | ts.EtsComponentExpre
} }
} }
export function processComponentChild(node: ts.Block | ts.SourceFile, newStatements: ts.Statement[], export function processComponentChild(node: ts.Block | ts.SourceFile, newStatements: ts.Statement[], log: LogInfo[],
log: LogInfo[], supplement: supplementType = {isAcceleratePreview: false, line: 0, column: 0}): void { supplement: supplementType = {isAcceleratePreview: false, line: 0, column: 0, fileName: ''}): void {
if (supplement.isAcceleratePreview) { if (supplement.isAcceleratePreview) {
newsupplement = supplement; newsupplement = supplement;
} }
@@ -290,19 +292,21 @@ function processInnerComponent(node: ts.ExpressionStatement, index: number, arr:
const posOfNode: ts.LineAndCharacter = const posOfNode: ts.LineAndCharacter =
transformLog.sourceFile.getLineAndCharacterOfPosition(getRealNodePos(node)); transformLog.sourceFile.getLineAndCharacterOfPosition(getRealNodePos(node));
const projectPath: string = projectConfig.projectPath; const projectPath: string = projectConfig.projectPath;
const curFileName: string = transformLog.sourceFile.fileName.replace(/.ts$/, ''); let curFileName: string = transformLog.sourceFile.fileName.replace(/\.ts$/, '');
let line: number = 1; let line: number = 1;
let col: number = 1; let col: number = 1;
if (newsupplement.isAcceleratePreview) { if (newsupplement.isAcceleratePreview) {
if (posOfNode.line === 0) { if (posOfNode.line === 0) {
col = newsupplement.column; col = newsupplement.column - 15;
} }
line = newsupplement.line; line = newsupplement.line;
curFileName = newsupplement.fileName;
} }
newsupplement = { newsupplement = {
isAcceleratePreview: false, isAcceleratePreview: false,
line: 0, line: 0,
column: 0 column: 0,
fileName: ''
}; };
const debugInfo: string = const debugInfo: string =
`${path.relative(projectPath, curFileName).replace(/\\+/g, '/')}` + `${path.relative(projectPath, curFileName).replace(/\\+/g, '/')}` +
-2
View File
@@ -15,7 +15,6 @@
const path = require('path'); const path = require('path');
const fs = require('fs'); const fs = require('fs');
const { CleanWebpackPlugin } = require('clean-webpack-plugin');
const CopyPlugin = require('copy-webpack-plugin'); const CopyPlugin = require('copy-webpack-plugin');
const Webpack = require('webpack'); const Webpack = require('webpack');
const { GenAbcPlugin } = require('./lib/gen_abc_plugin'); const { GenAbcPlugin } = require('./lib/gen_abc_plugin');
@@ -117,7 +116,6 @@ function initConfig(config) {
/\.d\.ts$/ /\.d\.ts$/
] ]
}), }),
new CleanWebpackPlugin(),
new ResultStates() new ResultStates()
] ]
}); });