aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--src/comp/middle/trans.rs13
1 files changed, 13 insertions, 0 deletions
diff --git a/src/comp/middle/trans.rs b/src/comp/middle/trans.rs
index d2199fae..091896fa 100644
--- a/src/comp/middle/trans.rs
+++ b/src/comp/middle/trans.rs
@@ -273,6 +273,19 @@ fn type_of(@trans_ctxt cx, @typeck.ty t) -> TypeRef {
}
ret T_struct(tys);
}
+ case (typeck.ty_fn(?args, ?out)) {
+ let vec[TypeRef] atys = vec();
+ for (typeck.arg arg in args) {
+ let TypeRef t = type_of(cx, arg.ty);
+ alt (arg.mode) {
+ case (ast.alias) {
+ t = T_ptr(t);
+ }
+ }
+ atys += t;
+ }
+ ret T_fn(atys, type_of(cx, out));
+ }
case (typeck.ty_var(_)) {
// FIXME: implement.
log "ty_var in trans.type_of";