@@ -81,192 +81,6 @@ fn local_rhs_span(l: @ast::local, def: span) -> span {
81
81
alt l. node . init { some ( i) { ret i. expr . span ; } _ { ret def; } }
82
82
}
83
83
84
- fn lit_is_numeric ( l : @ast:: lit ) -> bool {
85
- alt l. node {
86
- ast:: lit_int ( _) | ast:: lit_char ( _) | ast:: lit_uint ( _) |
87
- ast:: lit_mach_int ( _, _) | ast:: lit_float ( _) | ast:: lit_mach_float ( _, _) {
88
- true
89
- }
90
- _ { false }
91
- }
92
- }
93
-
94
- fn lit_type_eq ( l : @ast:: lit , m : @ast:: lit ) -> bool {
95
- alt l. node {
96
- ast:: lit_str ( _) {
97
- alt m. node { ast:: lit_str ( _) { true } _ { false } }
98
- }
99
- ast:: lit_char ( _) {
100
- alt m. node { ast:: lit_char ( _) { true } _ { false } }
101
- }
102
- ast:: lit_int ( _) {
103
- alt m. node { ast:: lit_int ( _) { true } _ { false } }
104
- }
105
- ast:: lit_uint ( _) {
106
- alt m. node { ast:: lit_uint ( _) { true } _ { false } }
107
- }
108
- ast:: lit_mach_int ( _, _) {
109
- alt m. node { ast:: lit_mach_int ( _, _) { true } _ { false } }
110
- }
111
- ast:: lit_float ( _) {
112
- alt m. node { ast:: lit_float ( _) { true } _ { false } }
113
- }
114
- ast:: lit_mach_float ( _, _) {
115
- alt m. node { ast:: lit_mach_float ( _, _) { true } _ { false } }
116
- }
117
- ast:: lit_nil. {
118
- alt m . node { ast:: lit_nil. { true } _ { false } }
119
- }
120
- ast:: lit_bool ( _) {
121
- alt m. node { ast:: lit_bool ( _) { true } _ { false } }
122
- }
123
- }
124
- }
125
-
126
- fn lit_in_range ( l : @ast:: lit , m1 : @ast:: lit , m2 : @ast:: lit ) -> bool {
127
- alt lits_to_range ( m1, m2) {
128
- irange ( i1, i2) {
129
- alt l. node {
130
- ast:: lit_int ( i3) | ast:: lit_mach_int ( _, i3) {
131
- i3 >= min ( i1, i2) && i3 <= max ( i1, i2)
132
- }
133
- _ { fail }
134
- }
135
- }
136
- urange ( u1, u2) {
137
- alt l. node {
138
- ast:: lit_uint ( u3) {
139
- u3 >= min ( u1, u2) && u3 <= max ( u1, u2)
140
- }
141
- _ { fail }
142
- }
143
- }
144
- crange ( c1, c2) {
145
- alt l. node {
146
- ast:: lit_char ( c3) {
147
- ( c3 as uint ) >= min ( c1 as uint , c2 as uint ) &&
148
- ( c3 as uint ) <= max ( c1 as uint , c2 as uint )
149
- }
150
- _ { fail }
151
- }
152
- }
153
- frange ( f1, f2) {
154
- alt l. node {
155
- ast:: lit_float ( f3) | ast:: lit_mach_float ( _, f3) {
156
- std:: float:: from_str ( f3) >= min ( f1, f2) &&
157
- std:: float:: from_str ( f3) <= max ( f1, f2)
158
- }
159
- _ { fail }
160
- }
161
- }
162
- }
163
- }
164
-
165
- fn ranges_overlap < copy T > ( a1 : T , a2 : T , b1 : T , b2 : T ) -> bool {
166
- let min1 = min ( a1, a2) ;
167
- let max1 = max ( a1, a2) ;
168
- let min2 = min ( b1, b2) ;
169
- let max2 = max ( b1, b2) ;
170
- ret ( min1 >= min2 && max1 <= max2) || ( min1 <= min2 && max1 >= min2) ||
171
- ( min1 >= min2 && min1 <= max2) || ( max1 >= min2 && max1 <= max2) ;
172
- }
173
-
174
- fn lit_ranges_overlap ( a1 : @ast:: lit , a2 : @ast:: lit ,
175
- b1 : @ast:: lit , b2 : @ast:: lit ) -> bool {
176
- alt lits_to_range ( a1, a2) {
177
- irange ( i1, i2) {
178
- alt lits_to_range ( b1, b2) {
179
- irange ( i3, i4) { ranges_overlap ( i1, i2, i3, i4) }
180
- _ { fail }
181
- }
182
- }
183
- urange ( u1, u2) {
184
- alt lits_to_range ( b1, b2) {
185
- urange ( u3, u4) { ranges_overlap ( u1, u2, u3, u4) }
186
- _ { fail }
187
- }
188
- }
189
- crange ( c1, c2) {
190
- alt lits_to_range ( b1, b2) {
191
- crange ( c3, c4) { ranges_overlap ( c1, c2, c3, c4) }
192
- _ { fail }
193
- }
194
- }
195
- frange ( f1, f2) {
196
- alt lits_to_range ( b1, b2) {
197
- frange ( f3, f4) { ranges_overlap ( f1, f2, f3, f4) }
198
- _ { fail }
199
- }
200
- }
201
- }
202
- }
203
-
204
- tag range {
205
- irange( int, int) ;
206
- urange ( uint, uint) ;
207
- crange ( char, char) ;
208
- frange ( float, float) ;
209
- }
210
-
211
- fn lits_to_range ( l : @ast:: lit , r : @ast:: lit ) -> range {
212
- alt l. node {
213
- ast:: lit_int ( i1) | ast:: lit_mach_int ( _, i1) {
214
- alt r. node { ast:: lit_int ( i2) { irange ( i1, i2) } _ { fail } }
215
- }
216
- ast:: lit_uint ( u1) {
217
- alt r. node { ast:: lit_uint ( u2) { urange ( u1, u2) } _ { fail } }
218
- }
219
- ast:: lit_char ( c1) {
220
- alt r. node { ast:: lit_char ( c2) { crange ( c1, c2) } _ { fail } }
221
- }
222
- ast:: lit_float ( f1) | ast:: lit_mach_float ( _, f1) {
223
- alt r. node { ast:: lit_float ( f2) | ast:: lit_mach_float ( _, f2) {
224
- frange ( std:: float:: from_str ( f1) , std:: float:: from_str ( f2) )
225
- }
226
- _ { fail } }
227
- }
228
- _ { fail }
229
- }
230
- }
231
-
232
- fn lit_eq ( l : @ast:: lit , m : @ast:: lit ) -> bool {
233
- alt l. node {
234
- ast:: lit_str ( s) {
235
- alt m. node { ast:: lit_str ( t) { ret s == t } _ { ret false; } }
236
- }
237
- ast:: lit_char ( c) {
238
- alt m. node { ast:: lit_char ( d) { ret c == d; } _ { ret false; } }
239
- }
240
- ast:: lit_int ( i) {
241
- alt m. node { ast:: lit_int ( j) { ret i == j; } _ { ret false; } }
242
- }
243
- ast:: lit_uint ( i) {
244
- alt m. node { ast:: lit_uint ( j) { ret i == j; } _ { ret false; } }
245
- }
246
- ast:: lit_mach_int ( _, i) {
247
- alt m. node {
248
- ast:: lit_mach_int ( _, j) { ret i == j; }
249
- _ { ret false; }
250
- }
251
- }
252
- ast:: lit_float ( s) {
253
- alt m. node { ast:: lit_float ( t) { ret s == t; } _ { ret false; } }
254
- }
255
- ast:: lit_mach_float ( _, s) {
256
- alt m. node {
257
- ast:: lit_mach_float ( _, t) { ret s == t; }
258
- _ { ret false; }
259
- }
260
- }
261
- ast:: lit_nil. {
262
- alt m . node { ast:: lit_nil. { ret true ; } _ { ret false; } }
263
- }
264
- ast:: lit_bool ( b) {
265
- alt m. node { ast:: lit_bool ( c) { ret b == c; } _ { ret false; } }
266
- }
267
- }
268
- }
269
-
270
84
fn is_main_name ( path : [ ast:: ident ] ) -> bool {
271
85
str:: eq ( option:: get ( std:: vec:: last ( path) ) , "main" )
272
86
}
0 commit comments