aboutsummaryrefslogtreecommitdiff
path: root/src/comp/middle
diff options
context:
space:
mode:
authorPatrick Walton <[email protected]>2011-05-12 18:37:28 -0700
committerPatrick Walton <[email protected]>2011-05-12 18:37:28 -0700
commit5295a4dabda8f49c1c148b17d13c9074291d45bc (patch)
tree7bddf8a424e600925ca066ae8478b083d3a242ec /src/comp/middle
parentrustc: Beginnings of a "shape" module to convert types to shapes (diff)
downloadrust-5295a4dabda8f49c1c148b17d13c9074291d45bc.tar.xz
rust-5295a4dabda8f49c1c148b17d13c9074291d45bc.zip
rustc: Flatten recursive vectors in trans::simplify_type(). Prevents an infinite loop.
Diffstat (limited to 'src/comp/middle')
-rw-r--r--src/comp/middle/trans.rs3
-rw-r--r--src/comp/middle/ty.rs5
2 files changed, 8 insertions, 0 deletions
diff --git a/src/comp/middle/trans.rs b/src/comp/middle/trans.rs
index 7a55be10..78a7a16a 100644
--- a/src/comp/middle/trans.rs
+++ b/src/comp/middle/trans.rs
@@ -1231,6 +1231,9 @@ fn simplify_type(&@crate_ctxt ccx, &ty::t typ) -> ty::t {
case (ty::ty_box(_)) {
ret ty::mk_imm_box(ccx.tcx, ty::mk_nil(ccx.tcx));
}
+ case (ty::ty_vec(_)) {
+ ret ty::mk_imm_vec(ccx.tcx, ty::mk_nil(ccx.tcx));
+ }
case (_) { ret typ; }
}
}
diff --git a/src/comp/middle/ty.rs b/src/comp/middle/ty.rs
index 9f62f2b2..42bd68af 100644
--- a/src/comp/middle/ty.rs
+++ b/src/comp/middle/ty.rs
@@ -427,6 +427,11 @@ fn mk_imm_box(&ctxt cx, &t ty) -> t {
}
fn mk_vec(&ctxt cx, &mt tm) -> t { ret gen_ty(cx, ty_vec(tm)); }
+
+fn mk_imm_vec(&ctxt cx, &t typ) -> t {
+ ret gen_ty(cx, ty_vec(rec(ty=typ, mut=ast::imm)));
+}
+
fn mk_port(&ctxt cx, &t ty) -> t { ret gen_ty(cx, ty_port(ty)); }
fn mk_chan(&ctxt cx, &t ty) -> t { ret gen_ty(cx, ty_chan(ty)); }
fn mk_task(&ctxt cx) -> t { ret gen_ty(cx, ty_task); }