blob: 90ac890337d69e11101b90ecd749dbf0052f033e [file]
This test checks the behavior of the 'fill switch' code action.
See fill_switch_resolve.txt for same test with resolve support.
-- capabilities.json --
{
"textDocument": {
"codeAction": {
"dataSupport": false,
"resolveSupport": {}
}
}
}
-- 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 (
dataalias "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 dataalias.TypeB
switch b {
case dataalias.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)
}
}
-- alias.go --
package fillswitch
import format "fmt"
var _ = format.Sprintf
func doAliasedFmtSwitch() {
var a typeA
switch a {
case typeAThree: //@codeaction(":", "refactor.rewrite.fillSwitch", edit=a6)
}
}
-- @a1/a.go --
@@ -4 +4,2 @@
+ "fmt"
+
@@ -31 +33,4 @@
+ case dataalias.TypeBThree:
+ case dataalias.TypeBTwo:
+ default:
+ panic(fmt.Sprintf("unexpected data.TypeB: %#v", b))
-- @a2/a.go --
@@ -4 +4,2 @@
+ "fmt"
+
@@ -36 +38,4 @@
+ case typeAOne:
+ case typeATwo:
+ default:
+ panic(fmt.Sprintf("unexpected fillswitch.typeA: %#v", a))
-- @a3/a.go --
@@ -4 +4,2 @@
+ "fmt"
+
@@ -40 +42,4 @@
+ case notificationOne:
+ case notificationTwo:
+ default:
+ panic(fmt.Sprintf("unexpected fillswitch.notification: %#v", n))
-- @a4/a.go --
@@ -4 +4,2 @@
+ "fmt"
+
@@ -43 +45,4 @@
+ case notificationOne:
+ case notificationTwo:
+ default:
+ panic(fmt.Sprintf("unexpected fillswitch.notification: %#v", nt))
-- @a5/a.go --
@@ -4 +4,2 @@
+ "fmt"
+
@@ -51 +53,4 @@
+ case typeAOne:
+ case typeATwo:
+ default:
+ panic(fmt.Sprintf("unexpected fillswitch.typeA: %#v", s.a))
-- @a6/alias.go --
@@ -11 +11,4 @@
+ case typeAOne:
+ case typeATwo:
+ default:
+ panic(format.Sprintf("unexpected fillswitch.typeA: %#v", a))