Skip to content

Commit

Permalink
Catch trybuild errors during monomorphization as well
Browse files Browse the repository at this point in the history
  • Loading branch information
madsmtm committed Sep 1, 2023
1 parent 94d8ac1 commit fc3a5e4
Show file tree
Hide file tree
Showing 4 changed files with 49 additions and 10 deletions.
1 change: 1 addition & 0 deletions crates/test-ui/src/hack.rs
Original file line number Diff line number Diff line change
@@ -0,0 +1 @@
fn main() {}
8 changes: 8 additions & 0 deletions crates/test-ui/src/main.rs
Original file line number Diff line number Diff line change
Expand Up @@ -17,4 +17,12 @@ fn main() {
.join("ui")
.join("*.rs");
t.compile_fail(path);
// Make trybuild use `cargo build` instead of `cargo check`
//
// Workaround for https://github.com/dtolnay/trybuild/issues/241
t.pass(
std::path::Path::new(env!("CARGO_MANIFEST_DIR"))
.join("src")
.join("hack.rs"),
);
}
6 changes: 0 additions & 6 deletions crates/test-ui/ui/invalid_option_encode_impl.rs
Original file line number Diff line number Diff line change
Expand Up @@ -17,10 +17,4 @@ unsafe impl OptionEncode for MyType {}
fn main() {
assert_eq!(<Option<MyType>>::ENCODING, MyType::ENCODING);
assert_eq!(<Option<MyType>>::ENCODING_REF, MyType::ENCODING_REF);

// TODO: trybuild runs with `cargo check`, which doesn't catch all const
// errors.
const TODO: () = {
panic!("todo");
};
}
44 changes: 40 additions & 4 deletions crates/test-ui/ui/invalid_option_encode_impl.stderr
Original file line number Diff line number Diff line change
@@ -1,7 +1,43 @@
error[E0080]: evaluation of constant value failed
--> ui/invalid_option_encode_impl.rs
error[E0080]: evaluation of `<std::option::Option<MyType> as objc2::Encode>::ENCODING` failed
--> $WORKSPACE/crates/objc2/src/encode/mod.rs
|
| panic!("todo");
| ^^^^^^^^^^^^^^ the evaluated program panicked at 'todo', $DIR/ui/invalid_option_encode_impl.rs:24:9
| panic!("invalid OptionEncode + Encode implementation");
| ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ the evaluated program panicked at 'invalid OptionEncode + Encode implementation', $WORKSPACE/crates/objc2/src/encode/mod.rs:276:13
|
= note: this error originates in the macro `$crate::panic::panic_2021` which comes from the expansion of the macro `panic` (in Nightly builds, run with -Z macro-backtrace for more info)

note: erroneous constant used
--> ui/invalid_option_encode_impl.rs
|
| assert_eq!(<Option<MyType>>::ENCODING, MyType::ENCODING);
| ^^^^^^^^^^^^^^^^^^^^^^^^^^

note: erroneous constant used
--> ui/invalid_option_encode_impl.rs
|
| assert_eq!(<Option<MyType>>::ENCODING, MyType::ENCODING);
| ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
= note: this note originates in the macro `assert_eq` (in Nightly builds, run with -Z macro-backtrace for more info)

error[E0080]: evaluation of `<std::option::Option<MyType> as objc2::RefEncode>::ENCODING_REF` failed
--> $WORKSPACE/crates/objc2/src/encode/mod.rs
|
| panic!("invalid OptionEncode + RefEncode implementation");
| ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ the evaluated program panicked at 'invalid OptionEncode + RefEncode implementation', $WORKSPACE/crates/objc2/src/encode/mod.rs:286:13
|
= note: this error originates in the macro `$crate::panic::panic_2021` which comes from the expansion of the macro `panic` (in Nightly builds, run with -Z macro-backtrace for more info)

note: erroneous constant used
--> ui/invalid_option_encode_impl.rs
|
| assert_eq!(<Option<MyType>>::ENCODING_REF, MyType::ENCODING_REF);
| ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^

note: erroneous constant used
--> ui/invalid_option_encode_impl.rs
|
| assert_eq!(<Option<MyType>>::ENCODING_REF, MyType::ENCODING_REF);
| ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
= note: this note originates in the macro `assert_eq` (in Nightly builds, run with -Z macro-backtrace for more info)

0 comments on commit fc3a5e4

Please sign in to comment.