Fix regression introduced with #99383#99714
Conversation
|
(rust-highfive has picked a reviewer for you, use r? to override) |
| type_op_prove_predicate_with_cause(infcx, fulfill_cx, key, ObligationCause::dummy()); | ||
| Ok(()) | ||
| }) | ||
| tcx.infer_ctxt().with_opaque_type_inference(DefiningAnchor::Bubble).enter_canonical_trait_query( |
There was a problem hiding this comment.
This one seems odd. The only change from adding this that I can envision is moving from an error to an ICE (via delay_span_bug due to take_opaque_types not getting called.)
There was a problem hiding this comment.
If I remove that we get this:
Backtrace
thread 'rustc' panicked at 'assertion failed: sentinel == STR_SENTINEL',
stack backtrace:
0: 0x10163a3c0 - <std::sys_common::backtrace::_print::DisplayBacktrace as core::fmt::Display>::fmt::h726e647852e3d24f
1: 0x1016b044c - core::fmt::write::hf6491a9cad4237ce
2: 0x10164608c - std::io::Write::write_fmt::h2b59a831d3620ba3
3: 0x10163a26c - std::sys_common::backtrace::print::h77f56e81b084f8f6
4: 0x1016615ac - std::panicking::default_hook::{{closure}}::h389eb9e26b1a1de6
5: 0x1016613a0 - std::panicking::default_hook::h6ee0c479a40c963f
6: 0x109a6d39c - rustc_driver[7797c2389d089e8d]::DEFAULT_HOOK::{closure#0}::{closure#0}
7: 0x101661a48 - std::panicking::rust_panic_with_hook::hbaf9f93c32f27862
8: 0x101665540 - std::panicking::begin_panic_handler::{{closure}}::h147e22b5166ea195
9: 0x1016654b8 - std::sys_common::backtrace::__rust_end_short_backtrace::h59d7af32b4887345
10: 0x10166160c - _rust_begin_unwind
11: 0x1016cc4d4 - core::panicking::panic_fmt::hbf3a6aa2f4e5afde
12: 0x1016cc3f4 - core::panicking::panic::h99899b97fa606673
13: 0x10cecf7d8 - <rustc_span[931268512525c026]::symbol::Symbol as rustc_serialize[63e114cd219d5a04]::serialize::Decodable<rustc_metadata[8d02725da31e47b2]::rmeta::decoder::DecodeContext>>::decode
14: 0x10cecef84 - <rustc_attr[2c11b0af6e4e6575]::builtin::Stability as rustc_serialize[63e114cd219d5a04]::serialize::Decodable<rustc_metadata[8d02725da31e47b2]::rmeta::decoder::DecodeContext>>::decode
15: 0x10ce85684 - <rustc_metadata[8d02725da31e47b2]::rmeta::LazyValue<rustc_attr[2c11b0af6e4e6575]::builtin::Stability>>::decode::<(rustc_metadata[8d02725da31e47b2]::creader::CrateMetadataRef, rustc_middle[690a795738a1840c]::ty::context::TyCtxt)>
16: 0x10ce9ab78 - rustc_metadata[8d02725da31e47b2]::rmeta::decoder::cstore_impl::provide_extern::lookup_stability
17: 0x10c9ba0b4 - rustc_query_system[7d8e326128972c4d]::query::plumbing::try_execute_query::<rustc_query_impl[5cb324285e2f04b9]::plumbing::QueryCtxt, rustc_query_system[7d8e326128972c4d]::query::caches::DefaultCache<rustc_span[931268512525c026]::def_id::DefId, core[32111c0fccea723b]::option::Option<rustc_attr[2c11b0af6e4e6575]::builtin::Stability>>>
18: 0x10ca448f4 - rustc_query_system[7d8e326128972c4d]::query::plumbing::get_query::<rustc_query_impl[5cb324285e2f04b9]::queries::lookup_stability, rustc_query_impl[5cb324285e2f04b9]::plumbing::QueryCtxt>
19: 0x10c88a930 - <rustc_query_impl[5cb324285e2f04b9]::Queries as rustc_middle[690a795738a1840c]::ty::query::QueryEngine>::lookup_stability
20: 0x10d562164 - <rustc_middle[690a795738a1840c]::ty::context::TyCtxt>::eval_stability_allow_unstable
21: 0x10d5082fc - <rustc_middle[690a795738a1840c]::ty::context::TyCtxt>::check_optional_stability::<<rustc_middle[690a795738a1840c]::ty::context::TyCtxt>::check_stability_allow_unstable::{closure#0}>
22: 0x10d56270c - <rustc_middle[690a795738a1840c]::ty::context::TyCtxt>::check_stability
23: 0x10c2f6e9c - <rustc_passes[24b8be219ca9cd7a]::stability::Checker as rustc_hir[f54d7568531f9ef0]::intravisit::Visitor>::visit_item
24: 0x10c308b28 - <rustc_middle[690a795738a1840c]::hir::map::Map>::visit_item_likes_in_module::<rustc_passes[24b8be219ca9cd7a]::stability::Checker>
25: 0x10c2f6ae4 - rustc_passes[24b8be219ca9cd7a]::stability::check_mod_unstable_api_usage
26: 0x10c9b7b60 - rustc_query_system[7d8e326128972c4d]::query::plumbing::try_execute_query::<rustc_query_impl[5cb324285e2f04b9]::plumbing::QueryCtxt, rustc_query_system[7d8e326128972c4d]::query::caches::DefaultCache<rustc_span[931268512525c026]::def_id::LocalDefId, ()>>
27: 0x10ca690bc - rustc_query_system[7d8e326128972c4d]::query::plumbing::get_query::<rustc_query_impl[5cb324285e2f04b9]::queries::check_mod_unstable_api_usage, rustc_query_impl[5cb324285e2f04b9]::plumbing::QueryCtxt>
28: 0x10c8827d4 - <rustc_query_impl[5cb324285e2f04b9]::Queries as rustc_middle[690a795738a1840c]::ty::query::QueryEngine>::check_mod_unstable_api_usage
29: 0x109b68410 - <rustc_middle[690a795738a1840c]::hir::map::Map>::for_each_module::<rustc_interface[c52c57c685108550]::passes::analysis::{closure#0}::{closure#1}::{closure#0}>
30: 0x109b619f4 - std[5bc8614f64c760b6]::panicking::try::<(), core[32111c0fccea723b]::panic::unwind_safe::AssertUnwindSafe<rustc_interface[c52c57c685108550]::passes::analysis::{closure#0}::{closure#1}>>
31: 0x109b60254 - <rustc_session[c448c0a5dec433c3]::session::Session>::time::<(), rustc_interface[c52c57c685108550]::passes::analysis::{closure#0}>
32: 0x109b6efc4 - rustc_interface[c52c57c685108550]::passes::analysis
33: 0x10c9dc124 - rustc_query_system[7d8e326128972c4d]::query::plumbing::try_execute_query::<rustc_query_impl[5cb324285e2f04b9]::plumbing::QueryCtxt, rustc_query_system[7d8e326128972c4d]::query::caches::DefaultCache<(), core[32111c0fccea723b]::result::Result<(), rustc_errors[c9670795598baa39]::ErrorGuaranteed>>>
34: 0x10ca73fa0 - rustc_query_system[7d8e326128972c4d]::query::plumbing::get_query::<rustc_query_impl[5cb324285e2f04b9]::queries::analysis, rustc_query_impl[5cb324285e2f04b9]::plumbing::QueryCtxt>
35: 0x10c87677c - <rustc_query_impl[5cb324285e2f04b9]::Queries as rustc_middle[690a795738a1840c]::ty::query::QueryEngine>::analysis
36: 0x109ac5460 - <rustc_interface[c52c57c685108550]::passes::QueryContext>::enter::<rustc_driver[7797c2389d089e8d]::run_compiler::{closure#1}::{closure#2}::{closure#3}, core[32111c0fccea723b]::result::Result<(), rustc_errors[c9670795598baa39]::ErrorGuaranteed>>
37: 0x109a539a0 - <rustc_interface[c52c57c685108550]::interface::Compiler>::enter::<rustc_driver[7797c2389d089e8d]::run_compiler::{closure#1}::{closure#2}, core[32111c0fccea723b]::result::Result<core[32111c0fccea723b]::option::Option<rustc_interface[c52c57c685108550]::queries::Linker>, rustc_errors[c9670795598baa39]::ErrorGuaranteed>>
38: 0x109a6ebac - rustc_span[931268512525c026]::with_source_map::<core[32111c0fccea723b]::result::Result<(), rustc_errors[c9670795598baa39]::ErrorGuaranteed>, rustc_interface[c52c57c685108550]::interface::create_compiler_and_run<core[32111c0fccea723b]::result::Result<(), rustc_errors[c9670795598baa39]::ErrorGuaranteed>, rustc_driver[7797c2389d089e8d]::run_compiler::{closure#1}>::{closure#1}>
39: 0x109a542d8 - rustc_interface[c52c57c685108550]::interface::create_compiler_and_run::<core[32111c0fccea723b]::result::Result<(), rustc_errors[c9670795598baa39]::ErrorGuaranteed>, rustc_driver[7797c2389d089e8d]::run_compiler::{closure#1}>
40: 0x109a7774c - <scoped_tls[a90f9c0771ff865f]::ScopedKey<rustc_span[931268512525c026]::SessionGlobals>>::set::<rustc_interface[c52c57c685108550]::interface::run_compiler<core[32111c0fccea723b]::result::Result<(), rustc_errors[c9670795598baa39]::ErrorGuaranteed>, rustc_driver[7797c2389d089e8d]::run_compiler::{closure#1}>::{closure#0}, core[32111c0fccea723b]::result::Result<(), rustc_errors[c9670795598baa39]::ErrorGuaranteed>>
41: 0x109a5fec4 - std[5bc8614f64c760b6]::sys_common::backtrace::__rust_begin_short_backtrace::<rustc_interface[c52c57c685108550]::util::run_in_thread_pool_with_globals<rustc_interface[c52c57c685108550]::interface::run_compiler<core[32111c0fccea723b]::result::Result<(), rustc_errors[c9670795598baa39]::ErrorGuaranteed>, rustc_driver[7797c2389d089e8d]::run_compiler::{closure#1}>::{closure#0}, core[32111c0fccea723b]::result::Result<(), rustc_errors[c9670795598baa39]::ErrorGuaranteed>>::{closure#0}, core[32111c0fccea723b]::result::Result<(), rustc_errors[c9670795598baa39]::ErrorGuaranteed>>
42: 0x109a60cec - std[5bc8614f64c760b6]::panicking::try::<core[32111c0fccea723b]::result::Result<(), rustc_errors[c9670795598baa39]::ErrorGuaranteed>, core[32111c0fccea723b]::panic::unwind_safe::AssertUnwindSafe<<std[5bc8614f64c760b6]::thread::Builder>::spawn_unchecked_<rustc_interface[c52c57c685108550]::util::run_in_thread_pool_with_globals<rustc_interface[c52c57c685108550]::interface::run_compiler<core[32111c0fccea723b]::result::Result<(), rustc_errors[c9670795598baa39]::ErrorGuaranteed>, rustc_driver[7797c2389d089e8d]::run_compiler::{closure#1}>::{closure#0}, core[32111c0fccea723b]::result::Result<(), rustc_errors[c9670795598baa39]::ErrorGuaranteed>>::{closure#0}, core[32111c0fccea723b]::result::Result<(), rustc_errors[c9670795598baa39]::ErrorGuaranteed>>::{closure#1}::{closure#0}>>
43: 0x109a7f90c - <<std[5bc8614f64c760b6]::thread::Builder>::spawn_unchecked_<rustc_interface[c52c57c685108550]::util::run_in_thread_pool_with_globals<rustc_interface[c52c57c685108550]::interface::run_compiler<core[32111c0fccea723b]::result::Result<(), rustc_errors[c9670795598baa39]::ErrorGuaranteed>, rustc_driver[7797c2389d089e8d]::run_compiler::{closure#1}>::{closure#0}, core[32111c0fccea723b]::result::Result<(), rustc_errors[c9670795598baa39]::ErrorGuaranteed>>::{closure#0}, core[32111c0fccea723b]::result::Result<(), rustc_errors[c9670795598baa39]::ErrorGuaranteed>>::{closure#1} as core[32111c0fccea723b]::ops::function::FnOnce<()>>::call_once::{shim:vtable#0}
44: 0x101625ba4 - <alloc::boxed::Box<F,A> as core::ops::function::FnOnce<Args>>::call_once::hb5035c6767426fbd
45: 0x10164f058 - std::sys::unix::thread::Thread::new::thread_start::h8d70e3925da0bc3f
46: 0x19614826c - __pthread_deallocate
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/issues/new?labels=C-bug%2C+I-ICE%2C+T-compiler&template=ice.md
note: rustc 1.64.0-dev running on aarch64-apple-darwin
query stack during panic:
#0 [lookup_stability] looking up stability of `std`
#1 [check_mod_unstable_api_usage] checking for unstable API usage in top-level module
#2 [analysis] running analysis passes on this crate
end of query stack
There was a problem hiding this comment.
uuuh... huh. that's super weird. I don't see how that relates to opaque types at all. Or how it relates to this function
There was a problem hiding this comment.
Should I inquire further or leave this as it is
There was a problem hiding this comment.
Yea, please investigate. During which test is this? The new one?
There was a problem hiding this comment.
Ah sorry, the backtrace I posted above is completely wrong... here is the new one (it's the same error as the original one). Code I am testing is this :
fn test() -> impl Iterator<Item = impl Sized> {
Box::new(0..) as Box<dyn Iterator<Item = _>>
}Backtrace
warning: 1 warning emitted
error: internal compiler error: no errors encountered even though `delay_span_bug` issued
error: internal compiler error: broken MIR in DefId(0:3 ~ tabula[475d]::test) (NoSolution): could not prove Binder(TraitPredicate(<std::boxed::Box<std::ops::RangeFrom<i32>> as std::ops::CoerceUnsized<std::boxed::Box<dyn std::iter::Iterator<Item = impl Sized>>>>, polarity:Positive), [])
--> tabula.rs:2:5
|
2 | Box::new(0..) as Box<dyn Iterator<Item = _>>
| ^^^^^^^^^^^^^
|
= note: delayed at compiler/rustc_borrowck/src/type_check/canonical.rs:151:13
thread 'rustc' panicked at 'Box<dyn Any>', compiler/rustc_errors/src/lib.rs:1426:13
stack backtrace:
0: 0x104a2a3c0 - <std::sys_common::backtrace::_print::DisplayBacktrace as core::fmt::Display>::fmt::h726e647852e3d24f
1: 0x104aa044c - core::fmt::write::hf6491a9cad4237ce
2: 0x104a3608c - std::io::Write::write_fmt::h2b59a831d3620ba3
3: 0x104a2a26c - std::sys_common::backtrace::print::h77f56e81b084f8f6
4: 0x104a515ac - std::panicking::default_hook::{{closure}}::h389eb9e26b1a1de6
5: 0x104a513a0 - std::panicking::default_hook::h6ee0c479a40c963f
6: 0x10ce5d39c - rustc_driver[7797c2389d089e8d]::DEFAULT_HOOK::{closure#0}::{closure#0}
7: 0x104a51a48 - std::panicking::rust_panic_with_hook::hbaf9f93c32f27862
8: 0x110a5da64 - std[5bc8614f64c760b6]::panicking::begin_panic::<rustc_errors[c9670795598baa39]::ExplicitBug>::{closure#0}
9: 0x110a5da1c - std[5bc8614f64c760b6]::sys_common::backtrace::__rust_end_short_backtrace::<std[5bc8614f64c760b6]::panicking::begin_panic<rustc_errors[c9670795598baa39]::ExplicitBug>::{closure#0}, !>
10: 0x110d85654 - std[5bc8614f64c760b6]::panicking::begin_panic::<rustc_errors[c9670795598baa39]::ExplicitBug>
11: 0x110a429b8 - std[5bc8614f64c760b6]::panic::panic_any::<rustc_errors[c9670795598baa39]::ExplicitBug>
12: 0x110a44a6c - <rustc_errors[c9670795598baa39]::HandlerInner>::flush_delayed::<alloc[c821cbb61612a45e]::vec::Vec<rustc_errors[c9670795598baa39]::diagnostic::Diagnostic>, &str>
13: 0x110a4f778 - <rustc_errors[c9670795598baa39]::HandlerInner as core[32111c0fccea723b]::ops::drop::Drop>::drop
14: 0x10ce9e240 - core[32111c0fccea723b]::ptr::drop_in_place::<rustc_errors[c9670795598baa39]::Handler>
15: 0x10cea91e4 - core[32111c0fccea723b]::ptr::drop_in_place::<rustc_session[c448c0a5dec433c3]::parse::ParseSess>
16: 0x10ce86018 - core[32111c0fccea723b]::ptr::drop_in_place::<alloc[c821cbb61612a45e]::rc::Rc<rustc_session[c448c0a5dec433c3]::session::Session>>
17: 0x10ceab1a8 - core[32111c0fccea723b]::ptr::drop_in_place::<rustc_interface[c52c57c685108550]::interface::Compiler>
18: 0x10ce5ee10 - rustc_span[931268512525c026]::with_source_map::<core[32111c0fccea723b]::result::Result<(), rustc_errors[c9670795598baa39]::ErrorGuaranteed>, rustc_interface[c52c57c685108550]::interface::create_compiler_and_run<core[32111c0fccea723b]::result::Result<(), rustc_errors[c9670795598baa39]::ErrorGuaranteed>, rustc_driver[7797c2389d089e8d]::run_compiler::{closure#1}>::{closure#1}>
19: 0x10ce442d8 - rustc_interface[c52c57c685108550]::interface::create_compiler_and_run::<core[32111c0fccea723b]::result::Result<(), rustc_errors[c9670795598baa39]::ErrorGuaranteed>, rustc_driver[7797c2389d089e8d]::run_compiler::{closure#1}>
20: 0x10ce6774c - <scoped_tls[a90f9c0771ff865f]::ScopedKey<rustc_span[931268512525c026]::SessionGlobals>>::set::<rustc_interface[c52c57c685108550]::interface::run_compiler<core[32111c0fccea723b]::result::Result<(), rustc_errors[c9670795598baa39]::ErrorGuaranteed>, rustc_driver[7797c2389d089e8d]::run_compiler::{closure#1}>::{closure#0}, core[32111c0fccea723b]::result::Result<(), rustc_errors[c9670795598baa39]::ErrorGuaranteed>>
21: 0x10ce4fec4 - std[5bc8614f64c760b6]::sys_common::backtrace::__rust_begin_short_backtrace::<rustc_interface[c52c57c685108550]::util::run_in_thread_pool_with_globals<rustc_interface[c52c57c685108550]::interface::run_compiler<core[32111c0fccea723b]::result::Result<(), rustc_errors[c9670795598baa39]::ErrorGuaranteed>, rustc_driver[7797c2389d089e8d]::run_compiler::{closure#1}>::{closure#0}, core[32111c0fccea723b]::result::Result<(), rustc_errors[c9670795598baa39]::ErrorGuaranteed>>::{closure#0}, core[32111c0fccea723b]::result::Result<(), rustc_errors[c9670795598baa39]::ErrorGuaranteed>>
22: 0x10ce50cec - std[5bc8614f64c760b6]::panicking::try::<core[32111c0fccea723b]::result::Result<(), rustc_errors[c9670795598baa39]::ErrorGuaranteed>, core[32111c0fccea723b]::panic::unwind_safe::AssertUnwindSafe<<std[5bc8614f64c760b6]::thread::Builder>::spawn_unchecked_<rustc_interface[c52c57c685108550]::util::run_in_thread_pool_with_globals<rustc_interface[c52c57c685108550]::interface::run_compiler<core[32111c0fccea723b]::result::Result<(), rustc_errors[c9670795598baa39]::ErrorGuaranteed>, rustc_driver[7797c2389d089e8d]::run_compiler::{closure#1}>::{closure#0}, core[32111c0fccea723b]::result::Result<(), rustc_errors[c9670795598baa39]::ErrorGuaranteed>>::{closure#0}, core[32111c0fccea723b]::result::Result<(), rustc_errors[c9670795598baa39]::ErrorGuaranteed>>::{closure#1}::{closure#0}>>
23: 0x10ce6f90c - <<std[5bc8614f64c760b6]::thread::Builder>::spawn_unchecked_<rustc_interface[c52c57c685108550]::util::run_in_thread_pool_with_globals<rustc_interface[c52c57c685108550]::interface::run_compiler<core[32111c0fccea723b]::result::Result<(), rustc_errors[c9670795598baa39]::ErrorGuaranteed>, rustc_driver[7797c2389d089e8d]::run_compiler::{closure#1}>::{closure#0}, core[32111c0fccea723b]::result::Result<(), rustc_errors[c9670795598baa39]::ErrorGuaranteed>>::{closure#0}, core[32111c0fccea723b]::result::Result<(), rustc_errors[c9670795598baa39]::ErrorGuaranteed>>::{closure#1} as core[32111c0fccea723b]::ops::function::FnOnce<()>>::call_once::{shim:vtable#0}
24: 0x104a15ba4 - <alloc::boxed::Box<F,A> as core::ops::function::FnOnce<Args>>::call_once::hb5035c6767426fbd
25: 0x104a3f058 - std::sys::unix::thread::Thread::new::thread_start::h8d70e3925da0bc3f
26: 0x19614826c - __pthread_deallocate
There was a problem hiding this comment.
This one:
#![feature(type_alias_impl_trait)]
type Opq = impl Sized;
fn test() -> impl Iterator<Item = Opq> {
Box::new(0..) as Box<dyn Iterator<Item = _>>
}just gives error: unconstrained opaque type error when I remove with_opaque_type_inference.
There was a problem hiding this comment.
Which query is that happening in? Use -Ztreat-err-as-bug to get a useful backtrace as well as a query backtrace.
If we're using the bubble scheme, I'd expect not using take_opaque_type to also ICE. If that doesn't happen, something is either broken, or... oh probably probe is involved, just like with evaluate_obligation. If that is the case, using with_..inference is ok, but both cases should have a comment and the non-evaluate_obligations case needs to be set up to fail less extremely than with a type mismatch error (idk if that's possible easily, so we may have to leave that to a follow up)
There was a problem hiding this comment.
Here is the backtrace:
Backtrace
error: internal compiler error: broken MIR in DefId(0:5 ~ tabula[475d]::test) (NoSolution): could not prove Binder(TraitPredicate(<std::boxed::Box<std::ops::RangeFrom<i32>> as std::ops::CoerceUnsized<std::boxed::Box<dyn std::iter::Iterator<Item = Opq>>>>, polarity:Positive), [])
--> tabula.rs:4:5
|
4 | Box::new(0..) as Box<dyn Iterator<Item = _>>
| ^^^^^^^^^^^^^
thread 'rustc' panicked at 'aborting due to `-Z treat-err-as-bug=1`', compiler/rustc_errors/src/lib.rs:1450:27
stack backtrace:
0: 0x10373a3c0 - <std::sys_common::backtrace::_print::DisplayBacktrace as core::fmt::Display>::fmt::h726e647852e3d24f
1: 0x1037b044c - core::fmt::write::hf6491a9cad4237ce
2: 0x10374608c - std::io::Write::write_fmt::h2b59a831d3620ba3
3: 0x10373a26c - std::sys_common::backtrace::print::h77f56e81b084f8f6
4: 0x1037615ac - std::panicking::default_hook::{{closure}}::h389eb9e26b1a1de6
5: 0x1037613a0 - std::panicking::default_hook::h6ee0c479a40c963f
6: 0x10bb6d380 - rustc_driver[7797c2389d089e8d]::DEFAULT_HOOK::{closure#0}::{closure#0}
7: 0x103761a48 - std::panicking::rust_panic_with_hook::hbaf9f93c32f27862
8: 0x103765540 - std::panicking::begin_panic_handler::{{closure}}::h147e22b5166ea195
9: 0x1037654b8 - std::sys_common::backtrace::__rust_end_short_backtrace::h59d7af32b4887345
10: 0x10376160c - _rust_begin_unwind
11: 0x1037cc4d4 - core::panicking::panic_fmt::hbf3a6aa2f4e5afde
12: 0x10f77d674 - <rustc_errors[c9670795598baa39]::HandlerInner>::emit_diagnostic
13: 0x10e682cb8 - <rustc_errors[c9670795598baa39]::HandlerInner>::emit_diag_at_span::<rustc_span[931268512525c026]::span_encoding::Span>
14: 0x10e682e28 - <rustc_errors[c9670795598baa39]::HandlerInner>::span_bug::<rustc_span[931268512525c026]::span_encoding::Span, &str>
15: 0x10e682974 - <rustc_errors[c9670795598baa39]::Handler>::delay_span_bug::<rustc_span[931268512525c026]::span_encoding::Span, &str>
16: 0x10e5eed30 - <rustc_borrowck[2092e3d75964856]::type_check::TypeChecker>::prove_predicate
17: 0x10e619b98 - <rustc_borrowck[2092e3d75964856]::type_check::TypeChecker>::prove_predicates::<rustc_middle[690a795738a1840c]::ty::sty::Binder<rustc_middle[690a795738a1840c]::ty::PredicateKind>, core[32111c0fccea723b]::option::Option<rustc_middle[690a795738a1840c]::ty::sty::Binder<rustc_middle[690a795738a1840c]::ty::PredicateKind>>>
18: 0x10e5ee96c - <rustc_borrowck[2092e3d75964856]::type_check::TypeChecker>::prove_trait_ref
19: 0x10e5f3c58 - <rustc_borrowck[2092e3d75964856]::type_check::TypeChecker>::check_rvalue
20: 0x10e5f5844 - <rustc_borrowck[2092e3d75964856]::type_check::TypeChecker>::typeck_mir
21: 0x10e61d310 - rustc_borrowck[2092e3d75964856]::type_check::type_check_internal::<rustc_data_structures[ca0b50c5610ae1ab]::vec_map::VecMap<rustc_middle[690a795738a1840c]::ty::OpaqueTypeKey, (rustc_middle[690a795738a1840c]::ty::OpaqueHiddenType, rustc_hir[f54d7568531f9ef0]::hir::OpaqueTyOrigin)>, rustc_borrowck[2092e3d75964856]::type_check::type_check::{closure#0}>
22: 0x10e5e9db8 - rustc_borrowck[2092e3d75964856]::type_check::type_check
23: 0x10e59edb0 - rustc_borrowck[2092e3d75964856]::nll::compute_regions
24: 0x10e5695d0 - rustc_borrowck[2092e3d75964856]::do_mir_borrowck
25: 0x10e63b850 - <rustc_infer[c719091ac778a625]::infer::InferCtxtBuilder>::enter::<rustc_middle[690a795738a1840c]::mir::query::BorrowCheckResult, rustc_borrowck[2092e3d75964856]::mir_borrowck::{closure#0}>
26: 0x10e563680 - rustc_borrowck[2092e3d75964856]::mir_borrowck
27: 0x10e5435ec - <rustc_borrowck[2092e3d75964856]::provide::{closure#0} as core[32111c0fccea723b]::ops::function::FnOnce<(rustc_middle[690a795738a1840c]::ty::context::TyCtxt, rustc_span[931268512525c026]::def_id::LocalDefId)>>::call_once
28: 0x10eab60d0 - rustc_query_system[7d8e326128972c4d]::query::plumbing::try_execute_query::<rustc_query_impl[5cb324285e2f04b9]::plumbing::QueryCtxt, rustc_query_system[7d8e326128972c4d]::query::caches::DefaultCache<rustc_span[931268512525c026]::def_id::LocalDefId, &rustc_middle[690a795738a1840c]::mir::query::BorrowCheckResult>>
29: 0x10eb399d8 - rustc_query_system[7d8e326128972c4d]::query::plumbing::get_query::<rustc_query_impl[5cb324285e2f04b9]::queries::mir_borrowck, rustc_query_impl[5cb324285e2f04b9]::plumbing::QueryCtxt>
30: 0x10e985e4c - <rustc_query_impl[5cb324285e2f04b9]::Queries as rustc_middle[690a795738a1840c]::ty::query::QueryEngine>::mir_borrowck
31: 0x10e0956d4 - <rustc_typeck[4262d7238d3240f8]::collect::type_of::find_opaque_ty_constraints::ConstraintLocator>::check
32: 0x10e094dac - <rustc_typeck[4262d7238d3240f8]::collect::type_of::find_opaque_ty_constraints::ConstraintLocator as rustc_hir[f54d7568531f9ef0]::intravisit::Visitor>::visit_item
33: 0x10e1c2ce0 - rustc_hir[f54d7568531f9ef0]::intravisit::walk_mod::<rustc_typeck[4262d7238d3240f8]::collect::type_of::find_opaque_ty_constraints::ConstraintLocator>
34: 0x10e0947a4 - rustc_typeck[4262d7238d3240f8]::collect::type_of::find_opaque_ty_constraints
35: 0x10e091d84 - rustc_typeck[4262d7238d3240f8]::collect::type_of::type_of
36: 0x10eac474c - rustc_query_system[7d8e326128972c4d]::query::plumbing::try_execute_query::<rustc_query_impl[5cb324285e2f04b9]::plumbing::QueryCtxt, rustc_query_system[7d8e326128972c4d]::query::caches::DefaultCache<rustc_span[931268512525c026]::def_id::DefId, rustc_middle[690a795738a1840c]::ty::Ty>>
37: 0x10eb73e44 - rustc_query_system[7d8e326128972c4d]::query::plumbing::get_query::<rustc_query_impl[5cb324285e2f04b9]::queries::type_of, rustc_query_impl[5cb324285e2f04b9]::plumbing::QueryCtxt>
38: 0x10e9764c8 - <rustc_query_impl[5cb324285e2f04b9]::Queries as rustc_middle[690a795738a1840c]::ty::query::QueryEngine>::type_of
39: 0x10dfcc074 - rustc_typeck[4262d7238d3240f8]::check::check::check_opaque
40: 0x10dfcd6dc - rustc_typeck[4262d7238d3240f8]::check::check::check_item_type
41: 0x10dfd2d68 - rustc_typeck[4262d7238d3240f8]::check::check::check_mod_item_types
42: 0x10eab7b60 - rustc_query_system[7d8e326128972c4d]::query::plumbing::try_execute_query::<rustc_query_impl[5cb324285e2f04b9]::plumbing::QueryCtxt, rustc_query_system[7d8e326128972c4d]::query::caches::DefaultCache<rustc_span[931268512525c026]::def_id::LocalDefId, ()>>
43: 0x10eb4fd88 - rustc_query_system[7d8e326128972c4d]::query::plumbing::get_query::<rustc_query_impl[5cb324285e2f04b9]::queries::check_mod_item_types, rustc_query_impl[5cb324285e2f04b9]::plumbing::QueryCtxt>
44: 0x10e9832b4 - <rustc_query_impl[5cb324285e2f04b9]::Queries as rustc_middle[690a795738a1840c]::ty::query::QueryEngine>::check_mod_item_types
45: 0x10e096a34 - <rustc_middle[690a795738a1840c]::hir::map::Map>::for_each_module::<rustc_typeck[4262d7238d3240f8]::check_crate::{closure#6}::{closure#0}>
46: 0x10e01ea80 - <rustc_session[c448c0a5dec433c3]::session::Session>::time::<(), rustc_typeck[4262d7238d3240f8]::check_crate::{closure#6}>
47: 0x10e202924 - rustc_typeck[4262d7238d3240f8]::check_crate
48: 0x10bc6efb0 - rustc_interface[c52c57c685108550]::passes::analysis
49: 0x10eadc124 - rustc_query_system[7d8e326128972c4d]::query::plumbing::try_execute_query::<rustc_query_impl[5cb324285e2f04b9]::plumbing::QueryCtxt, rustc_query_system[7d8e326128972c4d]::query::caches::DefaultCache<(), core[32111c0fccea723b]::result::Result<(), rustc_errors[c9670795598baa39]::ErrorGuaranteed>>>
50: 0x10eb73fa0 - rustc_query_system[7d8e326128972c4d]::query::plumbing::get_query::<rustc_query_impl[5cb324285e2f04b9]::queries::analysis, rustc_query_impl[5cb324285e2f04b9]::plumbing::QueryCtxt>
51: 0x10e97677c - <rustc_query_impl[5cb324285e2f04b9]::Queries as rustc_middle[690a795738a1840c]::ty::query::QueryEngine>::analysis
52: 0x10bbc5444 - <rustc_interface[c52c57c685108550]::passes::QueryContext>::enter::<rustc_driver[7797c2389d089e8d]::run_compiler::{closure#1}::{closure#2}::{closure#3}, core[32111c0fccea723b]::result::Result<(), rustc_errors[c9670795598baa39]::ErrorGuaranteed>>
53: 0x10bb53984 - <rustc_interface[c52c57c685108550]::interface::Compiler>::enter::<rustc_driver[7797c2389d089e8d]::run_compiler::{closure#1}::{closure#2}, core[32111c0fccea723b]::result::Result<core[32111c0fccea723b]::option::Option<rustc_interface[c52c57c685108550]::queries::Linker>, rustc_errors[c9670795598baa39]::ErrorGuaranteed>>
54: 0x10bb6eb90 - rustc_span[931268512525c026]::with_source_map::<core[32111c0fccea723b]::result::Result<(), rustc_errors[c9670795598baa39]::ErrorGuaranteed>, rustc_interface[c52c57c685108550]::interface::create_compiler_and_run<core[32111c0fccea723b]::result::Result<(), rustc_errors[c9670795598baa39]::ErrorGuaranteed>, rustc_driver[7797c2389d089e8d]::run_compiler::{closure#1}>::{closure#1}>
55: 0x10bb542bc - rustc_interface[c52c57c685108550]::interface::create_compiler_and_run::<core[32111c0fccea723b]::result::Result<(), rustc_errors[c9670795598baa39]::ErrorGuaranteed>, rustc_driver[7797c2389d089e8d]::run_compiler::{closure#1}>
56: 0x10bb77730 - <scoped_tls[a90f9c0771ff865f]::ScopedKey<rustc_span[931268512525c026]::SessionGlobals>>::set::<rustc_interface[c52c57c685108550]::interface::run_compiler<core[32111c0fccea723b]::result::Result<(), rustc_errors[c9670795598baa39]::ErrorGuaranteed>, rustc_driver[7797c2389d089e8d]::run_compiler::{closure#1}>::{closure#0}, core[32111c0fccea723b]::result::Result<(), rustc_errors[c9670795598baa39]::ErrorGuaranteed>>
57: 0x10bb5fea8 - std[5bc8614f64c760b6]::sys_common::backtrace::__rust_begin_short_backtrace::<rustc_interface[c52c57c685108550]::util::run_in_thread_pool_with_globals<rustc_interface[c52c57c685108550]::interface::run_compiler<core[32111c0fccea723b]::result::Result<(), rustc_errors[c9670795598baa39]::ErrorGuaranteed>, rustc_driver[7797c2389d089e8d]::run_compiler::{closure#1}>::{closure#0}, core[32111c0fccea723b]::result::Result<(), rustc_errors[c9670795598baa39]::ErrorGuaranteed>>::{closure#0}, core[32111c0fccea723b]::result::Result<(), rustc_errors[c9670795598baa39]::ErrorGuaranteed>>
58: 0x10bb60cd0 - std[5bc8614f64c760b6]::panicking::try::<core[32111c0fccea723b]::result::Result<(), rustc_errors[c9670795598baa39]::ErrorGuaranteed>, core[32111c0fccea723b]::panic::unwind_safe::AssertUnwindSafe<<std[5bc8614f64c760b6]::thread::Builder>::spawn_unchecked_<rustc_interface[c52c57c685108550]::util::run_in_thread_pool_with_globals<rustc_interface[c52c57c685108550]::interface::run_compiler<core[32111c0fccea723b]::result::Result<(), rustc_errors[c9670795598baa39]::ErrorGuaranteed>, rustc_driver[7797c2389d089e8d]::run_compiler::{closure#1}>::{closure#0}, core[32111c0fccea723b]::result::Result<(), rustc_errors[c9670795598baa39]::ErrorGuaranteed>>::{closure#0}, core[32111c0fccea723b]::result::Result<(), rustc_errors[c9670795598baa39]::ErrorGuaranteed>>::{closure#1}::{closure#0}>>
59: 0x10bb7f8f0 - <<std[5bc8614f64c760b6]::thread::Builder>::spawn_unchecked_<rustc_interface[c52c57c685108550]::util::run_in_thread_pool_with_globals<rustc_interface[c52c57c685108550]::interface::run_compiler<core[32111c0fccea723b]::result::Result<(), rustc_errors[c9670795598baa39]::ErrorGuaranteed>, rustc_driver[7797c2389d089e8d]::run_compiler::{closure#1}>::{closure#0}, core[32111c0fccea723b]::result::Result<(), rustc_errors[c9670795598baa39]::ErrorGuaranteed>>::{closure#0}, core[32111c0fccea723b]::result::Result<(), rustc_errors[c9670795598baa39]::ErrorGuaranteed>>::{closure#1} as core[32111c0fccea723b]::ops::function::FnOnce<()>>::call_once::{shim:vtable#0}
60: 0x103725ba4 - <alloc::boxed::Box<F,A> as core::ops::function::FnOnce<Args>>::call_once::hb5035c6767426fbd
61: 0x10374f058 - std::sys::unix::thread::Thread::new::thread_start::h8d70e3925da0bc3f
62: 0x19614826c - __pthread_deallocate
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/issues/new?labels=C-bug%2C+I-ICE%2C+T-compiler&template=ice.md
note: rustc 1.64.0-dev running on aarch64-apple-darwin
note: compiler flags: -Z treat-err-as-bug
query stack during panic:
#0 [mir_borrowck] borrow-checking `test`
#1 [type_of] computing type of `Opq::{opaque#0}`
#2 [check_mod_item_types] checking item types in top-level module
#3 [analysis] running analysis passes on this crate
end of query stack
I found this to be weird in mir_borrowck we infer with with_opaque_type_inference(DefiningAnchor::Bind(hir_owner)) it still fails...
So to make this pass we just need this change to stay.
If we're using the bubble scheme, I'd expect not using take_opaque_type to also ICE. If that doesn't happen, something is either broken, or... oh probably probe is involved, just like with evaluate_obligation
But we don't use take_opaque_type here ? I checked probe it doesn't affect this.
non-evaluate_obligations case needs to be set up to fail less extremely than with a type mismatch error
I don't understand this 😅
There was a problem hiding this comment.
I found this to be weird in
mir_borrowckwe infer withwith_opaque_type_inference(DefiningAnchor::Bind(hir_owner))it still fails...
So... some borrowck code calls type_op_prove_predicate, but the only things it can return are success or NoSolution. Without adding with_opaque_type_inference(DefiningAnchor::Bubble), this query will fail.
I checked probe it doesn't affect this.
probe does affect this by removing all hidden types added within the probe ^^
non-evaluate_obligations case needs to be set up to fail less extremely than with a type mismatch error
I don't understand this 😅
I was trying to propose that we make type_op_prove_predicate work like evaluate_obligation and return something like SucceededModuloOpaqueTypes, but I now realize that's not actually helpful. What we could do instead is either
- replace all opaque types with inference vars before going into the query and that should hopefully cause
Canonical<'tcx, QueryResponseto contain all the data to equate what ever types came out of it with the opaque type and haveborrowckthus figure out the hidden types- lots of handwaving here, no clue if this works
- figure out how to bubble out the hidden types instead of allowing the
probeto lose them. Do we even need theprobe?
|
oli has way more context than me hehe r? @oli-obk |
aliemjay
left a comment
There was a problem hiding this comment.
Thanks! Can you add a regression test please?
It would be nice if you can confirm that the TAIT version passes as well. It's more closely related to original issue I minimized but it yields "unconstrained opaque type" error instead of ICE.
#![feature(type_alias_impl_trait)]
type Opq = impl Sized;
fn test() -> impl Iterator<Item = Opq> {
Box::new(0..) as Box<dyn Iterator<Item = _>>
}
Once we find the correct way to solve this I will add these as tests |
|
@bors r+ |
Fix regression introduced with rust-lang#99383 Fixes rust-lang#99642
Rollup of 5 pull requests Successful merges: - rust-lang#99714 (Fix regression introduced with rust-lang#99383) - rust-lang#99723 (Allow using stable os::fd::raw items through unstable os::wasi module) - rust-lang#99810 (Fix settings slider on small width screens) - rust-lang#99837 (Avoid `Symbol` to `String` conversions) - rust-lang#99846 (Refactor `UnresolvedImportError`) Failed merges: r? `@ghost` `@rustbot` modify labels: rollup
Fixes #99642