aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorTohei Ichikawa <ichikawa.tohei.desu@gmail.com>2026-01-10 03:02:25 -0500
committerTohei Ichikawa <ichikawa.tohei.desu@gmail.com>2026-01-10 03:05:04 -0500
commitbf7c92bf0909aaf49a8590570085e1c6a1787d00 (patch)
tree4a8f350ea70b5b22d2d4ca10908686551c3c7cd6
parent24f4dda0700c1c30bd3ce3352914827caf7f2c64 (diff)
Fix assertion error when imported proc groups are passed as proc arguments
-rw-r--r--src/check_expr.cpp6
-rw-r--r--tests/internal/test_imported_proc_groups.odin10
-rw-r--r--tests/internal/test_imported_proc_groups/proc_group.odin4
3 files changed, 19 insertions, 1 deletions
diff --git a/src/check_expr.cpp b/src/check_expr.cpp
index 2b2ae09cc..60fae74c6 100644
--- a/src/check_expr.cpp
+++ b/src/check_expr.cpp
@@ -1133,7 +1133,11 @@ gb_internal void check_assignment(CheckerContext *c, Operand *operand, Type *typ
x.mode = Addressing_Value;
x.type = t;
if (check_is_assignable_to(c, &x, type)) {
- add_entity_use(c, operand->expr, e);
+ if (operand->expr->kind == Ast_SelectorExpr) {
+ add_entity_use(c, operand->expr->SelectorExpr.selector, e);
+ } else {
+ add_entity_use(c, operand->expr, e);
+ }
good = true;
break;
}
diff --git a/tests/internal/test_imported_proc_groups.odin b/tests/internal/test_imported_proc_groups.odin
new file mode 100644
index 000000000..3f5b01fb3
--- /dev/null
+++ b/tests/internal/test_imported_proc_groups.odin
@@ -0,0 +1,10 @@
+package test_internal
+
+import "core:testing"
+import "test_imported_proc_groups"
+
+@test
+test_ :: proc(t: ^testing.T) {
+ use_proc :: proc(proc()) { }
+ use_proc(test_imported_proc_groups.proc_group)
+}
diff --git a/tests/internal/test_imported_proc_groups/proc_group.odin b/tests/internal/test_imported_proc_groups/proc_group.odin
new file mode 100644
index 000000000..59519ab9c
--- /dev/null
+++ b/tests/internal/test_imported_proc_groups/proc_group.odin
@@ -0,0 +1,4 @@
+package test_imported_proc_groups
+
+proc_group :: proc{empty_proc}
+empty_proc :: proc() { }