diff --git a/src/check_expr.cpp b/src/check_expr.cpp index 7b95da1ad..76c575cbe 100644 --- a/src/check_expr.cpp +++ b/src/check_expr.cpp @@ -2004,11 +2004,11 @@ gb_internal Entity *check_ident(CheckerContext *c, Operand *o, Ast *n, Type *nam } if (o->type != nullptr && o->type->kind == Type_Named && o->type->Named.type_name->TypeName.is_type_alias) { Type *bt = base_type(o->type); - if (bt != nullptr) { + // Keep struct aliases named so recursive fields retain their alias edge. + if (bt != nullptr && bt->kind != Type_Struct) { o->type = bt; } } - break; case Entity_ImportName: diff --git a/tests/issues/run.bat b/tests/issues/run.bat index 11ade8657..60872a6fe 100644 --- a/tests/issues/run.bat +++ b/tests/issues/run.bat @@ -38,6 +38,7 @@ set COMMON=-define:ODIN_TEST_FANCY=false -file -vet -strict-style -ignore-unused ..\..\..\odin check ..\test_issue_6484.odin -no-entry-point %COMMON% || exit /b ..\..\..\odin check ..\test_issue_6874.odin %COMMON% 2>&1 | find /c "Error:" | findstr /x "1" || exit /b ..\..\..\odin check ..\test_issue_6979.odin -no-entry-point %COMMON% || exit /b +..\..\..\odin build ..\test_issue_7037.odin %COMMON% -o:none || exit /b @echo off diff --git a/tests/issues/run.sh b/tests/issues/run.sh index b83cf7cf3..ee33c9fb3 100755 --- a/tests/issues/run.sh +++ b/tests/issues/run.sh @@ -80,6 +80,7 @@ else exit 1 fi $ODIN check ../test_issue_6979.odin -no-entry-point $COMMON +$ODIN build ../test_issue_7037.odin $COMMON -o:none clang -c ../test_issue_7010.c -o test_issue_7010_c.o diff --git a/tests/issues/test_issue_7037.odin b/tests/issues/test_issue_7037.odin new file mode 100644 index 000000000..650c71efa --- /dev/null +++ b/tests/issues/test_issue_7037.odin @@ -0,0 +1,19 @@ +// Tests issue #7037 https://github.com/odin-lang/Odin/issues/7037 + +package test_issues + +Arena :: struct { + last: ^ArenaAllocation, +} + +_ArenaAllocation :: struct { + prev: ^ArenaAllocation, +} + +ArenaAllocation :: _ArenaAllocation + +main :: proc() { + arena: Arena + allocation: ArenaAllocation + arena.last = &allocation +}