Skip to content

Commit bf41586

Browse files
committed
auto merge of #7058 : Blei/rust/fix-7048, r=bstrie
2 parents 075da9c + 3f62f9b commit bf41586

File tree

3 files changed

+59
-55
lines changed

3 files changed

+59
-55
lines changed

src/librustc/metadata/decoder.rs

+5-5
Original file line numberDiff line numberDiff line change
@@ -82,17 +82,17 @@ pub fn maybe_find_item(item_id: int, items: ebml::Doc) -> Option<ebml::Doc> {
8282
}
8383

8484
fn find_item(item_id: int, items: ebml::Doc) -> ebml::Doc {
85-
return maybe_find_item(item_id, items).get();
85+
match maybe_find_item(item_id, items) {
86+
None => fail!("lookup_item: id not found: %d", item_id),
87+
Some(d) => d
88+
}
8689
}
8790

8891
// Looks up an item in the given metadata and returns an ebml doc pointing
8992
// to the item data.
9093
fn lookup_item(item_id: int, data: @~[u8]) -> ebml::Doc {
9194
let items = reader::get_doc(reader::Doc(data), tag_items);
92-
match maybe_find_item(item_id, items) {
93-
None => fail!("lookup_item: id not found: %d", item_id),
94-
Some(d) => d
95-
}
95+
find_item(item_id, items)
9696
}
9797

9898
#[deriving(Eq)]

src/librustc/middle/ty.rs

+49-49
Original file line numberDiff line numberDiff line change
@@ -2316,59 +2316,59 @@ pub fn is_instantiable(cx: ctxt, r_ty: t) -> bool {
23162316
::util::ppaux::ty_to_str(cx, ty));
23172317

23182318
let r = match get(ty).sty {
2319-
ty_nil |
2320-
ty_bot |
2321-
ty_bool |
2322-
ty_int(_) |
2323-
ty_uint(_) |
2324-
ty_float(_) |
2325-
ty_estr(_) |
2326-
ty_bare_fn(_) |
2327-
ty_closure(_) |
2328-
ty_infer(_) |
2329-
ty_err |
2330-
ty_param(_) |
2331-
ty_self(_) |
2332-
ty_type |
2333-
ty_opaque_box |
2334-
ty_opaque_closure_ptr(_) |
2335-
ty_evec(_, _) |
2336-
ty_unboxed_vec(_) => {
2337-
false
2338-
}
2339-
ty_box(ref mt) |
2340-
ty_uniq(ref mt) |
2341-
ty_rptr(_, ref mt) => {
2342-
return type_requires(cx, seen, r_ty, mt.ty);
2343-
}
2319+
ty_nil |
2320+
ty_bot |
2321+
ty_bool |
2322+
ty_int(_) |
2323+
ty_uint(_) |
2324+
ty_float(_) |
2325+
ty_estr(_) |
2326+
ty_bare_fn(_) |
2327+
ty_closure(_) |
2328+
ty_infer(_) |
2329+
ty_err |
2330+
ty_param(_) |
2331+
ty_self(_) |
2332+
ty_type |
2333+
ty_opaque_box |
2334+
ty_opaque_closure_ptr(_) |
2335+
ty_evec(_, _) |
2336+
ty_unboxed_vec(_) => {
2337+
false
2338+
}
2339+
ty_box(ref mt) |
2340+
ty_uniq(ref mt) |
2341+
ty_rptr(_, ref mt) => {
2342+
type_requires(cx, seen, r_ty, mt.ty)
2343+
}
23442344

2345-
ty_ptr(*) => {
2346-
false // unsafe ptrs can always be NULL
2347-
}
2345+
ty_ptr(*) => {
2346+
false // unsafe ptrs can always be NULL
2347+
}
23482348

2349-
ty_trait(_, _, _, _) => {
2350-
false
2351-
}
2349+
ty_trait(_, _, _, _) => {
2350+
false
2351+
}
23522352

2353-
ty_struct(ref did, _) if vec::contains(*seen, did) => {
2354-
false
2355-
}
2353+
ty_struct(ref did, _) if vec::contains(*seen, did) => {
2354+
false
2355+
}
23562356

2357-
ty_struct(did, ref substs) => {
2358-
seen.push(did);
2359-
let fields = struct_fields(cx, did, substs);
2360-
let r = fields.iter().any(|f| type_requires(cx, seen, r_ty, f.mt.ty));
2361-
seen.pop();
2362-
r
2363-
}
2357+
ty_struct(did, ref substs) => {
2358+
seen.push(did);
2359+
let fields = struct_fields(cx, did, substs);
2360+
let r = fields.iter().any(|f| type_requires(cx, seen, r_ty, f.mt.ty));
2361+
seen.pop();
2362+
r
2363+
}
23642364

2365-
ty_tup(ref ts) => {
2366-
ts.any(|t| type_requires(cx, seen, r_ty, *t))
2367-
}
2365+
ty_tup(ref ts) => {
2366+
ts.any(|t| type_requires(cx, seen, r_ty, *t))
2367+
}
23682368

2369-
ty_enum(ref did, _) if vec::contains(*seen, did) => {
2370-
false
2371-
}
2369+
ty_enum(ref did, _) if vec::contains(*seen, did) => {
2370+
false
2371+
}
23722372

23732373
ty_enum(did, ref substs) => {
23742374
seen.push(did);
@@ -2392,8 +2392,8 @@ pub fn is_instantiable(cx: ctxt, r_ty: t) -> bool {
23922392
return r;
23932393
}
23942394

2395-
let seen = @mut ~[];
2396-
!subtypes_require(cx, seen, r_ty, r_ty)
2395+
let mut seen = ~[];
2396+
!subtypes_require(cx, &mut seen, r_ty, r_ty)
23972397
}
23982398

23992399
pub fn type_structurally_contains(cx: ctxt,

src/libsyntax/parse/lexer.rs

+5-1
Original file line numberDiff line numberDiff line change
@@ -772,7 +772,11 @@ fn next_token_inner(rdr: @mut StringReader) -> token::Token {
772772
'/' => { return binop(rdr, token::SLASH); }
773773
'^' => { return binop(rdr, token::CARET); }
774774
'%' => { return binop(rdr, token::PERCENT); }
775-
c => { rdr.fatal(fmt!("unknown start of token: %d", c as int)); }
775+
c => {
776+
// So the error span points to the unrecognized character
777+
rdr.peek_span = codemap::mk_sp(rdr.last_pos, rdr.pos);
778+
rdr.fatal(fmt!("unknown start of token: %d", c as int));
779+
}
776780
}
777781
}
778782

0 commit comments

Comments
 (0)