diff --git a/src/librustc_passes/rvalue_promotion.rs b/src/librustc_passes/rvalue_promotion.rs index 3a577341f7e..f20262c1333 100644 --- a/src/librustc_passes/rvalue_promotion.rs +++ b/src/librustc_passes/rvalue_promotion.rs @@ -275,7 +275,7 @@ fn check_expr<'a, 'tcx>(v: &mut CheckCrateVisitor<'a, 'tcx>, e: &hir::Expr, node hir::ExprCast(ref from, _) => { debug!("Checking const cast(id={})", from.id); match v.tables.cast_kinds().get(from.hir_id) { - None => span_bug!(e.span, "no kind for cast"), + None => v.tcx.sess.delay_span_bug(e.span, "no kind for cast"), Some(&CastKind::PtrAddrCast) | Some(&CastKind::FnPtrAddrCast) => { v.promotable = false; } diff --git a/src/test/ui/issue-50599.rs b/src/test/ui/issue-50599.rs new file mode 100644 index 00000000000..f46a562ce7a --- /dev/null +++ b/src/test/ui/issue-50599.rs @@ -0,0 +1,15 @@ +// Copyright 2018 The Rust Project Developers. See the COPYRIGHT +// file at the top-level directory of this distribution and at +// http://rust-lang.org/COPYRIGHT. +// +// Licensed under the Apache License, Version 2.0 or the MIT license +// , at your +// option. This file may not be copied, modified, or distributed +// except according to those terms. + +fn main() { + const N: u32 = 1_000; + const M: usize = (f64::from(N) * std::f64::LOG10_2) as usize; //~ ERROR cannot find value + let mut digits = [0u32; M]; +} diff --git a/src/test/ui/issue-50599.stderr b/src/test/ui/issue-50599.stderr new file mode 100644 index 00000000000..8337a31ec14 --- /dev/null +++ b/src/test/ui/issue-50599.stderr @@ -0,0 +1,15 @@ +error[E0425]: cannot find value `LOG10_2` in module `std::f64` + --> $DIR/issue-50599.rs:13:48 + | +LL | const M: usize = (f64::from(N) * std::f64::LOG10_2) as usize; //~ ERROR cannot find value + | ^^^^^^^ not found in `std::f64` +help: possible candidates are found in other modules, you can import them into scope + | +LL | use std::f32::consts::LOG10_2; + | +LL | use std::f64::consts::LOG10_2; + | + +error: aborting due to previous error + +For more information about this error, try `rustc --explain E0425`.