mirror of https://github.com/golang/go.git
cmd/cgo: show pos info in undefined name errors
For test.go:
package main
import (
"C"
"fmt"
)
func main() {
fmt.Println("Hello, world!")
C.no_such_f()
}
Before:
could not determine kind of name for C.no_such_f
After:
./test.go:10:2: could not determine kind of name for C.no_such_f
Fixes #18452
Change-Id: I49c136b7fa60fab25d2d5b905d440fe4d106e565
Reviewed-on: https://go-review.googlesource.com/34783
Run-TryBot: Alberto Donizetti <alb.donizetti@gmail.com>
TryBot-Result: Gobot Gobot <gobot@golang.org>
Reviewed-by: Ian Lance Taylor <iant@golang.org>
This commit is contained in:
parent
b547429a25
commit
e5d2104582
|
|
@ -0,0 +1,18 @@
|
|||
// Copyright 2017 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.
|
||||
|
||||
// Issue 18452: show pos info in undefined name errors
|
||||
|
||||
package p
|
||||
|
||||
import (
|
||||
"C"
|
||||
"fmt"
|
||||
)
|
||||
|
||||
func a() {
|
||||
fmt.Println("Hello, world!")
|
||||
C.function_that_does_not_exist() // line 16
|
||||
C.pi // line 17
|
||||
}
|
||||
|
|
@ -48,6 +48,7 @@ check issue13830.go
|
|||
check issue16116.go
|
||||
check issue16591.go
|
||||
check issue18889.go
|
||||
expect issue18452.go issue18452.go:16 issue18452.go:17
|
||||
|
||||
if ! go build issue14669.go; then
|
||||
exit 1
|
||||
|
|
|
|||
|
|
@ -421,7 +421,14 @@ func (p *Package) guessKinds(f *File) []*Name {
|
|||
for i, n := range names {
|
||||
switch sniff[i] &^ notSignedIntConst {
|
||||
default:
|
||||
error_(token.NoPos, "could not determine kind of name for C.%s", fixGo(n.Go))
|
||||
var tpos token.Pos
|
||||
for _, ref := range f.Ref {
|
||||
if ref.Name == n {
|
||||
tpos = ref.Pos()
|
||||
break
|
||||
}
|
||||
}
|
||||
error_(tpos, "could not determine kind of name for C.%s", fixGo(n.Go))
|
||||
case notStrLiteral | notType:
|
||||
if sniff[i]¬SignedIntConst != 0 {
|
||||
n.Kind = "uconst"
|
||||
|
|
|
|||
Loading…
Reference in New Issue