New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

ICE with conservative_impl_trait #45690

Closed
YaLTeR opened this Issue Nov 1, 2017 · 2 comments

Comments

Projects
None yet
4 participants
@YaLTeR
Copy link
Contributor

YaLTeR commented Nov 1, 2017

rustc 1.23.0-nightly (8b22e70b2 2017-10-31)
binary: rustc
commit-hash: 8b22e70b2de5152db3b0c53cfa16eb96b0b9e40e
commit-date: 2017-10-31
host: x86_64-unknown-linux-gnu
release: 1.23.0-nightly
LLVM version: 4.0

Somewhat minimal example.

Interestingly enough the error I'm getting in the actual project where I stumbled upon this is slightly different, here's a backtrace of that:

error: internal compiler error: unexpected panic

note: the compiler unexpectedly panicked. this is a bug.

note: we would appreciate a bug report: https://github.com/rust-lang/rust/blob/master/CONTRIBUTING.md#bug-reports

note: rustc 1.23.0-nightly (8b22e70b2 2017-10-31) running on x86_64-unknown-linux-gnu

note: run with `RUST_BACKTRACE=1` for a backtrace

thread 'rustc' panicked at 'assertion failed: match *region { ty::ReLateBound(..) => false, _ => true, }', /checkout/src/librustc/infer/higher_ranked/mod.rs:466:8
note: Some details are omitted, run with `RUST_BACKTRACE=full` for a verbose backtrace.
stack backtrace:
   0: std::sys::imp::backtrace::tracing::imp::unwind_backtrace
             at /checkout/src/libstd/sys/unix/backtrace/tracing/gcc_s.rs:49
   1: std::sys_common::backtrace::_print
             at /checkout/src/libstd/sys_common/backtrace.rs:69
   2: std::panicking::default_hook::{{closure}}
             at /checkout/src/libstd/sys_common/backtrace.rs:58
             at /checkout/src/libstd/panicking.rs:381
   3: std::panicking::default_hook
             at /checkout/src/libstd/panicking.rs:391
   4: std::panicking::rust_panic_with_hook
             at /checkout/src/libstd/panicking.rs:577
   5: std::panicking::begin_panic
   6: _ZN5rustc5infer13higher_ranked15fold_regions_in28_$u7b$$u7b$closure$u7d$$u7d$17h30f5524df740fa84E.llvm.630148A9
   7: core::ops::function::impls::<impl core::ops::function::FnOnce<A> for &'a mut F>::call_once
   8: <rustc_data_structures::accumulate_vec::AccumulateVec<A> as core::iter::traits::FromIterator<<A as rustc_data_structures::array_vec::Array>::Element>>::from_iter
   9: rustc::ty::fold::TypeFoldable::fold_with
  10: rustc::ty::structural_impls::<impl rustc::ty::fold::TypeFoldable<'tcx> for &'tcx rustc::ty::TyS<'tcx>>::super_fold_with
  11: rustc::infer::InferCtxt::commit_if_ok
  12: rustc::infer::InferCtxt::match_poly_projection_predicate
  13: _ZN5rustc6traits7project27confirm_param_env_candidate17h06fc8c3394c685c7E.llvm.99C222EF
  14: _ZN5rustc6traits7project29opt_normalize_projection_type17haba371006e77bf1bE.llvm.99C222EF
  15: rustc::traits::project::project_and_unify_type
  16: rustc::infer::InferCtxt::commit_if_ok
  17: <rustc::traits::fulfill::FulfillProcessor<'a, 'b, 'gcx, 'tcx> as rustc_data_structures::obligation_forest::ObligationProcessor>::process_obligation
  18: <rustc_data_structures::obligation_forest::ObligationForest<O>>::process_obligations
  19: rustc::traits::fulfill::FulfillmentContext::select_where_possible
  20: rustc_typeck::check::FnCtxt::select_obligations_where_possible
  21: _ZN12rustc_typeck5check6FnCtxt35expected_inputs_for_expected_output17h47816a40ae27fe9dE.llvm.CA7E285C
  22: _ZN12rustc_typeck5check6FnCtxt27check_method_argument_types17hd792747dd1cbee99E.llvm.CA7E285C
  23: _ZN12rustc_typeck5check6FnCtxt15check_expr_kind17hed39f487d9109845E.llvm.CA7E285C
  24: _ZN12rustc_typeck5check6FnCtxt43check_expr_with_expectation_and_lvalue_pref17h76312c6992bfae9eE.llvm.CA7E285C
  25: _ZN12rustc_typeck5check6FnCtxt16check_decl_local17h4b2c05208ab7daadE.llvm.CA7E285C
  26: _ZN12rustc_typeck5check6FnCtxt25check_block_with_expected28_$u7b$$u7b$closure$u7d$$u7d$17hba43225a196e714eE.llvm.CA7E285C
  27: _ZN12rustc_typeck5check6FnCtxt25check_block_with_expected17hf53dea4009c5de1fE.llvm.CA7E285C
  28: _ZN12rustc_typeck5check6FnCtxt15check_expr_kind17hed39f487d9109845E.llvm.CA7E285C
  29: _ZN12rustc_typeck5check6FnCtxt43check_expr_with_expectation_and_lvalue_pref17h76312c6992bfae9eE.llvm.CA7E285C
  30: _ZN12rustc_typeck5check6FnCtxt17check_return_expr17h57dad756584b790cE.llvm.CA7E285C
  31: rustc_typeck::check::check_fn
  32: <std::thread::local::LocalKey<T>>::with
  33: rustc::ty::context::GlobalCtxt::enter_local
  34: _ZN12rustc_typeck5check16typeck_tables_of17hac67adeb3caf8538E.llvm.CA7E285C
  35: rustc::ty::maps::<impl rustc::ty::maps::queries::typeck_tables_of<'tcx>>::compute_result
  36: _ZN5rustc9dep_graph5graph8DepGraph14with_task_impl17h1ef644a010fa467cE.llvm.647F93AF
  37: rustc_errors::Handler::track_diagnostics
  38: rustc::ty::maps::plumbing::<impl rustc::ty::context::TyCtxt<'a, 'gcx, 'tcx>>::cycle_check
  39: rustc::ty::maps::<impl rustc::ty::maps::queries::typeck_tables_of<'tcx>>::force
  40: rustc::ty::maps::<impl rustc::ty::maps::queries::typeck_tables_of<'tcx>>::try_get
  41: rustc::ty::maps::TyCtxtAt::typeck_tables_of
  42: rustc::ty::maps::<impl rustc::ty::maps::queries::typeck_tables_of<'tcx>>::ensure
  43: rustc::session::Session::track_errors
  44: _ZN12rustc_typeck5check18typeck_item_bodies17h0abef6ddded349dbE.llvm.CA7E285C
  45: rustc::ty::maps::<impl rustc::ty::maps::queries::typeck_item_bodies<'tcx>>::compute_result
  46: _ZN5rustc9dep_graph5graph8DepGraph14with_task_impl17h3c5118fe37d9feb7E.llvm.647F93AF
  47: rustc_errors::Handler::track_diagnostics
  48: rustc::ty::maps::plumbing::<impl rustc::ty::context::TyCtxt<'a, 'gcx, 'tcx>>::cycle_check
  49: rustc::ty::maps::<impl rustc::ty::maps::queries::typeck_item_bodies<'tcx>>::force
  50: rustc::ty::maps::<impl rustc::ty::maps::queries::typeck_item_bodies<'tcx>>::try_get
  51: rustc::ty::maps::TyCtxtAt::typeck_item_bodies
  52: rustc::ty::maps::<impl rustc::ty::context::TyCtxt<'a, 'tcx, 'lcx>>::typeck_item_bodies
  53: rustc::util::common::time
  54: rustc_typeck::check_crate
  55: <std::thread::local::LocalKey<T>>::with
  56: <std::thread::local::LocalKey<T>>::with
  57: rustc::ty::context::TyCtxt::create_and_enter
  58: rustc_driver::driver::compile_input
  59: rustc_driver::run_compiler
@nanokatze

This comment has been minimized.

Copy link

nanokatze commented Nov 6, 2017

I believe this is a duplicate of #42479 and a bunch of others. @YaLTeR you can resolve it in the mean time by specifying explicit lifetime bound, that is:

impl Iterator<Item=EdgeReference<()>> + 'a
@cramertj

This comment has been minimized.

Copy link
Member

cramertj commented Jan 5, 2018

This is fixed.

@YaLTeR YaLTeR closed this Jan 6, 2018

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment