}
// The interface is empty.
hir::ItemKind::GlobalAsm(..) => {}
- hir::ItemKind::OpaqueTy(..) => {
- // FIXME: This is some serious pessimization intended to workaround deficiencies
- // in the reachability pass (`middle/reachable.rs`). Types are marked as link-time
- // reachable if they are returned via `impl Trait`, even from private functions.
- let exist_level = cmp::max(item_level, Some(AccessLevel::ReachableFromImplTrait));
- self.reach(item.hir_id, exist_level).generics().predicates().ty();
- }
+ // assume the type is never reachable - since it's opaque, no one can use it from this interface
+ hir::ItemKind::OpaqueTy(..) => {}
// Visit everything.
hir::ItemKind::Const(..)
| hir::ItemKind::Static(..)
let mut global_ctxt = abort_on_err(queries.global_ctxt(), sess).take();
global_ctxt.enter(|tcx| {
- // Certain queries assume that some checks were run elsewhere
- // (see https://github.com/rust-lang/rust/pull/73566#issuecomment-656954425),
- // so type-check everything other than function bodies in this crate before running lints.
- // NOTE: this does not call `tcx.analysis()` so that we won't
- // typeck function bodies or run the default rustc lints.
- // (see `override_queries` in the `config`)
- let _ = rustc_typeck::check_crate(tcx);
tcx.sess.abort_if_errors();
sess.time("missing_docs", || {
rustc_lint::check_crate(tcx, rustc_lint::builtin::MissingDoc::new);
// edition:2018
+// check-pass
-/// This used to work with ResolveBodyWithLoop.
-/// However now that we ignore type checking instead of modifying the function body,
-/// the return type is seen as `impl Future<Output = u32>`, not a `u32`.
-/// So it no longer allows errors in the function body.
+/// Should compile fine
pub async fn a() -> u32 {
error::_in::async_fn()
- //~^ ERROR failed to resolve
}
+++ /dev/null
-error[E0433]: failed to resolve: could not resolve path `error::_in::async_fn`
- --> $DIR/async.rs:8:5
- |
-LL | error::_in::async_fn()
- | ^^^^^^^^^^^^^^^^^^^^ could not resolve path `error::_in::async_fn`
- |
- = note: this error was originally ignored because you are running `rustdoc`
- = note: try running again with `rustc` or `cargo check` and you may get a more detailed error
-
-error: aborting due to previous error
-
-For more information about this error, try `rustc --explain E0433`.
+// check-pass
// manually desugared version of an `async fn` (but with a closure instead of a generator)
pub fn a() -> impl Fn() -> u32 {
|| content::doesnt::matter()
- //~^ ERROR failed to resolve
}
+++ /dev/null
-error[E0433]: failed to resolve: could not resolve path `content::doesnt::matter`
- --> $DIR/closure.rs:3:8
- |
-LL | || content::doesnt::matter()
- | ^^^^^^^^^^^^^^^^^^^^^^^ could not resolve path `content::doesnt::matter`
- |
- = note: this error was originally ignored because you are running `rustdoc`
- = note: try running again with `rustc` or `cargo check` and you may get a more detailed error
-
-error: aborting due to previous error
-
-For more information about this error, try `rustc --explain E0433`.
+// check-pass
trait ValidTrait {}
/// This has docs
pub fn f() -> impl ValidTrait {
Vec::<DoesNotExist>::new()
- //~^ ERROR failed to resolve
}
+++ /dev/null
-error[E0433]: failed to resolve: could not resolve path `DoesNotExist`
- --> $DIR/generic-argument.rs:5:11
- |
-LL | Vec::<DoesNotExist>::new()
- | ^^^^^^^^^^^^ could not resolve path `DoesNotExist`
- |
- = note: this error was originally ignored because you are running `rustdoc`
- = note: try running again with `rustc` or `cargo check` and you may get a more detailed error
-
-error: aborting due to previous error
-
-For more information about this error, try `rustc --explain E0433`.
+// check-pass
pub trait ValidTrait {}
/// This returns impl trait
pub fn g() -> impl ValidTrait {
(|| error::_in::impl_trait::alias::nested::closure())()
- //~^ ERROR failed to resolve
}
+++ /dev/null
-error[E0433]: failed to resolve: could not resolve path `error::_in::impl_trait::alias::nested::closure`
- --> $DIR/impl-keyword-closure.rs:4:9
- |
-LL | (|| error::_in::impl_trait::alias::nested::closure())()
- | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ could not resolve path `error::_in::impl_trait::alias::nested::closure`
- |
- = note: this error was originally ignored because you are running `rustdoc`
- = note: try running again with `rustc` or `cargo check` and you may get a more detailed error
-
-error: aborting due to previous error
-
-For more information about this error, try `rustc --explain E0433`.
+// check-pass
pub trait ValidTrait {}
/// This returns impl trait
pub fn g() -> impl ValidTrait {
error::_in::impl_trait()
- //~^ ERROR failed to resolve
}
+++ /dev/null
-error[E0433]: failed to resolve: could not resolve path `error::_in::impl_trait`
- --> $DIR/impl-keyword.rs:4:5
- |
-LL | error::_in::impl_trait()
- | ^^^^^^^^^^^^^^^^^^^^^^ could not resolve path `error::_in::impl_trait`
- |
- = note: this error was originally ignored because you are running `rustdoc`
- = note: try running again with `rustc` or `cargo check` and you may get a more detailed error
-
-error: aborting due to previous error
-
-For more information about this error, try `rustc --explain E0433`.
+// check-pass
#![feature(type_alias_impl_trait)]
pub trait ValidTrait {}
/// This returns impl trait, but using a type alias
pub fn h() -> ImplTrait {
(|| error::_in::impl_trait::alias::nested::closure())()
- //~^ ERROR failed to resolve
}
+++ /dev/null
-error[E0433]: failed to resolve: could not resolve path `error::_in::impl_trait::alias::nested::closure`
- --> $DIR/trait-alias-closure.rs:8:9
- |
-LL | (|| error::_in::impl_trait::alias::nested::closure())()
- | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ could not resolve path `error::_in::impl_trait::alias::nested::closure`
- |
- = note: this error was originally ignored because you are running `rustdoc`
- = note: try running again with `rustc` or `cargo check` and you may get a more detailed error
-
-error: aborting due to previous error
-
-For more information about this error, try `rustc --explain E0433`.
+// check-pass
#![feature(type_alias_impl_trait)]
pub trait ValidTrait {}
/// This returns impl trait, but using a type alias
pub fn h() -> ImplTrait {
error::_in::impl_trait::alias()
- //~^ ERROR failed to resolve
}
+++ /dev/null
-error[E0433]: failed to resolve: could not resolve path `error::_in::impl_trait::alias`
- --> $DIR/trait-alias.rs:8:5
- |
-LL | error::_in::impl_trait::alias()
- | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ could not resolve path `error::_in::impl_trait::alias`
- |
- = note: this error was originally ignored because you are running `rustdoc`
- = note: try running again with `rustc` or `cargo check` and you may get a more detailed error
-
-error: aborting due to previous error
-
-For more information about this error, try `rustc --explain E0433`.
-error[E0072]: recursive type `E` has infinite size
+error: internal compiler error[E0391]: cycle detected when computing `Sized` constraints for `E`
--> $DIR/infinite-recursive-type.rs:1:1
|
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 `E` representable
+ = 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
|
-LL | V(Box<E>),
- | ^^^^ ^
+ = 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
-error: aborting due to previous error
+note: compiler flags: -Z threads=1 -Z ui-testing -Z deduplicate-diagnostics=no -Z unstable-options -C debuginfo=0
-For more information about this error, try `rustc --explain E0072`.