From c03b623f856386102d70313a303485b9200930c6 Mon Sep 17 00:00:00 2001 From: bojiang Date: Mon, 18 Jul 2022 21:14:09 +0800 Subject: [PATCH] jiangbo91@huawei.com MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit @Builder @State 无法使用其他装饰器 Signed-off-by: bojiang Change-Id: Ia062d5520eb977ad9c62043e0b9f3bf36deaf452 --- compiler/src/process_component_class.ts | 9 ++++++++- 1 file changed, 8 insertions(+), 1 deletion(-) diff --git a/compiler/src/process_component_class.ts b/compiler/src/process_component_class.ts index f1b6087..17016e5 100644 --- a/compiler/src/process_component_class.ts +++ b/compiler/src/process_component_class.ts @@ -300,7 +300,14 @@ function processComponentMethod(node: ts.MethodDeclaration, parentComponentName: node.type, processComponentBlock(node.body, false, log, true)); } else if (hasDecorator(node, COMPONENT_BUILDER_DECORATOR)) { CUSTOM_BUILDER_METHOD.add(name); - const builderNode: ts.MethodDeclaration = ts.factory.updateMethodDeclaration(node, undefined, node.modifiers, + let unknownBuilderDecorator: ts.Decorator[] = []; + if (Array.isArray(node.decorators)) { + unknownBuilderDecorator = node.decorators.filter((item) => { + return item.getText().replace(/\(.*\)$/, '').trim() !== COMPONENT_BUILDER_DECORATOR; + }) + } + const removeBuilderDecorator: ts.Decorator[] = node.decorators.length === 1 ? undefined : unknownBuilderDecorator; + const builderNode: ts.MethodDeclaration = ts.factory.updateMethodDeclaration(node, removeBuilderDecorator, node.modifiers, node.asteriskToken, node.name, node.questionToken, node.typeParameters, node.parameters, node.type, processComponentBlock(node.body, false, log)); updateItem = processBuildMember(builderNode, context, log);