How can I encode the position of the form /pathto/file.go:40:32
which is returned by token.Position.String()
to a posFlag
param required by ParseQueryPos
which looks like /pathto/file.go:#550
.
Why?
I'm using the Oracle
tool to do some static analysis. I need to run Oracle.Query
which requires a param of type *QueryPos
. The only way to get *QueryPos
is using ParseQueryPos
.
The source to tools/pos.go
called by ParseQueryPos says
// parsePosFlag parses a string of the form "file:pos" or
// file:start,end" where pos, start, end match #%d and represent byte
// offsets, and returns its components.
If you really had to convert from line:column
strings, you'd look at the file contents and count up bytes (including newlines) leading to that line:column. But since you're working with a token.Position
, it looks like you can get what you need from token.Position.Offset
.