| # This test exercises an edge case of merging. | |
| # | |
| # Two analyzers generate overlapping fixes for this package: | |
| # - 'rename' changes "bar" to "baz" | |
| # - 'marker' changes "ar" to "baz" | |
| # Historically this used to cause a conflict, but as it happens, | |
| # the new merge algorithm splits the rename fix, since it overlaps | |
| # the marker fix, into two subedits: | |
| # - a deletion of "b" and | |
| # - an edit from "ar" to "baz". | |
| # The deletion is of course nonoverlapping, and the edit, | |
| # by happy chance, is identical to the marker fix, so the two | |
| # are coalesced. | |
| # | |
| # (This is a pretty unlikely situation, but it corresponds | |
| # to a historical test, TestOther, that used to check for | |
| # a conflict, and it seemed wrong to delete it without explanation.) | |
| # | |
| # The fixes are silently and successfully applied. | |
| checker -rename -marker -fix -v example.com/a | |
| stderr applied 2 fixes, updated 1 file | |
| exit 0 | |
| -- go.mod -- | |
| module example.com | |
| go 1.22 | |
| -- a/a.go -- | |
| package a | |
| func f(bar int) {} //@ fix("ar", "baz") | |
| -- want/a/a.go -- | |
| package a | |
| func f(baz int) {} //@ fix("ar", "baz") |