mirror of
https://github.com/golang/go
synced 2024-11-23 03:40:02 -07:00
cmd/compile: file line number for //go:xxx directives
Minimally invasive; fixes a regression from 1.7. Fixes #18459. Change-Id: I93b3b5c05706eaff8ae97a237f770838c1f8778c Reviewed-on: https://go-review.googlesource.com/34721 Reviewed-by: David Chase <drchase@google.com> Reviewed-by: Russ Cox <rsc@golang.org> TryBot-Result: Gobot Gobot <gobot@golang.org>
This commit is contained in:
parent
a8871194f2
commit
f412bd31ce
@ -1055,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:
|
||||
@ -1062,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))
|
||||
}
|
||||
|
||||
|
@ -157,6 +157,7 @@ func TestStdFixed(t *testing.T) {
|
||||
"issue11362.go", // canonical import path check
|
||||
"issue15002.go", // uses Mmap; testTestDir should consult build tags
|
||||
"issue16369.go", // go/types handles this correctly - not an issue
|
||||
"issue18459.go", // go/types doesn't check validity of //go:xxx directives
|
||||
)
|
||||
}
|
||||
|
||||
|
13
test/fixedbugs/issue18459.go
Normal file
13
test/fixedbugs/issue18459.go
Normal file
@ -0,0 +1,13 @@
|
||||
// errorcheck
|
||||
|
||||
// Copyright 2016 The Go Authors. All rights reserved.
|
||||
// Use of this source code is governed by a BSD-style
|
||||
// license that can be found in the LICENSE file.
|
||||
|
||||
// Verify that we have a line number for this error.
|
||||
|
||||
package main
|
||||
|
||||
//go:nowritebarrier // ERROR "go:nowritebarrier only allowed in runtime"
|
||||
func main() {
|
||||
}
|
Loading…
Reference in New Issue
Block a user