auto-reduced (treereduce-rust):
//@compile-flags: -frust-incomplete-and-experimental-compiler-do-not-use -frust-crate-attr=no_core
enum Foo<'a> {
Bar { field: &u64 },
}
fn in_let() {
let y = 22;
let foo = Foo::Bar { field: &y };
let Foo::Bar::<'static> { field: _z } = foo;
}
original:
enum Foo<'a> {
Bar { field: &u64 }
}
fn in_let() {
let y = 22;
let foo = Foo::Bar { field: &y };
//~^ ERROR `y` does not live long enough
let Foo::Bar::<'static> { field: _z } = foo;
}
fn in_match() {
let y = 22;
let foo = Foo::Bar { field: &y };
//~^ ERROR `y` does not live long enough
match foo {
Foo::Bar::<'static> { field: _z } => {
}
}
}
fn main() { }
Version information:
c539964
Possibly related line of code:
|
bool |
|
StructPattern::is_refutable (const TyTy::BaseType &scrutinee) const |
|
{ |
|
const auto *inner = scrutinee.destructure (); |
|
rust_assert (inner->get_kind () == TyTy::TypeKind::ADT); |
|
const auto &adt = static_cast<const TyTy::ADTType &> (*inner); |
|
rust_assert (!adt.is_enum ()); |
|
TyTy::VariantDef *variant = adt.get_variants ().at (0); |
|
|
|
for (const auto &field : elems.get_struct_pattern_fields ()) |
|
{ |
|
switch (field->get_item_type ()) |
|
{ |
Command:
/home/matthias/vcs/github/gccrs/gccrs-build/gcc/crab1 -frust-incomplete-and-experimental-compiler-do-not-use -frust-crate-attr=no_core -frust-crate-attr=feature(no_core)
Program output
crab1: internal compiler error: in is_refutable, at rust/hir/tree/rust-hir-pattern-abstract.cc:287
0x32edd17 internal_error(char const*, ...)
../../gcc/diagnostic-global-context.cc:787
0xc847b9 fancy_abort(char const*, int, char const*)
../../gcc/diagnostics/context.cc:1813
0x927fe6 Rust::HIR::StructPattern::is_refutable(Rust::TyTy::BaseType const&) const
../../gcc/rust/hir/tree/rust-hir-pattern-abstract.cc:287
0x1199a59 Rust::Analysis::PatternChecker::visit(Rust::HIR::LetStmt&)
../../gcc/rust/checks/errors/rust-hir-pattern-analysis.cc:702
0x1199593 Rust::Analysis::PatternChecker::visit(Rust::HIR::BlockExpr&)
../../gcc/rust/checks/errors/rust-hir-pattern-analysis.cc:281
0x119a4e3 Rust::Analysis::PatternChecker::go(Rust::HIR::Crate&)
../../gcc/rust/checks/errors/rust-hir-pattern-analysis.cc:46
0xecc43b Rust::Session::compile_crate(char const*)
../../gcc/rust/rust-session-manager.cc:815
/home/matthias/vcs/github/gccrs/gccrs-build/gcc/crab1 /tmp/icemaker_global_tempdir.Kh0eHSMMkvzv/rustc_testrunner_tmpdir_reporting.iJly6HyW3yNc/mvce.rs -o/tmp/icemaker_global_tempdir.Kh0eHSMMkvzv/rustc_testrunner_tmpdir_reporting.iJly6HyW3yNc/binaryname -frust-incomplete-and-experimental-compiler-do-not-use -frust-crate-attr=no_core -frust-crate-attr=feature(no_core)
Please submit a full bug report, with preprocessed source (by using -freport-bug).
Please include the complete backtrace with any bug report.
See <https://gcc.gnu.org/bugs/> for instructions.
auto-reduced (treereduce-rust):
original:
Version information:
c539964
Possibly related line of code:
gccrs/gcc/rust/hir/tree/rust-hir-pattern-abstract.cc
Lines 281 to 293 in c539964
Command:
/home/matthias/vcs/github/gccrs/gccrs-build/gcc/crab1 -frust-incomplete-and-experimental-compiler-do-not-use -frust-crate-attr=no_core -frust-crate-attr=feature(no_core)Program output