Make ExtFmt call its own functions instead of others defined in std

This commit is contained in:
Brian Anderson 2011-04-11 20:21:28 -04:00
parent d4d0144bcf
commit ce85b9eb7b
2 changed files with 15 additions and 6 deletions

View file

@ -168,15 +168,13 @@ fn pieces_to_expr(vec[piece] pieces, vec[@ast.expr] args) -> @ast.expr {
case (ty_int(?sign)) {
alt (sign) {
case (signed) {
let vec[str] path = vec("std", "_int", "to_str");
auto radix_expr = make_new_uint(arg.span, 10u);
let vec[@ast.expr] args = vec(arg, radix_expr);
let vec[str] path = vec("std", "ExtFmt", "RT", "int_to_str");
let vec[@ast.expr] args = vec(arg);
ret make_call(arg.span, path, args);
}
case (unsigned) {
let vec[str] path = vec("std", "_uint", "to_str");
auto radix_expr = make_new_uint(arg.span, 10u);
let vec[@ast.expr] args = vec(arg, radix_expr);
let vec[str] path = vec("std", "ExtFmt", "RT", "int_to_str");
let vec[@ast.expr] args = vec(arg);
ret make_call(arg.span, path, args);
}
}

View file

@ -258,3 +258,14 @@ fn parse_type(str s, uint i, uint lim) -> tup(ty, uint) {
ret tup(t, i + 1u);
}
// Functions used by the fmt extension at runtime
mod RT {
fn int_to_str(int i) -> str {
ret _int.to_str(i, 10u);
}
fn uint_to_str(uint u) -> str {
ret _uint.to_str(u, 10u);
}
}