mirror of
https://github.com/golang/go
synced 2024-11-23 00:10:07 -07:00
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
18
misc/cgo/errors/issue18452.go
Normal file
18
misc/cgo/errors/issue18452.go
Normal file
@ -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
Block a user