This test checks the behavior of the 'fill switch' code action, with resolve support. See fill_switch.txt for same test without resolve support. -- capabilities.json -- { "textDocument": { "codeAction": { "dataSupport": true, "resolveSupport": { "properties": ["edit"] } } } } -- flags -- -ignore_extra_diags -- go.mod -- module golang.org/lsptests/fillswitch go 1.18 -- data/data.go -- package data type TypeB int const ( TypeBOne TypeB = iota TypeBTwo TypeBThree ) -- a.go -- package fillswitch import ( "golang.org/lsptests/fillswitch/data" ) type typeA int const ( typeAOne typeA = iota typeATwo typeAThree ) type notification interface { isNotification() } type notificationOne struct{} func (notificationOne) isNotification() {} type notificationTwo struct{} func (notificationTwo) isNotification() {} func doSwitch() { var b data.TypeB switch b { case data.TypeBOne: //@codeactionedit(":", "refactor.rewrite.fillSwitch", a1) } var a typeA switch a { case typeAThree: //@codeactionedit(":", "refactor.rewrite.fillSwitch", a2) } var n notification switch n.(type) { //@codeactionedit("{", "refactor.rewrite.fillSwitch", a3) } switch nt := n.(type) { //@codeactionedit("{", "refactor.rewrite.fillSwitch", a4) } var s struct { a typeA } switch s.a { case typeAThree: //@codeactionedit(":", "refactor.rewrite.fillSwitch", a5) } } -- @a1/a.go -- @@ -31 +31,4 @@ + case data.TypeBThree: + case data.TypeBTwo: + default: + panic(fmt.Sprintf("unexpected data.TypeB: %#v", b)) -- @a2/a.go -- @@ -36 +36,4 @@ + case typeAOne: + case typeATwo: + default: + panic(fmt.Sprintf("unexpected fillswitch.typeA: %#v", a)) -- @a3/a.go -- @@ -40 +40,4 @@ + case notificationOne: + case notificationTwo: + default: + panic(fmt.Sprintf("unexpected fillswitch.notification: %#v", n)) -- @a4/a.go -- @@ -43 +43,4 @@ + case notificationOne: + case notificationTwo: + default: + panic(fmt.Sprintf("unexpected fillswitch.notification: %#v", nt)) -- @a5/a.go -- @@ -51 +51,4 @@ + case typeAOne: + case typeATwo: + default: + panic(fmt.Sprintf("unexpected fillswitch.typeA: %#v", s.a))