modfile: do not collapse if there are unattached comments within blocks

The existing implementation drops unattached comments
when collapsing block into single line.

Fixes #33280

Change-Id: I388e1468657d461cba771e90d5e328746d927ae2
Reviewed-on: https://go-review.googlesource.com/c/mod/+/541815
Reviewed-by: Cherry Mui <cherryyz@google.com>
Reviewed-by: Bryan Mills <bcmills@google.com>
Auto-Submit: Bryan Mills <bcmills@google.com>
LUCI-TryBot-Result: Go LUCI <golang-scoped@luci-project-accounts.iam.gserviceaccount.com>
diff --git a/modfile/read.go b/modfile/read.go
index 5b5bb5e..2205682 100644
--- a/modfile/read.go
+++ b/modfile/read.go
@@ -225,7 +225,7 @@
 			if ww == 0 {
 				continue
 			}
-			if ww == 1 {
+			if ww == 1 && len(stmt.RParen.Comments.Before) == 0 {
 				// Collapse block into single line.
 				line := &Line{
 					Comments: Comments{
diff --git a/modfile/rule_test.go b/modfile/rule_test.go
index 96e0bfe..ca11d17 100644
--- a/modfile/rule_test.go
+++ b/modfile/rule_test.go
@@ -90,6 +90,24 @@
 		)
 		`,
 	},
+	{
+		`unattached_comments`,
+		`
+		module m
+		require (
+			foo v0.0.0-00010101000000-000000000000
+			// bar v0.0.0-00010101000000-000000000000
+		)
+		`,
+		"foo", "v0.0.0-00010101000000-000000000000",
+		`
+		module m
+		require (
+			foo v0.0.0-00010101000000-000000000000
+			// bar v0.0.0-00010101000000-000000000000
+		)
+		`,
+	},
 }
 
 type require struct {