@@ -125,6 +125,14 @@ fn pieces_to_expr(vec[piece] pieces, vec[@ast.expr] args) -> @ast.expr {
125
125
ret sp_callexpr;
126
126
}
127
127
128
+ fn make_conv_call ( common . span sp, str conv_type ,
129
+ @ast. expr arg ) -> @ast . expr {
130
+ auto fname = "conv_" + conv_type;
131
+ let vec[ str] path = vec ( "std" , "ExtFmt" , "RT" , fname) ;
132
+ let vec[ @ast. expr] args = vec ( arg) ;
133
+ ret make_call( arg. span , path, args) ;
134
+ }
135
+
128
136
fn make_new_conv ( conv cnv, @ast. expr arg ) -> @ast . expr {
129
137
130
138
auto unsupported = "conversion not supported in #fmt string" ;
@@ -168,26 +176,18 @@ fn pieces_to_expr(vec[piece] pieces, vec[@ast.expr] args) -> @ast.expr {
168
176
case ( ty_int ( ?sign) ) {
169
177
alt ( sign) {
170
178
case ( signed) {
171
- let vec[ str] path = vec ( "std" , "ExtFmt" , "RT" , "int_to_str" ) ;
172
- let vec[ @ast. expr] args = vec ( arg) ;
173
- ret make_call( arg. span , path, args) ;
179
+ ret make_conv_call ( arg. span , "int" , arg) ;
174
180
}
175
181
case ( unsigned) {
176
- let vec[ str] path = vec ( "std" , "ExtFmt" , "RT" , "int_to_str" ) ;
177
- let vec[ @ast. expr] args = vec ( arg) ;
178
- ret make_call( arg. span , path, args) ;
182
+ ret make_conv_call ( arg. span , "uint" , arg) ;
179
183
}
180
184
}
181
185
}
182
186
case ( ty_bool) {
183
- let vec[ str] path = vec ( "std" , "ExtFmt" , "RT" , "bool_to_str" ) ;
184
- let vec[ @ast. expr] args = vec ( arg) ;
185
- ret make_call( arg. span , path, args) ;
187
+ ret make_conv_call ( arg. span , "bool" , arg) ;
186
188
}
187
189
case ( ty_char) {
188
- let vec[ str] path = vec ( "std" , "ExtFmt" , "RT" , "char_to_str" ) ;
189
- let vec[ @ast. expr] args = vec ( arg) ;
190
- ret make_call( arg. span , path, args) ;
190
+ ret make_conv_call ( arg. span , "char" , arg) ;
191
191
}
192
192
case ( _) {
193
193
log unsupported;
0 commit comments