aboutsummaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
authorRoy Frostig <[email protected]>2010-07-22 12:45:58 -0700
committerRoy Frostig <[email protected]>2010-07-22 12:45:58 -0700
commit1ae13b3fdd02593581b8ccd374ea4971d473e9dc (patch)
tree1764bbae771080c736c58d2d5d89c4fab114ff5e /src
parentXFAIL task-comm-5, it's burning the tinderboxes. (diff)
downloadrust-1ae13b3fdd02593581b8ccd374ea4971d473e9dc.tar.xz
rust-1ae13b3fdd02593581b8ccd374ea4971d473e9dc.zip
Source FIXME annotations for issue #81 and a correction to STMT_bind fmt.
Diffstat (limited to 'src')
-rw-r--r--src/boot/fe/ast.ml2
-rw-r--r--src/boot/me/trans.ml5
-rw-r--r--src/lib/_vec.rs12
3 files changed, 12 insertions, 7 deletions
diff --git a/src/boot/fe/ast.ml b/src/boot/fe/ast.ml
index 76e6e306..390d944d 100644
--- a/src/boot/fe/ast.ml
+++ b/src/boot/fe/ast.ml
@@ -1013,7 +1013,7 @@ and fmt_stmt_body (ff:Format.formatter) (s:stmt) : unit =
| STMT_bind (dst, fn, arg_opts) ->
fmt_lval ff dst;
- fmt ff " = ";
+ fmt ff " = bind ";
fmt_lval ff fn;
fmt_atom_opts ff arg_opts;
fmt ff ";";
diff --git a/src/boot/me/trans.ml b/src/boot/me/trans.ml
index 07b22dca..6ec88f99 100644
--- a/src/boot/me/trans.ml
+++ b/src/boot/me/trans.ml
@@ -3818,7 +3818,7 @@ let trans_visitor
(*
* NB: 'all_*_args', both self and callee, are always 4-tuples:
*
- * [out_ptr, task_ptr, [args], [indirect_args]]
+ * [out_ptr, task_ptr, indirect_args, ty_params, [args]]
*
* The first few bindings here just destructure those via GEP.
*
@@ -3833,6 +3833,9 @@ let trans_visitor
get_element_ptr all_self_args_cell Abi.calltup_elt_ty_params
in
let callee_args_cell =
+ (* FIXME (issue #81): Once we've actually got proper ty_params,
+ * we should GEP dynamically here to get the args, since they may
+ * be aligned dynamically if they have parameterized type. *)
get_element_ptr all_callee_args_cell Abi.calltup_elt_args
in
let self_indirect_args_cell =
diff --git a/src/lib/_vec.rs b/src/lib/_vec.rs
index decb09f8..c0555bf1 100644
--- a/src/lib/_vec.rs
+++ b/src/lib/_vec.rs
@@ -26,11 +26,13 @@ fn init_fn[T](&init_op[T] op, uint n_elts) -> vec[T] {
}
fn init_elt[T](&T t, uint n_elts) -> vec[T] {
- // FIXME: should be:
- // fn elt_op[X](X x, uint i) -> X { ret x; }
- // auto inner = bind elt_op[T](t, _);
- // ret init_fn[T](inner, n_elts);
- // but this does not work presently.
+ /**
+ * FIXME (issue #81): should be:
+ *
+ * fn elt_op[T](T x, uint i) -> T { ret x; }
+ * let init_op[T] inner = bind elt_op[T](t, _);
+ * ret init_fn[T](inner, n_elts);
+ */
let vec[T] v = alloc[T](n_elts);
let uint i = n_elts;
while (i > uint(0)) {