if ncolons > 0 {
// slice expression
- if ncolons == 2 && (index[1] == nil || index[2] == nil) {
- // only i is optional in a[i:j:k]
- p.error(rbrack, "2nd and 3rd index must be present full slice expression")
- }
return &ast.SliceExpr{X: x, Lbrack: lbrack, Low: index[0], High: index[1], Max: index[2], Rbrack: rbrack}
}
`package p; func f() { var s []int; _ = s[] /* ERROR "expected operand" */ };`,
`package p; func f() { var s []int; _ = s[::: /* ERROR "expected ']'" */ ] };`,
`package p; func f() { var s []int; _ = s[i:j:k: /* ERROR "expected ']'" */ l] };`,
- `package p; func f() { var s []int; g(s[::] /* ERROR "index must be present" */) };`,
- `package p; func f() { var s []int; g(s[i::] /* ERROR "index must be present" */) };`,
- `package p; func f() { var s []int; g(s[i:j:] /* ERROR "index must be present" */) };`,
- `package p; func f() { var s []int; g(s[::k] /* ERROR "index must be present" */) };`,
- `package p; func f() { var s []int; g(s[:j:] /* ERROR "index must be present" */) };`,
- `package p; func f() { var s []int; g(s[i::k] /* ERROR "index must be present" */) };`,
}
func TestInvalid(t *testing.T) {