about summary refs log tree commit diff
diff options
context:
space:
mode:
authorBastian Kauschke <bastian_kauschke@hotmail.de>2020-09-10 09:48:02 +0200
committerBastian Kauschke <bastian_kauschke@hotmail.de>2020-09-10 09:48:02 +0200
commit300b0acb85e41a19b518715147968f177679ebc1 (patch)
tree65761d3ac48cc94c1bdbd3379f9f61da0784b988
parent8667f93040cf539c469e3a64b9ed82c5f13bf938 (diff)
downloadrust-300b0acb85e41a19b518715147968f177679ebc1.tar.gz
rust-300b0acb85e41a19b518715147968f177679ebc1.zip
fix tidy, small cleanup
-rw-r--r--compiler/rustc_feature/src/active.rs2
-rw-r--r--compiler/rustc_trait_selection/src/traits/const_evaluatable.rs6
-rw-r--r--compiler/rustc_typeck/src/collect.rs9
-rw-r--r--src/test/ui/const-generics/const_evaluatable_checked/feature-gate-const_evaluatable_checked.rs14
-rw-r--r--src/test/ui/const-generics/const_evaluatable_checked/feature-gate-const_evaluatable_checked.stderr10
5 files changed, 28 insertions, 13 deletions
diff --git a/compiler/rustc_feature/src/active.rs b/compiler/rustc_feature/src/active.rs
index d7adf1cdb6d..1aeb0bd5ad9 100644
--- a/compiler/rustc_feature/src/active.rs
+++ b/compiler/rustc_feature/src/active.rs
@@ -586,7 +586,7 @@ declare_features! (
     (active, if_let_guard, "1.47.0", Some(51114), None),
 
     /// Allows non trivial generic constants which have to be manually propageted upwards.
-    (active, const_evaluatable_checked, "1.48.0", Some(0), None),
+    (active, const_evaluatable_checked, "1.48.0", Some(76560), None),
 
     // -------------------------------------------------------------------------
     // feature-group-end: actual feature gates
diff --git a/compiler/rustc_trait_selection/src/traits/const_evaluatable.rs b/compiler/rustc_trait_selection/src/traits/const_evaluatable.rs
index 74f7b1b352c..fdb87c085b5 100644
--- a/compiler/rustc_trait_selection/src/traits/const_evaluatable.rs
+++ b/compiler/rustc_trait_selection/src/traits/const_evaluatable.rs
@@ -73,10 +73,6 @@ pub fn is_const_evaluatable<'cx, 'tcx>(
         }
     }
 
-    if concrete.is_ok() {
-        debug!("is_const_evaluatable: concrete ~~> ok");
-    } else {
-        debug!("is_const_evaluatable: concrete ~~> err");
-    }
+    debug!(?concrete, "is_const_evaluatable");
     concrete.map(drop)
 }
diff --git a/compiler/rustc_typeck/src/collect.rs b/compiler/rustc_typeck/src/collect.rs
index 0bba8b821a7..7d6b3df03b0 100644
--- a/compiler/rustc_typeck/src/collect.rs
+++ b/compiler/rustc_typeck/src/collect.rs
@@ -1678,13 +1678,8 @@ fn predicates_defined_on(tcx: TyCtxt<'_>, def_id: DefId) -> ty::GenericPredicate
 
     if tcx.features().const_evaluatable_checked {
         let const_evaluatable = const_evaluatable_predicates_of(tcx, def_id, &result);
-        if result.predicates.is_empty() {
-            result.predicates = tcx.arena.alloc_from_iter(const_evaluatable);
-        } else {
-            result.predicates = tcx
-                .arena
-                .alloc_from_iter(result.predicates.iter().copied().chain(const_evaluatable));
-        }
+        result.predicates =
+            tcx.arena.alloc_from_iter(result.predicates.iter().copied().chain(const_evaluatable));
     }
 
     debug!("predicates_defined_on({:?}) = {:?}", def_id, result);
diff --git a/src/test/ui/const-generics/const_evaluatable_checked/feature-gate-const_evaluatable_checked.rs b/src/test/ui/const-generics/const_evaluatable_checked/feature-gate-const_evaluatable_checked.rs
new file mode 100644
index 00000000000..941bd5e9e5d
--- /dev/null
+++ b/src/test/ui/const-generics/const_evaluatable_checked/feature-gate-const_evaluatable_checked.rs
@@ -0,0 +1,14 @@
+#![feature(const_generics)]
+#![allow(incomplete_features)]
+
+type Arr<const N: usize> = [u8; N - 1];
+
+fn test<const N: usize>() -> Arr<N> where Arr<N>: Default {
+    //~^ ERROR constant expression depends
+    Default::default()
+}
+
+fn main() {
+    let x = test::<33>();
+    assert_eq!(x, [0; 32]);
+}
diff --git a/src/test/ui/const-generics/const_evaluatable_checked/feature-gate-const_evaluatable_checked.stderr b/src/test/ui/const-generics/const_evaluatable_checked/feature-gate-const_evaluatable_checked.stderr
new file mode 100644
index 00000000000..6e4a22a38b1
--- /dev/null
+++ b/src/test/ui/const-generics/const_evaluatable_checked/feature-gate-const_evaluatable_checked.stderr
@@ -0,0 +1,10 @@
+error: constant expression depends on a generic parameter
+  --> $DIR/feature-gate-const_evaluatable_checked.rs:6:30
+   |
+LL | fn test<const N: usize>() -> Arr<N> where Arr<N>: Default {
+   |                              ^^^^^^
+   |
+   = note: this may fail depending on what value the parameter takes
+
+error: aborting due to previous error
+