-
Notifications
You must be signed in to change notification settings - Fork 13k
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
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.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
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.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
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.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
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.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Should I inquire further or leave this as it is
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Yea, please investigate. During which test is this? The new one?
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
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.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
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.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
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.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
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.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
I found this to be weird in
mir_borrowck
we 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, QueryResponse
to contain all the data to equate what ever types came out of it with the opaque type and haveborrowck
thus 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
probe
to lose them. Do we even need theprobe
?
oli has way more context than me hehe r? @oli-obk |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
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