ffi 2.3 xfail: static method body item in #jni_class

`Math :: #jni_class("java/lang/Math") { static abs :: (n: s32) -> s32; }`
should parse, today's 2.2 parser treats `static` as a plain
identifier and errors at the following `abs`. The make-green
follow-up adds a `static` keyword recognition step in the body
loop and an `is_static` flag on `JniMethodDecl`.
This commit is contained in:
agra
2026-05-20 09:31:23 +03:00
parent a2a2e83af0
commit 082ef430a3
3 changed files with 21 additions and 0 deletions

View File

@@ -0,0 +1,19 @@
// Phase 2 step 2.3 (PLAN-FFI.md): xfail then green for the `static`
// method body item inside a `#jni_class` declaration.
//
// `static name :: (args...) -> Ret;` declares a class/static method —
// no implicit `self`, dispatched via `GetStaticMethodID` / `CallStatic*`
// at lowering time (Phase 2.12). Step 2.3 extends `parseJniClassDecl`
// to recognise the `static` prefix and mark the resulting
// `JniMethodDecl` with `is_static = true`.
#import "modules/std.sx";
Math :: #jni_class("java/lang/Math") {
static abs :: (n: s32) -> s32;
}
main :: () -> s32 {
print("parse-only ok\n");
0;
}

View File

@@ -0,0 +1 @@
1

View File

@@ -0,0 +1 @@
/Users/agra/projects/sx/examples/ffi-jni-class-03-static.sx:13:12: error: expected '::'