diff --git a/arkui-plugins/ui-plugins/component-transformer.ts b/arkui-plugins/ui-plugins/component-transformer.ts index 75429bc424dd13ae6dd7e8bfff3cf5982c618637..e1ab1b1ba9347f042a5df843561b2448746bf194 100644 --- a/arkui-plugins/ui-plugins/component-transformer.ts +++ b/arkui-plugins/ui-plugins/component-transformer.ts @@ -243,8 +243,11 @@ export class ComponentTransformer extends AbstractVisitor { ); if (arkts.isStructDeclaration(node)) { + arkts.classDefinitionSetFromStructModifier(newDefinition); const _node = arkts.factory.createClassDeclaration(newDefinition); _node.modifiers = node.modifiers; + _node.startPosition = node.startPosition; + _node.endPosition = node.endPosition; return _node; } else { return arkts.factory.updateClassDeclaration(node, newDefinition); diff --git a/koala-wrapper/native/src/bridges.cc b/koala-wrapper/native/src/bridges.cc index 31984c2ddffda64a64b6894e1f4807b6413e77ca..7a5cd1d3a351775a18fdf29d0e7230616ed6b8b8 100644 --- a/koala-wrapper/native/src/bridges.cc +++ b/koala-wrapper/native/src/bridges.cc @@ -474,6 +474,16 @@ KNativePointer impl_AstNodeStartConst(KNativePointer context, KNativePointer rec } KOALA_INTEROP_2(AstNodeStartConst, KNativePointer, KNativePointer, KNativePointer); +void impl_AstNodeSetStart(KNativePointer context, KNativePointer receiver, KNativePointer start) +{ + auto _context = reinterpret_cast(context); + auto _receiver = reinterpret_cast(receiver); + auto _start = reinterpret_cast(start); + GetImpl()->AstNodeSetStart(_context, _receiver, _start); + return; +} +KOALA_INTEROP_V3(AstNodeSetStart, KNativePointer, KNativePointer, KNativePointer) + KNativePointer impl_AstNodeEndConst(KNativePointer context, KNativePointer receiver) { const auto _context = reinterpret_cast(context); @@ -482,9 +492,19 @@ KNativePointer impl_AstNodeEndConst(KNativePointer context, KNativePointer recei } KOALA_INTEROP_2(AstNodeEndConst, KNativePointer, KNativePointer, KNativePointer); +void impl_AstNodeSetEnd(KNativePointer context, KNativePointer receiver, KNativePointer end) +{ + const auto _context = reinterpret_cast(context); + const auto _receiver = reinterpret_cast(receiver); + const auto _end = reinterpret_cast(end); + GetImpl()->AstNodeSetEnd(_context, _receiver, _end); + return; +} +KOALA_INTEROP_V3(AstNodeSetEnd, KNativePointer, KNativePointer, KNativePointer); + KBoolean impl_IsArrayExpression(KNativePointer nodePtr) { auto node = reinterpret_cast(nodePtr); return GetImpl()->IsArrayExpression(node); } -KOALA_INTEROP_1(IsArrayExpression, KBoolean, KNativePointer) +KOALA_INTEROP_1(IsArrayExpression, KBoolean, KNativePointer) \ No newline at end of file diff --git a/koala-wrapper/src/Es2pandaNativeModule.ts b/koala-wrapper/src/Es2pandaNativeModule.ts index 78314c0cc462b4cba9eb0c31e6b4ba8a94fd9fb5..a6b0e53eee91d9dc1d82d6a9d9b2f8ff9d616840 100644 --- a/koala-wrapper/src/Es2pandaNativeModule.ts +++ b/koala-wrapper/src/Es2pandaNativeModule.ts @@ -813,10 +813,18 @@ export class Es2pandaNativeModule { throw new Error('Not implemented'); } + _AstNodeSetStart(context: KNativePointer, receiver: KNativePointer, start: KNativePointer): void { + throw new Error('Not implemented'); + } + _AstNodeEndConst(context: KNativePointer, receiver: KNativePointer): KNativePointer { throw new Error('Not implemented'); } + _AstNodeSetEnd(context: KNativePointer, receiver: KNativePointer, end: KNativePointer): void { + throw new Error('Not implemented'); + } + _ClassVariableDeclaration(context: KNativePointer, classInstance: KNativePointer): KNativePointer { throw new Error('Not implemented'); } diff --git a/koala-wrapper/src/arkts-api/peers/AstNode.ts b/koala-wrapper/src/arkts-api/peers/AstNode.ts index 62a0b78d257036fa30639285875f363eddc9535e..0547a4b14eb84d1e8c5a0ce7171b8d576d1648a8 100644 --- a/koala-wrapper/src/arkts-api/peers/AstNode.ts +++ b/koala-wrapper/src/arkts-api/peers/AstNode.ts @@ -20,6 +20,7 @@ import { throwError } from "../../utils" import { Es2pandaModifierFlags } from "../../generated/Es2pandaEnums" import { ArktsObject } from "./ArktsObject" import { Es2pandaAstNodeType } from "../../Es2pandaEnums" +import { SourcePosition } from "./SourcePosition" export abstract class AstNode extends ArktsObject { protected constructor(peer: KNativePointer) { @@ -123,6 +124,22 @@ export abstract class AstNode extends ArktsObject { public get isStatic(): boolean { return global.generatedEs2panda._AstNodeIsStaticConst(global.context, this.peer) } + + public get startPosition(): SourcePosition { + return new SourcePosition(global.es2panda._AstNodeStartConst(global.context, this.peer)); + } + + public set startPosition(start: SourcePosition) { + global.es2panda._AstNodeSetStart(global.context, this.peer, start.peer); + } + + public get endPosition(): SourcePosition { + return new SourcePosition(global.es2panda._AstNodeEndConst(global.context, this.peer)); + } + + public set endPosition(end: SourcePosition){ + global.es2panda._AstNodeSetEnd(global.context, this.peer, end.peer); + } }