diff --git a/go/ast/astutil/imports.go b/go/ast/astutil/imports.go index 2816793d..7f9b1629 100644 --- a/go/ast/astutil/imports.go +++ b/go/ast/astutil/imports.go @@ -121,6 +121,9 @@ func AddNamedImport(fset *token.FileSet, f *ast.File, name, ipath string) (added // so that the sorter sees it as being in the same block. pos = impDecl.Specs[insertAt-1].Pos() } + if newImport.Name != nil { + newImport.Name.NamePos = pos + } newImport.Path.ValuePos = pos newImport.EndPos = pos diff --git a/go/ast/astutil/imports_test.go b/go/ast/astutil/imports_test.go index e956f49b..9134b193 100644 --- a/go/ast/astutil/imports_test.go +++ b/go/ast/astutil/imports_test.go @@ -378,6 +378,22 @@ import ( } } +func TestDoubleAddNamedImport(t *testing.T) { + file := parse(t, "doublenamedimport", "package main\n") + AddNamedImport(fset, file, "o", "os") + AddNamedImport(fset, file, "i", "io") + want := `package main + +import ( + i "io" + o "os" +) +` + if got := print(t, "doublenamedimport", file); got != want { + t.Errorf("got: %s\nwant: %s", got, want) + } +} + // Part of issue 8729. func TestDoubleAddImportWithDeclComment(t *testing.T) { file := parse(t, "doubleimport", `package main