From c56612bbe49057996544b23b656499f9b91adb7f Mon Sep 17 00:00:00 2001 From: xieziang Date: Mon, 19 May 2025 21:31:56 +0800 Subject: [PATCH] add position information to class Change-Id: I3c189337b46c6454b237698fc33fc151cd010d46 Signed-off-by: xieziang --- .../ui-plugins/component-transformer.ts | 3 +++ koala-wrapper/native/src/bridges.cc | 22 ++++++++++++++++++- koala-wrapper/src/Es2pandaNativeModule.ts | 8 +++++++ koala-wrapper/src/arkts-api/peers/AstNode.ts | 17 ++++++++++++++ 4 files changed, 49 insertions(+), 1 deletion(-) diff --git a/arkui-plugins/ui-plugins/component-transformer.ts b/arkui-plugins/ui-plugins/component-transformer.ts index 4485bc9bd..862c6d4af 100644 --- a/arkui-plugins/ui-plugins/component-transformer.ts +++ b/arkui-plugins/ui-plugins/component-transformer.ts @@ -242,8 +242,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 e765f48ae..5333ea8b5 100644 --- a/koala-wrapper/native/src/bridges.cc +++ b/koala-wrapper/native/src/bridges.cc @@ -530,6 +530,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); @@ -538,6 +548,16 @@ 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); @@ -635,4 +655,4 @@ void impl_LogDiagnosticWithSuggestion(KNativePointer context, KNativePointer dia const auto _range = reinterpret_cast(range); GetImpl()->LogDiagnosticWithSuggestion(_context, _diagnosticInfo, _suggestionInfo, _range); } -KOALA_INTEROP_V4(LogDiagnosticWithSuggestion, KNativePointer, KNativePointer, KNativePointer, KNativePointer); \ No newline at end of file +KOALA_INTEROP_V4(LogDiagnosticWithSuggestion, KNativePointer, KNativePointer, KNativePointer, KNativePointer); diff --git a/koala-wrapper/src/Es2pandaNativeModule.ts b/koala-wrapper/src/Es2pandaNativeModule.ts index e509c21e3..0ca1523ec 100644 --- a/koala-wrapper/src/Es2pandaNativeModule.ts +++ b/koala-wrapper/src/Es2pandaNativeModule.ts @@ -831,10 +831,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 e60cd5c06..ffab3c5cf 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) { @@ -128,6 +129,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); + } } export class UnsupportedNode extends AstNode { -- Gitee