scalabook

Форк
0
/
tasty-inspection.md 
62 строки · 2.4 Кб

TASTy Inspection

libraryDependencies += "org.scala-lang" %% "scala3-tasty-inspector" % scalaVersion.value

TASTy файлы содержат полное типизированное дерево класса, включая исходные позиции и документацию. Это идеально подходит для инструментов, которые анализируют или извлекают семантическую информацию из кода. Чтобы избежать хлопот при работе напрямую с TASTy файлом, предоставляется файл Inspector

, который загружает содержимое и предоставляет его через TASTy reflect API.

Проверка TASTy файлов

Для просмотра деревьев TASTy файла потребитель может быть определен следующим образом.

import scala.quoted.*
import scala.tasty.inspector.*
class MyInspector extends Inspector:
def inspect(using Quotes)(tastys: List[Tasty[quotes.type]]): Unit =
import quotes.reflect.*
for tasty <- tastys do
val tree = tasty.ast
// Do something with the tree

Затем можно создать экземпляр потребителя с помощью следующего кода, чтобы получить дерево файла foo/Bar.tasty

.

object Test:
def main(args: Array[String]): Unit =
val tastyFiles = List("foo/Bar.tasty")
TastyInspector.inspectTastyFiles(tastyFiles)(new MyInspector)

Обратите внимание, что если нужно запустить main

(в приведенном ниже примере, определенном в объекте с именем Test
) после компиляции, нужно сделать компилятор доступным для среды выполнения:

scalac -d out Test.scala
scala -with-compiler -classpath out Test

Шаблон проекта

Используя версию sbt 1.1.5+

, выполните:

sbt new scala/scala3-tasty-inspector.g8

в папке, куда вы хотите клонировать шаблон.


Ссылки:

Использование cookies

Мы используем файлы cookie в соответствии с Политикой конфиденциальности и Политикой использования cookies.

Нажимая кнопку «Принимаю», Вы даете АО «СберТех» согласие на обработку Ваших персональных данных в целях совершенствования нашего веб-сайта и Сервиса GitVerse, а также повышения удобства их использования.

Запретить использование cookies Вы можете самостоятельно в настройках Вашего браузера.