]> Cypherpunks.ru repositories - gostls13.git/commitdiff
test: add tests that gofrontend failed
authorIan Lance Taylor <iant@golang.org>
Thu, 19 Oct 2023 23:45:00 +0000 (16:45 -0700)
committerGopher Robot <gobot@golang.org>
Fri, 20 Oct 2023 03:00:06 +0000 (03:00 +0000)
I will shortly be sending CLs to let the gofrontend code pass
these tests.

Change-Id: I53ccbdac3ac224a4fdc9577270f48136ca73a62c
Reviewed-on: https://go-review.googlesource.com/c/go/+/536537
Reviewed-by: Cherry Mui <cherryyz@google.com>
Auto-Submit: Ian Lance Taylor <iant@google.com>
LUCI-TryBot-Result: Go LUCI <golang-scoped@luci-project-accounts.iam.gserviceaccount.com>
Reviewed-by: Ian Lance Taylor <iant@google.com>
test/fixedbugs/bug517.go [new file with mode: 0644]
test/fixedbugs/bug518.go [new file with mode: 0644]

diff --git a/test/fixedbugs/bug517.go b/test/fixedbugs/bug517.go
new file mode 100644 (file)
index 0000000..00860dc
--- /dev/null
@@ -0,0 +1,37 @@
+// run
+
+// Copyright 2023 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.
+
+// The gofrontend used to mishandle this code due to a pass ordering issue.
+// It was inconsistent as to whether unsafe.Sizeof(byte(0)) was a constant,
+// and therefore as to whether it was a direct-iface type.
+
+package main
+
+import "unsafe"
+
+type A [unsafe.Sizeof(byte(0))]*byte
+
+func (r A) V() byte {
+       return *r[0]
+}
+
+func F() byte {
+       panic("F") // should never be called
+}
+
+type B [unsafe.Sizeof(F())]*byte
+
+func (r B) V() byte {
+       return *r[0]
+}
+
+func main() {
+       b := byte(1)
+       v := A{&b}.V() + B{&b}.V()
+       if v != 2 {
+               panic(v)
+       }
+}
diff --git a/test/fixedbugs/bug518.go b/test/fixedbugs/bug518.go
new file mode 100644 (file)
index 0000000..c3ec1f4
--- /dev/null
@@ -0,0 +1,15 @@
+// errorcheck
+
+// Copyright 2023 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.
+
+// The gofrontend used to accept this.
+
+package p
+
+func F2(a int32) bool {
+       return a == C   // ERROR "invalid|incompatible"
+}
+
+const C = uint32(34)