about summary refs log tree commit diff
diff options
context:
space:
mode:
-rw-r--r--src/comp/middle/ty.rs6
-rw-r--r--src/test/run-pass/type-ptr.rs8
2 files changed, 13 insertions, 1 deletions
diff --git a/src/comp/middle/ty.rs b/src/comp/middle/ty.rs
index 3b7061bb987..9095f9e9c52 100644
--- a/src/comp/middle/ty.rs
+++ b/src/comp/middle/ty.rs
@@ -615,6 +615,7 @@ fn ty_to_str(&ctxt cx, &t typ) -> str {
         case (ty_char)         { s += "char";                           }
         case (ty_str)          { s += "str";                            }
         case (ty_box(?tm))     { s += "@" + mt_to_str(cx, tm);          }
+        case (ty_ptr(?tm))     { s += "*" + mt_to_str(cx, tm);          }
         case (ty_vec(?tm))     { s += "vec[" + mt_to_str(cx, tm) + "]"; }
         case (ty_port(?t))     { s += "port[" + ty_to_str(cx, t) + "]"; }
         case (ty_chan(?t))     { s += "chan[" + ty_to_str(cx, t) + "]"; }
@@ -781,6 +782,10 @@ fn fold_ty(&ctxt cx, ty_fold fld, t ty_0) -> t {
             ty = copy_cname(cx, mk_box(cx, rec(ty=fold_ty(cx, fld, tm.ty),
                                                mut=tm.mut)), ty);
         }
+        case (ty_ptr(?tm)) {
+            ty = copy_cname(cx, mk_ptr(cx, rec(ty=fold_ty(cx, fld, tm.ty),
+                                               mut=tm.mut)), ty);
+        }
         case (ty_vec(?tm)) {
             ty = copy_cname(cx, mk_vec(cx, rec(ty=fold_ty(cx, fld, tm.ty),
                                                           mut=tm.mut)), ty);
@@ -978,6 +983,7 @@ fn type_is_scalar(&ctxt cx, &t ty) -> bool {
         case (ty_char) { ret true; }
         case (ty_type) { ret true; }
         case (ty_native) { ret true; }
+        case (ty_ptr(_)) { ret true; }
         case (_) { ret false; }
     }
 }
diff --git a/src/test/run-pass/type-ptr.rs b/src/test/run-pass/type-ptr.rs
index 8ccbba9218d..3743fb115e8 100644
--- a/src/test/run-pass/type-ptr.rs
+++ b/src/test/run-pass/type-ptr.rs
@@ -1,4 +1,10 @@
-fn f(*int a) {
+fn f(*int a) -> *int {
+   ret a;
+}
+
+fn g(*int a) -> *int {
+   auto b = f(a);
+   ret b;
 }
 
 fn main(vec[str] args) {