Permalink
5 comments
on commit
sign in to comment.
Browse files
librustc: Stop desugaring `for` expressions and translate them directly.
This makes edge cases in which the `Iterator` trait was not in scope
and/or `Option` or its variants were not in scope work properly.
This breaks code that looks like:
struct MyStruct { ... }
impl MyStruct {
fn next(&mut self) -> Option<int> { ... }
}
for x in MyStruct { ... } { ... }
Change ad-hoc `next` methods like the above to implementations of the
`Iterator` trait. For example:
impl Iterator<int> for MyStruct {
fn next(&mut self) -> Option<int> { ... }
}
Closes #15392.
[breaking-change]- Loading branch information...
Showing
with
614 additions
and 163 deletions.
- +4 −1 src/libcore/char.rs
- +6 −2 src/libcore/fmt/float.rs
- +6 −2 src/libcore/fmt/num.rs
- +1 −0 src/libcore/iter.rs
- +6 −1 src/libcore/option.rs
- +4 −1 src/libcore/ptr.rs
- +5 −2 src/libcore/str.rs
- +4 −4 src/libcoretest/iter.rs
- +6 −0 src/librustc/middle/borrowck/check_loans.rs
- +6 −1 src/librustc/middle/borrowck/mod.rs
- +39 −2 src/librustc/middle/cfg/construct.rs
- +4 −0 src/librustc/middle/check_loop.rs
- +18 −0 src/librustc/middle/check_match.rs
- +4 −4 src/librustc/middle/dead.rs
- +12 −2 src/librustc/middle/expr_use_visitor.rs
- +2 −0 src/librustc/middle/lang_items.rs
- +52 −14 src/librustc/middle/liveness.rs
- +3 −4 src/librustc/middle/mem_categorization.rs
- +2 −2 src/librustc/middle/reachable.rs
- +11 −1 src/librustc/middle/region.rs
- +36 −1 src/librustc/middle/resolve.rs
- +25 −0 src/librustc/middle/trans/_match.rs
- +130 −0 src/librustc/middle/trans/controlflow.rs
- +18 −3 src/librustc/middle/trans/debuginfo.rs
- +7 −0 src/librustc/middle/trans/expr.rs
- +6 −4 src/librustc/middle/ty.rs
- +5 −1 src/librustc/middle/typeck/check/_match.rs
- +89 −2 src/librustc/middle/typeck/check/mod.rs
- +16 −0 src/librustc/middle/typeck/check/regionck.rs
- +2 −1 src/librustc/middle/typeck/check/vtable.rs
- +2 −2 src/librustc/middle/typeck/coherence.rs
- +1 −1 src/librustc/util/common.rs
- +2 −1 src/librustc_back/svh.rs
- +4 −1 src/libstd/io/tempfile.rs
- +7 −97 src/libsyntax/ext/expand.rs
- +1 −0 src/libunicode/decompose.rs
- +4 −3 src/test/bench/shootout-meteor.rs
- +31 −0 src/test/compile-fail/for-loop-bogosity.rs
- +6 −1 src/test/compile-fail/issue-15167.rs
- +2 −2 src/test/compile-fail/vec-mut-iter-borrow.rs
- +1 −0 src/test/debuginfo/lexical-scope-in-for-loop.rs
- +24 −0 src/test/run-pass/for-loop-goofiness.rs
Oops, something went wrong.
This comment has been minimized.
bors repliedJul 25, 2014
saw approval from pnkfelix
at pcwalton@caa564b
This comment has been minimized.
bors repliedJul 25, 2014
merging pcwalton/rust/dedesugar-for = caa564b into auto
This comment has been minimized.
bors repliedJul 25, 2014
pcwalton/rust/dedesugar-for = caa564b merged ok, testing candidate = b9035c2
This comment has been minimized.
bors repliedJul 25, 2014
all tests pass:
success: http://buildbot.rust-lang.org/builders/auto-mac-32-opt/builds/505
success: http://buildbot.rust-lang.org/builders/auto-mac-64-opt/builds/505
success: http://buildbot.rust-lang.org/builders/auto-mac-64-nopt-c/builds/504
success: http://buildbot.rust-lang.org/builders/auto-mac-64-nopt-t/builds/505
success: http://buildbot.rust-lang.org/builders/auto-linux-32-opt/builds/505
success: http://buildbot.rust-lang.org/builders/auto-linux-32-nopt-c/builds/506
success: http://buildbot.rust-lang.org/builders/auto-linux-32-nopt-t/builds/505
success: http://buildbot.rust-lang.org/builders/auto-linux-64-opt/builds/511
success: http://buildbot.rust-lang.org/builders/auto-linux-64-nopt-c/builds/506
success: http://buildbot.rust-lang.org/builders/auto-linux-64-nopt-t/builds/505
success: http://buildbot.rust-lang.org/builders/auto-linux-64-x-android-t/builds/508
success: http://buildbot.rust-lang.org/builders/auto-win-32-opt/builds/506
success: http://buildbot.rust-lang.org/builders/auto-win-32-nopt-t/builds/506
success: http://buildbot.rust-lang.org/builders/auto-win-32-nopt-c/builds/507
This comment has been minimized.
bors repliedJul 25, 2014
fast-forwarding master to auto = b9035c2