From a59e604366b3d36a6f148225ed66f7b07a67cee7 Mon Sep 17 00:00:00 2001 From: Brad Lewis <22850972+BradLewis@users.noreply.github.com> Date: Sun, 14 Sep 2025 13:16:03 -0400 Subject: Break with no newline for long partial switch statement --- src/odin/printer/visit.odin | 4 ++-- .../tests/single_line_switch/.snapshots/switch.odin | 21 +++++++++++++++++++++ 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") + } + } +} -- cgit v1.2.3