Skip to content

Commit 93e13e0

Browse files
committed
Fix an ICE when dereferencing types which cannot be dereferenced
1 parent 8b3c09a commit 93e13e0

File tree

2 files changed

+4
-8
lines changed

2 files changed

+4
-8
lines changed

src/librustc/middle/typeck/check/regionck.rs

Lines changed: 3 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -413,12 +413,9 @@ fn constrain_derefs(rcx: @mut Rcx,
413413

414414
match ty::deref(tcx, derefd_ty, true) {
415415
Some(mt) => derefd_ty = mt.ty,
416-
None => {
417-
tcx.sess.span_bug(
418-
deref_expr.span,
419-
fmt!("%?'th deref is of a non-deref'able type `%s`",
420-
i, rcx.fcx.infcx().ty_to_str(derefd_ty)));
421-
}
416+
/* if this type can't be dereferenced, then there's already an error
417+
in the session saying so. Just bail out for now */
418+
None => break
422419
}
423420
}
424421
}

src/test/compile-fail/deref-non-pointer.rs

Lines changed: 1 addition & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -8,9 +8,8 @@
88
// option. This file may not be copied, modified, or distributed
99
// except according to those terms.
1010

11-
// error-pattern:cannot be dereferenced
1211
fn main() {
13-
match *1 {
12+
match *1 { //~ ERROR: cannot be dereferenced
1413
_ => { fail!(); }
1514
}
1615
}

0 commit comments

Comments
 (0)