forked from rust-lang/rust
-
Notifications
You must be signed in to change notification settings - Fork 6
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
Auto merge of rust-lang#76881 - hameerabbasi:issue-53325, r=oli-obk
Add allocation information to undefined behaviour errors. So far I'm looking on information on whether the error messages are suitable. Fixes rust-lang#53325.
- Loading branch information
Showing
74 changed files
with
1,904 additions
and
167 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
28 changes: 20 additions & 8 deletions
28
...in_const_generics/invalid-patterns.stderr → ...st_generics/invalid-patterns.32bit.stderr
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
72 changes: 72 additions & 0 deletions
72
src/test/ui/const-generics/min_const_generics/invalid-patterns.64bit.stderr
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,72 @@ | ||
error[E0308]: mismatched types | ||
--> $DIR/invalid-patterns.rs:29:21 | ||
| | ||
LL | get_flag::<false, 0xFF>(); | ||
| ^^^^ expected `char`, found `u8` | ||
|
||
error[E0308]: mismatched types | ||
--> $DIR/invalid-patterns.rs:31:14 | ||
| | ||
LL | get_flag::<7, 'c'>(); | ||
| ^ expected `bool`, found integer | ||
|
||
error[E0308]: mismatched types | ||
--> $DIR/invalid-patterns.rs:33:14 | ||
| | ||
LL | get_flag::<42, 0x5ad>(); | ||
| ^^ expected `bool`, found integer | ||
|
||
error[E0308]: mismatched types | ||
--> $DIR/invalid-patterns.rs:33:18 | ||
| | ||
LL | get_flag::<42, 0x5ad>(); | ||
| ^^^^^ expected `char`, found `u8` | ||
|
||
error[E0080]: it is undefined behavior to use this value | ||
--> $DIR/invalid-patterns.rs:38:21 | ||
| | ||
LL | get_flag::<false, { unsafe { char_raw.character } }>(); | ||
| ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ type validation failed: encountered uninitialized bytes, but expected a valid unicode scalar value (in `0..=0x10FFFF` but not in `0xD800..=0xDFFF`) | ||
| | ||
= 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. | ||
= note: the raw bytes of the constant (size: 4, align: 4) { | ||
__ __ __ __ │ ░░░░ | ||
} | ||
|
||
error[E0080]: it is undefined behavior to use this value | ||
--> $DIR/invalid-patterns.rs:40:14 | ||
| | ||
LL | get_flag::<{ unsafe { bool_raw.boolean } }, 'z'>(); | ||
| ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ type validation failed: encountered 0x42, but expected a boolean | ||
| | ||
= 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. | ||
= note: the raw bytes of the constant (size: 1, align: 1) { | ||
42 │ B | ||
} | ||
|
||
error[E0080]: it is undefined behavior to use this value | ||
--> $DIR/invalid-patterns.rs:42:14 | ||
| | ||
LL | get_flag::<{ unsafe { bool_raw.boolean } }, { unsafe { char_raw.character } }>(); | ||
| ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ type validation failed: encountered 0x42, but expected a boolean | ||
| | ||
= 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. | ||
= note: the raw bytes of the constant (size: 1, align: 1) { | ||
42 │ B | ||
} | ||
|
||
error[E0080]: it is undefined behavior to use this value | ||
--> $DIR/invalid-patterns.rs:42:47 | ||
| | ||
LL | get_flag::<{ unsafe { bool_raw.boolean } }, { unsafe { char_raw.character } }>(); | ||
| ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ type validation failed: encountered uninitialized bytes, but expected a valid unicode scalar value (in `0..=0x10FFFF` but not in `0xD800..=0xDFFF`) | ||
| | ||
= 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. | ||
= note: the raw bytes of the constant (size: 4, align: 4) { | ||
__ __ __ __ │ ░░░░ | ||
} | ||
|
||
error: aborting due to 8 previous errors | ||
|
||
Some errors have detailed explanations: E0080, E0308. | ||
For more information about an error, try `rustc --explain E0080`. |
1 change: 1 addition & 0 deletions
1
src/test/ui/const-generics/min_const_generics/invalid-patterns.rs
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
5 changes: 4 additions & 1 deletion
5
src/test/ui/consts/const-err4.stderr → src/test/ui/consts/const-err4.32bit.stderr
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
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 @@ | ||
error[E0080]: it is undefined behavior to use this value | ||
--> $DIR/const-err4.rs:9:11 | ||
| | ||
LL | Boo = [unsafe { Foo { b: () }.a }; 4][3], | ||
| ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ type validation failed: encountered uninitialized bytes, but expected initialized plain (non-pointer) bytes | ||
| | ||
= 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. | ||
= note: the raw bytes of the constant (size: 8, align: 8) { | ||
__ __ __ __ __ __ __ __ │ ░░░░░░░░ | ||
} | ||
|
||
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 |
---|---|---|
@@ -1,3 +1,4 @@ | ||
// stderr-per-bitwidth | ||
#[derive(Copy, Clone)] | ||
union Foo { | ||
a: isize, | ||
|
Oops, something went wrong.