diff options
| author | Brad Lewis <22850972+BradLewis@users.noreply.github.com> | 2025-10-29 05:19:04 -0400 |
|---|---|---|
| committer | Brad Lewis <22850972+BradLewis@users.noreply.github.com> | 2025-10-29 23:31:33 -0400 |
| commit | 25dafecd9238317c1534012f183dc828417e3da9 (patch) | |
| tree | 0fef04e1dba79e2b6f41a5f3cef7c8e08c78607f /src/server/generics.odin | |
| parent | 9854c3ec2786498c94a341183c6b901af375826a (diff) | |
Correctly resolve package and range of generic procs
Diffstat (limited to 'src/server/generics.odin')
| -rw-r--r-- | src/server/generics.odin | 18 |
1 files changed, 8 insertions, 10 deletions
diff --git a/src/server/generics.odin b/src/server/generics.odin index d57f4d5..ed35c65 100644 --- a/src/server/generics.odin +++ b/src/server/generics.odin @@ -502,7 +502,9 @@ resolve_generic_function_ast :: proc(ast_context: ^AstContext, proc_lit: ast.Pro results = proc_lit.type.results.list } - return resolve_generic_function_symbol(ast_context, params, results, proc_lit.inlining) + range := common.get_token_range(proc_lit, ast_context.file.src) + uri := common.create_uri(proc_lit.pos.file, ast_context.allocator).uri + return resolve_generic_function_symbol(ast_context, params, results, proc_lit.inlining, range, uri) } @@ -511,6 +513,8 @@ resolve_generic_function_symbol :: proc( params: []^ast.Field, results: []^ast.Field, inlining: ast.Proc_Inlining, + proc_range: common.Range, + proc_uri: string, ) -> ( Symbol, bool, @@ -606,27 +610,21 @@ resolve_generic_function_symbol :: proc( } function_name := "" - function_range: common.Range - function_uri := "" if ident, ok := call_expr.expr.derived.(^ast.Ident); ok { function_name = ident.name - function_range = common.get_token_range(ident, ast_context.file.src) - function_uri = common.create_uri(ident.pos.file, ast_context.allocator).uri } else if selector, ok := call_expr.expr.derived.(^ast.Selector_Expr); ok { function_name = selector.field.name - function_range = common.get_token_range(selector, ast_context.file.src) - function_uri = common.create_uri(selector.field.pos.file, ast_context.allocator).uri } else { return {}, false } symbol := Symbol { - range = function_range, + range = proc_range, type = .Function, name = function_name, - pkg = ast_context.current_package, - uri = function_uri, + uri = proc_uri, + pkg = get_package_from_filepath(proc_uri), } return_types := make([dynamic]^ast.Field, ast_context.allocator) |