Skip to content

Commit

Permalink
Rollup merge of rust-lang#110817 - fmease:fix-109759, r=compiler-errors
Browse files Browse the repository at this point in the history
Add regression tests for const-generic inherent associated types

Fixes rust-lang#109759.
The tests are no longer failing since rust-lang#96840 which was merged recently (rust-lang#109410 is no longer necessary for them).

`@rustbot` label F-inherent_associated_types
  • Loading branch information
jyn514 authored Apr 26, 2023
2 parents a441144 + 2f35448 commit 8c0dfa3
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 8c0dfa3

Please sign in to comment.