Как добавить комментарии в квазицитате

Я пытаюсь вставить комментарии класса для квази кавычек, как это так

q"""
    package somePackage {
        /**
         * This is a comment
         */
        public class SomeClass {
        }
    }
"""

Но это исключение

Exception in thread "main" java.lang.IllegalArgumentException: not legal package stat: <type ?>
    at scala.reflect.internal.ReificationSupport$ReificationSupportImpl.mkPackageStat(ReificationSupport.scala:156)
    at scala.reflect.internal.ReificationSupport$ReificationSupportImpl.mkPackageStat(ReificationSupport.scala:11)
    at database.generate.jooq.JooqGenerate.generateDaos(JooqGenerate.scala:65)
    at database.generate.GenerateDao$.apply(GenerateDao.scala:25)
    at Test$.main(Test.scala:7)
    at Test.main(Test.scala)

1 ответ

Это работает для меня:

scala> import scala.reflect.runtime.universe._
import scala.reflect.runtime.universe._

scala> q"""
     | package somePackage {
     | /**
     | * This is a comment
     | */
     | class SomeClass()
     | }
     | """
res0: reflect.runtime.universe.PackageDef =
package somePackage {
  class SomeClass extends scala.AnyRef {
    def <init>() = {
      super.<init>();
      ()
    }
  }
}

scala>

scala>

Это то, что вы используете Java-класс в кавычках, что вызывает проблему?

Также проверьте, какую версию Scala вы используете

scala> util.Properties.versionString
res2: String = version 2.11.7

И учебник здесь: http://docs.scala-lang.org/overviews/quasiquotes/intro.html

Другие вопросы по тегам