mirror of
https://github.com/rust-lang/rust.git
synced 2025-02-18 18:04:13 +00:00
Add test
This commit is contained in:
parent
b8a92c1dd6
commit
c286ad985c
39
src/test/ui/impl-trait/normalize-tait-in-const.rs
Normal file
39
src/test/ui/impl-trait/normalize-tait-in-const.rs
Normal file
@ -0,0 +1,39 @@
|
||||
// known-bug: #103507
|
||||
// failure-status: 101
|
||||
// normalize-stderr-test "note: .*\n\n" -> ""
|
||||
// normalize-stderr-test "thread 'rustc' panicked.*\n" -> ""
|
||||
// rustc-env:RUST_BACKTRACE=0
|
||||
|
||||
#![feature(type_alias_impl_trait)]
|
||||
#![feature(const_trait_impl)]
|
||||
#![feature(const_refs_to_cell)]
|
||||
#![feature(inline_const)]
|
||||
|
||||
use std::marker::Destruct;
|
||||
|
||||
trait T {
|
||||
type Item;
|
||||
}
|
||||
|
||||
type Alias<'a> = impl T<Item = &'a ()>;
|
||||
|
||||
struct S;
|
||||
impl<'a> T for &'a S {
|
||||
type Item = &'a ();
|
||||
}
|
||||
|
||||
const fn filter_positive<'a>() -> &'a Alias<'a> {
|
||||
&&S
|
||||
}
|
||||
|
||||
const fn with_positive<F: ~const for<'a> Fn(&'a Alias<'a>) + ~const Destruct>(fun: F) {
|
||||
fun(filter_positive());
|
||||
}
|
||||
|
||||
const fn foo(_: &Alias<'_>) {}
|
||||
|
||||
const BAR: () = {
|
||||
with_positive(foo);
|
||||
};
|
||||
|
||||
fn main() {}
|
8
src/test/ui/impl-trait/normalize-tait-in-const.stderr
Normal file
8
src/test/ui/impl-trait/normalize-tait-in-const.stderr
Normal file
@ -0,0 +1,8 @@
|
||||
error: internal compiler error: compiler/rustc_middle/src/ty/normalize_erasing_regions.rs:198:90: Failed to normalize <for<'a, 'b> fn(&'a Alias<'b>) {foo} as std::ops::FnOnce<(&&S,)>>::Output, maybe try to call `try_normalize_erasing_regions` instead
|
||||
|
||||
query stack during panic:
|
||||
#0 [eval_to_allocation_raw] const-evaluating + checking `BAR`
|
||||
#1 [eval_to_const_value_raw] simplifying constant for the type system `BAR`
|
||||
end of query stack
|
||||
error: aborting due to previous error
|
||||
|
Loading…
Reference in New Issue
Block a user