diff options
| author | Ellen <supbscripter@gmail.com> | 2021-10-06 04:37:07 +0100 |
|---|---|---|
| committer | Ellen <supbscripter@gmail.com> | 2021-10-06 04:37:36 +0100 |
| commit | edfd6d591b51da089b65c68ece0aecd1e9b8a42b (patch) | |
| tree | ca3b035557270615ef2d6ff8de84dab40d40051c | |
| parent | 25ec8273855fde2d72ae877b397e054de5300e10 (diff) | |
| download | rust-edfd6d591b51da089b65c68ece0aecd1e9b8a42b.tar.gz rust-edfd6d591b51da089b65c68ece0aecd1e9b8a42b.zip | |
test
| -rw-r--r-- | src/test/ui/const-generics/generic_const_exprs/const_eval_resolve_canonical.rs | 29 |
1 files changed, 29 insertions, 0 deletions
diff --git a/src/test/ui/const-generics/generic_const_exprs/const_eval_resolve_canonical.rs b/src/test/ui/const-generics/generic_const_exprs/const_eval_resolve_canonical.rs new file mode 100644 index 00000000000..b79bc262d2b --- /dev/null +++ b/src/test/ui/const-generics/generic_const_exprs/const_eval_resolve_canonical.rs @@ -0,0 +1,29 @@ +// run-pass +#![feature(generic_const_exprs)] +#![allow(incomplete_features)] + +trait Foo<const N: usize> { + type Assoc: Default; +} + +impl Foo<0> for () { + type Assoc = u32; +} + +impl Foo<3> for () { + type Assoc = i64; +} + +fn foo<T, const N: usize>(_: T) -> <() as Foo<{ N + 1 }>>::Assoc +where + (): Foo<{ N + 1 }>, +{ + Default::default() +} + +fn main() { + // Test that we can correctly infer `T` which requires evaluating + // `{ N + 1 }` which has substs containing an inference var + let mut _q = Default::default(); + _q = foo::<_, 2>(_q); +} |
