make more code use dvec
This commit is contained in:
parent
0f969da882
commit
774ea145ec
@ -17,6 +17,7 @@ import std::{list};
|
||||
import std::list::{list, nil, cons};
|
||||
import option::{is_none, is_some};
|
||||
import syntax::print::pprust::*;
|
||||
import dvec::{dvec, extensions};
|
||||
|
||||
export resolve_crate;
|
||||
export def_map, ext_map, exp_map, impl_map;
|
||||
@ -1798,7 +1799,7 @@ fn check_arm(e: @env, a: ast::arm, &&x: (), v: vt<()>) {
|
||||
visit::visit_arm(a, x, v);
|
||||
let ch0 = checker(*e, "binding");
|
||||
check_pat(e, ch0, a.pats[0]);
|
||||
let seen0 = ch0.seen;
|
||||
let seen0 = ch0.seen.get();
|
||||
let mut i = vec::len(a.pats);
|
||||
while i > 1u {
|
||||
i -= 1u;
|
||||
@ -1807,7 +1808,7 @@ fn check_arm(e: @env, a: ast::arm, &&x: (), v: vt<()>) {
|
||||
|
||||
// Ensure the bindings introduced in this pattern are the same as in
|
||||
// the first pattern.
|
||||
if vec::len(ch.seen) != vec::len(seen0) {
|
||||
if ch.seen.len() != seen0.len() {
|
||||
e.sess.span_err(a.pats[i].span,
|
||||
"inconsistent number of bindings");
|
||||
} else {
|
||||
@ -1902,11 +1903,10 @@ fn check_ty(e: @env, ty: @ast::ty, &&x: (), v: vt<()>) {
|
||||
visit::visit_ty(ty, x, v);
|
||||
}
|
||||
|
||||
type checker = @{mut seen: [ident], kind: str, sess: session};
|
||||
type checker = @{seen: dvec<ident>, kind: str, sess: session};
|
||||
|
||||
fn checker(e: env, kind: str) -> checker {
|
||||
let seen: [ident] = [];
|
||||
ret @{mut seen: seen, kind: kind, sess: e.sess};
|
||||
ret @{seen: dvec(), kind: kind, sess: e.sess};
|
||||
}
|
||||
|
||||
fn check_name(ch: checker, sp: span, name: ident) {
|
||||
@ -1918,7 +1918,7 @@ fn check_name(ch: checker, sp: span, name: ident) {
|
||||
}
|
||||
fn add_name(ch: checker, sp: span, name: ident) {
|
||||
check_name(ch, sp, name);
|
||||
ch.seen += [name];
|
||||
ch.seen.push(name);
|
||||
}
|
||||
|
||||
fn ensure_unique<T>(e: env, sp: span, elts: [T], id: fn(T) -> ident,
|
||||
|
@ -15,6 +15,7 @@ import syntax::ast_util::dummy_sp;
|
||||
import syntax::util::interner;
|
||||
import util::common;
|
||||
import syntax::codemap::span;
|
||||
import dvec::{dvec, extensions};
|
||||
|
||||
import std::map::hashmap;
|
||||
|
||||
@ -26,7 +27,7 @@ type ctxt =
|
||||
{mut next_tag_id: u16,
|
||||
pad: u16,
|
||||
tag_id_to_index: hashmap<ast::def_id, u16>,
|
||||
mut tag_order: [ast::def_id],
|
||||
tag_order: dvec<ast::def_id>,
|
||||
resources: interner::interner<res_info>,
|
||||
llshapetablesty: TypeRef,
|
||||
llshapetables: ValueRef};
|
||||
@ -273,7 +274,7 @@ fn mk_ctxt(llmod: ModuleRef) -> ctxt {
|
||||
ret {mut next_tag_id: 0u16,
|
||||
pad: 0u16,
|
||||
tag_id_to_index: common::new_def_hash(),
|
||||
mut tag_order: [],
|
||||
tag_order: dvec(),
|
||||
resources: interner::mk(hash_res_info, {|a, b| a == b}),
|
||||
llshapetablesty: llshapetablesty,
|
||||
llshapetables: llshapetables};
|
||||
@ -328,7 +329,7 @@ fn shape_of(ccx: @crate_ctxt, t: ty::t, ty_param_map: [uint]) -> [u8] {
|
||||
none {
|
||||
id = ccx.shape_cx.next_tag_id;
|
||||
ccx.shape_cx.tag_id_to_index.insert(did, id);
|
||||
ccx.shape_cx.tag_order += [did];
|
||||
ccx.shape_cx.tag_order.push(did);
|
||||
ccx.shape_cx.next_tag_id += 1u16;
|
||||
}
|
||||
some(existing_id) { id = existing_id; }
|
||||
@ -497,7 +498,7 @@ fn gen_enum_shapes(ccx: @crate_ctxt) -> ValueRef {
|
||||
let mut i = 0u;
|
||||
let mut data = [];
|
||||
let mut offsets = [];
|
||||
while i < vec::len(ccx.shape_cx.tag_order) {
|
||||
while i < ccx.shape_cx.tag_order.len() {
|
||||
let did = ccx.shape_cx.tag_order[i];
|
||||
let variants = ty::enum_variants(ccx.tcx, did);
|
||||
let item_tyt = ty::lookup_item_type(ccx.tcx, did);
|
||||
|
Loading…
x
Reference in New Issue
Block a user