diff options
| author | Brad Lewis <22850972+BradLewis@users.noreply.github.com> | 2025-09-14 08:19:46 -0400 |
|---|---|---|
| committer | Brad Lewis <22850972+BradLewis@users.noreply.github.com> | 2025-09-14 08:19:46 -0400 |
| commit | 53307cd6b31b031c9b718df66eec8ba2f56d7f7b (patch) | |
| tree | 1636f71bc2bc50481ccc9e294249e9496021e1a5 /src/server/analysis.odin | |
| parent | e1bbebd377a15b1833c89fa00c23edb8e702c1e3 (diff) | |
Correct resolved types when slicing multi-pointers
Diffstat (limited to 'src/server/analysis.odin')
| -rw-r--r-- | src/server/analysis.odin | 4 |
1 files changed, 4 insertions, 0 deletions
diff --git a/src/server/analysis.odin b/src/server/analysis.odin index d11d8b0..570a035 100644 --- a/src/server/analysis.odin +++ b/src/server/analysis.odin @@ -1943,6 +1943,10 @@ resolve_slice_expression :: proc(ast_context: ^AstContext, slice_expr: ^ast.Slic case SymbolDynamicArrayValue: expr = v.expr case SymbolMultiPointerValue: + // Slicing multi-pointer behaviour outlined here: https://odin-lang.org/docs/overview/#multi-pointers + if slice_expr.high == nil { + return symbol, true + } expr = v.expr case SymbolUntypedValue: if v.type == .String { |