about summary refs log tree commit diff
diff options
context:
space:
mode:
authorDaniel Micay <danielmicay@gmail.com>2013-06-22 12:59:37 -0700
committerDaniel Micay <danielmicay@gmail.com>2013-06-22 12:59:37 -0700
commitdf166bae1ff583b39b4046becc87d28c9f90094b (patch)
treef671ebedd26d0b456118cc1b783f6bd33139c542
parentef07d7c46e80fc607df81d8d572fe0c9881a4f42 (diff)
parentdf626ea137af1436cb2e5eda19c145363db801c9 (diff)
downloadrust-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.rs5
-rw-r--r--src/test/run-pass/syntax-extension-fmt.rs3
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