cmd/go: prepend builtin prolog when checking for preamble errors

Fixes #50710

Change-Id: I62feddbe3eaae9605d196bec60d378614436603a
Reviewed-on: https://go-review.googlesource.com/c/go/+/379754
Auto-Submit: Ian Lance Taylor <iant@google.com>
Reviewed-by: Dmitri Shuralyov <dmitshur@google.com>
TryBot-Result: Gopher Robot <gobot@golang.org>
Run-TryBot: Ian Lance Taylor <iant@google.com>
Reviewed-by: Ian Lance Taylor <iant@google.com>
Reviewed-by: Dmitri Shuralyov <dmitshur@golang.org>
This commit is contained in:
qmuntal 2022-01-20 12:46:38 +01:00 committed by Gopher Robot
parent 41e1d9075e
commit 4f45ec5963
3 changed files with 16 additions and 1 deletions

View file

@ -112,6 +112,7 @@ func TestReportsTypeErrors(t *testing.T) {
"issue18889.go",
"issue28721.go",
"issue33061.go",
"issue50710.go",
} {
check(t, file)
}

14
misc/cgo/errors/testdata/issue50710.go vendored Normal file
View file

@ -0,0 +1,14 @@
// Copyright 2022 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.
package main
// size_t StrLen(_GoString_ s) {
// return _GoStringLen(s);
// }
import "C"
func main() {
C.StrLen1() // ERROR HERE
}

View file

@ -488,7 +488,7 @@ func (p *Package) guessKinds(f *File) []*Name {
// Check if compiling the preamble by itself causes any errors,
// because the messages we've printed out so far aren't helpful
// to users debugging preamble mistakes. See issue 8442.
preambleErrors := p.gccErrors([]byte(f.Preamble))
preambleErrors := p.gccErrors([]byte(builtinProlog + f.Preamble))
if len(preambleErrors) > 0 {
error_(token.NoPos, "\n%s errors for preamble:\n%s", gccBaseCmd[0], preambleErrors)
}