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

    No branches or pull requests

    Issue actions