UastHintedVisitorAdapter 作成で、欠落しているまたは重複しているヒントを報告します。

UastHintedVisitorAdapter は、クラスがヒントリストに指定されている要素のみにアクセスすることで、UAST ビジターの実行を最適化できるヒントを受け取ります。

ビジターが、例えば visitCallExpression メソッドを実装しているけれども、ヒントに UCallExpression が含まれていない場合、メソッドは実行されません。

ビジターが、例えば visitCallExpression メソッドを実装していないけれども、ヒントに UCallExpression が含まれている場合、継承されたメソッドは不必要に実行されます。


return UastHintedVisitorAdapter.create(
  language,
  object : AbstractUastNonRecursiveVisitor() {
    override fun visitForExpression(node: UForExpression): Boolean {
      inspectLoopExpression()
      return true
    }

    override fun visitDoWhileExpression(node: UDoWhileExpression): Boolean { // ランタイムで使用されません
      inspectLoopExpression()
      return true
    }
    //...
  },
  arrayOf(UForExpression::class.java) // 悪い例: UDoWhileExpression::class.java が欠落しています

UastHintedVisitorAdapter.create(
  language,
  object : AbstractUastNonRecursiveVisitor() {
    override fun visitForExpression(node: UForExpression): Boolean {
      inspectLoopExpression()
      return true
    }
    //...
  },
  arrayOf(
    UForExpression::class.java,
    UDoWhileExpression::class.java // 悪い例: UDoWhileExpression へのアクセスが実装されていません
  )
)

2024.2 の新機能です