# Insert case clause into switch statement # 1. Insert case before default clause ! exec semedit insert-case --file router/handler.go --func Dispatch --discriminator method --case 'case "POST": return handlePost()' exec semedit insert-case --file router/handler.go --in-function Dispatch --discriminator method --placement before_default --case 'case "POST": return handlePost()' cmp router/handler.go want/router/handler.go # Repeated switch selectors must fail without changing either switch. ! exec semedit insert-case --file router/nested.go --in-function Route --discriminator mode --placement before_default --case 'case "new": return "new"' stderr 'ambiguous switch selector' stderr '0 cases: "outer", default' stderr '0.1 cases: "inner", default' cmp router/nested.go want/router/nested.go exec semedit insert-case --file router/nested.go --in-function Route --discriminator mode --construct-path 0.1 --placement before_default --case 'case "new": return "new"' cmp router/nested.go want/router/nested-path.go -- go.mod -- module example.com/test go 1.23 -- router/handler.go -- package router func Dispatch(method string) string { switch method { case "GET": return handleGet() default: return handleNotFound() } } func handleGet() string { return "get" } func handlePost() string { return "post" } func handleNotFound() string { return "404" } -- want/router/handler.go -- package router func Dispatch(method string) string { switch method { case "GET": return handleGet() case "POST": return handlePost() default: return handleNotFound() } } func handleGet() string { return "get" } func handlePost() string { return "post" } func handleNotFound() string { return "404" } -- router/nested.go -- // nested.go reproduces a nested switch with the same selector as its parent. package router func Route(mode string) string { switch mode { case "outer": switch mode { case "inner": return "inner" default: return "nested fallback" } default: return "outer fallback" } } -- want/router/nested.go -- // nested.go reproduces a nested switch with the same selector as its parent. package router func Route(mode string) string { switch mode { case "outer": switch mode { case "inner": return "inner" default: return "nested fallback" } default: return "outer fallback" } } -- want/router/nested-path.go -- // nested.go reproduces a nested switch with the same selector as its parent. package router func Route(mode string) string { switch mode { case "outer": switch mode { case "inner": return "inner" case "new": return "new" default: return "nested fallback" } default: return "outer fallback" } }