diff --git a/koala-wrapper/native/src/bridges.cc b/koala-wrapper/native/src/bridges.cc old mode 100644 new mode 100755 index 1db37cc8e0a435734cdf09c7f7102dbd66da786e..5fa5a5afd13170e7f14c23927a99e2d5f4d893ed --- 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 770e72aefe7571806ff11ba9960d7627107792a2..f0a8669ac5d5921f5300e26be46a2754030aadd9 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 5f3afbed2d791a58cd359de519e2a3d8412cff2e..c77261cbd33e1f60ab3e9ea4dbe7e7665f2f1304 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 9d84847a6c09a6c588e278f10c9b1fded3da0ff3..ff5abb25e40d34b1db15e00642cbef62662e4903 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 6c9f010d417edb7ad1b27228009c93aa3c202bc6..355ca361230e65542b5a56a793ca10c9de942891 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