diff options
| author | Esteban Küber <esteban@kuber.com.ar> | 2018-11-24 17:12:28 -0800 |
|---|---|---|
| committer | Alexander Regueiro <alexreg@me.com> | 2018-11-30 03:12:10 +0000 |
| commit | c144dc07e35c1ef4a25bc321dce07565952121aa (patch) | |
| tree | 2ceb9228144827c808c71708b3875fc47928c7e5 | |
| parent | 3e90a12a8a95933604a8b609197fce61bb24a38c (diff) | |
| download | rust-c144dc07e35c1ef4a25bc321dce07565952121aa.tar.gz rust-c144dc07e35c1ef4a25bc321dce07565952121aa.zip | |
Fix ICE with feature self_struct_ctor
| -rw-r--r-- | src/librustc/middle/reachable.rs | 1 | ||||
| -rw-r--r-- | src/test/ui/issues/issue-56202.rs | 15 | ||||
| -rw-r--r-- | src/test/ui/issues/issue-56202.stderr | 7 |
3 files changed, 23 insertions, 0 deletions
diff --git a/src/librustc/middle/reachable.rs b/src/librustc/middle/reachable.rs index 0009a517dd1..cf81729bdab 100644 --- a/src/librustc/middle/reachable.rs +++ b/src/librustc/middle/reachable.rs @@ -116,6 +116,7 @@ impl<'a, 'tcx> Visitor<'tcx> for ReachableContext<'a, 'tcx> { Some(Def::Local(node_id)) | Some(Def::Upvar(node_id, ..)) => { self.reachable_symbols.insert(node_id); } + Some(Def::Err) => {} // #56202: calling `def.def_id()` would be an error Some(def) => { let def_id = def.def_id(); if let Some(node_id) = self.tcx.hir.as_local_node_id(def_id) { diff --git a/src/test/ui/issues/issue-56202.rs b/src/test/ui/issues/issue-56202.rs new file mode 100644 index 00000000000..c80c372c9e2 --- /dev/null +++ b/src/test/ui/issues/issue-56202.rs @@ -0,0 +1,15 @@ +#![feature(self_struct_ctor)] + +trait FooTrait {} + +trait BarTrait { + fn foo<T: FooTrait>(_: T) -> Self; +} + +struct FooStruct(u32); + +impl BarTrait for FooStruct { + fn foo<T: FooTrait>(_: T) -> Self { + Self(u32::default()) + } +} diff --git a/src/test/ui/issues/issue-56202.stderr b/src/test/ui/issues/issue-56202.stderr new file mode 100644 index 00000000000..3007b084502 --- /dev/null +++ b/src/test/ui/issues/issue-56202.stderr @@ -0,0 +1,7 @@ +error[E0601]: `main` function not found in crate `issue_56202` + | + = note: consider adding a `main` function to `$DIR/issue-56202.rs` + +error: aborting due to previous error + +For more information about this error, try `rustc --explain E0601`. |
