]> git.lizzy.rs Git - rust.git/commit
Make sure type inference with `a..b` as good as `range(a,b)`
authorEdward Wang <edward.yu.wang@gmail.com>
Sat, 31 Jan 2015 14:19:13 +0000 (22:19 +0800)
committerEdward Wang <edward.yu.wang@gmail.com>
Sun, 1 Feb 2015 06:08:14 +0000 (14:08 +0800)
commitcd977ee21787c38510b2a674673e022a7fd0a393
treeaa7e5f689584a74ad7b8b869ad3ac89bb40e4204
parent474b324eda10440d6568ef872a7307d38e7de95b
Make sure type inference with `a..b` as good as `range(a,b)`

The new `::ops::Range` has separated implementations for each of the
numeric types, while the old `::iter::Range` has one for type `Int`.
However, we do not take output bindings into account when selecting
traits. So it confuses `typeck` and makes the new range does not work as
good as the old one when it comes to type inference.

This patch implements `Iterator` for the new range for one type `Int`.
This limitation could be lifted, however, if we ever reconsider the
output types' role in type inference.

Closes #21595
Closes #21649
Closes #21672
src/libcore/iter.rs
src/test/run-pass/range-type-infer.rs [new file with mode: 0644]