• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
1/*
2 * Copyright (c) 2024 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 */
15
16import { KInt } from '@koalaui/interop';
17import { isSameNativeObject } from '../peers/ArktsObject';
18import { AstNode } from '../peers/AstNode';
19import { MethodDefinition } from '../types';
20import { updateThenAttach } from '../utilities/private';
21import { Es2pandaMethodDefinitionKind } from '../../generated/Es2pandaEnums';
22import { ScriptFunction } from '../../generated';
23
24export function updateMethodDefinition(
25    original: MethodDefinition,
26    kind: Es2pandaMethodDefinitionKind,
27    key: AstNode,
28    value: ScriptFunction,
29    modifiers: KInt,
30    isComputed: boolean
31): MethodDefinition {
32    if (
33        isSameNativeObject(kind, original.kind) &&
34        isSameNativeObject(key, original.name) &&
35        isSameNativeObject(value, original.scriptFunction) &&
36        isSameNativeObject(modifiers, original.modifiers)
37        /* TODO: no getter for isComputed */
38    ) {
39        return original;
40    }
41
42    const update = updateThenAttach(MethodDefinition.update, (node: MethodDefinition, original: MethodDefinition) =>
43        node.setOverloads(original.overloads)
44    );
45    return update(original, kind, key, value, modifiers, isComputed);
46}
47