diff options
| author | Daniel Micay <danielmicay@gmail.com> | 2013-06-22 12:59:37 -0700 |
|---|---|---|
| committer | Daniel Micay <danielmicay@gmail.com> | 2013-06-22 12:59:37 -0700 |
| commit | df166bae1ff583b39b4046becc87d28c9f90094b (patch) | |
| tree | f671ebedd26d0b456118cc1b783f6bd33139c542 | |
| parent | ef07d7c46e80fc607df81d8d572fe0c9881a4f42 (diff) | |
| parent | df626ea137af1436cb2e5eda19c145363db801c9 (diff) | |
| download | rust-df166bae1ff583b39b4046becc87d28c9f90094b.tar.gz rust-df166bae1ff583b39b4046becc87d28c9f90094b.zip | |
Merge pull request #7227 from alexcrichton/issue-7218
Fix compiling empty fmt! strings
| -rw-r--r-- | src/libsyntax/ext/fmt.rs | 5 | ||||
| -rw-r--r-- | src/test/run-pass/syntax-extension-fmt.rs | 3 |
2 files changed, 8 insertions, 0 deletions
diff --git a/src/libsyntax/ext/fmt.rs b/src/libsyntax/ext/fmt.rs index 74496ac5359..4425d54987c 100644 --- a/src/libsyntax/ext/fmt.rs +++ b/src/libsyntax/ext/fmt.rs @@ -249,6 +249,11 @@ fn pieces_to_expr(cx: @ExtCtxt, sp: span, } } + /* Short circuit an easy case up front (won't work otherwise) */ + if pieces.len() == 0 { + return cx.expr_str_uniq(args[0].span, @""); + } + let fmt_sp = args[0].span; let mut n = 0u; let nargs = args.len(); diff --git a/src/test/run-pass/syntax-extension-fmt.rs b/src/test/run-pass/syntax-extension-fmt.rs index 67573fce2cd..fe7b510cfe7 100644 --- a/src/test/run-pass/syntax-extension-fmt.rs +++ b/src/test/run-pass/syntax-extension-fmt.rs @@ -58,6 +58,9 @@ fn part1() { test(fmt!("%x", 0xffffffff_u), ~"ffffffff"); test(fmt!("%o", 0xffffffff_u), ~"37777777777"); test(fmt!("%t", 0xffffffff_u), ~"11111111111111111111111111111111"); + + // Don't result in a compilation error + test(fmt!(""), ~""); } fn part2() { // Widths |
