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 with associated types defaults #23073

Closed
jorisgio opened this issue Mar 5, 2015 · 4 comments
Closed

ICE with associated types defaults #23073

jorisgio opened this issue Mar 5, 2015 · 4 comments
Labels
A-associated-items Area: Associated items (types, constants & functions) I-ICE Issue: The compiler panicked, giving an Internal Compilation Error (ICE) ❄️

Comments

@jorisgio
Copy link

jorisgio commented Mar 5, 2015

Associated types defaults ( #19476 ) cause at least two different ICE with rustc 1.0.0-nightly (b4c965e 2015-03-02) (built 2015-03-03)

Case 1 : building :

trait Foo { type T; }
trait Bar {
    type Foo: Foo;
    type FooT = <<Self as Bar>::Foo as Foo>::T;
}

Case 2 : ICE

trait Foo { type T; }
trait Bar {
    type Foo: Foo;
    type FooT = <<Self>::Foo>::T;
}

backtrace :

  1:     0x7f9849be3baf - sys::backtrace::write::hbe65ff4402631268QyA
   2:     0x7f9849c0c6e2 - panicking::on_panic::h245e35885d5e01ccFDJ
   3:     0x7f9849b4743a - rt::unwind::begin_unwind_inner::he6d56a943f3050638jJ
   4:     0x7f9849b47b24 - rt::unwind::begin_unwind_fmt::h334fac4699ed6f75LiJ
   5:     0x7f9849c0c267 - rust_begin_unwind
   6:     0x7f9849c55cf4 - panicking::panic_fmt::hfac991238dca4c38b9r
   7:     0x7f9848fc8531 - PrivacyVisitor<'a, 'tcx>::check_path::h14d56d7374e51ab607a
   8:     0x7f9848fc957b - PrivacyVisitor<'a, 'tcx>.Visitor<'v>::visit_path::h1a3768654016f45e7vb
   9:     0x7f9848fc981e - visit::walk_ty::h8843244089880601813
  10:     0x7f9848fc93a1 - PrivacyVisitor<'a, 'tcx>.Visitor<'v>::visit_item::h8973ade95546b892xgb
  11:     0x7f9848fd046b - check_crate::hbba214d62d5303eexXb
  12:     0x7f984a26c390 - driver::phase_3_run_analysis_passes::h1b4e3b2c9313b117xFa
  13:     0x7f984a251301 - driver::compile_input::hc62aeb837327f1f4Iba
  14:     0x7f984a31bd2e - run_compiler::h978681e22b0d6976F5b
  15:     0x7f984a3198dc - thunk::F.Invoke<A, R>::invoke::h10120836201339486783
  16:     0x7f984a318630 - rt::unwind::try::try_fn::h11016953016221458849
  17:     0x7f9849c78028 - rust_try_inner
  18:     0x7f9849c78015 - rust_try
  19:     0x7f984a318d1c - thunk::F.Invoke<A, R>::invoke::h13067427317151836004
  20:     0x7f9849bf8235 - sys::thread::thread_start::h106a33ed9d873acaj5E
  21:     0x7f9843931313 - start_thread
  22:     0x7f98497ce24c - clone
  23: 0xffffffffffffffff - <unknown>

Case 3 : ICE

trait Foo { type T; }
trait Bar {
    type Foo: Foo;
    type FooT = Self::Foo::T;
}

backtrace :

stack backtrace:
   1:     0x7f8951506baf - sys::backtrace::write::hbe65ff4402631268QyA
   2:     0x7f895152f6e2 - panicking::on_panic::h245e35885d5e01ccFDJ
   3:     0x7f895146a43a - rt::unwind::begin_unwind_inner::he6d56a943f3050638jJ
   4:     0x7f895146ab24 - rt::unwind::begin_unwind_fmt::h334fac4699ed6f75LiJ
   5:     0x7f894f112ae6 - middle::def::PathResolution::full_def::h4c8aebcfff75b091YPk
   6:     0x7f89508eb3de - PrivacyVisitor<'a, 'tcx>::check_path::h14d56d7374e51ab607a
   7:     0x7f89508ec57b - PrivacyVisitor<'a, 'tcx>.Visitor<'v>::visit_path::h1a3768654016f45e7vb
   8:     0x7f89508ec3a1 - PrivacyVisitor<'a, 'tcx>.Visitor<'v>::visit_item::h8973ade95546b892xgb
   9:     0x7f89508f346b - check_crate::hbba214d62d5303eexXb
  10:     0x7f8951b8f390 - driver::phase_3_run_analysis_passes::h1b4e3b2c9313b117xFa
  11:     0x7f8951b74301 - driver::compile_input::hc62aeb837327f1f4Iba
  12:     0x7f8951c3ed2e - run_compiler::h978681e22b0d6976F5b
  13:     0x7f8951c3c8dc - thunk::F.Invoke<A, R>::invoke::h10120836201339486783
  14:     0x7f8951c3b630 - rt::unwind::try::try_fn::h11016953016221458849
  15:     0x7f895159b028 - rust_try_inner
  16:     0x7f895159b015 - rust_try
  17:     0x7f8951c3bd1c - thunk::F.Invoke<A, R>::invoke::h13067427317151836004
  18:     0x7f895151b235 - sys::thread::thread_start::h106a33ed9d873acaj5E
  19:     0x7f894b254313 - start_thread
  20:     0x7f89510f124c - clone
  21: 0xffffffffffffffff - <unknown>
@eddyb
Copy link
Member

eddyb commented Mar 5, 2015

Thanks! Both of the ICE cases are caused by changes I've made which assume every type (including those defaults) is instantiated by astconv during typeck.
Because defaults are not implemented, that assumption is wrong - the simplest fix I can see would be to instantiate those defaults even if they're unused.

@nikomatsakis @japaric Are there any immediate plans for implementing those defaults?

@kmcallister kmcallister added I-ICE Issue: The compiler panicked, giving an Internal Compilation Error (ICE) ❄️ A-associated-items Area: Associated items (types, constants & functions) labels Mar 5, 2015
@theemathas
Copy link
Contributor

Variant of case 3:

trait What { type T; }
trait Bar {
    type Foo;
    type FooT = Self::Foo::T;
}

The difference is that this code is invalid.

@nikomatsakis
Copy link
Contributor

On Thu, Mar 05, 2015 at 08:07:50AM -0800, Eduard Burtescu wrote:

Thanks! Both of the ICE cases are caused by changes I've made which assume every type (including those defaults) is instantiated by astconv during typeck.
Because defaults are not implemented, that assumption is wrong - the simplest fix I can see would be to instantiate those defaults even if they're unused.

@nikomatsakis @japaric Are there any immediate plans for implementing those defaults?

I've been meaning to implement them for a while now, just keep getting distracted...

@arielb1
Copy link
Contributor

arielb1 commented Jul 7, 2015

These were fixed when defaults were implemented.

@arielb1 arielb1 closed this as completed Jul 7, 2015
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
A-associated-items Area: Associated items (types, constants & functions) I-ICE Issue: The compiler panicked, giving an Internal Compilation Error (ICE) ❄️
Projects
None yet
Development

No branches or pull requests

6 participants