about summary refs log tree commit diff
path: root/src/comp
diff options
context:
space:
mode:
authorGraydon Hoare <graydon@mozilla.com>2010-11-19 20:08:57 -0800
committerGraydon Hoare <graydon@mozilla.com>2010-11-19 20:08:57 -0800
commit6d92ca64a70e625fdb274390451c8ed911e02e79 (patch)
tree4b4bd04925f55df84c2dfe17729df6b96b5f07cf /src/comp
parentc00bda539d79e4411e086d505c697662942ee00b (diff)
downloadrust-6d92ca64a70e625fdb274390451c8ed911e02e79.tar.gz
rust-6d92ca64a70e625fdb274390451c8ed911e02e79.zip
Translate typeck.ty_fn to a TypeRef. Can compile int.rs test now.
Diffstat (limited to 'src/comp')
-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 d2199faed21..091896fa302 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";