From 2a73b5b9bbafd40a0de8a258f7f9e468464dd9a6 Mon Sep 17 00:00:00 2001 From: houhaoyu Date: Thu, 18 Aug 2022 22:57:26 +0800 Subject: [PATCH] houhaoyu@huawei.com fix circurlar import Signed-off-by: houhaoyu Change-Id: I54bc26f3ec9f160e4be7d5be2310ab82ad91196c --- compiler/src/ets_checker.ts | 16 +--------------- compiler/src/process_component_build.ts | 8 ++++---- compiler/src/process_ui_syntax.ts | 17 ++++++++++++++--- 3 files changed, 19 insertions(+), 22 deletions(-) diff --git a/compiler/src/ets_checker.ts b/compiler/src/ets_checker.ts index dd335d0..11115a0 100644 --- a/compiler/src/ets_checker.ts +++ b/compiler/src/ets_checker.ts @@ -45,7 +45,7 @@ import { cache } from './compile_info'; import { hasDecorator } from './utils'; -import { isExtendFunction } from './process_ui_syntax'; +import { isExtendFunction, isOriginalExtend } from './process_ui_syntax'; function readDeaclareFiles(): string[] { const declarationsFileNames: string[] = []; @@ -327,20 +327,6 @@ function parseAllNode(node: ts.Node, sourceFileNode: ts.SourceFile, extendFuncti node.getChildren().forEach((item: ts.Node) => parseAllNode(item, sourceFileNode, extendFunctionInfo)); } -export function isOriginalExtend(node: ts.Block): boolean { - let innerNode: ts.Node = node.statements[0]; - if (node.statements.length === 1 && ts.isExpressionStatement(innerNode)) { - while (innerNode.expression) { - innerNode = innerNode.expression; - } - if (ts.isIdentifier(innerNode) && innerNode.pos && innerNode.end && innerNode.pos === innerNode.end && - innerNode.escapedText.toString().match(/Instance$/)) { - return true; - } - } - return false; -} - function traverseBuild(node: ts.Node, index: number): void { if (ts.isExpressionStatement(node)) { let parentComponentName: string = getName(node); diff --git a/compiler/src/process_component_build.ts b/compiler/src/process_component_build.ts index c65fb8d..62b2255 100644 --- a/compiler/src/process_component_build.ts +++ b/compiler/src/process_component_build.ts @@ -114,10 +114,10 @@ export function processComponentBuild(node: ts.MethodDeclaration, } export function processComponentBlock(node: ts.Block, isLazy: boolean, log: LogInfo[], - isTransition: boolean = false, isInnerBuilder: boolean = false): ts.Block { + isTransition: boolean = false, isInnerBuilder: boolean = false, parent: string = undefined): ts.Block { const newStatements: ts.Statement[] = []; processComponentChild(node, newStatements, log, - {isAcceleratePreview: false, line: 0, column: 0, fileName: ''}, isInnerBuilder); + {isAcceleratePreview: false, line: 0, column: 0, fileName: ''}, isInnerBuilder, parent); if (isLazy) { newStatements.unshift(createRenderingInProgress(true)); } @@ -1333,8 +1333,8 @@ function getComponentType(node: ts.ExpressionStatement, log: LogInfo[], } else if (builderParamObjectCollection.get(componentCollection.currentClassName) && builderParamObjectCollection.get(componentCollection.currentClassName).has(name)) { return ComponentType.builderParamMethod; - } else if (parent === 'Column' || parent === 'XComponent' && ts.isCallExpression(node.expression) && - ts.isIdentifier(node.expression.expression)) { + } else if ((parent === 'Column' || parent === 'XComponent' || CUSTOM_BUILDER_METHOD.has(parent)) && + ts.isCallExpression(node.expression) && ts.isIdentifier(node.expression.expression)) { return ComponentType.function; } else if (!isAttributeNode(node)) { log.push({ diff --git a/compiler/src/process_ui_syntax.ts b/compiler/src/process_ui_syntax.ts index 97291f0..ab99a17 100644 --- a/compiler/src/process_ui_syntax.ts +++ b/compiler/src/process_ui_syntax.ts @@ -80,7 +80,6 @@ import { projectConfig } from '../main'; import { createCustomComponentNewExpression, createViewCreate } from './process_component_member'; -import { isOriginalExtend } from './ets_checker' export const transformLog: FileLog = new FileLog(); export let contextGlobal: ts.TransformationContext; @@ -142,7 +141,7 @@ export function processUISyntax(program: ts.Program, ut = false): Function { CUSTOM_BUILDER_METHOD.add(node.name.getText()); node = ts.factory.updateFunctionDeclaration(node, undefined, node.modifiers, node.asteriskToken, node.name, node.typeParameters, node.parameters, node.type, - processComponentBlock(node.body, false, transformLog.errors)); + processComponentBlock(node.body, false, transformLog.errors, false, false, node.name.getText())); } else if (hasDecorator(node, COMPONENT_STYLES_DECORATOR)) { if (node.parameters.length === 0) { node = undefined; @@ -462,7 +461,19 @@ function processExtend(node: ts.FunctionDeclaration, log: LogInfo[]): ts.Functio } } - +export function isOriginalExtend(node: ts.Block): boolean { + let innerNode: ts.Node = node.statements[0]; + if (node.statements.length === 1 && ts.isExpressionStatement(innerNode)) { + while (innerNode.expression) { + innerNode = innerNode.expression; + } + if (ts.isIdentifier(innerNode) && innerNode.pos && innerNode.end && innerNode.pos === innerNode.end && + innerNode.escapedText.toString().match(/Instance$/)) { + return true; + } + } + return false; +} function isThisNode(node: ts.ExpressionStatement): boolean { let innerNode: ts.Node = node;