Skip to content

Commit aba665d

Browse files
committed
Fix the signature on vec::view.
Due to limitations in region inference, this has the effect of making vec::view pretty much entirely unusable.
1 parent 1a276db commit aba665d

File tree

6 files changed

+19
-11
lines changed

6 files changed

+19
-11
lines changed

src/libcore/vec.rs

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -258,13 +258,13 @@ pure fn slice<T: copy>(v: &[const T], start: uint, end: uint) -> ~[T] {
258258
assert (end <= len(v));
259259
let mut result = ~[];
260260
unchecked {
261-
push_all(result, view(v, start, end));
261+
for uint::range(start, end) |i| { vec::push(result, v[i]) }
262262
}
263263
ret result;
264264
}
265265

266266
#[doc = "Return a slice that points into another slice."]
267-
pure fn view<T>(v: &[const T], start: uint, end: uint) -> &a.[T] {
267+
pure fn view<T>(v: &a.[T], start: uint, end: uint) -> &a.[T] {
268268
assert (start <= end);
269269
assert (end <= len(v));
270270
do unpack_slice(v) |p, _len| {

src/libstd/ebml.rs

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -122,8 +122,9 @@ fn tagged_docs(d: doc, tg: uint, it: fn(doc)) {
122122

123123
fn doc_data(d: doc) -> ~[u8] { vec::slice::<u8>(*d.data, d.start, d.end) }
124124

125-
fn with_doc_data<T>(d: doc, f: fn(x:&[u8]) -> T) -> T {
126-
ret f(vec::view::<u8>(*d.data, d.start, d.end));
125+
fn with_doc_data<T>(d: doc, f: fn(x: &[u8]) -> T) -> T {
126+
// FIXME (#2880): use vec::view once the region inferencer can handle it.
127+
ret f(vec::slice::<u8>(*d.data, d.start, d.end));
127128
}
128129

129130
fn doc_as_str(d: doc) -> str { ret str::from_bytes(doc_data(d)); }

src/rustc/back/rpath.rs

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -144,7 +144,8 @@ fn get_relative_to(abs1: path::path, abs2: path::path) -> path::path {
144144
let mut path = ~[];
145145
for uint::range(start_idx, len1 - 1u) |_i| { vec::push(path, ".."); };
146146

147-
vec::push_all(path, vec::view(split2, start_idx, len2 - 1u));
147+
// FIXME (#2880): use view here.
148+
vec::push_all(path, vec::slice(split2, start_idx, len2 - 1u));
148149

149150
if check vec::is_not_empty(path) {
150151
ret path::connect_many(path);

src/rustc/metadata/decoder.rs

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -73,7 +73,8 @@ fn lookup_hash(d: ebml::doc, eq_fn: fn@(x:&[u8]) -> bool, hash: uint) ->
7373
let belt = tag_index_buckets_bucket_elt;
7474
do ebml::tagged_docs(bucket, belt) |elt| {
7575
let pos = io::u64_from_be_bytes(*elt.data, elt.start, 4u) as uint;
76-
if eq_fn(vec::view::<u8>(*elt.data, elt.start + 4u, elt.end)) {
76+
// FIXME (#2880): use view here.
77+
if eq_fn(vec::slice::<u8>(*elt.data, elt.start + 4u, elt.end)) {
7778
vec::push(result, ebml::doc_at(d.data, pos).doc);
7879
}
7980
};

src/rustc/middle/trans/alt.rs

Lines changed: 8 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -114,7 +114,8 @@ fn expand_nested_bindings(m: match, col: uint, val: ValueRef) -> match {
114114
let pats = vec::append(
115115
vec::slice(br.pats, 0u, col),
116116
vec::append(~[inner],
117-
vec::view(br.pats, col + 1u, br.pats.len())));
117+
// FIXME (#2880): use view here.
118+
vec::slice(br.pats, col + 1u, br.pats.len())));
118119
vec::push(result,
119120
@{pats: pats,
120121
bound: vec::append(
@@ -137,8 +138,10 @@ fn enter_match(dm: def_map, m: match, col: uint, val: ValueRef,
137138
alt e(br.pats[col]) {
138139
some(sub) {
139140
let pats = vec::append(
140-
vec::append(sub, vec::view(br.pats, 0u, col)),
141-
vec::view(br.pats, col + 1u, br.pats.len()));
141+
// FIXME (#2880): use view here.
142+
vec::append(sub, vec::slice(br.pats, 0u, col)),
143+
// FIXME (#2880): use view here.
144+
vec::slice(br.pats, col + 1u, br.pats.len()));
142145
let self = br.pats[col];
143146
let bound = alt self.node {
144147
ast::pat_ident(name, none) if !pat_is_variant(dm, self) {
@@ -427,7 +430,8 @@ fn compile_submatch(bcx: block, m: match, vals: ~[ValueRef],
427430
} else { m };
428431

429432
let vals_left = vec::append(vec::slice(vals, 0u, col),
430-
vec::view(vals, col + 1u, vals.len()));
433+
// FIXME (#2880): use view here.
434+
vec::slice(vals, col + 1u, vals.len()));
431435
let ccx = bcx.fcx.ccx;
432436
let mut pat_id = 0;
433437
for vec::each(m) |br| {

src/rustc/middle/trans/common.rs

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -313,7 +313,8 @@ fn revoke_clean(cx: block, val: ValueRef) {
313313
})) |i| {
314314
info.cleanups =
315315
vec::append(vec::slice(info.cleanups, 0u, i),
316-
vec::view(info.cleanups,
316+
// FIXME (#2880): use view here.
317+
vec::slice(info.cleanups,
317318
i + 1u,
318319
info.cleanups.len()));
319320
scope_clean_changed(info);

0 commit comments

Comments
 (0)