Skip to content

Infinite loop in fulfillment ICE #18

Open
@compiler-errors

Description

@compiler-errors
pub fn main() {
    let mut x;
    x = Box::new(x);
}

Triggers the not implemented: overflowed on pending obligations ICE in the new solver fulfillment context. We probably should actually just turn that into a hard error.

thread 'rustc' panicked at 'not implemented: overflowed on pending obligations: [Obligation(predicate=Binder(CoercePredicate { a: _#1t, b: _#5t }, []), cause=ObligationCause { span: <source>:3:18: 3:19 (#0), body_id: DefId(0:3 ~ example[4e51]::main), code: ExprAssignable }, param_env=ParamEnv { caller_bounds: [], reveal: UserFacing, constness: NotConst }, depth=0), Obligation(predicate=Binder(SubtypePredicate { a_is_expected: false, a: _#5t, b: _#6t }, []), cause=ObligationCause { span: <source>:3:9: 3:20 (#0), body_id: DefId(0:3 ~ example[4e51]::main), code: ExprAssignable }, param_env=ParamEnv { caller_bounds: [], reveal: UserFacing, constness: NotConst }, depth=0)]', compiler/rustc_trait_selection/src/solve/fulfill.rs:59:17

We also probably should investigate why this coerce predicate really is looping forever -- it's not clear why it shouldn't just turn into ambig.

Metadata

Metadata

Assignees

No one assigned

    Labels

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

      Development

      Participants

      @compiler-errors

      Issue actions

        Infinite loop in fulfillment ICE · Issue #18 · compiler-errors/next-solver-hir-issues