Home | History | Annotate | Download | only in test
      1 // errorcheck
      2 
      3 // Copyright 2013 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 package p
      8 
      9 var array *[10]int
     10 var slice []int
     11 var str string
     12 var i, j, k int
     13 
     14 func f() {
     15 	// check what missing arguments are allowed
     16 	_ = array[:]
     17 	_ = array[i:]
     18 	_ = array[:j]
     19 	_ = array[i:j]
     20 	_ = array[::] // ERROR "middle index required in 3-index slice" "final index required in 3-index slice"
     21 	_ = array[i::] // ERROR "middle index required in 3-index slice" "final index required in 3-index slice"
     22 	_ = array[:j:] // ERROR "final index required in 3-index slice"
     23 	_ = array[i:j:] // ERROR "final index required in 3-index slice"
     24 	_ = array[::k] // ERROR "middle index required in 3-index slice"
     25 	_ = array[i::k] // ERROR "middle index required in 3-index slice"
     26 	_ = array[:j:k]
     27 	_ = array[i:j:k]
     28 	
     29 	_ = slice[:]
     30 	_ = slice[i:]
     31 	_ = slice[:j]
     32 	_ = slice[i:j]
     33 	_ = slice[::] // ERROR "middle index required in 3-index slice" "final index required in 3-index slice"
     34 	_ = slice[i::] // ERROR "middle index required in 3-index slice" "final index required in 3-index slice"
     35 	_ = slice[:j:] // ERROR "final index required in 3-index slice"
     36 	_ = slice[i:j:] // ERROR "final index required in 3-index slice"
     37 	_ = slice[::k] // ERROR "middle index required in 3-index slice"
     38 	_ = slice[i::k] // ERROR "middle index required in 3-index slice"
     39 	_ = slice[:j:k]
     40 	_ = slice[i:j:k]
     41 	
     42 	_ = str[:]
     43 	_ = str[i:]
     44 	_ = str[:j]
     45 	_ = str[i:j]
     46 	_ = str[::] // ERROR "3-index slice of string" "middle index required in 3-index slice" "final index required in 3-index slice"
     47 	_ = str[i::] // ERROR "3-index slice of string" "middle index required in 3-index slice" "final index required in 3-index slice"
     48 	_ = str[:j:] // ERROR "3-index slice of string" "final index required in 3-index slice"
     49 	_ = str[i:j:] // ERROR "3-index slice of string" "final index required in 3-index slice"
     50 	_ = str[::k] // ERROR "3-index slice of string" "middle index required in 3-index slice"
     51 	_ = str[i::k] // ERROR "3-index slice of string" "middle index required in 3-index slice"
     52 	_ = str[:j:k] // ERROR "3-index slice of string"
     53 	_ = str[i:j:k] // ERROR "3-index slice of string"
     54 
     55 	// check invalid indices
     56 	_ = array[1:2]
     57 	_ = array[2:1] // ERROR "invalid slice index|inverted slice"
     58 	_ = array[2:2]
     59 	_ = array[i:1]
     60 	_ = array[1:j]
     61 	_ = array[1:2:3]
     62 	_ = array[1:3:2] // ERROR "invalid slice index|inverted slice"
     63 	_ = array[2:1:3] // ERROR "invalid slice index|inverted slice"
     64 	_ = array[2:3:1] // ERROR "invalid slice index|inverted slice"
     65 	_ = array[3:1:2] // ERROR "invalid slice index|inverted slice"
     66 	_ = array[3:2:1] // ERROR "invalid slice index|inverted slice"
     67 	_ = array[i:1:2]
     68 	_ = array[i:2:1] // ERROR "invalid slice index|inverted slice"
     69 	_ = array[1:j:2]
     70 	_ = array[2:j:1] // ERROR "invalid slice index"
     71 	_ = array[1:2:k]
     72 	_ = array[2:1:k] // ERROR "invalid slice index|inverted slice"
     73 	
     74 	_ = slice[1:2]
     75 	_ = slice[2:1] // ERROR "invalid slice index|inverted slice"
     76 	_ = slice[2:2]
     77 	_ = slice[i:1]
     78 	_ = slice[1:j]
     79 	_ = slice[1:2:3]
     80 	_ = slice[1:3:2] // ERROR "invalid slice index|inverted slice"
     81 	_ = slice[2:1:3] // ERROR "invalid slice index|inverted slice"
     82 	_ = slice[2:3:1] // ERROR "invalid slice index|inverted slice"
     83 	_ = slice[3:1:2] // ERROR "invalid slice index|inverted slice"
     84 	_ = slice[3:2:1] // ERROR "invalid slice index|inverted slice"
     85 	_ = slice[i:1:2]
     86 	_ = slice[i:2:1] // ERROR "invalid slice index|inverted slice"
     87 	_ = slice[1:j:2]
     88 	_ = slice[2:j:1] // ERROR "invalid slice index"
     89 	_ = slice[1:2:k]
     90 	_ = slice[2:1:k] // ERROR "invalid slice index|inverted slice"
     91 	
     92 	_ = str[1:2]
     93 	_ = str[2:1] // ERROR "invalid slice index|inverted slice"
     94 	_ = str[2:2]
     95 	_ = str[i:1]
     96 	_ = str[1:j]
     97 
     98 	// check out of bounds indices on array
     99 	_ = array[11:11] // ERROR "out of bounds"
    100 	_ = array[11:12] // ERROR "out of bounds"
    101 	_ = array[11:] // ERROR "out of bounds"
    102 	_ = array[:11] // ERROR "out of bounds"
    103 	_ = array[1:11] // ERROR "out of bounds"
    104 	_ = array[1:11:12] // ERROR "out of bounds"
    105 	_ = array[1:2:11] // ERROR "out of bounds"
    106 	_ = array[1:11:3] // ERROR "out of bounds|invalid slice index"
    107 	_ = array[11:2:3] // ERROR "out of bounds|inverted slice|invalid slice index"
    108 	_ = array[11:12:13] // ERROR "out of bounds"
    109 
    110 	// slice bounds not checked
    111 	_ = slice[11:11]
    112 	_ = slice[11:12]
    113 	_ = slice[11:]
    114 	_ = slice[:11]
    115 	_ = slice[1:11]
    116 	_ = slice[1:11:12]
    117 	_ = slice[1:2:11]
    118 	_ = slice[1:11:3] // ERROR "invalid slice index"
    119 	_ = slice[11:2:3] // ERROR "invalid slice index|inverted slice"
    120 	_ = slice[11:12:13]
    121 }
    122