From 5295a4dabda8f49c1c148b17d13c9074291d45bc Mon Sep 17 00:00:00 2001 From: Patrick Walton Date: Thu, 12 May 2011 18:37:28 -0700 Subject: rustc: Flatten recursive vectors in trans::simplify_type(). Prevents an infinite loop. --- src/comp/middle/trans.rs | 3 +++ src/comp/middle/ty.rs | 5 +++++ 2 files changed, 8 insertions(+) (limited to 'src/comp') 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); } -- cgit v1.2.3