| This test checks the behavior of removing a parameter with respect to various |
| import scenarios. |
| |
| -- flags -- |
| -min_go=go1.21 |
| |
| -- go.mod -- |
| module mod.test |
| |
| go 1.21 |
| |
| |
| -- a/a1.go -- |
| package a |
| |
| import "mod.test/b" |
| |
| func _() { |
| b.B(<-b.Chan, <-b.Chan) |
| } |
| |
| -- a/a2.go -- |
| package a |
| |
| import "mod.test/b" |
| |
| func _() { |
| b.B(<-b.Chan, <-b.Chan) |
| b.B(<-b.Chan, <-b.Chan) |
| } |
| |
| -- a/a3.go -- |
| package a |
| |
| import "mod.test/b" |
| |
| func _() { |
| b.B(<-b.Chan, <-b.Chan) |
| } |
| |
| func _() { |
| b.B(<-b.Chan, <-b.Chan) |
| } |
| |
| -- a/a4.go -- |
| package a |
| |
| // TODO(rfindley/adonovan): inlining here adds an additional import of |
| // mod.test/b. Can we do better? |
| import ( |
| . "mod.test/b" |
| ) |
| |
| func _() { |
| B(<-Chan, <-Chan) |
| } |
| |
| -- b/b.go -- |
| package b |
| |
| import "mod.test/c" |
| |
| var Chan chan c.C |
| |
| func B(x, y c.C) { //@codeaction("x", "x", "refactor.rewrite", b) |
| } |
| |
| -- c/c.go -- |
| package c |
| |
| type C int |
| |
| -- d/d.go -- |
| package d |
| |
| // Removing the parameter should remove this import. |
| import "mod.test/c" |
| |
| func D(x c.C) { //@codeaction("x", "x", "refactor.rewrite", d) |
| } |
| |
| func _() { |
| D(1) |
| } |
| |
| -- @b/a/a1.go -- |
| package a |
| |
| import ( |
| "mod.test/b" |
| "mod.test/c" |
| ) |
| |
| func _() { |
| var _ c.C = <-b.Chan |
| b.B(<-b.Chan) |
| } |
| -- @b/a/a2.go -- |
| package a |
| |
| import ( |
| "mod.test/b" |
| "mod.test/c" |
| ) |
| |
| func _() { |
| var _ c.C = <-b.Chan |
| b.B(<-b.Chan) |
| var _ c.C = <-b.Chan |
| b.B(<-b.Chan) |
| } |
| -- @b/a/a3.go -- |
| package a |
| |
| import ( |
| "mod.test/b" |
| "mod.test/c" |
| ) |
| |
| func _() { |
| var _ c.C = <-b.Chan |
| b.B(<-b.Chan) |
| } |
| |
| func _() { |
| var _ c.C = <-b.Chan |
| b.B(<-b.Chan) |
| } |
| -- @b/a/a4.go -- |
| package a |
| |
| // TODO(rfindley/adonovan): inlining here adds an additional import of |
| // mod.test/b. Can we do better? |
| import ( |
| "mod.test/b" |
| . "mod.test/b" |
| "mod.test/c" |
| ) |
| |
| func _() { |
| var _ c.C = <-Chan |
| b.B(<-Chan) |
| } |
| -- @b/b/b.go -- |
| package b |
| |
| import "mod.test/c" |
| |
| var Chan chan c.C |
| |
| func B(y c.C) { //@codeaction("x", "x", "refactor.rewrite", b) |
| } |
| -- @d/d/d.go -- |
| package d |
| |
| // Removing the parameter should remove this import. |
| |
| func D() { //@codeaction("x", "x", "refactor.rewrite", d) |
| } |
| |
| func _() { |
| D() |
| } |