Skip to content

ICE with inline-const in match referencing const-generic parameter #82518

Closed
@Nemo157

Description

@Nemo157

I tried this code:

#![feature(inline_const)]

fn foo<const V: usize>() {
  match 0 {
    const { V } => {},
    _ => {},
  }
}
error: internal compiler error: /rustc/a8486b64b0c87dabd045453b6c81500015d122d6/compiler/rustc_middle/src/ty/consts.rs:193:32: expected bits of usize, got Const {
    ty: usize,
    val: Param(
        V/#0,
    ),
}

thread 'rustc' panicked at 'Box<Any>', /rustc/a8486b64b0c87dabd045453b6c81500015d122d6/library/std/src/panic.rs:59:5
note: run with `RUST_BACKTRACE=1` environment variable to display a backtrace

note: the compiler unexpectedly panicked. this is a bug.

note: we would appreciate a bug report: https://github.com/rust-lang/rust/issues/new?labels=C-bug%2C+I-ICE%2C+T-compiler&template=ice.md

note: rustc 1.52.0-nightly (a8486b64b 2021-02-24) running on x86_64-unknown-linux-gnu

note: compiler flags: -C embed-bitcode=no -C codegen-units=1 -C debuginfo=2 --crate-type lib

note: some of the compiler flags provided by cargo are hidden

query stack during panic:
#0 [mir_built] building MIR for `foo`
#1 [unsafety_check_result] unsafety-checking `foo`
end of query stack
error: aborting due to previous error; 1 warning emitted

error: could not compile `playground`

Meta

Backtrace

thread 'rustc' panicked at 'Box<Any>', /rustc/a8486b64b0c87dabd045453b6c81500015d122d6/library/std/src/panic.rs:59:5
stack backtrace:
   0: std::panicking::begin_panic
   1: std::panic::panic_any
   2: rustc_errors::HandlerInner::bug
   3: rustc_errors::Handler::bug
   4: rustc_middle::ty::context::tls::with_opt
   5: rustc_middle::util::bug::opt_span_bug_fmt
   6: rustc_middle::util::bug::bug_fmt
   7: indexmap::map::core::Entry<K,V>::or_insert_with
   8: rustc_mir_build::build::matches::<impl rustc_mir_build::build::Builder>::match_simplified_candidates
   9: rustc_mir_build::build::matches::<impl rustc_mir_build::build::Builder>::match_candidates::{{closure}}
  10: rustc_mir_build::build::matches::<impl rustc_mir_build::build::Builder>::lower_match_tree
  11: rustc_mir_build::build::expr::into::<impl rustc_mir_build::build::Builder>::into_expr
  12: rustc_mir_build::build::scope::<impl rustc_mir_build::build::Builder>::in_scope
  13: rustc_data_structures::stack::ensure_sufficient_stack
  14: rustc_mir_build::build::expr::into::<impl rustc_mir_build::build::Builder>::into_expr
  15: rustc_mir_build::build::block::<impl rustc_mir_build::build::Builder>::ast_block_stmts
  16: rustc_mir_build::build::expr::into::<impl rustc_mir_build::build::Builder>::into_expr
  17: rustc_mir_build::build::scope::<impl rustc_mir_build::build::Builder>::in_scope
  18: rustc_data_structures::stack::ensure_sufficient_stack
  19: rustc_mir_build::build::expr::into::<impl rustc_mir_build::build::Builder>::into_expr
  20: rustc_mir_build::build::scope::<impl rustc_mir_build::build::Builder>::in_scope
  21: rustc_data_structures::stack::ensure_sufficient_stack
  22: rustc_mir_build::build::expr::into::<impl rustc_mir_build::build::Builder>::into_expr
  23: rustc_mir_build::build::construct_fn
  24: rustc_infer::infer::InferCtxtBuilder::enter
  25: rustc_mir_build::build::mir_built
  26: rustc_query_system::dep_graph::graph::DepGraph<K>::with_task_impl
  27: rustc_data_structures::stack::ensure_sufficient_stack
  28: rustc_query_system::query::plumbing::force_query_with_job
  29: rustc_query_system::query::plumbing::get_query_impl
  30: <rustc_query_impl::Queries as rustc_middle::ty::query::QueryEngine>::mir_built
  31: rustc_mir::transform::check_unsafety::unsafety_check_result
  32: core::ops::function::FnOnce::call_once
  33: rustc_query_system::dep_graph::graph::DepGraph<K>::with_task_impl
  34: rustc_data_structures::stack::ensure_sufficient_stack
  35: rustc_query_system::query::plumbing::force_query_with_job
  36: rustc_query_system::query::plumbing::get_query_impl
  37: <rustc_query_impl::Queries as rustc_middle::ty::query::QueryEngine>::unsafety_check_result
  38: rustc_mir::transform::mir_const
  39: rustc_query_system::dep_graph::graph::DepGraph<K>::with_task_impl
  40: rustc_data_structures::stack::ensure_sufficient_stack
  41: rustc_query_system::query::plumbing::force_query_with_job
  42: rustc_query_system::query::plumbing::get_query_impl
  43: <rustc_query_impl::Queries as rustc_middle::ty::query::QueryEngine>::mir_const
  44: rustc_mir::transform::mir_promoted
  45: rustc_query_system::dep_graph::graph::DepGraph<K>::with_task_impl
  46: rustc_data_structures::stack::ensure_sufficient_stack
  47: rustc_query_system::query::plumbing::force_query_with_job
  48: rustc_query_system::query::plumbing::get_query_impl
  49: <rustc_query_impl::Queries as rustc_middle::ty::query::QueryEngine>::mir_promoted
  50: rustc_mir::borrow_check::mir_borrowck
  51: core::ops::function::FnOnce::call_once
  52: rustc_query_system::dep_graph::graph::DepGraph<K>::with_task_impl
  53: rustc_data_structures::stack::ensure_sufficient_stack
  54: rustc_query_system::query::plumbing::force_query_with_job
  55: rustc_query_system::query::plumbing::get_query_impl
  56: <rustc_query_impl::Queries as rustc_middle::ty::query::QueryEngine>::mir_borrowck
  57: rustc_middle::ty::<impl rustc_middle::ty::context::TyCtxt>::par_body_owners
  58: rustc_interface::passes::analysis
  59: rustc_query_system::dep_graph::graph::DepGraph<K>::with_task_impl
  60: rustc_data_structures::stack::ensure_sufficient_stack
  61: rustc_query_system::query::plumbing::force_query_with_job
  62: rustc_query_system::query::plumbing::get_query_impl
  63: <rustc_query_impl::Queries as rustc_middle::ty::query::QueryEngine>::analysis
  64: rustc_interface::passes::QueryContext::enter
  65: rustc_interface::queries::<impl rustc_interface::interface::Compiler>::enter
  66: rustc_span::with_source_map
  67: rustc_interface::interface::create_compiler_and_run
  68: scoped_tls::ScopedKey<T>::set

Metadata

Metadata

Assignees

Labels

C-bugCategory: This is a bug.F-inline_constInline constants (aka: const blocks, const expressions, anonymous constants)I-ICEIssue: The compiler panicked, giving an Internal Compilation Error (ICE) ❄️T-compilerRelevant to the compiler team, which will review and decide on the PR/issue.glacierICE tracked in rust-lang/glacier.requires-nightlyThis issue requires a nightly compiler in some way.

Type

No type

Projects

No projects

Milestone

No milestone

Relationships

None yet

Development

No branches or pull requests

Issue actions