From eec04bd8c643bd8f0bf3eb211856b6683c7d6d4f Mon Sep 17 00:00:00 2001 From: laibo102 Date: Fri, 2 Sep 2022 15:04:25 +0800 Subject: [PATCH] Bugfix: fiexd button with label parameter cannot have any child Signed-off-by: laibo102 Change-Id: Iae9c68672c09080d7098274e45876242a40610c3 --- compiler/src/process_component_build.ts | 21 ++++++++++++++++++++- 1 file changed, 20 insertions(+), 1 deletion(-) diff --git a/compiler/src/process_component_build.ts b/compiler/src/process_component_build.ts index 3b59830..eea4651 100644 --- a/compiler/src/process_component_build.ts +++ b/compiler/src/process_component_build.ts @@ -60,7 +60,8 @@ import { BIND_POPUP_SET, $$, PROPERTIES_ADD_DOUBLE_DOLLAR, - ATTRIBUTE_ID + ATTRIBUTE_ID, + RESOURCE } from './pre_define'; import { INNER_COMPONENT_NAMES, @@ -413,6 +414,7 @@ function processInnerComponent(node: ts.ExpressionStatement, newStatements: ts.S } if (etsComponentResult.etsComponentNode.body && ts.isBlock(etsComponentResult.etsComponentNode.body)) { if (res.isButton) { + checkButtonParamHasLabel(etsComponentResult.etsComponentNode, log); if (projectConfig.isPreview) { newStatements.splice(-2, 1, createComponent(node, COMPONENT_CREATE_CHILD_FUNCTION).newNode); } else { @@ -1385,3 +1387,20 @@ function checkEtsComponent(node: ts.ExpressionStatement, log: LogInfo[]): void { ); } } + +function checkButtonParamHasLabel(node: ts.EtsComponentExpression, log: LogInfo[]): void { + if (node.arguments && node.arguments.length !== 0) { + for (let i = 0; i < node.arguments.length; i++) { + let argument: ts.Expression = node.arguments[i]; + if (ts.isStringLiteral(argument) || (ts.isCallExpression(argument) && ts.isIdentifier(argument.expression) && + (argument.expression.escapedText.toString() === RESOURCE))) { + log.push({ + type: LogType.ERROR, + message: "The Button component with a label parameter can not have any child.", + pos: node.getStart(), + }); + return; + } + } + } +}