如何在scala AST中表示'classOf'表达式

时间:2018-03-06 16:26:50

标签: scala scala-reflect

我是Scala AST概念的新手。

我需要遍历包含表达式的Scala代码树,例如: classOf[org.apache.commons.lang3.ArrayUtils]

我需要能够在scala.reflect.internal.Trees.Tree上进行模式匹配时识别出这种情况。

例如我知道它不是case _:Apply

为了成功匹配这个表达式,正确的模式是什么?

1 个答案:

答案 0 :(得分:2)

classOf[C]表示为Literal(value),其中value.tag == ClazzTagvalue.typeValue是表示Type的{​​{1}}。您可以将其匹配为:

C

有关实际示例,请参阅https://github.com/scala-js/scala-js/blob/ec5b328330276b9feb20cccadd75e19d27e887d3/compiler/src/main/scala/org/scalajs/nscplugin/GenJSCode.scala#L2043