From ca2a886cbade477e2c7cf09cdac604b757fb70a9 Mon Sep 17 00:00:00 2001 From: griesemer Date: Fri, 10 Nov 2017 11:38:51 -0800 Subject: cmd/compile: record original and absolute file names for line directives Also, with this change, error locations don't print absolute positions in [] brackets following positions relative to line directives. To get the absolute positions as well, specify the -L flag. Fixes #22660. Change-Id: I9ecfa254f053defba9c802222874155fa12fee2c Reviewed-on: https://go-review.googlesource.com/77090 Reviewed-by: David Crawshaw Reviewed-by: Russ Cox --- src/cmd/compile/internal/syntax/parser.go | 7 ++++--- 1 file changed, 4 insertions(+), 3 deletions(-) (limited to 'src/cmd/compile/internal/syntax/parser.go') diff --git a/src/cmd/compile/internal/syntax/parser.go b/src/cmd/compile/internal/syntax/parser.go index 7047266a70..ff3e769864 100644 --- a/src/cmd/compile/internal/syntax/parser.go +++ b/src/cmd/compile/internal/syntax/parser.go @@ -80,11 +80,12 @@ func (p *parser) updateBase(line, col uint, text string) { p.error_at(p.pos_at(line, col+uint(i+1)), "invalid line number: "+nstr) return } - absFile := text[:i] + filename := text[:i] + absFilename := filename if p.fileh != nil { - absFile = p.fileh(absFile) + absFilename = p.fileh(filename) } - p.base = src.NewLinePragmaBase(src.MakePos(p.base.Pos().Base(), line, col), absFile, uint(n)) + p.base = src.NewLinePragmaBase(src.MakePos(p.base.Pos().Base(), line, col), filename, absFilename, uint(n)) } func (p *parser) got(tok token) bool { -- cgit v1.3