diff options
| author | Bradley Lewis <22850972+BradLewis@users.noreply.github.com> | 2025-09-14 13:24:34 -0400 |
|---|---|---|
| committer | GitHub <noreply@github.com> | 2025-09-14 13:24:34 -0400 |
| commit | c188c31e0eb9d4465346e337e9c8813b2cea6fd4 (patch) | |
| tree | cb15d7631aea0674b3197ddd69d6d88e15368ba8 | |
| parent | e23480a32c5c9089c3449a379226b6334916a322 (diff) | |
| parent | a59e604366b3d36a6f148225ed66f7b07a67cee7 (diff) | |
Merge pull request #1017 from BradLewis/fix/remove-newline-with-long-switch-partial
Break with no newline for long partial switch statement
| -rw-r--r-- | src/odin/printer/visit.odin | 4 | ||||
| -rw-r--r-- | tools/odinfmt/tests/single_line_switch/.snapshots/switch.odin | 21 | ||||
| -rw-r--r-- | tools/odinfmt/tests/single_line_switch/switch.odin | 18 |
3 files changed, 41 insertions, 2 deletions
diff --git a/src/odin/printer/visit.odin b/src/odin/printer/visit.odin index 882ba51..734a3a3 100644 --- a/src/odin/printer/visit.odin +++ b/src/odin/printer/visit.odin @@ -1049,7 +1049,7 @@ visit_stmt :: proc( document = enforce_fit_if_do(v.body, document) case ^Switch_Stmt: if v.partial { - document = cons(document, text("#partial"), break_with_space()) + document = cons(document, text("#partial"), break_with_no_newline()) } if v.label != nil { @@ -1093,7 +1093,7 @@ visit_stmt :: proc( } case ^Type_Switch_Stmt: if v.partial { - document = cons(document, text("#partial"), break_with_space()) + document = cons(document, text("#partial"), break_with_no_newline()) } if v.label != nil { diff --git a/tools/odinfmt/tests/single_line_switch/.snapshots/switch.odin b/tools/odinfmt/tests/single_line_switch/.snapshots/switch.odin index a84d72b..53fd56e 100644 --- a/tools/odinfmt/tests/single_line_switch/.snapshots/switch.odin +++ b/tools/odinfmt/tests/single_line_switch/.snapshots/switch.odin @@ -1,5 +1,7 @@ package single_line_switch +import "core:fmt" + Barrr :: enum { A, B, @@ -25,3 +27,22 @@ main :: proc() { this_is_a_really_long_proc_name :: proc(a, b, c: int) -> int { return a + b + c } + +Number :: union { + int, + uint, +} + +f :: proc( + very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_long_name: Number, +) { + #partial switch value in + very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_long_name { + case: + #partial switch value in + very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_long_name { + case int: fmt.println("Number is an integer") + case: fmt.println("Number is not an integer") + } + } +} diff --git a/tools/odinfmt/tests/single_line_switch/switch.odin b/tools/odinfmt/tests/single_line_switch/switch.odin index 256c3ea..66254c0 100644 --- a/tools/odinfmt/tests/single_line_switch/switch.odin +++ b/tools/odinfmt/tests/single_line_switch/switch.odin @@ -1,5 +1,7 @@ package single_line_switch +import "core:fmt" + Barrr :: enum { A, B, @@ -26,3 +28,19 @@ main :: proc() { this_is_a_really_long_proc_name :: proc(a, b, c: int) -> int { return a + b + c } + +Number :: union { + int, + uint, +} + +f :: proc( very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_long_name: Number,) { + #partial switch value in very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_long_name { + case: + #partial switch value in very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_long_name { + case int: fmt.println("Number is an integer") + case: + fmt.println("Number is not an integer") + } + } +} |