Revert "go/parser: include more comments in a struct or interface"
This reverts commit https://golang.org/cl/161177/.
Reason for revert: this led to non-contiguous comments spaced
by an empty line to be grouped into a single CommentGroup
Fixes #32944
Updates #10858
Change-Id: I5e16663b308c3b560496da8e66c33befdf9ed9dd
Reviewed-on: https://go-review.googlesource.com/c/go/+/185040
Reviewed-by: Robert Griesemer <gri@golang.org>
diff --git a/src/go/doc/testdata/issue10858.0.golden b/src/go/doc/testdata/issue10858.0.golden
deleted file mode 100644
index 51f8f1e..0000000
--- a/src/go/doc/testdata/issue10858.0.golden
+++ /dev/null
@@ -1,79 +0,0 @@
-//
-PACKAGE issue10858
-
-IMPORTPATH
- testdata/issue10858
-
-IMPORTS
- unsafe
-
-FILENAMES
- testdata/issue10858.go
-
-CONSTANTS
- // First line Second line
- const (
-
- // C1 comment
- C1 int = 1 << 0
-
- C2 int = 1 << 1
-
- // C3 comment
- //
- // with a line gap
- C3 int = 1 << 2
- )
-
-
-TYPES
- // StructTag is a comment with 2 connecting lines
- type StructTag string // adjacent comment
-
- // Get returns the value associated with key in the tag string.
- func (tag StructTag) Get(key string) string
-
- // First line Second line
- type Type interface {
- // Should be present
-
- // Align returns the alignment in bytes of a value of
- // this type when allocated in memory.
- Align() int
-
- // FieldAlign returns the alignment in bytes of a value of
- // this type when used as a field in a struct.
- FieldAlign() int // adjacent comment
-
- // Ptr: Elem
- // Slice: Elem
-
- // Bits returns the size of the type in bits.
-
- //
- // It panics if the type's Kind is not one of the
- // sized or unsized Int, Uint, Float, or Complex kinds.
- Bits() int
- }
-
- // NewType is a comment ending with this line.
- func NewType() Type
-
- // TypeAlg is a copy of runtime.typeAlg
- type TypeAlg struct {
- // function for hashing objects of this type
- //
- //
- // (ptr to object, seed) -> hash
- Hash func(unsafe.Pointer, uintptr) uintptr
-
- // include
- // include
-
- // include
-
- // function for comparing objects of this type
- // (ptr to object A, ptr to object B) -> ==?
- Equal func(unsafe.Pointer, unsafe.Pointer) bool
- }
-
diff --git a/src/go/doc/testdata/issue10858.1.golden b/src/go/doc/testdata/issue10858.1.golden
deleted file mode 100644
index 51f8f1e..0000000
--- a/src/go/doc/testdata/issue10858.1.golden
+++ /dev/null
@@ -1,79 +0,0 @@
-//
-PACKAGE issue10858
-
-IMPORTPATH
- testdata/issue10858
-
-IMPORTS
- unsafe
-
-FILENAMES
- testdata/issue10858.go
-
-CONSTANTS
- // First line Second line
- const (
-
- // C1 comment
- C1 int = 1 << 0
-
- C2 int = 1 << 1
-
- // C3 comment
- //
- // with a line gap
- C3 int = 1 << 2
- )
-
-
-TYPES
- // StructTag is a comment with 2 connecting lines
- type StructTag string // adjacent comment
-
- // Get returns the value associated with key in the tag string.
- func (tag StructTag) Get(key string) string
-
- // First line Second line
- type Type interface {
- // Should be present
-
- // Align returns the alignment in bytes of a value of
- // this type when allocated in memory.
- Align() int
-
- // FieldAlign returns the alignment in bytes of a value of
- // this type when used as a field in a struct.
- FieldAlign() int // adjacent comment
-
- // Ptr: Elem
- // Slice: Elem
-
- // Bits returns the size of the type in bits.
-
- //
- // It panics if the type's Kind is not one of the
- // sized or unsized Int, Uint, Float, or Complex kinds.
- Bits() int
- }
-
- // NewType is a comment ending with this line.
- func NewType() Type
-
- // TypeAlg is a copy of runtime.typeAlg
- type TypeAlg struct {
- // function for hashing objects of this type
- //
- //
- // (ptr to object, seed) -> hash
- Hash func(unsafe.Pointer, uintptr) uintptr
-
- // include
- // include
-
- // include
-
- // function for comparing objects of this type
- // (ptr to object A, ptr to object B) -> ==?
- Equal func(unsafe.Pointer, unsafe.Pointer) bool
- }
-
diff --git a/src/go/doc/testdata/issue10858.2.golden b/src/go/doc/testdata/issue10858.2.golden
deleted file mode 100644
index 51f8f1e..0000000
--- a/src/go/doc/testdata/issue10858.2.golden
+++ /dev/null
@@ -1,79 +0,0 @@
-//
-PACKAGE issue10858
-
-IMPORTPATH
- testdata/issue10858
-
-IMPORTS
- unsafe
-
-FILENAMES
- testdata/issue10858.go
-
-CONSTANTS
- // First line Second line
- const (
-
- // C1 comment
- C1 int = 1 << 0
-
- C2 int = 1 << 1
-
- // C3 comment
- //
- // with a line gap
- C3 int = 1 << 2
- )
-
-
-TYPES
- // StructTag is a comment with 2 connecting lines
- type StructTag string // adjacent comment
-
- // Get returns the value associated with key in the tag string.
- func (tag StructTag) Get(key string) string
-
- // First line Second line
- type Type interface {
- // Should be present
-
- // Align returns the alignment in bytes of a value of
- // this type when allocated in memory.
- Align() int
-
- // FieldAlign returns the alignment in bytes of a value of
- // this type when used as a field in a struct.
- FieldAlign() int // adjacent comment
-
- // Ptr: Elem
- // Slice: Elem
-
- // Bits returns the size of the type in bits.
-
- //
- // It panics if the type's Kind is not one of the
- // sized or unsized Int, Uint, Float, or Complex kinds.
- Bits() int
- }
-
- // NewType is a comment ending with this line.
- func NewType() Type
-
- // TypeAlg is a copy of runtime.typeAlg
- type TypeAlg struct {
- // function for hashing objects of this type
- //
- //
- // (ptr to object, seed) -> hash
- Hash func(unsafe.Pointer, uintptr) uintptr
-
- // include
- // include
-
- // include
-
- // function for comparing objects of this type
- // (ptr to object A, ptr to object B) -> ==?
- Equal func(unsafe.Pointer, unsafe.Pointer) bool
- }
-
diff --git a/src/go/doc/testdata/issue10858.go b/src/go/doc/testdata/issue10858.go
deleted file mode 100644
index aebea50..0000000
--- a/src/go/doc/testdata/issue10858.go
+++ /dev/null
@@ -1,102 +0,0 @@
-package issue10858
-
-import "unsafe"
-
-// Should be ignored
-
-// First line
-//
-// Second line
-type Type interface {
- // Should be present
-
- // Align returns the alignment in bytes of a value of
- // this type when allocated in memory.
- Align() int
-
- // FieldAlign returns the alignment in bytes of a value of
- // this type when used as a field in a struct.
- FieldAlign() int // adjacent comment
-
- // Ptr: Elem
- // Slice: Elem
-
- // Bits returns the size of the type in bits.
-
- //
- // It panics if the type's Kind is not one of the
- // sized or unsized Int, Uint, Float, or Complex kinds.
- Bits() int
-
- // Should be ignored
-}
-
-// Should be ignored
-
-// NewType is a comment
-//
-// ending with this line.
-func NewType() Type {}
-
-// Ignore
-
-// First line
-//
-// Second line
-const (
- // Should be ignored
-
- // C1 comment
- C1 int = 1 << 0
-
- // Should
- //
- // be ignored
-
- C2 int = 1 << 1
-
- // C3 comment
- //
- // with a line gap
- C3 int = 1 << 2
-
- // Should be ignored
-)
-
-// Should be ignored
-
-// Should be ignored
-
-// TypeAlg is a
-// copy of runtime.typeAlg
-type TypeAlg struct {
- // function for hashing objects of this type
- //
- //
- // (ptr to object, seed) -> hash
- Hash func(unsafe.Pointer, uintptr) uintptr
-
- // include
- // include
-
- // include
-
- // function for comparing objects of this type
- // (ptr to object A, ptr to object B) -> ==?
- Equal func(unsafe.Pointer, unsafe.Pointer) bool
- // Should be ignored
-}
-
-// Should be ignored
-
-// StructTag is a comment
-//
-//
-// with 2 connecting lines
-type StructTag string // adjacent comment
-
-// Should be ignored
-
-// Get returns the value associated with key in the tag string.
-func (tag StructTag) Get(key string) string {
-}
diff --git a/src/go/parser/parser.go b/src/go/parser/parser.go
index 9294bb6..ba16b65 100644
--- a/src/go/parser/parser.go
+++ b/src/go/parser/parser.go
@@ -63,7 +63,6 @@
topScope *ast.Scope // top-most scope; may be pkgScope
unresolved []*ast.Ident // unresolved identifiers
imports []*ast.ImportSpec // list of imports
- inStruct bool // if set, parser is parsing a struct or interface (for comment collection)
// Label scopes
// (maintained by open/close LabelScope)
@@ -338,15 +337,7 @@
// consume successor comments, if any
endline = -1
for p.tok == token.COMMENT {
- n := 1
- // When inside a struct (or interface), we don't want to lose comments
- // separated from individual field (or method) documentation by empty
- // lines. Allow for some white space in this case and collect those
- // comments as a group. See issue #10858 for details.
- if p.inStruct {
- n = 2
- }
- comment, endline = p.consumeCommentGroup(n)
+ comment, endline = p.consumeCommentGroup(1)
}
if endline+1 == p.file.Line(p.pos) {
@@ -757,7 +748,6 @@
}
pos := p.expect(token.STRUCT)
- p.inStruct = true
lbrace := p.expect(token.LBRACE)
scope := ast.NewScope(nil) // struct scope
var list []*ast.Field
@@ -768,7 +758,6 @@
list = append(list, p.parseFieldDecl(scope))
}
rbrace := p.expect(token.RBRACE)
- p.inStruct = false
return &ast.StructType{
Struct: pos,
@@ -970,7 +959,6 @@
}
pos := p.expect(token.INTERFACE)
- p.inStruct = true
lbrace := p.expect(token.LBRACE)
scope := ast.NewScope(nil) // interface scope
var list []*ast.Field
@@ -978,7 +966,6 @@
list = append(list, p.parseMethodSpec(scope))
}
rbrace := p.expect(token.RBRACE)
- p.inStruct = false
return &ast.InterfaceType{
Interface: pos,