From 48eda22835e58ec1f14f6333e444ccc8a32244b7 Mon Sep 17 00:00:00 2001 From: Kevin Atkinson Date: Fri, 10 Feb 2012 17:27:35 -0700 Subject: [PATCH] Bug fix to accept $ in 0th pos, (ie #ast{$(x) + ...}). Note: part from Niko Matsakis commit: rewrite assert to accept a $ in 0th pos. --- src/comp/syntax/ext/qquote.rs | 9 +++++---- src/test/run-pass/qquote.rs | 7 +++++++ 2 files changed, 12 insertions(+), 4 deletions(-) diff --git a/src/comp/syntax/ext/qquote.rs b/src/comp/syntax/ext/qquote.rs index 8899ff64f57..1d5022d1903 100644 --- a/src/comp/syntax/ext/qquote.rs +++ b/src/comp/syntax/ext/qquote.rs @@ -184,11 +184,12 @@ fn finish let sp = node.span(); let qcx = gather_anti_quotes(sp.lo, node); let cx = qcx; - let prev = 0u; - for {lo: lo, _} in cx.gather { - assert lo > prev; - prev = lo; + + // assert that the vector is sorted by position: + uint::range(1u, vec::len(cx.gather)) {|i| + assert cx.gather[i-1u].lo < cx.gather[i].lo; } + let str2 = ""; enum state {active, skip(uint), blank}; let state = active; diff --git a/src/test/run-pass/qquote.rs b/src/test/run-pass/qquote.rs index ef10f03129b..46330d119b6 100644 --- a/src/test/run-pass/qquote.rs +++ b/src/test/run-pass/qquote.rs @@ -81,6 +81,13 @@ fn main() { let x = #ast{1}; let test1 = #ast{1+$(x)}; check_pp(test1, pprust::print_expr, "1 + 1"); + + let test2 = #ast{$(x)+1}; + check_pp(test2, pprust::print_expr, "1 + 1"); + + let y = #ast{2}; + let test3 = #ast{$(x) + $(y)}; + check_pp(test3, pprust::print_expr, "1 + 2"); } fn check_pp(expr: T, f: fn(pprust::ps, T), expect: str) {