Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

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

Closed
Badel2 opened this issue Nov 13, 2021 · 6 comments · Fixed by #100105
Closed

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

Badel2 opened this issue Nov 13, 2021 · 6 comments · Fixed by #100105
Assignees
Labels
A-closures Area: Closures (`|…| { … }`) C-bug Category: This is a bug. E-needs-test Call for participation: An issue has been fixed and does not reproduce, but no test has been added. glacier ICE tracked in rust-lang/glacier. I-ICE Issue: The compiler panicked, giving an Internal Compilation Error (ICE) ❄️ P-low Low priority regression-from-stable-to-stable Performance or correctness regression from one stable version to another. T-compiler Relevant to the compiler team, which will review and decide on the PR/issue.

Comments

@Badel2
Copy link
Contributor

Badel2 commented Nov 13, 2021

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

@Badel2 Badel2 added C-bug Category: This is a bug. I-ICE Issue: The compiler panicked, giving an Internal Compilation Error (ICE) ❄️ T-compiler Relevant to the compiler team, which will review and decide on the PR/issue. labels Nov 13, 2021
@JohnTitor
Copy link
Member

Regressed since #76814, cc @jackh726

@JohnTitor JohnTitor added the regression-from-stable-to-stable Performance or correctness regression from one stable version to another. label Nov 16, 2021
@rustbot rustbot added the I-prioritize Issue: Indicates that prioritization has been requested for this issue. label Nov 16, 2021
@JohnTitor JohnTitor added the A-closures Area: Closures (`|…| { … }`) label Nov 16, 2021
@JohnTitor
Copy link
Member

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

@JohnTitor JohnTitor added P-low Low priority and removed I-prioritize Issue: Indicates that prioritization has been requested for this issue. labels Nov 16, 2021
@Badel2
Copy link
Contributor Author

Badel2 commented Nov 26, 2021

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.

@rust-lang-glacier-bot rust-lang-glacier-bot added the glacier ICE tracked in rust-lang/glacier. label Dec 5, 2021
@dwrensha
Copy link
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
Copy link
Contributor

This regressed in #86438. cc @FabianWolff

@Alexendoo
Copy link
Member

No longer ICEs since 2643b16

@Alexendoo Alexendoo added the E-needs-test Call for participation: An issue has been fixed and does not reproduce, but no test has been added. label Jul 28, 2022
@TaKO8Ki TaKO8Ki self-assigned this Aug 3, 2022
TaKO8Ki added a commit to TaKO8Ki/rust that referenced this issue Aug 3, 2022
matthiaskrgr added a commit to matthiaskrgr/rust that referenced this issue Aug 3, 2022
bors added a commit to rust-lang-ci/rust that referenced this issue Aug 4, 2022
…iaskrgr

Rollup of 9 pull requests

Successful merges:

 - rust-lang#98877 (Set llvm configs when building lld)
 - rust-lang#100068 (Fix backwards-compatibility check for tests with `+whole-archive`)
 - rust-lang#100083 (rustdoc: use a more compact encoding for source-files.js)
 - rust-lang#100102 (Fix typo)
 - rust-lang#100104 (Remove more Clean trait implementations)
 - rust-lang#100105 (Add regression test for rust-lang#90871)
 - rust-lang#100107 (fix trailing whitespace in error message)
 - rust-lang#100111 (Provide suggestion on missing `let` in binding statement)
 - rust-lang#100119 (FilesTimes support does not build for ESP-IDF)

Failed merges:

r? `@ghost`
`@rustbot` modify labels: rollup
@bors bors closed this as completed in 9c04ffb Aug 4, 2022
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
A-closures Area: Closures (`|…| { … }`) C-bug Category: This is a bug. E-needs-test Call for participation: An issue has been fixed and does not reproduce, but no test has been added. glacier ICE tracked in rust-lang/glacier. I-ICE Issue: The compiler panicked, giving an Internal Compilation Error (ICE) ❄️ P-low Low priority regression-from-stable-to-stable Performance or correctness regression from one stable version to another. T-compiler Relevant to the compiler team, which will review and decide on the PR/issue.
Projects
None yet
Development

Successfully merging a pull request may close this issue.

7 participants