From 116f95bb46618cd299d3104ac1f3357893da0217 Mon Sep 17 00:00:00 2001 From: Michael Goulet Date: Mon, 6 May 2024 12:19:38 -0400 Subject: [PATCH] Use super_fold in RegionsToStatic visitor --- .../src/canonicalizer.rs | 2 +- .../const-region-infer-to-static-in-binder.rs | 8 ++++++++ ...st-region-infer-to-static-in-binder.stderr | 19 +++++++++++++++++++ .../effect-var.rs} | 0 .../int-var-eq-in-response.rs} | 0 .../ty-var-eq-in-response.rs} | 0 6 files changed, 28 insertions(+), 1 deletion(-) create mode 100644 tests/ui/traits/next-solver/canonical/const-region-infer-to-static-in-binder.rs create mode 100644 tests/ui/traits/next-solver/canonical/const-region-infer-to-static-in-binder.stderr rename tests/ui/traits/next-solver/{canonicalize-effect-var.rs => canonical/effect-var.rs} (100%) rename tests/ui/traits/next-solver/{canonical-int-var-eq-in-response.rs => canonical/int-var-eq-in-response.rs} (100%) rename tests/ui/traits/next-solver/{canonical-ty-var-eq-in-response.rs => canonical/ty-var-eq-in-response.rs} (100%) diff --git a/compiler/rustc_next_trait_solver/src/canonicalizer.rs b/compiler/rustc_next_trait_solver/src/canonicalizer.rs index 6600b92fb3182..c437dedbbbccb 100644 --- a/compiler/rustc_next_trait_solver/src/canonicalizer.rs +++ b/compiler/rustc_next_trait_solver/src/canonicalizer.rs @@ -455,7 +455,7 @@ impl TypeFolder for RegionsToStatic { I::Binder: TypeSuperFoldable, { self.binder.shift_in(1); - let t = t.fold_with(self); + let t = t.super_fold_with(self); self.binder.shift_out(1); t } diff --git a/tests/ui/traits/next-solver/canonical/const-region-infer-to-static-in-binder.rs b/tests/ui/traits/next-solver/canonical/const-region-infer-to-static-in-binder.rs new file mode 100644 index 0000000000000..33a6d7aa78304 --- /dev/null +++ b/tests/ui/traits/next-solver/canonical/const-region-infer-to-static-in-binder.rs @@ -0,0 +1,8 @@ +//@ compile-flags: -Znext-solver=coherence + +#[derive(Debug)] +struct X; +//~^ ERROR using function pointers as const generic parameters is forbidden +//~| ERROR using function pointers as const generic parameters is forbidden + +fn main() {} diff --git a/tests/ui/traits/next-solver/canonical/const-region-infer-to-static-in-binder.stderr b/tests/ui/traits/next-solver/canonical/const-region-infer-to-static-in-binder.stderr new file mode 100644 index 0000000000000..4eef8c0ab6c03 --- /dev/null +++ b/tests/ui/traits/next-solver/canonical/const-region-infer-to-static-in-binder.stderr @@ -0,0 +1,19 @@ +error: using function pointers as const generic parameters is forbidden + --> $DIR/const-region-infer-to-static-in-binder.rs:4:20 + | +LL | struct X; + | ^^^^ + | + = note: the only supported types are integers, `bool` and `char` + +error: using function pointers as const generic parameters is forbidden + --> $DIR/const-region-infer-to-static-in-binder.rs:4:20 + | +LL | struct X; + | ^^^^ + | + = note: the only supported types are integers, `bool` and `char` + = note: duplicate diagnostic emitted due to `-Z deduplicate-diagnostics=no` + +error: aborting due to 2 previous errors + diff --git a/tests/ui/traits/next-solver/canonicalize-effect-var.rs b/tests/ui/traits/next-solver/canonical/effect-var.rs similarity index 100% rename from tests/ui/traits/next-solver/canonicalize-effect-var.rs rename to tests/ui/traits/next-solver/canonical/effect-var.rs diff --git a/tests/ui/traits/next-solver/canonical-int-var-eq-in-response.rs b/tests/ui/traits/next-solver/canonical/int-var-eq-in-response.rs similarity index 100% rename from tests/ui/traits/next-solver/canonical-int-var-eq-in-response.rs rename to tests/ui/traits/next-solver/canonical/int-var-eq-in-response.rs diff --git a/tests/ui/traits/next-solver/canonical-ty-var-eq-in-response.rs b/tests/ui/traits/next-solver/canonical/ty-var-eq-in-response.rs similarity index 100% rename from tests/ui/traits/next-solver/canonical-ty-var-eq-in-response.rs rename to tests/ui/traits/next-solver/canonical/ty-var-eq-in-response.rs