Scala 为什么这个公共字段有一个私有标志?

Scala 为什么这个公共字段有一个私有标志?,scala,scala-macros,scala-reflect,scala-macro-paradise,Scala,Scala Macros,Scala Reflect,Scala Macro Paradise,我正在编写一个Scala宏,并遍历树以查找类中的非私有字段 考虑宏查看的以下代码: class Foo { val bar: String = "test" } 我正在遍历这段代码,进入bar的ValDef。它的修饰符中只有两个标志:Flag.PRIVATE和Flag.LOCAL 使用栏上的private修饰符不会更改任何内容。使用protected修饰符只能将Flag.protected添加到标志列表中 我错过了什么?我如何区分私人领域和公共领域 编辑: 以下代码: val bar: S

我正在编写一个Scala宏,并遍历树以查找类中的非私有字段

考虑宏查看的以下代码:

class Foo {
  val bar: String = "test"
}
我正在遍历这段代码,进入
bar
ValDef
。它的修饰符中只有两个标志:
Flag.PRIVATE
Flag.LOCAL

使用
栏上的
private
修饰符不会更改任何内容。使用
protected
修饰符只能将
Flag.protected
添加到标志列表中

我错过了什么?我如何区分私人领域和公共领域

编辑:

以下代码:

val bar: String = "test"
既没有
标志.PRIVATE
也没有
标志.LOCAL
,这很有意义,因为它是一个“全局”公共val


我在其中工作的上下文正在为其编写一个新的wart,它在扩展宏时只需从上下文的宇宙中获取一个
遍历器
,并遍历代码块。

Scala中的
val
定义扩展为一个带有额外getter的
private[this]
字段。除了您看到的
ValDef
之外,还应该有一个与字段上的getter同名的
def
方法定义。

您可以共享您的代码以便我们可以使用它吗?如果您愿意,我可以创建一个repo,但我使用的代码只是从universe中获取一个遍历器,并在宏扩展期间在代码上运行它。@Dici我为问题添加了更多信息和上下文。嗯