Skip to content

Commit 4e7edf3

Browse files
committed
Add tests.
1 parent ce1073b commit 4e7edf3

File tree

3 files changed

+72
-0
lines changed

3 files changed

+72
-0
lines changed

tests/ui/impl-trait/issue-108591.rs

+30
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,30 @@
1+
// check-pass
2+
3+
#![feature(type_alias_impl_trait)]
4+
5+
struct MyTy<'a>(Vec<u8>, &'a ());
6+
7+
impl MyTy<'_> {
8+
fn one(&mut self) -> &mut impl Sized {
9+
&mut self.0
10+
}
11+
fn two(&mut self) -> &mut (impl Sized + 'static) {
12+
self.one()
13+
}
14+
}
15+
16+
type Opaque<'a> = impl Sized;
17+
fn define<'a>() -> Opaque<'a> {}
18+
19+
fn test<'a>() {
20+
None::<&'static Opaque<'a>>;
21+
}
22+
23+
fn one<'a, 'b: 'b>() -> &'a impl Sized {
24+
&()
25+
}
26+
fn two<'a, 'b>() {
27+
one::<'a, 'b>();
28+
}
29+
30+
fn main() {}

tests/ui/impl-trait/issue-108592.rs

+21
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,21 @@
1+
// check-pass
2+
#![feature(type_alias_impl_trait)]
3+
4+
fn opaque<'a: 'a>() -> impl Sized {}
5+
fn assert_static<T: 'static>(_: T) {}
6+
7+
fn test_closure() {
8+
let closure = |_| {
9+
assert_static(opaque());
10+
};
11+
closure(&opaque());
12+
}
13+
14+
type Opaque<'a> = impl Sized;
15+
fn define<'a>() -> Opaque<'a> {}
16+
17+
fn test_tait(_: &Opaque<'_>) {
18+
None::<&'static Opaque<'_>>;
19+
}
20+
21+
fn main() {}
+21
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,21 @@
1+
error[E0428]: the name `test` is defined multiple times
2+
--> $DIR/issue-108592.rs:17:1
3+
|
4+
LL | fn test() {
5+
| --------- previous definition of the value `test` here
6+
...
7+
LL | fn test(_: &Opaque<'_>) {
8+
| ^^^^^^^^^^^^^^^^^^^^^^^ `test` redefined here
9+
|
10+
= note: `test` must be defined only once in the value namespace of this module
11+
12+
error[E0601]: `main` function not found in crate `issue_108592`
13+
--> $DIR/issue-108592.rs:20:2
14+
|
15+
LL | }
16+
| ^ consider adding a `main` function to `$DIR/issue-108592.rs`
17+
18+
error: aborting due to 2 previous errors
19+
20+
Some errors have detailed explanations: E0428, E0601.
21+
For more information about an error, try `rustc --explain E0428`.

0 commit comments

Comments
 (0)