scala-macros

    3热度

    1回答

    我使用ORM模型的案例类。每个模型都有一个ID,但该ID不应公开访问。所以我有一个父特征 trait WithId { private var id: Long = 0 } 和大量的case类(模型)的继承了它现在 case class C1(a: Int, b: String) extends WithId case class C2(...) extends WithId

    2热度

    1回答

    定义Scala宏时,是否有符号或类型转换为树? 具体来说,该场景需要查找伴随对象上的文字。 在Scala代码,这看起来是这样的: class Fred(a: String) object Fred { val FredDescription = "hello" } 在宏我有机会获得弗雷德的WeakTypeTag,可以用它来获取访问的伴侣,它的类型签名: context.univ

    1热度

    1回答

    假设我有一个宏实现 def testImpl[T](c:Context)(implicit wtt:c.WeakTypeTag[T]):c.Tree = { import c.universe._ def info(msg: Any) = c.info(c.enclosingPosition, msg.toString, true) val parameter =

    2热度

    1回答

    假设我有两个宏观注解类,后扩张期间他们的字段定义,一个依赖于其它: @Annotation case class A(i: Int) @Annotation case class B(a: A) 我需要AB之前张开,但顺序他们的定义并不能确保。 例如,在一个不相关的编译单元到B的引用作为一个类型参数的一个对象,如: 在一个文件中,而在另一个class Y{Z[B]}class X{val b =

    0热度

    1回答

    这放气和地图位映射数据库列阶对象是延续到下面的帖子: How to combine multiple columns in one case class field when using lifted embedding? 我是位字段的忠实球迷,希望在我使用slick-macros的项目中使用这个逻辑。不幸的是,slick-additions没有完全更新到slick 2.0,有一个不稳定的分支,实

    1热度

    1回答

    如何从宏内部看到符号的定义? 作为一个特例,我想知道如何在编译时使用宏评估常量值。 我的方法也适用于“最终VAL”而不是当地的“VAL”: // scalaVersion := "2.11.0" import scala.reflect.macros.blackbox.Context import scala.language.experimental.macros object Cons

    6热度

    1回答

    我在回答this question。 而是写的: case class Person(name: String, age: Int) { def this() = this("",1) } 我想我会用宏注释从展开: @Annotation case class Person(name: String, age: Int) 所以我尝试添加新的构造函数作为一个纯老DefDef使用

    0热度

    1回答

    我有一个Scala宏注释,它在编译时向类MyRecord添加一个val“x”。 我也得到了一些Java代码,它使用MyRecord.class.getDeclaredField(x)来获取添加字段的值。 javap MyRecord.class显示添加的字段确实是public,但是Java代码引发错误,抱怨它是private final。 Here是一个简化项目,显示Java反射返回private

    11热度

    2回答

    对scala宏执行测试的建议方式是什么? 我意识到需要两个项目,因为需要单独编译。如果有必要,这一步是可以接受的,而且大部分是清楚的 但是,你应该如何声明宏扩展失败呢?如果没有特殊的设施,测试用例将无法编译,因此整个测试项目将无法编译。 我觉得这个断言需要形式 errors(code: => _): List[CompileError] 返回内宏的编译错误的另一个宏。测试也需要相同的警告,如果

    0热度

    1回答

    鉴于(斯卡拉2.10.3), package models @MyAnnotation case class MyClass() 我如何在宏的IMPL包的名称? 我已经试过: 1)typeCheck像有人建议here,但导致堆栈溢出(虽然我可以看到它喷出了正确的全名)。 val result = { annottees.map(_.tree).toList match {