modernc.org/gc@v1.0.1-0.20240304020402-f0dba7c97c2b/testdata/errchk/test/ken/sliceslice.go (about) 1 // run 2 3 // Copyright 2009 The Go Authors. All rights reserved. 4 // Use of this source code is governed by a BSD-style 5 // license that can be found in the LICENSE file. 6 7 // Test slicing and re-slicing. 8 9 package main 10 11 var bx []byte 12 var by []byte 13 var fx []float64 14 var fy []float64 15 var lb, hb int 16 var t int 17 18 func main() { 19 20 // width 1 (byte) 21 lb = 0 22 hb = 10 23 by = bx[lb:hb] 24 tstb() 25 by = bx[lb:10] 26 tstb() 27 by = bx[lb:] 28 tstb() 29 by = bx[:hb] 30 tstb() 31 by = bx[0:hb] 32 tstb() 33 by = bx[0:10] 34 tstb() 35 by = bx[0:] 36 tstb() 37 by = bx[:10] 38 tstb() 39 by = bx[:] 40 tstb() 41 42 lb = 2 43 hb = 10 44 by = bx[lb:hb] 45 tstb() 46 by = bx[lb:10] 47 tstb() 48 by = bx[lb:] 49 tstb() 50 by = bx[2:hb] 51 tstb() 52 by = bx[2:10] 53 tstb() 54 by = bx[2:] 55 tstb() 56 57 lb = 0 58 hb = 8 59 by = bx[lb:hb] 60 tstb() 61 by = bx[lb:8] 62 tstb() 63 by = bx[0:hb] 64 tstb() 65 by = bx[0:8] 66 tstb() 67 by = bx[:8] 68 tstb() 69 by = bx[:hb] 70 tstb() 71 72 lb = 2 73 hb = 8 74 by = bx[lb:hb] 75 tstb() 76 by = bx[lb:8] 77 tstb() 78 by = bx[2:hb] 79 tstb() 80 by = bx[2:8] 81 tstb() 82 83 // width 4 (float64) 84 lb = 0 85 hb = 10 86 fy = fx[lb:hb] 87 tstf() 88 fy = fx[lb:10] 89 tstf() 90 fy = fx[lb:] 91 tstf() 92 fy = fx[:hb] 93 tstf() 94 fy = fx[0:hb] 95 tstf() 96 fy = fx[0:10] 97 tstf() 98 fy = fx[0:] 99 tstf() 100 fy = fx[:10] 101 tstf() 102 fy = fx[:] 103 tstf() 104 105 lb = 2 106 hb = 10 107 fy = fx[lb:hb] 108 tstf() 109 fy = fx[lb:10] 110 tstf() 111 fy = fx[lb:] 112 tstf() 113 fy = fx[2:hb] 114 tstf() 115 fy = fx[2:10] 116 tstf() 117 fy = fx[2:] 118 tstf() 119 120 lb = 0 121 hb = 8 122 fy = fx[lb:hb] 123 tstf() 124 fy = fx[lb:8] 125 tstf() 126 fy = fx[:hb] 127 tstf() 128 fy = fx[0:hb] 129 tstf() 130 fy = fx[0:8] 131 tstf() 132 fy = fx[:8] 133 tstf() 134 135 lb = 2 136 hb = 8 137 fy = fx[lb:hb] 138 tstf() 139 fy = fx[lb:8] 140 tstf() 141 fy = fx[2:hb] 142 tstf() 143 fy = fx[2:8] 144 tstf() 145 } 146 147 func tstb() { 148 t++ 149 if len(by) != hb-lb { 150 println("t=", t, "lb=", lb, "hb=", hb, 151 "len=", len(by), "hb-lb=", hb-lb) 152 panic("fail") 153 } 154 if cap(by) != len(bx)-lb { 155 println("t=", t, "lb=", lb, "hb=", hb, 156 "cap=", cap(by), "len(bx)-lb=", len(bx)-lb) 157 panic("fail") 158 } 159 for i := lb; i < hb; i++ { 160 if bx[i] != by[i-lb] { 161 println("t=", t, "lb=", lb, "hb=", hb, 162 "bx[", i, "]=", bx[i], 163 "by[", i-lb, "]=", by[i-lb]) 164 panic("fail") 165 } 166 } 167 by = nil 168 } 169 170 func tstf() { 171 t++ 172 if len(fy) != hb-lb { 173 println("t=", t, "lb=", lb, "hb=", hb, 174 "len=", len(fy), "hb-lb=", hb-lb) 175 panic("fail") 176 } 177 if cap(fy) != len(fx)-lb { 178 println("t=", t, "lb=", lb, "hb=", hb, 179 "cap=", cap(fy), "len(fx)-lb=", len(fx)-lb) 180 panic("fail") 181 } 182 for i := lb; i < hb; i++ { 183 if fx[i] != fy[i-lb] { 184 println("t=", t, "lb=", lb, "hb=", hb, 185 "fx[", i, "]=", fx[i], 186 "fy[", i-lb, "]=", fy[i-lb]) 187 panic("fail") 188 } 189 } 190 fy = nil 191 } 192 193 func init() { 194 bx = make([]byte, 10) 195 for i := 0; i < len(bx); i++ { 196 bx[i] = byte(i + 20) 197 } 198 by = nil 199 200 fx = make([]float64, 10) 201 for i := 0; i < len(fx); i++ { 202 fx[i] = float64(i + 20) 203 } 204 fy = nil 205 }