Make ExtFmt call its own functions instead of others defined in std
This commit is contained in:
parent
d4d0144bcf
commit
ce85b9eb7b
2 changed files with 15 additions and 6 deletions
|
|
@ -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);
|
||||
}
|
||||
}
|
||||
|
|
|
|||
|
|
@ -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);
|
||||
}
|
||||
}
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue