scala> val q"for (a <- as; if $cond; ..$enumz) bar" = q"for (a <- as; if foo; b <- bs) bar"
Adhoc(List(BOF (0..0), for (0..3), (3..4), ( (4..5), a (5..6), (6..7), <- (7..9), (9..10), as (10..12), ; (12..13), (13..14), if (14..16), (16..17), foo (17..20), ; (20..21), (21..22), b (22..23), (23..24), <- (24..26), (26..27), bs (27..29), ) (29..30), (30..31), bar (31..34), EOF (34..34)))
Adhoc(List(BOF (0..0), for (0..3), (3..4), ( (4..5), a (5..6), (6..7), <- (7..9), (9..10), as (10..12), ; (12..13), (13..14), if (14..16), (16..17), foo (17..20), ; (20..21), (21..22), b (22..23), (23..24), <- (24..26), (26..27), bs (27..29), ) (29..30), (30..31), bar (31..34), EOF (34..34)))
for (a <- as; if foo; b <- bs) bar
Term.For(List(Enumerator.Generator(Pat.Var.Term(Term.Name("a")), Term.Name("as")), Enumerator.Guard(Term.Name("foo")), Enumerator.Generator(Pat.Var.Term(Term.Name("b")), Term.Name("bs"))), Term.Name("bar"))
_root_.scala.meta.internal.ast.Term.For(_root_.scala.collection.immutable.Seq(_root_.scala.meta.internal.ast.Enumerator.Generator(_root_.scala.meta.internal.ast.Pat.Var.Term(_root_.scala.meta.internal.ast.Term.Name("a").copy(denot = _root_.scala.meta.internal.semantic.Denotation.Zero, typing = _root_.scala.meta.internal.semantic.Typing.Unknown, expansion = _root_.scala.meta.internal.semantic.Expansion.Identity)), _root_.scala.meta.internal.ast.Term.Name("as").copy(denot = _root_.scala.meta.internal.semantic.Denotation.Zero, typing = _root_.scala.meta.internal.semantic.Typing.Unknown, expansion = _root_.scala.meta.internal.semantic.Expansion.Identity)), _root_.scala.meta.internal.ast.Enumerator.Guard(_root_.scala.meta.internal.ast.Term.Name("foo").copy(denot = _root_.scala.meta.internal.semantic.Denotation.Zero, typing = _root_.scala.meta.internal.semantic.Typing.Unknown, expansion = _root_.scala.meta.internal.semantic.Expansion.Identity)), _root_.scala.meta.internal.ast.Enumerator.Generator(_root_.scala.meta.internal.ast.Pat.Var.Term(_root_.scala.meta.internal.ast.Term.Name("b").copy(denot = _root_.scala.meta.internal.semantic.Denotation.Zero, typing = _root_.scala.meta.internal.semantic.Typing.Unknown, expansion = _root_.scala.meta.internal.semantic.Expansion.Identity)), _root_.scala.meta.internal.ast.Term.Name("bs").copy(denot = _root_.scala.meta.internal.semantic.Denotation.Zero, typing = _root_.scala.meta.internal.semantic.Typing.Unknown, expansion = _root_.scala.meta.internal.semantic.Expansion.Identity))), _root_.scala.meta.internal.ast.Term.Name("bar").copy(denot = _root_.scala.meta.internal.semantic.Denotation.Zero, typing = _root_.scala.meta.internal.semantic.Typing.Unknown, expansion = _root_.scala.meta.internal.semantic.Expansion.Identity)).copy(typing = _root_.scala.meta.internal.semantic.Typing.Unknown, expansion = _root_.scala.meta.internal.semantic.Expansion.Identity)
Adhoc(List(BOF (0..0), for (0..3), (3..4), ( (4..5), a (5..6), (6..7), <- (7..9), (9..10), as (10..12), ; (12..13), (13..14), if (14..16), (16..17), $cond (0..5), ; (0..1), (1..2), .. (2..4), $enumz (0..6), ) (0..1), (1..2), bar (2..5), EOF (5..5)))
Adhoc(List(BOF (0..0), for (0..3), (3..4), ( (4..5), a (5..6), (6..7), <- (7..9), (9..10), as (10..12), ; (12..13), (13..14), if (14..16), (16..17), $cond (0..5), ; (0..1), (1..2), .. (2..4), $enumz (0..6), ) (0..1), (1..2), bar (2..5), EOF (5..5)))
for (a <- as; if $cond; ..$enumz) bar
Term.For(List(Enumerator.Generator(Pat.Var.Term(Term.Name("a")), Term.Name("as")), Enumerator.Guard(Term.Quasi(0, (quasiquote$macro$20$hole$0 @ _))), Enumerator.Generator.Quasi(1, Enumerator.Generator.Quasi(0, (quasiquote$macro$20$hole$1 @ _)))), Term.Name("bar"))
{
final class $anon extends scala.AnyRef {
def <init>() = {
super.<init>();
()
};
def unapply(input: _root_.scala.meta.Tree) = input match {
case _root_.scala.meta.internal.ast.Term.For($plus$colon(_root_.scala.meta.internal.ast.Enumerator.Generator(_root_.scala.meta.internal.ast.Pat.Var.Term(_root_.scala.meta.internal.ast.Term.Name("a")), _root_.scala.meta.internal.ast.Term.Name("as")), (quasiquote$macro$20$hole$1 @ _)), _root_.scala.meta.internal.ast.Term.Name("bar")) => scala.Tuple2(Unlift.unapply[_root_.scala.meta.Tree](quasiquote$macro$20$hole$0), Unlift.unapply[Seq[_root_.scala.meta.Tree]](quasiquote$macro$20$hole$1)) match {
case scala.Tuple2(_root_.scala.Some((quasiquote$macro$20$result$0 @ _)), _root_.scala.Some((quasiquote$macro$20$result$1 @ _))) => _root_.scala.Some(scala.Tuple2(quasiquote$macro$20$result$0, quasiquote$macro$20$result$1))
case _ => _root_.scala.None
}
case _ => _root_.scala.None
}
};
new $anon()
}.unapply(<unapply-selector>)
<console>:16: error: not found: value quasiquote$macro$20$hole$0
val q"for (a <- as; if $cond; ..$enumz) bar" = q"for (a <- as; if foo; b <- bs) bar"
^