Scala квазиквота unlifting не компилируется в IntelliJ?
Возможно, я делаю что-то не так, но я следую документации здесь, https://docs.scala-lang.org/overviews/quasiquotes/unlifting.html
который говорит
val q"${left: Int} + ${right: Int}" = q"2 + 2"
left: Int = 2
right: Int = 2
Поэтому я пишу такой код, и он не компилируется в IntelliJ. Это говорит мне, что оба left
а также right
имеют тип Trees#Tree
, Документация неверна или есть какая-то другая проблема? IntelliJ не может это скомпилировать, но sbt может?
Мой пример кода:
package com.example.macros
import scala.reflect.macros.blackbox
object Quasiquotes1 {
def matchLiteralInt(val c: blackbox.Context)(iexpr: c.Expr[Int]): Tree = {
import c.universe._
// This is the example from https://docs.scala-lang.org/overviews/quasiquotes/unlifting.html,
// and it does not compile.
val q"${left: Int} + ${right: Int}" = q"2 + 2"
// Extract the literal integer from the tree.
val q"${x: Int}" = iexpr.tree // does not compile either
iexpr.tree match {
case q"${x: Int}" => ??? // does not compile
}
iexpr
}
}