diff options
| author | Tohei Ichikawa <ichikawa.tohei.desu@gmail.com> | 2026-01-10 03:02:25 -0500 |
|---|---|---|
| committer | Tohei Ichikawa <ichikawa.tohei.desu@gmail.com> | 2026-01-10 03:05:04 -0500 |
| commit | bf7c92bf0909aaf49a8590570085e1c6a1787d00 (patch) | |
| tree | 4a8f350ea70b5b22d2d4ca10908686551c3c7cd6 | |
| parent | 24f4dda0700c1c30bd3ce3352914827caf7f2c64 (diff) | |
Fix assertion error when imported proc groups are passed as proc arguments
| -rw-r--r-- | src/check_expr.cpp | 6 | ||||
| -rw-r--r-- | tests/internal/test_imported_proc_groups.odin | 10 | ||||
| -rw-r--r-- | tests/internal/test_imported_proc_groups/proc_group.odin | 4 |
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() { } |