Skip to content

Static recursion checker doesn't like foreign items #18164

Closed
@bgamari

Description

@bgamari

Given this example,

struct I2CReg {
  test: u32
}

extern {
  #[link_name="k20_iomem_I2C0"] pub static I2C0: I2CReg;
}

struct I2C {
  reg: &'static I2CReg
}

static mut i2c0: I2C = I2C {
  reg: &I2C0
};

The compiler fails with,

$ RUST_BACKTRACE=1 rustc ~/hi.rs
error: main function not found
error: internal compiler error: unexpected failure
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 'expected item, found foreign item I2C0::I2C0 (id=10)', /opt/exp/rust/src/libsyntax/ast_map/mod.rs:327

stack backtrace:
   1:     0x7f8177084ac0 - rt::backtrace::imp::write::h1ca5678a3ff3db86FKq
   2:     0x7f8177087bf0 - failure::on_fail::h5e5f8014b5357c8925q
   3:     0x7f817784c120 - unwind::begin_unwind_inner::h8d456ef7c87c11498yd
   4:     0x7f817784bc60 - unwind::begin_unwind_fmt::hca0e3d62c3383802Awd
   5:     0x7f81735515a0 - ast_map::Map<'ast>::expect_item::h334acf2fbc39b3c5ZyA
   6:     0x7f8177fcc880 - middle::check_static_recursion::CheckItemRecursionVisitor<'a, 'ast>.Visitor<'v>::visit_expr::he096ace2658f1b8bbBm
   7:     0x7f8177fcc880 - middle::check_static_recursion::CheckItemRecursionVisitor<'a, 'ast>.Visitor<'v>::visit_expr::he096ace2658f1b8bbBm
   8:     0x7f8177fcb690 - middle::check_static_recursion::CheckItemRecursionVisitor<'a, 'ast>.Visitor<'v>::visit_item::hed53c23550405e1ahAm
   9:     0x7f8177fcb2c0 - middle::check_static_recursion::check_item_recursion::h5327b315a0b31aa3yzm
  10:     0x7f8177fc96a0 - middle::check_static_recursion::check_item::hd99fb3896a763d44hym
  11:     0x7f8177fca090 - middle::check_static_recursion::check_crate::hd6acd800f78889b5Axm
  12:     0x7f8177da3360 - util::common::time::h12472689958318282120
  13:     0x7f8178653240 - driver::driver::phase_3_run_analysis_passes::hce054544bc712d7cY9z
  14:     0x7f817864e380 - driver::driver::compile_input::h63529e8fd125edb4KQz
  15:     0x7f81786d9770 - driver::run_compiler::h7dbfcf2997d50ba64DD
  16:     0x7f81786d9620 - driver::run::closure.145928
  17:     0x7f8177dbd1f0 - task::TaskBuilder<S>::try_future::closure.103305
  18:     0x7f8177dbcfd0 - task::TaskBuilder<S>::spawn_internal::closure.103276
  19:     0x7f8178f3d040 - task::spawn_opts::closure.8464
  20:     0x7f81779fdf40 - rust_try_inner
  21:     0x7f81779fdf30 - rust_try
  22:     0x7f81778499e0 - unwind::try::heab2ced16db50a7aQnd
  23:     0x7f8177849860 - task::Task::run::h1f2a16a1fd2bfec6uDc
  24:     0x7f8178f3cd80 - task::spawn_opts::closure.8404
  25:     0x7f817784b130 - thread::thread_start::hfee97593d1ff979fFXc
  26:     0x7f8176b4b0c0 - start_thread
  27:     0x7f8177513f89 - __clone
  28:                0x0 - <unknown>

Metadata

Metadata

Assignees

No one assigned

    Labels

    I-ICEIssue: The compiler panicked, giving an Internal Compilation Error (ICE) ❄️

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions