blob: 71510c7bb649b6037617c560ef4dc62d38d41926 [file] [log] [blame]
This test checks the fixes for bugs encountered while bug-bashing on the
movement refactoring.
-- go.mod --
module example.com
go 1.21
-- unnecessaryconversion.go --
package a
// We should not add unnecessary conversions to concrete arguments to concrete
// parameters when the parameter use is in assignment context.
type Hash [32]byte
func Cache(key [32]byte, value any) { //@codeaction("key", "refactor.rewrite.moveParamRight", result=conversion)
// Not implemented.
}
func _() {
var k Hash
Cache(k, 0)
Cache(Hash{}, 1)
Cache([32]byte{}, 2)
}
-- @conversion/unnecessaryconversion.go --
package a
// We should not add unnecessary conversions to concrete arguments to concrete
// parameters when the parameter use is in assignment context.
type Hash [32]byte
func Cache(value any, key [32]byte) { //@codeaction("key", "refactor.rewrite.moveParamRight", result=conversion)
// Not implemented.
}
func _() {
var k Hash
Cache(0, k)
Cache(1, Hash{})
Cache(2, [32]byte{})
}
-- shortvardecl.go --
package a
func Short(x, y int) (int, int) { //@codeaction("x", "refactor.rewrite.moveParamRight", result=short)
return x, y
}
func _() {
x, y := Short(0, 1)
_, _ = x, y
}
func _() {
var x, y int
x, y = Short(0, 1)
_, _ = x, y
}
func _() {
_, _ = Short(0, 1)
}
-- @short/shortvardecl.go --
package a
func Short(y, x int) (int, int) { //@codeaction("x", "refactor.rewrite.moveParamRight", result=short)
return x, y
}
func _() {
x, y := Short(1, 0)
_, _ = x, y
}
func _() {
var x, y int
x, y = Short(1, 0)
_, _ = x, y
}
func _() {
_, _ = Short(1, 0)
}
-- variadic.go --
package a
// We should not offer movement involving variadic parameters if it is not well
// supported.
func Variadic(x int, y ...string) { //@codeaction("x", "refactor.rewrite.moveParamRight", err="0 CodeActions"), codeaction("y", "refactor.rewrite.moveParamLeft", err="0 CodeActions")
}
func _() {
Variadic(1, "a", "b")
}