the following snippet works on v 2.12.4 and fails on v 2.12.6
https://github.com/random-maven/scalor-maven-plugin/blob/master/demo/src/macro/scala/meta/MacroContext.scala
trait MacroContext {
val c : Context
import c.universe._
def prefix( message : String ) = s"Macro demo: $message"
def info( message : String ) = c.info( c.enclosingPosition, prefix( message ), true )
def warn( message : String ) = c.warning( c.enclosingPosition, prefix( message ) )
def fail( message : String ) = c.abort( c.enclosingPosition, prefix( message ) )
@tailrec
final def extractName( tree : c.Tree ) : c.Name = tree match {
case Ident( name ) => name
case Select( _, name ) => name
case Function( _, body ) => extractName( body )
case Block( _, expr ) => extractName( expr )
case Apply( func, _ ) => extractName( func )
case TypeApply( func, _ ) => extractName( func )
case _ => fail( s"Unsupported expression: $tree" )
}
}
with trace
https://travis-ci.org/random-maven/scalor-maven-plugin/jobs/376348956#L4285
java.lang.UnsupportedOperationException: Macro demo: kp:genAsciiNames=null (source-/home/travis/build/random-maven/scalor-maven-plugin/demo/src/main/scala/kind/SystemProperty.scala,line-11,offset=155)
at scala.reflect.internal.ForwardingReporter.info0(Reporting.scala:130)
at scala.reflect.internal.ForwardingReporter.info0$(Reporting.scala:129)
at scala.tools.nsc.reporters.LimitingReporter.info0(LimitingReporter.scala:9)
at scala.tools.nsc.reporters.LimitingReporter.info0(LimitingReporter.scala:9)
at scala.tools.nsc.reporters.Reporter.info(Reporter.scala:20)
at scala.reflect.macros.contexts.FrontEnds.info(FrontEnds.scala:11)
at scala.reflect.macros.contexts.FrontEnds.info$(FrontEnds.scala:11)
at scala.reflect.macros.contexts.Context.info(Context.scala:6)
the following snippet works on v 2.12.4 and fails on v 2.12.6
https://github.com/random-maven/scalor-maven-plugin/blob/master/demo/src/macro/scala/meta/MacroContext.scala
with trace
https://travis-ci.org/random-maven/scalor-maven-plugin/jobs/376348956#L4285