1
0
mirror of https://github.com/golang/go synced 2024-10-04 10:21:21 -06:00

cmd/cgo: record full source path to input .go files

Fixes #5122.

R=golang-dev, iant
CC=golang-dev
https://golang.org/cl/13395046
This commit is contained in:
Russ Cox 2013-09-09 13:04:14 -04:00
parent 933d7129c0
commit 5b04d67091
2 changed files with 28 additions and 0 deletions

View File

@ -13,6 +13,7 @@ import (
"go/scanner"
"go/token"
"os"
"path/filepath"
"strings"
)
@ -44,6 +45,13 @@ func sourceLine(n ast.Node) int {
// a list of exported functions, and the actual AST, to be rewritten and
// printed.
func (f *File) ReadGo(name string) {
// Create absolute path for file, so that it will be used in error
// messages and recorded in debug line number information.
// This matches the rest of the toolchain. See golang.org/issue/5122.
if aname, err := filepath.Abs(name); err == nil {
name = aname
}
// Two different parses: once with comments, once without.
// The printer is not good enough at printing comments in the
// right place when we start editing the AST behind its back,

View File

@ -463,6 +463,26 @@ import "C"
rm -rf $d
unset GOPATH
TEST cgo shows full path names
d=$(TMPDIR=/var/tmp mktemp -d -t testgoXXX)
export GOPATH=$d
mkdir -p $d/src/x/y/dirname
echo '
package foo
import "C"
func f() {
' >$d/src/x/y/dirname/foo.go
if ./testgo build x/y/dirname >$d/err 2>&1; then
echo build succeeded unexpectedly.
ok=false
elif ! grep x/y/dirname $d/err >/dev/null; then
echo error did not use full path.
cat $d/err
ok=false
fi
rm -rf $d
unset GOPATH
# clean up
if $started; then stop; fi
rm -rf testdata/bin testdata/bin1