Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Some ICEs manifest as if the crate compiled successfully #173

Open
dtolnay opened this issue Jun 4, 2022 · 2 comments
Open

Some ICEs manifest as if the crate compiled successfully #173

dtolnay opened this issue Jun 4, 2022 · 2 comments

Comments

@dtolnay
Copy link
Owner

dtolnay commented Jun 4, 2022

For example the following ICE in nightly-2020-06-04 (rust-lang/rust#97698):

// tests/compiletest.rs

#[test]
fn ui() {
    let t = trybuild::TestCases::new();
    t.compile_fail("tests/ui/break-rust.rs");
}
// tests/ui/break-rust.rs

trait AmbiguousIfImpl<A> {
    fn method() {}
}

struct One;
struct Two;

impl<T> AmbiguousIfImpl<One> for T {}
impl<T> AmbiguousIfImpl<Two> for T {}

struct Struct;

fn main() {
    <Struct as AmbiguousIfImpl<_>>::method();
}
$ cargo test

running 1 test

test tests/ui/break-rust.rs ... error
Expected test case to fail to compile, but it succeeded.

test ui ... FAILED

failures:

---- ui stdout ----
thread 'ui' panicked at '1 of 1 tests failed', github.com-1ecc6299db9ec823/trybuild-1.0.61/src/run.rs:100:13
note: run with `RUST_BACKTRACE=1` environment variable to display a backtrace

test result: FAILED. 0 passed; 1 failed; 0 ignored; 0 measured; 0 filtered out; finished in 0.38s

error: test failed, to rerun pass '--test compiletest'

Meanwhile the crate definitely fails to build and rustc exits with nonzero code.

thread 'rustc' panicked at 'range end index 2 out of range for slice of length 1', library/core/src/slice/index.rs:73:5
stack backtrace:

error: internal compiler error: unexpected panic

note: the compiler unexpectedly panicked. this is a bug.

note: we would appreciate a bug report: https://github.com/rust-lang/rust/issues/new?labels=C-bug%2C+I-ICE%2C+T-compiler&template=ice.md

note: rustc 1.63.0-nightly (a6b8c6954 2022-06-03) running on x86_64-unknown-linux-gnu

query stack during panic:
#0 [typeck] type-checking `main`
#1 [typeck_item_bodies] type-checking all item bodies
#2 [analysis] running analysis passes on this crate
end of query stack
@dtolnay
Copy link
Owner Author

dtolnay commented Jun 4, 2022

Oddly not every ICE hits this. For example changing tests/ui/break-rust.rs to:

fn main() {
    break rust;
}
$ cargo test

running 1 test

test tests/ui/break-rust.rs ... wip

NOTE: writing the following output to `wip/break-rust.stderr`.
Move this file to `tests/ui/break-rust.stderr` to accept it as correct.
┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈
error[E0425]: cannot find value `rust` in this scope
 --> tests/ui/break-rust.rs:2:11
  |
2 |     break rust;
  |           ^^^^ not found in this scope

error[E0268]: `break` outside of a loop
 --> tests/ui/break-rust.rs:2:5
  |
2 |     break rust;
  |     ^^^^^^^^^^ cannot `break` outside of a loop

error: internal compiler error: It looks like you're trying to break rust; would you like some ICE?

note: the compiler expectedly panicked. this is a feature.

note: we would appreciate a joke overview: https://github.com/rust-lang/rust/issues/43162#issuecomment-320764675

note: rustc 1.63.0-nightly (a6b8c6954 2022-06-03) running on x86_64-unknown-linux-gnu
┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈

test ui ... FAILED

failures:

---- ui stdout ----
thread 'ui' panicked at 'successfully created new stderr files for 1 test cases', github.com-1ecc6299db9ec823/trybuild-1.0.61/src/run.rs:103:13
note: run with `RUST_BACKTRACE=1` environment variable to display a backtrace

test result: FAILED. 0 passed; 1 failed; 0 ignored; 0 measured; 0 filtered out; finished in 0.31s

error: test failed, to rerun pass '--test compiletest'

@dtolnay
Copy link
Owner Author

dtolnay commented Nov 18, 2023

Maybe the same root cause as #229.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

No branches or pull requests

1 participant