Skip to content

ICE: cannot relate bound region #17174

New issue

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

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

Already on GitHub? # to your account

Closed
rndr opened this issue Sep 11, 2014 · 1 comment
Closed

ICE: cannot relate bound region #17174

rndr opened this issue Sep 11, 2014 · 1 comment
Labels
A-lifetimes Area: Lifetimes / regions I-ICE Issue: The compiler panicked, giving an Internal Compilation Error (ICE) ❄️

Comments

@rndr
Copy link

rndr commented Sep 11, 2014

Os is Ubuntu 14.04.1 LTS

uname -a is Linux ubuntu 3.13.0-34-generic #60-Ubuntu SMP Wed Aug 13 15:45:27 UTC 2014 x86_64 x86_64 x86_64 GNU/Linux

rustc -v is rustc 0.12.0-pre-nightly (e024017f6 2014-09-04 20:21:02 +0000)

Code:

use std::io;

pub struct Sector<'sector, T: 'sector + io::Reader> {
    buffer: &'sector mut T
}

impl<'sector, T: 'sector + io::Reader> io::Reader for Sector<'sector, T> {
    fn read(&mut self, buf: &mut [u8]) -> io::IoResult<uint> {
        Ok(1)
    }
}

pub struct TIFF<T: io::Reader> {
    buffer: T
}

pub struct EXIF<'exif, T: 'exif + io::Reader> {
    buffer: T,
    tiff: Option<TIFF<Sector<'exif, T>>>
}

fn main() {
    return;
}

Error with backtrace:

test.rs:18:1: 21:2 error: internal compiler error: cannot relate bound region: ReEarlyBound(71, TypeSpace, 0, 'exif) <= ReInfer(0)
test.rs:18 pub struct EXIF<'exif, T: 'exif + io::Reader> {
test.rs:19     buffer: T,
test.rs:20     tiff: Option<TIFF<Sector<'exif, T>>>
test.rs:21 }
note: the compiler hit an unexpected failure path. this is a bug.
note: we would appreciate a bug report: http://doc.rust-lang.org/complement-bugreport.html
note: run with `RUST_BACKTRACE=1` for a backtrace
task 'rustc' failed at 'Box<Any>', /home/rustbuild/src/rust-buildbot/slave/nightly-linux/build/src/libsyntax/ast_util.rs:776

stack backtrace:
   1:     0x7fe9ff248e80 - rt::backtrace::imp::write::h4d7dee61fe5a8b45bLq
   2:     0x7fe9ff24c020 - failure::on_fail::hc85ceca22206a645T6q
   3:     0x7fea03843810 - unwind::begin_unwind_inner::h9f77a03cfeff340062d
   4:     0x7fea0066b580 - unwind::begin_unwind::h16277544611788509136
   5:     0x7fea0066b4d0 - diagnostic::SpanHandler::span_bug::hc5ee97e818833447DaF
   6:     0x7fea0404e210 - driver::session::Session::span_bug::h86708ae800cea0fdv3C
   7:     0x7fea04557cd0 - middle::typeck::infer::region_inference::RegionVarBindings<'a>::make_subregion::hba58d918df004613xib
   8:     0x7fea045122d0 - middle::typeck::infer::region_inference::RegionVarBindings<'a>::make_eqregion::h4414b1b6402cb71bWhb
   9:     0x7fea04511f40 - middle::typeck::infer::equate::Equate<'f>.Combine::regions::he7a6f2cd80b332508R6
  10:     0x7fea04515490 - middle::typeck::infer::combine::Combine::substs::h1799504273808601407
  11:     0x7fea0450e600 - middle::typeck::infer::equate::Equate<'f>.Combine::tys::hb845466f77f1eebai06
  12:     0x7fea045737d0 - middle::typeck::infer::mk_eqty::closure.133562
  13:     0x7fea04572490 - middle::typeck::infer::InferCtxt<'a>::commit_if_ok::closure.133498
  14:     0x7fea04858730 - middle::typeck::infer::InferCtxt<'a>::commit_if_ok::closure.133560
  15:     0x7fea045086f0 - middle::typeck::infer::InferCtxt<'a>::try::h18049815333742934132
  16:     0x7fea043fb770 - middle::typeck::infer::mk_eqty::hfc0777bb72d04e5fHwg
  17:     0x7fea043f6ac0 - middle::typeck::check::vtable::search_for_vtable::h88c767a301014852vSM
  18:     0x7fea043f4030 - middle::typeck::check::vtable::lookup_vtables_for_param::closure.128619
  19:     0x7fea043c0a90 - middle::ty::each_bound_trait_and_supertraits::h89adfcc1aac3d011jsJ
  20:     0x7fea043f3990 - middle::typeck::check::vtable::lookup_vtables_for_param::ha697a2b5f0dd0757JmM
  21:     0x7fea043f1300 - middle::typeck::check::vtable::lookup_vtables::h0b1d6eb0c2c133a6MgM
  22:     0x7fea0413e2b0 - middle::typeck::check::vtable::check_param_bounds::h0948ed90bbf810d59YN
  23:     0x7fea0413dfa0 - middle::kind::check_bounds_on_structs_or_enums_in_type_if_possible::closure.114337
  24:     0x7fea043bce50 - middle::ty::walk_ty::closure.127445
  25:     0x7fea04856410 - middle::ty::maybe_walk_ty::closure.127447
  26:     0x7fea04124d30 - middle::ty::maybe_walk_ty::hc9403ac68a6ceee5OEF
  27:     0x7fea04124d30 - middle::ty::maybe_walk_ty::hc9403ac68a6ceee5OEF
  28:     0x7fea04135be0 - middle::kind::check_bounds_on_structs_or_enums_in_type_if_possible::hfdcb82f362415059dex
  29:     0x7fea0412d9c0 - middle::kind::check_item::hbb770539f77f0403NEw
  30:     0x7fea04131580 - middle::kind::check_crate::ha4c379c5048a93d2msw
  31:     0x7fea03e961c0 - util::common::time::h8294075438629166868
  32:     0x7fea0473c810 - driver::driver::phase_3_run_analysis_passes::h4a780b03b559207fLkC
  33:     0x7fea04738380 - driver::driver::compile_input::hd5726d979287d37dy6B
  34:     0x7fea047cba10 - driver::run_compiler::hf71713faf6367526YVF
  35:     0x7fea047cb9c0 - driver::main_args::closure.144622
  36:     0x7fea047de370 - task::TaskBuilder<S>::try_future::closure.145791
  37:     0x7fea047de170 - task::TaskBuilder<S>::spawn_internal::closure.145768
  38:     0x7fea03b9b4c0 - task::spawn_opts::closure.8379
  39:     0x7fea03899320 - rust_try_inner
  40:     0x7fea03899310 - rust_try
  41:     0x7fea03840f60 - unwind::try::hd71c364f2ee27fc1gRd
  42:     0x7fea03840dc0 - task::Task::run::h7964802050e4385692c
  43:     0x7fea03b9b220 - task::spawn_opts::closure.8325
  44:     0x7fea038428d0 - thread::thread_start::hdb150e157ee517fagod
  45:     0x7fe9fe5e50c0 - start_thread
  46:     0x7fea0350c359 - __clone
  47:                0x0 - <unknown>
@rndr rndr changed the title internal compiler error: cannot relate bound region ICE: cannot relate bound region Sep 11, 2014
@huonw huonw added I-ICE Issue: The compiler panicked, giving an Internal Compilation Error (ICE) ❄️ A-lifetimes Area: Lifetimes / regions labels Sep 11, 2014
@rndr
Copy link
Author

rndr commented Sep 17, 2014

fixed for me
rustc 0.12.0-pre-nightly (0e784e168 2014-09-16 23:26:11 +0000)

@rndr rndr closed this as completed Sep 17, 2014
lnicola pushed a commit to lnicola/rust that referenced this issue May 26, 2024
…ail-return-expr, r=Veykril

Fix: infer type of async block with tail return expr

Fixes rust-lang#17106
The `infer_async_block` method calls the `infer_block` method internally, which returns the never type without coercion when `tail_expr` is `None` and `ctx.diverges` is `Diverges::Always`.This is the reason for the bug in this issue.
https://github.com/rust-lang/rust-analyzer/blob/cfce2bb46da62950a8b70ddb0b2a12332da1b1e1/crates/hir-ty/src/infer/expr.rs#L1411-L1413

This PR solves the bug by adding a process to coerce after calling `infer_block` method.

This code passes all the tests, including tests I added for this isuue, however, I am not sure if this solution is right. I think that this solution is an ad hoc solution. So, I would appreciate to have your review.
I apologize if I'm off the mark, but `infer_async_block` method should be rewritten to share code with the process of infering type of `expr::Closure` instead of the `infer_block` method. That way it will be closer to the infer process of rustc.
jaisnan pushed a commit to jaisnan/rust-dev that referenced this issue Jul 29, 2024
Update Rust toolchain from nightly-2024-05-27 to nightly-2024-05-28
without any other source changes.
This is an automatically generated pull request. If any of the CI checks
fail, manual intervention is required. In such a case, review the
changes at https://github.com/rust-lang/rust from
rust-lang@bdbbb6c
up to
rust-lang@84b40fc.
The log for this commit range is:
rust-lang@84b40fc908 Auto merge of
rust-lang#125628 - matthiaskrgr:rollup-3zk9v3w, r=matthiaskrgr
rust-lang@4966e1ae35 Rollup merge of
rust-lang#125625 - ChrisDenton:line-endings, r=Mark-Simulacrum
rust-lang@61f9d35798 Rollup merge of
rust-lang#125616 - RalfJung:mir-validate-downcast-projection, r=compiler-errors
rust-lang@e8dd585dd8 Rollup merge of
rust-lang#125542 - GuillaumeGomez:migrate-rustdoc-verify-output-files, r=jieyouxu
rust-lang@8bd15878eb Rollup merge of
rust-lang#125339 - tbu-:pr_tidy_ui_tests_u32, r=clubby789
rust-lang@f00b02e6bb Auto merge of
rust-lang#125599 - camelid:clarify-stability, r=notriddle,GuillaumeGomez
rust-lang@7a847fc4fb Use grep to
implement verify-line-endings
rust-lang@b0f8618938 Auto merge of
rust-lang#125413 - lcnr:ambig-drop-region-constraints, r=compiler-errors
rust-lang@7d24f87068 MIR validation:
ensure that downcast projection is followed by field projection
rust-lang@f6e4703e91 Auto merge of
rust-lang#125611 - GuillaumeGomez:rollup-dfavpgg, r=GuillaumeGomez
rust-lang@bdf3864d51 Migrate
`run-make/rustdoc-verify-output-files` to `rmake.rs`
rust-lang@f0ab814aec Add
`Rustdoc::output_format`
rust-lang@1551fd1202 Add file path in
case it cannot be read in `Diff::actual_file`
rust-lang@90fec5a087 Add `copy_dir_all`
and `recursive_diff` functions to `run-make-support`
rust-lang@7083131c92 Rollup merge of
rust-lang#125607 - GuillaumeGomez:migrate-compile-stdin, r=jieyouxu
rust-lang@a9c125f864 Rollup merge of
rust-lang#125597 - compiler-errors:early-binder, r=jackh726
rust-lang@cfa7ab474f Rollup merge of
rust-lang#125535 - onur-ozkan:remove-deprecated-field, r=clubby789
rust-lang@f50b4f5034 Rollup merge of
rust-lang#125530 - SparrowLii:expand2, r=petrochenkov
rust-lang@ad37f40355 Rollup merge of
rust-lang#125522 - spastorino:fix-lint-docs-edition-handling,
r=Urgau,michaelwoerister
rust-lang@86f2fa35a2 Rollup merge of
rust-lang#125148 - RalfJung:codegen-sh, r=scottmcm
rust-lang@6dddc888fc Rollup merge of
rust-lang#124870 - Lokathor:update-result-docs, r=dtolnay
rust-lang@a59072ec4f Auto merge of
rust-lang#125602 - RalfJung:interpret-mir-lifetime, r=oli-obk
rust-lang@e4abfaeb62 Migrate
`run-make/compile-stdin` to `rmake.rs`
rust-lang@b582f807fa Auto merge of
rust-lang#125410 - fmease:adj-lint-diag-api, r=nnethercote
rust-lang@fec98b3bbc Auto merge of
rust-lang#125468 - BoxyUwU:remove_defid_from_regionparam, r=compiler-errors
rust-lang@e8379c9598 interpret: get rid
of 'mir lifetime everywhere
rust-lang@36d36a3e1f interpret: the MIR
is actually at lifetime 'tcx
rust-lang@699d28f968 rustdoc: Show
"const" for const-unstable if also overall unstable
rust-lang@cdc509f7c0 Auto merge of
rust-lang#125580 - RalfJung:miri-sync, r=RalfJung
rust-lang@f92292978f Use EarlyBinder in
rustc_type_ir, simplify imports
rust-lang@993553ceb8 Uplift EarlyBinder
rust-lang@529bb2573a Auto merge of
rust-lang#125593 - workingjubilee:rollup-67qk7di, r=workingjubilee
rust-lang@bbcdb4fd3e Give EarlyBinder a
tcx parameter
rust-lang@4ff78692db Rollup merge of
rust-lang#125582 - scottmcm:less-from-usize, r=jieyouxu
rust-lang@45507e4304 Rollup merge of
rust-lang#125566 - camelid:notify-accepted, r=GuillaumeGomez
rust-lang@25b079a1cf Rollup merge of
rust-lang#125559 - scottmcm:simplify-shift-ubcheck, r=workingjubilee
rust-lang@c51fc1d02b Rollup merge of
rust-lang#125544 - Urgau:check-cfg-mention-cargo-specific, r=jieyouxu
rust-lang@b65b2b6ced Rollup merge of
rust-lang#125469 - compiler-errors:dont-skip-inner-const-body, r=cjgillot
rust-lang@09e75921f3 Rollup merge of
rust-lang#125466 - compiler-errors:dont-probe-for-ambig-in-sugg, r=jieyouxu
rust-lang@5860d43af3 Rollup merge of
rust-lang#125046 - bjorn3:no_mutable_static_linkage, r=cjgillot
rust-lang@866630d004 Rollup merge of
rust-lang#124048 - veera-sivarajan:bugfix-123773-c23-variadics, r=compiler-errors
rust-lang@0aad3f64e2 Auto merge of
rust-lang#125576 - lnicola:sync-from-ra, r=lnicola
rust-lang@d37f456b2a Avoid a
`FieldIdx::from_usize` in InstSimplify
rust-lang@0963353634 Auto merge of rust-lang#3631
- RalfJung:blocking-refactor, r=RalfJung
rust-lang@2e89443b93 add a macro to
declare thread unblock callbacks
rust-lang@8e861c6c4c Auto merge of rust-lang#3632
- RalfJung:readdir, r=RalfJung
rust-lang@350f5c88db unix/fs: a bit of
cleanup in macos_fbsd_readdir_r
rust-lang@e09bf5694b Auto merge of rust-lang#3633
- RalfJung:target, r=RalfJung
rust-lang@cbec1288a2 fix './miri run
--dep --target _'
rust-lang@e6bb468b53 data_race: vector
indices can be reused immediately when the thread is gone
rust-lang@a131243557 completely refactor
how we manage blocking and unblocking threads
rust-lang@f7ca8a6d66 Auto merge of rust-lang#17296
- mathew-horner:no-clone-target, r=Veykril
rust-lang@bd9cc02d10 Auto merge of rust-lang#17295
- 0xJonas:fix_passing_env_vars_to_cpptools, r=Veykril
rust-lang@5fa30f7eaa make release_clock
always work on the current thread
rust-lang@fa7a3f9049 rustdoc: Elide
const-unstable if also unstable overall
rust-lang@91b3ef5b4a Notify T-rustdoc for
beta-accepted and stable-accepted too
rust-lang@9b480da367 It seems that anchor
names are implicitly all lowercase
rust-lang@0c84361342 Simplify the
`unchecked_sh[lr]` ub-checks a bit
rust-lang@f8279b10c3 Fix URL target, it's
in the module not the type.
rust-lang@2b2f83e5ff github showed that
weird.
rust-lang@2e8f14fb37 correct for copy
paste errors when fixing wrapping.
rust-lang@22668e83f6 Resolve
rust-lang#124870 (comment)
rust-lang@939f2671a0 revert to the
inconsistent paragraph wrapping.
rust-lang@eb9894f3c9 Removed return
rust-lang@afa8dfc51f Avoid clone when
constructing runnable label.
rust-lang@09677b03dd Formatting
rust-lang@78fe45e273 Semicolon
rust-lang@2315c6b764 Use correct format
for setting environment variables when debugging with cpptools
rust-lang@331bb3f10d Auto merge of rust-lang#3630
- rust-lang:rustup-2024-05-25, r=saethlin
rust-lang@bebcb4e4b8 Also mention my-self
for check-cfg docs changes
rust-lang@c76477d909 add change entry
rust-lang@56dddd4c7e Remove deprecated
field `dist.missing-tools`
rust-lang@1d0ad04993 Merge from rustc
rust-lang@3cfcfbf083 Preparing for merge
from rustc
rust-lang@41d4a95fca Add "better" edition
handling on lint-docs tool
rust-lang@278212342e cleanup dependence
of `ExtCtxt` in transcribe when macro expansion
rust-lang@24b5466892 drop region
constraints for ambiguous goals
rust-lang@ed8e436916 move generics_of
call outside of iter
rust-lang@56d77b9048 Auto merge of rust-lang#17275
- roife:fix-issue-17012, r=Veykril
rust-lang@796cb8031d Remove failing tests
rust-lang@f856ee357c Remove `DefId` from
`EarlyParamRegion` (clippy/smir)
rust-lang@fe2d7794ca Remove `DefId` from
`EarlyParamRegion` (tedium/diagnostics)
rust-lang@bd6344d829 Remove `DefId` from
`EarlyParamRegion` (type system)
rust-lang@b7b350cff7 docs
rust-lang@008f6b3a3f Auto merge of rust-lang#3626
- devnexen:pthread_name_illumos, r=oli-obk
rust-lang@7fc41d1bdf Auto merge of rust-lang#3625
- Strophox:miri-allocation-fix, r=RalfJung
rust-lang@b84620ff17 extend comments
rust-lang@88d519f718 Auto merge of rust-lang#3628
- RalfJung:tokio, r=RalfJung
rust-lang@561bd9a5ec add back some tokio
features
rust-lang@10d414091b Auto merge of rust-lang#3627
- rust-lang:rustup-2024-05-24, r=RalfJung
rust-lang@4763eaf066 fmt
rust-lang@debf88ae1a Merge from rustc
rust-lang@9ce95c30b2 Preparing for merge
from rustc
rust-lang@c58b7c9c81 Don't skip inner
const when looking for body for suggestion
rust-lang@4bc41b91d7 Don't continue
probing for method if in suggestion and autoderef hits ambiguity
rust-lang@7f5e0aade8 solaris add suport
for threadname.
rust-lang@3c7a13d870 tests: update test
for runnables
rust-lang@c10bda5577 Update docs
rust-lang@1a37cfb703 Use cwd from
runnable.args for debugger
rust-lang@7b54c8231e Revert "Debug use
cargo workspace root as cwd. fixes rust-lang#13022"
rust-lang@d83b267bc1 Add cwd to
CargoRunnable
rust-lang@6259991f04 Auto merge of rust-lang#17287
- Veykril:sysroot-encode-empty, r=Veykril
rust-lang@f93256ca42 Allow sysroots to
only consist of the source root dir
rust-lang@1b374dfd9b differentiate
between layout and alloc_layout
rust-lang@56c363b43e fix alloc_bytes
(always allocate at least 1B)
rust-lang@ecadf37df4 Auto merge of rust-lang#17284
- Veykril:doc-links, r=Veykril
rust-lang@616fdd04bb Use correct
toolchain channel when generating builtin type doc links
rust-lang@6e8646df8b Auto merge of rust-lang#17174
- Kohei316:fix-infer-async-block-with-tail-return-expr, r=Veykril
rust-lang@425ed6a181 Update
crates/hir-ty/src/infer/expr.rs
rust-lang@68fe34a4c2 Auto merge of rust-lang#17140
- harrysarson:harry-unused-self, r=Veykril
rust-lang@6ea763b9e2 Auto merge of rust-lang#3624
- rust-lang:rustup-2024-05-23, r=RalfJung
rust-lang@400835fd11 fmt
rust-lang@f1ffb8d859 Merge from rustc
rust-lang@807a0f8c21 Preparing for merge
from rustc
rust-lang@37bf2d2dab Delay the
construction of early lint diag structs
rust-lang@9f67c50128 Remove `DelayDm`
rust-lang@06bc4fc671 Remove
`LintDiagnostic::msg`
rust-lang@366ef95407 Slightly clean up
some lint infra code
rust-lang@ac2708a347 Auto merge of rust-lang#17270
- davidbarsky:david/fix-completions-from-associated-types, r=Veykril
rust-lang@f2c3ef77b1 fix: ensure implied
bounds from associated types are considered in autocomplete
rust-lang@04a9a1a531 Auto merge of rust-lang#3614
- devnexen:illumos_time_support, r=oli-obk
rust-lang@0916e72a34 Auto merge of rust-lang#17251
- roife:fix-issue-17057, r=Veykril
rust-lang@56ce7e0e06 Auto merge of rust-lang#17252
- davidbarsky:david/refactor-standalone-bools-into-struct, r=Veykril
rust-lang@f50f8fbcb9 Simplify
rust-lang@7a21dff517 internal: refactor
`prefer_no_std`/`prefer_prelude` bools into a struct
rust-lang@4e9b12870c fix: check
pseudo-block by local_id instead of ModuleOrigin
rust-lang@ad810a51f0 Auto merge of rust-lang#17277
- Veykril:find-path-fixes, r=Veykril
rust-lang@3f638a9291 solaris/illumos
localtime_r / clock_getime support enabled.
rust-lang@d9dda8f84f Auto merge of rust-lang#17279
- Veykril:format_args-escape, r=Veykril
rust-lang@2ff9bab2eb fix: Fix format_args
lowering passing incorrect parameters to rustc_parse_format
rust-lang@39e6032445 Auto merge of rust-lang#17248
- mladedav:dm/delay-clear, r=Veykril
rust-lang@24bf53d993 Auto merge of rust-lang#17268
- Veykril:signatures, r=Veykril
rust-lang@b1830a5fe6 Update assists test
fixtures
rust-lang@b29c755572 expectify find_path
tests
rust-lang@5992af6506 fix: Fix general
find-path inconsistencies
rust-lang@7fd1429754 Auto merge of rust-lang#3623
- RalfJung:rustup, r=RalfJung
rust-lang@abbe244a81 clippy
rust-lang@a1bc030b70 Merge from rustc
rust-lang@24138f0034 Preparing for merge
from rustc
rust-lang@c8b0e5b1a4 The number of tests
does not depend on the architecture's pointer width
rust-lang@719eee2d82 test: add tests for
extern preludes resolving in local mods
rust-lang@41c006e21a Auto merge of rust-lang#3610
- marc0246:missing-error-kinds, r=RalfJung
rust-lang@37a37f6ab3 Use
`throw_unsup_format` instead of returning `ENOTSUP` in the mmap shim
rust-lang@6438554bce Show fn traits in
signature info for trait implementors
rust-lang@f42e55dfc8 Enable linked
locations for closure param inlay hints
rust-lang@4b3d7f6039 Render closure fn
trait kind in siganture help
rust-lang@7045044da3 Allow hir::Param to
refer to other entity params aside from functions
rust-lang@9ff4ffb817 Update builtin tool
list
rust-lang@ea2a16cadb fix: resolve extern
prelude for local mods in block modules
rust-lang@1287e868e9 Clear diagnostics
only after new ones were received
rust-lang@17bd43cb25 codegen:
tweak/extend shift comments
rust-lang@b468f21051 Don't use `T` with
both Result and Option, improve explanation.
rust-lang@531dae1cdf Only allow immutable
statics with #[linkage]
rust-lang@10f8d1ffef use teletype on the
attribute name
rust-lang@f94fa6bee3 Some Result
combinations work like an Option.
rust-lang@dd16cbcb4e braces around {self}
in UseTree are not unnecessary
rust-lang@39a653f632 Fix coercion of
async block
rust-lang@f005b451c2 Support C23's
Variadics Without a Named Parameter
rust-lang@62a104df98 Update Tests

Co-authored-by: qinheping <16714939+qinheping@users.noreply.github.com>
# for free to join this conversation on GitHub. Already have an account? # to comment
Labels
A-lifetimes Area: Lifetimes / regions I-ICE Issue: The compiler panicked, giving an Internal Compilation Error (ICE) ❄️
Projects
None yet
Development

No branches or pull requests

2 participants