diff --git a/library/modules/std.sx b/library/modules/std.sx index 745042f..0a9fe65 100644 --- a/library/modules/std.sx +++ b/library/modules/std.sx @@ -33,8 +33,6 @@ Context :: struct { data: *void; } -context : Context = ---; - // --- Slice & string allocation --- cstring :: (size: s64) -> string { diff --git a/src/ir/lower.zig b/src/ir/lower.zig index bbdddde..ab2ab03 100644 --- a/src/ir/lower.zig +++ b/src/ir/lower.zig @@ -9929,6 +9929,11 @@ pub const Lowering = struct { return binding.ty; } } + // `context` is the implicit-ctx identifier; type is Context + // when the program has registered it (i.e. std.sx imported). + if (self.implicit_ctx_enabled and std.mem.eql(u8, id.name, "context")) { + if (self.module.types.findByName(self.module.types.internString("Context"))) |ty| return ty; + } // Check global variables (e.g., `context : Context`) if (self.global_names.get(id.name)) |gi| { return gi.ty; diff --git a/tests/expected/ffi-jni-call-03-methodid-sharing.ir b/tests/expected/ffi-jni-call-03-methodid-sharing.ir index 7736b02..6f325ee 100644 --- a/tests/expected/ffi-jni-call-03-methodid-sharing.ir +++ b/tests/expected/ffi-jni-call-03-methodid-sharing.ir @@ -1,5 +1,4 @@ -@context = internal global { { ptr, ptr, ptr }, ptr } zeroinitializer @g_should_call = internal global i1 false @__sx_default_context = internal global { { ptr, ptr, ptr }, ptr } { { ptr, ptr, ptr } { ptr null, ptr @__thunk_CAllocator_Allocator_alloc, ptr @__thunk_CAllocator_Allocator_dealloc }, ptr null } @str = private unnamed_addr constant [5 x i8] c"noop\00", align 1 diff --git a/tests/expected/ffi-jni-call-04-jint-return.ir b/tests/expected/ffi-jni-call-04-jint-return.ir index be00dd5..f8ada9c 100644 --- a/tests/expected/ffi-jni-call-04-jint-return.ir +++ b/tests/expected/ffi-jni-call-04-jint-return.ir @@ -1,5 +1,4 @@ -@context = internal global { { ptr, ptr, ptr }, ptr } zeroinitializer @g_should_call = internal global i1 false @__sx_default_context = internal global { { ptr, ptr, ptr }, ptr } { { ptr, ptr, ptr } { ptr null, ptr @__thunk_CAllocator_Allocator_alloc, ptr @__thunk_CAllocator_Allocator_dealloc }, ptr null } @str = private unnamed_addr constant [9 x i8] c"getCount\00", align 1 diff --git a/tests/expected/ffi-jni-call-05-jlong-return.ir b/tests/expected/ffi-jni-call-05-jlong-return.ir index 6eb7c23..4f60316 100644 --- a/tests/expected/ffi-jni-call-05-jlong-return.ir +++ b/tests/expected/ffi-jni-call-05-jlong-return.ir @@ -1,5 +1,4 @@ -@context = internal global { { ptr, ptr, ptr }, ptr } zeroinitializer @g_should_call = internal global i1 false @__sx_default_context = internal global { { ptr, ptr, ptr }, ptr } { { ptr, ptr, ptr } { ptr null, ptr @__thunk_CAllocator_Allocator_alloc, ptr @__thunk_CAllocator_Allocator_dealloc }, ptr null } @str = private unnamed_addr constant [18 x i8] c"currentTimeMillis\00", align 1 diff --git a/tests/expected/ffi-jni-call-06-jdouble-return.ir b/tests/expected/ffi-jni-call-06-jdouble-return.ir index 450c79c..c99f714 100644 --- a/tests/expected/ffi-jni-call-06-jdouble-return.ir +++ b/tests/expected/ffi-jni-call-06-jdouble-return.ir @@ -1,5 +1,4 @@ -@context = internal global { { ptr, ptr, ptr }, ptr } zeroinitializer @g_should_call = internal global i1 false @__sx_default_context = internal global { { ptr, ptr, ptr }, ptr } { { ptr, ptr, ptr } { ptr null, ptr @__thunk_CAllocator_Allocator_alloc, ptr @__thunk_CAllocator_Allocator_dealloc }, ptr null } @str = private unnamed_addr constant [9 x i8] c"getValue\00", align 1 diff --git a/tests/expected/ffi-jni-call-07-jboolean-return.ir b/tests/expected/ffi-jni-call-07-jboolean-return.ir index fc3b284..c7a5226 100644 --- a/tests/expected/ffi-jni-call-07-jboolean-return.ir +++ b/tests/expected/ffi-jni-call-07-jboolean-return.ir @@ -1,5 +1,4 @@ -@context = internal global { { ptr, ptr, ptr }, ptr } zeroinitializer @g_should_call = internal global i1 false @__sx_default_context = internal global { { ptr, ptr, ptr }, ptr } { { ptr, ptr, ptr } { ptr null, ptr @__thunk_CAllocator_Allocator_alloc, ptr @__thunk_CAllocator_Allocator_dealloc }, ptr null } @str = private unnamed_addr constant [8 x i8] c"isShown\00", align 1 diff --git a/tests/expected/ffi-jni-call-08-jobject-return.ir b/tests/expected/ffi-jni-call-08-jobject-return.ir index 298655c..678dd62 100644 --- a/tests/expected/ffi-jni-call-08-jobject-return.ir +++ b/tests/expected/ffi-jni-call-08-jobject-return.ir @@ -1,5 +1,4 @@ -@context = internal global { { ptr, ptr, ptr }, ptr } zeroinitializer @g_should_call = internal global i1 false @__sx_default_context = internal global { { ptr, ptr, ptr }, ptr } { { ptr, ptr, ptr } { ptr null, ptr @__thunk_CAllocator_Allocator_alloc, ptr @__thunk_CAllocator_Allocator_dealloc }, ptr null } @str = private unnamed_addr constant [10 x i8] c"getWindow\00", align 1 diff --git a/tests/expected/ffi-jni-call-09-static.ir b/tests/expected/ffi-jni-call-09-static.ir index 17d369c..4689968 100644 --- a/tests/expected/ffi-jni-call-09-static.ir +++ b/tests/expected/ffi-jni-call-09-static.ir @@ -1,5 +1,4 @@ -@context = internal global { { ptr, ptr, ptr }, ptr } zeroinitializer @g_should_call = internal global i1 false @__sx_default_context = internal global { { ptr, ptr, ptr }, ptr } { { ptr, ptr, ptr } { ptr null, ptr @__thunk_CAllocator_Allocator_alloc, ptr @__thunk_CAllocator_Allocator_dealloc }, ptr null } @str = private unnamed_addr constant [4 x i8] c"max\00", align 1 diff --git a/tests/expected/ffi-jni-class-08-call.ir b/tests/expected/ffi-jni-class-08-call.ir index 6ddcbcb..d1011c6 100644 --- a/tests/expected/ffi-jni-class-08-call.ir +++ b/tests/expected/ffi-jni-class-08-call.ir @@ -1,5 +1,4 @@ -@context = internal global { { ptr, ptr, ptr }, ptr } zeroinitializer @g_should_call = internal global i1 false @__sx_default_context = internal global { { ptr, ptr, ptr }, ptr } { { ptr, ptr, ptr } { ptr null, ptr @__thunk_CAllocator_Allocator_alloc, ptr @__thunk_CAllocator_Allocator_dealloc }, ptr null } @str = private unnamed_addr constant [10 x i8] c"getWindow\00", align 1 diff --git a/tests/expected/ffi-jni-env-02-lexical-direct.ir b/tests/expected/ffi-jni-env-02-lexical-direct.ir index 1b6d44f..f0b1f08 100644 --- a/tests/expected/ffi-jni-env-02-lexical-direct.ir +++ b/tests/expected/ffi-jni-env-02-lexical-direct.ir @@ -1,5 +1,4 @@ -@context = internal global { { ptr, ptr, ptr }, ptr } zeroinitializer @g_should_call = internal global i1 false @__sx_default_context = internal global { { ptr, ptr, ptr }, ptr } { { ptr, ptr, ptr } { ptr null, ptr @__thunk_CAllocator_Allocator_alloc, ptr @__thunk_CAllocator_Allocator_dealloc }, ptr null } @str = private unnamed_addr constant [5 x i8] c"noop\00", align 1 diff --git a/tests/expected/ffi-objc-call-03-selector-sharing.ir b/tests/expected/ffi-objc-call-03-selector-sharing.ir index e7eb4ed..21d5867 100644 --- a/tests/expected/ffi-objc-call-03-selector-sharing.ir +++ b/tests/expected/ffi-objc-call-03-selector-sharing.ir @@ -1,5 +1,4 @@ -@context = internal global { { ptr, ptr, ptr }, ptr } zeroinitializer @OS = internal global i64 0 @ARCH = internal global i64 0 @POINTER_SIZE = internal global i64 8 diff --git a/tests/expected/ffi-objc-call-06-sret-return.ir b/tests/expected/ffi-objc-call-06-sret-return.ir index feb6aeb..2e9b97f 100644 --- a/tests/expected/ffi-objc-call-06-sret-return.ir +++ b/tests/expected/ffi-objc-call-06-sret-return.ir @@ -1,5 +1,4 @@ -@context = internal global { { ptr, ptr, ptr }, ptr } zeroinitializer @OS = internal global i64 0 @ARCH = internal global i64 0 @POINTER_SIZE = internal global i64 8