Closed
Description
While using the new floating-point logarithm constants ( #50540 ), I've made a mistake, I've missed the consts:: part of the path:
fn main() {
const N: u32 = 1_000;
const M: usize = (f64::from(N) * std::f64::LOG10_2) as usize;
let mut digits = [0u32; M];
}
It caused an ICE:
error[E0425]: cannot find value `LOG10_2` in module `std::f64`
--> ...\test.rs:3:48
|
3 | const M: usize = (f64::from(N) * std::f64::LOG10_2) as usize;
| ^^^^^^^ not found in `std::f64`
help: possible candidates are found in other modules, you can import them into scope
|
1 | use std::f32::consts::LOG10_2;
|
1 | use std::f64::consts::LOG10_2;
|
error: internal compiler error: librustc_passes\rvalue_promotion.rs:278: no kind for cast
--> ...\test.rs:3:22
|
3 | const M: usize = (f64::from(N) * std::f64::LOG10_2) as usize;
| ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
thread 'main' panicked at 'Box<Any>', librustc_errors\lib.rs:499:9
stack backtrace:
0: mingw_set_invalid_parameter_handler
1: mingw_set_invalid_parameter_handler
2: mingw_set_invalid_parameter_handler
3: mingw_set_invalid_parameter_handler
4: mingw_set_invalid_parameter_handler
5: mingw_set_invalid_parameter_handler
6: mingw_set_invalid_parameter_handler
7: mingw_set_invalid_parameter_handler
8: mingw_set_invalid_parameter_handler
9: mingw_set_invalid_parameter_handler
10: mingw_set_invalid_parameter_handler
11: mingw_set_invalid_parameter_handler
12: mingw_set_invalid_parameter_handler
13: mingw_set_invalid_parameter_handler
14: mingw_set_invalid_parameter_handler
15: mingw_set_invalid_parameter_handler
16: mingw_set_invalid_parameter_handler
17: mingw_set_invalid_parameter_handler
18: mingw_set_invalid_parameter_handler
19: mingw_set_invalid_parameter_handler
20: mingw_set_invalid_parameter_handler
21: mingw_set_invalid_parameter_handler
22: mingw_set_invalid_parameter_handler
23: mingw_set_invalid_parameter_handler
24: mingw_set_invalid_parameter_handler
25: mingw_set_invalid_parameter_handler
26: mingw_set_invalid_parameter_handler
27: mingw_set_invalid_parameter_handler
28: mingw_set_invalid_parameter_handler
29: mingw_set_invalid_parameter_handler
30: mingw_set_invalid_parameter_handler
31: mingw_set_invalid_parameter_handler
32: mingw_set_invalid_parameter_handler
33: mingw_set_invalid_parameter_handler
34: mingw_set_invalid_parameter_handler
35: mingw_set_invalid_parameter_handler
36: mingw_set_invalid_parameter_handler
37: mingw_set_invalid_parameter_handler
38: mingw_set_invalid_parameter_handler
39: mingw_set_invalid_parameter_handler
40: mingw_set_invalid_parameter_handler
41: mingw_set_invalid_parameter_handler
42: mingw_set_invalid_parameter_handler
43: mingw_set_invalid_parameter_handler
44: mingw_set_invalid_parameter_handler
45: mingw_set_invalid_parameter_handler
46: mingw_set_invalid_parameter_handler
47: mingw_set_invalid_parameter_handler
48: mingw_set_invalid_parameter_handler
49: mingw_set_invalid_parameter_handler
50: mingw_set_invalid_parameter_handler
51: mingw_set_invalid_parameter_handler
52: mingw_set_invalid_parameter_handler
53: mingw_set_invalid_parameter_handler
54: mingw_set_invalid_parameter_handler
55: mingw_set_invalid_parameter_handler
56: mingw_set_invalid_parameter_handler
57: mingw_set_invalid_parameter_handler
58: mingw_set_invalid_parameter_handler
59: mingw_set_invalid_parameter_handler
60: mingw_set_invalid_parameter_handler
61: mingw_set_invalid_parameter_handler
62: mingw_set_invalid_parameter_handler
63: mingw_set_invalid_parameter_handler
64: mingw_set_invalid_parameter_handler
65: mingw_set_invalid_parameter_handler
66: mingw_set_invalid_parameter_handler
67: mingw_set_invalid_parameter_handler
68: mingw_set_invalid_parameter_handler
69: mingw_set_invalid_parameter_handler
70: mingw_set_invalid_parameter_handler
71: mingw_set_invalid_parameter_handler
72: mingw_set_invalid_parameter_handler
73: mingw_set_invalid_parameter_handler
74: mingw_set_invalid_parameter_handler
75: mingw_set_invalid_parameter_handler
76: mingw_set_invalid_parameter_handler
77: mingw_set_invalid_parameter_handler
78: mingw_set_invalid_parameter_handler
79: mingw_set_invalid_parameter_handler
80: mingw_set_invalid_parameter_handler
81: mingw_set_invalid_parameter_handler
82: mingw_set_invalid_parameter_handler
83: mingw_set_invalid_parameter_handler
84: mingw_set_invalid_parameter_handler
85: mingw_set_invalid_parameter_handler
86: mingw_set_invalid_parameter_handler
87: mingw_set_invalid_parameter_handler
88: mingw_set_invalid_parameter_handler
89: mingw_set_invalid_parameter_handler
90: mingw_set_invalid_parameter_handler
91: mingw_set_invalid_parameter_handler
92: mingw_set_invalid_parameter_handler
93: std::rt::lang_start::{{closure}}
94: mingw_set_invalid_parameter_handler
95: mingw_set_invalid_parameter_handler
96: mingw_set_invalid_parameter_handler
97: main
98: _tmainCRTStartup
99: mainCRTStartup
query stack during panic:
#0 [rvalue_promotable_map] checking which parts of `main::M` are promotable to static
#1 [const_is_rvalue_promotable_to_static] const checking if rvalue is promotable to static `main::M`
--> ...\test.rs:4:29
|
4 | let mut digits = [0u32; M];
| ^
#2 [rvalue_promotable_map] checking which parts of `main::{{initializer}}` are promotable to static
#3 [borrowck] processing `main::{{initializer}}`
#4 [optimized_mir] processing `main::{{initializer}}`
#5 [const_eval] const-evaluating `main::{{initializer}}`
#6 [typeck_tables_of] processing `main`
#7 [typeck_item_bodies] type-checking all item bodies
end of query stack
error: aborting due to 2 previous errors
For more information about this error, try `rustc --explain E0425`.
note: the compiler unexpectedly panicked. this is a bug.
note: we would appreciate a bug report: https://github.com/rust-lang/rust/blob/master/CONTRIBUTING.md#bug-reports
note: rustc 1.27.0-nightly (e5f80f2a4 2018-05-09) running on x86_64-pc-windows-gnu