about summary refs log tree commit diff
path: root/src/test
diff options
context:
space:
mode:
Diffstat (limited to 'src/test')
-rw-r--r--src/test/compile-fail/range-1.rs5
-rw-r--r--src/test/run-pass/range-type-infer.rs28
2 files changed, 29 insertions, 4 deletions
diff --git a/src/test/compile-fail/range-1.rs b/src/test/compile-fail/range-1.rs
index 67b203bec19..a8b6e399418 100644
--- a/src/test/compile-fail/range-1.rs
+++ b/src/test/compile-fail/range-1.rs
@@ -17,10 +17,7 @@ pub fn main() {
 
     // Float => does not implement iterator.
     for i in 0f32..42f32 {}
-    //~^ ERROR `core::iter::Iterator` is not implemented for the type `core::ops::Range<f32>`
-    //~^^ ERROR
-    //~^^^ ERROR
-    // FIXME(#21528) not fulfilled obligation error should be reported once, not thrice
+    //~^ ERROR the trait `core::num::Int` is not implemented for the type `f32`
 
     // Unsized type.
     let arr: &[_] = &[1u32, 2, 3];
diff --git a/src/test/run-pass/range-type-infer.rs b/src/test/run-pass/range-type-infer.rs
new file mode 100644
index 00000000000..51945a4677d
--- /dev/null
+++ b/src/test/run-pass/range-type-infer.rs
@@ -0,0 +1,28 @@
+// Copyright 2015 The Rust Project Developers. See the COPYRIGHT
+// file at the top-level directory of this distribution and at
+// http://rust-lang.org/COPYRIGHT.
+//
+// Licensed under the Apache License, Version 2.0 <LICENSE-APACHE or
+// http://www.apache.org/licenses/LICENSE-2.0> or the MIT license
+// <LICENSE-MIT or http://opensource.org/licenses/MIT>, at your
+// option. This file may not be copied, modified, or distributed
+// except according to those terms.
+
+// Make sure the type inference for the new range expression work as
+// good as the old one. Check out issue #21672, #21595 and #21649 for
+// more details.
+
+fn main() {
+    let xs = (0..8).map(|i| i == 1u64).collect::<Vec<_>>();
+    assert_eq!(xs[1], true);
+    let xs = (0..8).map(|i| 1u64 == i).collect::<Vec<_>>();
+    assert_eq!(xs[1], true);
+    let xs: Vec<u8> = (0..10).collect();
+    assert_eq!(xs.len(), 10);
+
+    for x in 0..10 { x % 2; }
+    for x in 0..100 { x as f32; }
+
+    let array = [true, false];
+    for i in 0..1 { array[i]; }
+}