Add unit test for issue 78174
This commit is contained in:
parent
4acef9ac19
commit
1d32b20170
36
src/test/ui/inline-const/const-expr-lifetime.rs
Normal file
36
src/test/ui/inline-const/const-expr-lifetime.rs
Normal file
@ -0,0 +1,36 @@
|
||||
// run-pass
|
||||
|
||||
#![allow(incomplete_features)]
|
||||
#![feature(const_mut_refs)]
|
||||
#![feature(inline_const)]
|
||||
|
||||
use std::marker::PhantomData;
|
||||
|
||||
// rust-lang/rust#78174: ICE: "cannot convert ReErased to a region vid"
|
||||
fn issue_78174() {
|
||||
let foo = const { "foo" };
|
||||
assert_eq!(foo, "foo");
|
||||
}
|
||||
|
||||
pub struct InvariantRef<'a, T: ?Sized>(&'a T, PhantomData<&'a mut &'a T>);
|
||||
|
||||
impl<'a, T: ?Sized> InvariantRef<'a, T> {
|
||||
pub const fn new(r: &'a T) -> Self {
|
||||
InvariantRef(r, PhantomData)
|
||||
}
|
||||
}
|
||||
|
||||
fn get_invariant_ref<'a>() -> InvariantRef<'a, ()> {
|
||||
const { InvariantRef::<'a, ()>::new(&()) }
|
||||
}
|
||||
|
||||
fn get_invariant_ref2<'a>() -> InvariantRef<'a, ()> {
|
||||
// Try some type inference
|
||||
const { InvariantRef::new(&()) }
|
||||
}
|
||||
|
||||
fn main() {
|
||||
issue_78174();
|
||||
get_invariant_ref();
|
||||
get_invariant_ref2();
|
||||
}
|
36
src/test/ui/inline-const/const-match-pat-lifetime.rs
Normal file
36
src/test/ui/inline-const/const-match-pat-lifetime.rs
Normal file
@ -0,0 +1,36 @@
|
||||
// run-pass
|
||||
|
||||
#![allow(incomplete_features)]
|
||||
#![feature(const_mut_refs)]
|
||||
#![feature(inline_const)]
|
||||
|
||||
use std::marker::PhantomData;
|
||||
|
||||
// rust-lang/rust#78174: ICE: "cannot convert ReErased to a region vid"
|
||||
fn issue_78174() {
|
||||
match "foo" {
|
||||
const { concat!("fo", "o") } => (),
|
||||
_ => unreachable!(),
|
||||
}
|
||||
}
|
||||
|
||||
#[derive(PartialEq, Eq)]
|
||||
pub struct InvariantRef<'a, T: ?Sized>(&'a T, PhantomData<&'a mut &'a T>);
|
||||
|
||||
impl<'a, T: ?Sized> InvariantRef<'a, T> {
|
||||
pub const fn new(r: &'a T) -> Self {
|
||||
InvariantRef(r, PhantomData)
|
||||
}
|
||||
}
|
||||
|
||||
fn match_invariant_ref<'a>() {
|
||||
match const { InvariantRef::<'a, _>::new(&()) } {
|
||||
const { InvariantRef::<'a, ()>::new(&()) } => {
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
fn main() {
|
||||
issue_78174();
|
||||
match_invariant_ref();
|
||||
}
|
Loading…
Reference in New Issue
Block a user