Replace some explicit fails with 'alt check' invocations
This commit is contained in:
parent
5b6eb67128
commit
4b63826050
10 changed files with 52 additions and 115 deletions
|
@ -203,12 +203,11 @@ mod write {
|
||||||
let LLVMOptAggressive = 3 as c_int; // -O3
|
let LLVMOptAggressive = 3 as c_int; // -O3
|
||||||
|
|
||||||
let CodeGenOptLevel;
|
let CodeGenOptLevel;
|
||||||
alt opts.optimize {
|
alt check opts.optimize {
|
||||||
0u { CodeGenOptLevel = LLVMOptNone; }
|
0u { CodeGenOptLevel = LLVMOptNone; }
|
||||||
1u { CodeGenOptLevel = LLVMOptLess; }
|
1u { CodeGenOptLevel = LLVMOptLess; }
|
||||||
2u { CodeGenOptLevel = LLVMOptDefault; }
|
2u { CodeGenOptLevel = LLVMOptDefault; }
|
||||||
3u { CodeGenOptLevel = LLVMOptAggressive; }
|
3u { CodeGenOptLevel = LLVMOptAggressive; }
|
||||||
_ { fail; }
|
|
||||||
}
|
}
|
||||||
|
|
||||||
let FileType;
|
let FileType;
|
||||||
|
|
|
@ -39,9 +39,8 @@ fn lookup_defs(cstore: cstore::cstore, cnum: ast::crate_num,
|
||||||
fn lookup_method_purity(cstore: cstore::cstore, did: ast::def_id)
|
fn lookup_method_purity(cstore: cstore::cstore, did: ast::def_id)
|
||||||
-> ast::purity {
|
-> ast::purity {
|
||||||
let cdata = cstore::get_crate_data(cstore, did.crate).data;
|
let cdata = cstore::get_crate_data(cstore, did.crate).data;
|
||||||
alt decoder::lookup_def(did.crate, cdata, did) {
|
alt check decoder::lookup_def(did.crate, cdata, did) {
|
||||||
ast::def_fn(_, p) { p }
|
ast::def_fn(_, p) { p }
|
||||||
_ { fail; }
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -284,7 +284,7 @@ fn create_basic_type(cx: @crate_ctxt, t: ty::t, ty: ast::prim_ty, span: span)
|
||||||
option::none {}
|
option::none {}
|
||||||
}
|
}
|
||||||
|
|
||||||
let (name, (size, align), encoding) = alt ty {
|
let (name, (size, align), encoding) = alt check ty {
|
||||||
ast::ty_bool {("bool", size_and_align_of::<bool>(), DW_ATE_boolean)}
|
ast::ty_bool {("bool", size_and_align_of::<bool>(), DW_ATE_boolean)}
|
||||||
ast::ty_int(m) { alt m {
|
ast::ty_int(m) { alt m {
|
||||||
ast::ty_char {("char", size_and_align_of::<char>(), DW_ATE_unsigned)}
|
ast::ty_char {("char", size_and_align_of::<char>(), DW_ATE_unsigned)}
|
||||||
|
@ -306,7 +306,6 @@ fn create_basic_type(cx: @crate_ctxt, t: ty::t, ty: ast::prim_ty, span: span)
|
||||||
ast::ty_f32 {("f32", size_and_align_of::<f32>(), DW_ATE_float)}
|
ast::ty_f32 {("f32", size_and_align_of::<f32>(), DW_ATE_float)}
|
||||||
ast::ty_f64 {("f64", size_and_align_of::<f64>(), DW_ATE_float)}
|
ast::ty_f64 {("f64", size_and_align_of::<f64>(), DW_ATE_float)}
|
||||||
}}
|
}}
|
||||||
_ { fail; }
|
|
||||||
};
|
};
|
||||||
|
|
||||||
let fname = filename_from_span(cx, span);
|
let fname = filename_from_span(cx, span);
|
||||||
|
@ -511,9 +510,9 @@ fn create_vec(cx: @crate_ctxt, vec_t: ty::t, elem_t: ty::t,
|
||||||
fn member_size_and_align(tcx: ty::ctxt, ty: @ast::ty) -> (int, int) {
|
fn member_size_and_align(tcx: ty::ctxt, ty: @ast::ty) -> (int, int) {
|
||||||
alt ty.node {
|
alt ty.node {
|
||||||
ast::ty_path(_, id) {
|
ast::ty_path(_, id) {
|
||||||
alt tcx.def_map.get(id) {
|
alt check tcx.def_map.get(id) {
|
||||||
ast::def_prim_ty(nty) {
|
ast::def_prim_ty(nty) {
|
||||||
alt nty {
|
alt check nty {
|
||||||
ast::ty_bool { size_and_align_of::<bool>() }
|
ast::ty_bool { size_and_align_of::<bool>() }
|
||||||
ast::ty_int(m) { alt m {
|
ast::ty_int(m) { alt m {
|
||||||
ast::ty_char { size_and_align_of::<char>() }
|
ast::ty_char { size_and_align_of::<char>() }
|
||||||
|
@ -535,10 +534,8 @@ fn member_size_and_align(tcx: ty::ctxt, ty: @ast::ty) -> (int, int) {
|
||||||
ast::ty_f32 { size_and_align_of::<f32>() }
|
ast::ty_f32 { size_and_align_of::<f32>() }
|
||||||
ast::ty_f64 { size_and_align_of::<f64>() }
|
ast::ty_f64 { size_and_align_of::<f64>() }
|
||||||
}}
|
}}
|
||||||
_ { fail; }
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
_ { fail; }
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
ast::ty_box(_) | ast::ty_uniq(_) {
|
ast::ty_box(_) | ast::ty_uniq(_) {
|
||||||
|
|
|
@ -1965,12 +1965,8 @@ fn find_impls_in_view_item(e: env, vi: @ast::view_item,
|
||||||
todo(node_id, name, path, span, scopes) {
|
todo(node_id, name, path, span, scopes) {
|
||||||
resolve_import(e, local_def(node_id), name, *path, span,
|
resolve_import(e, local_def(node_id), name, *path, span,
|
||||||
scopes);
|
scopes);
|
||||||
alt e.imports.get(id) {
|
alt check e.imports.get(id) {
|
||||||
resolved(_, _, _, is, _, _) { act(is); }
|
resolved(_, _, _, is, _, _) { act(is); }
|
||||||
_ {
|
|
||||||
e.sess.bug("Undocumented invariant in \
|
|
||||||
lookup_imported_impls");
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
_ {}
|
_ {}
|
||||||
|
@ -2003,15 +1999,13 @@ fn find_impls_in_view_item(e: env, vi: @ast::view_item,
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
ast::view_item_import_glob(ids, id) {
|
ast::view_item_import_glob(ids, id) {
|
||||||
alt e.imports.get(id) {
|
alt check e.imports.get(id) {
|
||||||
is_glob(path, sc, sp) {
|
is_glob(path, sc, sp) {
|
||||||
alt follow_import(e, sc, *path, sp) {
|
alt follow_import(e, sc, *path, sp) {
|
||||||
some(def) { find_impls_in_mod(e, def, impls, none); }
|
some(def) { find_impls_in_mod(e, def, impls, none); }
|
||||||
_ {}
|
_ {}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
_ { e.sess.span_bug(vi.span, "Undocumented invariant in \
|
|
||||||
find_impls_in_view_item"); }
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
_ {}
|
_ {}
|
||||||
|
|
|
@ -2264,7 +2264,7 @@ fn monomorphic_fn(ccx: @crate_ctxt, fn_id: ast::def_id, substs: [ty::t],
|
||||||
ccx.monomorphized.insert(hash_id, {llfn: lldecl, fty: mono_ty});
|
ccx.monomorphized.insert(hash_id, {llfn: lldecl, fty: mono_ty});
|
||||||
|
|
||||||
let psubsts = some({tys: substs, dicts: dicts, bounds: tpt.bounds});
|
let psubsts = some({tys: substs, dicts: dicts, bounds: tpt.bounds});
|
||||||
alt map_node {
|
alt check map_node {
|
||||||
ast_map::node_item(@{node: ast::item_fn(decl, _, body), _}, _) {
|
ast_map::node_item(@{node: ast::item_fn(decl, _, body), _}, _) {
|
||||||
trans_fn(ccx, pt, decl, body, lldecl, no_self, [],
|
trans_fn(ccx, pt, decl, body, lldecl, no_self, [],
|
||||||
psubsts, fn_id.node);
|
psubsts, fn_id.node);
|
||||||
|
@ -2285,7 +2285,6 @@ fn monomorphic_fn(ccx: @crate_ctxt, fn_id: ast::def_id, substs: [ty::t],
|
||||||
trans_fn(ccx, pt, mth.decl, mth.body, lldecl,
|
trans_fn(ccx, pt, mth.decl, mth.body, lldecl,
|
||||||
impl_self(selfty), [], psubsts, fn_id.node);
|
impl_self(selfty), [], psubsts, fn_id.node);
|
||||||
}
|
}
|
||||||
_ { fail; }
|
|
||||||
}
|
}
|
||||||
some({llfn: lldecl, fty: mono_ty})
|
some({llfn: lldecl, fty: mono_ty})
|
||||||
}
|
}
|
||||||
|
@ -2622,7 +2621,7 @@ fn lval_maybe_callee_to_lval(c: lval_maybe_callee, ty: ty::t) -> lval_result {
|
||||||
add_clean_temp(bcx, space.val, ty);
|
add_clean_temp(bcx, space.val, ty);
|
||||||
{bcx: bcx, val: space.val, kind: temporary}
|
{bcx: bcx, val: space.val, kind: temporary}
|
||||||
} else {
|
} else {
|
||||||
alt c.env {
|
alt check c.env {
|
||||||
is_closure { {bcx: c.bcx, val: c.val, kind: c.kind} }
|
is_closure { {bcx: c.bcx, val: c.val, kind: c.kind} }
|
||||||
null_env {
|
null_env {
|
||||||
let llfnty = llvm::LLVMGetElementType(val_ty(c.val));
|
let llfnty = llvm::LLVMGetElementType(val_ty(c.val));
|
||||||
|
@ -2630,7 +2629,6 @@ fn lval_maybe_callee_to_lval(c: lval_maybe_callee, ty: ty::t) -> lval_result {
|
||||||
null_env_ptr(c.bcx));
|
null_env_ptr(c.bcx));
|
||||||
{bcx: c.bcx, val: llfn, kind: temporary}
|
{bcx: c.bcx, val: llfn, kind: temporary}
|
||||||
}
|
}
|
||||||
_ { fail; }
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -4462,9 +4460,8 @@ fn trans_const(cx: @crate_ctxt, e: @ast::expr, id: ast::node_id) {
|
||||||
}
|
}
|
||||||
|
|
||||||
fn trans_item(ccx: @crate_ctxt, item: ast::item) {
|
fn trans_item(ccx: @crate_ctxt, item: ast::item) {
|
||||||
let path = alt ccx.tcx.items.get(item.id) {
|
let path = alt check ccx.tcx.items.get(item.id) {
|
||||||
ast_map::node_item(_, p) { p }
|
ast_map::node_item(_, p) { p }
|
||||||
_ { fail; }
|
|
||||||
};
|
};
|
||||||
alt item.node {
|
alt item.node {
|
||||||
ast::item_fn(decl, tps, body) {
|
ast::item_fn(decl, tps, body) {
|
||||||
|
@ -4717,8 +4714,8 @@ fn collect_native_item(ccx: @crate_ctxt,
|
||||||
// For true external functions: create a rust wrapper
|
// For true external functions: create a rust wrapper
|
||||||
// and link to that. The rust wrapper will handle
|
// and link to that. The rust wrapper will handle
|
||||||
// switching to the C stack.
|
// switching to the C stack.
|
||||||
let path = *alt ccx.tcx.items.get(i.id) {
|
let path = *alt check ccx.tcx.items.get(i.id) {
|
||||||
ast_map::node_native_item(_, p) { p } _ { fail; }
|
ast_map::node_native_item(_, p) { p }
|
||||||
} + [path_name(i.ident)];
|
} + [path_name(i.ident)];
|
||||||
register_fn(ccx, i.span, path, "native fn", tps, i.id);
|
register_fn(ccx, i.span, path, "native fn", tps, i.id);
|
||||||
}
|
}
|
||||||
|
@ -4729,8 +4726,8 @@ fn collect_native_item(ccx: @crate_ctxt,
|
||||||
}
|
}
|
||||||
|
|
||||||
fn item_path(ccx: @crate_ctxt, i: @ast::item) -> path {
|
fn item_path(ccx: @crate_ctxt, i: @ast::item) -> path {
|
||||||
*alt ccx.tcx.items.get(i.id) {
|
*alt check ccx.tcx.items.get(i.id) {
|
||||||
ast_map::node_item(_, p) { p } _ { fail; }
|
ast_map::node_item(_, p) { p }
|
||||||
} + [path_name(i.ident)]
|
} + [path_name(i.ident)]
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -154,11 +154,10 @@ fn trans_monomorphized_callee(bcx: @block_ctxt, callee_id: ast::node_id,
|
||||||
n_method, n_param, n_bound);
|
n_method, n_param, n_bound);
|
||||||
}
|
}
|
||||||
let mname = ty::iface_methods(tcx, iface_id)[n_method].ident;
|
let mname = ty::iface_methods(tcx, iface_id)[n_method].ident;
|
||||||
let mth = alt tcx.items.get(impl_did.node) {
|
let mth = alt check tcx.items.get(impl_did.node) {
|
||||||
ast_map::node_item(@{node: ast::item_impl(_, _, _, ms), _}, _) {
|
ast_map::node_item(@{node: ast::item_impl(_, _, _, ms), _}, _) {
|
||||||
option::get(vec::find(ms, {|m| m.ident == mname}))
|
option::get(vec::find(ms, {|m| m.ident == mname}))
|
||||||
}
|
}
|
||||||
_ { fail; }
|
|
||||||
};
|
};
|
||||||
ret trans_static_callee(bcx, callee_id, base,
|
ret trans_static_callee(bcx, callee_id, base,
|
||||||
ast_util::local_def(mth.id),
|
ast_util::local_def(mth.id),
|
||||||
|
|
|
@ -337,7 +337,7 @@ fn ast_ty_to_ty(tcx: ty::ctxt, mode: mode, &&ast_ty: @ast::ty) -> ty::t {
|
||||||
ty::mk_param(tcx, n, id)
|
ty::mk_param(tcx, n, id)
|
||||||
}
|
}
|
||||||
ast::def_self(iface_id) {
|
ast::def_self(iface_id) {
|
||||||
alt tcx.items.get(iface_id.node) {
|
alt check tcx.items.get(iface_id.node) {
|
||||||
ast_map::node_item(@{node: ast::item_iface(tps, _), _}, _) {
|
ast_map::node_item(@{node: ast::item_iface(tps, _), _}, _) {
|
||||||
if vec::len(tps) != vec::len(path.node.types) {
|
if vec::len(tps) != vec::len(path.node.types) {
|
||||||
tcx.sess.span_err(ast_ty.span, "incorrect number of type \
|
tcx.sess.span_err(ast_ty.span, "incorrect number of type \
|
||||||
|
@ -347,7 +347,6 @@ fn ast_ty_to_ty(tcx: ty::ctxt, mode: mode, &&ast_ty: @ast::ty) -> ty::t {
|
||||||
ast_ty_to_ty(tcx, mode, ast_ty)
|
ast_ty_to_ty(tcx, mode, ast_ty)
|
||||||
}))
|
}))
|
||||||
}
|
}
|
||||||
_ { fail; }
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
_ {
|
_ {
|
||||||
|
@ -780,13 +779,12 @@ mod collect {
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
fn ensure_iface_methods(tcx: ty::ctxt, id: ast::node_id) {
|
fn ensure_iface_methods(tcx: ty::ctxt, id: ast::node_id) {
|
||||||
alt tcx.items.get(id) {
|
alt check tcx.items.get(id) {
|
||||||
ast_map::node_item(@{node: ast::item_iface(_, ms), _}, _) {
|
ast_map::node_item(@{node: ast::item_iface(_, ms), _}, _) {
|
||||||
ty::store_iface_methods(tcx, id, @vec::map(ms, {|m|
|
ty::store_iface_methods(tcx, id, @vec::map(ms, {|m|
|
||||||
ty_of_ty_method(tcx, m_collect, m)
|
ty_of_ty_method(tcx, m_collect, m)
|
||||||
}));
|
}));
|
||||||
}
|
}
|
||||||
_ { fail; }
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
fn convert_class_item(_cx: @ctxt, _parent_ty: ty::t,
|
fn convert_class_item(_cx: @ctxt, _parent_ty: ty::t,
|
||||||
|
@ -1564,9 +1562,8 @@ fn require_pure_call(ccx: @crate_ctxt, caller_purity: ast::purity,
|
||||||
alt ccx.method_map.find(callee.id) {
|
alt ccx.method_map.find(callee.id) {
|
||||||
some(method_static(did)) {
|
some(method_static(did)) {
|
||||||
if did.crate == ast::local_crate {
|
if did.crate == ast::local_crate {
|
||||||
alt ccx.tcx.items.get(did.node) {
|
alt check ccx.tcx.items.get(did.node) {
|
||||||
ast_map::node_method(m, _, _) { m.decl.purity }
|
ast_map::node_method(m, _, _) { m.decl.purity }
|
||||||
_ { fail; }
|
|
||||||
}
|
}
|
||||||
} else {
|
} else {
|
||||||
csearch::lookup_method_purity(ccx.tcx.sess.cstore, did)
|
csearch::lookup_method_purity(ccx.tcx.sess.cstore, did)
|
||||||
|
@ -1608,14 +1605,11 @@ fn check_expr_with(fcx: @fn_ctxt, expr: @ast::expr, expected: ty::t) -> bool {
|
||||||
|
|
||||||
fn impl_self_ty(tcx: ty::ctxt, did: ast::def_id) -> {n_tps: uint, ty: ty::t} {
|
fn impl_self_ty(tcx: ty::ctxt, did: ast::def_id) -> {n_tps: uint, ty: ty::t} {
|
||||||
if did.crate == ast::local_crate {
|
if did.crate == ast::local_crate {
|
||||||
alt tcx.items.get(did.node) {
|
alt check tcx.items.get(did.node) {
|
||||||
ast_map::node_item(@{node: ast::item_impl(ts, _, st, _),
|
ast_map::node_item(@{node: ast::item_impl(ts, _, st, _),
|
||||||
_}, _) {
|
_}, _) {
|
||||||
{n_tps: vec::len(ts), ty: ast_ty_to_ty(tcx, m_check, st)}
|
{n_tps: vec::len(ts), ty: ast_ty_to_ty(tcx, m_check, st)}
|
||||||
}
|
}
|
||||||
an_item {
|
|
||||||
tcx.sess.bug("Undocumented invariant in impl_self_ty");
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
} else {
|
} else {
|
||||||
let tpt = csearch::get_type(tcx, did);
|
let tpt = csearch::get_type(tcx, did);
|
||||||
|
@ -1678,9 +1672,8 @@ fn lookup_method_inner(fcx: @fn_ctxt, expr: @ast::expr,
|
||||||
for bound in *tcx.ty_param_bounds.get(did.node) {
|
for bound in *tcx.ty_param_bounds.get(did.node) {
|
||||||
alt bound {
|
alt bound {
|
||||||
ty::bound_iface(t) {
|
ty::bound_iface(t) {
|
||||||
let (iid, tps) = alt ty::get(t).struct {
|
let (iid, tps) = alt check ty::get(t).struct {
|
||||||
ty::ty_iface(i, tps) { (i, tps) }
|
ty::ty_iface(i, tps) { (i, tps) }
|
||||||
_ { fail; }
|
|
||||||
};
|
};
|
||||||
let ifce_methods = ty::iface_methods(tcx, iid);
|
let ifce_methods = ty::iface_methods(tcx, iid);
|
||||||
alt vec::position(*ifce_methods, {|m| m.ident == name}) {
|
alt vec::position(*ifce_methods, {|m| m.ident == name}) {
|
||||||
|
@ -1727,21 +1720,17 @@ fn lookup_method_inner(fcx: @fn_ctxt, expr: @ast::expr,
|
||||||
|
|
||||||
fn ty_from_did(tcx: ty::ctxt, did: ast::def_id) -> ty::t {
|
fn ty_from_did(tcx: ty::ctxt, did: ast::def_id) -> ty::t {
|
||||||
if did.crate == ast::local_crate {
|
if did.crate == ast::local_crate {
|
||||||
alt tcx.items.get(did.node) {
|
alt check tcx.items.get(did.node) {
|
||||||
ast_map::node_method(m, _, _) {
|
ast_map::node_method(m, _, _) {
|
||||||
let mt = ty_of_method(tcx, m_check, m);
|
let mt = ty_of_method(tcx, m_check, m);
|
||||||
ty::mk_fn(tcx, {proto: ast::proto_box with mt.fty})
|
ty::mk_fn(tcx, {proto: ast::proto_box with mt.fty})
|
||||||
}
|
}
|
||||||
_ {
|
|
||||||
tcx.sess.bug("Undocumented invariant in ty_from_did");
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
} else {
|
} else {
|
||||||
alt ty::get(csearch::get_type(tcx, did).ty).struct {
|
alt check ty::get(csearch::get_type(tcx, did).ty).struct {
|
||||||
ty::ty_fn(fty) {
|
ty::ty_fn(fty) {
|
||||||
ty::mk_fn(tcx, {proto: ast::proto_box with fty})
|
ty::mk_fn(tcx, {proto: ast::proto_box with fty})
|
||||||
}
|
}
|
||||||
_ { fail; }
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -2550,9 +2539,7 @@ fn check_decl_initializer(fcx: @fn_ctxt, nid: ast::node_id,
|
||||||
fn check_decl_local(fcx: @fn_ctxt, local: @ast::local) -> bool {
|
fn check_decl_local(fcx: @fn_ctxt, local: @ast::local) -> bool {
|
||||||
let bot = false;
|
let bot = false;
|
||||||
|
|
||||||
alt fcx.locals.find(local.node.id) {
|
let t = ty::mk_var(fcx.ccx.tcx, fcx.locals.get(local.node.id));
|
||||||
some(i) {
|
|
||||||
let t = ty::mk_var(fcx.ccx.tcx, i);
|
|
||||||
write_ty(fcx.ccx.tcx, local.node.id, t);
|
write_ty(fcx.ccx.tcx, local.node.id, t);
|
||||||
alt local.node.init {
|
alt local.node.init {
|
||||||
some(init) {
|
some(init) {
|
||||||
|
@ -2562,10 +2549,6 @@ fn check_decl_local(fcx: @fn_ctxt, local: @ast::local) -> bool {
|
||||||
}
|
}
|
||||||
let id_map = pat_util::pat_id_map(fcx.ccx.tcx, local.node.pat);
|
let id_map = pat_util::pat_id_map(fcx.ccx.tcx, local.node.pat);
|
||||||
check_pat(fcx, id_map, local.node.pat, t);
|
check_pat(fcx, id_map, local.node.pat, t);
|
||||||
}
|
|
||||||
_ { fcx.ccx.tcx.sess.span_bug(local.span, "Undocumented invariant \
|
|
||||||
in check_decl_local"); }
|
|
||||||
}
|
|
||||||
ret bot;
|
ret bot;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -2985,10 +2968,8 @@ mod dict {
|
||||||
fn lookup_dict(fcx: @fn_ctxt, isc: resolve::iscopes, sp: span,
|
fn lookup_dict(fcx: @fn_ctxt, isc: resolve::iscopes, sp: span,
|
||||||
ty: ty::t, iface_ty: ty::t) -> dict_origin {
|
ty: ty::t, iface_ty: ty::t) -> dict_origin {
|
||||||
let tcx = fcx.ccx.tcx;
|
let tcx = fcx.ccx.tcx;
|
||||||
let (iface_id, iface_tps) = alt ty::get(iface_ty).struct {
|
let (iface_id, iface_tps) = alt check ty::get(iface_ty).struct {
|
||||||
ty::ty_iface(did, tps) { (did, tps) }
|
ty::ty_iface(did, tps) { (did, tps) }
|
||||||
_ { tcx.sess.span_bug(sp, "Undocumented invariant in lookup\
|
|
||||||
_dict"); }
|
|
||||||
};
|
};
|
||||||
let ty = fixup_ty(fcx, sp, ty);
|
let ty = fixup_ty(fcx, sp, ty);
|
||||||
alt ty::get(ty).struct {
|
alt ty::get(ty).struct {
|
||||||
|
@ -2997,12 +2978,10 @@ mod dict {
|
||||||
for bound in *tcx.ty_param_bounds.get(did.node) {
|
for bound in *tcx.ty_param_bounds.get(did.node) {
|
||||||
alt bound {
|
alt bound {
|
||||||
ty::bound_iface(ity) {
|
ty::bound_iface(ity) {
|
||||||
alt ty::get(ity).struct {
|
alt check ty::get(ity).struct {
|
||||||
ty::ty_iface(idid, _) {
|
ty::ty_iface(idid, _) {
|
||||||
if iface_id == idid { ret dict_param(n, n_bound); }
|
if iface_id == idid { ret dict_param(n, n_bound); }
|
||||||
}
|
}
|
||||||
_ { tcx.sess.span_bug(sp, "Undocumented invariant in \
|
|
||||||
lookup_dict"); }
|
|
||||||
}
|
}
|
||||||
n_bound += 1u;
|
n_bound += 1u;
|
||||||
}
|
}
|
||||||
|
@ -3020,11 +2999,8 @@ mod dict {
|
||||||
for im in *impls {
|
for im in *impls {
|
||||||
let match = alt ty::impl_iface(tcx, im.did) {
|
let match = alt ty::impl_iface(tcx, im.did) {
|
||||||
some(ity) {
|
some(ity) {
|
||||||
alt ty::get(ity).struct {
|
alt check ty::get(ity).struct {
|
||||||
ty::ty_iface(id, _) { id == iface_id }
|
ty::ty_iface(id, _) { id == iface_id }
|
||||||
// Bleah, abstract this
|
|
||||||
_ { tcx.sess.span_bug(sp, "Undocumented invariant \
|
|
||||||
in lookup_dict"); }
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
_ { false }
|
_ { false }
|
||||||
|
@ -3086,15 +3062,11 @@ mod dict {
|
||||||
let tcx = fcx.ccx.tcx;
|
let tcx = fcx.ccx.tcx;
|
||||||
let ity = option::get(ty::impl_iface(tcx, impl_did));
|
let ity = option::get(ty::impl_iface(tcx, impl_did));
|
||||||
let iface_ty = ty::substitute_type_params(tcx, impl_tys, ity);
|
let iface_ty = ty::substitute_type_params(tcx, impl_tys, ity);
|
||||||
alt ty::get(iface_ty).struct {
|
alt check ty::get(iface_ty).struct {
|
||||||
ty::ty_iface(_, tps) {
|
ty::ty_iface(_, tps) {
|
||||||
vec::iter2(tps, iface_tys,
|
vec::iter2(tps, iface_tys,
|
||||||
{|a, b| demand::simple(fcx, sp, a, b);});
|
{|a, b| demand::simple(fcx, sp, a, b);});
|
||||||
}
|
}
|
||||||
_ {
|
|
||||||
tcx.sess.span_bug(sp, "Undocumented invariant in \
|
|
||||||
connect_iface_tps");
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -395,7 +395,6 @@ mod tests {
|
||||||
option_missing(_) { assert (ft == option_missing_); }
|
option_missing(_) { assert (ft == option_missing_); }
|
||||||
option_duplicated(_) { assert (ft == option_duplicated_); }
|
option_duplicated(_) { assert (ft == option_duplicated_); }
|
||||||
unexpected_argument(_) { assert (ft == unexpected_argument_); }
|
unexpected_argument(_) { assert (ft == unexpected_argument_); }
|
||||||
_ { fail; }
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -406,12 +405,11 @@ mod tests {
|
||||||
let args = ["--test=20"];
|
let args = ["--test=20"];
|
||||||
let opts = [reqopt("test")];
|
let opts = [reqopt("test")];
|
||||||
let rs = getopts(args, opts);
|
let rs = getopts(args, opts);
|
||||||
alt rs {
|
alt check rs {
|
||||||
ok(m) {
|
ok(m) {
|
||||||
assert (opt_present(m, "test"));
|
assert (opt_present(m, "test"));
|
||||||
assert (opt_str(m, "test") == "20");
|
assert (opt_str(m, "test") == "20");
|
||||||
}
|
}
|
||||||
_ { fail; }
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -243,7 +243,7 @@ fn fold_enum(
|
||||||
desc: attrs.desc,
|
desc: attrs.desc,
|
||||||
variants: vec::map(doc.variants) {|variant|
|
variants: vec::map(doc.variants) {|variant|
|
||||||
let attrs = astsrv::exec(srv) {|ctxt|
|
let attrs = astsrv::exec(srv) {|ctxt|
|
||||||
alt ctxt.ast_map.get(doc.id) {
|
alt check ctxt.ast_map.get(doc.id) {
|
||||||
ast_map::node_item(@{
|
ast_map::node_item(@{
|
||||||
node: ast::item_enum(ast_variants, _), _
|
node: ast::item_enum(ast_variants, _), _
|
||||||
}, _) {
|
}, _) {
|
||||||
|
@ -254,7 +254,6 @@ fn fold_enum(
|
||||||
|
|
||||||
attr_parser::parse_variant(ast_variant.node.attrs)
|
attr_parser::parse_variant(ast_variant.node.attrs)
|
||||||
}
|
}
|
||||||
_ { fail "fold_enum: undocumented invariant"; }
|
|
||||||
}
|
}
|
||||||
};
|
};
|
||||||
|
|
||||||
|
|
|
@ -45,16 +45,13 @@ fn fold_fn(
|
||||||
|
|
||||||
fn get_fn_sig(srv: astsrv::srv, fn_id: doc::ast_id) -> option<str> {
|
fn get_fn_sig(srv: astsrv::srv, fn_id: doc::ast_id) -> option<str> {
|
||||||
astsrv::exec(srv) {|ctxt|
|
astsrv::exec(srv) {|ctxt|
|
||||||
alt ctxt.ast_map.get(fn_id) {
|
alt check ctxt.ast_map.get(fn_id) {
|
||||||
ast_map::node_item(@{
|
ast_map::node_item(@{
|
||||||
ident: ident,
|
ident: ident,
|
||||||
node: ast::item_fn(decl, _, blk), _
|
node: ast::item_fn(decl, _, blk), _
|
||||||
}, _) {
|
}, _) {
|
||||||
some(pprust::fun_to_str(decl, ident, []))
|
some(pprust::fun_to_str(decl, ident, []))
|
||||||
}
|
}
|
||||||
_ {
|
|
||||||
fail "get_fn_sig: undocumented invariant";
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -83,13 +80,12 @@ fn merge_ret_ty(
|
||||||
|
|
||||||
fn get_ret_ty(srv: astsrv::srv, fn_id: doc::ast_id) -> option<str> {
|
fn get_ret_ty(srv: astsrv::srv, fn_id: doc::ast_id) -> option<str> {
|
||||||
astsrv::exec(srv) {|ctxt|
|
astsrv::exec(srv) {|ctxt|
|
||||||
alt ctxt.ast_map.get(fn_id) {
|
alt check ctxt.ast_map.get(fn_id) {
|
||||||
ast_map::node_item(@{
|
ast_map::node_item(@{
|
||||||
node: ast::item_fn(decl, _, _), _
|
node: ast::item_fn(decl, _, _), _
|
||||||
}, _) {
|
}, _) {
|
||||||
ret_ty_to_str(decl)
|
ret_ty_to_str(decl)
|
||||||
}
|
}
|
||||||
_ { fail "get_ret_ty: undocumented invariant"; }
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -133,7 +129,7 @@ fn merge_arg_tys(
|
||||||
|
|
||||||
fn get_arg_tys(srv: astsrv::srv, fn_id: doc::ast_id) -> [(str, str)] {
|
fn get_arg_tys(srv: astsrv::srv, fn_id: doc::ast_id) -> [(str, str)] {
|
||||||
astsrv::exec(srv) {|ctxt|
|
astsrv::exec(srv) {|ctxt|
|
||||||
alt ctxt.ast_map.get(fn_id) {
|
alt check ctxt.ast_map.get(fn_id) {
|
||||||
ast_map::node_item(@{
|
ast_map::node_item(@{
|
||||||
node: ast::item_fn(decl, _, _), _
|
node: ast::item_fn(decl, _, _), _
|
||||||
}, _) |
|
}, _) |
|
||||||
|
@ -142,9 +138,6 @@ fn get_arg_tys(srv: astsrv::srv, fn_id: doc::ast_id) -> [(str, str)] {
|
||||||
}, _) {
|
}, _) {
|
||||||
decl_arg_tys(decl)
|
decl_arg_tys(decl)
|
||||||
}
|
}
|
||||||
_ {
|
|
||||||
fail "get_arg_tys: undocumented invariant";
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -171,15 +164,12 @@ fn fold_const(
|
||||||
|
|
||||||
{
|
{
|
||||||
ty: some(astsrv::exec(srv) {|ctxt|
|
ty: some(astsrv::exec(srv) {|ctxt|
|
||||||
alt ctxt.ast_map.get(doc.id) {
|
alt check ctxt.ast_map.get(doc.id) {
|
||||||
ast_map::node_item(@{
|
ast_map::node_item(@{
|
||||||
node: ast::item_const(ty, _), _
|
node: ast::item_const(ty, _), _
|
||||||
}, _) {
|
}, _) {
|
||||||
pprust::ty_to_str(ty)
|
pprust::ty_to_str(ty)
|
||||||
}
|
}
|
||||||
_ {
|
|
||||||
fail "fold_const: undocumented invariant";
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
})
|
})
|
||||||
with doc
|
with doc
|
||||||
|
@ -201,7 +191,7 @@ fn fold_enum(
|
||||||
{
|
{
|
||||||
variants: vec::map(doc.variants) {|variant|
|
variants: vec::map(doc.variants) {|variant|
|
||||||
let sig = astsrv::exec(srv) {|ctxt|
|
let sig = astsrv::exec(srv) {|ctxt|
|
||||||
alt ctxt.ast_map.get(doc.id) {
|
alt check ctxt.ast_map.get(doc.id) {
|
||||||
ast_map::node_item(@{
|
ast_map::node_item(@{
|
||||||
node: ast::item_enum(ast_variants, _), _
|
node: ast::item_enum(ast_variants, _), _
|
||||||
}, _) {
|
}, _) {
|
||||||
|
@ -212,7 +202,6 @@ fn fold_enum(
|
||||||
|
|
||||||
pprust::variant_to_str(ast_variant)
|
pprust::variant_to_str(ast_variant)
|
||||||
}
|
}
|
||||||
_ { fail "fold_enum: undocumented invariant"; }
|
|
||||||
}
|
}
|
||||||
};
|
};
|
||||||
|
|
||||||
|
@ -240,13 +229,12 @@ fn fold_res(
|
||||||
{
|
{
|
||||||
args: merge_arg_tys(srv, doc.id, doc.args),
|
args: merge_arg_tys(srv, doc.id, doc.args),
|
||||||
sig: some(astsrv::exec(srv) {|ctxt|
|
sig: some(astsrv::exec(srv) {|ctxt|
|
||||||
alt ctxt.ast_map.get(doc.id) {
|
alt check ctxt.ast_map.get(doc.id) {
|
||||||
ast_map::node_item(@{
|
ast_map::node_item(@{
|
||||||
node: ast::item_res(decl, _, _, _, _), _
|
node: ast::item_res(decl, _, _, _, _), _
|
||||||
}, _) {
|
}, _) {
|
||||||
pprust::res_to_str(decl, doc.name, [])
|
pprust::res_to_str(decl, doc.name, [])
|
||||||
}
|
}
|
||||||
_ { fail "fold_res: undocumented invariant"; }
|
|
||||||
}
|
}
|
||||||
})
|
})
|
||||||
with doc
|
with doc
|
||||||
|
@ -325,25 +313,23 @@ fn get_method_ret_ty(
|
||||||
ast_map::node_item(@{
|
ast_map::node_item(@{
|
||||||
node: ast::item_iface(_, methods), _
|
node: ast::item_iface(_, methods), _
|
||||||
}, _) {
|
}, _) {
|
||||||
alt vec::find(methods) {|method|
|
alt check vec::find(methods) {|method|
|
||||||
method.ident == method_name
|
method.ident == method_name
|
||||||
} {
|
} {
|
||||||
some(method) {
|
some(method) {
|
||||||
ret_ty_to_str(method.decl)
|
ret_ty_to_str(method.decl)
|
||||||
}
|
}
|
||||||
_ { fail "get_method_ret_ty: undocumented invariant"; }
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
ast_map::node_item(@{
|
ast_map::node_item(@{
|
||||||
node: ast::item_impl(_, _, _, methods), _
|
node: ast::item_impl(_, _, _, methods), _
|
||||||
}, _) {
|
}, _) {
|
||||||
alt vec::find(methods) {|method|
|
alt check vec::find(methods) {|method|
|
||||||
method.ident == method_name
|
method.ident == method_name
|
||||||
} {
|
} {
|
||||||
some(method) {
|
some(method) {
|
||||||
ret_ty_to_str(method.decl)
|
ret_ty_to_str(method.decl)
|
||||||
}
|
}
|
||||||
_ { fail "get_method_ret_ty: undocumented invariant"; }
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
_ { fail }
|
_ { fail }
|
||||||
|
@ -357,32 +343,29 @@ fn get_method_sig(
|
||||||
method_name: str
|
method_name: str
|
||||||
) -> option<str> {
|
) -> option<str> {
|
||||||
astsrv::exec(srv) {|ctxt|
|
astsrv::exec(srv) {|ctxt|
|
||||||
alt ctxt.ast_map.get(item_id) {
|
alt check ctxt.ast_map.get(item_id) {
|
||||||
ast_map::node_item(@{
|
ast_map::node_item(@{
|
||||||
node: ast::item_iface(_, methods), _
|
node: ast::item_iface(_, methods), _
|
||||||
}, _) {
|
}, _) {
|
||||||
alt vec::find(methods) {|method|
|
alt check vec::find(methods) {|method|
|
||||||
method.ident == method_name
|
method.ident == method_name
|
||||||
} {
|
} {
|
||||||
some(method) {
|
some(method) {
|
||||||
some(pprust::fun_to_str(method.decl, method.ident, []))
|
some(pprust::fun_to_str(method.decl, method.ident, []))
|
||||||
}
|
}
|
||||||
_ { fail "get_method_sig: undocumented invariant"; }
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
ast_map::node_item(@{
|
ast_map::node_item(@{
|
||||||
node: ast::item_impl(_, _, _, methods), _
|
node: ast::item_impl(_, _, _, methods), _
|
||||||
}, _) {
|
}, _) {
|
||||||
alt vec::find(methods) {|method|
|
alt check vec::find(methods) {|method|
|
||||||
method.ident == method_name
|
method.ident == method_name
|
||||||
} {
|
} {
|
||||||
some(method) {
|
some(method) {
|
||||||
some(pprust::fun_to_str(method.decl, method.ident, []))
|
some(pprust::fun_to_str(method.decl, method.ident, []))
|
||||||
}
|
}
|
||||||
_ { fail "get_method_sig: undocumented invariant"; }
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
_ { fail "get_method_sig: undocumented invariant"; }
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue