Closed
Description
openedon Dec 22, 2019
Hi,
#![feature(or_patterns)]
fn foo((Some(_) | None): Option<u32>) {
//
}
... crashes on nightly with:
error: internal compiler error: match pairs [MatchPair { place: _1, pattern: Pat { ty: std::option::Option<u32>, span: src/lib.rs:3:9: 3:23, kind: Or { pats: [Pat { ty: std::option::Option<u32>, span: src/lib.rs:3:9: 3:16, kind: Variant { adt_def: std::option::Option, substs: [u32], variant_index: 1, subpatterns: [FieldPat { field: field[0], pattern: Pat { ty: u32, span: src/lib.rs:3:14: 3:15, kind: Wild } }] } }, Pat { ty: std::option::Option<u32>, span: src/lib.rs:3:19: 3:23, kind: Variant { adt_def: std::option::Option, substs: [u32], variant_index: 0, subpatterns: [] } }] } } }] remaining after simplifying irrefutable pattern
Backtrace
warning: the feature `or_patterns` is incomplete and may cause the compiler to crash
--> src/lib.rs:1:12
|
1 | #![feature(or_patterns)]
| ^^^^^^^^^^^
|
= note: `#[warn(incomplete_features)]` on by default
warning: function is never used: `foo`
--> src/lib.rs:3:4
|
3 | fn foo((Some(_) | None): Option<u32>) {
| ^^^
|
= note: `#[warn(dead_code)]` on by default
error: internal compiler error: match pairs [MatchPair { place: _1, pattern: Pat { ty: std::option::Option<u32>, span: src/lib.rs:3:9: 3:23, kind: Or { pats: [Pat { ty: std::option::Option<u32>, span: src/lib.rs:3:9: 3:16, kind: Variant { adt_def: std::option::Option, substs: [u32], variant_index: 1, subpatterns: [FieldPat { field: field[0], pattern: Pat { ty: u32, span: src/lib.rs:3:14: 3:15, kind: Wild } }] } }, Pat { ty: std::option::Option<u32>, span: src/lib.rs:3:19: 3:23, kind: Variant { adt_def: std::option::Option, substs: [u32], variant_index: 0, subpatterns: [] } }] } } }] remaining after simplifying irrefutable pattern
--> src/lib.rs:3:9
|
3 | fn foo((Some(_) | None): Option<u32>) {
| ^^^^^^^^^^^^^^
thread 'rustc' panicked at 'no errors encountered even though `delay_span_bug` issued', src/librustc_errors/lib.rs:347:17
stack backtrace:
0: backtrace::backtrace::libunwind::trace
at /cargo/registry/src/github.com-1ecc6299db9ec823/backtrace-0.3.40/src/backtrace/libunwind.rs:88
1: backtrace::backtrace::trace_unsynchronized
at /cargo/registry/src/github.com-1ecc6299db9ec823/backtrace-0.3.40/src/backtrace/mod.rs:66
2: std::sys_common::backtrace::_print_fmt
at src/libstd/sys_common/backtrace.rs:84
3: <std::sys_common::backtrace::_print::DisplayBacktrace as core::fmt::Display>::fmt
at src/libstd/sys_common/backtrace.rs:61
4: core::fmt::write
at src/libcore/fmt/mod.rs:1057
5: std::io::Write::write_fmt
at src/libstd/io/mod.rs:1426
6: std::sys_common::backtrace::_print
at src/libstd/sys_common/backtrace.rs:65
7: std::sys_common::backtrace::print
at src/libstd/sys_common/backtrace.rs:50
8: std::panicking::default_hook::{{closure}}
at src/libstd/panicking.rs:193
9: std::panicking::default_hook
at src/libstd/panicking.rs:210
10: rustc_driver::report_ice
11: std::panicking::rust_panic_with_hook
at src/libstd/panicking.rs:475
12: std::panicking::begin_panic
13: <rustc_errors::HandlerInner as core::ops::drop::Drop>::drop
14: core::ptr::real_drop_in_place
15: core::ptr::real_drop_in_place
16: core::ptr::real_drop_in_place
17: rustc_interface::interface::run_compiler_in_existing_thread_pool
18: std::thread::local::LocalKey<T>::with
19: scoped_tls::ScopedKey<T>::set
20: syntax::with_globals
note: Some details are omitted, run with `RUST_BACKTRACE=full` for a verbose backtrace.
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.42.0-nightly (fc5deca21 2019-12-21) running on x86_64-unknown-linux-gnu
note: compiler flags: -C codegen-units=1 -C debuginfo=2 --crate-type lib
note: some of the compiler flags provided by cargo are hidden
query stack during panic:
end of query stack
error: could not compile `playground`.
To learn more, run the command again with --verbose.
It doesn't crash on current stable and beta, but it may be because they ignore the feature flag.
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment