aboutsummaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
authormoonz <pmnarimani@gmail.com>2026-01-27 00:16:17 +0100
committerpc <pmnarimani@gmail.com>2026-01-27 00:21:05 +0100
commitdf40bd21d618a5e6f6162abf8a1420ee80c33803 (patch)
tree04ff54b735931ef230178db690943ebfa5347253 /src
parentef82ca514e3740b26dee115be9be2a2554a58f58 (diff)
feat: added a feature flag to turn overload resoution on and off
Diffstat (limited to 'src')
-rw-r--r--src/common/config.odin1
-rw-r--r--src/server/definition.odin18
-rw-r--r--src/server/requests.odin2
-rw-r--r--src/server/types.odin1
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),