File tree Expand file tree Collapse file tree 3 files changed +30
-6
lines changed Expand file tree Collapse file tree 3 files changed +30
-6
lines changed Original file line number Diff line number Diff line change 2
2
refs/heads/master: 73a25f55ad748b4d3516417c711b99ce446591af
3
3
refs/heads/snap-stage1: e33de59e47c5076a89eadeb38f4934f58a3618a6
4
4
refs/heads/snap-stage3: 5b3cd3900ceda838f5798c30ab96ceb41f962534
5
- refs/heads/try: c8868942e845254abfd3623a709847d65e015a2f
5
+ refs/heads/try: 540a7777b8ba53950d340ee9537ede1b3fb0b24d
6
6
refs/tags/release-0.1: 1f5c5126e96c79d22cb7862f75304136e204f105
7
7
refs/heads/dist-snap: ba4081a5a8573875fed17545846f6f6902c8ba8d
8
8
refs/tags/release-0.2: c870d2dffb391e14efb05aa27898f1f6333a9596
Original file line number Diff line number Diff line change @@ -643,11 +643,12 @@ fn confirm_candidate<'cx,'tcx>(
643
643
match impl_ty {
644
644
Some ( ty) => ( ty, impl_vtable. nested . to_vec ( ) ) ,
645
645
None => {
646
- selcx. tcx ( ) . sess . span_bug (
647
- obligation. cause . span ,
648
- format ! ( "impl `{}` did not contain projection for `{}`" ,
649
- impl_vtable. repr( selcx. tcx( ) ) ,
650
- obligation. repr( selcx. tcx( ) ) ) . as_slice ( ) ) ;
646
+ // This means that the impl is missing a
647
+ // definition for the associated type. This error
648
+ // ought to be reported by the type checker method
649
+ // `check_impl_items_against_trait`, so here we
650
+ // just return ty_err.
651
+ ( selcx. tcx ( ) . types . err , vec ! ( ) )
651
652
}
652
653
}
653
654
}
Original file line number Diff line number Diff line change
1
+ // Copyright 2014 The Rust Project Developers. See the COPYRIGHT
2
+ // file at the top-level directory of this distribution and at
3
+ // http://rust-lang.org/COPYRIGHT.
4
+ //
5
+ // Licensed under the Apache License, Version 2.0 <LICENSE-APACHE or
6
+ // http://www.apache.org/licenses/LICENSE-2.0> or the MIT license
7
+ // <LICENSE-MIT or http://opensource.org/licenses/MIT>, at your
8
+ // option. This file may not be copied, modified, or distributed
9
+ // except according to those terms.
10
+
11
+ // Test that we do not ICE when an impl is missing an associated type (and that we report
12
+ // a useful error, of course).
13
+
14
+ #![ feature( associated_types) ]
15
+
16
+ trait Trait {
17
+ type Type ;
18
+ }
19
+
20
+ impl Trait for int { } //~ ERROR missing: `Type`
21
+
22
+ fn main ( ) { }
23
+
You can’t perform that action at this time.
0 commit comments