parent
4ebbbe597e
commit
6bcb4a426c
11 changed files with 46 additions and 57 deletions
|
@ -137,9 +137,7 @@ fn get_relative_to(abs1: fs::path, abs2: fs::path) -> fs::path {
|
||||||
|
|
||||||
let path = [];
|
let path = [];
|
||||||
|
|
||||||
for each _ in uint::range(start_idx, len1 - 1u) {
|
uint::range(start_idx, len1 - 1u) {|_i| path += [".."]; };
|
||||||
path += [".."];
|
|
||||||
}
|
|
||||||
|
|
||||||
path += vec::slice(split2, start_idx, len2 - 1u);
|
path += vec::slice(split2, start_idx, len2 - 1u);
|
||||||
|
|
||||||
|
|
|
@ -41,12 +41,12 @@ fn lookup_hash(d: ebml::doc, eq_fn: fn@([u8]) -> bool, hash: uint) ->
|
||||||
|
|
||||||
let result: [ebml::doc] = [];
|
let result: [ebml::doc] = [];
|
||||||
let belt = tag_index_buckets_bucket_elt;
|
let belt = tag_index_buckets_bucket_elt;
|
||||||
for each elt: ebml::doc in ebml::tagged_docs(bucket, belt) {
|
ebml::tagged_docs(bucket, belt) {|elt|
|
||||||
let pos = ebml::be_uint_from_bytes(elt.data, elt.start, 4u);
|
let pos = ebml::be_uint_from_bytes(elt.data, elt.start, 4u);
|
||||||
if eq_fn(vec::slice::<u8>(*elt.data, elt.start + 4u, elt.end)) {
|
if eq_fn(vec::slice::<u8>(*elt.data, elt.start + 4u, elt.end)) {
|
||||||
result += [ebml::doc_at(d.data, pos)];
|
result += [ebml::doc_at(d.data, pos)];
|
||||||
}
|
}
|
||||||
}
|
};
|
||||||
ret result;
|
ret result;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -111,7 +111,7 @@ fn item_type(item: ebml::doc, this_cnum: ast::crate_num, tcx: ty::ctxt,
|
||||||
fn item_ty_param_kinds(item: ebml::doc) -> [ast::kind] {
|
fn item_ty_param_kinds(item: ebml::doc) -> [ast::kind] {
|
||||||
let ks: [ast::kind] = [];
|
let ks: [ast::kind] = [];
|
||||||
let tp = tag_items_data_item_ty_param_kinds;
|
let tp = tag_items_data_item_ty_param_kinds;
|
||||||
for each p: ebml::doc in ebml::tagged_docs(item, tp) {
|
ebml::tagged_docs(item, tp) {|p|
|
||||||
let dat: [u8] = ebml::doc_data(p);
|
let dat: [u8] = ebml::doc_data(p);
|
||||||
let vi = ebml::vint_at(dat, 0u);
|
let vi = ebml::vint_at(dat, 0u);
|
||||||
let i = 0u;
|
let i = 0u;
|
||||||
|
@ -125,7 +125,7 @@ fn item_ty_param_kinds(item: ebml::doc) -> [ast::kind] {
|
||||||
ks += [k];
|
ks += [k];
|
||||||
i += 1u;
|
i += 1u;
|
||||||
}
|
}
|
||||||
}
|
};
|
||||||
ret ks;
|
ret ks;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -133,10 +133,10 @@ fn tag_variant_ids(item: ebml::doc, this_cnum: ast::crate_num) ->
|
||||||
[ast::def_id] {
|
[ast::def_id] {
|
||||||
let ids: [ast::def_id] = [];
|
let ids: [ast::def_id] = [];
|
||||||
let v = tag_items_data_item_variant;
|
let v = tag_items_data_item_variant;
|
||||||
for each p: ebml::doc in ebml::tagged_docs(item, v) {
|
ebml::tagged_docs(item, v) {|p|
|
||||||
let ext = parse_def_id(ebml::doc_data(p));
|
let ext = parse_def_id(ebml::doc_data(p));
|
||||||
ids += [{crate: this_cnum, node: ext.node}];
|
ids += [{crate: this_cnum, node: ext.node}];
|
||||||
}
|
};
|
||||||
ret ids;
|
ret ids;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -300,14 +300,12 @@ fn item_family_to_str(fam: u8) -> str {
|
||||||
|
|
||||||
fn get_meta_items(md: ebml::doc) -> [@ast::meta_item] {
|
fn get_meta_items(md: ebml::doc) -> [@ast::meta_item] {
|
||||||
let items: [@ast::meta_item] = [];
|
let items: [@ast::meta_item] = [];
|
||||||
for each meta_item_doc: ebml::doc in
|
ebml::tagged_docs(md, tag_meta_item_word) {|meta_item_doc|
|
||||||
ebml::tagged_docs(md, tag_meta_item_word) {
|
|
||||||
let nd = ebml::get_doc(meta_item_doc, tag_meta_item_name);
|
let nd = ebml::get_doc(meta_item_doc, tag_meta_item_name);
|
||||||
let n = str::unsafe_from_bytes(ebml::doc_data(nd));
|
let n = str::unsafe_from_bytes(ebml::doc_data(nd));
|
||||||
items += [attr::mk_word_item(n)];
|
items += [attr::mk_word_item(n)];
|
||||||
}
|
};
|
||||||
for each meta_item_doc: ebml::doc in
|
ebml::tagged_docs(md, tag_meta_item_name_value) {|meta_item_doc|
|
||||||
ebml::tagged_docs(md, tag_meta_item_name_value) {
|
|
||||||
let nd = ebml::get_doc(meta_item_doc, tag_meta_item_name);
|
let nd = ebml::get_doc(meta_item_doc, tag_meta_item_name);
|
||||||
let vd = ebml::get_doc(meta_item_doc, tag_meta_item_value);
|
let vd = ebml::get_doc(meta_item_doc, tag_meta_item_value);
|
||||||
let n = str::unsafe_from_bytes(ebml::doc_data(nd));
|
let n = str::unsafe_from_bytes(ebml::doc_data(nd));
|
||||||
|
@ -315,14 +313,13 @@ fn get_meta_items(md: ebml::doc) -> [@ast::meta_item] {
|
||||||
// FIXME (#611): Should be able to decode meta_name_value variants,
|
// FIXME (#611): Should be able to decode meta_name_value variants,
|
||||||
// but currently they can't be encoded
|
// but currently they can't be encoded
|
||||||
items += [attr::mk_name_value_item_str(n, v)];
|
items += [attr::mk_name_value_item_str(n, v)];
|
||||||
}
|
};
|
||||||
for each meta_item_doc: ebml::doc in
|
ebml::tagged_docs(md, tag_meta_item_list) {|meta_item_doc|
|
||||||
ebml::tagged_docs(md, tag_meta_item_list) {
|
|
||||||
let nd = ebml::get_doc(meta_item_doc, tag_meta_item_name);
|
let nd = ebml::get_doc(meta_item_doc, tag_meta_item_name);
|
||||||
let n = str::unsafe_from_bytes(ebml::doc_data(nd));
|
let n = str::unsafe_from_bytes(ebml::doc_data(nd));
|
||||||
let subitems = get_meta_items(meta_item_doc);
|
let subitems = get_meta_items(meta_item_doc);
|
||||||
items += [attr::mk_list_item(n, subitems)];
|
items += [attr::mk_list_item(n, subitems)];
|
||||||
}
|
};
|
||||||
ret items;
|
ret items;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -330,8 +327,7 @@ fn get_attributes(md: ebml::doc) -> [ast::attribute] {
|
||||||
let attrs: [ast::attribute] = [];
|
let attrs: [ast::attribute] = [];
|
||||||
alt ebml::maybe_get_doc(md, tag_attributes) {
|
alt ebml::maybe_get_doc(md, tag_attributes) {
|
||||||
option::some(attrs_d) {
|
option::some(attrs_d) {
|
||||||
for each attr_doc: ebml::doc in
|
ebml::tagged_docs(attrs_d, tag_attribute) {|attr_doc|
|
||||||
ebml::tagged_docs(attrs_d, tag_attribute) {
|
|
||||||
let meta_items = get_meta_items(attr_doc);
|
let meta_items = get_meta_items(attr_doc);
|
||||||
// Currently it's only possible to have a single meta item on
|
// Currently it's only possible to have a single meta item on
|
||||||
// an attribute
|
// an attribute
|
||||||
|
@ -340,7 +336,7 @@ fn get_attributes(md: ebml::doc) -> [ast::attribute] {
|
||||||
attrs +=
|
attrs +=
|
||||||
[{node: {style: ast::attr_outer, value: *meta_item},
|
[{node: {style: ast::attr_outer, value: *meta_item},
|
||||||
span: ast_util::dummy_sp()}];
|
span: ast_util::dummy_sp()}];
|
||||||
}
|
};
|
||||||
}
|
}
|
||||||
option::none. { }
|
option::none. { }
|
||||||
}
|
}
|
||||||
|
@ -374,11 +370,11 @@ fn get_crate_deps(data: @[u8]) -> [crate_dep] {
|
||||||
let cratedoc = ebml::new_doc(data);
|
let cratedoc = ebml::new_doc(data);
|
||||||
let depsdoc = ebml::get_doc(cratedoc, tag_crate_deps);
|
let depsdoc = ebml::get_doc(cratedoc, tag_crate_deps);
|
||||||
let crate_num = 1;
|
let crate_num = 1;
|
||||||
for each depdoc: ebml::doc in ebml::tagged_docs(depsdoc, tag_crate_dep) {
|
ebml::tagged_docs(depsdoc, tag_crate_dep) {|depdoc|
|
||||||
let depname = str::unsafe_from_bytes(ebml::doc_data(depdoc));
|
let depname = str::unsafe_from_bytes(ebml::doc_data(depdoc));
|
||||||
deps += [{cnum: crate_num, ident: depname}];
|
deps += [{cnum: crate_num, ident: depname}];
|
||||||
crate_num += 1;
|
crate_num += 1;
|
||||||
}
|
};
|
||||||
ret deps;
|
ret deps;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -398,18 +394,17 @@ fn list_crate_items(bytes: @[u8], md: ebml::doc, out: io::writer) {
|
||||||
let items = ebml::get_doc(md, tag_items);
|
let items = ebml::get_doc(md, tag_items);
|
||||||
let index = ebml::get_doc(paths, tag_index);
|
let index = ebml::get_doc(paths, tag_index);
|
||||||
let bs = ebml::get_doc(index, tag_index_buckets);
|
let bs = ebml::get_doc(index, tag_index_buckets);
|
||||||
for each bucket: ebml::doc in
|
ebml::tagged_docs(bs, tag_index_buckets_bucket) {|bucket|
|
||||||
ebml::tagged_docs(bs, tag_index_buckets_bucket) {
|
|
||||||
let et = tag_index_buckets_bucket_elt;
|
let et = tag_index_buckets_bucket_elt;
|
||||||
for each elt: ebml::doc in ebml::tagged_docs(bucket, et) {
|
ebml::tagged_docs(bucket, et) {|elt|
|
||||||
let data = read_path(elt);
|
let data = read_path(elt);
|
||||||
let def = ebml::doc_at(bytes, data.pos);
|
let def = ebml::doc_at(bytes, data.pos);
|
||||||
let did_doc = ebml::get_doc(def, tag_def_id);
|
let did_doc = ebml::get_doc(def, tag_def_id);
|
||||||
let did = parse_def_id(ebml::doc_data(did_doc));
|
let did = parse_def_id(ebml::doc_data(did_doc));
|
||||||
out.write_str(#fmt["%s (%s)\n", data.path,
|
out.write_str(#fmt["%s (%s)\n", data.path,
|
||||||
describe_def(items, did)]);
|
describe_def(items, did)]);
|
||||||
}
|
};
|
||||||
}
|
};
|
||||||
out.write_str("\n");
|
out.write_str("\n");
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -394,7 +394,7 @@ fn encode_info_for_items(ecx: @encode_ctxt, ebml_w: ebml::writer) ->
|
||||||
fn create_index<@T>(index: [entry<T>], hash_fn: fn(T) -> uint) ->
|
fn create_index<@T>(index: [entry<T>], hash_fn: fn(T) -> uint) ->
|
||||||
[@[entry<T>]] {
|
[@[entry<T>]] {
|
||||||
let buckets: [@mutable [entry<T>]] = [];
|
let buckets: [@mutable [entry<T>]] = [];
|
||||||
for each i: uint in uint::range(0u, 256u) { buckets += [@mutable []]; }
|
uint::range(0u, 256u) {|_i| buckets += [@mutable []]; };
|
||||||
for elt: entry<T> in index {
|
for elt: entry<T> in index {
|
||||||
let h = hash_fn(elt.val);
|
let h = hash_fn(elt.val);
|
||||||
*buckets[h % 256u] += [elt];
|
*buckets[h % 256u] += [elt];
|
||||||
|
|
|
@ -5825,7 +5825,7 @@ fn register_native_fn(ccx: @crate_ctxt, sp: span, path: [str], name: str,
|
||||||
if uses_retptr { call_args += [bcx.fcx.llretptr]; }
|
if uses_retptr { call_args += [bcx.fcx.llretptr]; }
|
||||||
|
|
||||||
let arg_n = 2u;
|
let arg_n = 2u;
|
||||||
for each i: uint in uint::range(0u, num_ty_param) {
|
uint::range(0u, num_ty_param) {|_i|
|
||||||
let llarg = llvm::LLVMGetParam(fcx.llfn, arg_n);
|
let llarg = llvm::LLVMGetParam(fcx.llfn, arg_n);
|
||||||
fcx.lltydescs += [llarg];
|
fcx.lltydescs += [llarg];
|
||||||
assert (llarg as int != 0);
|
assert (llarg as int != 0);
|
||||||
|
@ -5833,7 +5833,7 @@ fn register_native_fn(ccx: @crate_ctxt, sp: span, path: [str], name: str,
|
||||||
call_args += [vp2i(bcx, llarg)];
|
call_args += [vp2i(bcx, llarg)];
|
||||||
} else { call_args += [llarg]; }
|
} else { call_args += [llarg]; }
|
||||||
arg_n += 1u;
|
arg_n += 1u;
|
||||||
}
|
};
|
||||||
fn convert_arg_to_i32(cx: @block_ctxt, v: ValueRef, t: ty::t,
|
fn convert_arg_to_i32(cx: @block_ctxt, v: ValueRef, t: ty::t,
|
||||||
mode: ty::mode) -> ValueRef {
|
mode: ty::mode) -> ValueRef {
|
||||||
if mode == ast::by_ref || mode == ast::by_val {
|
if mode == ast::by_ref || mode == ast::by_val {
|
||||||
|
|
|
@ -198,9 +198,7 @@ fn span_to_lines(sp: span, cm: codemap::codemap) -> @file_lines {
|
||||||
let lo = lookup_char_pos(cm, sp.lo);
|
let lo = lookup_char_pos(cm, sp.lo);
|
||||||
let hi = lookup_char_pos(cm, sp.hi);
|
let hi = lookup_char_pos(cm, sp.hi);
|
||||||
let lines = [];
|
let lines = [];
|
||||||
for each i: uint in uint::range(lo.line - 1u, hi.line as uint) {
|
uint::range(lo.line - 1u, hi.line as uint) {|i| lines += [i]; };
|
||||||
lines += [i];
|
|
||||||
}
|
|
||||||
ret @{name: lo.filename, lines: lines};
|
ret @{name: lo.filename, lines: lines};
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -40,12 +40,12 @@ fn process(op: block(uint, uint) -> uint, v0: t, v1: t) -> bool {
|
||||||
assert (vec::len(v0.storage) == len);
|
assert (vec::len(v0.storage) == len);
|
||||||
assert (v0.nbits == v1.nbits);
|
assert (v0.nbits == v1.nbits);
|
||||||
let changed = false;
|
let changed = false;
|
||||||
for each i: uint in uint::range(0u, len) {
|
uint::range(0u, len) {|i|
|
||||||
let w0 = v0.storage[i];
|
let w0 = v0.storage[i];
|
||||||
let w1 = v1.storage[i];
|
let w1 = v1.storage[i];
|
||||||
let w = op(w0, w1);
|
let w = op(w0, w1);
|
||||||
if w0 != w { changed = true; v0.storage[i] = w; }
|
if w0 != w { changed = true; v0.storage[i] = w; }
|
||||||
}
|
};
|
||||||
ret changed;
|
ret changed;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -67,7 +67,7 @@ fn assign(v0: t, v1: t) -> bool { let sub = right; ret process(sub, v0, v1); }
|
||||||
fn clone(v: t) -> t {
|
fn clone(v: t) -> t {
|
||||||
let storage = vec::init_elt_mut::<uint>(0u, v.nbits / uint_bits() + 1u);
|
let storage = vec::init_elt_mut::<uint>(0u, v.nbits / uint_bits() + 1u);
|
||||||
let len = vec::len(v.storage);
|
let len = vec::len(v.storage);
|
||||||
for each i: uint in uint::range(0u, len) { storage[i] = v.storage[i]; }
|
uint::range(0u, len) {|i| storage[i] = v.storage[i]; };
|
||||||
ret @{storage: storage, nbits: v.nbits};
|
ret @{storage: storage, nbits: v.nbits};
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -94,19 +94,17 @@ fn equal(v0: t, v1: t) -> bool {
|
||||||
}
|
}
|
||||||
|
|
||||||
fn clear(v: t) {
|
fn clear(v: t) {
|
||||||
for each i: uint in uint::range(0u, vec::len(v.storage)) {
|
uint::range(0u, vec::len(v.storage)) {|i| v.storage[i] = 0u; };
|
||||||
v.storage[i] = 0u;
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
||||||
fn set_all(v: t) {
|
fn set_all(v: t) {
|
||||||
for each i: uint in uint::range(0u, v.nbits) { set(v, i, true); }
|
uint::range(0u, v.nbits) {|i| set(v, i, true); };
|
||||||
}
|
}
|
||||||
|
|
||||||
fn invert(v: t) {
|
fn invert(v: t) {
|
||||||
for each i: uint in uint::range(0u, vec::len(v.storage)) {
|
uint::range(0u, vec::len(v.storage)) {|i|
|
||||||
v.storage[i] = !v.storage[i];
|
v.storage[i] = !v.storage[i];
|
||||||
}
|
};
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
|
@ -72,25 +72,24 @@ fn get_doc(d: doc, tg: uint) -> doc {
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
iter docs(d: doc) -> {tag: uint, doc: doc} {
|
fn docs(d: doc, it: block(uint, doc)) {
|
||||||
let pos = d.start;
|
let pos = d.start;
|
||||||
while pos < d.end {
|
while pos < d.end {
|
||||||
let elt_tag = vint_at(*d.data, pos);
|
let elt_tag = vint_at(*d.data, pos);
|
||||||
let elt_size = vint_at(*d.data, elt_tag.next);
|
let elt_size = vint_at(*d.data, elt_tag.next);
|
||||||
pos = elt_size.next + elt_size.val;
|
pos = elt_size.next + elt_size.val;
|
||||||
put {tag: elt_tag.val,
|
it(elt_tag.val, {data: d.data, start: elt_size.next, end: pos});
|
||||||
doc: {data: d.data, start: elt_size.next, end: pos}};
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
iter tagged_docs(d: doc, tg: uint) -> doc {
|
fn tagged_docs(d: doc, tg: uint, it: block(doc)) {
|
||||||
let pos = d.start;
|
let pos = d.start;
|
||||||
while pos < d.end {
|
while pos < d.end {
|
||||||
let elt_tag = vint_at(*d.data, pos);
|
let elt_tag = vint_at(*d.data, pos);
|
||||||
let elt_size = vint_at(*d.data, elt_tag.next);
|
let elt_size = vint_at(*d.data, elt_tag.next);
|
||||||
pos = elt_size.next + elt_size.val;
|
pos = elt_size.next + elt_size.val;
|
||||||
if elt_tag.val == tg {
|
if elt_tag.val == tg {
|
||||||
put {data: d.data, start: elt_size.next, end: pos};
|
it({data: d.data, start: elt_size.next, end: pos});
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -43,9 +43,8 @@ fn hash(x: int) -> uint { ret x as uint; }
|
||||||
|
|
||||||
fn eq_alias(x: int, y: int) -> bool { ret x == y; }
|
fn eq_alias(x: int, y: int) -> bool { ret x == y; }
|
||||||
|
|
||||||
iter range(lo: int, hi: int) -> int {
|
fn range(lo: int, hi: int, it: block(int)) {
|
||||||
let lo_: int = lo;
|
while lo < hi { it(lo); lo += 1; }
|
||||||
while lo_ < hi { put lo_; lo_ += 1; }
|
|
||||||
}
|
}
|
||||||
|
|
||||||
fn parse_buf(buf: [u8], radix: uint) -> int {
|
fn parse_buf(buf: [u8], radix: uint) -> int {
|
||||||
|
|
|
@ -23,7 +23,10 @@ pure fn ge(x: u8, y: u8) -> bool { ret x >= y; }
|
||||||
|
|
||||||
pure fn gt(x: u8, y: u8) -> bool { ret x > y; }
|
pure fn gt(x: u8, y: u8) -> bool { ret x > y; }
|
||||||
|
|
||||||
iter range(lo: u8, hi: u8) -> u8 { while lo < hi { put lo; lo += 1u8; } }
|
fn range(lo: u8, hi: u8, it: block(u8)) {
|
||||||
|
while lo < hi { it(lo); lo += 1u8; }
|
||||||
|
}
|
||||||
|
|
||||||
// Local Variables:
|
// Local Variables:
|
||||||
// mode: rust;
|
// mode: rust;
|
||||||
// fill-column: 78;
|
// fill-column: 78;
|
||||||
|
|
|
@ -40,9 +40,8 @@ fn max(x: uint, y: uint) -> uint { if x > y { ret x; } ret y; }
|
||||||
|
|
||||||
fn min(x: uint, y: uint) -> uint { if x > y { ret y; } ret x; }
|
fn min(x: uint, y: uint) -> uint { if x > y { ret y; } ret x; }
|
||||||
|
|
||||||
iter range(lo: uint, hi: uint) -> uint {
|
fn range(lo: uint, hi: uint, it: block(uint)) {
|
||||||
let lo_ = lo;
|
while lo < hi { it(lo); lo += 1u; }
|
||||||
while lo_ < hi { put lo_; lo_ += 1u; }
|
|
||||||
}
|
}
|
||||||
|
|
||||||
fn next_power_of_two(n: uint) -> uint {
|
fn next_power_of_two(n: uint) -> uint {
|
||||||
|
|
|
@ -343,9 +343,9 @@ fn eachi<@T>(f: block(T, uint) -> (), v: [mutable? T]) {
|
||||||
}
|
}
|
||||||
|
|
||||||
// Iterate over a list with with the indexes
|
// Iterate over a list with with the indexes
|
||||||
iter iter2<@T>(v: [T]) -> (uint, T) {
|
fn iter2<@T>(v: [T], it: block(uint, T)) {
|
||||||
let i = 0u;
|
let i = 0u;
|
||||||
for x in v { put (i, x); i += 1u; }
|
for x in v { it(i, x); i += 1u; }
|
||||||
}
|
}
|
||||||
|
|
||||||
mod unsafe {
|
mod unsafe {
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue