Skip to content

ICE: No bound vars found for "expr || 1 ... #90871

Closed

Description

@Badel2

I'm seeing an internal compiler error on the following input, found by fuzz-rustc:

Code

fn main() {
    2: n([u8; || 1])
}

Error output

error[E0412]: cannot find type `n` in this scope
 --> src/main.rs:2:8
  |
2 |     2: n([u8; || 1])
  |        ^ expecting a type here because of type ascription

error: internal compiler error: compiler/rustc_middle/src/ty/context.rs:2713:21: No bound vars found for "expr || 1 (hir_id=HirId { owner: DefId(0:3 ~ playground[aec1]::main), local_id: 7 })" (HirId { owner: DefId(0:3 ~ playground[aec1]::main), local_id: 7 })

thread 'rustc' panicked at 'Box<dyn Any>', compiler/rustc_errors/src/lib.rs:1169:9
note: run with `RUST_BACKTRACE=1` environment variable to display a backtrace

The ICE happens after correctly reporting the error "cannot find type n in this scope", so low priority. Affected versions: I tried nightly 2021-11-12 and stable 1.56.1 and they both show the same ICE.

Backtrace

   Compiling playground v0.0.1 (/playground)
error[E0412]: cannot find type `n` in this scope
 --> src/main.rs:2:8
  |
2 |     2: n([u8; || 1])
  |        ^ expecting a type here because of type ascription

error: internal compiler error: compiler/rustc_middle/src/ty/context.rs:2713:21: No bound vars found for "expr || 1 (hir_id=HirId { owner: DefId(0:3 ~ playground[aec1]::main), local_id: 7 })" (HirId { owner: DefId(0:3 ~ playground[aec1]::main), local_id: 7 })

thread 'rustc' panicked at 'Box<dyn Any>', compiler/rustc_errors/src/lib.rs:1169:9
stack backtrace:
   0: std::panicking::begin_panic::<rustc_errors::ExplicitBug>
   1: std::panic::panic_any::<rustc_errors::ExplicitBug>
   2: <rustc_errors::HandlerInner>::bug
   3: <rustc_errors::Handler>::bug
   4: rustc_middle::ty::context::tls::with_opt::<rustc_middle::util::bug::opt_span_bug_fmt<rustc_span::span_encoding::Span>::{closure#0}, ()>
   5: rustc_middle::util::bug::opt_span_bug_fmt::<rustc_span::span_encoding::Span>
   6: rustc_middle::util::bug::bug_fmt
   7: <rustc_middle::ty::context::TyCtxt>::late_bound_vars
   8: <rustc_typeck::check::fn_ctxt::FnCtxt>::supplied_sig_of_closure
   9: <rustc_typeck::check::fn_ctxt::FnCtxt>::check_expr_closure
  10: <rustc_typeck::check::fn_ctxt::FnCtxt>::check_expr_kind
  11: <rustc_typeck::check::fn_ctxt::FnCtxt>::check_expr_with_expectation_and_args
  12: <rustc_infer::infer::InferCtxtBuilder>::enter::<&rustc_middle::ty::context::TypeckResults, <rustc_typeck::check::inherited::InheritedBuilder>::enter<rustc_typeck::check::typeck_with_fallback<rustc_typeck::check::typeck::{closure#0}>::{closure#1}, &rustc_middle::ty::context::TypeckResults>::{closure#0}>
  13: rustc_typeck::check::typeck
  14: rustc_query_system::query::plumbing::try_execute_query::<rustc_query_impl::plumbing::QueryCtxt, rustc_query_system::query::caches::DefaultCache<rustc_span::def_id::LocalDefId, &rustc_middle::ty::context::TypeckResults>>
  15: <rustc_query_impl::Queries as rustc_middle::ty::query::QueryEngine>::typeck
  16: rustc_typeck::check::typeck
  17: rustc_query_system::query::plumbing::try_execute_query::<rustc_query_impl::plumbing::QueryCtxt, rustc_query_system::query::caches::DefaultCache<rustc_span::def_id::LocalDefId, &rustc_middle::ty::context::TypeckResults>>
  18: <rustc_query_impl::Queries as rustc_middle::ty::query::QueryEngine>::typeck
  19: <rustc_middle::hir::map::Map>::par_body_owners::<rustc_typeck::check::typeck_item_bodies::{closure#0}>
  20: rustc_typeck::check::typeck_item_bodies
  21: rustc_query_system::query::plumbing::try_execute_query::<rustc_query_impl::plumbing::QueryCtxt, rustc_query_system::query::caches::DefaultCache<(), ()>>
  22: rustc_query_system::query::plumbing::get_query::<rustc_query_impl::queries::typeck_item_bodies, rustc_query_impl::plumbing::QueryCtxt>
  23: <rustc_session::session::Session>::time::<(), rustc_typeck::check_crate::{closure#7}>
  24: rustc_typeck::check_crate
  25: rustc_interface::passes::analysis
  26: rustc_query_system::query::plumbing::try_execute_query::<rustc_query_impl::plumbing::QueryCtxt, rustc_query_system::query::caches::DefaultCache<(), core::result::Result<(), rustc_errors::ErrorReported>>>
  27: rustc_query_system::query::plumbing::get_query::<rustc_query_impl::queries::analysis, rustc_query_impl::plumbing::QueryCtxt>
  28: <rustc_interface::passes::QueryContext>::enter::<rustc_driver::run_compiler::{closure#1}::{closure#2}::{closure#3}, core::result::Result<(), rustc_errors::ErrorReported>>
  29: <rustc_interface::interface::Compiler>::enter::<rustc_driver::run_compiler::{closure#1}::{closure#2}, core::result::Result<core::option::Option<rustc_interface::queries::Linker>, rustc_errors::ErrorReported>>
  30: rustc_span::with_source_map::<core::result::Result<(), rustc_errors::ErrorReported>, rustc_interface::interface::create_compiler_and_run<core::result::Result<(), rustc_errors::ErrorReported>, rustc_driver::run_compiler::{closure#1}>::{closure#1}>
  31: rustc_interface::interface::create_compiler_and_run::<core::result::Result<(), rustc_errors::ErrorReported>, rustc_driver::run_compiler::{closure#1}>
  32: <scoped_tls::ScopedKey<rustc_span::SessionGlobals>>::set::<rustc_interface::util::setup_callbacks_and_run_in_thread_pool_with_globals<rustc_interface::interface::run_compiler<core::result::Result<(), rustc_errors::ErrorReported>, rustc_driver::run_compiler::{closure#1}>::{closure#0}, core::result::Result<(), rustc_errors::ErrorReported>>::{closure#0}::{closure#0}, core::result::Result<(), rustc_errors::ErrorReported>>
note: Some details are omitted, run with `RUST_BACKTRACE=full` for a verbose 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.58.0-nightly (e90c5fbbc 2021-11-12) running on x86_64-unknown-linux-gnu

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

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

query stack during panic:
#0 [typeck] type-checking `main::{constant#0}`
#1 [typeck] type-checking `main::{constant#0}::{closure#0}`
#2 [typeck_item_bodies] type-checking all item bodies
#3 [analysis] running analysis passes on this crate
end of query stack
For more information about this error, try `rustc --explain E0412`.
error: could not compile `playground` due to previous error

Activity

  1. added
    C-bugCategory: This is a bug.
    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.
    on Nov 13, 2021
  2. JohnTitor commented on Nov 16, 2021

    @JohnTitor
    Member

    Regressed since #76814, cc @jackh726

  3. added
    I-prioritizeIssue needs a team member to assess the impact. Will be replaced by P-{low,medium,high,critical}
    on Nov 16, 2021
  4. JohnTitor commented on Nov 16, 2021

    @JohnTitor
    Member

    Assigning P-low as discussed as part of the Prioritization Working Group procedure and removing I-prioritize.

  5. added
    P-lowLow priority
    and removed
    I-prioritizeIssue needs a team member to assess the impact. Will be replaced by P-{low,medium,high,critical}
    on Nov 16, 2021
  6. Badel2 commented on Nov 26, 2021

    @Badel2
    ContributorAuthor

    Another input with a slightly different error message: No bound vars found for "type fn() (hir_id=HirId...

    fn main() {
        2: n([u8; 3:fn()])
    }
    Backtrace

       Compiling playground v0.0.1 (/playground)
    error[E0412]: cannot find type `n` in this scope
     --> src/main.rs:2:8
      |
    2 |     2: n([u8; 3:fn()])
      |        ^ expecting a type here because of type ascription
    
    error: internal compiler error: compiler/rustc_middle/src/ty/context.rs:2713:21: No bound vars found for "type fn() (hir_id=HirId { owner: DefId(0:3 ~ playground[7419]::main), local_id: 7 })" (HirId { owner: DefId(0:3 ~ playground[7419]::main), local_id: 7 })
    
    thread 'rustc' panicked at 'Box<dyn Any>', compiler/rustc_errors/src/lib.rs:1169:9
    stack backtrace:
       0: std::panicking::begin_panic::<rustc_errors::ExplicitBug>
       1: std::panic::panic_any::<rustc_errors::ExplicitBug>
       2: <rustc_errors::HandlerInner>::bug
       3: <rustc_errors::Handler>::bug
       4: rustc_middle::ty::context::tls::with_opt::<rustc_middle::util::bug::opt_span_bug_fmt<rustc_span::span_encoding::Span>::{closure#0}, ()>
       5: rustc_middle::util::bug::opt_span_bug_fmt::<rustc_span::span_encoding::Span>
       6: rustc_middle::util::bug::bug_fmt
       7: <rustc_middle::ty::context::TyCtxt>::late_bound_vars
       8: <dyn rustc_typeck::astconv::AstConv>::ty_of_fn
       9: <dyn rustc_typeck::astconv::AstConv>::ast_ty_to_ty_inner
      10: <rustc_typeck::check::fn_ctxt::FnCtxt>::to_ty_saving_user_provided_ty
      11: <rustc_typeck::check::fn_ctxt::FnCtxt>::check_expr_kind
      12: <rustc_typeck::check::fn_ctxt::FnCtxt>::check_expr_with_expectation_and_args
      13: <rustc_infer::infer::InferCtxtBuilder>::enter::<&rustc_middle::ty::context::TypeckResults, <rustc_typeck::check::inherited::InheritedBuilder>::enter<rustc_typeck::check::typeck_with_fallback<rustc_typeck::check::typeck::{closure#0}>::{closure#1}, &rustc_middle::ty::context::TypeckResults>::{closure#0}>
      14: rustc_typeck::check::typeck
      15: rustc_query_system::query::plumbing::try_execute_query::<rustc_query_impl::plumbing::QueryCtxt, rustc_query_system::query::caches::DefaultCache<rustc_span::def_id::LocalDefId, &rustc_middle::ty::context::TypeckResults>>
      16: <rustc_query_impl::Queries as rustc_middle::ty::query::QueryEngine>::typeck
      17: <rustc_middle::hir::map::Map>::par_body_owners::<rustc_typeck::check::typeck_item_bodies::{closure#0}>
      18: rustc_typeck::check::typeck_item_bodies
      19: rustc_query_system::query::plumbing::try_execute_query::<rustc_query_impl::plumbing::QueryCtxt, rustc_query_system::query::caches::DefaultCache<(), ()>>
      20: rustc_query_system::query::plumbing::get_query::<rustc_query_impl::queries::typeck_item_bodies, rustc_query_impl::plumbing::QueryCtxt>
      21: <rustc_session::session::Session>::time::<(), rustc_typeck::check_crate::{closure#7}>
      22: rustc_typeck::check_crate
      23: rustc_interface::passes::analysis
      24: rustc_query_system::query::plumbing::try_execute_query::<rustc_query_impl::plumbing::QueryCtxt, rustc_query_system::query::caches::DefaultCache<(), core::result::Result<(), rustc_errors::ErrorReported>>>
      25: rustc_query_system::query::plumbing::get_query::<rustc_query_impl::queries::analysis, rustc_query_impl::plumbing::QueryCtxt>
      26: <rustc_interface::passes::QueryContext>::enter::<rustc_driver::run_compiler::{closure#1}::{closure#2}::{closure#3}, core::result::Result<(), rustc_errors::ErrorReported>>
      27: <rustc_interface::interface::Compiler>::enter::<rustc_driver::run_compiler::{closure#1}::{closure#2}, core::result::Result<core::option::Option<rustc_interface::queries::Linker>, rustc_errors::ErrorReported>>
      28: rustc_span::with_source_map::<core::result::Result<(), rustc_errors::ErrorReported>, rustc_interface::interface::create_compiler_and_run<core::result::Result<(), rustc_errors::ErrorReported>, rustc_driver::run_compiler::{closure#1}>::{closure#1}>
      29: rustc_interface::interface::create_compiler_and_run::<core::result::Result<(), rustc_errors::ErrorReported>, rustc_driver::run_compiler::{closure#1}>
      30: <scoped_tls::ScopedKey<rustc_span::SessionGlobals>>::set::<rustc_interface::util::setup_callbacks_and_run_in_thread_pool_with_globals<rustc_interface::interface::run_compiler<core::result::Result<(), rustc_errors::ErrorReported>, rustc_driver::run_compiler::{closure#1}>::{closure#0}, core::result::Result<(), rustc_errors::ErrorReported>>::{closure#0}::{closure#0}, core::result::Result<(), rustc_errors::ErrorReported>>
    note: Some details are omitted, run with `RUST_BACKTRACE=full` for a verbose backtrace.
    

  7. dwrensha commented on Dec 25, 2021

    @dwrensha
    Contributor

    searched nightlies: from nightly-2021-01-07 to nightly-2021-12-24
    regressed nightly: nightly-2021-07-26
    searched commits: from d9aa287 to 9c25eb7
    regressed commit: 478126c

    bisected with cargo-bisect-rustc v0.6.0

    Host triple: x86_64-unknown-linux-gnu
    Reproduce with:

    cargo bisect-rustc --start=2021-1-7 --end=2021-12-24 --regress ice 
  8. dwrensha commented on Dec 25, 2021

    @dwrensha
    Contributor

    This regressed in #86438. cc @FabianWolff

  9. Alexendoo commented on Jul 28, 2022

    @Alexendoo
    Member

    No longer ICEs since 2643b16

  10. added
    E-needs-testCall for participation: An issue has been fixed and does not reproduce, but no test has been added.
    on Jul 28, 2022
  11. self-assigned this
    on Aug 3, 2022
  12. added 2 commits that reference this issue on Aug 3, 2022
  13. added a commit that references this issue on Aug 4, 2022
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Metadata

Metadata

Assignees

Labels

A-closuresArea: Closures (`|…| { … }`)C-bugCategory: This is a bug.E-needs-testCall for participation: An issue has been fixed and does not reproduce, but no test has been added.I-ICEIssue: The compiler panicked, giving an Internal Compilation Error (ICE) ❄️P-lowLow priorityT-compilerRelevant to the compiler team, which will review and decide on the PR/issue.glacierICE tracked in rust-lang/glacier.regression-from-stable-to-stablePerformance or correctness regression from one stable version to another.

Type

No type

Projects

No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions