@@ -81,192 +81,6 @@ fn local_rhs_span(l: @ast::local, def: span) -> span {
8181 alt l. node . init { some ( i) { ret i. expr . span ; } _ { ret def; } }
8282}
8383
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-
27084fn is_main_name ( path : [ ast:: ident ] ) -> bool {
27185 str:: eq ( option:: get ( std:: vec:: last ( path) ) , "main" )
27286}
0 commit comments