Commit 4a7d1f20 authored by Robert Griesemer's avatar Robert Griesemer

go/ast: correct Pos/End ranges for field lists

R=rsc
CC=golang-dev
https://golang.org/cl/3797045
parent d84317ba
......@@ -120,14 +120,36 @@ func (f *Field) End() token.Pos {
// A FieldList represents a list of Fields, enclosed by parentheses or braces.
type FieldList struct {
Opening token.Pos // position of opening parenthesis/brace
Opening token.Pos // position of opening parenthesis/brace, if any
List []*Field // field list
Closing token.Pos // position of closing parenthesis/brace
Closing token.Pos // position of closing parenthesis/brace, if any
}
func (list *FieldList) Pos() token.Pos { return list.Opening }
func (list *FieldList) End() token.Pos { return list.Closing + 1 }
func (f *FieldList) Pos() token.Pos {
if f.Opening.IsValid() {
return f.Opening
}
// the list should not be empty in this case;
// be conservative and guard against bad ASTs
if len(f.List) > 0 {
return f.List[0].Pos()
}
return token.NoPos
}
func (f *FieldList) End() token.Pos {
if f.Closing.IsValid() {
return f.Closing + 1
}
// the list should not be empty in this case;
// be conservative and guard against bad ASTs
if n := len(f.List); n > 0 {
return f.List[n-1].End()
}
return token.NoPos
}
// NumFields returns the number of (named and anonymous fields) in a FieldList.
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment