1
0
mirror of https://github.com/golang/go synced 2024-11-23 08:40:08 -07:00

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", "issue18889.go",
"issue28721.go", "issue28721.go",
"issue33061.go", "issue33061.go",
"issue50710.go",
} { } {
check(t, file) 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, // Check if compiling the preamble by itself causes any errors,
// because the messages we've printed out so far aren't helpful // because the messages we've printed out so far aren't helpful
// to users debugging preamble mistakes. See issue 8442. // 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 { if len(preambleErrors) > 0 {
error_(token.NoPos, "\n%s errors for preamble:\n%s", gccBaseCmd[0], preambleErrors) error_(token.NoPos, "\n%s errors for preamble:\n%s", gccBaseCmd[0], preambleErrors)
} }