Spec-Zone.ru › Scala 2.13 Reflection

Класс scala.reflect.api.Universe

абстрактный класс Universe extends Symbols с Types с FlagSets с Scopes с Names с Trees с Constants с Annotations с Positions с Exprs с TypeTags с ImplicitTags с StandardDefinitions с StandardNames с StandardLiftables с Mirrors с Printers с Liftables с Quasiquotes с Internals

ЭКСПЕРИМЕНТАЛЬНО

Universe предоставляет полный набор операций рефлексии, которые позволяют рефлексивно исследовать отношения типов Scala, такие как членство или подтипирование.

scala.reflect.api.Universe имеет два специализированных под-универсума для разных сценариев. scala.reflect.api.JavaUniverse добавляет операции, которые связывают символы и типы с базовыми классами и значениями времени выполнения экземпляра JVM — это можно рассматривать как Universe, которое следует использовать для всех типичных случаев использования рефлексии Scala. scala.reflect.macros.Universe добавляет операции, которые позволяют макросам получать доступ к выбранным структурам данных и операциям компилятора — этот тип Universe должен существовать только в реализации макроса Scala.

Universe можно рассматривать как точку входа в рефлексию Scala. Он включает в себя и, таким образом, предоставляет интерфейс к следующим основным типам:

  • Types представляют типы
  • Symbols представляют определения
  • Trees представляют абстрактные синтаксические деревья
  • Names представляют имена терминов и типов
  • Annotations представляют аннотации
  • Positions представляют исходные позиции узлов дерева
  • FlagSet представляют наборы флагов, применяемых к символам и деревьям определения
  • Constants представляют константы времени компиляции.

Для получения Universe для использования с рефлексией Scala runtime, просто убедитесь, что вы используете или импортируете scala.reflect.runtime.universe._

scala> import scala.reflect.runtime.universe._
import scala.reflect.runtime.universe._

scala> typeOf[List[Int]]
res0: reflect.runtime.universe.Type = scala.List[Int]

scala> typeOf[Either[String, Int]]
res1: reflect.runtime.universe.Type = scala.Either[String,Int]

Для получения Universe для использования в макросе Scala, используйте scala.reflect.macros.blackbox.Context#universe. или scala.reflect.macros.whitebox.Context#universe. Например:

def printf(format: String, params: Any*): Unit = macro impl
def impl(c: Context)(format: c.Expr[String], params: c.Expr[Any]*): c.Expr[Unit] = {
  import c.universe._
  ...
}

Дополнительную информацию о Universe см. в Руководстве по рефлексии: Универсумы

Source
Universe.scala
Линейные супертипы
Internals, Quasiquotes, Liftables, Printers, Mirrors, StandardLiftables, StandardNames, StandardDefinitions, ImplicitTags, TypeTags, Exprs, Positions, Annotations, Constants, Trees, Names, Scopes, FlagSets, Types, Symbols, AnyRef, Any
Известные подклассы
JavaUniverse, Universe

Конструкторы экземпляров

new Universe()

Члены типа

abstract type Annotation >: Null <: Universe.AnnotationApi

Информация об аннотации.

Definition Classes
Annotations

trait AnnotationApi extends AnyRef

API экземпляров Annotation. Основным источником информации об аннотациях является страница scala.reflect.api.Annotations.

Definition Classes
Annotations

abstract class AnnotationExtractor extends AnyRef

Класс-экстрактор для создания и сопоставления шаблонов синтаксиса Annotation(tpe, scalaArgs, javaArgs). Здесь tpe - тип аннотации, scalaArgs - полезная нагрузка аннотаций Scala, и javaArgs - полезная нагрузка аннотаций Java.

Definition Classes
Annotations

abstract type Constant >: Null <: Universe.ConstantApi

Этот "виртуальный" класс case представляет собой отражающий интерфейс для литеральных выражений, которые нельзя далее разбить или оценить, такие как "true", "0", "classOf[List]". Такие значения становятся частями абстрактного синтаксического дерева Scala, представляющего программу. Константны соответствуют разделу 6.24 "Константные выражения" Спецификации языка Scala.

Такие константы используются для представления литералов в абстрактных синтаксических деревьях (узел scala.reflect.api.Trees#Literal) и литеральных аргументов для аннотаций Java-файлов (класс scala.reflect.api.Annotations#LiteralArgument).

Константы могут быть сопоставлены и могут быть построены непосредственно, как если бы они были классами case:

assert(Constant(true).value == true)
Constant(true) match {
  case Constant(s: String) =>  println("A string: " + s)
  case Constant(b: Boolean) => println("A boolean value: " + b)
  case Constant(x) =>          println("Something else: " + x)
}

Экземпляры Constant могут обернуть определённые виды таких выражений:

    Литералы примитивных типов (Byte, Short, Int, Long, Float, Double, Char, Boolean и Unit) - представлены непосредственно в виде литералов соответствующего типа; литералы строк - представлены экземплярами String; ссылки на классы, обычно создаваемые с помощью scala.Predef#classOf - представлены как типы; ссылки на значения перечислений - представлены как символы.

Ссылки на классы представлены экземплярами scala.reflect.api.Types#Type (потому что когда компилятор Scala обрабатывает ссылку на класс, подлежащий в реальном времени класс может ещё не быть скомпилирован). Чтобы преобразовать такую ссылку в реальный класс, необходимо использовать метод runtimeClass зеркала, такого как RuntimeMirror (наиболее простой способ получения такого зеркала - использовать scala.reflect.runtime.currentMirror).

Ссылки на значения перечислений представлены экземплярами scala.reflect.api.Symbols#Symbol, которые в JVM указывают на методы, возвращающие базовые значения перечислений. Для проверки базового перечисления или получения значения ссылки на перечисление в реальном времени нужно использовать scala.reflect.api.Mirrors#RuntimeMirror (наиболее простой способ получения такого зеркала - опять же scala.reflect.runtime.package#currentMirror).

Пример использования:

enum JavaSimpleEnumeration { FOO, BAR }

import java.lang.annotation.*;
@Retention(RetentionPolicy.RUNTIME)
@Target({ElementType.TYPE})
public @interface JavaSimpleAnnotation {
  Class<?> classRef();
  JavaSimpleEnumeration enumRef();
}

@JavaSimpleAnnotation(
  classRef = JavaAnnottee.class,
  enumRef = JavaSimpleEnumeration.BAR
)
public class JavaAnnottee {}
import scala.reflect.runtime.universe._
import scala.reflect.runtime.{currentMirror => cm}

object Test extends App {
  val jann = typeOf[JavaAnnottee].typeSymbol.annotations(0).javaArgs
  def jarg(name: String) = jann(TermName(name)) match {
    // Constant is always wrapped into a Literal or LiteralArgument tree node
    case LiteralArgument(ct: Constant) => value
  }

  val classRef = jarg("classRef").value.asInstanceOf[Type]
                                         // ideally one should match instead of casting
  println(showRaw(classRef))             // TypeRef(ThisType(<empty>), JavaAnnottee, List())
  println(cm.runtimeClass(classRef))     // class JavaAnnottee

  val enumRef = jarg("enumRef").value.asInstanceOf[Symbol]
                                         // ideally one should match instead of casting
  println(enumRef)                       // value BAR

  val siblings = enumRef.owner.info.decls
  val enumValues = siblings.filter(sym => sym.isVal && sym.isPublic)
  println(enumValues)                    // Scope{
                                         //   final val FOO: JavaSimpleEnumeration;
                                         //   final val BAR: JavaSimpleEnumeration
                                         // }

  // doesn't work because of https://github.com/scala/bug/issues/6459
  // val enumValue = mirror.reflectField(enumRef.asTerm).get
  val enumClass = cm.runtimeClass(enumRef.owner.asClass)
  val enumValue = enumClass.getDeclaredField(enumRef.name.toString).get(null)
  println(enumValue)                     // BAR
}
Definition Classes
Constants

abstract class ConstantApi extends AnyRef

API экземпляров Constant.

Definition Classes
Constants

abstract class ConstantExtractor extends AnyRef

Класс-экстрактор для создания и сопоставления шаблонов синтаксиса Constant(value) где value - значение константы в Scala.

Definition Classes
Constants

trait Expr[+T] extends Equals with Serializable

Expr оборачивает абстрактное синтаксическое дерево и отмечает его типом. Основным источником информации об exprs является страница scala.reflect.api.Exprs.

Definition Classes
Exprs

trait FlagOps extends Any

API набора FlagSet экземпляров. Основным источником информации о наборах флагов является страница scala.reflect.api.FlagSets.

Definition Classes
FlagSets

abstract type FlagSet

Абстрактный тип, представляющий наборы флагов (например, private, final и т. д.), которые применяются к деревьям определений и символам

Definition Classes
FlagSets

trait FlagValues extends AnyRef

Все возможные значения, которые могут составлять наборы флагов. Основным источником информации о наборах флагов является страница scala.reflect.api.FlagSets.

Definition Classes
FlagSets

abstract type FreeTermSymbol >: Null <: Universe.FreeTermSymbolApi with Universe.TermSymbol

Тип свободных терминов, введённых повторной реализацией.

Definition Classes
Internals

trait FreeTermSymbolApi extends Universe.TermSymbolApi

API свободных символов терминов. Основным источником информации о символах является страница Symbols.

$SYMACCESSORS

Definition Classes
Internals

abstract type FreeTypeSymbol >: Null <: Universe.FreeTypeSymbolApi with Universe.TypeSymbol

Тип свободных типов, введённых повторной реализацией.

Definition Classes
Internals

trait FreeTypeSymbolApi extends Universe.TypeSymbolApi

API свободных символов типов. Основным источником информации о символах является страница Symbols.

$SYMACCESSORS

Definition Classes
Internals

trait Importer extends AnyRef

Этот трейт предоставляет поддержку импортеров, механизм для миграции артефактов рефлексии между вселенными. Примечание: этот трейт обычно следует использовать только в редких случаях.

Артефакты рефлексии, такие как Символы и Типы, содержатся во вселенных Universe. Обычно вся обработка происходит в рамках одной Universe (например, макрос на этапе компиляции Universe или рефлексия во время выполнения Universe), но иногда возникает необходимость в миграции артефактов из одной Universe в другую. Например, компиляция во время выполнения работает путём импорта деревьев рефлексии во время выполнения в вселенную компилятора во время выполнения, компиляции импортированных элементов и экспорта результата обратно.

Артефакты рефлексии прочно связаны со своими вселенными, что отражается в том, что типы артефактов из разных вселенных несовместимы. Однако, используя Importer, их можно импортировать из одной вселенной в другую. Например, для импорта foo.bar.Baz из исходной Universe во вселенную назначения Universe, импортер сначала проверит, существует ли вся цепочка владельцев во вселенной назначения Universe. Если да, то ничего другого не делается. В противном случае импортер воссоздаст всю цепочку владельцев и импортирует соответствующие сигнатуры типов во вселенную назначения Universe.

Поскольку импортеры сопоставляют Symbol таблицы исходной и целевой вселенных, используя простые строковые имена, программист несет ответственность за то, чтобы убедиться, что импорты не искажают семантику, например, что foo.bar.Baz в исходной Universe означает то же, что и foo.bar.Baz в целевой Universe.

Пример

Вот как можно реализовать макрос, выполняющий вычисление аргумента на этапе компиляции с использованием компилятора во время выполнения для компиляции и оценки дерева, принадлежащего компилятору на этапе компиляции:

def staticEval[T](x: T) = macro staticEval[T]

def staticEval[T](c: scala.reflect.macros.blackbox.Context)(x: c.Expr[T]) = {
  // creates a runtime reflection universe to host runtime compilation
  import scala.reflect.runtime.{universe => ru}
  val mirror = ru.runtimeMirror(c.libraryClassLoader)
  import scala.tools.reflect.ToolBox
  val toolBox = mirror.mkToolBox()

  // runtime reflection universe and compile-time macro universe are different
  // therefore an importer is needed to bridge them
  // currently mkImporter requires a cast to correctly assign the path-dependent types
  val importer0 = ru.internal.mkImporter(c.universe)
  val importer = importer0.asInstanceOf[ru.internal.Importer { val from: c.universe.type }]

  // the created importer is used to turn a compiler tree into a runtime compiler tree
  // both compilers use the same classpath, so semantics remains intact
  val imported = importer.importTree(tree)

  // after the tree is imported, it can be evaluated as usual
  val tree = toolBox.untypecheck(imported.duplicate)
  val valueOfX = toolBox.eval(imported).asInstanceOf[T]
  ...
}
Definition Classes
Internals

trait InternalApi extends AnyRef

API отражения демонстрирует присущее экспериментальным вещам напряжение: с одной стороны, мы хотим, чтобы он вырос в красивый и надежный API, но с другой стороны, мы должны иметь дело с незрелостью базовых механизмов, предоставляя не очень красивые решения для реализации важных вариантов использования.

В Scala 2.10, которая была нашей первой попыткой создать API отражения, у нас не было систематического подхода к решению этого напряжения, иногда раскрывая слишком много внутренних деталей (например, Symbol.deSkolemize), а иногда слишком мало (например, до сих пор нет возможности изменять владельцев, выполнять преобразования типов и т. д.). Это привело к некоторой путанице с некоторыми внутренними API, живущими среди общедоступных, пугая новичков, и некоторыми внутренними API, доступными только через приведение типов, что требует глубокого знания компилятора и нарушает гарантии совместимости.

Это привело к созданию модуля internal API для API отражения, который предоставляет расширенные API, необходимые для макросов, которые расширяют границы передовых технологий, четко разграничивая их от более или менее простой остальной части и обеспечивая гарантии совместимости наравне с остальной частью API отражения (полная совместимость в рамках незначительных релизов, максимальные усилия для обратной совместимости в рамках основных релизов, четкий путь замены в случае редких несовместимых изменений в основных релизах).

Сам модуль internal (значение, реализующее InternalApi) не определен здесь, в scala.reflect.api.Universe, но предоставляется на основе каждой реализации. Конечная точка API времени выполнения (scala.reflect.runtime.universe) предоставляет universe.compat: InternalApi, тогда как конечные точки API времени компиляции (экземпляры scala.reflect.macros.Context) предоставляют c.compat: ContextInternalApi, который расширяет InternalApi дополнительными функциями, специфичными для вселенной и контекста.

Определяющие классы
Internals

abstract type ReferenceToBoxed >: Null <: Universe.ReferenceToBoxedApi with Universe.TermTree

Помечает базовую ссылку на идентификатор как помеченную.

Предварительное условие: идентификатор должен ссылаться на захваченную переменную. Такая помеченная ссылка будет ссылаться на помеченный объект, разыменование с помощью `.elem` не выполняется. Этот узел дерева может быть выведен макросами, такими как reify, которые вызывают referenceCapturedVariable. Он устраняется в LambdaLift, где происходит преобразование в boxing.

Определяющие классы
Internals

trait ReferenceToBoxedApi extends Universe.TermTreeApi

API, который поддерживают все ссылки

Определяющие классы
Internals

abstract class ReferenceToBoxedExtractor extends AnyRef

Класс-извлекатель для создания и сопоставления с образцом с помощью синтаксиса ReferenceToBoxed(ident). Этот узел AST не имеет прямого соответствия коду Scala и выводится макросами для непосредственного обращения к переменным захвата без обращения к elem.

Например:

var x = ... fun { x }

Выведет:

Ident(x)

Который преобразуется в:

Select(Ident(x), "elem")

Если бы использовался ReferenceToBoxed вместо Ident, преобразование не выполнялось бы.

Определяющие классы
Internals

trait ReificationSupportApi extends AnyRef

Это внутренний класс реализации.

Определяющие классы
Internals

trait Liftable[T] extends AnyRef

Класс типа, который определяет представление T как Tree.

Определяющие классы
Liftables
См. также

http://docs.scala-lang.org/overviews/quasiquotes/lifting.html

trait Unliftable[T] extends AnyRef

Класс типа, который определяет способ извлечения экземпляра T из Tree.

Определяющие классы
Liftables
См. также

http://docs.scala-lang.org/overviews/quasiquotes/unlifting.html

trait ClassMirror extends Universe.TemplateMirror

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

Определяющие классы
Mirrors

trait FieldMirror extends AnyRef

Зеркало, отражающее поле. См. страница обзора для получения подробной информации о том, как использовать отражение во время выполнения.

Определяющие классы
Mirrors

trait InstanceMirror extends AnyRef

Зеркало, отражающее значение времени выполнения. См. страница обзора для получения подробной информации о том, как использовать отражение во время выполнения.

Определяющие классы
Mirrors

trait MethodMirror extends AnyRef

Зеркало, отражающее метод. См. страницу обзора для получения подробной информации о том, как использовать рефлексию во время выполнения.

Definition Classes
Mirrors

trait ModuleMirror extends Universe.TemplateMirror

Зеркало, отражающее определение Scala-объекта или статические части класса во время выполнения. См. страницу обзора для получения подробной информации о том, как использовать рефлексию во время выполнения.

Definition Classes
Mirrors

trait ReflectiveMirror extends api.Mirror[Mirrors.this.type]

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

Definition Classes
Mirrors

trait RuntimeClassApi extends AnyRef

Не имеет специальных методов. Здесь для обеспечения стираемой идентичности для RuntimeClass.

Definition Classes
Mirrors

trait RuntimeMirror extends api.Mirror[Mirrors.this.type] with Universe.ReflectiveMirror

API зеркала для рефлексивной вселенной. См. страницу обзора для получения подробной информации о том, как использовать рефлексию во время выполнения.

Definition Classes
Mirrors

trait TemplateMirror extends AnyRef

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

Definition Classes
Mirrors

abstract class NameApi extends AnyRef

API экземпляров Name.

Definition Classes
Names

trait TermNameApi extends AnyRef

Не имеет специальных методов. Здесь для обеспечения стираемой идентичности для TermName.

Definition Classes
Names

abstract class TermNameExtractor extends AnyRef

Класс-экстрактор для создания и сопоставления с образцом с помощью синтаксиса TermName(s).

Definition Classes
Names

trait TypeNameApi extends AnyRef

Не имеет специальных методов. Здесь для обеспечения стираемой идентичности для TypeName.

Definition Classes
Names

abstract class TypeNameExtractor extends AnyRef

Класс-экстрактор для создания и сопоставления с образцом с помощью синтаксиса TypeName(s).

Definition Classes
Names

case class BooleanFlag(value: Option[Boolean]) extends Product with Serializable

Definition Classes
Printers

trait TreePrinter extends AnyRef

Attributes
protected
Definition Classes
Printers

implicit class Quasiquote extends AnyRef

Неявный класс, который вводит интерполяторы строк q, tq, cq, pq и fq, которые также известны как квазицитаты. С их помощью вы можете легко манипулировать AST отражения Scala.

Definition Classes
Quasiquotes
См. также

http://docs.scala-lang.org/overviews/quasiquotes/intro.html

abstract type MemberScope >: Null <: Universe.MemberScopeApi with Universe.Scope

Тип областей видимости членов, например, в определениях классов.

Definition Classes
Scopes

trait MemberScopeApi extends Universe.ScopeApi

API, поддерживаемый всеми областями видимости членов.

Definition Classes
Scopes

abstract type Scope >: Null <: Universe.ScopeApi

Базовый тип всех областей видимости.

Definition Classes
Scopes

trait ScopeApi extends Iterable[Universe.Symbol]

API, поддерживаемый всеми областями видимости.

Definition Classes
Scopes

trait DefinitionsApi extends Universe.StandardTypes

Определяет стандартные символы (и типы через его базовый трейт).

Definition Classes
StandardDefinitions

trait StandardTypes extends AnyRef

Определяет стандартные типы.

Definition Classes
StandardDefinitions

trait StandardLiftableInstances extends AnyRef

Definition Classes
StandardLiftables

trait StandardUnliftableInstances extends AnyRef

Definition Classes
StandardLiftables

trait NamesApi extends AnyRef

Определяет стандартные имена, общие для имен терминов и типов: к ним можно получить доступ через члены nme и tpnme.

Definition Classes
StandardNames

trait TermNamesApi extends Universe.NamesApi

Определяет стандартные имена терминов, к которым можно получить доступ через член nme.

Definition Classes
StandardNames

trait TypeNamesApi extends Universe.NamesApi

Определяет стандартные имена типов, к которым можно получить доступ через член tpnme.

Definition Classes
StandardNames

abstract type ClassSymbol >: Null <: Universe.ClassSymbolApi with Universe.TypeSymbol

Тип символов классов, представляющих определения классов и трейтов.

Definition Classes
Symbols

trait ClassSymbolApi extends Universe.TypeSymbolApi

API символов класса. Основной источник информации о символах — страница Symbols.

Класс Symbol определяет isXXX тестовые методы, такие как isPublic или isFinal, params и returnType методы для символов методов, baseClasses для символов классов и так далее. Некоторые из этих методов не имеют смысла для определенных подклассов Symbol и возвращают NoSymbol, Nil или другие пустые значения.

Definition Classes
Symbols

abstract type MethodSymbol >: Null <: Universe.MethodSymbolApi with Universe.TermSymbol

Тип символов методов, представляющих объявления def.

Definition Classes
Symbols

trait MethodSymbolApi extends Universe.TermSymbolApi

API символов методов. Основной источник информации о символах — страница Symbols.

Класс Symbol определяет isXXX тестовые методы, такие как isPublic или isFinal, params и returnType методы для символов методов, baseClasses для символов классов и так далее. Некоторые из этих методов не имеют смысла для определенных подклассов Symbol и возвращают NoSymbol, Nil или другие пустые значения.

Definition Classes
Symbols

abstract type ModuleSymbol >: Null <: Universe.ModuleSymbolApi with Universe.TermSymbol

Тип символов модулей, представляющих объявления объектов.

Definition Classes
Symbols

trait ModuleSymbolApi extends Universe.TermSymbolApi

API символов модулей. Основной источник информации о символах — страница Symbols.

Класс Symbol определяет isXXX тестовые методы, такие как isPublic или isFinal, params и returnType методы для символов методов, baseClasses для символов классов и так далее. Некоторые из этих методов не имеют смысла для определенных подклассов Symbol и возвращают NoSymbol, Nil или другие пустые значения.

Definition Classes
Symbols

abstract type Symbol >: Null <: Universe.SymbolApi

Тип символов, представляющих объявления.

Definition Classes
Symbols

trait SymbolApi extends AnyRef

API символов. Основной источник информации о символах — страница Symbols.

Класс Symbol определяет isXXX тестовые методы, такие как isPublic или isFinal, params и returnType методы для символов методов, baseClasses для символов классов и так далее. Некоторые из этих методов не имеют смысла для определенных подклассов Symbol и возвращают NoSymbol, Nil или другие пустые значения.

Definition Classes
Symbols

abstract type TermSymbol >: Null <: Universe.TermSymbolApi with Universe.Symbol

Тип символов терминов, представляющих объявления val, var, def и object, а также пакеты и параметры значений.

Definition Classes
Symbols

trait TermSymbolApi extends Universe.SymbolApi

API символов терминов. Основной источник информации о символах — страница Symbols.

Класс Symbol определяет isXXX тестовые методы, такие как isPublic или isFinal, params и returnType методы для символов методов, baseClasses для символов классов и так далее. Некоторые из этих методов не имеют смысла для определенных подклассов Symbol и возвращают NoSymbol, Nil или другие пустые значения.

Definition Classes
Symbols

abstract type TypeSymbol >: Null <: Universe.TypeSymbolApi with Universe.Symbol

Тип символов типов, представляющих объявления типов, классов и признаков, а также параметры типов.

Definition Classes
Symbols

trait TypeSymbolApi extends Universe.SymbolApi

API символов типов. Основным источником информации о символах является страница Symbols.

Класс Symbol определяет isXXX тестовые методы, такие как isPublic или isFinal, params и returnType методы для символов методов, baseClasses для символов классов и так далее. Некоторые из этих методов не имеют смысла для определенных подклассов Symbol и возвращают NoSymbol, Nil или другие пустые значения.

Definition Classes
Symbols

abstract type Alternative >: Null <: Universe.AlternativeApi with Universe.TermTree

Альтернативы шаблонов.

Исключаются фазами компилятора Исключаются фазами компилятора patmat (в новом сопоставителе шаблонов 2.10) или explicitouter (в старом сопоставителе шаблонов до 2.10), за исключением вхождений в закодированном операторе Switch (т.е. оставшийся Match(CaseDef(...)))

Definition Classes
Trees

trait AlternativeApi extends Universe.TermTreeApi

API, который поддерживают все альтернативы

Definition Classes
Trees

abstract class AlternativeExtractor extends AnyRef

Класс экстрактора для создания и сопоставления с синтаксисом Alternative(trees). Этот узел AST соответствует следующему коду Scala:

pat1 | ... | patn

Definition Classes
Trees

abstract type Annotated >: Null <: Universe.AnnotatedApi with Universe.Tree

Узел дерева, к которому прикреплено аннотация. Используется только для аннотированных типов и аннотаций-приписываний, аннотации для определений хранятся в Modifiers. Удаляется анализатором типов (typedAnnotated), аннотации затем хранятся в AnnotatedType.

Definition Classes
Trees

trait AnnotatedApi extends Universe.TreeApi

API, который поддерживают все аннотированные

Definition Classes
Trees

abstract class AnnotatedExtractor extends AnyRef

Класс экстрактора для создания и сопоставления с синтаксисом Annotated(annot, arg). Этот узел AST соответствует следующему коду Scala:

arg @annot // для типов arg: @annot // для выражений

Definition Classes
Trees

abstract type AppliedTypeTree >: Null <: Universe.AppliedTypeTreeApi with Universe.TypTree

Примененный тип <tpt> [ <args> ], исключается RefCheck

Definition Classes
Trees

trait AppliedTypeTreeApi extends Universe.TypTreeApi

API, который поддерживают все примененные деревья типов

Definition Classes
Trees

abstract class AppliedTypeTreeExtractor extends AnyRef

Класс экстрактора для создания и сопоставления с синтаксисом AppliedTypeTree(tpt, args). Этот узел AST соответствует следующему коду Scala:

tpt[args]

Следует использовать только с узлами tpt, которые являются типами, т.е. которые имеют isType, возвращающий true. В противном случае следует использовать TypeApply.

List[Int] как в val x: List[Int] = ??? // представлено как AppliedTypeTree(Ident(<List>), List(TypeTree(<Int>)))

def foo[T] = ??? foo[Int] // представлено как TypeApply(Ident(<foo>), List(TypeTree(<Int>)))

Definition Classes
Trees

abstract type Apply >: Null <: Universe.ApplyApi with Universe.GenericApply

Применение значения

Определяющие классы
Trees

trait ApplyApi extends Universe.GenericApplyApi

API, поддерживаемый всеми применениями

Определяющие классы
Trees

abstract class ApplyExtractor extends AnyRef

Класс экстрактора для создания и сопоставления с образцом с помощью синтаксиса Apply(fun, args). Этот узел AST соответствует следующему коду Scala:

fun(args)

Например:

fun[targs](args)

Выражается как:

Apply(TypeApply(fun, targs), args)

Определяющие классы
Trees

abstract type Assign >: Null <: Universe.AssignApi with Universe.TermTree

Присваивание

Определяющие классы
Trees

trait AssignApi extends Universe.TermTreeApi

API, поддерживаемый всеми присваиваниями

Определяющие классы
Trees

abstract class AssignExtractor extends AnyRef

Класс экстрактора для создания и сопоставления с образцом с помощью синтаксиса Assign(lhs, rhs). Этот узел AST соответствует следующему коду Scala:

lhs = rhs

Определяющие классы
Trees

abstract type Bind >: Null <: Universe.BindApi with Universe.DefTree

Привязка переменной к образцу rhs.

Исключается этапами компилятора patmat (в новом сопоставителе образцов 2.10) или explicitouter (в старом сопоставителе образцов до 2.10).

Определяющие классы
Trees

trait BindApi extends Universe.DefTreeApi

API, поддерживаемый всеми привязками

Определяющие классы
Trees

abstract class BindExtractor extends AnyRef

Класс экстрактора для создания и сопоставления с образцом с помощью синтаксиса Bind(name, body). Этот узел AST соответствует следующему коду Scala:

pat*

Определяющие классы
Trees

abstract type Block >: Null <: Universe.BlockApi with Universe.TermTree

Блок выражений (выражения, разделенные точкой с запятой)

Определяющие классы
Trees

trait BlockApi extends Universe.TermTreeApi

API, поддерживаемый всеми блоками

Определяющие классы
Trees

abstract class BlockExtractor extends AnyRef

Класс экстрактора для создания и сопоставления с образцом с помощью синтаксиса Block(stats, expr). Этот узел AST соответствует следующему коду Scala:

{ stats; expr }

Если блок пуст, то expr устанавливается в Literal(Constant(())).

Определяющие классы
Trees

abstract type CaseDef >: Null <: Universe.CaseDefApi with Universe.Tree

Пункт case в сопоставлении с образцом. (за исключением случаев в операторах switch). Удаляется компилятором на этапах patmat (в новом сопоставителе образцов 2.10) или explicitouter (в старом сопоставителе образцов до 2.10)

Definition Classes
Trees

trait CaseDefApi extends Universe.TreeApi

API, поддерживаемый всеми определениями case

Definition Classes
Trees

abstract class CaseDefExtractor extends AnyRef

Класс экстрактора для создания и сопоставления с образцом с использованием синтаксиса CaseDef(pat, guard, body). Этот узел AST соответствует следующему коду Scala:

case pat if guard => body

Если guard отсутствует, guard устанавливается в EmptyTree. Если тело не указано, body устанавливается в Literal(Constant(()))

Definition Classes
Trees

abstract type ClassDef >: Null <: Universe.ClassDefApi with Universe.ImplDef

Определение класса.

Definition Classes
Trees

trait ClassDefApi extends Universe.ImplDefApi

API, поддерживаемый всеми определениями классов

Definition Classes
Trees

abstract class ClassDefExtractor extends AnyRef

Класс экстрактора для создания и сопоставления с образцом с использованием синтаксиса ClassDef(mods, name, tparams, impl). Этот узел AST соответствует следующему коду Scala:

mods class name [tparams] impl

Где impl обозначает:

extends parents { defs }

Definition Classes
Trees

abstract type CompoundTypeTree >: Null <: Universe.CompoundTypeTreeApi with Universe.TypTree

Пересечение типов <parent1> with ... with <parentN> { <decls> }, удаляется RefCheck

Definition Classes
Trees

trait CompoundTypeTreeApi extends Universe.TypTreeApi

API, поддерживаемый всеми деревьями составных типов

Definition Classes
Trees

abstract class CompoundTypeTreeExtractor extends AnyRef

Класс экстрактора для создания и сопоставления с образцом с использованием синтаксиса CompoundTypeTree(templ). Этот узел AST соответствует следующему коду Scala:

parent1 with ... with parentN { refinement }

Definition Classes
Trees

abstract type DefDef >: Null <: Universe.DefDefApi with Universe.ValOrDefDef

Определение метода или макроса.

Definition Classes
Trees

trait DefDefApi extends Universe.ValOrDefDefApi

API, поддерживаемый всеми определениями def def

Definition Classes
Trees

abstract class DefDefExtractor extends AnyRef

Класс экстрактора для создания и сопоставления с образцом с использованием синтаксиса DefDef(mods, name, tparams, vparamss, tpt, rhs). Этот узел AST соответствует следующему коду Scala:

mods def name[tparams](vparams_1)...(vparams_n): tpt = rhs

Если тип возвращаемого значения не указан явно (т.е. должен быть выведен), это выражается тем, что tpt устанавливается в TypeTree() (но не в EmptyTree!).

Definition Classes
Trees

абстрактный тип DefTree >: Null <: Universe.DefTreeApi with Universe.SymTree with Universe.NameTree

Дерево, представляющее сущность, определяющую символ: 1) объявление или определение (тип, класс, объект, пакет, val, var или def) 2) Bind, используемое для представления связывающих вхождений в соответствиях с шаблонами 3) LabelDef, используемое внутри для представления циклов while

Определения классов
Trees

трактат DefTreeApi extends Universe.SymTreeApi with Universe.NameTreeApi

API, поддерживаемый всеми деревьями def

Определения классов
Trees

абстрактный тип ExistentialTypeTree >: Null <: Universe.ExistentialTypeTreeApi with Universe.TypTree

Узел дерева экзистенциального типа

Определения классов
Trees

трактат ExistentialTypeTreeApi extends Universe.TypTreeApi

API, поддерживаемый всеми деревьями экзистенциальных типов

Определения классов
Trees

абстрактный класс ExistentialTypeTreeExtractor extends AnyRef

Класс-экстрактор для создания и сопоставления с шаблонами синтаксиса ExistentialTypeTree(tpt, whereClauses). Этот узел AST соответствует следующему коду Scala:

tpt forSome { whereClauses }

Определения классов
Trees

абстрактный тип Function >: Null <: Universe.FunctionApi with Universe.TermTree with Universe.SymTree

Анонимная функция, устранённая фазой компилятора lambdalift

Определения классов
Trees

трактат FunctionApi extends Universe.TermTreeApi with Universe.SymTreeApi

API, поддерживаемый всеми функциями

Определения классов
Trees

абстрактный класс FunctionExtractor extends AnyRef

Класс-экстрактор для создания и сопоставления с шаблонами синтаксиса Function(vparams, body). Этот узел AST соответствует следующему коду Scala:

vparams => body

Символ функции — это синтетический TermSymbol. Это владелец параметров функции.

Определения классов
Trees

абстрактный тип GenericApply >: Null <: Universe.GenericApplyApi with Universe.TermTree

Общий базовый класс для Apply и TypeApply.

Определения классов
Trees

трактат GenericApplyApi extends Universe.TermTreeApi

API, поддерживаемый всеми применениями

Определения классов
Trees

абстрактный тип Ident >: Null <: Universe.IdentApi with Universe.RefTree

Ссылка на имя идентификатора name.

Определения классов
Trees

trait IdentApi extends Universe.RefTreeApi

API, поддерживаемый всеми идентификаторами

Definition Classes
Trees

abstract class IdentExtractor extends AnyRef

Класс экстрактора для создания и сопоставления шаблонов с синтаксисом Ident(qual, name). Этот узел AST соответствует следующему коду Scala:

name

Проверка типов преобразует идентификаторы, которые ссылаются на поля или методы, окружающие их, в выборки. Например, name ==> this.name

Definition Classes
Trees

abstract type If >: Null <: Universe.IfApi with Universe.TermTree

Условное выражение

Definition Classes
Trees

trait IfApi extends Universe.TermTreeApi

API, поддерживаемый всеми операторами if

Definition Classes
Trees

abstract class IfExtractor extends AnyRef

Класс экстрактора для создания и сопоставления шаблонов с синтаксисом If(cond, thenp, elsep). Этот узел AST соответствует следующему коду Scala:

if (cond) thenp else elsep

Если альтернатива отсутствует, elsep устанавливается в Literal(Constant(())).

Definition Classes
Trees

abstract type ImplDef >: Null <: Universe.ImplDefApi with Universe.MemberDef

Базовый класс для определений классов и объектов.

Definition Classes
Trees

trait ImplDefApi extends Universe.MemberDefApi

API, поддерживаемый всеми определениями impl

Definition Classes
Trees

abstract type Import >: Null <: Universe.ImportApi with Universe.SymTree

Пункт импорта

Definition Classes
Trees

trait ImportApi extends Universe.SymTreeApi

API, поддерживаемый всеми операторами импорта

Definition Classes
Trees

abstract class ImportExtractor extends AnyRef

Класс экстрактора для создания и сопоставления шаблонов с синтаксисом Import(expr, selectors). Этот узел AST соответствует следующему коду Scala:

import expr.{selectors}

Селекторы представляют собой список ImportSelectors, которые концептуально являются парами имен (from, to). Последнее (и, возможно, единственное) имя может быть nme.WILDCARD. Например:

import qual.{w => _, x, y => z, _}

Будет представлено как:

Import(qual, List(("w", WILDCARD), ("x", "x"), ("y", "z"), (WILDCARD, null)))

Символ Import является импортируемым символом @see Symbol.newImport. Он используется в основном как маркер для проверки того, что импорт был проверен на соответствие типам.

Definition Classes
Trees

abstract type ImportSelector >: Null <: Universe.ImportSelectorApi

Селектор импорта (не дерево, а компонент дерева Import)

Представление импортированного имени, его необязательного переименования и их необязательных позиций

Удаляется проверкой типов.

Definition Classes
Trees

trait ImportSelectorApi extends AnyRef

API, поддерживаемый всеми селекторами импорта

Definition Classes
Trees

abstract class ImportSelectorExtractor extends AnyRef

Класс-экстрактор для создания и сопоставления с образцом синтаксиса ImportSelector(name, namePos, rename, renamePos). Это не узел AST, он используется как часть узла Import.

Классы-определения
Trees

abstract тип LabelDef >: Null <: Universe.LabelDefApi with Universe.DefTree with Universe.TermTree

Определённое меткой выражение. Не выражается в синтаксисе языка, но генерируется компилятором для моделирования циклов while/do-while, а также подсистемой сопоставления с образцом.

Метка ведет себя как вложенная функция, где params представляет входные параметры. Символ, заданный для LabelDef, должен иметь тип MethodType, как если бы это была вложенная функция.

Переходы — это узлы apply, которые привязаны к символу метки. Аргументы из узла apply будут переданы метке и присвоены переменным Idents.

Разрешены прямые переходы в блоке.

Классы-определения
Trees

тракт LabelDefApi extends Universe.DefTreeApi with Universe.TermTreeApi

API, поддерживаемый всеми определениями меток

Классы-определения
Trees

abstract класс LabelDefExtractor extends AnyRef

Класс-экстрактор для создания и сопоставления с образцом синтаксиса LabelDef(name, params, rhs).

Этот узел AST не имеет прямого соответствия в коде Scala. Он используется для хвостовых вызовов и аналогичных задач. Например, while/do преобразуются в label def следующим образом:

while (cond) body ==> LabelDef($L, List(), if (cond) { body; L$() } else ())
do body while (cond) ==> LabelDef($L, List(), body; if (cond) L$() else ())
Классы-определения
Trees

abstract тип Literal >: Null <: Universe.LiteralApi with Universe.TermTree

Литерал

Классы-определения
Trees

тракт LiteralApi extends Universe.TermTreeApi

API, поддерживаемый всеми литералами

Классы-определения
Trees

abstract класс LiteralExtractor extends AnyRef

Класс-экстрактор для создания и сопоставления с образцом синтаксиса Literal(value). Этот узел AST соответствует следующему коду Scala:

value

Классы-определения
Trees

abstract тип Match >: Null <: Universe.MatchApi with Universe.TermTree

- Выражение сопоставления с образцом (до фазы компилятора explicitouter до 2.10 / patmat с 2.10)

    Выражения switch (после фазы компилятора explicitouter до 2.10 / patmat с 2.10)

После фазы компилятора explicitouter до 2.10 / patmat с 2.10 ветви case будут удовлетворять следующим ограничениям:

    все условия — EmptyTree,все шаблоны будут либо Literal(Constant(x:Int)), либо Alternative(lit|...|lit), за исключением ветви «иначе», у которой шаблон Ident(nme.WILDCARD)
Классы-определения
Trees

тракт MatchApi extends Universe.TermTreeApi

API, поддерживаемый всеми сопоставлениями

Классы-определения
Trees

abstract класс MatchExtractor extends AnyRef

Класс-экстрактор для создания и сопоставления с образцом синтаксиса Match(selector, cases). Этот узел AST соответствует следующему коду Scala:

selector match { cases }

Match также используется в операциях сопоставления с образцом, таких как val (foo, bar) = baz.

Классы-определения
Trees

abstract тип MemberDef >: Null <: Universe.MemberDefApi with Universe.DefTree

Общий базовый класс для всех определений членов: типов, классов, объектов, пакетов, значений и переменных, определений.

Классы-определения
Trees

trait MemberDefApi extends Universe.DefTreeApi

API, поддерживаемый всеми определениями членов

Definition Classes
Trees

abstract class ModifiersApi extends AnyRef

API, поддерживаемый всеми модификаторами

Definition Classes
Trees

abstract class ModifiersExtractor extends AnyRef

Класс-извлекатель для создания и сопоставления шаблонов с синтаксисом Modifiers(flags, privateWithin, annotations). Modifiers инкапсулирует флаги, аннотации видимости и аннотации Scala для определений членов.

Definition Classes
Trees

abstract type ModuleDef >: Null <: Universe.ModuleDefApi with Universe.ImplDef

Определение объекта, например, object Foo. Внутренне объекты довольно часто называются модулями для уменьшения неоднозначности. Удаляется компилятором на этапе refcheck.

Definition Classes
Trees

trait ModuleDefApi extends Universe.ImplDefApi

API, поддерживаемый всеми определениями модулей

Definition Classes
Trees

abstract class ModuleDefExtractor extends AnyRef

Класс-извлекатель для создания и сопоставления шаблонов с синтаксисом ModuleDef(mods, name, impl). Этот узел AST соответствует следующему коду Scala:

mods object name impl

Где impl означает:

extends parents { defs }

Definition Classes
Trees

abstract type NameTree >: Null <: Universe.NameTreeApi with Universe.Tree

Дерево, содержащее имя, например, путем его определения (DefTree) или путем ссылки на него (RefTree).

Definition Classes
Trees

trait NameTreeApi extends Universe.TreeApi

API, поддерживаемый всеми деревьями имен

Definition Classes
Trees

abstract type NamedArg >: Null <: Universe.NamedArgApi with Universe.TermTree

Присваивание или именованный аргумент. Появляется только в списках аргументов, удаляется компилятором на этапе typecheck (doTypedApply), восстанавливается reifier.

Definition Classes
Trees

trait NamedArgApi extends Universe.TermTreeApi

API, поддерживаемый всеми присваиваниями

Definition Classes
Trees

abstract class NamedArgExtractor extends AnyRef

Класс-извлекатель для создания и сопоставления шаблонов с синтаксисом NamedArg(lhs, rhs). Этот узел AST соответствует следующему коду Scala:

m.f(lhs = rhs)
@annotation(lhs = rhs)
Definition Classes
Trees

abstract type New >: Null <: Universe.NewApi with Universe.TermTree

Создание объекта

Definition Classes
Trees

trait NewApi extends Universe.TermTreeApi

API, поддерживаемый всеми операциями создания новых объектов

Definition Classes
Trees

абстрактный класс NewExtractor extends AnyRef

Класс-экстрактор для создания и сопоставления с образцом синтаксиса New(tpt). Этот узел AST соответствует следующему коду Scala:

new T

Этот узел всегда встречается в следующем контексте:

(new tpt).<init>[targs](args)

Например, представление AST для:

new Example[Int](2)(3)

имеет следующий код:

Apply( Apply( TypeApply( Select(New(TypeTree(typeOf[Example])), nme.CONSTRUCTOR) TypeTree(typeOf[Int])), List(Literal(Constant(2)))), List(Literal(Constant(3))))

Определение классов
Trees

абстрактный тип PackageDef >: Null <: Universe.PackageDefApi with Universe.MemberDef

Пакет, например, package pid { stats }

Определение классов
Trees

тракт PackageDefApi extends Universe.MemberDefApi

API, поддерживаемый всеми определениями пакетов

Определение классов
Trees

абстрактный класс PackageDefExtractor extends AnyRef

Класс-экстрактор для создания и сопоставления с образцом синтаксиса PackageDef(pid, stats). Этот узел AST соответствует следующему коду Scala:

package pid { stats }

Определение классов
Trees

абстрактный тип RefTree >: Null <: Universe.RefTreeApi with Universe.SymTree with Universe.NameTree

Узел, который ссылается на сущность, несущую символ. Ссылка, а не определение; определения находятся в DefTrees.

Определение классов
Trees

тракт RefTreeApi extends Universe.SymTreeApi with Universe.NameTreeApi

API, поддерживаемый всеми узлами ref

Определение классов
Trees

абстрактный класс RefTreeExtractor extends AnyRef

Класс-экстрактор для создания и сопоставления с образцом синтаксиса RefTree(qual, name). Этот узел AST соответствует либо Ident, либо Select, либо SelectFromTypeTree.

Определение классов
Trees

абстрактный тип Return >: Null <: Universe.ReturnApi with Universe.SymTree with Universe.TermTree

Выражение Return

Определение классов
Trees

тракт ReturnApi extends Universe.TermTreeApi

API, поддерживаемый всеми возвращаемыми значениями

Определение классов
Trees

абстрактный класс ReturnExtractor extends AnyRef

Класс-экстрактор для создания и сопоставления с образцом синтаксиса Return(expr). Этот узел AST соответствует следующему коду Scala:

return expr

Символ узла Return — это окружающий метод.

Определение классов
Trees

абстрактный тип Select >: Null <: Universe.SelectApi with Universe.RefTree

Выбор члена <qualifier> . <name>

Определение классов
Trees

тракт SelectApi extends Universe.RefTreeApi

API, поддерживаемый всеми select

Definition Classes
Trees

abstract class SelectExtractor extends AnyRef

Класс экстрактора для создания и сопоставления с образцом с помощью синтаксиса Select(qual, name). Этот узел AST соответствует следующему коду Scala:

qualifier.selector

Должен использоваться только с узлами qualifier, которые являются терминами, т.е. которые имеют isTerm, возвращающий true. В противном случае следует использовать SelectFromTypeTree.

foo.Bar // представлено как Select(Ident(<foo>), <Bar>) Foo#Bar // представлено как SelectFromTypeTree(Ident(<Foo>), <Bar>)

Definition Classes
Trees

abstract type SelectFromTypeTree >: Null <: Universe.SelectFromTypeTreeApi with Universe.TypTree with Universe.RefTree

Выбор типа <qualifier> # <name>, исключён RefCheck

Definition Classes
Trees

trait SelectFromTypeTreeApi extends Universe.TypTreeApi with Universe.RefTreeApi

API, поддерживаемый всеми select из деревьев типов

Definition Classes
Trees

abstract class SelectFromTypeTreeExtractor extends AnyRef

Класс экстрактора для создания и сопоставления с образцом с помощью синтаксиса SelectFromTypeTree(qualifier, name). Этот узел AST соответствует следующему коду Scala:

qualifier # selector

Примечание: зависимый от пути тип p.T выражается как p.type # T

Должен использоваться только с узлами qualifier, которые являются типами, т.е. которые имеют isType, возвращающий true. В противном случае следует использовать Select.

Foo#Bar // представлено как SelectFromTypeTree(Ident(<Foo>), <Bar>) foo.Bar // представлено как Select(Ident(<foo>), <Bar>)

Definition Classes
Trees

abstract type SingletonTypeTree >: Null <: Universe.SingletonTypeTreeApi with Universe.TypTree

Синглетонный тип, исключён RefCheck

Definition Classes
Trees

trait SingletonTypeTreeApi extends Universe.TypTreeApi

API, поддерживаемый всеми деревьями синглетонных типов

Definition Classes
Trees

abstract class SingletonTypeTreeExtractor extends AnyRef

Класс экстрактора для создания и сопоставления с образцом с помощью синтаксиса SingletonTypeTree(ref). Этот узел AST соответствует следующему коду Scala:

ref.type

Definition Classes
Trees

abstract type Star >: Null <: Universe.StarApi with Universe.TermTree

Повторение шаблона.

Исключён фазами компилятора patmat (в новом механизме сопоставления с образцом 2.10) или explicitouter (в старом механизме сопоставления с образцом до 2.10).

Definition Classes
Trees

trait StarApi extends Universe.TermTreeApi

API, поддерживаемый всеми звёздочками

Definition Classes
Trees

abstract class StarExtractor extends AnyRef

Класс экстрактора для создания и сопоставления с образцом с помощью синтаксиса Star(elem). Этот узел AST соответствует следующему коду Scala:

pat*

Definition Classes
Trees

abstract type Super >: Null <: Universe.SuperApi with Universe.TermTree

Сверхссылка, где qual — соответствующая ссылка this. Ссылка на супер C.super[M] представлена как Super(This(C), M).

Definition Classes
Trees

trait SuperApi extends Universe.TermTreeApi

API, поддерживаемый всеми суперами

Definition Classes
Trees

abstract class SuperExtractor extends AnyRef

Класс-экстрактор для создания и сопоставления с образцом с синтаксисом Super(qual, mix). Этот узел AST соответствует следующему коду Scala:

C.super[M]

Что представлено как:

Super(This(C), M)

Если mix пусто, то это tpnme.EMPTY.

Символ Super — это класс, _из_ которого производится ссылка на супер. Например, в C.super(...), это будет C.

Definition Classes
Trees

abstract type SymTree >: Null <: Universe.SymTreeApi with Universe.Tree

Дерево, содержащее символ, например, определяя его (DefTree) или ссылаясь на него (RefTree). Такие деревья начинаются без символа, возвращая NoSymbol, но после проверки типов без ошибок они содержат непустые символы.

Definition Classes
Trees

trait SymTreeApi extends Universe.TreeApi

API, поддерживаемый всеми деревьями символов

Definition Classes
Trees

abstract type Template >: Null <: Universe.TemplateApi with Universe.SymTree

Шаблон инициализации класса или тракта

Definition Classes
Trees

trait TemplateApi extends Universe.SymTreeApi

API, поддерживаемый всеми шаблонами

Definition Classes
Trees

abstract class TemplateExtractor extends AnyRef

Класс-экстрактор для создания и сопоставления с образцом с синтаксисом Template(parents, self, body). Этот узел AST соответствует следующему коду Scala:

extends parents { self => body }

В случае отсутствия аннотации self-типа, она представлена как пустое определение с именем nme.WILDCARD и типом NoType.

Символ шаблона — это локальный фиктивный символ. @see Symbol.newLocalDummy Владелец локального фиктивного символа — это окружающий тракт или класс. Локальный фиктивный символ сам является владельцем любых локальных блоков. Например:

class C { def foo { // owner is C def bar // owner is local dummy } }

Definition Classes
Trees

abstract type TermTree >: Null <: Universe.TermTreeApi with Universe.Tree

Дерево для термина. Не все деревья, представляющие термины, являются TermTrees; используйте isTerm для надежной идентификации терминов.

Definition Classes
Trees

trait TermTreeApi extends Universe.TreeApi

API, поддерживаемый всеми деревьями терминов

Definition Classes
Trees

abstract type This >: Null <: Universe.ThisApi with Universe.TermTree with Universe.SymTree

Ссылка на себя

Definition Classes
Trees

trait ThisApi extends Universe.TermTreeApi with Universe.SymTreeApi

API, поддерживаемый всеми this

Definition Classes
Trees

abstract class ThisExtractor extends AnyRef

Класс-экстрактор для создания и сопоставления с шаблонами синтаксиса This(qual). Этот узел AST соответствует следующему коду Scala:

qual.this

Символ This — это класс, к которому относится this. Например, в C.this это будет C.

Классы определений
Trees

abstract тип Throw >: Null <: Universe.ThrowApi с Universe.TermTree

Выражение Throw

Классы определений
Trees

тракт ThrowApi extends Universe.TermTreeApi

API, поддерживаемый всеми попытками

Классы определений
Trees

abstract класс ThrowExtractor extends AnyRef

Класс-экстрактор для создания и сопоставления с шаблонами синтаксиса Throw(expr). Этот узел AST соответствует следующему коду Scala:

throw expr

Классы определений
Trees

abstract класс Transformer extends AnyRef

Класс, реализующий стратегию преобразования дерева по умолчанию: клонирование покомпонентно по принципу «ширина в глубину».

Классы определений
Trees

класс Traverser extends AnyRef

Класс, реализующий стратегию обхода дерева по умолчанию: покомпонентный обход по принципу «ширина в глубину».

Классы определений
Trees

abstract тип Tree >: Null <: Universe.TreeApi

Тип деревьев абстрактной синтаксической структуры Scala.

Классы определений
Trees

тракт TreeApi extends Product

API, поддерживаемый всеми деревьями. Основным источником информации о деревьях является страница scala.reflect.api.Trees.

Классы определений
Trees

abstract тип TreeCopier >: Null <: Universe.TreeCopierOps

Тип стандартных (ленивых) копиров деревьев.

Классы определений
Trees

abstract класс TreeCopierOps extends AnyRef

API копирователя дерева.

Классы определений
Trees

abstract тип Try >: Null <: Universe.TryApi с Universe.TermTree

Узел Try-catch

Классы определений
Trees

тракт TryApi extends Universe.TermTreeApi

API, поддерживаемый всеми попытками

Классы определений
Trees

abstract класс TryExtractor extends AnyRef

Класс-экстрактор для создания и сопоставления с шаблонами синтаксиса Try(block, catches, finalizer). Этот узел AST соответствует следующему коду Scala:

try block catch { catches } finally finalizer

Если finalizer отсутствует, то finalizer устанавливается в EmptyTree.

Классы определений
Trees

abstract тип TypTree >: Null <: Universe.TypTreeApi с Universe.Tree

Дерево для типа. Не все деревья, представляющие типы, являются TypTrees; используйте isType для надежной идентификации типов.

Классы определений
Trees

trait TypTreeApi extends Universe.TreeApi

API, поддерживаемый всеми узлами типа

Определяющие классы
Trees

abstract type TypeApply >: Null <: Universe.TypeApplyApi with Universe.GenericApply

Явное применение типа.

Определяющие классы
Trees

trait TypeApplyApi extends Universe.GenericApplyApi

API, поддерживаемый всеми применениями типа

Определяющие классы
Trees

abstract class TypeApplyExtractor extends AnyRef

Класс экстрактора для создания и сопоставления с образцом с помощью синтаксиса TypeApply(fun, args). Этот узел AST соответствует следующему коду Scala:

fun[args]

Должен использоваться только с узлами fun, которые являются терминами, т.е. которые имеют isTerm, возвращающий true. В противном случае следует использовать AppliedTypeTree.

def foo[T] = ??? foo[Int] // представлено как TypeApply(Ident(<foo>), List(TypeTree(<Int>)))

List[Int] как в val x: List[Int] = ??? // представлено как AppliedTypeTree(Ident(<List>), List(TypeTree(<Int>)))

Определяющие классы
Trees

abstract type TypeBoundsTree >: Null <: Universe.TypeBoundsTreeApi with Universe.TypTree

Узел дерева границ типа

Определяющие классы
Trees

trait TypeBoundsTreeApi extends Universe.TypTreeApi

API, поддерживаемый всеми узлами границ типа

Определяющие классы
Trees

abstract class TypeBoundsTreeExtractor extends AnyRef

Класс экстрактора для создания и сопоставления с образцом с помощью синтаксиса TypeBoundsTree(lo, hi). Этот узел AST соответствует следующему коду Scala:

>: lo <: hi

Определяющие классы
Trees

abstract type TypeDef >: Null <: Universe.TypeDefApi with Universe.MemberDef

Абстрактный тип, параметр типа или псевдоним типа. Удаляется стиранием.

Определяющие классы
Trees

trait TypeDefApi extends Universe.MemberDefApi

API, поддерживаемый всеми определениями типов

Определяющие классы
Trees

abstract class TypeDefExtractor extends AnyRef

Класс экстрактора для создания и сопоставления с образцом с помощью синтаксиса TypeDef(mods, name, tparams, rhs). Этот узел AST соответствует следующему коду Scala:

mods type name[tparams] = rhs

mods type name[tparams] >: lo <: hi

Первое использование иллюстрирует TypeDefs, представляющие псевдонимы типов и параметры типов. Второе использование иллюстрирует TypeDefs, представляющие абстрактные типы, где lo и hi являются обоих TypeBoundsTrees и Modifier.deferred установлен в mods.

Определяющие классы
Trees

abstract type TypeTree >: Null <: Universe.TypeTreeApi with Universe.TypTree

Синтетическое дерево, содержащее произвольный тип. Не следует путать с TypTree, признаком для деревьев, которые используются только для деревьев типов. Деревья TypeTree вставляются в нескольких местах, но наиболее заметно в RefCheck, где все произвольные деревья типов заменяются деревьями TypeTree.

Определяющие классы
Trees

trait TypeTreeApi extends Universe.TypTreeApi

API, который поддерживают все деревья типов

Классы-определения
Trees

abstract class TypeTreeExtractor extends AnyRef

Класс-экстрактор для создания и сопоставления с образцом синтаксиса TypeTree(). Этот узел АСТ не имеет прямого соответствия с кодом Scala и выводится везде, когда требуется обернуть Type в Tree.

Классы-определения
Trees

abstract type Typed >: Null <: Universe.TypedApi with Universe.TermTree

Аннотация типа, удалённая фазой очистки компилятора

Классы-определения
Trees

trait TypedApi extends Universe.TermTreeApi

API, который поддерживают все typeds

Классы-определения
Trees

abstract class TypedExtractor extends AnyRef

Класс-экстрактор для создания и сопоставления с образцом синтаксиса Typed(expr, tpt). Этот узел АСТ соответствует следующему коду Scala:

expr: tpt

Классы-определения
Trees

abstract type UnApply >: Null <: Universe.UnApplyApi with Universe.TermTree

Используется для представления методов unapply в сопоставлении с образцом.

Например:

2 match { case Foo(x) => x }

Представляется как:

Match(
  Literal(Constant(2)),
  List(
    CaseDef(
      UnApply(
        // a dummy node that carries the type of unapplication to patmat
        // the <unapply-selector> here doesn't have an underlying symbol
        // it only has a type assigned, therefore after `untypecheck` this tree is no longer typeable
        Apply(Select(Ident(Foo), TermName("unapply")), List(Ident(TermName("<unapply-selector>")))),
        // arguments of the unapply => nothing synthetic here
        List(Bind(TermName("x"), Ident(nme.WILDCARD)))),
      EmptyTree,
      Ident(TermName("x")))))

Введён в модуле typer. Удалён фазами компилятора patmat (в новом сопоставлении с образцом 2.10) или explicitouter (в старом сопоставлении с образцом до 2.10).

Классы-определения
Trees

trait UnApplyApi extends Universe.TermTreeApi

API, который поддерживают все unapplies

Классы-определения
Trees

abstract class UnApplyExtractor extends AnyRef

Класс-экстрактор для создания и сопоставления с образцом синтаксиса UnApply(fun, args). Этот узел АСТ не имеет прямого соответствия с кодом Scala и вводится при проверке типов сопоставлений с образцом и try блоков.

Классы-определения
Trees

abstract type ValDef >: Null <: Universe.ValDefApi with Universe.ValOrDefDef

В широком смысле, определение значения. Все эти элементы кодируются как ValDefs:

    неизменяемые значения, например, "val x"изменяемые значения, например, "var x" - флаг MUTABLE установлен в модификаторахленивые значения, например, "lazy val x" - флаг LAZY установлен в модификаторахпараметры метода, см. vparamss в scala.reflect.api.Trees#DefDef - флаг PARAM установлен в модификаторахявные типы self, например, class A { self: Bar => }
Классы-определения
Trees

trait ValDefApi extends Universe.ValOrDefDefApi

API, который поддерживают все val defs

Классы-определения
Trees

abstract class ValDefExtractor extends AnyRef

Класс-экстрактор для создания и сопоставления с образцом синтаксиса ValDef(mods, name, tpt, rhs). Этот узел АСТ соответствует любому из следующих кодов Scala:

mods val name: tpt = rhs

mods var name: tpt = rhs

mods name: tpt = rhs // в сигнатурах определений функций и методов

self: Bar => // явные типы self

Если тип значения не указан явно (т.е. должен быть выведен), это выражается в том, что tpt установлен в TypeTree() (но не в EmptyTree!).

Классы-определения
Trees

abstract type ValOrDefDef >: Null <: Universe.ValOrDefDefApi with Universe.MemberDef

Общий базовый класс для ValDefs и DefDefs.

Классы-определения
Trees

trait ValOrDefDefApi extends Universe.MemberDefApi

API, поддерживаемый всеми val def и def def.

Definition Classes
Trees

trait TypeTag[T] extends Universe.WeakTypeTag[T] with Equals with Serializable

Тип TypeTag — это scala.reflect.api.TypeTags#WeakTypeTag с дополнительной гарантией, что все ссылки на типы являются конкретными, т.е. он не содержит ссылок на неразрешённые параметры типа или абстрактные типы.

Definition Classes
TypeTags
Annotations
@implicitNotFound("No TypeTag available for ${T}")
См. также

scala.reflect.api.TypeTags

trait WeakTypeTag[T] extends Equals with Serializable

Если требуется неявное значение типа WeakTypeTag[T], компилятор создаст его, а рефлексивное представление T можно получить через поле tpe. Компоненты T могут быть ссылками на параметры типа или абстрактные типы. Обратите внимание, что WeakTypeTag делает всё возможное, чтобы быть как можно более конкретным, т.е. если TypeTag доступны для ссылочных аргументов типа или абстрактных типов, они используются для встраивания конкретных типов в WeakTypeTag. В противном случае WeakTypeTag будет содержать ссылку на абстрактный тип. Это поведение может быть полезным, когда ожидается, что T будет частично абстрактным, но требует особого внимания к этому случаю. Однако, если ожидается, что T будет полностью известен, используйте scala.reflect.api.TypeTags#TypeTag вместо него, что гарантирует это свойство статически.

Для получения дополнительной информации об TypeTag, см. Руководство по рефлексии: TypeTags

Definition Classes
TypeTags
Annotations
@implicitNotFound("No WeakTypeTag available for ${T}")
См. также

scala.reflect.api.TypeTags

abstract type AnnotatedType >: Null <: Universe.AnnotatedTypeApi with Universe.Type

Подпись типа AnnotatedType используется для типов с аннотациями вида <type> @<annotation>.

Definition Classes
Types

trait AnnotatedTypeApi extends Universe.TypeApi

API, поддерживаемый всеми типами с аннотациями. Основным источником информации о типах является страница scala.reflect.api.Types.

Definition Classes
Types

abstract class AnnotatedTypeExtractor extends AnyRef

Класс-экстрактор для создания и сопоставления с образцом с синтаксисом AnnotatedType(annotations, underlying). Здесь annotations — это аннотации, которые украшают базовый тип underlying. selfSym — это символ, представляющий сам анотированный тип.

Definition Classes
Types

abstract type BoundedWildcardType >: Null <: Universe.BoundedWildcardTypeApi with Universe.Type

BoundedWildcardTypes, используемые только во время вывода типов, создаются в двух местах:

    Если ожидаемый тип выражения — это экзистенциальный тип, его скрытые символы заменяются ограниченными универсальными символами. 2. При поиске неявного преобразования, частично основанного на имени метода в преобразуемом типе, создаётся тип HasMethodMatching: MethodType с параметрами, типизированными как BoundedWildcardTypes.
Definition Classes
Types

trait BoundedWildcardTypeApi extends Universe.TypeApi

API, поддерживаемый всеми этими типами. Основным источником информации о типах является страница scala.reflect.api.Types.

Definition Classes
Types

abstract class BoundedWildcardTypeExtractor extends AnyRef

Класс-экстрактор для создания и сопоставления с образцом синтаксиса BoundedWildcardTypeExtractor(bounds), где bounds обозначает границы типов.

Определяющие классы
Типы

абстрактный тип ClassInfoType >: Null <: Universe.ClassInfoTypeApi с Universe.CompoundType

Подпись типа ClassInfo используется для определения родительских элементов и объявлений классов, трактов и объектов. Если класс, тракт или объект C объявлен так

C extends P_1 with ... with P_m { D_1; ...; D_n}

его ClassInfo тип имеет следующий вид:

ClassInfo(List(P_1, ..., P_m), Scope(D_1, ..., D_n), C)
Определяющие классы
Типы

тракт ClassInfoTypeApi extends Universe.TypeApi

API, поддерживаемый всеми типами информации о классе. Основным источником информации о типах является страница scala.reflect.api.Types.

Определяющие классы
Типы

абстрактный класс ClassInfoTypeExtractor extends AnyRef

Класс-экстрактор для создания и сопоставления с образцом синтаксиса ClassInfo(parents, decls, clazz) Здесь, parents — список родительских типов класса, decls — область, содержащая все объявления в классе, а clazz — символ самого класса.

Определяющие классы
Типы

абстрактный тип CompoundType >: Null <: Universe.CompoundTypeApi с Universe.Type

Подтип Type, представляющий уточнённые типы, а также подписи ClassInfo.

Определяющие классы
Типы

тракт CompoundTypeApi extends AnyRef

Не имеет специальных методов. Здесь для обеспечения сохранённой идентичности CompoundType.

Определяющие классы
Типы

абстрактный тип ConstantType >: Null <: Universe.ConstantTypeApi с Universe.SingletonType

Тип ConstantType не может быть выражен в пользовательских программах; он выводится как тип константы. Вот некоторые константы с их типами и внутренним строковым представлением:

1           ConstantType(Constant(1))       Int(1)
"abc"       ConstantType(Constant("abc"))   String("abc")

Типы ConstantType обозначают значения, которые могут безопасно быть сложены во время проверки типов. Операция deconst возвращает эквивалентный тип, который не будет сложен во время проверки.

Определяющие классы
Типы

тракт ConstantTypeApi extends Universe.TypeApi

API, поддерживаемый всеми типами констант. Основным источником информации о типах является страница scala.reflect.api.Types.

Определяющие классы
Типы

абстрактный класс ConstantTypeExtractor extends AnyRef

Класс-экстрактор для создания и сопоставления с образцом синтаксиса ConstantType(constant) Здесь, constant — постоянное значение, представленное типом.

Определяющие классы
Типы

абстрактный тип ExistentialType >: Null <: Universe.ExistentialTypeApi с Universe.Type

Подпись типа ExistentialType используется для экзистенциальных типов и типов подстановок.

Определяющие классы
Типы

тракт ExistentialTypeApi extends Universe.TypeApi

API, поддерживаемый всеми экзистенциальными типами. Основным источником информации о типах является страница scala.reflect.api.Types.

Определяющие классы
Типы

abstract class ExistentialTypeExtractor extends AnyRef

Класс экстрактора для создания и сопоставления с образцом с помощью синтаксиса ExistentialType(quantified, underlying). Здесь, quantified - это переменные типа, связанные экзистенциальным типом, а underlying - это тип, который экзистенциально квантифицирован.

Definition Classes
Types

abstract type MethodType >: Null <: Universe.MethodTypeApi with Universe.Type

Подпись типа MethodType используется для указания параметров и типа результата метода

Definition Classes
Types

trait MethodTypeApi extends Universe.TypeApi

API, поддерживаемый всеми типами методов. Основной источник информации о типах - страница scala.reflect.api.Types.

Definition Classes
Types

abstract class MethodTypeExtractor extends AnyRef

Класс экстрактора для создания и сопоставления с образцом с помощью синтаксиса MethodType(params, restpe). Здесь, params - это потенциально пустой список символов параметров метода, а restpe - это тип результата метода. Если метод является каррированным, restpe будет другим MethodType. Примечание: MethodType(Nil, Int) будет типом метода, определенного с пустым списком параметров.

def f(): Int

Если метод полностью без параметров, как в

def f: Int

его тип является NullaryMethodType.

Definition Classes
Types

abstract type NullaryMethodType >: Null <: Universe.NullaryMethodTypeApi with Universe.Type

Подпись типа NullaryMethodType используется для методов без параметров с объявлениями вида def foo: T

Definition Classes
Types

trait NullaryMethodTypeApi extends Universe.TypeApi

API, поддерживаемый всеми типами методов без параметров. Основной источник информации о типах - страница scala.reflect.api.Types.

Definition Classes
Types

abstract class NullaryMethodTypeExtractor extends AnyRef

Класс экстрактора для создания и сопоставления с образцом с помощью синтаксиса NullaryMethodType(resultType). Здесь, resultType - это тип результата метода без параметров.

Definition Classes
Types

abstract type PolyType >: Null <: Universe.PolyTypeApi with Universe.Type

Подпись типа PolyType используется для полиморфных методов, которые имеют хотя бы один параметр типа.

Definition Classes
Types

trait PolyTypeApi extends Universe.TypeApi

API, поддерживаемый всеми полиморфными типами. Основной источник информации о типах - страница scala.reflect.api.Types.

Definition Classes
Types

abstract class PolyTypeExtractor extends AnyRef

Класс экстрактора для создания и сопоставления с образцом с помощью синтаксиса PolyType(typeParams, resultType). Здесь, typeParams - это параметры типа метода, а resultType - это сигнатура типа после параметров типа.

Definition Classes
Types

abstract type RefinedType >: Null <: Universe.RefinedTypeApi with Universe.CompoundType

Тип RefinedType определяет типы любого из форм слева с их представлениями RefinedType справа.

P_1 with ... with P_m { D_1; ...; D_n}      RefinedType(List(P_1, ..., P_m), Scope(D_1, ..., D_n))
P_1 with ... with P_m                       RefinedType(List(P_1, ..., P_m), Scope())
{ D_1; ...; D_n}                            RefinedType(List(AnyRef), Scope(D_1, ..., D_n))
Классы определений
Типы

тракт RefinedTypeApi extends Universe.TypeApi

API, поддерживаемый всеми уточнёнными типами. Основным источником информации о типах является страница scala.reflect.api.Types.

Классы определений
Типы

абстрактный класс RefinedTypeExtractor extends AnyRef

Класс-экстрактор для создания и сопоставления с образцом с синтаксисом RefinedType(parents, decls) Здесь, parents — список родительских типов класса, а decls — область, содержащая все объявления в классе.

Классы определений
Типы

абстрактный тип SingleType >: Null <: Universe.SingleTypeApi with Universe.SingletonType

Тип SingleType описывает типы любой из форм слева с их представлениями TypeRef справа.

(T # x).type             SingleType(T, x)
p.x.type                 SingleType(p.type, x)
x.type                   SingleType(NoPrefix, x)
Классы определений
Типы

тракт SingleTypeApi extends Universe.TypeApi

API, поддерживаемый всеми одиночными типами. Основным источником информации о типах является страница scala.reflect.api.Types.

Классы определений
Типы

абстрактный класс SingleTypeExtractor extends AnyRef

Класс-экстрактор для создания и сопоставления с образцом с синтаксисом SingleType(pre, sym) Здесь, pre — префикс одиночного типа, а sym — символ стабильного значения, к которому ссылается одиночный тип.

Классы определений
Типы

абстрактный тип SingletonType >: Null <: Universe.SingletonTypeApi with Universe.Type

Тип Scala одиночных типов, т.е. типов, которые обитаемы только одним ненулевым значением. К ним относятся типы форм

C.this.type
C.super.type
x.type

а также константные типы.

Классы определений
Типы

тракт SingletonTypeApi extends AnyRef

Не имеет специальных методов. Присутствует для обеспечения стираемой идентичности для SingletonType.

Классы определений
Типы

абстрактный тип SuperType >: Null <: Universe.SuperTypeApi with Universe.SingletonType

Тип SuperType не записывается напрямую, а возникает при использовании C.super в качестве префикса в TypeRef или SingleType. Его внутреннее представление

SuperType(thistpe, supertpe)

Здесь, thistpe — тип соответствующего this-типа. Например, в типе, возникающем из C.super, часть thistpe будет ThisType(C). supertpe — тип суперкласса, на который ссылается super.

Классы определений
Типы

тракт SuperTypeApi extends Universe.TypeApi

API, поддерживаемый всеми типами super. Основным источником информации о типах является страница scala.reflect.api.Types.

Классы определений
Типы

абстрактный класс SuperTypeExtractor extends AnyRef

Класс-экстрактор для создания и сопоставления с образцом с синтаксисом SuperType(thistpe, supertpe)

Классы определений
Типы

abstract type ThisType >: Null <: Universe.ThisTypeApi with Universe.SingletonType

A singleton type that describes types of the form on the left with the corresponding ThisType representation to the right:

C.this.type             ThisType(C)
Definition Classes
Types

trait ThisTypeApi extends Universe.TypeApi

The API that all this types support. The main source of information about types is the scala.reflect.api.Types page.

Definition Classes
Types

abstract class ThisTypeExtractor extends AnyRef

An extractor class to create and pattern match with syntax ThisType(sym) where sym is the class prefix of the this type.

Definition Classes
Types

abstract type Type >: Null <: Universe.TypeApi

The type of Scala types, and also Scala type signatures. (No difference is internally made between the two).

Definition Classes
Types

abstract class TypeApi extends AnyRef

The API of types. The main source of information about types is the scala.reflect.api.Types page.

Definition Classes
Types

abstract type TypeBounds >: Null <: Universe.TypeBoundsApi with Universe.Type

The TypeBounds type signature is used to indicate lower and upper type bounds of type parameters and abstract types. It is not a first-class type. If an abstract type or type parameter is declared with any of the forms on the left, its type signature is the TypeBounds type on the right.

T >: L <: U               TypeBounds(L, U)
T >: L                    TypeBounds(L, Any)
T <: U                    TypeBounds(Nothing, U)
Definition Classes
Types

trait TypeBoundsApi extends Universe.TypeApi

The API that all type bounds support. The main source of information about types is the scala.reflect.api.Types page.

Definition Classes
Types

abstract class TypeBoundsExtractor extends AnyRef

An extractor class to create and pattern match with syntax TypeBound(lower, upper) Here, lower is the lower bound of the TypeBounds pair, and upper is the upper bound.

Definition Classes
Types

abstract type TypeRef >: Null <: Universe.TypeRefApi with Universe.Type

The TypeRef type describes types of any of the forms on the left, with their TypeRef representations to the right.

T # C[T_1, ..., T_n]      TypeRef(T, C, List(T_1, ..., T_n))
p.C[T_1, ..., T_n]        TypeRef(p.type, C, List(T_1, ..., T_n))
C[T_1, ..., T_n]          TypeRef(NoPrefix, C, List(T_1, ..., T_n))
T # C                     TypeRef(T, C, Nil)
p.C                       TypeRef(p.type, C, Nil)
C                         TypeRef(NoPrefix, C, Nil)
Definition Classes
Types

trait TypeRefApi extends Universe.TypeApi

The API that all type refs support. The main source of information about types is the scala.reflect.api.Types page.

Definition Classes
Types

abstract class TypeRefExtractor extends AnyRef

An extractor class to create and pattern match with syntax TypeRef(pre, sym, args) Here, pre is the prefix of the type reference, sym is the symbol referred to by the type reference, and args is a possible empty list of type arguments.

Definition Classes
Types

abstract тип Internal <: InternalApi

Определяющие классы
Internals
См. также

InternalApi

abstract тип Mirror >: Null <: api.Mirror[Universe.this.type]

Базовый тип всех зеркал этого универсума.

Этот абстрактный тип соответствует базовому интерфейсу для всех зеркал, определенных в scala.reflect.api.Mirror, и постепенно уточняется в конкретных универсумах (например, Mirror scala.reflect.api.JavaUniverse обладает возможностью рефлексии).

Определяющие классы
Mirrors

abstract тип Modifiers >: Null <: ModifiersApi

Тип модификаторов деревьев (не само дерево, а часть DefTrees).

Определяющие классы
Trees

abstract тип Name >: Null <: NameApi

Абстрактный тип имен.

Определяющие классы
Names

abstract тип Position >: Null <: api.Position { type Pos = Universe.this.Position }

Определяет специфичное для универсума понятие позиций. Основная документация по позициям находится по адресу scala.reflect.api.Position.

Определяющие классы
Positions

abstract тип RuntimeClass >: Null <: AnyRef

Абстрагирует представление класса во время выполнения на базовой платформе.

Определяющие классы
Mirrors

abstract тип TermName >: Null <: TermNameApi with Name

Абстрактный тип имен, представляющих типы.

Определяющие классы
Names

abstract тип TypeName >: Null <: TypeNameApi with Name

Абстрактный тип имен, представляющих термины.

Определяющие классы
Names

Абстрактные члены значения

abstract val Alternative: AlternativeExtractor

Конструктор/экстрактор для экземпляров Alternative.

Определяющие классы
Trees

implicit abstract val AlternativeTag: ClassTag[Alternative]

Определяющие классы
ImplicitTags

abstract val Annotated: AnnotatedExtractor

Конструктор/экстрактор для экземпляров Annotated.

Определяющие классы
Trees

implicit abstract val AnnotatedTag: ClassTag[Annotated]

Определяющие классы
ImplicitTags

abstract val AnnotatedType: AnnotatedTypeExtractor

Конструктор/экстрактор для экземпляров AnnotatedType.

Определяющие классы
Types

implicit abstract val AnnotatedTypeTag: ClassTag[AnnotatedType]

Определяющие классы
ImplicitTags

abstract val Annotation: AnnotationExtractor

Конструктор/экстрактор для экземпляров Annotation.

Определяющие классы
Annotations

implicit abstract val AnnotationTag: ClassTag[Annotation]

Определяющие классы
ImplicitTags

abstract val AppliedTypeTree: AppliedTypeTreeExtractor

Конструктор/экстрактор для экземпляров AppliedTypeTree.

Определяющие классы
Trees

implicit abstract val AppliedTypeTreeTag: ClassTag[AppliedTypeTree]

Определяющие классы
ImplicitTags

abstract val Apply: ApplyExtractor

Конструктор/экстрактор для экземпляров Apply.

Определяющие классы
Trees

implicit abstract val ApplyTag: ClassTag[Apply]

Определяющие классы
ImplicitTags

abstract val Assign: AssignExtractor

Конструктор/экстрактор для экземпляров Assign.

Определяющие классы
Trees

implicit abstract val AssignTag: ClassTag[Assign]

Определяющие классы
ImplicitTags

abstract val Bind: BindExtractor

Конструктор/экстрактор для экземпляров Bind.

Определяющие классы
Trees

implicit abstract val BindTag: ClassTag[Bind]

Определяющие классы
ImplicitTags

abstract val Block: BlockExtractor

Конструктор/экстрактор для экземпляров Block.

Definition Classes
Trees

implicit abstract val BlockTag: ClassTag[Block]

Definition Classes
ImplicitTags

abstract val BoundedWildcardType: BoundedWildcardTypeExtractor

Конструктор/экстрактор для экземпляров BoundedWildcardType.

Definition Classes
Types

implicit abstract val BoundedWildcardTypeTag: ClassTag[BoundedWildcardType]

Definition Classes
ImplicitTags

abstract val CaseDef: CaseDefExtractor

Конструктор/экстрактор для экземпляров CaseDef.

Definition Classes
Trees

implicit abstract val CaseDefTag: ClassTag[CaseDef]

Definition Classes
ImplicitTags

abstract val ClassDef: ClassDefExtractor

Конструктор/экстрактор для экземпляров ClassDef.

Definition Classes
Trees

implicit abstract val ClassDefTag: ClassTag[ClassDef]

Definition Classes
ImplicitTags

abstract val ClassInfoType: ClassInfoTypeExtractor

Конструктор/экстрактор для экземпляров ClassInfoType.

Definition Classes
Types

implicit abstract val ClassInfoTypeTag: ClassTag[ClassInfoType]

Definition Classes
ImplicitTags

implicit abstract val ClassSymbolTag: ClassTag[ClassSymbol]

Definition Classes
ImplicitTags

implicit abstract val CompoundTypeTag: ClassTag[CompoundType]

Definition Classes
ImplicitTags

abstract val CompoundTypeTree: CompoundTypeTreeExtractor

Конструктор/экстрактор для экземпляров CompoundTypeTree.

Definition Classes
Trees

implicit abstract val CompoundTypeTreeTag: ClassTag[CompoundTypeTree]

Definition Classes
ImplicitTags

abstract val Constant: ConstantExtractor

Конструктор/экстрактор для экземпляров Constant.

Definition Classes
Constants

implicit abstract val ConstantTag: ClassTag[Constant]

Definition Classes
ImplicitTags

abstract val ConstantType: ConstantTypeExtractor

Конструктор/экстрактор для экземпляров ConstantType.

Определяющие классы
Types

implicit abstract val ConstantTypeTag: ClassTag[ConstantType]

Определяющие классы
ImplicitTags

abstract val DefDef: DefDefExtractor

Конструктор/экстрактор для экземпляров DefDef.

Определяющие классы
Trees

implicit abstract val DefDefTag: ClassTag[DefDef]

Определяющие классы
ImplicitTags

implicit abstract val DefTreeTag: ClassTag[DefTree]

Определяющие классы
ImplicitTags

abstract val EmptyTree: Tree

Пустое дерево

Определяющие классы
Trees

abstract val ExistentialType: ExistentialTypeExtractor

Конструктор/экстрактор для экземпляров ExistentialType.

Определяющие классы
Types

implicit abstract val ExistentialTypeTag: ClassTag[ExistentialType]

Определяющие классы
ImplicitTags

abstract val ExistentialTypeTree: ExistentialTypeTreeExtractor

Конструктор/экстрактор для экземпляров ExistentialTypeTree.

Определяющие классы
Trees

implicit abstract val ExistentialTypeTreeTag: ClassTag[ExistentialTypeTree]

Определяющие классы
ImplicitTags

abstract val Flag: FlagValues

Модуль, содержащий все возможные значения, которые могут составлять наборы флагов.

Определяющие классы
FlagSets

implicit abstract val FlagSetTag: ClassTag[FlagSet]

Определяющие классы
ImplicitTags

implicit abstract val FreeTermSymbolTag: ClassTag[FreeTermSymbol]

Тег, сохраняющий идентичность FreeTermSymbol при стирании. Может использоваться для сопоставления с образцом, проверки экземпляров, сериализации и т. п.

Определяющие классы
Internals

implicit abstract val FreeTypeSymbolTag: ClassTag[FreeTypeSymbol]

Тег, сохраняющий идентичность FreeTermSymbol при стирании. Может использоваться для сопоставления с образцом, проверки экземпляров, сериализации и т. п.

Определяющие классы
Internals

abstract val Function: FunctionExtractor

Конструктор/экстрактор для экземпляров Function.

Определяющие классы
Trees

implicit abstract val FunctionTag: ClassTag[Function]

Классы-определения
ImplicitTags

неявный абстрактный значение GenericApplyTag: ClassTag[GenericApply]

Классы-определения
ImplicitTags

абстрактный метод Ident(sym: Symbol): Ident

Метод-фабрика для узлов Ident.

Классы-определения
Trees

абстрактный значение Ident: IdentExtractor

Конструктор/экстрактор для экземпляров Ident.

Классы-определения
Trees

неявный абстрактный значение IdentTag: ClassTag[Ident]

Классы-определения
ImplicitTags

абстрактный значение If: IfExtractor

Конструктор/экстрактор для экземпляров If.

Классы-определения
Trees

неявный абстрактный значение IfTag: ClassTag[If]

Классы-определения
ImplicitTags

неявный абстрактный значение ImplDefTag: ClassTag[ImplDef]

Классы-определения
ImplicitTags

абстрактный значение Import: ImportExtractor

Конструктор/экстрактор для экземпляров Import.

Классы-определения
Trees

абстрактный значение ImportSelector: ImportSelectorExtractor

Конструктор/экстрактор для экземпляров ImportSelector.

Классы-определения
Trees

неявный абстрактный значение ImportSelectorTag: ClassTag[ImportSelector]

Классы-определения
ImplicitTags

неявный абстрактный значение ImportTag: ClassTag[Import]

Классы-определения
ImplicitTags

неявный абстрактный значение JavaArgumentTag: ClassTag[JavaArgument]

Классы-определения
ImplicitTags

абстрактный значение LabelDef: LabelDefExtractor

Конструктор/экстрактор для экземпляров LabelDef.

Классы-определения
Trees

неявный абстрактный значение LabelDefTag: ClassTag[LabelDef]

Классы-определения
ImplicitTags

абстрактный значение Literal: LiteralExtractor

Конструктор/экстрактор для экземпляров Literal.

Классы-определения
Trees

неявный абстрактный значение LiteralTag: ClassTag[Literal]

Классы-определения
ImplicitTags

abstract val Match: MatchExtractor

Конструктор/экстрактор для экземпляров Match.

Definition Classes
Trees

implicit abstract val MatchTag: ClassTag[Match]

Definition Classes
ImplicitTags

implicit abstract val MemberDefTag: ClassTag[MemberDef]

Definition Classes
ImplicitTags

implicit abstract val MemberScopeTag: ClassTag[MemberScope]

Definition Classes
ImplicitTags

implicit abstract val MethodSymbolTag: ClassTag[MethodSymbol]

Definition Classes
ImplicitTags

abstract val MethodType: MethodTypeExtractor

Конструктор/экстрактор для экземпляров MethodType.

Definition Classes
Types

implicit abstract val MethodTypeTag: ClassTag[MethodType]

Definition Classes
ImplicitTags

implicit abstract val MirrorTag: ClassTag[Mirror]

Definition Classes
ImplicitTags

abstract val Modifiers: ModifiersExtractor

Конструктор/экстрактор для экземпляров Modifiers.

Definition Classes
Trees

implicit abstract val ModifiersTag: ClassTag[Modifiers]

Definition Classes
ImplicitTags

abstract val ModuleDef: ModuleDefExtractor

Конструктор/экстрактор для экземпляров ModuleDef.

Definition Classes
Trees

implicit abstract val ModuleDefTag: ClassTag[ModuleDef]

Definition Classes
ImplicitTags

implicit abstract val ModuleSymbolTag: ClassTag[ModuleSymbol]

Definition Classes
ImplicitTags

implicit abstract val NameTag: ClassTag[Name]

Definition Classes
ImplicitTags

implicit abstract val NameTreeTag: ClassTag[NameTree]

Definition Classes
ImplicitTags

abstract val NamedArg: NamedArgExtractor

Конструктор/экстрактор для экземпляров NamedArg.

Definition Classes
Trees

явное абстрактное val NamedArgTag: ClassTag[NamedArg]

Определяющие классы
ImplicitTags

абстрактное val New: NewExtractor

Конструктор/экстрактор для экземпляров New.

Определяющие классы
Trees

явное абстрактное val NewTag: ClassTag[New]

Определяющие классы
ImplicitTags

абстрактное val NoFlags: FlagSet

Пустой набор флагов

Определяющие классы
FlagSets

абстрактное val NoPosition: Position

Специальное "отсутствующее" положение.

Определяющие классы
Positions

абстрактное val NoPrefix: Type

Эта константа используется как специальное значение, обозначающее пустой префикс в пути зависимого типа. Например, x.type представлен как SingleType(NoPrefix, <x>), где <x> обозначает символ x.

Определяющие классы
Types

абстрактное val NoSymbol: Symbol

Специальный "отсутствующий" символ. Часто используется в API для обозначения значения по умолчанию или пустого значения.

Определяющие классы
Symbols

абстрактное val NoType: Type

Эта константа используется как специальное значение, указывающее, что нет осмысленного типа.

Определяющие классы
Types

абстрактное val NullaryMethodType: NullaryMethodTypeExtractor

Конструктор/экстрактор для экземпляров NullaryMethodType.

Определяющие классы
Types

явное абстрактное val NullaryMethodTypeTag: ClassTag[NullaryMethodType]

Определяющие классы
ImplicitTags

абстрактное val PackageDef: PackageDefExtractor

Конструктор/экстрактор для экземпляров PackageDef.

Определяющие классы
Trees

явное абстрактное val PackageDefTag: ClassTag[PackageDef]

Определяющие классы
ImplicitTags

абстрактное val PolyType: PolyTypeExtractor

Конструктор/экстрактор для экземпляров PolyType.

Определяющие классы
Types

явное абстрактное val PolyTypeTag: ClassTag[PolyType]

Определяющие классы
ImplicitTags

явное абстрактное val PositionTag: ClassTag[Position]

Определяющие классы
ImplicitTags

абстрактное val RefTree: RefTreeExtractor

Конструктор/экстрактор для экземпляров RefTree.

Определяющие классы
Trees

явный абстрактный val RefTreeTag: ClassTag[RefTree]

Определяющие классы
ImplicitTags

абстрактный val ReferenceToBoxed: ReferenceToBoxedExtractor

Конструктор/экстрактор для экземпляров ReferenceToBoxed.

Определяющие классы
Internals

явный абстрактный val ReferenceToBoxedTag: ClassTag[ReferenceToBoxed]

Тег, сохраняющий идентичность ReferenceToBoxed при стирании. Может использоваться для сопоставления с образцом, проверки экземпляров, сериализации и т. п.

Определяющие классы
Internals

абстрактный val RefinedType: RefinedTypeExtractor

Конструктор/экстрактор для экземпляров RefinedType.

Определяющие классы
Types

явный абстрактный val RefinedTypeTag: ClassTag[RefinedType]

Определяющие классы
ImplicitTags

абстрактный val Return: ReturnExtractor

Конструктор/экстрактор для экземпляров Return.

Определяющие классы
Trees

явный абстрактный val ReturnTag: ClassTag[Return]

Определяющие классы
ImplicitTags

явный абстрактный val RuntimeClassTag: ClassTag[RuntimeClass]

Определяющие классы
ImplicitTags

явный абстрактный val ScopeTag: ClassTag[Scope]

Определяющие классы
ImplicitTags

абстрактный def Select(qualifier: Tree, sym: Symbol): Select

Метод-фабрика для узлов Select.

Определяющие классы
Trees

абстрактный val Select: SelectExtractor

Конструктор/экстрактор для экземпляров Select.

Определяющие классы
Trees

абстрактный val SelectFromTypeTree: SelectFromTypeTreeExtractor

Конструктор/экстрактор для экземпляров SelectFromTypeTree.

Определяющие классы
Trees

явный абстрактный val SelectFromTypeTreeTag: ClassTag[SelectFromTypeTree]

Определяющие классы
ImplicitTags

явный абстрактный val SelectTag: ClassTag[Select]

Определяющие классы
ImplicitTags

абстрактный val SingleType: SingleTypeExtractor

Конструктор/экстрактор для экземпляров SingleType.

Определяющие классы
Types

явное абстрактное значение SingleTypeTag: ClassTag[SingleType]

Определяющие классы
ImplicitTags

явное абстрактное значение SingletonTypeTag: ClassTag[SingletonType]

Определяющие классы
ImplicitTags

абстрактное значение SingletonTypeTree: SingletonTypeTreeExtractor

Конструктор/экстрактор для SingletonTypeTree экземпляров.

Определяющие классы
Trees

явное абстрактное значение SingletonTypeTreeTag: ClassTag[SingletonTypeTree]

Определяющие классы
ImplicitTags

абстрактное значение Star: StarExtractor

Конструктор/экстрактор для Star экземпляров.

Определяющие классы
Trees

явное абстрактное значение StarTag: ClassTag[Star]

Определяющие классы
ImplicitTags

абстрактное значение Super: SuperExtractor

Конструктор/экстрактор для Super экземпляров.

Определяющие классы
Trees

явное абстрактное значение SuperTag: ClassTag[Super]

Определяющие классы
ImplicitTags

абстрактное значение SuperType: SuperTypeExtractor

Конструктор/экстрактор для SuperType экземпляров.

Определяющие классы
Types

явное абстрактное значение SuperTypeTag: ClassTag[SuperType]

Определяющие классы
ImplicitTags

явное абстрактное значение SymTreeTag: ClassTag[SymTree]

Определяющие классы
ImplicitTags

явное абстрактное значение SymbolTag: ClassTag[Symbol]

Определяющие классы
ImplicitTags

абстрактное значение Template: TemplateExtractor

Конструктор/экстрактор для Template экземпляров.

Определяющие классы
Trees

явное абстрактное значение TemplateTag: ClassTag[Template]

Определяющие классы
ImplicitTags

абстрактное значение TermName: TermNameExtractor

Конструктор/экстрактор для TermName экземпляров.

Определяющие классы
Names

явное абстрактное значение TermNameTag: ClassTag[TermName]

Определяющие классы
ImplicitTags

неявный абстрактный значение TermSymbolTag: ClassTag[TermSymbol]

Определяющие классы
ImplicitTags

неявный абстрактный значение TermTreeTag: ClassTag[TermTree]

Определяющие классы
ImplicitTags

абстрактный метод This(sym: Symbol): Tree

Метод-фабрика для узлов This.

Определяющие классы
Trees

абстрактный значение This: ThisExtractor

Конструктор/экстрактор для экземпляров This.

Определяющие классы
Trees

неявный абстрактный значение ThisTag: ClassTag[This]

Определяющие классы
ImplicitTags

абстрактный значение ThisType: ThisTypeExtractor

Конструктор/экстрактор для экземпляров ThisType.

Определяющие классы
Types

неявный абстрактный значение ThisTypeTag: ClassTag[ThisType]

Определяющие классы
ImplicitTags

абстрактный значение Throw: ThrowExtractor

Конструктор/экстрактор для экземпляров Throw.

Определяющие классы
Trees

неявный абстрактный значение ThrowTag: ClassTag[Throw]

Определяющие классы
ImplicitTags

неявный абстрактный значение TreeCopierTag: ClassTag[TreeCopier]

Определяющие классы
ImplicitTags

неявный абстрактный значение TreeTag: ClassTag[Tree]

Определяющие классы
ImplicitTags

абстрактный значение Try: TryExtractor

Конструктор/экстрактор для экземпляров Try.

Определяющие классы
Trees

неявный абстрактный значение TryTag: ClassTag[Try]

Определяющие классы
ImplicitTags

неявный абстрактный значение TypTreeTag: ClassTag[TypTree]

Определяющие классы
ImplicitTags

абстрактный значение TypeApply: TypeApplyExtractor

Конструктор/экстрактор для экземпляров TypeApply.

Определяющие классы
Trees

неявный абстрактный значение TypeApplyTag: ClassTag[TypeApply]

Определяющие классы
ImplicitTags

абстрактный значение TypeBounds: TypeBoundsExtractor

Конструктор/экстрактор для экземпляров TypeBounds.

Классы-определения
Types

неявный абстрактный val TypeBoundsTag: ClassTag[TypeBounds]

Классы-определения
ImplicitTags

абстрактный val TypeBoundsTree: TypeBoundsTreeExtractor

Конструктор/экстрактор для экземпляров TypeBoundsTree.

Классы-определения
Trees

неявный абстрактный val TypeBoundsTreeTag: ClassTag[TypeBoundsTree]

Классы-определения
ImplicitTags

абстрактный val TypeDef: TypeDefExtractor

Конструктор/экстрактор для экземпляров TypeDef.

Классы-определения
Trees

неявный абстрактный val TypeDefTag: ClassTag[TypeDef]

Классы-определения
ImplicitTags

абстрактный val TypeName: TypeNameExtractor

Конструктор/экстрактор для экземпляров TypeName.

Классы-определения
Names

неявный абстрактный val TypeNameTag: ClassTag[TypeName]

Классы-определения
ImplicitTags

абстрактный val TypeRef: TypeRefExtractor

Конструктор/экстрактор для экземпляров TypeRef.

Классы-определения
Types

неявный абстрактный val TypeRefTag: ClassTag[TypeRef]

Классы-определения
ImplicitTags

неявный абстрактный val TypeSymbolTag: ClassTag[TypeSymbol]

Классы-определения
ImplicitTags

неявный абстрактный val TypeTagg: ClassTag[Type]

Классы-определения
ImplicitTags

абстрактный def TypeTree(tp: Type): TypeTree

Метод-фабрика для узлов TypeTree.

Классы-определения
Trees

абстрактный val TypeTree: TypeTreeExtractor

Конструктор/экстрактор для экземпляров TypeTree.

Классы-определения
Trees

неявный абстрактный val TypeTreeTag: ClassTag[TypeTree]

Классы-определения
ImplicitTags

абстрактный val Typed: TypedExtractor

Конструктор/экстрактор для экземпляров Typed.

Классы-определения
Trees

неявный абстрактный val TypedTag: ClassTag[Typed]

Definition Classes
ImplicitTags

abstract val UnApply: UnApplyExtractor

Конструктор/экстрактор для экземпляров UnApply.

Definition Classes
Trees

implicit abstract val UnApplyTag: ClassTag[UnApply]

Definition Classes
ImplicitTags

abstract val ValDef: ValDefExtractor

Конструктор/экстрактор для экземпляров ValDef.

Definition Classes
Trees

implicit abstract val ValDefTag: ClassTag[ValDef]

Definition Classes
ImplicitTags

implicit abstract val ValOrDefDefTag: ClassTag[ValOrDefDef]

Definition Classes
ImplicitTags

abstract val WildcardType: Type

Объект, представляющий неизвестный тип, используемый во время вывода типов. Если вы видите WildcardType вне вывода типов, это, скорее всего, ошибка.

Definition Classes
Types

implicit abstract def addFlagOps(left: FlagSet): FlagOps

API экземпляров FlagSet.

Definition Classes
FlagSets

abstract def annotationToTree(ann: Annotation): Tree

Attributes
protected[scala]
Definition Classes
Annotations

abstract def appliedType(sym: Symbol, args: Type*): Type

Definition Classes
Types
См. также

appliedType

abstract def appliedType(sym: Symbol, args: List[Type]): Type

Definition Classes
Types
См. также

appliedType

abstract def appliedType(tycon: Type, args: Type*): Type

Definition Classes
Types
См. также

appliedType

abstract def appliedType(tycon: Type, args: List[Type]): Type

Создатель применений типов.

Полезно для объединения и создания типов из универсальных. Например:

scala> val boolType = typeOf[Boolean]
boolType: reflect.runtime.universe.Type = Boolean

scala> val optionType = typeOf[Option[_]]
optionType: reflect.runtime.universe.Type = Option[_]

scala> appliedType(optionType.typeConstructor, boolType)
res0: reflect.runtime.universe.Type = Option[Boolean]
Definition Classes
Types

abstract def atPos[T <: Tree](pos: Position)(tree: T): T

Присваивает заданную позицию всем узлам без позиции данного AST.

Определяющие классы
Positions

abstract val definitions: DefinitionsApi

Значение, содержащее все стандартные определения в DefinitionsApi

Определяющие классы
StandardDefinitions

abstract def glb(ts: List[Type]): Type

Наибольшая нижняя граница списка типов, определяемая <:<.

Определяющие классы
Types

abstract val internal: Internal

Определяющие классы
Internals
См. также

InternalApi

abstract def lub(xs: List[Type]): Type

Наименьшая верхняя граница списка типов, определяемая <:<.

Определяющие классы
Types

abstract def newCodePrinter(out: PrintWriter, tree: Tree, printRootPkg: Boolean): TreePrinter

Зацепка для определения того, что означает showCode(...).

Атрибуты
protected
Определяющие классы
Printers

abstract def newLazyTreeCopier: TreeCopier

Создает ленивый копировщик дерева.

Определяющие классы
Trees

abstract def newRawTreePrinter(out: PrintWriter): TreePrinter

Зацепка для определения того, что означает showRaw(...).

Атрибуты
protected
Определяющие классы
Printers

abstract def newStrictTreeCopier: TreeCopier

Создает строгий копировщик дерева.

Определяющие классы
Trees

abstract def newTreePrinter(out: PrintWriter): TreePrinter

Зацепка для определения того, что означает show(...).

Атрибуты
protected
Определяющие классы
Printers

abstract val noSelfType: ValDef

Пустое отложенное определение значения, соответствующее: val _: _ Это используется в качестве заполнителя в параметре self Template, если нет определения собственного значения типа self.

Определяющие классы
Trees

abstract val pendingSuperCall: Apply

Пустой вызов конструктора суперкласса, соответствующий: super.<init>() Это используется в качестве заполнителя в теле основного конструктора в шаблонах классов, чтобы обозначить точку вставки вызова конструктора суперкласса после того, как typechecker определит суперкласс данного шаблона.

Определяющие классы
Trees

abstract val rootMirror: Mirror

Корневое зеркало этой вселенной. Это зеркало содержит стандартные классы и типы Scala, такие как Any, AnyRef, AnyVal, Nothing, Null, и все классы, загруженные из scala-library, которые используются во всех зеркалах в окружающей вселенной.

Definition Classes
Mirrors

abstract def show(position: Position): String

Отображает красивое представление позиции.

Definition Classes
Printers

abstract def show(flags: FlagSet): String

Отображает красивое представление набора флагов.

Definition Classes
Printers

abstract def show(name: Name): String

Отображает красивое представление имени.

Definition Classes
Printers

abstract def showDecl(sym: Symbol): String

Отображает строку, представляющую объявление этого символа на Scala.

Definition Classes
Printers

abstract def symbolOf[T](implicit arg0: WeakTypeTag[T]): TypeSymbol

Символ типа x, полученный из тега типа.

Definition Classes
TypeTags

abstract val termNames: TermNamesApi

Значение, содержащее все стандартные имена терминов.

Definition Classes
StandardNames

abstract def treeToAnnotation(tree: Tree): Annotation

Attributes
protected[scala]
Definition Classes
Annotations

abstract val typeNames: TypeNamesApi

Значение, содержащее все стандартные имена типов.

Definition Classes
StandardNames

abstract def wrappingPos(trees: List[Tree]): Position

Позиция, охватывающая непустой набор деревьев. Точка позиции охватывания — точка позиции первого дерева. Если все некоторые деревья не являются синтетическими, возвращает позицию диапазона, охватывающую несинтетические деревья. В противном случае возвращает синтетическую позицию смещения для указания.

Definition Classes
Positions

abstract def wrappingPos(default: Position, trees: List[Tree]): Position

Позиция, охватывающая набор деревьев. Точка позиции охватывания — точка позиции по умолчанию. Если некоторые из деревьев являются диапазонами, возвращает позицию диапазона, охватывающую все диапазоны. В противном случае возвращает позицию по умолчанию.

Definition Classes
Positions

abstract def Apply(sym: Symbol, args: Tree*): Tree

Метод-фабрика для узлов Apply.

Definition Classes
Trees
Annotations
@deprecated
Deprecated

(Since version 2.10.1) use q"$sym(..$args)" instead

abstract def ApplyConstructor(tpt: Tree, args: List[Tree]): Tree

Список аргументов 0-1 new, основанный на дереве типов.

Definition Classes
Trees
Annotations
@deprecated
Deprecated

(Since version 2.10.1) use q"new $tpt(..$args)" instead

abstract def Bind(sym: Symbol, body: Tree): Bind

Фабричный метод для узлов Bind.

Definition Classes
Trees
Annotations
@deprecated
Deprecated

(Since version 2.10.1) use the canonical Bind constructor to create a bind and then initialize its symbol manually

abstract def Block(stats: Tree*): Block

Фабричный метод для узлов Block. Сглаживает непосредственно вложенные блоки.

Definition Classes
Trees
Annotations
@deprecated
Deprecated

(Since version 2.10.1) use q"{..$stats}" instead. Flatten directly nested blocks manually if needed

abstract def CaseDef(pat: Tree, body: Tree): CaseDef

Фабричный метод для узлов CaseDef.

Definition Classes
Trees
Annotations
@deprecated
Deprecated

(Since version 2.10.1) use cq"$pat => $body" instead

abstract def Ident(name: String): Ident

Фабричный метод для узлов Ident.

Definition Classes
Trees
Annotations
@deprecated
Deprecated

(Since version 2.10.1) use Ident(TermName(name)) instead

abstract def New(sym: Symbol, args: Tree*): Tree

Список аргументов 0-1 new, основанный на символе.

Definition Classes
Trees
Annotations
@deprecated
Deprecated

(Since version 2.10.1) use q"new ${sym.toType}(..$args)" instead

abstract def New(tpe: Type, args: Tree*): Tree

Список аргументов 0-1 new, основанный на типе.

Definition Classes
Trees
Annotations
@deprecated
Deprecated

(Since version 2.10.1) use q"new $tpe(..$args)" instead

abstract def New(tpt: Tree, argss: List[List[Tree]]): Tree

Фабричный метод для создания объекта new tpt(args_1)...(args_n). New(t, as) расширяется до: (new t).<init>(as)

Definition Classes
Trees
Annotations
@deprecated
Deprecated

(Since version 2.10.1) use q"new $tpt(...$argss)" instead

abstract def Select(qualifier: Tree, name: String): Select

Метод-фабрика для узлов Select. Строковый аргумент name предполагается представляющим TermName.

Definition Classes
Trees
Annotations
@deprecated
Устарело

(С версии 2.10.1) используйте Select(tree, TermName(name)) вместо этого

абстрактный def Super(sym: Symbol, mix: TypeName): Tree

Метод-фабрика для узлов Super.

Definition Classes
Trees
Annotations
@deprecated
Устарело

(С версии 2.10.1) используйте q"$sym.super[$mix].x".qualifier вместо этого

абстрактный def Throw(tpe: Type, args: Tree*): Throw

Метод-фабрика для узлов Throw.

Definition Classes
Trees
Annotations
@deprecated
Устарело

(С версии 2.10.1) используйте q"throw new $tpe(..$args)" вместо этого

абстрактный def Try(body: Tree, cases: (Tree, Tree)*): Try

Метод-фабрика для узлов Try.

Definition Classes
Trees
Annotations
@deprecated
Устарело

(С версии 2.10.1) преобразуйте случаи в casedefs и используйте q"try $body catch { case ..$newcases }" вместо этого

абстрактный val compat: Compat

Обеспечивает обогащения для обеспечения обратной совместимости между Scala 2.10 и Scala 2.11. Если в вашей рефлексивной программе для Scala 2.10 вы использовали что-то, что теперь стало внутренней API, один compat._ импорт исправит ситуацию.

Definition Classes
Internals
Annotations
@deprecated
Устарело

(С версии 2.13.0) совместимость со Scala 2.10, срок действия которой истек

абстрактный val emptyValDef: ValDef

Definition Classes
Trees
Annotations
@deprecated
Устарело

(С версии 2.11.0) используйте noSelfType вместо этого

абстрактный def newTermName(s: String): TermName

Создайте новое имя для термина.

Definition Classes
Names
Annotations
@deprecated
Устарело

(С версии 2.11.0) используйте TermName вместо этого

абстрактный def newTypeName(s: String): TypeName

Создаёт новое имя типа.

Definition Classes
Names
Annotations
@deprecated
Устарело

(С версии 2.11.0) используйте TypeName вместо этого

абстрактный val nme: TermNamesApi

Definition Classes
StandardNames
Annotations
@deprecated
Устарело

(С версии 2.11.0) используйте termNames вместо этого

См. также

termNames

абстрактный val tpnme: TypeNamesApi

Definition Classes
StandardNames
Annotations
@deprecated
Устарело

(С версии 2.11.0) используйте typeNames вместо этого

См. также

typeNames

Члены-значения

объект Expr extends java.io.Serializable

Конструктор/экстрактор для Expr.

Может быть полезен при работе с деревом и необходимости его вставки в вызов reify, в котором дерево предварительно должно быть обернуто в expr.

Основной источник информации об expr — страница scala.reflect.api.Exprs.

Определяющие классы
Exprs

объект Liftable extends Universe.StandardLiftableInstances

Компаньон для Liftable класса типов, содержащего стандартные экземпляры и предоставляющего вспомогательный метод apply для упрощения создания новых экземпляров.

Определяющие классы
Liftables

объект Unliftable extends Universe.StandardUnliftableInstances

Компаньон для Unliftable класса типов, содержащего стандартные экземпляры и предоставляющего вспомогательный метод apply для упрощения создания новых экземпляров.

Определяющие классы
Liftables

объект BooleanFlag extends java.io.Serializable

Определяющие классы
Printers

объект TypeTag extends java.io.Serializable

Теги типов, соответствующие примитивным типам, и конструктор/экстрактор для WeakTypeTags.

Определяющие классы
TypeTags

объект WeakTypeTag extends java.io.Serializable

Теги типов, соответствующие примитивным типам, и конструктор/экстрактор для WeakTypeTags.

Определяющие классы
TypeTags

final метод !=(arg0: Any): Boolean

Определяющие классы
AnyRef → Any

final метод ##(): Int

Определяющие классы
AnyRef → Any

метод +(other: String): String

Неявный
Этот член добавлен неявным преобразованием из Universe вany2stringadd[Universe] при помощи метода any2stringadd в scala.Predef.
Определяющие классы
any2stringadd

метод ->[B](y: B): (Universe, B)

Неявный
Этот член добавлен неявным преобразованием из Universe вArrowAssoc[Universe] при помощи метода ArrowAssoc в scala.Predef.
Определяющие классы
ArrowAssoc
Аннотации
@inline()

final метод ==(arg0: Any): Boolean

Определяющие классы
AnyRef → Any

метод Modifiers(flags: FlagSet): Modifiers

Фабрика для Modifiers экземпляров.

Определяющие классы
Trees

метод Modifiers(flags: FlagSet, privateWithin: Name): Modifiers

Фабрика для Modifiers экземпляров.

Определяющие классы
Trees

ленивая переменная NoMods: Modifiers

Пустой Modifiers объект: без флагов, пустая аннотация видимости и без аннотаций Scala.

Определяющие классы
Trees

final метод asInstanceOf[T0]: T0

Определяющие классы
Any

def clone(): AnyRef

Атрибуты
protected[java.lang]
Определяющие классы
AnyRef
Аннотации
@throws(classOf[java.lang.CloneNotSupportedException]) @native()

def ensuring(cond: (Universe) => Boolean, msg: => Any): Universe

Неявный
Этот член добавляется неявным преобразованием из Universe вEnsuring[Universe] с помощью метода Ensuring в scala.Predef.
Определяющие классы
Ensuring

def ensuring(cond: (Universe) => Boolean): Universe

Неявный
Этот член добавляется неявным преобразованием из Universe вEnsuring[Universe] с помощью метода Ensuring в scala.Predef.
Определяющие классы
Ensuring

def ensuring(cond: Boolean, msg: => Any): Universe

Неявный
Этот член добавляется неявным преобразованием из Universe вEnsuring[Universe] с помощью метода Ensuring в scala.Predef.
Определяющие классы
Ensuring

def ensuring(cond: Boolean): Universe

Неявный
Этот член добавляется неявным преобразованием из Universe вEnsuring[Universe] с помощью метода Ensuring в scala.Predef.
Определяющие классы
Ensuring

final def eq(arg0: AnyRef): Boolean

Определяющие классы
AnyRef

def equals(arg0: AnyRef): Boolean

Определяющие классы
AnyRef → Any

def finalize(): Unit

Атрибуты
protected[java.lang]
Определяющие классы
AnyRef
Аннотации
@throws(classOf[java.lang.Throwable])

def formatted(fmtstr: String): String

Неявный
Этот член добавляется неявным преобразованием из Universe вStringFormat[Universe] с помощью метода StringFormat в scala.Predef.
Определяющие классы
StringFormat
Аннотации
@inline()

final def getClass(): Class[_ <: AnyRef]

Определяющие классы
AnyRef → Any
Аннотации
@native()

def hashCode(): Int

Определяющие классы
AnyRef → Any
Аннотации
@native()

final def isInstanceOf[T0]: Boolean

Определяющие классы
Any

def itransform(transformer: Transformer, tree: Tree): Tree

Делегирует стратегию преобразования scala.reflect.internal.Trees, поскольку сопоставление с образцом по абстрактным типам, которые у нас есть здесь, снижает производительность.

Атрибуты
protected
Определяющие классы
Trees

final def ne(arg0: AnyRef): Boolean

Определяющие классы
AnyRef

final def notify(): Unit

Определяющие классы
AnyRef
Аннотации
@native()

final def notifyAll(): Unit

Определяющие классы
AnyRef
Аннотации
@native()

macro def reify[T](expr: T): Expr[T]

Используйте reify для получения абстрактного синтаксического дерева, представляющего заданное выражение Scala.

Например:

val five = reify{ 5 }         // Literal(Constant(5))
reify{ 5.toString }           // Apply(Select(Literal(Constant(5)), TermName("toString")), List())
reify{ five.splice.toString } // Apply(Select(five, TermName("toString")), List())

Полученное дерево зависит от Вселенной reify, из которой был вызван метод.

Используйте scala.reflect.api.Exprs#Expr.splice для вставки существующего выражения в вызов reify. Используйте Expr для преобразования Tree в выражение, которое можно вставить.

def render(what: Any, mkPrinter: (PrintWriter) => TreePrinter, printTypes: BooleanFlag = None, printIds: BooleanFlag = None, printOwners: BooleanFlag = None, printKinds: BooleanFlag = None, printMirrors: BooleanFlag = None, printPositions: BooleanFlag = None): String

Атрибуты
protected
Определяющие классы
Printers

def show(any: Any, printTypes: BooleanFlag = None, printIds: BooleanFlag = None, printOwners: BooleanFlag = None, printKinds: BooleanFlag = None, printMirrors: BooleanFlag = None, printPositions: BooleanFlag = None): String

Отображает представление артефакта рефлексии в виде десугаризованного кода Scala.

Определяющие классы
Printers

def showCode(tree: Tree, printTypes: BooleanFlag = None, printIds: BooleanFlag = None, printOwners: BooleanFlag = None, printPositions: BooleanFlag = None, printRootPkg: Boolean = false): String

Отображает код переданного дерева, таким образом, что: 1) его можно позже скомпилировать с помощью scalac, сохранив то же значение, 2) он выглядит красиво. #1 доступен для деревьев без атрибутов и с атрибутами #2 более или менее правильный отступ, но в настоящее время многие операции десугаризации оставлены, и мы планируем улучшить это в будущем. Параметры printTypes, printIds, printPositions имеют то же значение, что и для TreePrinter printRootPkg доступен только для деревьев с атрибутами.

Определяющие классы
Printers

def showRaw(position: Position): String

Отображает внутреннюю структуру позиции.

Определяющие классы
Printers

def showRaw(flags: FlagSet): String

Отображает внутреннюю структуру набора флагов.

Определяющие классы
Printers

def showRaw(name: Name): String

Отображает внутреннюю структуру имени.

Definition Classes
Printers

def showRaw(any: Any, printTypes: BooleanFlag = None, printIds: BooleanFlag = None, printOwners: BooleanFlag = None, printKinds: BooleanFlag = None, printMirrors: BooleanFlag = None, printPositions: BooleanFlag = None): String

Отображает внутреннюю структуру артефакта рефлексии как визуализацию дерева синтаксиса Scala.

Definition Classes
Printers

final def synchronized[T0](arg0: => T0): T0

Definition Classes
AnyRef

def toString(): String

Definition Classes
AnyRef → Any

val treeCopy: TreeCopier

Стандартный (ленивый) копировщик деревьев.

Definition Classes
Trees

def treeToString(tree: Tree): String

По умолчанию деревья выводятся с show

Attributes
protected
Definition Classes
Printers

def typeOf[T](implicit ttag: TypeTag[T]): Type

Сокращение для implicitly[TypeTag[T]].tpe

Definition Classes
TypeTags

def typeTag[T](implicit ttag: TypeTag[T]): TypeTag[T]

Сокращение для implicitly[TypeTag[T]]

Definition Classes
TypeTags

final def wait(): Unit

Definition Classes
AnyRef
Annotations
@throws(classOf[java.lang.InterruptedException])

final def wait(arg0: Long, arg1: Int): Unit

Definition Classes
AnyRef
Annotations
@throws(classOf[java.lang.InterruptedException])

final def wait(arg0: Long): Unit

Definition Classes
AnyRef
Annotations
@throws(classOf[java.lang.InterruptedException]) @native()

def weakTypeOf[T](implicit attag: WeakTypeTag[T]): Type

Сокращение для implicitly[WeakTypeTag[T]].tpe

Definition Classes
TypeTags

def weakTypeTag[T](implicit attag: WeakTypeTag[T]): WeakTypeTag[T]

Сокращение для implicitly[WeakTypeTag[T]]

Definition Classes
TypeTags

def xtransform(transformer: Transformer, tree: Tree): Tree

Предоставляет точку расширения для стратегии преобразования. Обеспечивает совместимость с новыми типами узлов.

Attributes
protected
Definition Classes
Trees

© 2002-2019 EPFL, with contributions from Lightbend.
Licensed under the Apache License, Version 2.0.
https://www.scala-lang.org/api/2.13.0/scala-reflect/scala/reflect/api/Universe.html

Spec-Zone.ru

Настройки Оффлайн Что нового Помощь О нас
Spec-Zone .ru
спецификации, руководства, описания, API