Skip to content

Commit ca4f363

Browse files
committed
---
yaml --- r: 6132 b: refs/heads/master c: 1a68a98 h: refs/heads/master v: v3
1 parent e00f8a7 commit ca4f363

29 files changed

+108
-114
lines changed

[refs]

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,2 +1,2 @@
11
---
2-
refs/heads/master: 1deaf9700244eb44d789a284e8ba8e43d03aea7d
2+
refs/heads/master: 1a68a98824cab9122bb39920d09415ff34a3944e

trunk/src/comp/driver/rustc.rs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -504,7 +504,7 @@ fn early_error(msg: str) -> ! {
504504
}
505505

506506
fn main(args: [str]) {
507-
let binary = vec::shift(args);
507+
let args = args, binary = vec::shift(args);
508508
let match =
509509
alt getopts::getopts(args, opts()) {
510510
getopts::success(m) { m }

trunk/src/comp/metadata/creader.rs

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -118,6 +118,7 @@ fn find_library_crate(sess: session::session, ident: ast::ident,
118118
-> option::t<{ident: str, data: @[u8]}> {
119119

120120
attr::require_unique_names(sess, metas);
121+
let metas = metas;
121122

122123
// Metadata "name" will be used to find the crate. Use `ident'
123124
// as "name" if the attribute is not explicitly specified

trunk/src/comp/middle/alias.rs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -132,7 +132,7 @@ fn visit_expr(cx: @ctx, ex: @ast::expr, sc: scope, v: vt<scope>) {
132132
}
133133

134134
fn visit_block(cx: @ctx, b: ast::blk, sc: scope, v: vt<scope>) {
135-
let bs = sc.bs;
135+
let bs = sc.bs, sc = sc;
136136
for stmt in b.node.stmts {
137137
alt stmt.node {
138138
ast::stmt_decl(@{node: ast::decl_item(it), _}, _) {

trunk/src/comp/middle/mut.rs

Lines changed: 4 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -15,7 +15,7 @@ type deref = @{mut: bool, kind: deref_t, outer_t: ty::t};
1515
fn expr_root(tcx: ty::ctxt, ex: @expr, autoderef: bool) ->
1616
{ex: @expr, ds: @[deref]} {
1717
fn maybe_auto_unbox(tcx: ty::ctxt, t: ty::t) -> {t: ty::t, ds: [deref]} {
18-
let ds = [];
18+
let ds = [], t = t;
1919
while true {
2020
alt ty::struct(tcx, t) {
2121
ty::ty_box(mt) {
@@ -44,7 +44,7 @@ fn expr_root(tcx: ty::ctxt, ex: @expr, autoderef: bool) ->
4444
}
4545
ret {t: t, ds: ds};
4646
}
47-
let ds: [deref] = [];
47+
let ds: [deref] = [], ex = ex;
4848
while true {
4949
alt copy ex.node {
5050
expr_field(base, ident) {
@@ -237,6 +237,8 @@ fn is_immutable_def(def: def) -> option::t<str> {
237237
def_use(_) {
238238
some("static item")
239239
}
240+
def_arg(_, by_ref.) | def_arg(_, by_val.) |
241+
def_arg(_, mode_infer.) { some("argument") }
240242
def_obj_field(_, imm.) { some("immutable object field") }
241243
def_upvar(_, inner, mut) {
242244
if !mut { some("upvar") } else { is_immutable_def(*inner) }

trunk/src/comp/middle/resolve.rs

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -502,6 +502,7 @@ fn ns_name(ns: namespace) -> str {
502502

503503
fn unresolved_err(e: env, sc: scopes, sp: span, name: ident, kind: str) {
504504
fn find_fn_or_mod_scope(sc: scopes) -> option::t<scope> {
505+
let sc = sc;
505506
while true {
506507
alt sc {
507508
cons(cur, rest) {
@@ -671,6 +672,7 @@ fn lookup_in_scope(e: env, sc: scopes, sp: span, name: ident, ns: namespace)
671672
let closing = [];
672673
// Used to determine whether obj fields are in scope
673674
let left_fn_level2 = false;
675+
let sc = sc;
674676
while true {
675677
alt copy sc {
676678
nil. { ret none::<def>; }
@@ -1191,6 +1193,7 @@ fn check_mod_name(e: env, name: ident, entries: list<mod_index_entry>) {
11911193
let saw_mod = false;
11921194
let saw_type = false;
11931195
let saw_value = false;
1196+
let entries = entries;
11941197
fn dup(e: env, sp: span, word: str, name: ident) {
11951198
e.sess.span_fatal(sp, "duplicate definition of " + word + name);
11961199
}

trunk/src/comp/middle/trans.rs

Lines changed: 37 additions & 46 deletions
Original file line numberDiff line numberDiff line change
@@ -929,7 +929,7 @@ fn trans_stack_local_derived_tydesc(cx: @block_ctxt, llsz: ValueRef,
929929
let llmyroottydesc = alloca(cx, bcx_ccx(cx).tydesc_type);
930930

931931
// By convention, desc 0 is the root descriptor.
932-
llroottydesc = Load(cx, llroottydesc);
932+
let llroottydesc = Load(cx, llroottydesc);
933933
Store(cx, llroottydesc, llmyroottydesc);
934934

935935
// Store a pointer to the rest of the descriptors.
@@ -1352,7 +1352,7 @@ fn make_free_glue(bcx: @block_ctxt, v: ValueRef, t: ty::t) {
13521352
// everything to a pointer to the type that the glue acts on).
13531353
let bcx = alt ty::struct(bcx_tcx(bcx), t) {
13541354
ty::ty_box(body_mt) {
1355-
v = PointerCast(bcx, v, type_of_1(bcx, t));
1355+
let v = PointerCast(bcx, v, type_of_1(bcx, t));
13561356
let body = GEPi(bcx, v, [0, abi::box_rc_field_body]);
13571357
let bcx = drop_ty(bcx, body, body_mt.ty);
13581358
if !bcx_ccx(bcx).sess.get_opts().do_gc {
@@ -1361,7 +1361,7 @@ fn make_free_glue(bcx: @block_ctxt, v: ValueRef, t: ty::t) {
13611361
}
13621362
ty::ty_uniq(content_mt) {
13631363
check trans_uniq::type_is_unique_box(bcx, t);
1364-
v = PointerCast(bcx, v, type_of_1(bcx, t));
1364+
let v = PointerCast(bcx, v, type_of_1(bcx, t));
13651365
trans_uniq::make_free_glue(bcx, v, t)
13661366
}
13671367
ty::ty_vec(_) | ty::ty_str. {
@@ -1388,7 +1388,7 @@ fn make_free_glue(bcx: @block_ctxt, v: ValueRef, t: ty::t) {
13881388
// Call through the closure's own fields-drop glue first.
13891389
// Then free the body.
13901390
let ccx = bcx_ccx(bcx);
1391-
v = PointerCast(bcx, v, T_opaque_closure_ptr(ccx));
1391+
let v = PointerCast(bcx, v, T_opaque_closure_ptr(ccx));
13921392
let body = GEPi(bcx, v, [0, abi::box_rc_field_body]);
13931393
let bindings =
13941394
GEPi(bcx, body, [0, abi::closure_elt_bindings]);
@@ -1448,7 +1448,7 @@ fn trans_res_drop(cx: @block_ctxt, rs: ValueRef, did: ast::def_id,
14481448
// Silly check
14491449
check type_is_tup_like(cx, tup_ty);
14501450
let drop_flag = GEP_tup_like(cx, tup_ty, rs, [0, 0]);
1451-
cx = drop_flag.bcx;
1451+
let cx = drop_flag.bcx;
14521452
let null_test = IsNull(cx, Load(cx, drop_flag.val));
14531453
CondBr(cx, null_test, next_cx.llbb, drop_cx.llbb);
14541454
cx = drop_cx;
@@ -1487,7 +1487,7 @@ fn decr_refcnt_maybe_free(cx: @block_ctxt, box_ptr: ValueRef, t: ty::t)
14871487
let free_cx = new_sub_block_ctxt(cx, "free");
14881488
let next_cx = new_sub_block_ctxt(cx, "next");
14891489
let llbox_ty = T_opaque_obj_ptr(ccx);
1490-
box_ptr = PointerCast(cx, box_ptr, llbox_ty);
1490+
let box_ptr = PointerCast(cx, box_ptr, llbox_ty);
14911491
let null_test = IsNull(cx, box_ptr);
14921492
CondBr(cx, null_test, next_cx.llbb, rc_adj_cx.llbb);
14931493
let rc_ptr =
@@ -1640,6 +1640,7 @@ fn iter_structural_ty(cx: @block_ctxt, av: ValueRef, t: ty::t,
16401640
if std::vec::len::<ty::t>(variant.args) == 0u { ret cx; }
16411641
let fn_ty = variant.ctor_ty;
16421642
let ccx = bcx_ccx(cx);
1643+
let cx = cx;
16431644
alt ty::struct(ccx.tcx, fn_ty) {
16441645
ty::ty_fn(_, args, _, _, _) {
16451646
let j = 0u;
@@ -1661,6 +1662,7 @@ fn iter_structural_ty(cx: @block_ctxt, av: ValueRef, t: ty::t,
16611662
/*
16621663
Typestate constraint that shows the unimpl case doesn't happen?
16631664
*/
1665+
let cx = cx;
16641666
alt ty::struct(bcx_tcx(cx), t) {
16651667
ty::ty_rec(fields) {
16661668
let i: int = 0;
@@ -2054,7 +2056,7 @@ fn copy_val(cx: @block_ctxt, action: copy_action, dst: ValueRef,
20542056

20552057
fn copy_val_no_check(bcx: @block_ctxt, action: copy_action, dst: ValueRef,
20562058
src: ValueRef, t: ty::t) -> @block_ctxt {
2057-
let ccx = bcx_ccx(bcx);
2059+
let ccx = bcx_ccx(bcx), bcx = bcx;
20582060
if ty::type_is_scalar(ccx.tcx, t) || ty::type_is_native(ccx.tcx, t) {
20592061
Store(bcx, src, dst);
20602062
ret bcx;
@@ -2084,7 +2086,7 @@ fn copy_val_no_check(bcx: @block_ctxt, action: copy_action, dst: ValueRef,
20842086
fn move_val(cx: @block_ctxt, action: copy_action, dst: ValueRef,
20852087
src: lval_result, t: ty::t) -> @block_ctxt {
20862088
let src_val = src.val;
2087-
let tcx = bcx_tcx(cx);
2089+
let tcx = bcx_tcx(cx), cx = cx;
20882090
if ty::type_is_scalar(tcx, t) || ty::type_is_native(tcx, t) {
20892091
if src.kind == owned { src_val = Load(cx, src_val); }
20902092
Store(cx, src_val, dst);
@@ -2230,17 +2232,16 @@ fn trans_unary(bcx: @block_ctxt, op: ast::unop, e: @ast::expr,
22302232
fn trans_expr_fn(bcx: @block_ctxt, f: ast::_fn, sp: span,
22312233
id: ast::node_id, dest: dest) -> @block_ctxt {
22322234
if dest == ignore { ret bcx; }
2233-
let ccx = bcx_ccx(bcx);
2235+
let ccx = bcx_ccx(bcx), bcx = bcx;
22342236
let fty = node_id_type(ccx, id);
22352237
check returns_non_ty_var(ccx, fty);
22362238
let llfnty = type_of_fn_from_ty(ccx, sp, fty, 0u);
22372239
let sub_cx = extend_path(bcx.fcx.lcx, ccx.names.next("anon"));
22382240
let s = mangle_internal_name_by_path(ccx, sub_cx.path);
22392241
let llfn = decl_internal_cdecl_fn(ccx.llmod, s, llfnty);
22402242

2241-
let copying =
2242-
f.proto == ast::proto_shared(ast::sugar_normal)
2243-
|| f.proto == ast::proto_shared(ast::sugar_sexy);
2243+
let copying = f.proto == ast::proto_shared(ast::sugar_normal)
2244+
|| f.proto == ast::proto_shared(ast::sugar_sexy);
22442245
let env;
22452246
alt f.proto {
22462247
ast::proto_block. | ast::proto_shared(_) {
@@ -2300,7 +2301,7 @@ fn trans_eager_binop(cx: @block_ctxt, op: ast::binop, lhs: ValueRef,
23002301
if op == ast::add && ty::type_is_sequence(bcx_tcx(cx), intype) {
23012302
ret tvec::trans_add(cx, intype, lhs, rhs, dest);
23022303
}
2303-
let val = alt op {
2304+
let cx = cx, val = alt op {
23042305
ast::add. {
23052306
if is_float { FAdd(cx, lhs, rhs) }
23062307
else { Add(cx, lhs, rhs) }
@@ -2573,9 +2574,9 @@ fn trans_for(cx: @block_ctxt, local: @ast::local, seq: @ast::expr,
25732574
new_loop_scope_block_ctxt(bcx, option::some(next_cx),
25742575
outer_next_cx, "for loop scope");
25752576
Br(bcx, scope_cx.llbb);
2576-
curr = PointerCast(bcx, curr, T_ptr(type_of_or_i8(bcx, t)));
2577-
bcx = trans_alt::bind_irrefutable_pat(scope_cx, local.node.pat, curr,
2578-
false);
2577+
let curr = PointerCast(bcx, curr, T_ptr(type_of_or_i8(bcx, t)));
2578+
let bcx = trans_alt::bind_irrefutable_pat(scope_cx, local.node.pat,
2579+
curr, false);
25792580
bcx = trans_block_dps(bcx, body, ignore);
25802581
Br(bcx, next_cx.llbb);
25812582
ret next_cx;
@@ -2649,7 +2650,7 @@ fn build_environment(bcx: @block_ctxt, lltydescs: [ValueRef],
26492650
// Finally, synthesize a type for that whole vector.
26502651
let closure_ty: ty::t = ty::mk_tup(tcx, closure_tys);
26512652

2652-
let temp_cleanups = [];
2653+
let temp_cleanups = [], bcx = bcx;
26532654
// Allocate a box that can hold something closure-sized.
26542655
let (closure, box) = if copying {
26552656
let r = trans_malloc_boxed(bcx, closure_ty);
@@ -2903,7 +2904,7 @@ fn lval_static_fn(bcx: @block_ctxt, tpt: ty::ty_param_kinds_and_ty,
29032904
trans_external_path(bcx, fn_id, tpt)
29042905
};
29052906
let tys = ty::node_id_to_type_params(bcx_tcx(bcx), id);
2906-
let gen = none;
2907+
let gen = none, bcx = bcx;
29072908
if std::vec::len::<ty::t>(tys) != 0u {
29082909
let tydescs = [], tis = [];
29092910
for t in tys {
@@ -3736,7 +3737,7 @@ fn trans_args(cx: @block_ctxt, outer_cx: @block_ctxt, llenv: ValueRef,
37363737
// This will be needed if this is a generic call, because the callee has
37373738
// to cast her view of the arguments to the caller's view.
37383739
let arg_tys = type_of_explicit_args(ccx, cx.sp, args);
3739-
let i = 0u;
3740+
let i = 0u, outer_cx = outer_cx;
37403741
for e: @ast::expr in es {
37413742
let is_referenced = alt ret_style {
37423743
ast::return_ref(_, arg_n) { i + 1u == arg_n }
@@ -3838,7 +3839,7 @@ fn trans_c_stack_native_call(bcx: @block_ctxt, f: @ast::expr,
38383839
args: [@ast::expr], dest: dest) -> @block_ctxt {
38393840
let ccx = bcx_ccx(bcx);
38403841
let f_res = trans_callee(bcx, f);
3841-
let llfn = f_res.val; bcx = f_res.bcx;
3842+
let llfn = f_res.val, bcx = f_res.bcx;
38423843

38433844
// Translate the callee.
38443845
let { params: _, ty: fn_ty } = ty::expr_ty_params_and_ty(bcx_tcx(bcx), f);
@@ -4033,6 +4034,7 @@ fn trans_landing_pad(bcx: @block_ctxt,
40334034
fn trans_tup(bcx: @block_ctxt, elts: [@ast::expr], id: ast::node_id,
40344035
dest: dest) -> @block_ctxt {
40354036
let t = node_id_type(bcx.fcx.lcx.ccx, id);
4037+
let bcx = bcx;
40364038
let addr = alt dest {
40374039
ignore. {
40384040
for ex in elts { bcx = trans_expr(bcx, ex, ignore); }
@@ -4057,6 +4059,7 @@ fn trans_rec(bcx: @block_ctxt, fields: [ast::field],
40574059
base: option::t<@ast::expr>, id: ast::node_id,
40584060
dest: dest) -> @block_ctxt {
40594061
let t = node_id_type(bcx_ccx(bcx), id);
4062+
let bcx = bcx;
40604063
let addr = alt dest {
40614064
ignore. {
40624065
for fld in fields {
@@ -4116,6 +4119,7 @@ fn trans_expr_save_in(bcx: @block_ctxt, e: @ast::expr, dest: ValueRef)
41164119
// trans_expr_save_in. For intermediates where you don't care about lval-ness,
41174120
// use trans_temp_expr.
41184121
fn trans_temp_lval(bcx: @block_ctxt, e: @ast::expr) -> lval_result {
4122+
let bcx = bcx;
41194123
if expr_is_lval(bcx_tcx(bcx), e) {
41204124
ret trans_lval(bcx, e);
41214125
} else {
@@ -4429,6 +4433,7 @@ fn trans_check_expr(cx: @block_ctxt, e: @ast::expr, s: str) -> @block_ctxt {
44294433

44304434
fn trans_fail_expr(bcx: @block_ctxt, sp_opt: option::t<span>,
44314435
fail_expr: option::t<@ast::expr>) -> @block_ctxt {
4436+
let bcx = bcx;
44324437
alt fail_expr {
44334438
some(expr) {
44344439
let tcx = bcx_tcx(bcx);
@@ -4483,7 +4488,7 @@ fn trans_fail_value(bcx: @block_ctxt, sp_opt: option::t<span>,
44834488
fn trans_break_cont(sp: span, bcx: @block_ctxt, to_end: bool)
44844489
-> @block_ctxt {
44854490
// Locate closest loop block, outputting cleanup as we go.
4486-
let cleanup_cx = bcx;
4491+
let cleanup_cx = bcx, bcx = bcx;
44874492
while true {
44884493
bcx = trans_block_cleanups(bcx, cleanup_cx);
44894494
alt copy cleanup_cx.kind {
@@ -4524,7 +4529,7 @@ fn trans_cont(sp: span, cx: @block_ctxt) -> @block_ctxt {
45244529
}
45254530

45264531
fn trans_ret(bcx: @block_ctxt, e: option::t<@ast::expr>) -> @block_ctxt {
4527-
let cleanup_cx = bcx;
4532+
let cleanup_cx = bcx, bcx = bcx;
45284533
alt e {
45294534
some(x) {
45304535
if ast_util::ret_by_ref(bcx.fcx.ret_style) {
@@ -4582,6 +4587,7 @@ fn init_local(bcx: @block_ctxt, local: @ast::local) -> @block_ctxt {
45824587
}
45834588
};
45844589

4590+
let bcx = bcx;
45854591
alt local.node.init {
45864592
some(init) {
45874593
if init.op == ast::init_assign ||
@@ -4730,7 +4736,7 @@ fn trans_block_cleanups(bcx: @block_ctxt, cleanup_cx: @block_ctxt) ->
47304736
if cleanup_cx.kind == NON_SCOPE_BLOCK {
47314737
assert (std::vec::len::<cleanup>(cleanup_cx.cleanups) == 0u);
47324738
}
4733-
let i = std::vec::len::<cleanup>(cleanup_cx.cleanups);
4739+
let i = std::vec::len::<cleanup>(cleanup_cx.cleanups), bcx = bcx;
47344740
while i > 0u {
47354741
i -= 1u;
47364742
let c = cleanup_cx.cleanups[i];
@@ -4863,6 +4869,7 @@ fn trans_block(bcx: @block_ctxt, b: ast::blk) -> @block_ctxt {
48634869

48644870
fn trans_block_dps(bcx: @block_ctxt, b: ast::blk, dest: dest)
48654871
-> @block_ctxt {
4872+
let bcx = bcx;
48664873
block_locals(b) {|local| bcx = alloc_local(bcx, local); };
48674874
for s: @ast::stmt in b.node.stmts {
48684875
bcx = trans_stmt(bcx, *s);
@@ -4998,41 +5005,25 @@ fn create_llargs_for_fn_args(cx: @fn_ctxt, ty_self: option::t<ty::t>,
49985005
}
49995006

50005007
fn copy_args_to_allocas(fcx: @fn_ctxt, bcx: @block_ctxt, args: [ast::arg],
5001-
arg_tys: [ty::arg], ignore_mut: bool)
5002-
-> @block_ctxt {
5003-
let arg_n: uint = 0u;
5008+
arg_tys: [ty::arg]) -> @block_ctxt {
5009+
let arg_n: uint = 0u, bcx = bcx;
50045010
for arg in arg_tys {
50055011
let id = args[arg_n].id;
5006-
let mutated = !ignore_mut && fcx.lcx.ccx.mut_map.contains_key(id);
50075012
let argval = alt fcx.llargs.get(id) { local_mem(v) { v } };
50085013
alt arg.mode {
50095014
ast::by_mut_ref. { }
50105015
ast::by_move. { add_clean(bcx, argval, arg.ty); }
50115016
ast::by_val. {
5012-
if mutated || !ty::type_is_immediate(bcx_tcx(bcx), arg.ty) {
5017+
if !ty::type_is_immediate(bcx_tcx(bcx), arg.ty) {
50135018
let {bcx: cx, val: alloc} = alloc_ty(bcx, arg.ty);
50145019
bcx = cx;
50155020
Store(bcx, argval, alloc);
5016-
if mutated {
5017-
bcx = take_ty(bcx, alloc, arg.ty);
5018-
add_clean(bcx, alloc, arg.ty);
5019-
}
50205021
fcx.llargs.insert(id, local_mem(alloc));
50215022
} else {
50225023
fcx.llargs.insert(id, local_imm(argval));
50235024
}
50245025
}
5025-
ast::by_ref. {
5026-
// Overwrite the llargs entry for locally mutated params
5027-
// with a local alloca.
5028-
if mutated {
5029-
let {bcx: cx, val: alloc} = alloc_ty(bcx, arg.ty);
5030-
bcx = copy_val(cx, INIT, alloc,
5031-
load_if_immediate(cx, argval, arg.ty), arg.ty);
5032-
fcx.llargs.insert(id, local_mem(alloc));
5033-
add_clean(bcx, alloc, arg.ty);
5034-
}
5035-
}
5026+
ast::by_ref. {}
50365027
}
50375028
arg_n += 1u;
50385029
}
@@ -5129,7 +5120,7 @@ fn trans_closure(cx: @local_ctxt, sp: span, f: ast::_fn, llfndecl: ValueRef,
51295120
let block_ty = node_id_type(cx.ccx, f.body.node.id);
51305121

51315122
let arg_tys = arg_tys_of_fn(fcx.lcx.ccx, id);
5132-
bcx = copy_args_to_allocas(fcx, bcx, f.decl.inputs, arg_tys, false);
5123+
bcx = copy_args_to_allocas(fcx, bcx, f.decl.inputs, arg_tys);
51335124

51345125
maybe_load_env(fcx);
51355126

@@ -5254,7 +5245,7 @@ fn trans_tag_variant(cx: @local_ctxt, tag_id: ast::node_id,
52545245
let arg_tys = arg_tys_of_fn(ccx, variant.node.id);
52555246
let bcx = new_top_block_ctxt(fcx);
52565247
let lltop = bcx.llbb;
5257-
bcx = copy_args_to_allocas(fcx, bcx, fn_args, arg_tys, true);
5248+
bcx = copy_args_to_allocas(fcx, bcx, fn_args, arg_tys);
52585249

52595250
// Cast the tag to a type we can GEP into.
52605251
let llblobptr =
@@ -5991,7 +5982,7 @@ fn decl_crate_map(sess: session::session, mapname: str,
59915982
let n_subcrates = 1;
59925983
let cstore = sess.get_cstore();
59935984
while cstore::have_crate_data(cstore, n_subcrates) { n_subcrates += 1; }
5994-
if !sess.get_opts().library { mapname = "toplevel"; }
5985+
let mapname = sess.get_opts().library ? mapname : "toplevel";
59955986
let sym_name = "_rust_crate_map_" + mapname;
59965987
let arrtype = T_array(int_type, n_subcrates as uint);
59975988
let maptype = T_struct([int_type, arrtype]);

0 commit comments

Comments
 (0)