Skip to content

Commit d1f175b

Browse files
authored
Rollup merge of #69192 - JohnTitor:add-tests, r=Centril
Add more regression tests Closes #39618 Closes #51798 Closes #62894 Closes #63952 Closes #68653 r? @Centril
2 parents 391e7e2 + 2f39ec2 commit d1f175b

File tree

8 files changed

+159
-0
lines changed

8 files changed

+159
-0
lines changed

src/test/ui/consts/issue-63952.rs

+28
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,28 @@
1+
// Regression test for #63952, shouldn't hang.
2+
3+
use std::usize;
4+
5+
#[repr(C)]
6+
#[derive(Copy, Clone)]
7+
struct SliceRepr {
8+
ptr: *const u8,
9+
len: usize,
10+
}
11+
12+
union SliceTransmute {
13+
repr: SliceRepr,
14+
slice: &'static [u8],
15+
}
16+
17+
// bad slice: length too big to even exist anywhere
18+
const SLICE_WAY_TOO_LONG: &[u8] = unsafe { //~ ERROR: it is undefined behavior to use this value
19+
SliceTransmute {
20+
repr: SliceRepr {
21+
ptr: &42,
22+
len: usize::MAX,
23+
},
24+
}
25+
.slice
26+
};
27+
28+
fn main() {}

src/test/ui/consts/issue-63952.stderr

+17
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,17 @@
1+
error[E0080]: it is undefined behavior to use this value
2+
--> $DIR/issue-63952.rs:18:1
3+
|
4+
LL | / const SLICE_WAY_TOO_LONG: &[u8] = unsafe {
5+
LL | | SliceTransmute {
6+
LL | | repr: SliceRepr {
7+
LL | | ptr: &42,
8+
... |
9+
LL | | .slice
10+
LL | | };
11+
| |__^ invalid slice: total size is bigger than largest supported object
12+
|
13+
= note: The rules on what exactly is undefined behavior aren't clear, so this check might be overzealous. Please open an issue on the rustc repository if you believe it should not be considered undefined behavior.
14+
15+
error: aborting due to previous error
16+
17+
For more information about this error, try `rustc --explain E0080`.
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,16 @@
1+
// A regression test for #68653, which was fixed by #68938.
2+
3+
// check-pass
4+
5+
#![allow(incomplete_features)]
6+
#![feature(generic_associated_types)]
7+
8+
trait Fun {
9+
type F<'a: 'a>;
10+
}
11+
12+
impl <T> Fun for T {
13+
type F<'a> = Self;
14+
}
15+
16+
fn main() {}
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,3 @@
1+
#![crate_type = "lib"]
2+
3+
pub fn vec() -> Vec<u8> { vec![] }

src/test/ui/issues/issue-51798.rs

+14
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,14 @@
1+
// edition:2018
2+
// aux-build:issue-51798.rs
3+
// check-pass
4+
5+
extern crate issue_51798;
6+
7+
mod server {
8+
fn f() {
9+
let mut v = issue_51798::vec();
10+
v.clear();
11+
}
12+
}
13+
14+
fn main() {}

src/test/ui/parser/issue-62894.rs

+7
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,7 @@
1+
// Regression test for #62894, shouldn't crash.
2+
// error-pattern: this file contains an unclosed delimiter
3+
// error-pattern: expected one of `(`, `[`, or `{`, found keyword `fn`
4+
5+
fn f() { assert_eq!(f(), (), assert_eq!(assert_eq!
6+
7+
fn main() {}

src/test/ui/parser/issue-62894.stderr

+47
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,47 @@
1+
error: this file contains an unclosed delimiter
2+
--> $DIR/issue-62894.rs:7:14
3+
|
4+
LL | fn f() { assert_eq!(f(), (), assert_eq!(assert_eq!
5+
| - - - unclosed delimiter
6+
| | |
7+
| | unclosed delimiter
8+
| unclosed delimiter
9+
LL |
10+
LL | fn main() {}
11+
| ^
12+
13+
error: this file contains an unclosed delimiter
14+
--> $DIR/issue-62894.rs:7:14
15+
|
16+
LL | fn f() { assert_eq!(f(), (), assert_eq!(assert_eq!
17+
| - - - unclosed delimiter
18+
| | |
19+
| | unclosed delimiter
20+
| unclosed delimiter
21+
LL |
22+
LL | fn main() {}
23+
| ^
24+
25+
error: this file contains an unclosed delimiter
26+
--> $DIR/issue-62894.rs:7:14
27+
|
28+
LL | fn f() { assert_eq!(f(), (), assert_eq!(assert_eq!
29+
| - - - unclosed delimiter
30+
| | |
31+
| | unclosed delimiter
32+
| unclosed delimiter
33+
LL |
34+
LL | fn main() {}
35+
| ^
36+
37+
error: expected one of `(`, `[`, or `{`, found keyword `fn`
38+
--> $DIR/issue-62894.rs:7:1
39+
|
40+
LL | fn f() { assert_eq!(f(), (), assert_eq!(assert_eq!
41+
| - expected one of `(`, `[`, or `{`
42+
LL |
43+
LL | fn main() {}
44+
| ^^ unexpected token
45+
46+
error: aborting due to 4 previous errors
47+
+27
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,27 @@
1+
// Regression test for #39618, shouldn't crash.
2+
// FIXME(JohnTitor): Centril pointed out this looks suspicions, we should revisit here.
3+
// More context: https://github.com/rust-lang/rust/pull/69192#discussion_r379846796
4+
5+
// check-pass
6+
7+
#![feature(specialization)]
8+
9+
trait Foo {
10+
fn foo(&self);
11+
}
12+
13+
trait Bar {
14+
fn bar(&self);
15+
}
16+
17+
impl<T> Bar for T where T: Foo {
18+
fn bar(&self) {}
19+
}
20+
21+
impl<T> Foo for T where T: Bar {
22+
fn foo(&self) {}
23+
}
24+
25+
impl Foo for u64 {}
26+
27+
fn main() {}

0 commit comments

Comments
 (0)