Merge pull request #2552 from jcmoyer/fix-2466

Use compound literal storage for ValueDecl lvals
This commit is contained in:
gingerBill
2023-06-08 12:34:40 +01:00
committed by GitHub
4 changed files with 25 additions and 0 deletions

View File

@@ -2463,6 +2463,7 @@ gb_internal void lb_build_stmt(lbProcedure *p, Ast *node) {
lb_add_entity(p->module, e, val);
lb_add_debug_local_variable(p, val.value, e->type, e->token);
lvals_preused[lval_index] = true;
lvals[lval_index] = *comp_lit_addr;
}
}
}

View File

@@ -12,6 +12,7 @@ set COMMON=-collection:tests=..\..
..\..\..\odin test ..\test_issue_2056.odin %COMMON% -file || exit /b
..\..\..\odin test ..\test_issue_2087.odin %COMMON% -file || exit /b
..\..\..\odin build ..\test_issue_2113.odin %COMMON% -file -debug || exit /b
..\..\..\odin test ..\test_issue_2466.odin %COMMON% -file || exit /b
@echo off

View File

@@ -13,6 +13,7 @@ $ODIN test ../test_issue_1592.odin $COMMON -file
$ODIN test ../test_issue_2056.odin $COMMON -file
$ODIN test ../test_issue_2087.odin $COMMON -file
$ODIN build ../test_issue_2113.odin $COMMON -file -debug
$ODIN test ../test_issue_2466.odin $COMMON -file
set +x

View File

@@ -0,0 +1,22 @@
// Tests issue #2466 https://github.com/odin-lang/Odin/issues/2466
package test_issues
import "core:fmt"
import "core:testing"
Bug :: struct {
val: int,
arr: []int,
}
@test
test_compound_literal_local_reuse :: proc(t: ^testing.T) {
v: int = 123
bug := Bug {
val = v,
arr = {42},
}
testing.expect(t, bug.val == 123, fmt.tprintf("expected 123, found %d", bug.val))
testing.expect(t, bug.arr[0] == 42, fmt.tprintf("expected 42, found %d", bug.arr[0]))
}