diff options
| author | Joshua Nelson <jyn514@gmail.com> | 2020-08-07 20:07:07 -0400 |
|---|---|---|
| committer | Joshua Nelson <jyn514@gmail.com> | 2020-08-07 21:26:12 -0400 |
| commit | b146000e910ccd60bdcde89363cb6aa14ecc0d95 (patch) | |
| tree | 7aa4c164df16a23932fef59d1b5367136ce08143 /src/test/rustdoc-ui | |
| parent | 0f5be70ea4c3ec4544cdeb80e3138832e15815f9 (diff) | |
| download | rust-b146000e910ccd60bdcde89363cb6aa14ecc0d95.tar.gz rust-b146000e910ccd60bdcde89363cb6aa14ecc0d95.zip | |
EXTREMELY hacky fix
This runs _just_ enough of typeck that later queries don't panic. Because this is in the same part of the compiler that errors on `impl Trait`, this special-cases impl Trait for rustdoc and no one else. Everything is fine.
Diffstat (limited to 'src/test/rustdoc-ui')
3 files changed, 34 insertions, 19 deletions
diff --git a/src/test/rustdoc-ui/infinite-recursive-type-impl-trait.rs b/src/test/rustdoc-ui/infinite-recursive-type-impl-trait.rs new file mode 100644 index 00000000000..b3a7ee56313 --- /dev/null +++ b/src/test/rustdoc-ui/infinite-recursive-type-impl-trait.rs @@ -0,0 +1,7 @@ +fn f() -> impl Sized { + enum E { + //~^ ERROR recursive type `f::E` has infinite size + V(E), + } + unimplemented!() +} diff --git a/src/test/rustdoc-ui/infinite-recursive-type-impl-trait.stderr b/src/test/rustdoc-ui/infinite-recursive-type-impl-trait.stderr new file mode 100644 index 00000000000..ec1bb786fe5 --- /dev/null +++ b/src/test/rustdoc-ui/infinite-recursive-type-impl-trait.stderr @@ -0,0 +1,17 @@ +error[E0072]: recursive type `f::E` has infinite size + --> $DIR/infinite-recursive-type-impl-trait.rs:2:5 + | +LL | enum E { + | ^^^^^^ recursive type has infinite size +LL | +LL | V(E), + | - recursive without indirection + | +help: insert some indirection (e.g., a `Box`, `Rc`, or `&`) to make `f::E` representable + | +LL | V(Box<E>), + | ^^^^ ^ + +error: aborting due to previous error + +For more information about this error, try `rustc --explain E0072`. diff --git a/src/test/rustdoc-ui/infinite-recursive-type.stderr b/src/test/rustdoc-ui/infinite-recursive-type.stderr index 8d12392c567..897445f200c 100644 --- a/src/test/rustdoc-ui/infinite-recursive-type.stderr +++ b/src/test/rustdoc-ui/infinite-recursive-type.stderr @@ -1,26 +1,17 @@ -error: internal compiler error[E0391]: cycle detected when computing `Sized` constraints for `E` +error[E0072]: recursive type `E` has infinite size --> $DIR/infinite-recursive-type.rs:1:1 | LL | enum E { - | ^^^^^^ + | ^^^^^^ recursive type has infinite size +LL | +LL | V(E), + | - recursive without indirection | - = note: ...which again requires computing `Sized` constraints for `E`, completing the cycle - = note: cycle used when evaluating trait selection obligation `E: std::convert::From<E>` - -error: internal compiler error: TyKind::Error constructed but no error reported +help: insert some indirection (e.g., a `Box`, `Rc`, or `&`) to make `E` representable | - = note: delayed at /home/joshua/rustc/src/librustc_session/session.rs:436:27 - -thread 'rustc' panicked at 'no errors encountered even though `delay_span_bug` issued', src/librustc_errors/lib.rs:366:17 -note: run with `RUST_BACKTRACE=1` environment variable to display a 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.47.0-dev running on x86_64-unknown-linux-gnu +LL | V(Box<E>), + | ^^^^ ^ -note: compiler flags: -Z threads=1 -Z ui-testing -Z deduplicate-diagnostics=no -Z unstable-options -C debuginfo=0 +error: aborting due to previous error +For more information about this error, try `rustc --explain E0072`. |
