diff options
Diffstat (limited to 'src/cmd/compile/internal/gc/noder.go')
-rw-r--r-- | src/cmd/compile/internal/gc/noder.go | 7 |
1 files changed, 5 insertions, 2 deletions
diff --git a/src/cmd/compile/internal/gc/noder.go b/src/cmd/compile/internal/gc/noder.go index f9de48a08b..ca99adea27 100644 --- a/src/cmd/compile/internal/gc/noder.go +++ b/src/cmd/compile/internal/gc/noder.go @@ -1022,13 +1022,14 @@ func (p *noder) error(err error) { func (p *noder) pragma(pos, line int, text string) syntax.Pragma { switch { case strings.HasPrefix(text, "line "): - i := strings.IndexByte(text, ':') + // Want to use LastIndexByte below but it's not defined in Go1.4 and bootstrap fails. + i := strings.LastIndex(text, ":") // look from right (Windows filenames may contain ':') if i < 0 { break } n, err := strconv.Atoi(text[i+1:]) if err != nil { - // todo: make this an error instead? it is almost certainly a bug. + // TODO: make this an error instead? it is almost certainly a bug. break } if n > 1e8 { @@ -1054,6 +1055,7 @@ func (p *noder) pragma(pos, line int, text string) syntax.Pragma { lookup(f[1]).Linkname = f[2] case strings.HasPrefix(text, "go:cgo_"): + lineno = p.baseline + int32(line) - 1 // pragcgo may call yyerror pragcgobuf += pragcgo(text) fallthrough // because of //go:cgo_unsafe_args default: @@ -1061,6 +1063,7 @@ func (p *noder) pragma(pos, line int, text string) syntax.Pragma { if i := strings.Index(text, " "); i >= 0 { verb = verb[:i] } + lineno = p.baseline + int32(line) - 1 // pragmaValue may call yyerror return syntax.Pragma(pragmaValue(verb)) } |