@@ -28,9 +28,9 @@ use sort_pass;
28
28
use util:: NominalOp ;
29
29
use util;
30
30
31
- use core:: oldcomm;
32
31
use core:: option;
33
32
use core:: vec;
33
+ use core:: pipes:: * ;
34
34
use syntax:: ast;
35
35
36
36
pub fn mk_pass ( output_style : config:: OutputStyle ) -> Pass {
@@ -52,24 +52,26 @@ pub fn run(
52
52
return doc;
53
53
}
54
54
55
- let ( result_port, page_chan) = do util:: spawn_conversation
56
- |page_port, result_chan| {
57
- oldcomm:: send ( result_chan, make_doc_from_pages ( page_port) ) ;
55
+ let ( result_port, result_chan) = stream ( ) ;
56
+ let ( page_port, page_chan) = stream ( ) ;
57
+ let page_chan = SharedChan ( page_chan) ;
58
+ do task:: spawn {
59
+ result_chan. send ( make_doc_from_pages ( & page_port) ) ;
58
60
} ;
59
61
60
62
find_pages ( doc, page_chan) ;
61
- oldcomm :: recv ( result_port )
63
+ result_port . recv ( )
62
64
}
63
65
64
- type PagePort = oldcomm :: Port < Option < doc:: Page > > ;
65
- type PageChan = oldcomm :: Chan < Option < doc:: Page > > ;
66
+ type PagePort = Port < Option < doc:: Page > > ;
67
+ type PageChan = SharedChan < Option < doc:: Page > > ;
66
68
67
69
type NominalPageChan = NominalOp < PageChan > ;
68
70
69
- fn make_doc_from_pages ( page_port : PagePort ) -> doc:: Doc {
71
+ fn make_doc_from_pages ( page_port : & PagePort ) -> doc:: Doc {
70
72
let mut pages = ~[ ] ;
71
73
loop {
72
- let val = oldcomm :: recv ( page_port ) ;
74
+ let val = page_port . recv ( ) ;
73
75
if val. is_some ( ) {
74
76
pages += ~[ option:: unwrap ( move val) ] ;
75
77
} else {
@@ -83,14 +85,15 @@ fn make_doc_from_pages(page_port: PagePort) -> doc::Doc {
83
85
84
86
fn find_pages ( doc : doc:: Doc , page_chan : PageChan ) {
85
87
let fold = Fold {
88
+ ctxt : NominalOp { op : page_chan. clone ( ) } ,
86
89
fold_crate : fold_crate,
87
90
fold_mod : fold_mod,
88
91
fold_nmod : fold_nmod,
89
- .. fold:: default_any_fold ( NominalOp { op : page_chan } )
92
+ .. fold:: default_any_fold ( NominalOp { op : page_chan. clone ( ) } )
90
93
} ;
91
94
( fold. fold_doc ) ( & fold, copy doc) ;
92
95
93
- oldcomm :: send ( page_chan , None ) ;
96
+ page_chan . send ( None ) ;
94
97
}
95
98
96
99
fn fold_crate (
@@ -105,7 +108,7 @@ fn fold_crate(
105
108
.. copy doc
106
109
} ) ;
107
110
108
- oldcomm :: send ( fold. ctxt . op , Some ( page) ) ;
111
+ fold. ctxt . op . send ( Some ( page) ) ;
109
112
110
113
doc
111
114
}
@@ -121,7 +124,7 @@ fn fold_mod(
121
124
122
125
let doc = strip_mod ( copy doc) ;
123
126
let page = doc:: ItemPage ( doc:: ModTag ( doc) ) ;
124
- oldcomm :: send ( fold. ctxt . op , Some ( page) ) ;
127
+ fold. ctxt . op . send ( Some ( page) ) ;
125
128
}
126
129
127
130
doc
@@ -146,7 +149,7 @@ fn fold_nmod(
146
149
) -> doc:: NmodDoc {
147
150
let doc = fold:: default_seq_fold_nmod ( fold, doc) ;
148
151
let page = doc:: ItemPage ( doc:: NmodTag ( copy doc) ) ;
149
- oldcomm :: send ( fold. ctxt . op , Some ( page) ) ;
152
+ fold. ctxt . op . send ( Some ( page) ) ;
150
153
return doc;
151
154
}
152
155
0 commit comments