| This test reproduces condition of golang/go#65217, where the inliner created an | |
| unnecessary eta abstraction. | |
| -- go.mod -- | |
| module unused.mod | |
| go 1.18 | |
| -- a/a.go -- | |
| package a | |
| type S struct{} | |
| func (S) Int() int { return 0 } | |
| func _() { | |
| var s S | |
| _ = f(s, s.Int()) | |
| var j int | |
| j = f(s, s.Int()) | |
| _ = j | |
| } | |
| func _() { | |
| var s S | |
| i := f(s, s.Int()) | |
| _ = i | |
| } | |
| func f(unused S, i int) int { //@codeaction("unused", "unused", "refactor.rewrite", rewrite, "Refactor: remove unused parameter"), diag("unused", re`unused`) | |
| return i | |
| } | |
| -- @rewrite/a/a.go -- | |
| package a | |
| type S struct{} | |
| func (S) Int() int { return 0 } | |
| func _() { | |
| var s S | |
| _ = f(s.Int()) | |
| var j int | |
| j = f(s.Int()) | |
| _ = j | |
| } | |
| func _() { | |
| var s S | |
| var _ S = s | |
| i := f(s.Int()) | |
| _ = i | |
| } | |
| func f(i int) int { //@codeaction("unused", "unused", "refactor.rewrite", rewrite, "Refactor: remove unused parameter"), diag("unused", re`unused`) | |
| return i | |
| } |