Closed
Description
RUSTC -V
rustc 0.13.0-nightly (ff61b74a7 2014-10-13 00:22:39 +0000)
OS
Mac OS X 10.8.4
Darwin hexbox 12.4.1 Darwin Kernel Version 12.4.1: Tue May 21 17:04:50 PDT 2013; root:xnu-2050.40.51~1/RELEASE_X86_64 x86_64
CODE
pub trait Promisable: Send + Sync {}
impl<T: Send + Sync> Promisable for T {}
pub fn propagate<T:Promisable + Clone, E:Promisable + Clone>(action:proc(&T) -> Result<T, E>) -> proc(Result<T, E>) -> Result<T, E> {
proc(result:Result<T, E>) {
match result {
Ok(ref t) => action(t),
Err(ref e) => Err(e.clone()),
}
}
}
TRACE
Compiling promise v0.0.1 (file:///Users/hex/projects/active/promise)
Running `rustc src/promise.rs --crate-name promise --crate-type lib -g -C metadata=3a86d92f1ae335d6 -C extra-filename=-3a86d92f1ae335d6 --out-dir /Users/hex/projects/active/promise/target --dep-info /Users/hex/projects/active/promise/target/.fingerprint/promise-3a86d92f1ae335d6/dep-lib-promise -L /Users/hex/projects/active/promise/target -L /Users/hex/projects/active/promise/target/deps`
src/promise.rs:114:3: 119:4 error: internal compiler error: cannot relate bound region: ReLateBound(501, BrAnon(0)) <= ReLateBound(501, BrAnon(0))
src/promise.rs:114 proc(result:Result<T, E>) {
src/promise.rs:115 match result {
src/promise.rs:116 Ok(ref t) => action(t),
src/promise.rs:117 Err(ref e) => Err(e.clone()),
src/promise.rs:118 }
src/promise.rs:119 }
note: the compiler hit an unexpected failure path. this is a bug.
note: we would appreciate a bug report: http://doc.rust-lang.org/complement-bugreport.html
note: run with `RUST_BACKTRACE=1` for a backtrace
task 'rustc' failed at 'Box<Any>', /Users/rustbuild/src/rust-buildbot/slave/nightly-mac/build/src/libsyntax/diagnostic.rs:113
stack backtrace:
1: 0x10d2cbd59 - rt::backtrace::imp::write::h189e19957ab9c695OLq
2: 0x10d2cf071 - failure::on_fail::h03dc2437e5a88345n2q
3: 0x10d53de95 - unwind::begin_unwind_inner::h033484cc1a8bac37Jud
4: 0x10ca3f727 - unwind::begin_unwind::h10204231053729938248
5: 0x10ca3f6c0 - unwind::begin_unwind::h10204231053729938248
6: 0x10a02c13d - driver::session::Session::span_bug::h2d1d0d9bc4580ef6n9x
7: 0x10a4d3539 - middle::typeck::infer::region_inference::RegionVarBindings<'a, 'tcx>::make_subregion::h05d061a35e69cf644I8
8: 0x10a4e440d - middle::typeck::infer::sub::Sub<'f, 'tcx>.Combine<'tcx>::regions::h8041e0c5aa9e0a28bab
9: 0x10a4e40c1 - middle::typeck::infer::sub::Sub<'f, 'tcx>.Combine<'tcx>::contraregions::heb460ecd7a98a359B9a
10: 0x10a4e6f06 - middle::typeck::infer::combine::Combine::closure_tys::h299389414609974291
11: 0x10a483c7a - middle::typeck::infer::sub::Sub<'f, 'tcx>.Combine<'tcx>::tys::h01f60f96e1c7a0e0Mhb
12: 0x10a482c9d - middle::typeck::infer::coercion::Coerce<'f, 'tcx>::subtype::hc49b8b80a8fe6465BB2
13: 0x10a482ba7 - middle::typeck::infer::coercion::Coerce<'f, 'tcx>::tys::closure.134892
14: 0x10a47fbc4 - middle::typeck::infer::coercion::Coerce<'f, 'tcx>::unpack_actual_value::h17441466008346532517
15: 0x10a47f974 - middle::typeck::infer::coercion::Coerce<'f, 'tcx>::tys::hea9dc90f9c7f79c4Wt2
16: 0x10a4f1ce1 - middle::typeck::infer::mk_coercety::closure.136930
17: 0x10a4f19cb - middle::typeck::infer::InferCtxt<'a, 'tcx>::commit_if_ok::closure.136922
18: 0x10a4f1832 - middle::typeck::infer::InferCtxt<'a, 'tcx>::commit_unconditionally::h10269887564688594272
19: 0x10a429559 - middle::typeck::infer::mk_coercety::hd859b51f9fb12384aGd
20: 0x10a3d5608 - middle::typeck::check::FnCtxt<'a, 'tcx>::mk_assignty::h0f979b827d001669FbV
21: 0x10a3d5468 - middle::typeck::check::demand::coerce::h17bc58cfa536c5eaUDP
22: 0x10a4391c9 - middle::typeck::check::check_expr_coercable_to_type::closure.133875
23: 0x10a432490 - middle::typeck::check::check_expr_with_unifier::h8eec84ce54d593054oW
24: 0x10a3f9225 - middle::typeck::check::check_block_with_expected::h81c6310a053d62c16zY
25: 0x10a3f4b52 - middle::typeck::check::check_fn::h698014d6a0124a77NcT
26: 0x10a3f40c5 - middle::typeck::check::check_bare_fn::h148ba869b36fd48fV1S
27: 0x10a3efe2b - middle::typeck::check::check_item::hd0bc87d8a336f4e0MlT
28: 0x10a3f3f2f - middle::typeck::check::check_item_types::h557440a82bf61c1450S
29: 0x109e6bfb6 - util::common::time::h9072582067505128456
30: 0x10a6af15e - middle::typeck::check_crate::hca8fe6f296db2cadXRk
31: 0x10a71b1af - driver::driver::phase_3_run_analysis_passes::h77649978e74b96betqx
32: 0x10a7153af - driver::driver::compile_input::h1f2de5081accd1dcf7w
33: 0x10a79e084 - driver::run_compiler::h00e7e552333d10b3yVA
34: 0x10a79c1b6 - driver::run::closure.147372
35: 0x109e8534b - task::TaskBuilder<S>::try_future::closure.101547
36: 0x109e85233 - task::TaskBuilder<S>::spawn_internal::closure.101518
37: 0x10b13979d - task::spawn_opts::closure.8528
38: 0x10d5a595c - rust_try_inner
39: 0x10d5a5946 - rust_try
40: 0x10d53b507 - unwind::try::h518344f5564ef7c4rjd
41: 0x10d53b38c - task::Task::run::h70777ea0d87a00a2Czc
42: 0x10b1395c2 - task::spawn_opts::closure.8467
43: 0x10d53cd4a - thread::thread_start::he25888157de1700cNTc
44: 0x7fff8aa44352 - _pthread_start
Could not compile `promise`.
Caused by:
Process didn't exit successfully: `rustc src/promise.rs --crate-name promise --crate-type lib -g -C metadata=3a86d92f1ae335d6 -C extra-filename=-3a86d92f1ae335d6 --out-dir /Users/hex/projects/active/promise/target --dep-info /Users/hex/projects/active/promise/target/.fingerprint/promise-3a86d92f1ae335d6/dep-lib-promise -L /Users/hex/projects/active/promise/target -L /Users/hex/projects/active/promise/target/deps` (status=101)
NOTE
It compiles fine if I add Send
in a couple places, like so:
pub fn propagate<T:Promisable + Clone, E:Promisable + Clone>(action:proc(&T):Send -> Result<T, E>) -> proc(Result<T, E>):Send -> Result<T, E> {
proc(result:Result<T, E>) {
match result {
Ok(ref t) => action(t),
Err(ref e) => Err(e.clone()),
}
}
}