From afad2f11f17a4ccbfe40543c140bc7e250a1bb53 Mon Sep 17 00:00:00 2001 From: xiaonan_0 Date: Mon, 8 Sep 2025 14:17:37 +0800 Subject: [PATCH] get jsDoc fileName positionColumn Signed-off-by: xiaonan_0 Change-Id: Id6d4c72d92ea5e96b12f762a430d9d9dc621cdc4 --- koala-wrapper/native/src/bridges.cc | 28 +++++++++++++++++++ koala-wrapper/src/Es2pandaNativeModule.ts | 12 ++++++++ koala-wrapper/src/arkts-api/peers/Program.ts | 4 +++ .../src/arkts-api/peers/SourcePosition.ts | 4 +++ .../src/arkts-api/utilities/public.ts | 4 +++ 5 files changed, 52 insertions(+) mode change 100644 => 100755 koala-wrapper/native/src/bridges.cc diff --git a/koala-wrapper/native/src/bridges.cc b/koala-wrapper/native/src/bridges.cc old mode 100644 new mode 100755 index 1db37cc8e..5fa5a5afd --- a/koala-wrapper/native/src/bridges.cc +++ b/koala-wrapper/native/src/bridges.cc @@ -377,6 +377,14 @@ KInt impl_SourcePositionLine(KNativePointer context, KNativePointer instance) } KOALA_INTEROP_2(SourcePositionLine, KInt, KNativePointer, KNativePointer); +KInt impl_SourcePositionCol(KNativePointer context, KNativePointer instance) +{ + auto&& _context_ = reinterpret_cast(context); + auto&& _instance_ = reinterpret_cast(instance); + return GetImpl()->SourcePositionCol(_context_, _instance_); +} +KOALA_INTEROP_2(SourcePositionCol, KInt, KNativePointer, KNativePointer); + KNativePointer impl_CreateSourceRange(KNativePointer context, KNativePointer start, KNativePointer end) { auto&& _context_ = reinterpret_cast(context); @@ -535,3 +543,23 @@ inline KUInt unpackUInt(const KByte* bytes) | (bytes[BYTE_2] << BYTE_2_SHIFT) | (bytes[BYTE_3] << BYTE_3_SHIFT) ); } + +static KNativePointer impl_JsdocStringFromDeclaration(KNativePointer contextPtr, KNativePointer decl) +{ + auto context = reinterpret_cast(contextPtr); + auto node = reinterpret_cast(decl); + + auto result = GetImpl()->JsdocStringFromDeclaration(context, node); + return new std::string(result); +} +KOALA_INTEROP_2(JsdocStringFromDeclaration, KNativePointer, KNativePointer, KNativePointer); + +static KNativePointer impl_ProgramSourceFilePathConst(KNativePointer contextPtr, KNativePointer instancePtr) +{ + auto context = reinterpret_cast(contextPtr); + auto program = reinterpret_cast(instancePtr); + + auto result = GetImpl()->ProgramSourceFilePathConst(context, program); + return new std::string(result); +} +KOALA_INTEROP_2(ProgramSourceFilePathConst, KNativePointer, KNativePointer, KNativePointer); \ No newline at end of file diff --git a/koala-wrapper/src/Es2pandaNativeModule.ts b/koala-wrapper/src/Es2pandaNativeModule.ts index 770e72aef..f0a8669ac 100644 --- a/koala-wrapper/src/Es2pandaNativeModule.ts +++ b/koala-wrapper/src/Es2pandaNativeModule.ts @@ -16,6 +16,7 @@ import { KNativePointer as KPtr, KInt, + KStringPtr, KBoolean, KNativePointer, registerNativeModuleLibraryName, @@ -781,6 +782,9 @@ export class Es2pandaNativeModule { _SourcePositionLine(context: KNativePointer, instance: KNativePointer): KInt { throw new Error('Not implemented'); } + _SourcePositionCol(context: KNativePointer, instance: KNativePointer): KInt { + throw new Error('Not implemented'); + } _CreateETSStringLiteralType(context: KNativePointer, str: String): KNativePointer { throw new Error('Not implemented'); } @@ -856,6 +860,14 @@ export class Es2pandaNativeModule { _SetUpSoPath(soPath: string): void { throw new Error('Not implemented'); } + + _JsdocStringFromDeclaration(context: KNativePointer, decl: KNativePointer): KStringPtr { + throw new Error('Not implemented'); + } + + _ProgramSourceFilePathConst(context: KPtr, decl: KPtr): KNativePointer { + throw new Error('Not implemented'); + } } export function initEs2panda(): Es2pandaNativeModule { diff --git a/koala-wrapper/src/arkts-api/peers/Program.ts b/koala-wrapper/src/arkts-api/peers/Program.ts index 5f3afbed2..c77261cbd 100644 --- a/koala-wrapper/src/arkts-api/peers/Program.ts +++ b/koala-wrapper/src/arkts-api/peers/Program.ts @@ -46,6 +46,10 @@ export class Program extends ArktsObject { get programGlobalAbsName(): string { return unpackString(global.es2panda._ETSParserGetGlobalProgramAbsName(global.context)); } + + get sourceFilePath(): string { + return unpackString(global.es2panda._ProgramSourceFilePathConst(global.context, this.peer)); + } } export class ExternalSource extends ArktsObject { diff --git a/koala-wrapper/src/arkts-api/peers/SourcePosition.ts b/koala-wrapper/src/arkts-api/peers/SourcePosition.ts index 9d84847a6..ff5abb25e 100644 --- a/koala-wrapper/src/arkts-api/peers/SourcePosition.ts +++ b/koala-wrapper/src/arkts-api/peers/SourcePosition.ts @@ -35,4 +35,8 @@ export class SourcePosition extends ArktsObject { line(): number { return global.es2panda._SourcePositionLine(global.context, this.peer); } + + col(): number { + return global.es2panda._SourcePositionCol(global.context, this.peer); + } } \ No newline at end of file diff --git a/koala-wrapper/src/arkts-api/utilities/public.ts b/koala-wrapper/src/arkts-api/utilities/public.ts index 6c9f010d4..355ca3612 100644 --- a/koala-wrapper/src/arkts-api/utilities/public.ts +++ b/koala-wrapper/src/arkts-api/utilities/public.ts @@ -280,3 +280,7 @@ export function getStartPosition(node: AstNode): SourcePosition { export function getEndPosition(node: AstNode): SourcePosition { return new SourcePosition(global.es2panda._AstNodeEndConst(global.context, node.peer)); } + +export function getJsdocStringFromDeclaration(decl: AstNode): string { + return withStringResult(global.es2panda._JsdocStringFromDeclaration(global.context, decl.peer)) ?? throwError(`failed to unpack (peer shouldn't be NULLPTR)`); +} \ No newline at end of file -- Gitee