Skip to content

Commit 081e94f

Browse files
committed
---
yaml --- r: 2144 b: refs/heads/master c: 869b28e h: refs/heads/master v: v3
1 parent 4b62981 commit 081e94f

File tree

3 files changed

+36
-24
lines changed

3 files changed

+36
-24
lines changed

[refs]

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,2 +1,2 @@
11
---
2-
refs/heads/master: d4f1a48111673c158d1c9493be4a87eaa24064b1
2+
refs/heads/master: 869b28e393f1b87723c9186097bd6acd16366fbd

trunk/src/lib/ExtFmt.rs

Lines changed: 24 additions & 22 deletions
Original file line numberDiff line numberDiff line change
@@ -467,33 +467,35 @@ mod RT {
467467
auto uwidth = width as uint;
468468
auto strlen = _str.char_len(s);
469469
if (strlen < uwidth) {
470-
auto zero_padding = false;
471-
auto signed = false;
472470
auto padchar = ' ';
473-
alt (pt) {
474-
case (pad_nozero) {
475-
// fallthrough
476-
}
477-
case (pad_signed) {
478-
signed = true;
479-
if (have_flag(cv.flags, flag_left_zero_pad)) {
480-
padchar = '0';
481-
zero_padding = true;
482-
}
483-
}
484-
case (pad_unsigned) {
485-
if (have_flag(cv.flags, flag_left_zero_pad)) {
486-
padchar = '0';
487-
zero_padding = true;
488-
}
489-
}
490-
}
491-
492471
auto diff = uwidth - strlen;
493-
auto padstr = str_init_elt(padchar, diff);
494472
if (have_flag(cv.flags, flag_left_justify)) {
473+
auto padstr = str_init_elt(padchar, diff);
495474
ret s + padstr;
496475
} else {
476+
auto zero_padding = false;
477+
auto signed = false;
478+
alt (pt) {
479+
case (pad_nozero) {
480+
// fallthrough
481+
}
482+
case (pad_signed) {
483+
signed = true;
484+
if (have_flag(cv.flags, flag_left_zero_pad)) {
485+
padchar = '0';
486+
zero_padding = true;
487+
}
488+
}
489+
case (pad_unsigned) {
490+
if (have_flag(cv.flags, flag_left_zero_pad)) {
491+
padchar = '0';
492+
zero_padding = true;
493+
}
494+
}
495+
}
496+
497+
auto padstr = str_init_elt(padchar, diff);
498+
497499
// This is completely heinous. If we have a signed
498500
// value then potentially rip apart the intermediate
499501
// result and insert some zeros. It may make sense

trunk/src/test/run-pass/syntax-extension-fmt.rs

Lines changed: 11 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -139,7 +139,17 @@ fn main() {
139139
test(#fmt("%05s", "test"), " test");
140140
test(#fmt("%05b", true), " true");
141141

142-
// TODO: Left-justify overrides 0-padding
142+
// Left-justify overrides 0-padding
143+
test(#fmt("%-05d", 0), "0 ");
144+
test(#fmt("%-05d", 1), "1 ");
145+
test(#fmt("%-05d", -1), "-1 ");
146+
test(#fmt("%-05u", 1u), "1 ");
147+
test(#fmt("%-05x", 127u), "7f ");
148+
test(#fmt("%-05X", 127u), "7F ");
149+
test(#fmt("%-05t", 3u), "11 ");
150+
test(#fmt("%-05s", "test"), "test ");
151+
test(#fmt("%-05b", true), "true ");
152+
143153
// TODO: Precision overrides 0-padding
144154
// TODO: Padding and +
145155
// TODO: Padding and ' '

0 commit comments

Comments
 (0)