// Phase 2 step 2.3 (PLAN-FFI.md): xfail then green for class/static // method declarations inside a `#jni_class` body. // // Instance vs class method is determined by the first param's TYPE: // `(self: *Self, ...)` ⇒ instance, anything else (here, `(n: i32)`) // ⇒ class method, dispatched via `GetStaticMethodID` / // `CallStatic*` at lowering time (Phase 2.12). No explicit `static` // keyword; the param shape carries the signal. #import "modules/std.sx"; Math :: #foreign #jni_class("java/lang/Math") { abs :: (n: i32) -> i32; // no `self: *Self` → class method } main :: () -> i32 { print("parse-only ok\n"); 0 }