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:
19
examples/ffi-jni-class-03-static.sx
Normal file
19
examples/ffi-jni-class-03-static.sx
Normal 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;
|
||||
}
|
||||
1
tests/expected/ffi-jni-class-03-static.exit
Normal file
1
tests/expected/ffi-jni-class-03-static.exit
Normal file
@@ -0,0 +1 @@
|
||||
1
|
||||
1
tests/expected/ffi-jni-class-03-static.txt
Normal file
1
tests/expected/ffi-jni-class-03-static.txt
Normal file
@@ -0,0 +1 @@
|
||||
/Users/agra/projects/sx/examples/ffi-jni-class-03-static.sx:13:12: error: expected '::'
|
||||
Reference in New Issue
Block a user