]> Cypherpunks.ru repositories - gostls13.git/blobdiff - test/append.go
cmd/compile/internal/inline: score call sites exposed by inlines
[gostls13.git] / test / append.go
index 10ce2a613af8e679b9e8b3b035e273fdcd484be3..3d160634060c87631652f8ac1c784e0cd947ef1c 100644 (file)
@@ -1,10 +1,10 @@
-// $G $F.go && $L $F.$A && ./$A.out
+// run
 
 // Copyright 2010 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.
 
-// Semi-exhaustive test for append()
+// Semi-exhaustive test for the append predeclared function.
 
 package main
 
@@ -13,14 +13,12 @@ import (
        "reflect"
 )
 
-
 func verify(name string, result, expected interface{}) {
        if !reflect.DeepEqual(result, expected) {
                panic(name)
        }
 }
 
-
 func main() {
        for _, t := range tests {
                verify(t.name, t.result, t.expected)
@@ -30,6 +28,10 @@ func main() {
        verifyType()
 }
 
+var (
+       zero int = 0
+       one  int = 1
+)
 
 var tests = []struct {
        name             string
@@ -49,7 +51,6 @@ var tests = []struct {
        {"bool i", append([]bool{true, false, true}, []bool{true}...), []bool{true, false, true, true}},
        {"bool j", append([]bool{true, false, true}, []bool{true, true, true}...), []bool{true, false, true, true, true, true}},
 
-
        {"byte a", append([]byte{}), []byte{}},
        {"byte b", append([]byte{}, 0), []byte{0}},
        {"byte c", append([]byte{}, 0, 1, 2, 3), []byte{0, 1, 2, 3}},
@@ -84,7 +85,6 @@ var tests = []struct {
        {"int16 i", append([]int16{0, 1, 2}, []int16{3}...), []int16{0, 1, 2, 3}},
        {"int16 j", append([]int16{0, 1, 2}, []int16{3, 4, 5}...), []int16{0, 1, 2, 3, 4, 5}},
 
-
        {"uint32 a", append([]uint32{}), []uint32{}},
        {"uint32 b", append([]uint32{}, 0), []uint32{0}},
        {"uint32 c", append([]uint32{}, 0, 1, 2, 3), []uint32{0, 1, 2, 3}},
@@ -99,7 +99,6 @@ var tests = []struct {
        {"uint32 i", append([]uint32{0, 1, 2}, []uint32{3}...), []uint32{0, 1, 2, 3}},
        {"uint32 j", append([]uint32{0, 1, 2}, []uint32{3, 4, 5}...), []uint32{0, 1, 2, 3, 4, 5}},
 
-
        {"float64 a", append([]float64{}), []float64{}},
        {"float64 b", append([]float64{}, 0), []float64{0}},
        {"float64 c", append([]float64{}, 0, 1, 2, 3), []float64{0, 1, 2, 3}},
@@ -114,7 +113,6 @@ var tests = []struct {
        {"float64 i", append([]float64{0, 1, 2}, []float64{3}...), []float64{0, 1, 2, 3}},
        {"float64 j", append([]float64{0, 1, 2}, []float64{3, 4, 5}...), []float64{0, 1, 2, 3, 4, 5}},
 
-
        {"complex128 a", append([]complex128{}), []complex128{}},
        {"complex128 b", append([]complex128{}, 0), []complex128{0}},
        {"complex128 c", append([]complex128{}, 0, 1, 2, 3), []complex128{0, 1, 2, 3}},
@@ -129,7 +127,6 @@ var tests = []struct {
        {"complex128 i", append([]complex128{0, 1, 2}, []complex128{3}...), []complex128{0, 1, 2, 3}},
        {"complex128 j", append([]complex128{0, 1, 2}, []complex128{3, 4, 5}...), []complex128{0, 1, 2, 3, 4, 5}},
 
-
        {"string a", append([]string{}), []string{}},
        {"string b", append([]string{}, "0"), []string{"0"}},
        {"string c", append([]string{}, "0", "1", "2", "3"), []string{"0", "1", "2", "3"}},
@@ -143,8 +140,19 @@ var tests = []struct {
 
        {"string i", append([]string{"0", "1", "2"}, []string{"3"}...), []string{"0", "1", "2", "3"}},
        {"string j", append([]string{"0", "1", "2"}, []string{"3", "4", "5"}...), []string{"0", "1", "2", "3", "4", "5"}},
-}
 
+       {"make a", append([]string{}, make([]string, 0)...), []string{}},
+       {"make b", append([]string(nil), make([]string, 0)...), []string(nil)},
+
+       {"make c", append([]struct{}{}, make([]struct{}, 0)...), []struct{}{}},
+       {"make d", append([]struct{}{}, make([]struct{}, 2)...), make([]struct{}, 2)},
+
+       {"make e", append([]int{0, 1}, make([]int, 0)...), []int{0, 1}},
+       {"make f", append([]int{0, 1}, make([]int, 2)...), []int{0, 1, 0, 0}},
+
+       {"make g", append([]*int{&zero, &one}, make([]*int, 0)...), []*int{&zero, &one}},
+       {"make h", append([]*int{&zero, &one}, make([]*int, 2)...), []*int{&zero, &one, nil, nil}},
+}
 
 func verifyStruct() {
        type T struct {
@@ -185,7 +193,6 @@ func verifyStruct() {
        verify("struct m", append(s, e...), r)
 }
 
-
 func verifyInterface() {
        type T interface{}
        type S []T