From 6e6c7ef18e95c50a54b3ac5976b8e1076eb15505 Mon Sep 17 00:00:00 2001 From: Alexander Gorshenev Date: Tue, 11 Feb 2025 14:15:43 +0300 Subject: [PATCH] Skip statics from the struct member rewrites Signed-off-by: Alexander Gorshenev --- arkoala/ets-plugin/src/ApiUtils.ts | 8 ++++++++ arkoala/ets-plugin/src/PropertyTranslators.ts | 2 ++ arkoala/ets-plugin/src/StructTransformer.ts | 5 ++++- 3 files changed, 14 insertions(+), 1 deletion(-) diff --git a/arkoala/ets-plugin/src/ApiUtils.ts b/arkoala/ets-plugin/src/ApiUtils.ts index 13ae28761..a8ed18c30 100644 --- a/arkoala/ets-plugin/src/ApiUtils.ts +++ b/arkoala/ets-plugin/src/ApiUtils.ts @@ -254,6 +254,14 @@ export function makePrivate(modifierLikes: ts.ModifierLike[] | undefined): ts.Mo return collect(Private(), dropPrivate(dropPublic(modifierLikes))) } +export function isStatic(node: ts.Node): boolean { + if (!ts.canHaveModifiers(node)) return false + const modifierLikes = ts.getModifiers(node) + return !!(modifierLikes?.find(it => + it.kind != ts.SyntaxKind.StaticKeyword) + ) +} + export function sourceStructName(node: ts.StructDeclaration) { return node.name ?? throwError(`Nameless struct`) } diff --git a/arkoala/ets-plugin/src/PropertyTranslators.ts b/arkoala/ets-plugin/src/PropertyTranslators.ts index f293554b3..543fbbf26 100644 --- a/arkoala/ets-plugin/src/PropertyTranslators.ts +++ b/arkoala/ets-plugin/src/PropertyTranslators.ts @@ -23,6 +23,7 @@ import { dropReadonly, findDecoratorArgument, id, + isStatic, makePrivate, parameter, undefinedValue, @@ -796,6 +797,7 @@ function translatePropOrObjectLinkToBuildParameter(property: ts.PropertyDeclarat export function classifyProperty(member: ts.ClassElement, context: PropertyTranslatorContext): PropertyTranslator | undefined { if (!ts.isPropertyDeclaration(member)) return undefined + if (isStatic(member)) return undefined if (isState(member)) return new State(member, context) if (isStorageProp(member)) return new StorageProp(member, context) diff --git a/arkoala/ets-plugin/src/StructTransformer.ts b/arkoala/ets-plugin/src/StructTransformer.ts index 3bde629ad..03a67906f 100644 --- a/arkoala/ets-plugin/src/StructTransformer.ts +++ b/arkoala/ets-plugin/src/StructTransformer.ts @@ -74,6 +74,7 @@ import { hasDecorator, id, isKnownIdentifier, + isStatic, isUndefined, ObjectType, optionalParameter, @@ -466,7 +467,9 @@ export class StructTransformer extends AbstractVisitor { // The rest of the struct members are translated here directly. const restMembers = structNode.members.map(member => { - if (isKnownIdentifier(member.name, "build")) { + if (isStatic(member)) { + return member + } else if (isKnownIdentifier(member.name, "build")) { return this.translateBuilder(structNode, propertyTranslators, member, true) } else if (hasDecorator(member, "Builder")) { return this.translateBuilder(structNode, propertyTranslators, member, false) -- Gitee