summaryrefslogtreecommitdiffstats
path: root/src/test/ui/const-generics/generic_const_exprs/const_kind_expr/wf_obligation.rs
blob: 6093fc70b16965c6153db11740f9e3a0efd02386 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
#![feature(generic_const_exprs, generic_arg_infer)]
#![allow(incomplete_features)]

// minimized repro for #105205
//
// the `foo::<_, L>` call results in a `WellFormed(_)` obligation and a
// `ConstEvaluatable(Unevaluated(_ + 1 + L))` obligation. Attempting to fulfill the latter
// unifies the `_` with `Expr(L - 1)` from the paramenv which turns the `WellFormed`
// obligation into `WellFormed(Expr(L - 1))`

fn foo<const N: usize, const M: usize>(_: [(); N + 1 + M]) {}

fn ice<const L: usize>()
where
    [(); (L - 1) + 1 + L]:,
{
    foo::<_, L>([(); L + 1 + L]);
    //~^ ERROR: mismatched types
    //~^^ ERROR: unconstrained generic constant
}

fn main() {}