]> Cypherpunks.ru repositories - gostls13.git/commitdiff
cmd/go: prepend builtin prolog when checking for preamble errors
authorqmuntal <quimmuntal@gmail.com>
Thu, 20 Jan 2022 11:46:38 +0000 (12:46 +0100)
committerGopher Robot <gobot@golang.org>
Sat, 25 Jun 2022 19:07:01 +0000 (19:07 +0000)
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>
misc/cgo/errors/errors_test.go
misc/cgo/errors/testdata/issue50710.go [new file with mode: 0644]
src/cmd/cgo/gcc.go

index e90ed1e058d83d7318b3ebaadf2c81f5dfaef7ce..9718b7f9fb4d049dc6f838feb9669c6b5267cce9 100644 (file)
@@ -112,6 +112,7 @@ func TestReportsTypeErrors(t *testing.T) {
                "issue18889.go",
                "issue28721.go",
                "issue33061.go",
+               "issue50710.go",
        } {
                check(t, file)
        }
diff --git a/misc/cgo/errors/testdata/issue50710.go b/misc/cgo/errors/testdata/issue50710.go
new file mode 100644 (file)
index 0000000..dffea22
--- /dev/null
@@ -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
+}
index 3cb01ba382f255f72ede91f6aafbd6b149b0ffbe..d89bff287b32797a6a293da0e833e594f1b780f8 100644 (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)
                }