about summary refs log tree commit diff
diff options
context:
space:
mode:
authorMichael Goulet <michael@errs.io>2024-05-06 12:19:38 -0400
committerMichael Goulet <michael@errs.io>2024-05-06 12:22:15 -0400
commit116f95bb46618cd299d3104ac1f3357893da0217 (patch)
tree3a26306c0c0faaf0ae68c3b1a1561699242e7106
parent25e3949aa1b24b3f62a72c1f713830aa1d1efcd4 (diff)
downloadrust-116f95bb46618cd299d3104ac1f3357893da0217.tar.gz
rust-116f95bb46618cd299d3104ac1f3357893da0217.zip
Use super_fold in RegionsToStatic visitor
-rw-r--r--compiler/rustc_next_trait_solver/src/canonicalizer.rs2
-rw-r--r--tests/ui/traits/next-solver/canonical/const-region-infer-to-static-in-binder.rs8
-rw-r--r--tests/ui/traits/next-solver/canonical/const-region-infer-to-static-in-binder.stderr19
-rw-r--r--tests/ui/traits/next-solver/canonical/effect-var.rs (renamed from tests/ui/traits/next-solver/canonicalize-effect-var.rs)0
-rw-r--r--tests/ui/traits/next-solver/canonical/int-var-eq-in-response.rs (renamed from tests/ui/traits/next-solver/canonical-int-var-eq-in-response.rs)0
-rw-r--r--tests/ui/traits/next-solver/canonical/ty-var-eq-in-response.rs (renamed from tests/ui/traits/next-solver/canonical-ty-var-eq-in-response.rs)0
6 files changed, 28 insertions, 1 deletions
diff --git a/compiler/rustc_next_trait_solver/src/canonicalizer.rs b/compiler/rustc_next_trait_solver/src/canonicalizer.rs
index 6600b92fb31..c437dedbbbc 100644
--- a/compiler/rustc_next_trait_solver/src/canonicalizer.rs
+++ b/compiler/rustc_next_trait_solver/src/canonicalizer.rs
@@ -455,7 +455,7 @@ impl<I: Interner> TypeFolder<I> for RegionsToStatic<I> {
         I::Binder<T>: TypeSuperFoldable<I>,
     {
         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 00000000000..33a6d7aa783
--- /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<const FN: fn() = { || {} }>;
+//~^ 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 00000000000..4eef8c0ab6c
--- /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<const FN: fn() = { || {} }>;
+   |                    ^^^^
+   |
+   = 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<const FN: fn() = { || {} }>;
+   |                    ^^^^
+   |
+   = 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
index 6d0f09bb9be..6d0f09bb9be 100644
--- a/tests/ui/traits/next-solver/canonicalize-effect-var.rs
+++ b/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
index 6c07817ff03..6c07817ff03 100644
--- 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
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
index 2f9e919da2e..2f9e919da2e 100644
--- 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