Skip to content

Commit

Permalink
add lazy normalization regression tests
Browse files Browse the repository at this point in the history
  • Loading branch information
lcnr committed Jul 15, 2020
1 parent 567ad74 commit 5269459
Show file tree
Hide file tree
Showing 2 changed files with 36 additions and 0 deletions.
18 changes: 18 additions & 0 deletions src/test/ui/lazy_normalization_consts/trait-resolution-breakage.rs
Original file line number Diff line number Diff line change
@@ -0,0 +1,18 @@
// check-pass

trait Trait<T> {
const ASSOC_CONST: usize = 0;
}

impl Trait<()> for u8 {}

// `u8::ASSOC_CONST` is resolved today, but will be ambiguous
// under lazy normalization.
fn foo<T, U>() -> [(T, U); u8::ASSOC_CONST]
where
u8: Trait<T> + Trait<U>,
{
todo!()
}

fn main() {}
18 changes: 18 additions & 0 deletions src/test/ui/lazy_normalization_consts/unevaluated-consts.rs
Original file line number Diff line number Diff line change
@@ -0,0 +1,18 @@
// check-pass

// If we allow the parent generics here without using lazy normalization
// this results in a cycle error.
struct Foo<T, U>(T, U);

impl<T> From<[u8; 1 + 1]> for Foo<T, [u8; 1 + 1]> {
fn from(value: [u8; 1 + 1]) -> Foo<T, [u8; 1 + 1]> {
todo!();
}
}

fn break_me<T>()
where
[u8; 1 + 1]: From<[u8; 1 + 1]>
{}

fn main() {}

0 comments on commit 5269459

Please sign in to comment.