aboutsummaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
authorGraydon Hoare <[email protected]>2010-11-19 20:08:57 -0800
committerGraydon Hoare <[email protected]>2010-11-19 20:08:57 -0800
commit6d92ca64a70e625fdb274390451c8ed911e02e79 (patch)
tree4b4bd04925f55df84c2dfe17729df6b96b5f07cf /src
parentrustc: First stab at a typechecker (diff)
downloadrust-6d92ca64a70e625fdb274390451c8ed911e02e79.tar.xz
rust-6d92ca64a70e625fdb274390451c8ed911e02e79.zip
Translate typeck.ty_fn to a TypeRef. Can compile int.rs test now.
Diffstat (limited to 'src')
-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";