diff options
| author | Michael Goulet <michael@errs.io> | 2022-10-25 02:11:24 +0000 |
|---|---|---|
| committer | Michael Goulet <michael@errs.io> | 2022-11-18 17:40:15 +0000 |
| commit | c286ad985c5116c1ff76a9d04dcb0a3fdf4af8e2 (patch) | |
| tree | aa1f1d5280aeb4f2890613f14c3709193fca57d9 | |
| parent | b8a92c1dd66c46a5150d2b899294d682683d87e2 (diff) | |
| download | rust-c286ad985c5116c1ff76a9d04dcb0a3fdf4af8e2.tar.gz rust-c286ad985c5116c1ff76a9d04dcb0a3fdf4af8e2.zip | |
Add test
| -rw-r--r-- | src/test/ui/impl-trait/normalize-tait-in-const.rs | 39 | ||||
| -rw-r--r-- | src/test/ui/impl-trait/normalize-tait-in-const.stderr | 8 |
2 files changed, 47 insertions, 0 deletions
diff --git a/src/test/ui/impl-trait/normalize-tait-in-const.rs b/src/test/ui/impl-trait/normalize-tait-in-const.rs new file mode 100644 index 00000000000..020bcbb8396 --- /dev/null +++ b/src/test/ui/impl-trait/normalize-tait-in-const.rs @@ -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() {} diff --git a/src/test/ui/impl-trait/normalize-tait-in-const.stderr b/src/test/ui/impl-trait/normalize-tait-in-const.stderr new file mode 100644 index 00000000000..b9fc8726ffc --- /dev/null +++ b/src/test/ui/impl-trait/normalize-tait-in-const.stderr @@ -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 + |
