@@ -22,7 +22,8 @@ fn fold_mod(fold: fold::fold<astsrv::srv>, doc: doc::moddoc) -> doc::moddoc {
22
22
let doc = fold:: default_seq_fold_mod ( fold, doc) ;
23
23
~{
24
24
mods: doc:: modlist ( exported_mods ( fold. ctxt , doc) ) ,
25
- fns: doc:: fnlist ( exported_fns ( fold. ctxt , doc) )
25
+ fns: doc:: fnlist ( exported_fns ( fold. ctxt , doc) ) ,
26
+ consts: doc:: constlist ( exported_consts ( fold. ctxt , doc) )
26
27
with * doc
27
28
}
28
29
}
@@ -43,6 +44,14 @@ fn exported_fns(srv: astsrv::srv, doc: doc::moddoc) -> [doc::fndoc] {
43
44
)
44
45
}
45
46
47
+ fn exported_consts ( srv : astsrv:: srv , doc : doc:: moddoc ) -> [ doc:: constdoc ] {
48
+ exported_things (
49
+ srv, doc,
50
+ exported_consts_from_crate,
51
+ exported_consts_from_mod
52
+ )
53
+ }
54
+
46
55
fn exported_things < T > (
47
56
srv : astsrv:: srv ,
48
57
doc : doc:: moddoc ,
@@ -84,6 +93,20 @@ fn exported_fns_from_mod(
84
93
exported_fns_from ( srv, doc, bind is_exported_from_mod ( _, doc. id , _) )
85
94
}
86
95
96
+ fn exported_consts_from_crate (
97
+ srv : astsrv:: srv ,
98
+ doc : doc:: moddoc
99
+ ) -> [ doc:: constdoc ] {
100
+ exported_consts_from ( srv, doc, is_exported_from_crate)
101
+ }
102
+
103
+ fn exported_consts_from_mod (
104
+ srv : astsrv:: srv ,
105
+ doc : doc:: moddoc
106
+ ) -> [ doc:: constdoc ] {
107
+ exported_consts_from ( srv, doc, bind is_exported_from_mod ( _, doc. id , _) )
108
+ }
109
+
87
110
fn exported_fns_from (
88
111
srv : astsrv:: srv ,
89
112
doc : doc:: moddoc ,
@@ -112,6 +135,20 @@ fn exported_mods_from(
112
135
}
113
136
}
114
137
138
+ fn exported_consts_from (
139
+ srv : astsrv:: srv ,
140
+ doc : doc:: moddoc ,
141
+ is_exported : fn ( astsrv:: srv , str ) -> bool
142
+ ) -> [ doc:: constdoc ] {
143
+ vec:: filter_map ( * doc. consts ) { |doc|
144
+ if is_exported ( srv, doc. name ) {
145
+ some ( doc)
146
+ } else {
147
+ none
148
+ }
149
+ }
150
+ }
151
+
115
152
fn is_exported_from_mod (
116
153
srv : astsrv:: srv ,
117
154
mod_id : doc:: ast_id ,
@@ -149,21 +186,21 @@ fn should_prune_unexported_fns() {
149
186
}
150
187
151
188
#[ test]
152
- fn should_prune_unexported_modules ( ) {
153
- let source = "mod a { export a; mod a { } mod b { } }" ;
189
+ fn should_prune_unexported_fns_from_top_mod ( ) {
190
+ let source = "export a; fn a() { } fn b() { }" ;
154
191
let srv = astsrv:: mk_srv_from_str ( source) ;
155
192
let doc = extract:: from_srv ( srv, "" ) ;
156
193
let doc = run ( srv, doc) ;
157
- assert vec:: len ( * doc. topmod . mods [ 0 ] . mods ) == 1 u;
194
+ assert vec:: len ( * doc. topmod . fns ) == 1 u;
158
195
}
159
196
160
197
#[ test]
161
- fn should_prune_unexported_fns_from_top_mod ( ) {
162
- let source = "export a; fn a() { } fn b() { }" ;
198
+ fn should_prune_unexported_modules ( ) {
199
+ let source = "mod a { export a; mod a { } mod b { } }" ;
163
200
let srv = astsrv:: mk_srv_from_str ( source) ;
164
201
let doc = extract:: from_srv ( srv, "" ) ;
165
202
let doc = run ( srv, doc) ;
166
- assert vec:: len ( * doc. topmod . fns ) == 1 u;
203
+ assert vec:: len ( * doc. topmod . mods [ 0 ] . mods ) == 1 u;
167
204
}
168
205
169
206
#[ test]
@@ -174,3 +211,23 @@ fn should_prune_unexported_modules_from_top_mod() {
174
211
let doc = run ( srv, doc) ;
175
212
assert vec:: len ( * doc. topmod . mods ) == 1 u;
176
213
}
214
+
215
+ #[ test]
216
+ fn should_prune_unexported_consts ( ) {
217
+ let source = "mod a { export a; \
218
+ const a: bool = true; \
219
+ const b: bool = true; }";
220
+ let srv = astsrv:: mk_srv_from_str ( source) ;
221
+ let doc = extract:: from_srv ( srv, "" ) ;
222
+ let doc = run ( srv, doc) ;
223
+ assert vec:: len ( * doc. topmod . mods [ 0 ] . consts ) == 1 u;
224
+ }
225
+
226
+ #[ test]
227
+ fn should_prune_unexported_consts_from_top_mod ( ) {
228
+ let source = "export a; const a: bool = true; const b: bool = true;" ;
229
+ let srv = astsrv:: mk_srv_from_str ( source) ;
230
+ let doc = extract:: from_srv ( srv, "" ) ;
231
+ let doc = run ( srv, doc) ;
232
+ assert vec:: len ( * doc. topmod . consts ) == 1 u;
233
+ }
0 commit comments