go.tools/imports: fix case where output not gofmt-compatible
Fixes 7866. Adds a test case. When trying to add newlines before certain imports via text manipulation, a regex is used to iterate over all imports. The regex failed to match dot imports because \w doesn't match a literal dot. This changes the regex to accept a dot as well. LGTM=bradfitz R=bradfitz CC=golang-codereviews https://golang.org/cl/99400043
This commit is contained in:
parent
33097bf3ed
commit
1154a04eb0
|
@ -573,6 +573,49 @@ func main() {
|
||||||
//var _ = bar.A
|
//var _ = bar.A
|
||||||
var _ = qux.B
|
var _ = qux.B
|
||||||
}
|
}
|
||||||
|
`,
|
||||||
|
},
|
||||||
|
|
||||||
|
// Blank line can be added before all types of import declarations.
|
||||||
|
// golang.org/issue/7866
|
||||||
|
{
|
||||||
|
name: "issue 7866",
|
||||||
|
in: `package main
|
||||||
|
|
||||||
|
import (
|
||||||
|
"fmt"
|
||||||
|
renamed_bar "github.com/foo/bar"
|
||||||
|
|
||||||
|
. "github.com/foo/baz"
|
||||||
|
"io"
|
||||||
|
|
||||||
|
_ "github.com/foo/qux"
|
||||||
|
"strings"
|
||||||
|
)
|
||||||
|
|
||||||
|
func main() {
|
||||||
|
_, _, _, _, _ = fmt.Errorf, io.Copy, strings.Contains, renamed_bar.A, B
|
||||||
|
}
|
||||||
|
`,
|
||||||
|
out: `package main
|
||||||
|
|
||||||
|
import (
|
||||||
|
"fmt"
|
||||||
|
|
||||||
|
renamed_bar "github.com/foo/bar"
|
||||||
|
|
||||||
|
"io"
|
||||||
|
|
||||||
|
. "github.com/foo/baz"
|
||||||
|
|
||||||
|
"strings"
|
||||||
|
|
||||||
|
_ "github.com/foo/qux"
|
||||||
|
)
|
||||||
|
|
||||||
|
func main() {
|
||||||
|
_, _, _, _, _ = fmt.Errorf, io.Copy, strings.Contains, renamed_bar.A, B
|
||||||
|
}
|
||||||
`,
|
`,
|
||||||
},
|
},
|
||||||
}
|
}
|
||||||
|
|
|
@ -238,7 +238,7 @@ func matchSpace(orig []byte, src []byte) []byte {
|
||||||
return b.Bytes()
|
return b.Bytes()
|
||||||
}
|
}
|
||||||
|
|
||||||
var impLine = regexp.MustCompile(`^\s+(?:\w+\s+)?"(.+)"`)
|
var impLine = regexp.MustCompile(`^\s+(?:[\w\.]+\s+)?"(.+)"`)
|
||||||
|
|
||||||
func addImportSpaces(r io.Reader, breaks []string) []byte {
|
func addImportSpaces(r io.Reader, breaks []string) []byte {
|
||||||
var out bytes.Buffer
|
var out bytes.Buffer
|
||||||
|
|
Loading…
Reference in New Issue