Skip to content

Commit

Permalink
Add regression tests for const-generic IATs
Browse files Browse the repository at this point in the history
  • Loading branch information
fmease committed Apr 25, 2023
1 parent a7aa205 commit 2f35448
Show file tree
Hide file tree
Showing 2 changed files with 51 additions and 0 deletions.
23 changes: 23 additions & 0 deletions tests/ui/associated-inherent-types/const-generics.rs
Original file line number Diff line number Diff line change
@@ -0,0 +1,23 @@
// Regression test for issue #109759.
// check-pass

#![feature(inherent_associated_types)]
#![allow(incomplete_features)]

struct Foo;

struct Bar<const X: usize>([(); X]);

impl<const X: usize> Bar<X> {
pub fn new() -> Self {
Self([(); X])
}
}

impl Foo {
type Bar<const X: usize> = Bar<X>;
}

fn main() {
let _ = Foo::Bar::<10>::new();
}
28 changes: 28 additions & 0 deletions tests/ui/associated-inherent-types/generic-const-exprs.rs
Original file line number Diff line number Diff line change
@@ -0,0 +1,28 @@
// check-pass

#![feature(inherent_associated_types, generic_const_exprs)]
#![allow(incomplete_features)]

struct Parent<const O: usize>;

impl<const O: usize> Parent<O> {
type Mapping<const I: usize> = Store<{ O + I }>
where
[(); O + I]:
;
}

struct Store<const N: usize>;

impl<const N: usize> Store<N> {
const REIFIED: usize = N;

fn reify() -> usize {
N
}
}

fn main() {
let _ = Parent::<2>::Mapping::<{ 12 * 2 }>::REIFIED;
let _ = Parent::<1>::Mapping::<{ 2 * 5 }>::reify();
}

0 comments on commit 2f35448

Please sign in to comment.