| This test verifies that gopls can remove unused parameters from methods. | |
| Specifically, check | |
| 1. basic removal of unused parameters, when the receiver is named, locally and | |
| across package boundaries | |
| 2. handling of unnamed receivers | |
| -- flags -- | |
| -min_go=go1.20 | |
| -- go.mod -- | |
| module example.com/rm | |
| go 1.20 | |
| -- basic.go -- | |
| package rm | |
| type Basic int | |
| func (t Basic) Foo(x int) { //@codeaction("x", "x", "refactor.rewrite", basic) | |
| } | |
| func _(b Basic) { | |
| b.Foo(1) | |
| // TODO(rfindley): methodexprs should not get rewritten as methods. | |
| Basic.Foo(1, 2) | |
| } | |
| -- basicuse/p.go -- | |
| package basicuse | |
| import "example.com/rm" | |
| func _() { | |
| x := new(rm.Basic) | |
| x.Foo(sideEffects()) | |
| rm.Basic.Foo(1,2) | |
| } | |
| func sideEffects() int | |
| -- @basic/basic.go -- | |
| package rm | |
| type Basic int | |
| func (t Basic) Foo() { //@codeaction("x", "x", "refactor.rewrite", basic) | |
| } | |
| func _(b Basic) { | |
| b.Foo() | |
| // TODO(rfindley): methodexprs should not get rewritten as methods. | |
| Basic(1).Foo() | |
| } | |
| -- @basic/basicuse/p.go -- | |
| package basicuse | |
| import "example.com/rm" | |
| func _() { | |
| x := new(rm.Basic) | |
| var ( | |
| t rm.Basic = *x | |
| _ int = sideEffects() | |
| ) | |
| t.Foo() | |
| rm.Basic(1).Foo() | |
| } | |
| func sideEffects() int | |
| -- missingrecv.go -- | |
| package rm | |
| type Missing struct{} | |
| var r2 int | |
| func (Missing) M(a, b, c, r0 int) (r1 int) { //@codeaction("b", "b", "refactor.rewrite", missingrecv) | |
| return a + c | |
| } | |
| func _() { | |
| m := &Missing{} | |
| _ = m.M(1, 2, 3, 4) | |
| } | |
| -- missingrecvuse/p.go -- | |
| package missingrecvuse | |
| import "example.com/rm" | |
| func _() { | |
| x := rm.Missing{} | |
| x.M(1, sideEffects(), 3, 4) | |
| } | |
| func sideEffects() int | |
| -- @missingrecv/missingrecv.go -- | |
| package rm | |
| type Missing struct{} | |
| var r2 int | |
| func (Missing) M(a, c, r0 int) (r1 int) { //@codeaction("b", "b", "refactor.rewrite", missingrecv) | |
| return a + c | |
| } | |
| func _() { | |
| m := &Missing{} | |
| _ = (*m).M(1, 3, 4) | |
| } | |
| -- @missingrecv/missingrecvuse/p.go -- | |
| package missingrecvuse | |
| import "example.com/rm" | |
| func _() { | |
| x := rm.Missing{} | |
| var _ int = sideEffects() | |
| x.M(1, 3, 4) | |
| } | |
| func sideEffects() int |