summaryrefslogtreecommitdiff
path: root/src/server/generics.odin
diff options
context:
space:
mode:
Diffstat (limited to 'src/server/generics.odin')
-rw-r--r--src/server/generics.odin18
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)