| // 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() |
| } |