Skip to content

Instantly share code, notes, and snippets.

val a = 5
val c = 3
c = 5
if (3 == 17) {
val c = {
val d = "hey"
22
}
}
else
def apply = (focus{case _: Defn.Def => true} andThen
collect[Set]{
case Term.Assign(b: Term.Name, _) => b
}.topDown feed { assigns =>
transform{
case t @ Defn.Var(a, (b: Term.Name) :: Nil, c, Some(d)) if !assigns.contains(b) =>
Defn.Val(a, b :: Nil, c, d) andCollect message(b, t)
}.topDown
}
).topDownBreak
(collect {
case t @ Defn.Val(_, _, None, _) =>
message(t, t.getType)
case t @ Defn.Def(_, _, _, _, None, _) =>
message(t, t.getType)
} <~
update {
case t @ Defn.Val(mods, pats, None, rhs) =>
Defn.Val(mods, pats, Some(t.getType), rhs)
} +
import scala.reflect.ClassTag
trait AllowedTransfomation[I, O]
trait ToType[A, B]
trait Monoid[A]{
def zero : A
def append(a: A, b: A): A
}
import scala.reflect.ClassTag
trait AllowedTransfomation[I, O]
trait ToType[A, B]
trait Monoid[A]{
def zero : A
def append(a: A, b: A): A
}

Code used for the the following examples.

val tree = 
    q"""
       val a = 5
       val c = 3
       c = 5
       if (3 == 17) {
        val c = 1
 }
import org.scalameter._
import org.scalameter.execution.LocalExecutor
import org.scalameter.reporting.LoggingReporter
object SwitchBenchmark extends PerformanceTest {
lazy val executor = LocalExecutor(
new Executor.Warmer.Default,
...
InvariantSuite:
- more informative error messages *** FAILED ***
"...that x.>(3) is false[]
where x = 2" did not equal "...that x.>(3) is false[
where x = 2" (InvariantSuite.scala:12)
ShowSuite:
...
- string literals with newlines and double quotes *** FAILED ***
"... None, Lit.String("\[r\n x\r]\n ")), Defn.Va..." did no
AdtSuite:
ReflectionSuite:
- root
- If
- Term.Name
LitSuite:
- true
- false
- 42
- 42L
val collectDef =
collectIn[Set]{
case t: Defn.Def if(!ignore(t)) => t.getName
}.down feed {defs =>
collect{
case Term.Assign(b: Term.Name, _) if(defs.contains(b)) => warning(b)
}.down
}