Skip to content

ICE on questionable use of trait #19208

Closed
@mitsuhiko

Description

@mitsuhiko

This code:

#![feature(if_let, while_let)]

use std::io;

pub struct Test<W: Writer> {
    writer: W,
}

impl<W: Writer> Test<W> {

    pub fn new(writer: W) -> Test<W> {
        Test {
            writer: writer,
        }
    }

    pub fn write_something(&mut self) -> io::IoResult<()> {
        try!(writeln!(self.writer, ""));
        Ok(())
    }
}

Produces this very hard to understand error:

<std macros>:3:24: 18:34 error: type `W` cannot be dereferenced
<std macros>:3         let dst = &mut *$dst;
<std macros>:4         format_args!(|args| { dst.write_fmt(args) }, $($arg)*)
<std macros>:5     })
<std macros>:6 )
error: internal compiler error: unexpected panic
note: the compiler unexpectedly panicked. 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' panicked at 'index out of bounds: the len is 6 but the index is 6', /Users/rustbuild/src/rust-buildbot/slave/nightly-mac/build/src/libsyntax/lib.rs:1

stack backtrace:
   1:        0x10e61aba2 - rt::backtrace::imp::write::h90a8813e205226e59it
   2:        0x10e61dd3d - failure::on_fail::h02cd561a89cb7027gBt
   3:        0x10e88df65 - unwind::begin_unwind_inner::h4bc3350c0517820112c
   4:        0x10e88dbaf - unwind::begin_unwind_fmt::hd106a62827b11c87c0c
   5:        0x10e88d952 - rust_begin_unwind
   6:        0x10e8d8fec - panicking::panic_fmt::h17addcbe3c55edecaOl
   7:        0x10e8e15b1 - panicking::panic_bounds_check::he446012f6f64f624IMl
   8:        0x10c59c015 - codemap::FileMap::get_line::h765ba394c07c5a54m4E
   9:        0x10c5ca703 - diagnostic::emit::hb066201a777f2165wvG
  10:        0x10c5c6f98 - diagnostic::EmitterWriter.Emitter::emit::h165058475e3b3ec5lrG
  11:        0x10c5c5785 - diagnostic::Handler::emit::hde0ac2d5b40efe25F8F
  12:        0x10c5981ab - diagnostic::SpanHandler::span_err::h2eaa3c8ca5c5b97cEWF
  13:        0x10b9df920 - middle::typeck::infer::InferCtxt<'a, 'tcx>::type_error_message_str_with_expected::h6ee55cab43056003TKF
  14:        0x10b92f921 - middle::typeck::infer::InferCtxt<'a, 'tcx>::type_error_message::h3d8733aff7464519dQF
  15:        0x10b940539 - middle::typeck::check::check_expr_with_unifier::h40fb1c6e261626f5Nzm
  16:        0x10b93e934 - middle::typeck::check::check_expr_with_unifier::h40fb1c6e261626f5Nzm
  17:        0x10b96d0b3 - middle::typeck::check::check_decl_local::hfecf573d1629e05egto
  18:        0x10b96d2a3 - middle::typeck::check::check_stmt::h837abcc8fc4466f6gvo
  19:        0x10b8f41e8 - middle::typeck::check::check_block_with_expected::hb5675eefe857af90vzo
  20:        0x10b93a760 - middle::typeck::check::check_expr_with_unifier::h40fb1c6e261626f5Nzm
  21:        0x10b82e2db - middle::typeck::check::_match::check_match::h3caf386ed888768e5P8
  22:        0x10b93a683 - middle::typeck::check::check_expr_with_unifier::h40fb1c6e261626f5Nzm
  23:        0x10b8f4522 - middle::typeck::check::check_block_with_expected::hb5675eefe857af90vzo
  24:        0x10b93a760 - middle::typeck::check::check_expr_with_unifier::h40fb1c6e261626f5Nzm
  25:        0x10b96d2fa - middle::typeck::check::check_stmt::h837abcc8fc4466f6gvo
  26:        0x10b8f41e8 - middle::typeck::check::check_block_with_expected::hb5675eefe857af90vzo
  27:        0x10b8cdf00 - middle::typeck::check::check_fn::hd44de11a490be98ce0i
  28:        0x10b8f0aae - middle::typeck::check::check_bare_fn::h3c7a1f5d35e30589jPi
  29:        0x10b8f754f - middle::typeck::check::check_method_body::he0c86eb88bb45c1blkj
  30:        0x10b8edb88 - middle::typeck::check::check_item::h4ddfa2a018f36791t9i
  31:        0x10b8f07d0 - middle::typeck::check::check_item_types::h1ade2b1cc61bf6batOi
  32:        0x10bc74826 - util::common::time::h8028586279873844585
  33:        0x10bc73ca4 - middle::typeck::check_crate::h3a5b374f87cce2eecwM
  34:        0x10b265393 - driver::driver::phase_3_run_analysis_passes::hdc8c835c5059844etfS
  35:        0x10b2598bc - driver::driver::compile_input::h1998d439bb2aa565dWR
  36:        0x10b2d7bc5 - driver::run_compiler::h8a3c490c622774caHUT
  37:        0x10b2d639e - driver::run::closure.59807
  38:        0x10b0edc5b - task::TaskBuilder<S>::try_future::closure.39061
  39:        0x10b0edb53 - task::TaskBuilder<S>::spawn_internal::closure.39032
  40:        0x10b0b17bd - task::NativeSpawner.Spawner::spawn::closure.2475
  41:        0x10e8f082c - rust_try_inner
  42:        0x10e8f0816 - rust_try
  43:        0x10e88b707 - unwind::try::h9549aa28335b576amRc
  44:        0x10e88b59c - task::Task::run::h7f22cfdcfa218bd192b
  45:        0x10b0b15e3 - task::NativeSpawner.Spawner::spawn::closure.2399
  46:        0x10e88cdd7 - thread::thread_start::h08cb83a10e608715foc
  47:     0x7fff9260c2fc - _pthread_body
  48:     0x7fff9260c279 - _pthread_body

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions