Skip to content

Macro: switch v 2.12.4 -> v 2.12.6 breaks c.info #10869

@Andrei-Pozolotin

Description

@Andrei-Pozolotin

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)

Metadata

Metadata

Assignees

Labels

Type

No type

Projects

No projects

Milestone

Relationships

None yet

Development

No branches or pull requests

Issue actions