1/* 2 * Copyright (c) 2022-2025 Huawei Device Co., Ltd. 3 * Licensed under the Apache License, Version 2.0 (the "License"); 4 * you may not use this file except in compliance with the License. 5 * You may obtain a copy of the License at 6 * 7 * http://www.apache.org/licenses/LICENSE-2.0 8 * 9 * Unless required by applicable law or agreed to in writing, software 10 * distributed under the License is distributed on an "AS IS" BASIS, 11 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 12 * See the License for the specific language governing permissions and 13 * limitations under the License. 14 */ 15import * as arkts from '@koalaui/libarkts'; 16import { AbstractVisitor } from '../../common/abstract-visitor'; 17import { isBuilderLambda, isBuilderLambdaMethodDecl } from './utils'; 18import { factory } from './factory'; 19 20export class BuilderLambdaTransformer extends AbstractVisitor { 21 reset(): void { 22 super.reset(); 23 } 24 25 visitor(beforeChildren: arkts.AstNode): arkts.AstNode { 26 if (arkts.isCallExpression(beforeChildren) && isBuilderLambda(beforeChildren)) { 27 const lambda = factory.transformBuilderLambda(beforeChildren); 28 return this.visitEachChild(lambda); 29 } 30 if (arkts.isMethodDefinition(beforeChildren) && isBuilderLambdaMethodDecl(beforeChildren)) { 31 const lambda = factory.transformBuilderLambdaMethodDecl(beforeChildren); 32 return this.visitEachChild(lambda); 33 } 34 const node = this.visitEachChild(beforeChildren); 35 return node; 36 } 37} 38