Skip to content

Commit c144dc0

Browse files
estebankAlexander Regueiro
authored and
Alexander Regueiro
committed
Fix ICE with feature self_struct_ctor
1 parent 3e90a12 commit c144dc0

File tree

3 files changed

+23
-0
lines changed

3 files changed

+23
-0
lines changed

src/librustc/middle/reachable.rs

+1
Original file line numberDiff line numberDiff line change
@@ -116,6 +116,7 @@ impl<'a, 'tcx> Visitor<'tcx> for ReachableContext<'a, 'tcx> {
116116
Some(Def::Local(node_id)) | Some(Def::Upvar(node_id, ..)) => {
117117
self.reachable_symbols.insert(node_id);
118118
}
119+
Some(Def::Err) => {} // #56202: calling `def.def_id()` would be an error
119120
Some(def) => {
120121
let def_id = def.def_id();
121122
if let Some(node_id) = self.tcx.hir.as_local_node_id(def_id) {

src/test/ui/issues/issue-56202.rs

+15
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,15 @@
1+
#![feature(self_struct_ctor)]
2+
3+
trait FooTrait {}
4+
5+
trait BarTrait {
6+
fn foo<T: FooTrait>(_: T) -> Self;
7+
}
8+
9+
struct FooStruct(u32);
10+
11+
impl BarTrait for FooStruct {
12+
fn foo<T: FooTrait>(_: T) -> Self {
13+
Self(u32::default())
14+
}
15+
}

src/test/ui/issues/issue-56202.stderr

+7
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,7 @@
1+
error[E0601]: `main` function not found in crate `issue_56202`
2+
|
3+
= note: consider adding a `main` function to `$DIR/issue-56202.rs`
4+
5+
error: aborting due to previous error
6+
7+
For more information about this error, try `rustc --explain E0601`.

0 commit comments

Comments
 (0)