This test checks the behavior of the 'fill switch' code action.
See fill_switch_resolve.txt for same test with resolve support.
-- 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: //@codeaction(":", "refactor.rewrite.fillSwitch", edit=a1)
}
var a typeA
switch a {
case typeAThree: //@codeaction(":", "refactor.rewrite.fillSwitch", edit=a2)
}
var n notification
switch n.(type) { //@codeaction("{", "refactor.rewrite.fillSwitch", edit=a3)
}
switch nt := n.(type) { //@codeaction("{", "refactor.rewrite.fillSwitch", edit=a4)
}
var s struct {
a typeA
}
switch s.a {
case typeAThree: //@codeaction(":", "refactor.rewrite.fillSwitch", edit=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))