| 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") | |
| } |