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 :
Advertisement
Something interesting
Tutorials
+8.1k Golang : Multiplexer with net/http and map
+51.4k Golang : Check if item is in slice/array
+9.9k Golang : Translate language with language package example
+9.2k Golang : Write multiple lines or divide string into multiple lines
+17.7k Golang : Read data from config file and assign to variables
+5k Golang : Calculate a pip value and distance to target profit example
+10.1k Golang : Test a slice of integers for odd and even numbers
+5.8k Linux : Disable and enable IPv4 forwarding
+23.5k Golang : Read a file into an array or slice example
+5.5k Clean up Visual Studio For Mac installation failed disk full problem
+14.2k Golang : syscall.Socket example
+7.9k Golang : Gomobile init produce "iphoneos" cannot be located error