diff options
| author | Brad Lewis <22850972+BradLewis@users.noreply.github.com> | 2025-09-10 13:40:04 -0400 |
|---|---|---|
| committer | Brad Lewis <22850972+BradLewis@users.noreply.github.com> | 2025-09-10 13:44:11 -0400 |
| commit | a60d0daad2ff3e57eb9942c58c532007794bbd63 (patch) | |
| tree | 8d888b9551b1b2a66886d1b09451fe8f79287d70 | |
| parent | 8f44d4c36c2712b9d230238b58042e79df67cefd (diff) | |
Add parentheses around named proc returns
| -rw-r--r-- | src/server/documentation.odin | 9 | ||||
| -rw-r--r-- | tests/hover_test.odin | 12 |
2 files changed, 20 insertions, 1 deletions
diff --git a/src/server/documentation.odin b/src/server/documentation.odin index 49674ad..6f591a4 100644 --- a/src/server/documentation.odin +++ b/src/server/documentation.odin @@ -486,7 +486,14 @@ write_proc_param_list_and_return :: proc(sb: ^strings.Builder, value: SymbolProc if len(value.orig_return_types) != 0 { strings.write_string(sb, " -> ") + add_parens := false if len(value.orig_return_types) > 1 { + add_parens = true + } else if field, ok := value.orig_return_types[0].derived.(^ast.Field); ok && len(field.names) > 0{ + add_parens = true + } + + if add_parens { strings.write_string(sb, "(") } @@ -497,7 +504,7 @@ write_proc_param_list_and_return :: proc(sb: ^strings.Builder, value: SymbolProc } } - if len(value.orig_return_types) > 1 { + if add_parens { strings.write_string(sb, ")") } } else if value.diverging { diff --git a/tests/hover_test.odin b/tests/hover_test.odin index 8879cc9..5370804 100644 --- a/tests/hover_test.odin +++ b/tests/hover_test.odin @@ -4533,6 +4533,18 @@ ast_hover_parapoly_union_with_where_clause :: proc(t: ^testing.T) { } test.expect_hover(t, &source, "test.Foo: union($T: typeid) #no_nil where type_is_integer(T) {\n\tT,\n\tstring,\n}") } + +@(test) +ast_hover_proc_named_return_parens :: proc(t: ^testing.T) { + source := test.Source { + main = `package test + f{*}oo :: proc() -> (a: int) { + return + } + `, + } + test.expect_hover(t, &source, "test.foo: proc() -> (a: int)") +} /* Waiting for odin fix |