Upstream CL: https://go-review.googlesource.com/c/tools/+/321409

Modified to work against upstream Go.

From cdd84f3789f3ebbd1c55dc220bbbe4a77ab4024a Mon Sep 17 00:00:00 2001
From: Moekr <1143757638wlw@gmail.com>
Date: Thu, 20 May 2021 15:41:17 +0800
Subject: [PATCH] internal/imports: merge mergeable import groups

Merge two import groups if there is no comments between them.
This can make import blocks look more pretty.

---
diff -ur org_golang_x_tools.orig/internal/imports/fix_test.go org_golang_x_tools/internal/imports/fix_test.go
--- org_golang_x_tools.orig/internal/imports/fix_test.go	2023-04-03 15:16:24.808998544 +0200
+++ org_golang_x_tools/internal/imports/fix_test.go	2023-04-03 15:16:56.069290812 +0200
@@ -552,7 +552,6 @@ c = fmt.Printf
 
 import (
 	"fmt"
-
 	"gu"
 
 	"manypackages.com/packagea"
@@ -643,15 +642,11 @@ var _, _, _, _, _ = fmt.Errorf, io.Copy, strings.Contains, renamed_packagea.A, B
 
 import (
 	"fmt"
-
-	renamed_packagea "manypackages.com/packagea"
-
 	"io"
-
-	. "manypackages.com/packageb"
-
 	"strings"
 
+	renamed_packagea "manypackages.com/packagea"
+	. "manypackages.com/packageb"
 	_ "manypackages.com/packagec"
 )
 
@@ -1194,6 +1189,62 @@ import (
 )
 `,
 		out: `package main
+`,
+	},
+	{
+		name: "comment_between_imports_simple",
+		in: `package main
+
+import (
+	_ "foo2"
+	// foo3 has side effects.
+	_ "foo3"
+	_ "foo1"
+)
+`,
+		out: `package main
+
+import (
+	_ "foo2"
+	// foo3 has side effects.
+	_ "foo1"
+	_ "foo3"
+)
+`,
+	},
+	{
+		name: "comment_between_imports_complex",
+		in: `package main
+
+import (
+	_ "foo1" // foo1, "std" package
+	_ "github.com/bar/foo1" // github.com/bar/foo1, third-party package
+	_ "local/foo1" // local/foo1, local package
+
+	_ "appengine"
+
+	_ "foo2"
+	// local/foo3 comment
+	_ "local/foo3"
+	_ "github.com/bar/foo2"
+)
+`,
+		out: `package main
+
+import (
+	_ "foo1" // foo1, "std" package
+	_ "foo2"
+	_ "local/foo1" // local/foo1, local package
+
+	_ "github.com/bar/foo1" // github.com/bar/foo1, third-party package
+
+	_ "appengine"
+
+	// local/foo3 comment
+	_ "local/foo3"
+
+	_ "github.com/bar/foo2"
+)
 `,
 	},
 }
Only in org_golang_x_tools/internal/imports: fix_test.go.orig
diff -ur org_golang_x_tools.orig/internal/imports/sortimports.go org_golang_x_tools/internal/imports/sortimports.go
--- org_golang_x_tools.orig/internal/imports/sortimports.go	2023-04-03 15:16:24.808998544 +0200
+++ org_golang_x_tools/internal/imports/sortimports.go	2023-04-03 15:20:31.361303687 +0200
@@ -38,15 +38,31 @@
 			continue
 		}
 
+		// Find comments.
+		commentLines := make([]int, len(f.Comments))
+		for j, comment := range f.Comments {
+			commentLines[j] = tokFile.Line(comment.Pos())
+		}
+
 		// Identify and sort runs of specs on successive lines.
 		i := 0
 		specs := d.Specs[:0]
 		for j, s := range d.Specs {
-			if j > i && tokFile.Line(s.Pos()) > 1+tokFile.Line(d.Specs[j-1].End()) {
-				// j begins a new run.  End this one.
-				specs = append(specs, sortSpecs(localPrefix, tokFile, f, d.Specs[i:j])...)
-				i = j
+			if j > i {
+				curLine, prevLine := tokFile.Line(s.Pos()), tokFile.Line(d.Specs[j-1].End())
+				if curLine > 1+prevLine {
+					// j begins a new run.
+					for _, commentLine := range commentLines {
+						if prevLine < commentLine && commentLine < curLine {
+							// End this one if there is a comment before the new one.
+							specs = append(specs, sortSpecs(localPrefix, tokFile, f, d.Specs[i:j])...)
+							i = j
+							break
+						}
+					}
+				}
 			}
+
 		}
 		specs = append(specs, sortSpecs(localPrefix, tokFile, f, d.Specs[i:])...)
 		d.Specs = specs
