From ce85b9eb7be9a964460a71c8b30e35693df07340 Mon Sep 17 00:00:00 2001 From: Brian Anderson Date: Mon, 11 Apr 2011 20:21:28 -0400 Subject: Make ExtFmt call its own functions instead of others defined in std --- src/comp/front/extfmt.rs | 10 ++++------ src/lib/ExtFmt.rs | 11 +++++++++++ 2 files changed, 15 insertions(+), 6 deletions(-) (limited to 'src') diff --git a/src/comp/front/extfmt.rs b/src/comp/front/extfmt.rs index aecd7934..f0ae31dc 100644 --- a/src/comp/front/extfmt.rs +++ b/src/comp/front/extfmt.rs @@ -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); } } diff --git a/src/lib/ExtFmt.rs b/src/lib/ExtFmt.rs index f7487eec..144406cf 100644 --- a/src/lib/ExtFmt.rs +++ b/src/lib/ExtFmt.rs @@ -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); + } +} -- cgit v1.2.3