forked from rust-lang/rust
-
Notifications
You must be signed in to change notification settings - Fork 1
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
Rollup merge of rust-lang#69192 - JohnTitor:add-tests, r=Centril
Add more regression tests Closes rust-lang#39618 Closes rust-lang#51798 Closes rust-lang#62894 Closes rust-lang#63952 Closes rust-lang#68653 r? @Centril
- Loading branch information
Showing
8 changed files
with
159 additions
and
0 deletions.
There are no files selected for viewing
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,28 @@ | ||
// Regression test for #63952, shouldn't hang. | ||
|
||
use std::usize; | ||
|
||
#[repr(C)] | ||
#[derive(Copy, Clone)] | ||
struct SliceRepr { | ||
ptr: *const u8, | ||
len: usize, | ||
} | ||
|
||
union SliceTransmute { | ||
repr: SliceRepr, | ||
slice: &'static [u8], | ||
} | ||
|
||
// bad slice: length too big to even exist anywhere | ||
const SLICE_WAY_TOO_LONG: &[u8] = unsafe { //~ ERROR: it is undefined behavior to use this value | ||
SliceTransmute { | ||
repr: SliceRepr { | ||
ptr: &42, | ||
len: usize::MAX, | ||
}, | ||
} | ||
.slice | ||
}; | ||
|
||
fn main() {} |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,17 @@ | ||
error[E0080]: it is undefined behavior to use this value | ||
--> $DIR/issue-63952.rs:18:1 | ||
| | ||
LL | / const SLICE_WAY_TOO_LONG: &[u8] = unsafe { | ||
LL | | SliceTransmute { | ||
LL | | repr: SliceRepr { | ||
LL | | ptr: &42, | ||
... | | ||
LL | | .slice | ||
LL | | }; | ||
| |__^ invalid slice: total size is bigger than largest supported object | ||
| | ||
= 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. | ||
|
||
error: aborting due to previous error | ||
|
||
For more information about this error, try `rustc --explain E0080`. |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,16 @@ | ||
// A regression test for #68653, which was fixed by #68938. | ||
|
||
// check-pass | ||
|
||
#![allow(incomplete_features)] | ||
#![feature(generic_associated_types)] | ||
|
||
trait Fun { | ||
type F<'a: 'a>; | ||
} | ||
|
||
impl <T> Fun for T { | ||
type F<'a> = Self; | ||
} | ||
|
||
fn main() {} |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,3 @@ | ||
#![crate_type = "lib"] | ||
|
||
pub fn vec() -> Vec<u8> { vec![] } |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,14 @@ | ||
// edition:2018 | ||
// aux-build:issue-51798.rs | ||
// check-pass | ||
|
||
extern crate issue_51798; | ||
|
||
mod server { | ||
fn f() { | ||
let mut v = issue_51798::vec(); | ||
v.clear(); | ||
} | ||
} | ||
|
||
fn main() {} |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,7 @@ | ||
// Regression test for #62894, shouldn't crash. | ||
// error-pattern: this file contains an unclosed delimiter | ||
// error-pattern: expected one of `(`, `[`, or `{`, found keyword `fn` | ||
|
||
fn f() { assert_eq!(f(), (), assert_eq!(assert_eq! | ||
|
||
fn main() {} |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,47 @@ | ||
error: this file contains an unclosed delimiter | ||
--> $DIR/issue-62894.rs:7:14 | ||
| | ||
LL | fn f() { assert_eq!(f(), (), assert_eq!(assert_eq! | ||
| - - - unclosed delimiter | ||
| | | | ||
| | unclosed delimiter | ||
| unclosed delimiter | ||
LL | | ||
LL | fn main() {} | ||
| ^ | ||
|
||
error: this file contains an unclosed delimiter | ||
--> $DIR/issue-62894.rs:7:14 | ||
| | ||
LL | fn f() { assert_eq!(f(), (), assert_eq!(assert_eq! | ||
| - - - unclosed delimiter | ||
| | | | ||
| | unclosed delimiter | ||
| unclosed delimiter | ||
LL | | ||
LL | fn main() {} | ||
| ^ | ||
|
||
error: this file contains an unclosed delimiter | ||
--> $DIR/issue-62894.rs:7:14 | ||
| | ||
LL | fn f() { assert_eq!(f(), (), assert_eq!(assert_eq! | ||
| - - - unclosed delimiter | ||
| | | | ||
| | unclosed delimiter | ||
| unclosed delimiter | ||
LL | | ||
LL | fn main() {} | ||
| ^ | ||
|
||
error: expected one of `(`, `[`, or `{`, found keyword `fn` | ||
--> $DIR/issue-62894.rs:7:1 | ||
| | ||
LL | fn f() { assert_eq!(f(), (), assert_eq!(assert_eq! | ||
| - expected one of `(`, `[`, or `{` | ||
LL | | ||
LL | fn main() {} | ||
| ^^ unexpected token | ||
|
||
error: aborting due to 4 previous errors | ||
|
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,27 @@ | ||
// Regression test for #39618, shouldn't crash. | ||
// FIXME(JohnTitor): Centril pointed out this looks suspicions, we should revisit here. | ||
// More context: https://github.com/rust-lang/rust/pull/69192#discussion_r379846796 | ||
|
||
// check-pass | ||
|
||
#![feature(specialization)] | ||
|
||
trait Foo { | ||
fn foo(&self); | ||
} | ||
|
||
trait Bar { | ||
fn bar(&self); | ||
} | ||
|
||
impl<T> Bar for T where T: Foo { | ||
fn bar(&self) {} | ||
} | ||
|
||
impl<T> Foo for T where T: Bar { | ||
fn foo(&self) {} | ||
} | ||
|
||
impl Foo for u64 {} | ||
|
||
fn main() {} |