diff options
Diffstat (limited to 'src')
| -rw-r--r-- | src/common/config.odin | 1 | ||||
| -rw-r--r-- | src/server/definition.odin | 18 | ||||
| -rw-r--r-- | src/server/requests.odin | 2 | ||||
| -rw-r--r-- | src/server/types.odin | 1 |
4 files changed, 15 insertions, 7 deletions
diff --git a/src/common/config.odin b/src/common/config.odin index 6890685..a1f2400 100644 --- a/src/common/config.odin +++ b/src/common/config.odin @@ -33,6 +33,7 @@ Config :: struct { enable_std_references: bool, enable_import_fixer: bool, enable_fake_method: bool, + enable_overload_resolution: bool, enable_procedure_snippet: bool, enable_checker_only_saved: bool, enable_auto_import: bool, 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), |