| // run | |
| // Copyright 2023 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. | |
| // Test the 'for range' construct ranging over integers. | |
| package main | |
| func testint1() { | |
| bad := false | |
| j := 0 | |
| for i := range int(4) { | |
| if i != j { | |
| println("range var", i, "want", j) | |
| bad = true | |
| } | |
| j++ | |
| } | |
| if j != 4 { | |
| println("wrong count ranging over 4:", j) | |
| bad = true | |
| } | |
| if bad { | |
| panic("testint1") | |
| } | |
| } | |
| func testint2() { | |
| bad := false | |
| j := 0 | |
| for i := range 4 { | |
| if i != j { | |
| println("range var", i, "want", j) | |
| bad = true | |
| } | |
| j++ | |
| } | |
| if j != 4 { | |
| println("wrong count ranging over 4:", j) | |
| bad = true | |
| } | |
| if bad { | |
| panic("testint2") | |
| } | |
| } | |
| func testint3() { | |
| bad := false | |
| type MyInt int | |
| j := MyInt(0) | |
| for i := range MyInt(4) { | |
| if i != j { | |
| println("range var", i, "want", j) | |
| bad = true | |
| } | |
| j++ | |
| } | |
| if j != 4 { | |
| println("wrong count ranging over 4:", j) | |
| bad = true | |
| } | |
| if bad { | |
| panic("testint3") | |
| } | |
| } | |
| // Issue #63378. | |
| func testint4() { | |
| for i := range -1 { | |
| _ = i | |
| panic("must not be executed") | |
| } | |
| } | |
| // Issue #64471. | |
| func testint5() { | |
| for i := range 'a' { | |
| var _ *rune = &i // ensure i has type rune | |
| } | |
| } | |
| func main() { | |
| testint1() | |
| testint2() | |
| testint3() | |
| testint4() | |
| testint5() | |
| } |