diff options
| author | Brian Anderson <[email protected]> | 2011-04-11 21:55:03 -0400 |
|---|---|---|
| committer | Brian Anderson <[email protected]> | 2011-04-11 21:55:03 -0400 |
| commit | 73eecbd0cad2e4d16a6a2d0aa197e3bb60f93b1f (patch) | |
| tree | cc461115b1be7272fdb7c7f0d00c5a6cf0ad06d6 /src | |
| parent | Add support for bool, char to extfmt. (diff) | |
| download | rust-73eecbd0cad2e4d16a6a2d0aa197e3bb60f93b1f.tar.xz rust-73eecbd0cad2e4d16a6a2d0aa197e3bb60f93b1f.zip | |
Factor out creation of calls into ExtFmt.RT
Diffstat (limited to 'src')
| -rw-r--r-- | src/comp/front/extfmt.rs | 24 | ||||
| -rw-r--r-- | src/lib/ExtFmt.rs | 8 |
2 files changed, 16 insertions, 16 deletions
diff --git a/src/comp/front/extfmt.rs b/src/comp/front/extfmt.rs index 6004bc90..1884813d 100644 --- a/src/comp/front/extfmt.rs +++ b/src/comp/front/extfmt.rs @@ -125,6 +125,14 @@ fn pieces_to_expr(vec[piece] pieces, vec[@ast.expr] args) -> @ast.expr { ret sp_callexpr; } + fn make_conv_call(common.span sp, str conv_type, + @ast.expr arg) -> @ast.expr { + auto fname = "conv_" + conv_type; + let vec[str] path = vec("std", "ExtFmt", "RT", fname); + let vec[@ast.expr] args = vec(arg); + ret make_call(arg.span, path, args); + } + fn make_new_conv(conv cnv, @ast.expr arg) -> @ast.expr { 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 { case (ty_int(?sign)) { alt (sign) { case (signed) { - 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); + ret make_conv_call(arg.span, "int", arg); } case (unsigned) { - 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); + ret make_conv_call(arg.span, "uint", arg); } } } case (ty_bool) { - let vec[str] path = vec("std", "ExtFmt", "RT", "bool_to_str"); - let vec[@ast.expr] args = vec(arg); - ret make_call(arg.span, path, args); + ret make_conv_call(arg.span, "bool", arg); } case (ty_char) { - let vec[str] path = vec("std", "ExtFmt", "RT", "char_to_str"); - let vec[@ast.expr] args = vec(arg); - ret make_call(arg.span, path, args); + ret make_conv_call(arg.span, "char", arg); } case (_) { log unsupported; diff --git a/src/lib/ExtFmt.rs b/src/lib/ExtFmt.rs index 7ef91605..e08de7ee 100644 --- a/src/lib/ExtFmt.rs +++ b/src/lib/ExtFmt.rs @@ -264,15 +264,15 @@ mod CT { // Functions used by the fmt extension at runtime mod RT { - fn int_to_str(int i) -> str { + fn conv_int(int i) -> str { ret _int.to_str(i, 10u); } - fn uint_to_str(uint u) -> str { + fn conv_uint(uint u) -> str { ret _uint.to_str(u, 10u); } - fn bool_to_str(bool b) -> str { + fn conv_bool(bool b) -> str { if (b) { ret "true"; } else { @@ -280,7 +280,7 @@ mod RT { } } - fn char_to_str(char c) -> str { + fn conv_char(char c) -> str { ret _str.from_char(c); } } |