Skip to content

Commit

Permalink
Rollup merge of #113335 - compiler-errors:reveal-opaques-in-new-solve…
Browse files Browse the repository at this point in the history
…r, r=lcnr

Reveal opaques in new solver

We were testing against the wrong reveal mode 😨

Also a couple of misc commits that I don't want to really put in separate prs

r? `@lcnr`
  • Loading branch information
matthiaskrgr authored Jul 6, 2023
2 parents f1418ea + 3247275 commit 172620c
Show file tree
Hide file tree
Showing 9 changed files with 50 additions and 38 deletions.
4 changes: 1 addition & 3 deletions compiler/rustc_trait_selection/src/solve/normalize.rs
Original file line number Diff line number Diff line change
Expand Up @@ -167,9 +167,7 @@ impl<'tcx> FallibleTypeFolder<TyCtxt<'tcx>> for NormalizationFolder<'_, 'tcx> {
// We don't normalize opaque types unless we have
// `Reveal::All`, even if we're in the defining scope.
let data = match *ty.kind() {
ty::Alias(kind, alias_ty) if kind != ty::Opaque || reveal == Reveal::UserFacing => {
alias_ty
}
ty::Alias(kind, alias_ty) if kind != ty::Opaque || reveal == Reveal::All => alias_ty,
_ => return ty.try_super_fold_with(self),
};

Expand Down
30 changes: 0 additions & 30 deletions tests/ui/async-await/in-trait/async-associated-types2.rs

This file was deleted.

2 changes: 1 addition & 1 deletion tests/ui/dyn-star/param-env-region-infer.current.stderr
Original file line number Diff line number Diff line change
@@ -1,5 +1,5 @@
error[E0282]: type annotations needed
--> $DIR/param-env-region-infer.rs:16:10
--> $DIR/param-env-region-infer.rs:18:10
|
LL | t as _
| ^ cannot infer type
Expand Down
29 changes: 29 additions & 0 deletions tests/ui/dyn-star/param-env-region-infer.next.stderr
Original file line number Diff line number Diff line change
@@ -0,0 +1,29 @@
error[E0391]: cycle detected when computing type of `make_dyn_star::{opaque#0}`
--> $DIR/param-env-region-infer.rs:16:60
|
LL | fn make_dyn_star<'a, T: PointerLike + Debug + 'a>(t: T) -> impl PointerLike + Debug + 'a {
| ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
note: ...which requires type-checking `make_dyn_star`...
--> $DIR/param-env-region-infer.rs:16:1
|
LL | fn make_dyn_star<'a, T: PointerLike + Debug + 'a>(t: T) -> impl PointerLike + Debug + 'a {
| ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
= note: ...which requires computing layout of `make_dyn_star::{opaque#0}`...
= note: ...which requires normalizing `make_dyn_star::{opaque#0}`...
= note: ...which again requires computing type of `make_dyn_star::{opaque#0}`, completing the cycle
note: cycle used when checking item types in top-level module
--> $DIR/param-env-region-infer.rs:10:1
|
LL | / #![feature(dyn_star, pointer_like_trait)]
LL | | #![allow(incomplete_features)]
LL | |
LL | | use std::fmt::Debug;
... |
LL | |
LL | | fn main() {}
| |____________^

error: aborting due to previous error

For more information about this error, try `rustc --explain E0391`.
6 changes: 4 additions & 2 deletions tests/ui/dyn-star/param-env-region-infer.rs
Original file line number Diff line number Diff line change
@@ -1,6 +1,7 @@
// revisions: current next
//[next] compile-flags: -Ztrait-solver=next
//[next] check-pass
// Need `-Zdeduplicate-diagnostics=yes` because the number of cycle errors
// emitted is for some horrible reason platform-specific.
//[next] compile-flags: -Ztrait-solver=next -Zdeduplicate-diagnostics=yes
// incremental

// checks that we don't ICE if there are region inference variables in the environment
Expand All @@ -13,6 +14,7 @@ use std::fmt::Debug;
use std::marker::PointerLike;

fn make_dyn_star<'a, T: PointerLike + Debug + 'a>(t: T) -> impl PointerLike + Debug + 'a {
//[next]~^ ERROR cycle detected when computing
t as _
//[current]~^ ERROR type annotations needed
}
Expand Down
11 changes: 11 additions & 0 deletions tests/ui/impl-trait/reveal-during-codegen.rs
Original file line number Diff line number Diff line change
@@ -0,0 +1,11 @@
// build-pass
// revisions: current next
//[next] compile-flags: -Ztrait-solver=next

fn test() -> Option<impl Sized> {
Some("")
}

fn main() {
test();
}
1 change: 1 addition & 0 deletions tests/ui/issues/issue-67552.rs
Original file line number Diff line number Diff line change
@@ -1,6 +1,7 @@
// build-fail
// compile-flags: -Copt-level=0
// normalize-stderr-test: ".nll/" -> "/"
// ignore-compare-mode-next-solver (hangs)

fn main() {
rec(Empty);
Expand Down
4 changes: 2 additions & 2 deletions tests/ui/issues/issue-67552.stderr
Original file line number Diff line number Diff line change
@@ -1,11 +1,11 @@
error: reached the recursion limit while instantiating `rec::<&mut &mut &mut &mut &mut ...>`
--> $DIR/issue-67552.rs:29:9
--> $DIR/issue-67552.rs:30:9
|
LL | rec(identity(&mut it))
| ^^^^^^^^^^^^^^^^^^^^^^
|
note: `rec` defined here
--> $DIR/issue-67552.rs:22:1
--> $DIR/issue-67552.rs:23:1
|
LL | / fn rec<T>(mut it: T)
LL | | where
Expand Down
1 change: 1 addition & 0 deletions tests/ui/recursion/issue-95134.rs
Original file line number Diff line number Diff line change
Expand Up @@ -3,6 +3,7 @@
// compile-flags: -Copt-level=0
// dont-check-failure-status
// dont-check-compiler-stderr
// ignore-compare-mode-next-solver (hangs)

pub fn encode_num<Writer: ExampleWriter>(n: u32, mut writer: Writer) -> Result<(), Writer::Error> {
if n > 15 {
Expand Down

0 comments on commit 172620c

Please sign in to comment.