diff options
| author | DanielGavin <danielgavin5@hotmail.com> | 2024-07-25 21:56:36 +0200 |
|---|---|---|
| committer | DanielGavin <danielgavin5@hotmail.com> | 2024-07-25 21:56:36 +0200 |
| commit | 18afea306114de303161f4aa044fb9842db1b10c (patch) | |
| tree | 483e8dc928d577b0ada6ae61be0cc6aa2a63eabe /src/server/analysis.odin | |
| parent | 5f37d25310d282c0370f082328b5268e344b131c (diff) | |
Support soa in generics
Diffstat (limited to 'src/server/analysis.odin')
| -rw-r--r-- | src/server/analysis.odin | 26 |
1 files changed, 24 insertions, 2 deletions
diff --git a/src/server/analysis.odin b/src/server/analysis.odin index 14b1aad..8cc5bee 100644 --- a/src/server/analysis.odin +++ b/src/server/analysis.odin @@ -489,7 +489,13 @@ is_symbol_same_typed :: proc( return false } - return is_symbol_same_typed(ast_context, a_symbol, b_symbol) + a_is_soa := .Soa in a_symbol.flags + b_is_soa := .Soa in a_symbol.flags + + return( + is_symbol_same_typed(ast_context, a_symbol, b_symbol) && + a_is_soa == b_is_soa \ + ) case SymbolFixedArrayValue: b_value := b.value.(SymbolFixedArrayValue) @@ -561,7 +567,13 @@ is_symbol_same_typed :: proc( return false } - return is_symbol_same_typed(ast_context, a_symbol, b_symbol) + a_is_soa := .Soa in a_symbol.flags + b_is_soa := .Soa in a_symbol.flags + + return( + is_symbol_same_typed(ast_context, a_symbol, b_symbol) && + a_is_soa == b_is_soa \ + ) case SymbolMapValue: b_value := b.value.(SymbolMapValue) @@ -2826,6 +2838,10 @@ make_symbol_array_from_ast :: proc( } } + if common.array_is_soa(v) { + symbol.flags |= {.Soa} + } + return symbol } @@ -2845,6 +2861,12 @@ make_symbol_dynamic_array_from_ast :: proc( expr = v.elem, } + + if common.dynamic_array_is_soa(v) { + symbol.flags |= {.Soa} + } + + return symbol } |