diff options
| author | Brad Lewis <22850972+BradLewis@users.noreply.github.com> | 2025-08-09 09:45:33 -0400 |
|---|---|---|
| committer | Brad Lewis <22850972+BradLewis@users.noreply.github.com> | 2025-08-09 10:11:41 -0400 |
| commit | 5b4b6564584ccf544f5fe7e0ce9bafd2e77cdd09 (patch) | |
| tree | 1f35776123ece621ad6309a142379c18a1b30467 /src/server/generics.odin | |
| parent | 3e183972229782baefc269d8ca940a60caad83c1 (diff) | |
Implement method to resolve poly return types based on the types of local variables
Diffstat (limited to 'src/server/generics.odin')
| -rw-r--r-- | src/server/generics.odin | 5 |
1 files changed, 5 insertions, 0 deletions
diff --git a/src/server/generics.odin b/src/server/generics.odin index 1802efb..a629d3e 100644 --- a/src/server/generics.odin +++ b/src/server/generics.odin @@ -494,6 +494,7 @@ resolve_generic_function_symbol :: proc( if symbol, ok := resolve_type_expression(ast_context, call_expr.args[i]); ok { file := strings.trim_prefix(symbol.uri, "file://") + if file == "" { file = call_expr.args[i].pos.file } @@ -522,6 +523,10 @@ resolve_generic_function_symbol :: proc( } } + // We set the offset so we can find it as a local if it's based on the type of a local var + symbol_expr.pos.offset = call_expr.pos.offset + symbol_expr.end.offset = call_expr.end.offset + symbol_expr = clone_expr(symbol_expr, ast_context.allocator, nil) param_type := clone_expr(param.type, ast_context.allocator, nil) |