diff --git a/src/comp/middle/ty.rs b/src/comp/middle/ty.rs index 3b7061bb987b1bd561ff2e60ba5811d4be77ecc2..9095f9e9c5277869aa5c1d67ce6c0aba9c023eb8 100644 --- a/src/comp/middle/ty.rs +++ b/src/comp/middle/ty.rs @@ -615,6 +615,7 @@ fn mt_to_str(&ctxt cx, &mt m) -> 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 8ccbba9218de724b4688062077521ce147393d99..3743fb115e8849574b76e07fe265604ddbd004ba 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) {