Golang go/token.File.AddLineInfo function example

package go/token

AddLineInfo adds alternative file and line(3rd parameter) number information for a given file offset (1st parameter). The offset must be larger than the offset for the previously added alternative line info and smaller than the file size; otherwise the information is ignored.

AddLineInfo is typically used to register alternative position information for //line filename:line comments in source files.

Golang go/token.File.AddLineInfo function usage example

 func (s *Scanner) interpretLineComment(text []byte) {
 if bytes.HasPrefix(text, prefix) {
  // get filename and line number, if any
  if i := bytes.LastIndex(text, []byte{':'}); i > 0 {
 if line, err := strconv.Atoi(string(text[i+1:])); err == nil && line > 0 {
 // valid //line filename:line comment
 filename := string(bytes.TrimSpace(text[len(prefix):i]))
 if filename != "" {
 filename = filepath.Clean(filename)
 if !filepath.IsAbs(filename) {
 // make filename relative to current directory
 filename = filepath.Join(s.dir, filename)
 }
 }
 // update scanner position
 s.file.AddLineInfo(s.lineOffset+len(text)+1, filename, line) // +len(text)+1 since comment applies to next line
 }
  }
 }
 }

References :

https://golang.org/src/pkg/text/scanner/scanner.go

http://golang.org/pkg/go/token/#File.AddLineInfo

Advertisement