mirror of https://github.com/golang/go.git
cmd/compile: move more compiler tests to new test infrastructure
Update #26469 Change-Id: I1188e49cde1bda11506afef6b6e3f34c6ff45ea5 Reviewed-on: https://go-review.googlesource.com/127115 Run-TryBot: Keith Randall <khr@golang.org> TryBot-Result: Gobot Gobot <gobot@golang.org> Reviewed-by: David Chase <drchase@google.com>
This commit is contained in:
parent
78ce3a0368
commit
25ea4e579f
|
|
@ -26,10 +26,6 @@ func runTest(t *testing.T, filename string, flags ...string) {
|
|||
t.Parallel()
|
||||
doTest(t, filename, "run", flags...)
|
||||
}
|
||||
func buildTest(t *testing.T, filename string, flags ...string) {
|
||||
t.Parallel()
|
||||
doTest(t, filename, "build", flags...)
|
||||
}
|
||||
func doTest(t *testing.T, filename string, kind string, flags ...string) {
|
||||
testenv.MustHaveGoBuild(t)
|
||||
gotool := testenv.GoToolPath(t)
|
||||
|
|
@ -227,22 +223,6 @@ func TestCode(t *testing.T) {
|
|||
}
|
||||
}
|
||||
|
||||
func TestChan(t *testing.T) { runTest(t, "chan.go") }
|
||||
|
||||
func TestCompound(t *testing.T) { runTest(t, "compound.go") }
|
||||
|
||||
func TestCtl(t *testing.T) { runTest(t, "ctl.go") }
|
||||
|
||||
func TestLoadStore(t *testing.T) { runTest(t, "loadstore.go") }
|
||||
|
||||
func TestMap(t *testing.T) { runTest(t, "map.go") }
|
||||
|
||||
func TestRegalloc(t *testing.T) { runTest(t, "regalloc.go") }
|
||||
|
||||
func TestString(t *testing.T) { runTest(t, "string.go") }
|
||||
|
||||
func TestDeferNoReturn(t *testing.T) { buildTest(t, "deferNoReturn.go") }
|
||||
|
||||
// TestClosure tests closure related behavior.
|
||||
func TestClosure(t *testing.T) { runTest(t, "closure.go") }
|
||||
|
||||
|
|
|
|||
|
|
@ -2,12 +2,10 @@
|
|||
// Use of this source code is governed by a BSD-style
|
||||
// license that can be found in the LICENSE file.
|
||||
|
||||
// chan_ssa.go tests chan operations.
|
||||
// chan.go tests chan operations.
|
||||
package main
|
||||
|
||||
import "fmt"
|
||||
|
||||
var failed = false
|
||||
import "testing"
|
||||
|
||||
//go:noinline
|
||||
func lenChan_ssa(v chan int) int {
|
||||
|
|
@ -19,7 +17,7 @@ func capChan_ssa(v chan int) int {
|
|||
return cap(v)
|
||||
}
|
||||
|
||||
func testLenChan() {
|
||||
func testLenChan(t *testing.T) {
|
||||
|
||||
v := make(chan int, 10)
|
||||
v <- 1
|
||||
|
|
@ -27,47 +25,39 @@ func testLenChan() {
|
|||
v <- 1
|
||||
|
||||
if want, got := 3, lenChan_ssa(v); got != want {
|
||||
fmt.Printf("expected len(chan) = %d, got %d", want, got)
|
||||
failed = true
|
||||
t.Errorf("expected len(chan) = %d, got %d", want, got)
|
||||
}
|
||||
}
|
||||
|
||||
func testLenNilChan() {
|
||||
func testLenNilChan(t *testing.T) {
|
||||
|
||||
var v chan int
|
||||
if want, got := 0, lenChan_ssa(v); got != want {
|
||||
fmt.Printf("expected len(nil) = %d, got %d", want, got)
|
||||
failed = true
|
||||
t.Errorf("expected len(nil) = %d, got %d", want, got)
|
||||
}
|
||||
}
|
||||
|
||||
func testCapChan() {
|
||||
func testCapChan(t *testing.T) {
|
||||
|
||||
v := make(chan int, 25)
|
||||
|
||||
if want, got := 25, capChan_ssa(v); got != want {
|
||||
fmt.Printf("expected cap(chan) = %d, got %d", want, got)
|
||||
failed = true
|
||||
t.Errorf("expected cap(chan) = %d, got %d", want, got)
|
||||
}
|
||||
}
|
||||
|
||||
func testCapNilChan() {
|
||||
func testCapNilChan(t *testing.T) {
|
||||
|
||||
var v chan int
|
||||
if want, got := 0, capChan_ssa(v); got != want {
|
||||
fmt.Printf("expected cap(nil) = %d, got %d", want, got)
|
||||
failed = true
|
||||
t.Errorf("expected cap(nil) = %d, got %d", want, got)
|
||||
}
|
||||
}
|
||||
|
||||
func main() {
|
||||
testLenChan()
|
||||
testLenNilChan()
|
||||
func TestChan(t *testing.T) {
|
||||
testLenChan(t)
|
||||
testLenNilChan(t)
|
||||
|
||||
testCapChan()
|
||||
testCapNilChan()
|
||||
|
||||
if failed {
|
||||
panic("failed")
|
||||
}
|
||||
testCapChan(t)
|
||||
testCapNilChan(t)
|
||||
}
|
||||
|
|
@ -1,5 +1,3 @@
|
|||
// run
|
||||
|
||||
// Copyright 2015 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.
|
||||
|
|
@ -8,7 +6,9 @@
|
|||
|
||||
package main
|
||||
|
||||
import "fmt"
|
||||
import (
|
||||
"testing"
|
||||
)
|
||||
|
||||
func string_ssa(a, b string, x bool) string {
|
||||
s := ""
|
||||
|
|
@ -20,16 +20,14 @@ func string_ssa(a, b string, x bool) string {
|
|||
return s
|
||||
}
|
||||
|
||||
func testString() {
|
||||
func testString(t *testing.T) {
|
||||
a := "foo"
|
||||
b := "barz"
|
||||
if want, got := a, string_ssa(a, b, true); got != want {
|
||||
fmt.Printf("string_ssa(%v, %v, true) = %v, want %v\n", a, b, got, want)
|
||||
failed = true
|
||||
t.Errorf("string_ssa(%v, %v, true) = %v, want %v\n", a, b, got, want)
|
||||
}
|
||||
if want, got := b, string_ssa(a, b, false); got != want {
|
||||
fmt.Printf("string_ssa(%v, %v, false) = %v, want %v\n", a, b, got, want)
|
||||
failed = true
|
||||
t.Errorf("string_ssa(%v, %v, false) = %v, want %v\n", a, b, got, want)
|
||||
}
|
||||
}
|
||||
|
||||
|
|
@ -55,31 +53,27 @@ func complex128_ssa(a, b complex128, x bool) complex128 {
|
|||
return c
|
||||
}
|
||||
|
||||
func testComplex64() {
|
||||
func testComplex64(t *testing.T) {
|
||||
var a complex64 = 1 + 2i
|
||||
var b complex64 = 3 + 4i
|
||||
|
||||
if want, got := a, complex64_ssa(a, b, true); got != want {
|
||||
fmt.Printf("complex64_ssa(%v, %v, true) = %v, want %v\n", a, b, got, want)
|
||||
failed = true
|
||||
t.Errorf("complex64_ssa(%v, %v, true) = %v, want %v\n", a, b, got, want)
|
||||
}
|
||||
if want, got := b, complex64_ssa(a, b, false); got != want {
|
||||
fmt.Printf("complex64_ssa(%v, %v, true) = %v, want %v\n", a, b, got, want)
|
||||
failed = true
|
||||
t.Errorf("complex64_ssa(%v, %v, true) = %v, want %v\n", a, b, got, want)
|
||||
}
|
||||
}
|
||||
|
||||
func testComplex128() {
|
||||
func testComplex128(t *testing.T) {
|
||||
var a complex128 = 1 + 2i
|
||||
var b complex128 = 3 + 4i
|
||||
|
||||
if want, got := a, complex128_ssa(a, b, true); got != want {
|
||||
fmt.Printf("complex128_ssa(%v, %v, true) = %v, want %v\n", a, b, got, want)
|
||||
failed = true
|
||||
t.Errorf("complex128_ssa(%v, %v, true) = %v, want %v\n", a, b, got, want)
|
||||
}
|
||||
if want, got := b, complex128_ssa(a, b, false); got != want {
|
||||
fmt.Printf("complex128_ssa(%v, %v, true) = %v, want %v\n", a, b, got, want)
|
||||
failed = true
|
||||
t.Errorf("complex128_ssa(%v, %v, true) = %v, want %v\n", a, b, got, want)
|
||||
}
|
||||
}
|
||||
|
||||
|
|
@ -93,16 +87,14 @@ func slice_ssa(a, b []byte, x bool) []byte {
|
|||
return s
|
||||
}
|
||||
|
||||
func testSlice() {
|
||||
func testSlice(t *testing.T) {
|
||||
a := []byte{3, 4, 5}
|
||||
b := []byte{7, 8, 9}
|
||||
if want, got := byte(3), slice_ssa(a, b, true)[0]; got != want {
|
||||
fmt.Printf("slice_ssa(%v, %v, true) = %v, want %v\n", a, b, got, want)
|
||||
failed = true
|
||||
t.Errorf("slice_ssa(%v, %v, true) = %v, want %v\n", a, b, got, want)
|
||||
}
|
||||
if want, got := byte(7), slice_ssa(a, b, false)[0]; got != want {
|
||||
fmt.Printf("slice_ssa(%v, %v, false) = %v, want %v\n", a, b, got, want)
|
||||
failed = true
|
||||
t.Errorf("slice_ssa(%v, %v, false) = %v, want %v\n", a, b, got, want)
|
||||
}
|
||||
}
|
||||
|
||||
|
|
@ -116,28 +108,21 @@ func interface_ssa(a, b interface{}, x bool) interface{} {
|
|||
return s
|
||||
}
|
||||
|
||||
func testInterface() {
|
||||
func testInterface(t *testing.T) {
|
||||
a := interface{}(3)
|
||||
b := interface{}(4)
|
||||
if want, got := 3, interface_ssa(a, b, true).(int); got != want {
|
||||
fmt.Printf("interface_ssa(%v, %v, true) = %v, want %v\n", a, b, got, want)
|
||||
failed = true
|
||||
t.Errorf("interface_ssa(%v, %v, true) = %v, want %v\n", a, b, got, want)
|
||||
}
|
||||
if want, got := 4, interface_ssa(a, b, false).(int); got != want {
|
||||
fmt.Printf("interface_ssa(%v, %v, false) = %v, want %v\n", a, b, got, want)
|
||||
failed = true
|
||||
t.Errorf("interface_ssa(%v, %v, false) = %v, want %v\n", a, b, got, want)
|
||||
}
|
||||
}
|
||||
|
||||
var failed = false
|
||||
|
||||
func main() {
|
||||
testString()
|
||||
testSlice()
|
||||
testInterface()
|
||||
testComplex64()
|
||||
testComplex128()
|
||||
if failed {
|
||||
panic("failed")
|
||||
}
|
||||
func TestCompound(t *testing.T) {
|
||||
testString(t)
|
||||
testSlice(t)
|
||||
testInterface(t)
|
||||
testComplex64(t)
|
||||
testComplex128(t)
|
||||
}
|
||||
|
|
@ -1,5 +1,3 @@
|
|||
// run
|
||||
|
||||
// Copyright 2015 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.
|
||||
|
|
@ -8,6 +6,8 @@
|
|||
|
||||
package main
|
||||
|
||||
import "testing"
|
||||
|
||||
// nor_ssa calculates NOR(a, b).
|
||||
// It is implemented in a way that generates
|
||||
// phi control values.
|
||||
|
|
@ -25,7 +25,7 @@ func nor_ssa(a, b bool) bool {
|
|||
return true
|
||||
}
|
||||
|
||||
func testPhiControl() {
|
||||
func testPhiControl(t *testing.T) {
|
||||
tests := [...][3]bool{ // a, b, want
|
||||
{false, false, true},
|
||||
{true, false, false},
|
||||
|
|
@ -37,8 +37,7 @@ func testPhiControl() {
|
|||
got := nor_ssa(a, b)
|
||||
want := test[2]
|
||||
if want != got {
|
||||
print("nor(", a, ", ", b, ")=", want, " got ", got, "\n")
|
||||
failed = true
|
||||
t.Errorf("nor(%t, %t)=%t got %t", a, b, want, got)
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
@ -50,10 +49,9 @@ func emptyRange_ssa(b []byte) bool {
|
|||
return true
|
||||
}
|
||||
|
||||
func testEmptyRange() {
|
||||
func testEmptyRange(t *testing.T) {
|
||||
if !emptyRange_ssa([]byte{}) {
|
||||
println("emptyRange_ssa([]byte{})=false, want true")
|
||||
failed = true
|
||||
t.Errorf("emptyRange_ssa([]byte{})=false, want true")
|
||||
}
|
||||
}
|
||||
|
||||
|
|
@ -97,20 +95,18 @@ func fallthrough_ssa(a int) int {
|
|||
|
||||
}
|
||||
|
||||
func testFallthrough() {
|
||||
func testFallthrough(t *testing.T) {
|
||||
for i := 0; i < 6; i++ {
|
||||
if got := fallthrough_ssa(i); got != i {
|
||||
println("fallthrough_ssa(i) =", got, "wanted", i)
|
||||
failed = true
|
||||
t.Errorf("fallthrough_ssa(i) = %d, wanted %d", got, i)
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
func testSwitch() {
|
||||
func testSwitch(t *testing.T) {
|
||||
for i := 0; i < 6; i++ {
|
||||
if got := switch_ssa(i); got != i {
|
||||
println("switch_ssa(i) =", got, "wanted", i)
|
||||
failed = true
|
||||
t.Errorf("switch_ssa(i) = %d, wanted %d", got, i)
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
@ -135,26 +131,19 @@ func flagOverwrite_ssa(s *junk, c int) int {
|
|||
return 3
|
||||
}
|
||||
|
||||
func testFlagOverwrite() {
|
||||
func testFlagOverwrite(t *testing.T) {
|
||||
j := junk{}
|
||||
if got := flagOverwrite_ssa(&j, ' '); got != 3 {
|
||||
println("flagOverwrite_ssa =", got, "wanted 3")
|
||||
failed = true
|
||||
t.Errorf("flagOverwrite_ssa = %d, wanted 3", got)
|
||||
}
|
||||
}
|
||||
|
||||
var failed = false
|
||||
func TestCtl(t *testing.T) {
|
||||
testPhiControl(t)
|
||||
testEmptyRange(t)
|
||||
|
||||
func main() {
|
||||
testPhiControl()
|
||||
testEmptyRange()
|
||||
testSwitch(t)
|
||||
testFallthrough(t)
|
||||
|
||||
testSwitch()
|
||||
testFallthrough()
|
||||
|
||||
testFlagOverwrite()
|
||||
|
||||
if failed {
|
||||
panic("failed")
|
||||
}
|
||||
testFlagOverwrite(t)
|
||||
}
|
||||
|
|
@ -1,5 +1,3 @@
|
|||
// compile
|
||||
|
||||
// Copyright 2015 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.
|
||||
|
|
@ -7,7 +5,9 @@
|
|||
// Test that a defer in a function with no return
|
||||
// statement will compile correctly.
|
||||
|
||||
package foo
|
||||
package main
|
||||
|
||||
import "testing"
|
||||
|
||||
func deferNoReturn_ssa() {
|
||||
defer func() { println("returned") }()
|
||||
|
|
@ -15,3 +15,7 @@ func deferNoReturn_ssa() {
|
|||
println("loop")
|
||||
}
|
||||
}
|
||||
|
||||
func TestDeferNoReturn(t *testing.T) {
|
||||
// This is a compile-time test, no runtime testing required.
|
||||
}
|
||||
|
|
@ -1,5 +1,3 @@
|
|||
// run
|
||||
|
||||
// Copyright 2015 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.
|
||||
|
|
@ -8,14 +6,13 @@
|
|||
|
||||
package main
|
||||
|
||||
import "fmt"
|
||||
import "testing"
|
||||
|
||||
// testLoadStoreOrder tests for reordering of stores/loads.
|
||||
func testLoadStoreOrder() {
|
||||
func testLoadStoreOrder(t *testing.T) {
|
||||
z := uint32(1000)
|
||||
if testLoadStoreOrder_ssa(&z, 100) == 0 {
|
||||
println("testLoadStoreOrder failed")
|
||||
failed = true
|
||||
t.Errorf("testLoadStoreOrder failed")
|
||||
}
|
||||
}
|
||||
|
||||
|
|
@ -29,13 +26,12 @@ func testLoadStoreOrder_ssa(z *uint32, prec uint) int {
|
|||
return 0
|
||||
}
|
||||
|
||||
func testStoreSize() {
|
||||
func testStoreSize(t *testing.T) {
|
||||
a := [4]uint16{11, 22, 33, 44}
|
||||
testStoreSize_ssa(&a[0], &a[2], 77)
|
||||
want := [4]uint16{77, 22, 33, 44}
|
||||
if a != want {
|
||||
fmt.Println("testStoreSize failed. want =", want, ", got =", a)
|
||||
failed = true
|
||||
t.Errorf("testStoreSize failed. want = %d, got = %d", want, a)
|
||||
}
|
||||
}
|
||||
|
||||
|
|
@ -55,8 +51,6 @@ func testStoreSize_ssa(p *uint16, q *uint16, v uint32) {
|
|||
}
|
||||
}
|
||||
|
||||
var failed = false
|
||||
|
||||
//go:noinline
|
||||
func testExtStore_ssa(p *byte, b bool) int {
|
||||
x := *p
|
||||
|
|
@ -67,12 +61,11 @@ func testExtStore_ssa(p *byte, b bool) int {
|
|||
return 0
|
||||
}
|
||||
|
||||
func testExtStore() {
|
||||
func testExtStore(t *testing.T) {
|
||||
const start = 8
|
||||
var b byte = start
|
||||
if got := testExtStore_ssa(&b, true); got != start {
|
||||
fmt.Println("testExtStore failed. want =", start, ", got =", got)
|
||||
failed = true
|
||||
t.Errorf("testExtStore failed. want = %d, got = %d", start, got)
|
||||
}
|
||||
}
|
||||
|
||||
|
|
@ -95,10 +88,9 @@ func testDeadStorePanic_ssa(a int) (r int) {
|
|||
return
|
||||
}
|
||||
|
||||
func testDeadStorePanic() {
|
||||
func testDeadStorePanic(t *testing.T) {
|
||||
if want, got := 2, testDeadStorePanic_ssa(1); want != got {
|
||||
fmt.Println("testDeadStorePanic failed. want =", want, ", got =", got)
|
||||
failed = true
|
||||
t.Errorf("testDeadStorePanic failed. want = %d, got = %d", want, got)
|
||||
}
|
||||
}
|
||||
|
||||
|
|
@ -144,7 +136,7 @@ func loadHitStoreU32(x uint32, p *uint32) uint64 {
|
|||
return uint64(*p) // load and cast
|
||||
}
|
||||
|
||||
func testLoadHitStore() {
|
||||
func testLoadHitStore(t *testing.T) {
|
||||
// Test that sign/zero extensions are kept when a load-hit-store
|
||||
// is replaced by a register-register move.
|
||||
{
|
||||
|
|
@ -153,8 +145,7 @@ func testLoadHitStore() {
|
|||
got := loadHitStore8(in, &p)
|
||||
want := int32(in * in)
|
||||
if got != want {
|
||||
fmt.Println("testLoadHitStore (int8) failed. want =", want, ", got =", got)
|
||||
failed = true
|
||||
t.Errorf("testLoadHitStore (int8) failed. want = %d, got = %d", want, got)
|
||||
}
|
||||
}
|
||||
{
|
||||
|
|
@ -163,8 +154,7 @@ func testLoadHitStore() {
|
|||
got := loadHitStoreU8(in, &p)
|
||||
want := uint32(in * in)
|
||||
if got != want {
|
||||
fmt.Println("testLoadHitStore (uint8) failed. want =", want, ", got =", got)
|
||||
failed = true
|
||||
t.Errorf("testLoadHitStore (uint8) failed. want = %d, got = %d", want, got)
|
||||
}
|
||||
}
|
||||
{
|
||||
|
|
@ -173,8 +163,7 @@ func testLoadHitStore() {
|
|||
got := loadHitStore16(in, &p)
|
||||
want := int32(in * in)
|
||||
if got != want {
|
||||
fmt.Println("testLoadHitStore (int16) failed. want =", want, ", got =", got)
|
||||
failed = true
|
||||
t.Errorf("testLoadHitStore (int16) failed. want = %d, got = %d", want, got)
|
||||
}
|
||||
}
|
||||
{
|
||||
|
|
@ -183,8 +172,7 @@ func testLoadHitStore() {
|
|||
got := loadHitStoreU16(in, &p)
|
||||
want := uint32(in * in)
|
||||
if got != want {
|
||||
fmt.Println("testLoadHitStore (uint16) failed. want =", want, ", got =", got)
|
||||
failed = true
|
||||
t.Errorf("testLoadHitStore (uint16) failed. want = %d, got = %d", want, got)
|
||||
}
|
||||
}
|
||||
{
|
||||
|
|
@ -193,8 +181,7 @@ func testLoadHitStore() {
|
|||
got := loadHitStore32(in, &p)
|
||||
want := int64(in * in)
|
||||
if got != want {
|
||||
fmt.Println("testLoadHitStore (int32) failed. want =", want, ", got =", got)
|
||||
failed = true
|
||||
t.Errorf("testLoadHitStore (int32) failed. want = %d, got = %d", want, got)
|
||||
}
|
||||
}
|
||||
{
|
||||
|
|
@ -203,21 +190,15 @@ func testLoadHitStore() {
|
|||
got := loadHitStoreU32(in, &p)
|
||||
want := uint64(in * in)
|
||||
if got != want {
|
||||
fmt.Println("testLoadHitStore (uint32) failed. want =", want, ", got =", got)
|
||||
failed = true
|
||||
t.Errorf("testLoadHitStore (uint32) failed. want = %d, got = %d", want, got)
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
func main() {
|
||||
|
||||
testLoadStoreOrder()
|
||||
testStoreSize()
|
||||
testExtStore()
|
||||
testDeadStorePanic()
|
||||
testLoadHitStore()
|
||||
|
||||
if failed {
|
||||
panic("failed")
|
||||
}
|
||||
func TestLoadStore(t *testing.T) {
|
||||
testLoadStoreOrder(t)
|
||||
testStoreSize(t)
|
||||
testExtStore(t)
|
||||
testDeadStorePanic(t)
|
||||
testLoadHitStore(t)
|
||||
}
|
||||
|
|
@ -2,19 +2,17 @@
|
|||
// Use of this source code is governed by a BSD-style
|
||||
// license that can be found in the LICENSE file.
|
||||
|
||||
// map_ssa.go tests map operations.
|
||||
// map.go tests map operations.
|
||||
package main
|
||||
|
||||
import "fmt"
|
||||
|
||||
var failed = false
|
||||
import "testing"
|
||||
|
||||
//go:noinline
|
||||
func lenMap_ssa(v map[int]int) int {
|
||||
return len(v)
|
||||
}
|
||||
|
||||
func testLenMap() {
|
||||
func testLenMap(t *testing.T) {
|
||||
|
||||
v := make(map[int]int)
|
||||
v[0] = 0
|
||||
|
|
@ -22,24 +20,18 @@ func testLenMap() {
|
|||
v[2] = 0
|
||||
|
||||
if want, got := 3, lenMap_ssa(v); got != want {
|
||||
fmt.Printf("expected len(map) = %d, got %d", want, got)
|
||||
failed = true
|
||||
t.Errorf("expected len(map) = %d, got %d", want, got)
|
||||
}
|
||||
}
|
||||
|
||||
func testLenNilMap() {
|
||||
func testLenNilMap(t *testing.T) {
|
||||
|
||||
var v map[int]int
|
||||
if want, got := 0, lenMap_ssa(v); got != want {
|
||||
fmt.Printf("expected len(nil) = %d, got %d", want, got)
|
||||
failed = true
|
||||
t.Errorf("expected len(nil) = %d, got %d", want, got)
|
||||
}
|
||||
}
|
||||
func main() {
|
||||
testLenMap()
|
||||
testLenNilMap()
|
||||
|
||||
if failed {
|
||||
panic("failed")
|
||||
}
|
||||
func TestMap(t *testing.T) {
|
||||
testLenMap(t)
|
||||
testLenNilMap(t)
|
||||
}
|
||||
|
|
@ -0,0 +1,9 @@
|
|||
// Copyright 2018 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 exists just to convince vet not to check this directory.
|
||||
// (vet will not check a directory with two different packages in it.)
|
||||
// TODO: remove this hack & add failing tests to the whitelist.
|
||||
|
||||
package foo
|
||||
|
|
@ -1,5 +1,3 @@
|
|||
// run
|
||||
|
||||
// Copyright 2015 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.
|
||||
|
|
@ -8,6 +6,8 @@
|
|||
|
||||
package main
|
||||
|
||||
import "testing"
|
||||
|
||||
func phiOverwrite_ssa() int {
|
||||
var n int
|
||||
for i := 0; i < 10; i++ {
|
||||
|
|
@ -19,12 +19,11 @@ func phiOverwrite_ssa() int {
|
|||
return n
|
||||
}
|
||||
|
||||
func phiOverwrite() {
|
||||
func phiOverwrite(t *testing.T) {
|
||||
want := 5
|
||||
got := phiOverwrite_ssa()
|
||||
if got != want {
|
||||
println("phiOverwrite_ssa()=", want, ", got", got)
|
||||
failed = true
|
||||
t.Errorf("phiOverwrite_ssa()= %d, got %d", want, got)
|
||||
}
|
||||
}
|
||||
|
||||
|
|
@ -37,21 +36,15 @@ func phiOverwriteBig_ssa() int {
|
|||
return a*1 + b*2 + c*3 + d*4 + e*5 + f*6 + g*7 + h*8 + i*9 + j*10 + k*11 + l*12 + m*13 + n*14 + o*15 + p*16 + q*17 + r*18 + s*19 + t*20 + u*21 + v*22 + w*23 + x*24 + y*25 + z*26
|
||||
}
|
||||
|
||||
func phiOverwriteBig() {
|
||||
func phiOverwriteBig(t *testing.T) {
|
||||
want := 1
|
||||
got := phiOverwriteBig_ssa()
|
||||
if got != want {
|
||||
println("phiOverwriteBig_ssa()=", want, ", got", got)
|
||||
failed = true
|
||||
t.Errorf("phiOverwriteBig_ssa()= %d, got %d", want, got)
|
||||
}
|
||||
}
|
||||
|
||||
var failed = false
|
||||
|
||||
func main() {
|
||||
phiOverwrite()
|
||||
phiOverwriteBig()
|
||||
if failed {
|
||||
panic("failed")
|
||||
}
|
||||
func TestRegalloc(t *testing.T) {
|
||||
phiOverwrite(t)
|
||||
phiOverwriteBig(t)
|
||||
}
|
||||
|
|
@ -5,7 +5,7 @@
|
|||
// string_ssa.go tests string operations.
|
||||
package main
|
||||
|
||||
var failed = false
|
||||
import "testing"
|
||||
|
||||
//go:noinline
|
||||
func testStringSlice1_ssa(a string, i, j int) string {
|
||||
|
|
@ -22,7 +22,7 @@ func testStringSlice12_ssa(a string, i, j int) string {
|
|||
return a[i:j]
|
||||
}
|
||||
|
||||
func testStringSlice() {
|
||||
func testStringSlice(t *testing.T) {
|
||||
tests := [...]struct {
|
||||
fn func(string, int, int) string
|
||||
s string
|
||||
|
|
@ -44,10 +44,9 @@ func testStringSlice() {
|
|||
{testStringSlice12_ssa, "", 0, 0, ""},
|
||||
}
|
||||
|
||||
for i, t := range tests {
|
||||
if got := t.fn(t.s, t.low, t.high); t.want != got {
|
||||
println("#", i, " ", t.s, "[", t.low, ":", t.high, "] = ", got, " want ", t.want)
|
||||
failed = true
|
||||
for i, test := range tests {
|
||||
if got := test.fn(test.s, test.low, test.high); test.want != got {
|
||||
t.Errorf("#%d %s[%d,%d] = %s, want %s", i, test.s, test.low, test.high, got, test.want)
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
@ -61,26 +60,23 @@ func (p *prefix) slice_ssa() {
|
|||
}
|
||||
|
||||
//go:noinline
|
||||
func testStructSlice() {
|
||||
func testStructSlice(t *testing.T) {
|
||||
p := &prefix{"prefix"}
|
||||
p.slice_ssa()
|
||||
if "pre" != p.prefix {
|
||||
println("wrong field slice: wanted %s got %s", "pre", p.prefix)
|
||||
failed = true
|
||||
t.Errorf("wrong field slice: wanted %s got %s", "pre", p.prefix)
|
||||
}
|
||||
}
|
||||
|
||||
func testStringSlicePanic() {
|
||||
func testStringSlicePanic(t *testing.T) {
|
||||
defer func() {
|
||||
if r := recover(); r != nil {
|
||||
println("panicked as expected")
|
||||
//println("panicked as expected")
|
||||
}
|
||||
}()
|
||||
|
||||
str := "foobar"
|
||||
println("got ", testStringSlice12_ssa(str, 3, 9))
|
||||
println("expected to panic, but didn't")
|
||||
failed = true
|
||||
t.Errorf("got %s and expected to panic, but didn't", testStringSlice12_ssa(str, 3, 9))
|
||||
}
|
||||
|
||||
const _Accuracy_name = "BelowExactAbove"
|
||||
|
|
@ -92,7 +88,7 @@ func testSmallIndexType_ssa(i int) string {
|
|||
return _Accuracy_name[_Accuracy_index[i]:_Accuracy_index[i+1]]
|
||||
}
|
||||
|
||||
func testSmallIndexType() {
|
||||
func testSmallIndexType(t *testing.T) {
|
||||
tests := []struct {
|
||||
i int
|
||||
want string
|
||||
|
|
@ -102,10 +98,9 @@ func testSmallIndexType() {
|
|||
{2, "Above"},
|
||||
}
|
||||
|
||||
for i, t := range tests {
|
||||
if got := testSmallIndexType_ssa(t.i); got != t.want {
|
||||
println("#", i, "got ", got, ", wanted", t.want)
|
||||
failed = true
|
||||
for i, test := range tests {
|
||||
if got := testSmallIndexType_ssa(test.i); got != test.want {
|
||||
t.Errorf("#%d got %s wanted %s", i, got, test.want)
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
@ -120,7 +115,7 @@ func testInt64Slice_ssa(s string, i, j int64) string {
|
|||
return s[i:j]
|
||||
}
|
||||
|
||||
func testInt64Index() {
|
||||
func testInt64Index(t *testing.T) {
|
||||
tests := []struct {
|
||||
i int64
|
||||
j int64
|
||||
|
|
@ -133,42 +128,36 @@ func testInt64Index() {
|
|||
}
|
||||
|
||||
str := "BelowExactAbove"
|
||||
for i, t := range tests {
|
||||
if got := testInt64Index_ssa(str, t.i); got != t.b {
|
||||
println("#", i, "got ", got, ", wanted", t.b)
|
||||
failed = true
|
||||
for i, test := range tests {
|
||||
if got := testInt64Index_ssa(str, test.i); got != test.b {
|
||||
t.Errorf("#%d got %d wanted %d", i, got, test.b)
|
||||
}
|
||||
if got := testInt64Slice_ssa(str, t.i, t.j); got != t.s {
|
||||
println("#", i, "got ", got, ", wanted", t.s)
|
||||
failed = true
|
||||
if got := testInt64Slice_ssa(str, test.i, test.j); got != test.s {
|
||||
t.Errorf("#%d got %s wanted %s", i, got, test.s)
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
func testInt64IndexPanic() {
|
||||
func testInt64IndexPanic(t *testing.T) {
|
||||
defer func() {
|
||||
if r := recover(); r != nil {
|
||||
println("panicked as expected")
|
||||
//println("panicked as expected")
|
||||
}
|
||||
}()
|
||||
|
||||
str := "foobar"
|
||||
println("got ", testInt64Index_ssa(str, 1<<32+1))
|
||||
println("expected to panic, but didn't")
|
||||
failed = true
|
||||
t.Errorf("got %d and expected to panic, but didn't", testInt64Index_ssa(str, 1<<32+1))
|
||||
}
|
||||
|
||||
func testInt64SlicePanic() {
|
||||
func testInt64SlicePanic(t *testing.T) {
|
||||
defer func() {
|
||||
if r := recover(); r != nil {
|
||||
println("panicked as expected")
|
||||
//println("panicked as expected")
|
||||
}
|
||||
}()
|
||||
|
||||
str := "foobar"
|
||||
println("got ", testInt64Slice_ssa(str, 1<<32, 1<<32+1))
|
||||
println("expected to panic, but didn't")
|
||||
failed = true
|
||||
t.Errorf("got %s and expected to panic, but didn't", testInt64Slice_ssa(str, 1<<32, 1<<32+1))
|
||||
}
|
||||
|
||||
//go:noinline
|
||||
|
|
@ -176,7 +165,7 @@ func testStringElem_ssa(s string, i int) byte {
|
|||
return s[i]
|
||||
}
|
||||
|
||||
func testStringElem() {
|
||||
func testStringElem(t *testing.T) {
|
||||
tests := []struct {
|
||||
s string
|
||||
i int
|
||||
|
|
@ -186,10 +175,9 @@ func testStringElem() {
|
|||
{"foobar", 0, 102},
|
||||
{"foobar", 5, 114},
|
||||
}
|
||||
for _, t := range tests {
|
||||
if got := testStringElem_ssa(t.s, t.i); got != t.n {
|
||||
print("testStringElem \"", t.s, "\"[", t.i, "]=", got, ", wanted ", t.n, "\n")
|
||||
failed = true
|
||||
for _, test := range tests {
|
||||
if got := testStringElem_ssa(test.s, test.i); got != test.n {
|
||||
t.Errorf("testStringElem \"%s\"[%d] = %d, wanted %d", test.s, test.i, got, test.n)
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
@ -200,25 +188,20 @@ func testStringElemConst_ssa(i int) byte {
|
|||
return s[i]
|
||||
}
|
||||
|
||||
func testStringElemConst() {
|
||||
func testStringElemConst(t *testing.T) {
|
||||
if got := testStringElemConst_ssa(3); got != 98 {
|
||||
println("testStringElemConst=", got, ", wanted 98")
|
||||
failed = true
|
||||
t.Errorf("testStringElemConst= %d, wanted 98", got)
|
||||
}
|
||||
}
|
||||
|
||||
func main() {
|
||||
testStringSlice()
|
||||
testStringSlicePanic()
|
||||
testStructSlice()
|
||||
testSmallIndexType()
|
||||
testStringElem()
|
||||
testStringElemConst()
|
||||
testInt64Index()
|
||||
testInt64IndexPanic()
|
||||
testInt64SlicePanic()
|
||||
|
||||
if failed {
|
||||
panic("failed")
|
||||
}
|
||||
func TestString(t *testing.T) {
|
||||
testStringSlice(t)
|
||||
testStringSlicePanic(t)
|
||||
testStructSlice(t)
|
||||
testSmallIndexType(t)
|
||||
testStringElem(t)
|
||||
testStringElemConst(t)
|
||||
testInt64Index(t)
|
||||
testInt64IndexPanic(t)
|
||||
testInt64SlicePanic(t)
|
||||
}
|
||||
Loading…
Reference in New Issue