Skip to content

[ICE] using a not found constant #50599

Closed
@leonardo-m

Description

@leonardo-m

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

Metadata

Metadata

Assignees

No one assigned

    Labels

    A-const-evalArea: Constant evaluation, covers all const contexts (static, const fn, ...)I-ICEIssue: The compiler panicked, giving an Internal Compilation Error (ICE) ❄️

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions