Skip to content

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

@Badel2

Description

@Badel2
Contributor

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

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
JohnTitor

JohnTitor commented on Nov 16, 2021

@JohnTitor
Member

Regressed since #76814, cc @jackh726

added
I-prioritizeIssue: Indicates that prioritization has been requested for this issue.
on Nov 16, 2021
JohnTitor

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.

added
P-lowLow priority
and removed
I-prioritizeIssue: Indicates that prioritization has been requested for this issue.
on Nov 16, 2021
Badel2

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.

dwrensha

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 
dwrensha

dwrensha commented on Dec 25, 2021

@dwrensha
Contributor

This regressed in #86438. cc @FabianWolff

Alexendoo

Alexendoo commented on Jul 28, 2022

@Alexendoo
Member

No longer ICEs since 2643b16

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
self-assigned this
on Aug 3, 2022
added 2 commits that reference this issue on Aug 3, 2022
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

    Participants

    @dwrensha@Alexendoo@Badel2@JohnTitor@TaKO8Ki

    Issue actions

      ICE: No bound vars found for "expr || 1 ... · Issue #90871 · rust-lang/rust