7
7
Rustdoc from its non-sendableness."
8
8
) ] ;
9
9
10
+ import rustc:: driver:: session;
11
+ import rustc:: driver:: driver;
12
+ import rustc:: driver:: diagnostic;
10
13
import rustc:: syntax:: ast;
11
14
import rustc:: middle:: ast_map;
15
+ import rustc:: back:: link;
16
+ import rustc:: util:: filesearch;
17
+ import rustc:: front;
12
18
13
19
export ctxt;
14
20
export ctxt_handler;
@@ -29,29 +35,62 @@ type srv = {
29
35
} ;
30
36
31
37
fn mk_srv_from_str ( source : str ) -> srv {
38
+ let sess = build_session ( ) ;
32
39
{
33
- ctxt: build_ctxt ( parse:: from_str ( source) )
40
+ ctxt: build_ctxt ( sess , parse:: from_str_sess ( sess , source) )
34
41
}
35
42
}
36
43
37
44
fn mk_srv_from_file ( file : str ) -> srv {
45
+ let sess = build_session ( ) ;
38
46
{
39
- ctxt: build_ctxt ( parse:: from_file ( file) )
47
+ ctxt: build_ctxt ( sess , parse:: from_file_sess ( sess , file) )
40
48
}
41
49
}
42
50
43
- fn build_ctxt ( ast : @ast:: crate ) -> ctxt {
51
+ fn build_ctxt ( sess : session :: session , ast : @ast:: crate ) -> ctxt {
44
52
45
53
import rustc:: front:: config;
46
54
47
55
let ast = config:: strip_unconfigured_items ( ast) ;
56
+ let ast = front:: test:: modify_for_testing ( sess, ast) ;
57
+ let ast_map = ast_map:: map_crate ( * ast) ;
48
58
49
59
{
50
60
ast: ast,
51
- ast_map: ast_map:: map_crate ( * ast )
61
+ ast_map: ast_map,
52
62
}
53
63
}
54
64
65
+ fn build_session( ) -> session:: session {
66
+ let sopts: @session:: options = @{
67
+ crate_type: session:: lib_crate,
68
+ static : false ,
69
+ libcore: false ,
70
+ optimize: 0 u,
71
+ debuginfo: false ,
72
+ extra_debuginfo: false ,
73
+ verify: false ,
74
+ lint_opts: [ ] ,
75
+ save_temps: false ,
76
+ stats: false ,
77
+ time_passes: false ,
78
+ time_llvm_passes: false ,
79
+ output_type: link:: output_type_exe,
80
+ addl_lib_search_paths: [ ] ,
81
+ maybe_sysroot: none,
82
+ target_triple: driver:: host_triple ( ) ,
83
+ cfg: [ ] ,
84
+ test: false ,
85
+ parse_only: false ,
86
+ no_trans: false ,
87
+ do_gc: false ,
88
+ no_asm_comments: false ,
89
+ warn_unused_imports: false
90
+ } ;
91
+ driver:: build_session ( sopts, "." , diagnostic:: emit)
92
+ }
93
+
55
94
#[ test]
56
95
fn should_prune_unconfigured_items ( ) {
57
96
let source = "#[cfg(shut_up_and_leave_me_alone)]fn a() { }" ;
@@ -61,30 +100,55 @@ fn should_prune_unconfigured_items() {
61
100
}
62
101
}
63
102
103
+ #[ test]
104
+ #[ ignore]
105
+ fn srv_should_build_ast_map ( ) {
106
+ // FIXME
107
+ /*let source = "fn a() { }";
108
+ let srv = mk_srv_from_str(source);
109
+ exec(srv) {|ctxt|
110
+ assert ctxt.ast_map.size() != 0u
111
+ };*/
112
+ }
113
+
114
+ #[ test]
115
+ #[ ignore]
116
+ fn srv_should_build_reexport_map ( ) {
117
+ // FIXME
118
+ /*let source = "import a::b; export b; mod a { mod b { } }";
119
+ let srv = mk_srv_from_str(source);
120
+ exec(srv) {|ctxt|
121
+ assert ctxt.exp_map.size() != 0u
122
+ };*/
123
+ }
124
+
125
+ #[ test]
126
+ fn srv_should_resolve_external_crates ( ) {
127
+ let source = "use std;\
128
+ fn f() -> std::sha1::sha1 {\
129
+ std::sha1::mk_sha1() }";
130
+ // Just testing that resolve doesn't crash
131
+ mk_srv_from_str ( source) ;
132
+ }
133
+
134
+ #[ test]
135
+ fn srv_should_resolve_core_crate ( ) {
136
+ let source = "fn a() -> option { fail }" ;
137
+ // Just testing that resolve doesn't crash
138
+ mk_srv_from_str ( source) ;
139
+ }
140
+
64
141
fn exec < T > (
65
142
srv : srv ,
66
143
f : fn ~( ctxt : ctxt ) -> T
67
144
) -> T {
68
145
f ( srv. ctxt )
69
146
}
70
147
71
- #[ cfg( test) ]
72
- mod tests {
73
-
74
- #[ test]
75
- fn srv_should_build_ast_map ( ) {
76
- let source = "fn a() { }" ;
77
- let srv = mk_srv_from_str ( source) ;
78
- exec ( srv) { |ctxt|
79
- assert ctxt. ast_map . size ( ) != 0 u
80
- } ;
81
- }
82
-
83
- #[ test]
84
- fn srv_should_return_request_result ( ) {
85
- let source = "fn a() { }" ;
86
- let srv = mk_srv_from_str ( source) ;
87
- let result = exec ( srv) { |_ctxt| 1000 } ;
88
- assert result == 1000 ;
89
- }
90
- }
148
+ #[ test]
149
+ fn srv_should_return_request_result ( ) {
150
+ let source = "fn a() { }" ;
151
+ let srv = mk_srv_from_str ( source) ;
152
+ let result = exec ( srv) { |_ctxt| 1000 } ;
153
+ assert result == 1000 ;
154
+ }
0 commit comments