Skip to content

Commit 5a6b663

Browse files
committed
---
yaml --- r: 976 b: refs/heads/master c: 6c4e975 h: refs/heads/master v: v3
1 parent 1d4c498 commit 5a6b663

File tree

2 files changed

+19
-1
lines changed

2 files changed

+19
-1
lines changed

[refs]

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,2 +1,2 @@
11
---
2-
refs/heads/master: e6b7f763853d0d847288111e7050841e05a885f4
2+
refs/heads/master: 6c4e975099f22d6438af0fb3e69f79c433156422

trunk/src/comp/middle/fold.rs

Lines changed: 18 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -48,6 +48,9 @@ type ast_fold[ENV] =
4848

4949
(fn(&ENV e, &span sp, vec[@ty] elts) -> @ty) fold_ty_tup,
5050

51+
(fn(&ENV e, &span sp,
52+
vec[tup(ident,@ty)] elts) -> @ty) fold_ty_rec,
53+
5154
(fn(&ENV e, &span sp,
5255
vec[rec(ast.mode mode, @ty ty)] inputs,
5356
@ty output) -> @ty) fold_ty_fn,
@@ -252,6 +255,15 @@ fn fold_ty[ENV](&ENV env, ast_fold[ENV] fld, @ty t) -> @ty {
252255
ret fld.fold_ty_tup(env_, t.span, elts);
253256
}
254257

258+
case (ast.ty_rec(?elts)) {
259+
let vec[tup(ident,@ty)] elts_ = vec();
260+
for (tup(ident, @ty) elt in elts) {
261+
append[tup(ident, @ty)]
262+
(elts_, tup(elt._0, fold_ty(env, fld, elt._1)));
263+
}
264+
ret fld.fold_ty_rec(env_, t.span, elts);
265+
}
266+
255267
case (ast.ty_path(?pth, ?ref_opt)) {
256268
let vec[ast.name] path = vec();
257269
for (ast.name n in pth) {
@@ -655,6 +667,11 @@ fn identity_fold_ty_tup[ENV](&ENV env, &span sp,
655667
ret @respan(sp, ast.ty_tup(elts));
656668
}
657669

670+
fn identity_fold_ty_rec[ENV](&ENV env, &span sp,
671+
vec[tup(ident,@ty)] elts) -> @ty {
672+
ret @respan(sp, ast.ty_rec(elts));
673+
}
674+
658675
fn identity_fold_ty_fn[ENV](&ENV env, &span sp,
659676
vec[rec(ast.mode mode, @ty ty)] inputs,
660677
@ty output) -> @ty {
@@ -918,6 +935,7 @@ fn new_identity_fold[ENV]() -> ast_fold[ENV] {
918935
fold_ty_box = bind identity_fold_ty_box[ENV](_,_,_),
919936
fold_ty_vec = bind identity_fold_ty_vec[ENV](_,_,_),
920937
fold_ty_tup = bind identity_fold_ty_tup[ENV](_,_,_),
938+
fold_ty_rec = bind identity_fold_ty_rec[ENV](_,_,_),
921939
fold_ty_fn = bind identity_fold_ty_fn[ENV](_,_,_,_),
922940
fold_ty_path = bind identity_fold_ty_path[ENV](_,_,_,_),
923941
fold_ty_mutable = bind identity_fold_ty_mutable[ENV](_,_,_),

0 commit comments

Comments
 (0)