diff options
| author | moonz <pmnarimani@gmail.com> | 2026-01-27 00:16:17 +0100 |
|---|---|---|
| committer | pc <pmnarimani@gmail.com> | 2026-01-27 00:21:05 +0100 |
| commit | df40bd21d618a5e6f6162abf8a1420ee80c33803 (patch) | |
| tree | 04ff54b735931ef230178db690943ebfa5347253 /src/server | |
| parent | ef82ca514e3740b26dee115be9be2a2554a58f58 (diff) | |
feat: added a feature flag to turn overload resoution on and off
Diffstat (limited to 'src/server')
| -rw-r--r-- | src/server/definition.odin | 18 | ||||
| -rw-r--r-- | src/server/requests.odin | 2 | ||||
| -rw-r--r-- | src/server/types.odin | 1 |
3 files changed, 14 insertions, 7 deletions
diff --git a/src/server/definition.odin b/src/server/definition.odin index 34d1315..9994afa 100644 --- a/src/server/definition.odin +++ b/src/server/definition.odin @@ -100,12 +100,14 @@ get_definition_location :: proc(document: ^Document, position: common.Position) } if resolved, ok := resolve_location_selector(&ast_context, position_context.selector_expr); ok { - resolved = try_resolve_proc_group_overload( - &ast_context, - &position_context, - resolved, - position_context.selector_expr, - ) + if common.config.enable_overload_resolution { + resolved = try_resolve_proc_group_overload( + &ast_context, + &position_context, + resolved, + position_context.selector_expr, + ) + } location.range = resolved.range uri = resolved.uri } else { @@ -145,7 +147,9 @@ get_definition_location :: proc(document: ^Document, position: common.Position) &ast_context, position_context.identifier.derived.(^ast.Ident)^, ); ok { - resolved = try_resolve_proc_group_overload(&ast_context, &position_context, resolved) + if common.config.enable_overload_resolution { + resolved = try_resolve_proc_group_overload(&ast_context, &position_context, resolved) + } if v, ok := resolved.value.(SymbolAggregateValue); ok { for symbol in v.symbols { append(&locations, common.Location{range = symbol.range, uri = symbol.uri}) diff --git a/src/server/requests.odin b/src/server/requests.odin index 351c384..3a1a163 100644 --- a/src/server/requests.odin +++ b/src/server/requests.odin @@ -452,6 +452,8 @@ read_ols_initialize_options :: proc(config: ^common.Config, ols_config: OlsConfi ols_config.enable_inlay_hints_implicit_return.(bool) or_else config.enable_inlay_hints_implicit_return config.enable_fake_method = ols_config.enable_fake_methods.(bool) or_else config.enable_fake_method + config.enable_overload_resolution = + ols_config.enable_overload_resolution.(bool) or_else config.enable_overload_resolution // Delete overriding collections. for it in ols_config.collections { diff --git a/src/server/types.odin b/src/server/types.odin index 0377e62..0d57b6f 100644 --- a/src/server/types.odin +++ b/src/server/types.odin @@ -419,6 +419,7 @@ OlsConfig :: struct { enable_hover: Maybe(bool), enable_document_symbols: Maybe(bool), enable_fake_methods: Maybe(bool), + enable_overload_resolution: Maybe(bool), enable_references: Maybe(bool), enable_document_highlights: Maybe(bool), enable_document_links: Maybe(bool), |