aboutsummaryrefslogtreecommitdiff
path: root/tests/pending/run/macro-range/Expansion_Impossible_2.scala
diff options
context:
space:
mode:
Diffstat (limited to 'tests/pending/run/macro-range/Expansion_Impossible_2.scala')
-rw-r--r--tests/pending/run/macro-range/Expansion_Impossible_2.scala53
1 files changed, 0 insertions, 53 deletions
diff --git a/tests/pending/run/macro-range/Expansion_Impossible_2.scala b/tests/pending/run/macro-range/Expansion_Impossible_2.scala
deleted file mode 100644
index b3c2fa348..000000000
--- a/tests/pending/run/macro-range/Expansion_Impossible_2.scala
+++ /dev/null
@@ -1,53 +0,0 @@
-import scala.reflect.macros.blackbox.Context
-
-object Impls {
- def foreach(c: Context)(f: c.Expr[Int => Unit]): c.Expr[Unit] = {
- // todo. read the compiler config and print if -Ydebug is set
- //println("macro-expand, _this = "+ _this)
- object utils extends Utils { val context: c.type = c }
- import utils._
- import c.universe._
- import Flag._
-
- val initName = termNames.CONSTRUCTOR
- // Either:
- // scala"{ var i = $low; val h = $hi; while (i < h) { $f(i); i = i + 1 } }
- // or:
- // scala"($_this: RangeDefault).foreach($f)"
- c.Expr(c.prefix.tree match {
- case Apply(Select(New(tpt), initName), List(lo, hi)) if tpt.symbol.fullName == "Range" =>
- val iname = TermName("$i")
- val hname = TermName("$h")
- def iref = Ident(iname)
- def href = Ident(hname)
- val labelname = TermName("$while")
- val cond = makeBinop(iref, "$less", href)
- val body = Block(
- List(makeApply(f.tree, List(iref))),
- Assign(iref, makeBinop(iref, "$plus", Literal(Constant(1)))))
- val generated =
- Block(
- List(
- ValDef(Modifiers(MUTABLE), iname, TypeTree(), lo),
- ValDef(Modifiers(), hname, TypeTree(), hi)),
- makeWhile(labelname, cond, body))
- // todo. read the compiler config and print if -Ydebug is set
- //tools.nsc.util.trace("generated: ")(generated)
- generated
- case _ =>
- Apply(
- Select(
- Typed(c.prefix.tree, Ident(TypeName("RangeDefault"))),
- TermName("foreach")),
- List(f.tree))
- })
- }
-}
-
-class Range(val from: Int, val to: Int) extends RangeDefault {
- override def foreach(f: Int => Unit): Unit = macro Impls.foreach
-}
-
-object Test extends dotty.runtime.LegacyApp {
- new Range(1, 10) foreach println
-} \ No newline at end of file