--- /dev/null
+// Copyright 2017 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.
+
+// This file is here just to cause problems.
+// main.swig turns into a file also named main.go.
+// Make sure cmd/go keeps them separate
+// when both are passed to cgo.
+
+package main
+
+//int F(void) { return 1; }
+import "C"
+import (
+ "fmt"
+ "os"
+)
+
+func F() int { return int(C.F()) }
+
+func main() {
+ if x := int(C.F()); x != 1 {
+ fatal("x = %d, want 1", x)
+ }
+
+ // Open this file itself and verify that the first few characters are
+ // as expected.
+ f := Fopen("main.go", "r")
+ if f.Swigcptr() == 0 {
+ fatal("fopen failed")
+ }
+ if Fgetc(f) != '/' || Fgetc(f) != '/' || Fgetc(f) != ' ' || Fgetc(f) != 'C' {
+ fatal("read unexpected characters")
+ }
+ if Fclose(f) != 0 {
+ fatal("fclose failed")
+ }
+
+ println("OK")
+}
+
+func fatal(f string, args ...any) {
+ fmt.Fprintln(os.Stderr, fmt.Sprintf(f, args...))
+ os.Exit(1)
+}