]> git.proxmox.com Git - rustc.git/blame - src/test/run-pass/range.rs
Imported Upstream version 1.2.0+dfsg1
[rustc.git] / src / test / run-pass / range.rs
CommitLineData
1a4d82fc
JJ
1// Copyright 2014 The Rust Project Developers. See the COPYRIGHT
2// file at the top-level directory of this distribution and at
3// http://rust-lang.org/COPYRIGHT.
4//
5// Licensed under the Apache License, Version 2.0 <LICENSE-APACHE or
6// http://www.apache.org/licenses/LICENSE-2.0> or the MIT license
7// <LICENSE-MIT or http://opensource.org/licenses/MIT>, at your
8// option. This file may not be copied, modified, or distributed
9// except according to those terms.
10
11// Test range syntax.
12
c34b1796
AL
13
14fn foo() -> isize { 42 }
1a4d82fc 15
85aaf69f
SL
16// Test that range syntax works in return statements
17fn return_range_to() -> ::std::ops::RangeTo<i32> { return ..1; }
18fn return_full_range() -> ::std::ops::RangeFull { return ..; }
19
1a4d82fc
JJ
20pub fn main() {
21 let mut count = 0;
85aaf69f 22 for i in 0_usize..10 {
1a4d82fc
JJ
23 assert!(i >= 0 && i < 10);
24 count += i;
25 }
62682a34 26 assert_eq!(count, 45);
1a4d82fc
JJ
27
28 let mut count = 0;
85aaf69f 29 let mut range = 0_usize..10;
1a4d82fc
JJ
30 for i in range {
31 assert!(i >= 0 && i < 10);
32 count += i;
33 }
62682a34 34 assert_eq!(count, 45);
1a4d82fc
JJ
35
36 let mut count = 0;
85aaf69f 37 let mut rf = 3_usize..;
1a4d82fc
JJ
38 for i in rf.take(10) {
39 assert!(i >= 3 && i < 13);
40 count += i;
41 }
62682a34 42 assert_eq!(count, 75);
1a4d82fc 43
85aaf69f 44 let _ = 0_usize..4+4-3;
1a4d82fc
JJ
45 let _ = 0..foo();
46
85aaf69f 47 let _ = ..42_usize;
1a4d82fc
JJ
48
49 // Test we can use two different types with a common supertype.
85aaf69f 50 let x = &42;
1a4d82fc 51 {
85aaf69f 52 let y = 42;
1a4d82fc
JJ
53 let _ = x..&y;
54 }
55}