Skip to content

Commit

Permalink
cmd/go: fix cgo error output rewrite
Browse files Browse the repository at this point in the history
for example, we now rewrite *_Ctype_int to *C.int.
Fixes #6781.

LGTM=iant
R=golang-codereviews, rsc, iant
CC=golang-codereviews
https://golang.org/cl/36860043
  • Loading branch information
minux committed Feb 13, 2014
1 parent e8ecd9f commit c36dd4a
Showing 1 changed file with 3 additions and 2 deletions.
5 changes: 3 additions & 2 deletions src/cmd/go/build.go
Expand Up @@ -1302,6 +1302,7 @@ func relPaths(paths []string) []string {
var errPrintedOutput = errors.New("already printed output - no need to show error")

var cgoLine = regexp.MustCompile(`\[[^\[\]]+\.cgo1\.go:[0-9]+\]`)
var cgoTypeSigRe = regexp.MustCompile(`\b_Ctype_\B`)

// run runs the command given by cmdline in the directory dir.
// If the command fails, run prints information about the failure
Expand All @@ -1328,11 +1329,11 @@ func (b *builder) processOutput(out []byte) string {
messages := string(out)
// Fix up output referring to cgo-generated code to be more readable.
// Replace x.go:19[/tmp/.../x.cgo1.go:18] with x.go:19.
// Replace _Ctype_foo with C.foo.
// Replace *[100]_Ctype_foo with *[100]C.foo.
// If we're using -x, assume we're debugging and want the full dump, so disable the rewrite.
if !buildX && cgoLine.MatchString(messages) {
messages = cgoLine.ReplaceAllString(messages, "")
messages = strings.Replace(messages, "type _Ctype_", "type C.", -1)
messages = cgoTypeSigRe.ReplaceAllString(messages, "C.")
}
return messages
}
Expand Down

0 comments on commit c36dd4a

Please sign in to comment.