summaryrefslogtreecommitdiffstats
path: root/src/test/ui/consts/promotion.rs
diff options
context:
space:
mode:
Diffstat (limited to 'src/test/ui/consts/promotion.rs')
-rw-r--r--src/test/ui/consts/promotion.rs45
1 files changed, 0 insertions, 45 deletions
diff --git a/src/test/ui/consts/promotion.rs b/src/test/ui/consts/promotion.rs
deleted file mode 100644
index e379e3aea..000000000
--- a/src/test/ui/consts/promotion.rs
+++ /dev/null
@@ -1,45 +0,0 @@
-// revisions: noopt opt opt_with_overflow_checks
-//[noopt]compile-flags: -C opt-level=0
-//[opt]compile-flags: -O
-//[opt_with_overflow_checks]compile-flags: -C overflow-checks=on -O
-
-// build-pass
-
-const fn assert_static<T>(_: &'static T) {}
-
-#[allow(unconditional_panic)]
-const fn fail() -> i32 {
- 1/0
-}
-const C: i32 = {
- // Promoted that fails to evaluate in dead code -- this must work
- // (for backwards compatibility reasons).
- if false {
- assert_static(&fail());
- }
- 42
-};
-
-fn main() {
- assert_static(&["a", "b", "c"]);
- assert_static(&["d", "e", "f"]);
- assert_eq!(C, 42);
-
- // make sure that these do not cause trouble despite overflowing
- assert_static(&(0-1));
- assert_static(&-i32::MIN);
-
- // div-by-non-0 is okay
- assert_static(&(1/1));
- assert_static(&(1%1));
-
- // in-bounds array access is okay
- assert_static(&([1,2,3][0] + 1));
- assert_static(&[[1,2][1]]);
-
- // Top-level projections are not part of the promoted, so no error here.
- if false {
- #[allow(unconditional_panic)]
- assert_static(&[1,2,3][4]);
- }
-}