diff --git a/examples/ffi-jni-call-01-parse.sx b/examples/ffi-jni-call-01-parse.sx new file mode 100644 index 0000000..2180082 --- /dev/null +++ b/examples/ffi-jni-call-01-parse.sx @@ -0,0 +1,24 @@ +// Phase 1 step 1.2 (PLAN-FFI.md): parser coverage for `#jni_call` +// and `#jni_static_call`. Same `#(ReturnT)(args...)` +// shape as `#objc_call`; lands green on the existing parse rule +// (Phase 1.1 added all three). +// +// `inline if false` suppresses sema/codegen — the lowering arrives +// in Phase 1.15+; this file pins the parse surface only. + +#import "modules/std.sx"; + +main :: () -> s32 { + inline if false { + // Instance method: env, target, name, sig, args... + #jni_call(*void)(null, null, "getWindow", "()Landroid/view/Window;"); + + // Static method: env, class, name, sig, args... + #jni_static_call(s32)(null, null, "max", "(II)I", 3, 7); + + // Returning a Java primitive (jboolean → sx bool). + #jni_call(bool)(null, null, "isShown", "()Z"); + } + print("parse-only ok\n"); + 0; +} diff --git a/tests/expected/ffi-jni-call-01-parse.exit b/tests/expected/ffi-jni-call-01-parse.exit new file mode 100644 index 0000000..573541a --- /dev/null +++ b/tests/expected/ffi-jni-call-01-parse.exit @@ -0,0 +1 @@ +0 diff --git a/tests/expected/ffi-jni-call-01-parse.txt b/tests/expected/ffi-jni-call-01-parse.txt new file mode 100644 index 0000000..2ef3b99 --- /dev/null +++ b/tests/expected/ffi-jni-call-01-parse.txt @@ -0,0 +1 @@ +parse-only ok