Skip to content

ICE in desugar, at rust/ast/rust-desugar-while-let.cc:56 `while let = 5 {} #4162

@matthiaskrgr

Description

@matthiaskrgr

auto-reduced (treereduce-rust):

//@compile-flags: -frust-incomplete-and-experimental-compiler-do-not-use




pub fn main() {
    while let  = 5
    {}
}

original:

fn inside_const_generic_arguments() {
    while let A::<
        {
            fn _check_try_binds_tighter() -> Result<(), ()> {
                while let 0 = 0? {}

                Ok(())
            }
        },
    >::O = 5
    {}
}

pub fn main() {
    while let  = 5
    {}
}

Version information:

4db0cf7

Possibly related line of code:

return MatchCase (std::move (arm), std::move (body));
}
std::unique_ptr<Expr>
DesugarWhileLet::desugar (WhileLetLoopExpr &expr)
{
rust_assert (expr.get_patterns ().size () == 1);
auto pattern = expr.get_patterns ()[0]->clone_pattern ();
auto body = expr.get_loop_block ().clone_block_expr ();
auto scrutinee = expr.get_scrutinee_expr ().clone_expr ();
auto ctx = DesugarCtx (expr.get_locus ());

Command:
/home/matthias/vcs/github/gccrs/gccrs-build/gcc/crab1 -frust-incomplete-and-experimental-compiler-do-not-use

Program output

crab1: internal compiler error: in desugar, at rust/ast/rust-desugar-while-let.cc:56
0x301e249 internal_error(char const*, ...)
	../../gcc/diagnostic-global-context.cc:786
0xc22881 fancy_abort(char const*, int, char const*)
	../../gcc/diagnostics/context.cc:1787
0x91c781 Rust::AST::DesugarWhileLet::desugar(Rust::AST::WhileLetLoopExpr&)
	../../gcc/rust/ast/rust-desugar-while-let.cc:56
0x11d2d13 Rust::AST::DesugarWhileLet::go(std::unique_ptr<Rust::AST::Expr, std::default_delete<Rust::AST::Expr> >&)
	../../gcc/rust/ast/rust-desugar-while-let.cc:98
0x11cf3a7 Rust::AST::ExpressionYeast::dispatch_loops(std::unique_ptr<Rust::AST::Expr, std::default_delete<Rust::AST::Expr> >&)
	../../gcc/rust/ast/rust-expression-yeast.cc:47
0x11cf3a7 Rust::AST::ExpressionYeast::reseat(std::unique_ptr<Rust::AST::Expr, std::default_delete<Rust::AST::Expr> >&)
	../../gcc/rust/ast/rust-expression-yeast.cc:66
0xe48fcf void Rust::AST::DefaultASTVisitor::visit<Rust::AST::Item>(std::unique_ptr<Rust::AST::Item, std::default_delete<Rust::AST::Item> >&)
	../../gcc/rust/ast/rust-ast-visitor.h:422
0xe48fcf Rust::AST::PointerVisitor::reseat(std::unique_ptr<Rust::AST::Item, std::default_delete<Rust::AST::Item> >&)
	../../gcc/rust/ast/rust-ast-pointer-visitor.h:42
0xe48fcf Rust::AST::PointerVisitor::visit(Rust::AST::Crate&)
	../../gcc/rust/ast/rust-ast-pointer-visitor.cc:31
0xe7ad00 Rust::Session::expansion(Rust::AST::Crate&, Rust::Resolver2_0::NameResolutionContext&)
	../../gcc/rust/rust-session-manager.cc:983
0xe87165 Rust::Session::compile_crate(char const*)
	../../gcc/rust/rust-session-manager.cc:618
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.

Metadata

Metadata

Assignees

No one assigned

    Labels

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions