| # Test of import de-duplication behavior. |
| # |
| # In packages a and b, there are three fixes, |
| # each adding one of two imports, but in different order. |
| # |
| # In package a, the fixes are [foo, foo, bar], |
| # and they are resolved as follows: |
| # - foo is applied -> [foo] |
| # - foo is coalesced -> [foo] |
| # - bar is applied -> [foo bar] |
| # The result is then formatted to [bar foo]. |
| # |
| # In package b, the fixes are [foo, bar, foo]: |
| # - foo is applied -> [foo] |
| # - bar is applied -> [foo bar] |
| # - foo is coalesced -> [foo bar] |
| # The same result is again formatted to [bar foo]. |
| # |
| # In more complex examples, the result |
| # may be more subtly order-dependent. |
| |
| checker -marker -fix -v example.com/a example.com/b |
| stderr applied 6 fixes, updated 2 files |
| exit 0 |
| |
| -- go.mod -- |
| module example.com |
| go 1.22 |
| |
| -- a/a.go -- |
| package a |
| |
| import ( |
| //@ fix1("()//", "\"foo\"\n"), fix2("()//", "\"foo\"\n"), fix3("()//", "\"bar\"\n") |
| ) |
| |
| -- want/a/a.go -- |
| package a |
| |
| import ( |
| "bar" |
| "foo" |
| // @ fix1("()//", "\"foo\"\n"), fix2("()//", "\"foo\"\n"), fix3("()//", "\"bar\"\n") |
| ) |
| |
| -- b/b.go -- |
| package b |
| |
| import ( |
| //@ fix1("()//", "\"foo\"\n"), fix2("()//", "\"bar\"\n"), fix3("()//", "\"foo\"\n") |
| ) |
| |
| -- want/b/b.go -- |
| package b |
| |
| import ( |
| "bar" |
| "foo" |
| // @ fix1("()//", "\"foo\"\n"), fix2("()//", "\"bar\"\n"), fix3("()//", "\"foo\"\n") |
| ) |
| |