diff --git a/arkui-plugins/ui-plugins/interop/legacy-transformer.ts b/arkui-plugins/ui-plugins/interop/legacy-transformer.ts index 366678e19cbfc237fbe16c1b30076df1975bba9b..1b831a9b00f81120621115d64aa85b81b2f64145 100644 --- a/arkui-plugins/ui-plugins/interop/legacy-transformer.ts +++ b/arkui-plugins/ui-plugins/interop/legacy-transformer.ts @@ -158,7 +158,8 @@ export class LegacyTransformer extends AbstractVisitor { definition.super, [...definition.body, instantiate_Interop], definition.modifiers, - arkts.Es2pandaModifierFlags.MODIFIER_FLAGS_NONE + arkts.Es2pandaModifierFlags.MODIFIER_FLAGS_NONE, + arkts.Es2pandaLanguage.JS ); if (arkts.isStructDeclaration(node)) { diff --git a/koala-wrapper/native/src/bridges.cc b/koala-wrapper/native/src/bridges.cc index 76e9e687407680f4c9e64e0ee51322ea4437e5f2..aec78c701e3b06911e80d60e4ea8fb048a749beb 100644 --- a/koala-wrapper/native/src/bridges.cc +++ b/koala-wrapper/native/src/bridges.cc @@ -20,6 +20,15 @@ #include #include "memoryTracker.h" +KInt impl_ClassDefinitionLanguageConst(KNativePointer context, KNativePointer receiver) +{ + const auto _context = reinterpret_cast(context); + const auto _receiver = reinterpret_cast(receiver); + auto result = GetImpl()->ClassDefinitionLanguageConst(_context, _receiver); + return result; +} +KOALA_INTEROP_2(ClassDefinitionLanguageConst, KInt, KNativePointer, KNativePointer); + KBoolean impl_ClassDefinitionIsFromStructConst(KNativePointer contextPtr, KNativePointer instancePtr) { auto context = reinterpret_cast(contextPtr); diff --git a/koala-wrapper/native/src/generated/bridges.cc b/koala-wrapper/native/src/generated/bridges.cc index 51f1e9468832473351d728fec520a743a15c5da6..886ab7f5e76b50842ea0b8ca3b4601f6f74e6c81 100644 --- a/koala-wrapper/native/src/generated/bridges.cc +++ b/koala-wrapper/native/src/generated/bridges.cc @@ -3338,6 +3338,47 @@ KNativePointer impl_UpdateClassDefinition2(KNativePointer context, KNativePointe } KOALA_INTEROP_5(UpdateClassDefinition2, KNativePointer, KNativePointer, KNativePointer, KNativePointer, KInt, KInt); +KNativePointer impl_CreateClassDefinition3(KNativePointer context, KNativePointer ident, KNativePointer typeParams, KNativePointer superTypeParams, KNativePointerArray _implements, KUInt _implementsSequenceLength, KNativePointer ctor, KNativePointer superClass, KNativePointerArray body, KUInt bodySequenceLength, KInt modifiers, KInt flags, KInt lang) +{ + const auto _context = reinterpret_cast(context); + const auto _ident = reinterpret_cast(ident); + const auto _typeParams = reinterpret_cast(typeParams); + const auto _superTypeParams = reinterpret_cast(superTypeParams); + const auto __implements = reinterpret_cast(_implements); + const auto __implementsSequenceLength = static_cast(_implementsSequenceLength); + const auto _ctor = reinterpret_cast(ctor); + const auto _superClass = reinterpret_cast(superClass); + const auto _body = reinterpret_cast(body); + const auto _bodySequenceLength = static_cast(bodySequenceLength); + const auto _modifiers = static_cast(modifiers); + const auto _flags = static_cast(flags); + const auto _lang = static_cast(lang); + auto result = GetImpl()->CreateClassDefinition3(_context, _ident, _typeParams, _superTypeParams, __implements, __implementsSequenceLength, _ctor, _superClass, _body, _bodySequenceLength, _modifiers, _flags, _lang); + return result; +} +KOALA_INTEROP_13(CreateClassDefinition3, KNativePointer, KNativePointer, KNativePointer, KNativePointer, KNativePointer, KNativePointerArray, KUInt, KNativePointer, KNativePointer, KNativePointerArray, KUInt, KInt, KInt, KInt); + +KNativePointer impl_UpdateClassDefinition3(KNativePointer context, KNativePointer original, KNativePointer ident, KNativePointer typeParams, KNativePointer superTypeParams, KNativePointerArray _implements, KUInt _implementsSequenceLength, KNativePointer ctor, KNativePointer superClass, KNativePointerArray body, KUInt bodySequenceLength, KInt modifiers, KInt flags, KInt lang) +{ + const auto _context = reinterpret_cast(context); + const auto _original = reinterpret_cast(original); + const auto _ident = reinterpret_cast(ident); + const auto _typeParams = reinterpret_cast(typeParams); + const auto _superTypeParams = reinterpret_cast(superTypeParams); + const auto __implements = reinterpret_cast(_implements); + const auto __implementsSequenceLength = static_cast(_implementsSequenceLength); + const auto _ctor = reinterpret_cast(ctor); + const auto _superClass = reinterpret_cast(superClass); + const auto _body = reinterpret_cast(body); + const auto _bodySequenceLength = static_cast(bodySequenceLength); + const auto _modifiers = static_cast(modifiers); + const auto _flags = static_cast(flags); + const auto _lang = static_cast(lang); + auto result = GetImpl()->UpdateClassDefinition3(_context, _original, _ident, _typeParams, _superTypeParams, __implements, __implementsSequenceLength, _ctor, _superClass, _body, _bodySequenceLength, _modifiers, _flags, _lang); + return result; +} +KOALA_INTEROP_14(UpdateClassDefinition3, KNativePointer, KNativePointer, KNativePointer, KNativePointer, KNativePointer, KNativePointer, KNativePointerArray, KUInt, KNativePointer, KNativePointer, KNativePointerArray, KUInt, KInt, KInt, KInt); + KNativePointer impl_ClassDefinitionIdentConst(KNativePointer context, KNativePointer receiver) { const auto _context = reinterpret_cast(context); diff --git a/koala-wrapper/src/arkts-api/node-utilities/ClassDefinition.ts b/koala-wrapper/src/arkts-api/node-utilities/ClassDefinition.ts index feeac630221456f06585187ee9cef3b4e87e0e9c..88a9c30f977aaea08484c61dc979d2dbc2b08a4b 100644 --- a/koala-wrapper/src/arkts-api/node-utilities/ClassDefinition.ts +++ b/koala-wrapper/src/arkts-api/node-utilities/ClassDefinition.ts @@ -25,7 +25,7 @@ import { isSameNativeObject } from '../peers/ArktsObject'; import { AstNode } from '../peers/AstNode'; import { MethodDefinition } from '../types'; import { updateThenAttach } from '../utilities/private'; -import { Es2pandaClassDefinitionModifiers, Es2pandaModifierFlags } from '../../generated/Es2pandaEnums'; +import { Es2pandaClassDefinitionModifiers, Es2pandaModifierFlags, Es2pandaLanguage } from '../../generated/Es2pandaEnums'; import { classDefinitionFlags } from '../utilities/public'; export function updateClassDefinition( @@ -38,7 +38,8 @@ export function updateClassDefinition( superClass: Expression | undefined, body: readonly AstNode[], modifiers: Es2pandaClassDefinitionModifiers, - flags: Es2pandaModifierFlags + flags: Es2pandaModifierFlags, + lang?: Es2pandaLanguage ): ClassDefinition { if ( isSameNativeObject(ident, original.ident) && @@ -48,14 +49,15 @@ export function updateClassDefinition( isSameNativeObject(superClass, original.super) && isSameNativeObject(body, original.body) && isSameNativeObject(modifiers, original.modifiers) && - isSameNativeObject(flags, classDefinitionFlags(original)) + isSameNativeObject(flags, classDefinitionFlags(original)) && + (!lang || isSameNativeObject(lang, original.lang)) /* TODO: no getter for ctor */ ) { return original; } const update = updateThenAttach( - ClassDefinition.updateClassDefinition, + ClassDefinition.update3ClassDefinition, (node: ClassDefinition, original: ClassDefinition) => node.setAnnotations(original.annotations) ); return update( @@ -68,6 +70,8 @@ export function updateClassDefinition( superClass, body, modifiers, - flags + flags, + lang ?? original.lang ); } + \ No newline at end of file diff --git a/koala-wrapper/src/generated/Es2pandaEnums.ts b/koala-wrapper/src/generated/Es2pandaEnums.ts index 32833963d034c98a2df8d45deae78017d77c9003..ec9fff93f3e72ca225c4302a9b62d5cfffc9d2a2 100644 --- a/koala-wrapper/src/generated/Es2pandaEnums.ts +++ b/koala-wrapper/src/generated/Es2pandaEnums.ts @@ -1096,3 +1096,12 @@ export enum Es2pandaCheckAction { CHECK_ACTION_CONTINUE = 0, CHECK_ACTION_SKIP_SUBTREE = 1 } + +export enum Es2pandaLanguage { + AS = 0, + JS = 1, + TS = 2, + ETS = 3, + COUNT = 4 +} + \ No newline at end of file diff --git a/koala-wrapper/src/generated/Es2pandaNativeModule.ts b/koala-wrapper/src/generated/Es2pandaNativeModule.ts index 00f6e176e632105df3efeadab43122faf652d3f5..4c8b12ef84ded32d963f034986ffd5588d2add53 100644 --- a/koala-wrapper/src/generated/Es2pandaNativeModule.ts +++ b/koala-wrapper/src/generated/Es2pandaNativeModule.ts @@ -1069,6 +1069,12 @@ export class Es2pandaNativeModule { _UpdateClassDefinition2(context: KNativePointer, original: KNativePointer, ident: KNativePointer, modifiers: KInt, flags: KInt): KNativePointer { throw new Error("'UpdateClassDefinition2 was not overloaded by native module initialization") } + _CreateClassDefinition3(context: KNativePointer, ident: KNativePointer, typeParams: KNativePointer, superTypeParams: KNativePointer, _implements: BigUint64Array, _implementsSequenceLength: KUInt, ctor: KNativePointer, superClass: KNativePointer, body: BigUint64Array, bodySequenceLength: KUInt, modifiers: KInt, flags: KInt, lang: KInt): KNativePointer { + throw new Error("'CreateClassDefinition was not overloaded by native module initialization") + } + _UpdateClassDefinition3(context: KNativePointer, original: KNativePointer, ident: KNativePointer, typeParams: KNativePointer, superTypeParams: KNativePointer, _implements: BigUint64Array, _implementsSequenceLength: KUInt, ctor: KNativePointer, superClass: KNativePointer, body: BigUint64Array, bodySequenceLength: KUInt, modifiers: KInt, flags: KInt, lang: KInt): KNativePointer { + throw new Error("'UpdateClassDefinition was not overloaded by native module initialization") + } _ClassDefinitionIdentConst(context: KNativePointer, receiver: KNativePointer): KNativePointer { throw new Error("'ClassDefinitionIdentConst was not overloaded by native module initialization") } @@ -1222,6 +1228,9 @@ export class Es2pandaNativeModule { _ClassDefinitionSetAnnotations(context: KNativePointer, receiver: KNativePointer, annotations: BigUint64Array, annotationsSequenceLength: KUInt): void { throw new Error("'ClassDefinitionSetAnnotations was not overloaded by native module initialization") } + _ClassDefinitionLanguageConst(context: KNativePointer, receiver: KNativePointer): KInt { + throw new Error("'ClassDefinitionLanguageConst was not overloaded by native module initialization") + } _CreateArrayExpression(context: KNativePointer, elements: BigUint64Array, elementsSequenceLength: KUInt): KNativePointer { throw new Error("'CreateArrayExpression was not overloaded by native module initialization") } diff --git a/koala-wrapper/src/generated/peers/ClassDefinition.ts b/koala-wrapper/src/generated/peers/ClassDefinition.ts index fe51f912be9594aa2f104ce7e9172eaedd3c7141..dbba8b211fecae43fb416eeaa977c87d3ca6faf5 100644 --- a/koala-wrapper/src/generated/peers/ClassDefinition.ts +++ b/koala-wrapper/src/generated/peers/ClassDefinition.ts @@ -36,7 +36,7 @@ import { TSTypeParameterInstantiation } from "./TSTypeParameterInstantiation" import { TSClassImplements } from "./TSClassImplements" import { MethodDefinition } from "./MethodDefinition" import { Expression } from "./Expression" -import { Es2pandaClassDefinitionModifiers } from "./../Es2pandaEnums" +import { Es2pandaClassDefinitionModifiers, Es2pandaLanguage } from "./../Es2pandaEnums" import { Es2pandaModifierFlags } from "./../Es2pandaEnums" import { TSEnumDeclaration } from "./TSEnumDeclaration" import { ClassDeclaration } from "./ClassDeclaration" @@ -66,6 +66,12 @@ export class ClassDefinition extends TypedAstNode { static update2ClassDefinition(original: ClassDefinition | undefined, ident: Identifier | undefined, modifiers: Es2pandaClassDefinitionModifiers, flags: Es2pandaModifierFlags): ClassDefinition { return new ClassDefinition(global.generatedEs2panda._UpdateClassDefinition2(global.context, passNode(original), passNode(ident), modifiers, flags)) } + static create3ClassDefinition(ident: Identifier | undefined, typeParams: TSTypeParameterDeclaration | undefined, superTypeParams: TSTypeParameterInstantiation | undefined, _implements: readonly TSClassImplements[], ctor: MethodDefinition | undefined, superClass: Expression | undefined, body: readonly AstNode[], modifiers: Es2pandaClassDefinitionModifiers, flags: Es2pandaModifierFlags, lang: Es2pandaLanguage): ClassDefinition { + return new ClassDefinition(global.generatedEs2panda._CreateClassDefinition3(global.context, passNode(ident), passNode(typeParams), passNode(superTypeParams), passNodeArray(_implements), _implements.length, passNode(ctor), passNode(superClass), passNodeArray(body), body.length, modifiers, flags, lang)) + } + static update3ClassDefinition(original: ClassDefinition | undefined, ident: Identifier | undefined, typeParams: TSTypeParameterDeclaration | undefined, superTypeParams: TSTypeParameterInstantiation | undefined, _implements: readonly TSClassImplements[], ctor: MethodDefinition | undefined, superClass: Expression | undefined, body: readonly AstNode[], modifiers: Es2pandaClassDefinitionModifiers, flags: Es2pandaModifierFlags, lang: Es2pandaLanguage): ClassDefinition { + return new ClassDefinition(global.generatedEs2panda._UpdateClassDefinition3(global.context, passNode(original), passNode(ident), passNode(typeParams), passNode(superTypeParams), passNodeArray(_implements), _implements.length, passNode(ctor), passNode(superClass), passNodeArray(body), body.length, modifiers, flags, lang)) + } get ident(): Identifier | undefined { return unpackNode(global.generatedEs2panda._ClassDefinitionIdentConst(global.context, this.peer)) } @@ -213,6 +219,9 @@ export class ClassDefinition extends TypedAstNode { global.generatedEs2panda._ClassDefinitionSetAnnotations(global.context, this.peer, passNodeArray(annotations), annotations.length) return this } + get lang(): Es2pandaLanguage { + return global.generatedEs2panda._ClassDefinitionLanguageConst(global.context, this.peer); + } } export function isClassDefinition(node: AstNode): node is ClassDefinition { return node instanceof ClassDefinition