You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
The same error occurs when replacing clone with some other methods from prelude traits with similar signatures - to_c_str or into_string for example.
However, if I declare my own trait with a similar method, e.g.: trait Bar { fn bar(&self) -> Self; }, and then replace the method call with a call to bar, there is an identical error message, but no ICE.
Removing either the Some or the ref makes the ICE disappear.
Compiler output:
$ RUST_BACKTRACE=1 rustc ice.rs
ice.rs:4:30: 4:50 error: type `Foo` does not implement any method in scope named `nonexistent_method`
ice.rs:4 let Some(ref y) = Some(x.nonexistent_method());
^~~~~~~~~~~~~~~~~~~~
ice.rs:5:7: 5:14 error: the type of this value must be known in this context
ice.rs:5 y.clone();
^~~~~~~
error: internal compiler error: unexpected panic
note: the compiler unexpectedly panicked. 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' panicked at 'assertion failed: `(left == right) && (right == left)` (left: `None`, right: `Some(())`)', /home/rustbuild/src/rust-buildbot/slave/nightly-linux/build/src/librustc_typeck/check/method/confirm.rs:153
stack backtrace:
1: 0x7f5b9805ae50 - rt::backtrace::imp::write::hf87c140cfcd95fbaBly
2: 0x7f5b9805e0a0 - failure::on_fail::h343c4b97464b676eZNy
3: 0x7f5b97cb0fa0 - unwind::begin_unwind_inner::hb4b9831d2f5e86936Qc
4: 0x7f5b97cb0bd0 - unwind::begin_unwind_fmt::h5c8826b0094c4275hOc
5: 0x7f5b9717e800 - check::method::confirm::ConfirmContext<'a, 'tcx>::confirm::hb8176eb56afef6ceTxf
6: 0x7f5b972622e0 - check::check_expr_with_unifier::check_method_call::h7dd70ab5683f061e9mo
7: 0x7f5b972586a0 - check::check_expr_with_unifier::he91bcac7bd1c6fffYho
8: 0x7f5b97213a40 - check::check_block_with_expected::h31910f8cb7bf5a4dBhq
9: 0x7f5b971e7e20 - check::check_fn::h70c5e5169de64720PJk
10: 0x7f5b97210c00 - check::check_bare_fn::h3f9ce32de12dd011Tyk
11: 0x7f5b97208cd0 - check::check_item::h63605613fc52aeb74Sk
12: 0x7f5b975518b0 - check_crate::closure.42937
13: 0x7f5b9754f630 - util::common::time::h1247083444027210014
14: 0x7f5b9754e900 - check_crate::h5e7941cca32a8446ASz
15: 0x7f5b98495300 - driver::phase_3_run_analysis_passes::h63031984c677effauta
16: 0x7f5b98484100 - driver::compile_input::h022976239e8f5a3cpba
17: 0x7f5b98520d80 - run_compiler::h2b243518ea560709z4b
18: 0x7f5b98520c70 - run::closure.21242
19: 0x7f5b98532670 - task::TaskBuilder::try_future::closure.22690
20: 0x7f5b98033410 - task::TaskBuilder::spawn_internal::closure.31179
21: 0x7f5b97caed70 - task::Task::spawn::closure.5765
22: 0x7f5b97d0c280 - rust_try_inner
23: 0x7f5b97d0c270 - rust_try
24: 0x7f5b97caee50 - unwind::try::ha36bc8815a761f13pFc
25: 0x7f5b97caec10 - task::Task::run::h24525a73fb4c9bb3fOb
26: 0x7f5b97cae800 - task::Task::spawn::closure.5741
27: 0x7f5b97cb0250 - thread::thread_start::ha943fdda31374bc3i6b
28: 0x7f5b92b9ffe0 - start_thread
29: 0x7f5b97975c99 - __clone
30: 0x0 - <unknown>
check::autoderef() returns a ty_err when it fails to infer the type.
probe::probe() should respect this failure and fail together to prevent
further corruption.
Call stack: check::check_method_call() -> method::lookup() ->
probe::probe() + confirm::confirm()
Fixesrust-lang#19692.
Fixesrust-lang#19583.
Fixesrust-lang#19297.
…kfelix
`check::autoderef()` returns a `ty_err` when it fails to infer the type. `probe::probe()` should respect this failure and fail together to prevent further corruption.
Fixes#19692.
Fixes#19583.
Fixes#19297.
…kfelix
`check::autoderef()` returns a `ty_err` when it fails to infer the type. `probe::probe()` should respect this failure and fail together to prevent further corruption.
Fixes#19692.
Fixes#19583.
Fixes#19297.
The following (invalid) code triggers an ICE:
The same error occurs when replacing
clone
with some other methods from prelude traits with similar signatures -to_c_str
orinto_string
for example.However, if I declare my own trait with a similar method, e.g.:
trait Bar { fn bar(&self) -> Self; }
, and then replace the method call with a call tobar
, there is an identical error message, but no ICE.Removing either the
Some
or theref
makes the ICE disappear.Compiler output:
This occurs under:
The text was updated successfully, but these errors were encountered: