diff options
| author | Marijn Haverbeke <[email protected]> | 2011-03-29 12:46:55 +0200 |
|---|---|---|
| committer | Graydon Hoare <[email protected]> | 2011-03-31 14:41:40 +0000 |
| commit | 39f0656b4f428b81bd6be06b89a8de1e63b72e87 (patch) | |
| tree | 212cc3c132a48f497f7243956bd0e2235cd6b00e /src/comp/middle | |
| parent | Support break and cont in pretty-printer (diff) | |
| download | rust-39f0656b4f428b81bd6be06b89a8de1e63b72e87.tar.xz rust-39f0656b4f428b81bd6be06b89a8de1e63b72e87.zip | |
Improve line comment positioning
This involved making ast.variant spanned.
Diffstat (limited to 'src/comp/middle')
| -rw-r--r-- | src/comp/middle/fold.rs | 7 | ||||
| -rw-r--r-- | src/comp/middle/metadata.rs | 14 | ||||
| -rw-r--r-- | src/comp/middle/resolve.rs | 4 | ||||
| -rw-r--r-- | src/comp/middle/trans.rs | 47 | ||||
| -rw-r--r-- | src/comp/middle/typeck.rs | 10 |
5 files changed, 42 insertions, 40 deletions
diff --git a/src/comp/middle/fold.rs b/src/comp/middle/fold.rs index 66176d79..0b1a01ad 100644 --- a/src/comp/middle/fold.rs +++ b/src/comp/middle/fold.rs @@ -965,12 +965,13 @@ fn fold_item[ENV](&ENV env, ast_fold[ENV] fld, @item i) -> @item { let vec[ast.variant] new_variants = vec(); for (ast.variant v in variants) { let vec[ast.variant_arg] new_args = vec(); - for (ast.variant_arg va in v.args) { + for (ast.variant_arg va in v.node.args) { auto new_ty = fold_ty[ENV](env_, fld, va.ty); new_args += vec(rec(ty=new_ty, id=va.id)); } - new_variants += vec(rec(name=v.name, args=new_args, id=v.id, - ann=v.ann)); + auto new_v = rec(name=v.node.name, args=new_args, + id=v.node.id, ann=v.node.ann); + new_variants += vec(respan[ast.variant_](v.span, new_v)); } ret fld.fold_item_tag(env_, i.span, ident, new_variants, ty_params, id); diff --git a/src/comp/middle/metadata.rs b/src/comp/middle/metadata.rs index 4ace1f4a..f4854733 100644 --- a/src/comp/middle/metadata.rs +++ b/src/comp/middle/metadata.rs @@ -169,8 +169,8 @@ fn encode_def_id(&ebml.writer ebml_w, &ast.def_id id) { fn encode_tag_variant_paths(&ebml.writer ebml_w, vec[ast.variant] variants) { for (ast.variant variant in variants) { ebml.start_tag(ebml_w, tag_paths_item); - encode_name(ebml_w, variant.name); - encode_def_id(ebml_w, variant.id); + encode_name(ebml_w, variant.node.name); + encode_def_id(ebml_w, variant.node.id); ebml.end_tag(ebml_w); } } @@ -314,14 +314,14 @@ fn encode_tag_variant_info(@trans.crate_ctxt cx, &ebml.writer ebml_w, ast.def_id did, vec[ast.variant] variants) { for (ast.variant variant in variants) { ebml.start_tag(ebml_w, tag_items_item); - encode_def_id(ebml_w, variant.id); + encode_def_id(ebml_w, variant.node.id); encode_kind(ebml_w, 'v' as u8); encode_tag_id(ebml_w, did); - encode_type(ebml_w, trans.node_ann_type(cx, variant.ann)); - if (_vec.len[ast.variant_arg](variant.args) > 0u) { - encode_symbol(cx, ebml_w, variant.id); + encode_type(ebml_w, trans.node_ann_type(cx, variant.node.ann)); + if (_vec.len[ast.variant_arg](variant.node.args) > 0u) { + encode_symbol(cx, ebml_w, variant.node.id); } - encode_discriminant(cx, ebml_w, variant.id); + encode_discriminant(cx, ebml_w, variant.node.id); ebml.end_tag(ebml_w); } } diff --git a/src/comp/middle/resolve.rs b/src/comp/middle/resolve.rs index 1ceb7e66..39c4294d 100644 --- a/src/comp/middle/resolve.rs +++ b/src/comp/middle/resolve.rs @@ -389,7 +389,7 @@ fn lookup_name_wrapped(&env e, ast.ident i, namespace ns) case (ast.mie_tag_variant(?item, ?variant_idx)) { alt (item.node) { case (ast.item_tag(_, ?variants, _, ?tid)) { - auto vid = variants.(variant_idx).id; + auto vid = variants.(variant_idx).node.id; auto t = ast.def_variant(tid, vid); ret some[def_wrap](def_wrap_other(t)); } @@ -446,7 +446,7 @@ fn lookup_name_wrapped(&env e, ast.ident i, namespace ns) fn found_tag(@ast.item item, uint variant_idx) -> def_wrap { alt (item.node) { case (ast.item_tag(_, ?variants, _, ?tid)) { - auto vid = variants.(variant_idx).id; + auto vid = variants.(variant_idx).node.id; auto t = ast.def_variant(tid, vid); ret def_wrap_other(t); } diff --git a/src/comp/middle/trans.rs b/src/comp/middle/trans.rs index 9df068f3..2471d85e 100644 --- a/src/comp/middle/trans.rs +++ b/src/comp/middle/trans.rs @@ -1355,7 +1355,7 @@ fn GEP_tag(@block_ctxt cx, // Synthesize a tuple type so that GEP_tup_like() can work its magic. // Separately, store the type of the element we're interested in. - auto arg_tys = arg_tys_of_fn(variant.ann); + auto arg_tys = arg_tys_of_fn(variant.node.ann); auto elem_ty = ty.plain_ty(ty.ty_nil); // typestate infelicity auto i = 0; let vec[@ty.t] true_arg_tys = vec(); @@ -1892,7 +1892,7 @@ fn decr_refcnt_and_if_zero(@block_ctxt cx, fn variant_types(@crate_ctxt cx, &ast.variant v) -> vec[@ty.t] { let vec[@ty.t] tys = vec(); - alt (ty.ann_to_type(v.ann).struct) { + alt (ty.ann_to_type(v.node.ann).struct) { case (ty.ty_fn(_, ?args, _)) { for (ty.arg arg in args) { tys += vec(arg.ty); @@ -1931,7 +1931,7 @@ fn tag_variant_with_id(@crate_ctxt cx, auto i = 0u; while (i < _vec.len[ast.variant](variants)) { auto variant = variants.(i); - if (common.def_eq(variant.id, variant_id)) { + if (common.def_eq(variant.node.id, variant_id)) { ret variant; } i += 1u; @@ -2074,9 +2074,9 @@ fn iter_structural_ty_full(@block_ctxt cx, _uint.to_str(i, 10u)); llvm.LLVMAddCase(llswitch, C_int(i as int), variant_cx.llbb); - if (_vec.len[ast.variant_arg](variant.args) > 0u) { + if (_vec.len[ast.variant_arg](variant.node.args) > 0u) { // N-ary variant. - auto fn_ty = ty.ann_to_type(variants.(i).ann); + auto fn_ty = ty.ann_to_type(variants.(i).node.ann); alt (fn_ty.struct) { case (ty.ty_fn(_, ?args, _)) { auto j = 0; @@ -2084,12 +2084,12 @@ fn iter_structural_ty_full(@block_ctxt cx, auto v = vec(C_int(0), C_int(j as int)); auto rslt = GEP_tag(variant_cx, llunion_a_ptr, - tid, variants.(i).id, tps, j); + tid, variants.(i).node.id, tps, j); auto llfldp_a = rslt.val; variant_cx = rslt.bcx; rslt = GEP_tag(variant_cx, llunion_b_ptr, tid, - variants.(i).id, tps, j); + variants.(i).node.id, tps, j); auto llfldp_b = rslt.val; variant_cx = rslt.bcx; @@ -3436,7 +3436,7 @@ fn trans_pat_match(@block_ctxt cx, @ast.pat pat, ValueRef llval, auto variants = tag_variants(cx.fcx.ccx, vdef._0); auto i = 0; for (ast.variant v in variants) { - auto this_variant_id = v.id; + auto this_variant_id = v.node.id; if (variant_id._0 == this_variant_id._0 && variant_id._1 == this_variant_id._1) { variant_tag = i; @@ -3698,9 +3698,9 @@ fn trans_path(@block_ctxt cx, &ast.path p, &option.t[ast.def] dopt, alt (tag_item.node) { case (ast.item_tag(_, ?variants, _, _)) { for (ast.variant v in variants) { - if (v.id == vid) { + if (v.node.id == vid) { fty = node_ann_type(cx.fcx.ccx, - v.ann); + v.node.ann); } } } @@ -5731,27 +5731,27 @@ fn trans_obj(@crate_ctxt cx, &ast._obj ob, ast.def_id oid, fn trans_tag_variant(@crate_ctxt cx, ast.def_id tag_id, &ast.variant variant, int index, &vec[ast.ty_param] ty_params) { - if (_vec.len[ast.variant_arg](variant.args) == 0u) { + if (_vec.len[ast.variant_arg](variant.node.args) == 0u) { ret; // nullary constructors are just constants } // Translate variant arguments to function arguments. let vec[ast.arg] fn_args = vec(); auto i = 0u; - for (ast.variant_arg varg in variant.args) { + for (ast.variant_arg varg in variant.node.args) { fn_args += vec(rec(mode=ast.alias, ty=varg.ty, ident="arg" + _uint.to_str(i, 10u), id=varg.id)); } - check (cx.item_ids.contains_key(variant.id)); - let ValueRef llfndecl = cx.item_ids.get(variant.id); + check (cx.item_ids.contains_key(variant.node.id)); + let ValueRef llfndecl = cx.item_ids.get(variant.node.id); auto fcx = new_fn_ctxt(cx, llfndecl); create_llargs_for_fn_args(fcx, ast.proto_fn, - none[TypeRef], ret_ty_of_fn(variant.ann), + none[TypeRef], ret_ty_of_fn(variant.node.ann), fn_args, ty_params); let vec[@ty.t] ty_param_substs = vec(); @@ -5759,7 +5759,7 @@ fn trans_tag_variant(@crate_ctxt cx, ast.def_id tag_id, ty_param_substs += vec(plain_ty(ty.ty_param(tp.id))); } - auto arg_tys = arg_tys_of_fn(variant.ann); + auto arg_tys = arg_tys_of_fn(variant.node.ann); copy_args_to_allocas(fcx, fn_args, arg_tys); auto bcx = new_top_block_ctxt(fcx); @@ -5777,8 +5777,8 @@ fn trans_tag_variant(@crate_ctxt cx, ast.def_id tag_id, vec(C_int(0), C_int(1))); i = 0u; - for (ast.variant_arg va in variant.args) { - auto rslt = GEP_tag(bcx, llblobptr, tag_id, variant.id, + for (ast.variant_arg va in variant.node.args) { + auto rslt = GEP_tag(bcx, llblobptr, tag_id, variant.node.id, ty_param_substs, i as int); bcx = rslt.bcx; auto lldestptr = rslt.val; @@ -6182,9 +6182,10 @@ fn collect_tag_ctor(&@crate_ctxt cx, @ast.item i) -> @crate_ctxt { case (ast.item_tag(_, ?variants, ?tps, _)) { for (ast.variant variant in variants) { - if (_vec.len[ast.variant_arg](variant.args) != 0u) { - decl_fn_and_pair(extend_path(cx, variant.name), "tag", - tps, variant.ann, variant.id); + if (_vec.len[ast.variant_arg](variant.node.args) != 0u) { + decl_fn_and_pair(extend_path(cx, variant.node.name), + "tag", tps, variant.node.ann, + variant.node.id); } } } @@ -6229,8 +6230,8 @@ fn trans_constant(&@crate_ctxt cx, @ast.item it) -> @crate_ctxt { llvm.LLVMSetLinkage(discrim_gvar, lib.llvm.LLVMPrivateLinkage as llvm.Linkage); - cx.discrims.insert(variant.id, discrim_gvar); - cx.discrim_symbols.insert(variant.id, s); + cx.discrims.insert(variant.node.id, discrim_gvar); + cx.discrim_symbols.insert(variant.node.id, s); i += 1u; } diff --git a/src/comp/middle/typeck.rs b/src/comp/middle/typeck.rs index ff13ad93..9ea1c44c 100644 --- a/src/comp/middle/typeck.rs +++ b/src/comp/middle/typeck.rs @@ -656,7 +656,7 @@ fn collect_item_types(session.session sess, @ast.crate crate) // Nullary tag constructors get turned into constants; n-ary tag // constructors get turned into functions. auto result_ty; - if (_vec.len[ast.variant_arg](variant.args) == 0u) { + if (_vec.len[ast.variant_arg](variant.node.args) == 0u) { result_ty = plain_ty(ty.ty_tag(tag_id, ty_param_tys)); } else { // As above, tell ast_ty_to_ty() that trans_ty_item_to_ty() @@ -664,7 +664,7 @@ fn collect_item_types(session.session sess, @ast.crate crate) auto f = bind getter(sess, id_to_ty_item, type_cache, _); let vec[arg] args = vec(); - for (ast.variant_arg va in variant.args) { + for (ast.variant_arg va in variant.node.args) { auto arg_ty = ast_ty_to_ty(f, va.ty); args += vec(rec(mode=ast.alias, ty=arg_ty)); } @@ -673,13 +673,13 @@ fn collect_item_types(session.session sess, @ast.crate crate) } auto tpt = tup(params_opt, result_ty); - type_cache.insert(variant.id, tpt); + type_cache.insert(variant.node.id, tpt); auto variant_t = rec( ann=ast.ann_type(result_ty, none[vec[@ty.t]]) - with variant + with variant.node ); - result += vec(variant_t); + result += vec(fold.respan[ast.variant_](variant.span, variant_t)); } ret result; |