Spec-Zone.ru › Scala 2.13 Reflection

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

абстрактный класс Universe extends api.Universe

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

Уточнение scala.reflect.api.Universe для использования авторами макросов.

Этот универсум обеспечивает возможность изменения отражённых артефактов (например, макросы могут изменять типы деревьев компилятора, добавлять аннотации к символам, представляющим определения и т. д.) и предоставляет доступ к некоторым внутренним функциям компилятора, таким как Symbol.deSkolemize или Tree.attachments.

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

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

new Universe()

Члены типов

абстрактный тип Annotation >: Null <: Universe.AnnotationApi

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

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

тракт AnnotationApi extends AnyRef

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

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

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

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

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

абстрактный тип 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) — представлены непосредственно соответствующими литералами typeString — представлены экземплярами String.Ссылки на классы, обычно созданные с помощью scala.Predef#classOf — представлены как типы.Ссылки на значения перечислений — представлены как символы.

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

Ссылки на значения перечислений представлены как экземпляры scala.reflect.api.Symbols#Symbol, которые в JVM указывают на методы, возвращающие лежащие в основе значения перечисления. Чтобы проверить лежащее в основе перечисление или получить runtime-значение ссылки на перечисление, следует использовать 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
}
Определяющие классы
Constants

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

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

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

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

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

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

тракт Expr[+T] extends Equals with Serializable

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

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

тракт 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 таблицы исходной и целевой Universe по обычным строковым именам, программист несет ответственность за то, чтобы убедиться, что импорт не искажает семантику, например, что 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")

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

Определяющие классы
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

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

Definition Classes
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

явное класс Quasiquote extends AnyRef

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

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

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

абстрактный тип MemberScope >: Null <: Universe.MemberScopeApi with Universe.Scope

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

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

тракт MemberScopeApi extends Universe.ScopeApi

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

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

абстрактный тип Scope >: Null <: Universe.ScopeApi

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

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

тракт ScopeApi extends Iterable[Universe.Symbol]

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

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

тракт DefinitionsApi extends Universe.StandardTypes

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

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

тракт StandardTypes extends AnyRef

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

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

тракт StandardLiftableInstances extends AnyRef

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

тракт StandardUnliftableInstances extends AnyRef

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

тракт NamesApi extends AnyRef

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

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

тракт TermNamesApi extends Universe.NamesApi

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

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

тракт TypeNamesApi extends Universe.NamesApi

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

Определяющие классы
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, который поддерживают все применённые деревья типов

Классы-определения
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>)))

Классы-определения
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

Связывание переменной с правой частью шаблона.

Устранён фазами компилятора 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

An extractor class to create and pattern match with syntax Block(stats, expr). This AST node corresponds to the following Scala code:

{ stats; expr }

If the block is empty, the expr is set to Literal(Constant(())).

Definition Classes
Trees

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

Case clause in a pattern match. (except for occurrences in switch statements). Eliminated by compiler phases patmat (in the new pattern matcher of 2.10) or explicitouter (in the old pre-2.10 pattern matcher)

Definition Classes
Trees

trait CaseDefApi extends Universe.TreeApi

The API that all case defs support

Definition Classes
Trees

abstract class CaseDefExtractor extends AnyRef

An extractor class to create and pattern match with syntax CaseDef(pat, guard, body). This AST node corresponds to the following Scala code:

case pat if guard => body

If the guard is not present, the guard is set to EmptyTree. If the body is not specified, the body is set to Literal(Constant(()))

Definition Classes
Trees

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

A class definition.

Definition Classes
Trees

trait ClassDefApi extends Universe.ImplDefApi

The API that all class defs support

Definition Classes
Trees

abstract class ClassDefExtractor extends AnyRef

An extractor class to create and pattern match with syntax ClassDef(mods, name, tparams, impl). This AST node corresponds to the following Scala code:

mods class name [tparams] impl

Where impl stands for:

extends parents { defs }

Definition Classes
Trees

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

Intersection type <parent1> with ... with <parentN> { <decls> }, eliminated by RefCheck

Definition Classes
Trees

trait CompoundTypeTreeApi extends Universe.TypTreeApi

The API that all compound type trees support

Definition Classes
Trees

abstract class CompoundTypeTreeExtractor extends AnyRef

An extractor class to create and pattern match with syntax CompoundTypeTree(templ). This AST node corresponds to the following Scala code:

parent1 with ... with parentN { refinement }

Definition Classes
Trees

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

A method or macro definition.

Definition Classes
Trees

trait DefDefApi extends Universe.ValOrDefDefApi

The API that all def defs support

Definition Classes
Trees

abstract class DefDefExtractor extends AnyRef

An extractor class to create and pattern match with syntax DefDef(mods, name, tparams, vparamss, tpt, rhs). This AST node corresponds to the following Scala code:

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

If the return type is not specified explicitly (i.e. is meant to be inferred), this is expressed by having tpt set to TypeTree() (but not to an EmptyTree!).

Definition Classes
Trees

abstract type DefTree >: Null <: Universe.DefTreeApi with Universe.SymTree with Universe.NameTree

A tree representing a symbol-defining entity: 1) A declaration or a definition (type, class, object, package, val, var, or def) 2) Связь, используемая для представления связывающих вхождений в сопоставления с образцом 3) МеткаDef, используемая во внутренних целях для представления циклов while

Definition Classes
Trees

trait DefTreeApi extends Universe.SymTreeApi with Universe.NameTreeApi

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

Definition Classes
Trees

abstract type ExistentialTypeTree >: Null <: Universe.ExistentialTypeTreeApi with Universe.TypTree

Узел дерева сущностного типа

Definition Classes
Trees

trait ExistentialTypeTreeApi extends Universe.TypTreeApi

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

Definition Classes
Trees

abstract class ExistentialTypeTreeExtractor extends AnyRef

An extractor class to create and pattern match with syntax ExistentialTypeTree(tpt, whereClauses). This AST node corresponds to the following Scala code:

tpt forSome { whereClauses }

Definition Classes
Trees

abstract type Function >: Null <: Universe.FunctionApi with Universe.TermTree with Universe.SymTree

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

Definition Classes
Trees

trait FunctionApi extends Universe.TermTreeApi with Universe.SymTreeApi

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

Definition Classes
Trees

abstract class FunctionExtractor extends AnyRef

An extractor class to create and pattern match with syntax Function(vparams, body). This AST node corresponds to the following Scala code:

vparams => body

The symbol of a Function is a synthetic TermSymbol. It is the owner of the function's parameters.

Definition Classes
Trees

abstract type GenericApply >: Null <: Universe.GenericApplyApi with Universe.TermTree

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

Definition Classes
Trees

trait GenericApplyApi extends Universe.TermTreeApi

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

Definition Classes
Trees

abstract type Ident >: Null <: Universe.IdentApi with Universe.RefTree

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

Definition Classes
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}

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

интерфейс ImportSelectorApi extends AnyRef

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

Definition Classes
Trees

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

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

Definition Classes
Trees

абстрактный тип LabelDef >: Null <: Universe.LabelDefApi with Universe.DefTree with Universe.TermTree

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

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

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

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

Definition Classes
Trees

интерфейс LabelDefApi extends Universe.DefTreeApi with Universe.TermTreeApi

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

Definition Classes
Trees

абстрактный класс 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 ())
Definition Classes
Trees

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

Литерал

Definition Classes
Trees

интерфейс LiteralApi extends Universe.TermTreeApi

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

Definition Classes
Trees

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

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

value

Definition Classes
Trees

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

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

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

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

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

интерфейс MatchApi extends Universe.TermTreeApi

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

Definition Classes
Trees

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

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

selector match { cases }

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

Definition Classes
Trees

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

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

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

тракт MemberDefApi extends Universe.DefTreeApi

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

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

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

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

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

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

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

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

абстрактный тип ModuleDef >: Null <: Universe.ModuleDefApi with Universe.ImplDef

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

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

тракт ModuleDefApi extends Universe.ImplDefApi

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

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

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

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

mods object name impl

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

extends parents { defs }

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

абстрактный тип NameTree >: Null <: Universe.NameTreeApi with Universe.Tree

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

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

тракт NameTreeApi extends Universe.TreeApi

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

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

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

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

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

тракт NamedArgApi extends Universe.TermTreeApi

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

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

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

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

m.f(lhs = rhs)
@annotation(lhs = rhs)
Определения классов
Trees

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

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

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

trait NewApi extends Universe.TermTreeApi

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

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

abstract class 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

abstract type PackageDef >: Null <: Universe.PackageDefApi with Universe.MemberDef

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

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

trait PackageDefApi extends Universe.MemberDefApi

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

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

abstract class PackageDefExtractor extends AnyRef

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

package pid { stats }

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

abstract type RefTree >: Null <: Universe.RefTreeApi with Universe.SymTree with Universe.NameTree

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

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

trait RefTreeApi extends Universe.SymTreeApi with Universe.NameTreeApi

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

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

abstract class RefTreeExtractor extends AnyRef

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

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

abstract type Return >: Null <: Universe.ReturnApi with Universe.SymTree with Universe.TermTree

Выражение возврата

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

trait ReturnApi extends Universe.TermTreeApi

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

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

abstract class ReturnExtractor extends AnyRef

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

return expr

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

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

abstract type Select >: Null <: Universe.SelectApi with Universe.RefTree

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

Definition Classes
Trees

trait 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, который поддерживают все Star

Definition Classes
Trees

abstract class StarExtractor extends AnyRef

An extractor class to create and pattern match with syntax Star(elem). This AST node corresponds to the following Scala code:

pat*

Definition Classes
Trees

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

Super reference, where qual is the corresponding this reference. A super reference C.super[M] is represented as Super(This(C), M).

Definition Classes
Trees

trait SuperApi extends Universe.TermTreeApi

The API that all supers support

Definition Classes
Trees

abstract class SuperExtractor extends AnyRef

An extractor class to create and pattern match with syntax Super(qual, mix). This AST node corresponds to the following Scala code:

C.super[M]

Which is represented as:

Super(This(C), M)

If mix is empty, it is tpnme.EMPTY.

The symbol of a Super is the class _from_ which the super reference is made. For instance in C.super(...), it would be C.

Definition Classes
Trees

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

A tree that carries a symbol, e.g. by defining it (DefTree) or by referring to it (RefTree). Such trees start their life naked, returning NoSymbol, but after being typechecked without errors they hold non-empty symbols.

Definition Classes
Trees

trait SymTreeApi extends Universe.TreeApi

The API that all sym trees support

Definition Classes
Trees

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

Instantiation template of a class or trait

Definition Classes
Trees

trait TemplateApi extends Universe.SymTreeApi

The API that all templates support

Definition Classes
Trees

abstract class TemplateExtractor extends AnyRef

An extractor class to create and pattern match with syntax Template(parents, self, body). This AST node corresponds to the following Scala code:

extends parents { self => body }

In case when the self-type annotation is missing, it is represented as an empty value definition with nme.WILDCARD as name and NoType as type.

The symbol of a template is a local dummy. @see Symbol.newLocalDummy The owner of the local dummy is the enclosing trait or class. The local dummy is itself the owner of any local blocks. For example:

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

A tree for a term. Not all trees representing terms are TermTrees; use isTerm to reliably identify terms.

Definition Classes
Trees

trait TermTreeApi extends Universe.TreeApi

The API that all term trees support

Definition Classes
Trees

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

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

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

trait ThisApi extends Universe.TermTreeApi with Universe.SymTreeApi

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

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

abstract class ThisExtractor extends AnyRef

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

qual.this

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

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

abstract type Throw >: Null <: Universe.ThrowApi with Universe.TermTree

Выражение Throw

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

trait ThrowApi extends Universe.TermTreeApi

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

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

abstract class ThrowExtractor extends AnyRef

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

throw expr

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

abstract class Transformer extends AnyRef

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

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

class Traverser extends AnyRef

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

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

abstract type Tree >: Null <: Universe.TreeApi

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

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

trait TreeApi extends Product

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

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

abstract type TreeCopier >: Null <: Universe.TreeCopierOps

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

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

abstract class TreeCopierOps extends AnyRef

API копира дерева.

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

abstract type Try >: Null <: Universe.TryApi with Universe.TermTree

Узел Try catch.

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

trait TryApi extends Universe.TermTreeApi

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

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

abstract class TryExtractor extends AnyRef

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

try блок catch { catches } finally finalizer

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

Definition Classes
Trees

abstract type TypTree >: Null <: Universe.TypTreeApi with Universe.Tree

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

Definition Classes
Trees

trait TypTreeApi extends Universe.TreeApi

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

Definition Classes
Trees

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

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

Definition Classes
Trees

trait TypeApplyApi extends Universe.GenericApplyApi

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

Definition Classes
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>)))

Definition Classes
Trees

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

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

Definition Classes
Trees

trait TypeBoundsTreeApi extends Universe.TypTreeApi

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

Definition Classes
Trees

abstract class TypeBoundsTreeExtractor extends AnyRef

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

>: lo <: hi

Definition Classes
Trees

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

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

Definition Classes
Trees

trait TypeDefApi extends Universe.MemberDefApi

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

Definition Classes
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.

Definition Classes
Trees

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

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

Definition Classes
Trees

trait TypeTreeApi extends Universe.TypTreeApi

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

Definition Classes
Trees

abstract class TypeTreeExtractor extends AnyRef

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

Definition Classes
Trees

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

Аннотация типа, удалённая на этапе очистки компилятора.

Definition Classes
Trees

trait TypedApi extends Universe.TermTreeApi

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

Definition Classes
Trees

abstract class TypedExtractor extends AnyRef

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

expr: tpt

Definition Classes
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).

Definition Classes
Trees

trait UnApplyApi extends Universe.TermTreeApi

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

Definition Classes
Trees

abstract class UnApplyExtractor extends AnyRef

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

Definition Classes
Trees

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

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

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

trait ValDefApi extends Universe.ValOrDefDefApi

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

Definition Classes
Trees

abstract class ValDefExtractor extends AnyRef

An extractor class to create and pattern match with syntax ValDef(mods, name, tpt, rhs). This AST node corresponds to any of the following Scala code:

mods val name: tpt = rhs

mods var name: tpt = rhs

mods name: tpt = rhs // in signatures of function and method definitions

self: Bar => // self-types

If the type of a value is not specified explicitly (i.e. is meant to be inferred), this is expressed by having tpt set to TypeTree() (but not to an EmptyTree!).

Definition Classes
Trees

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

A common base class for ValDefs and DefDefs.

Definition Classes
Trees

trait ValOrDefDefApi extends Universe.MemberDefApi

The API that all val defs and def defs support

Definition Classes
Trees

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

A TypeTag is a scala.reflect.api.TypeTags#WeakTypeTag with the additional static guarantee that all type references are concrete, i.e. it does not contain any references to unresolved type parameters or abstract types.

Definition Classes
TypeTags
Annotations
@implicitNotFound("No TypeTag available for ${T}")
See also

scala.reflect.api.TypeTags

trait WeakTypeTag[T] extends Equals with Serializable

If an implicit value of type WeakTypeTag[T] is required, the compiler will create one, and the reflective representation of T can be accessed via the tpe field. Components of T can be references to type parameters or abstract types. Note that WeakTypeTag makes an effort to be as concrete as possible, i.e. if TypeTags are available for the referenced type arguments or abstract types, they are used to embed the concrete types into the WeakTypeTag. Otherwise the WeakTypeTag will contain a reference to an abstract type. This behavior can be useful, when one expects T to be perhaps be partially abstract, but requires special care to handle this case. However, if T is expected to be fully known, use scala.reflect.api.TypeTags#TypeTag instead, which statically guarantees this property.

For more information about TypeTags, see the Reflection Guide: TypeTags

Definition Classes
TypeTags
Annotations
@implicitNotFound("No WeakTypeTag available for ${T}")
See also

scala.reflect.api.TypeTags

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

The AnnotatedType type signature is used for annotated types of the for <type> @<annotation>.

Definition Classes
Types

trait AnnotatedTypeApi extends Universe.TypeApi

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

Definition Classes
Types

abstract class AnnotatedTypeExtractor extends AnyRef

An extractor class to create and pattern match with syntax AnnotatedType(annotations, underlying). Here, annotations are the annotations decorating the underlying type underlying. selfSym is a symbol representing the annotated type itself.

Definition Classes
Types

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

BoundedWildcardTypes, used only during type inference, are created in two places:

    If the expected type of an expression is an existential type, its hidden symbols are replaced with bounded wildcards. 2. When an implicit conversion is being sought based in part on the name of a method in the converted type, a HasMethodMatching type is created: a MethodType with parameters typed as BoundedWildcardTypes.
Definition Classes
Types

trait BoundedWildcardTypeApi extends Universe.TypeApi

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

Definition Classes
Types

abstract class BoundedWildcardTypeExtractor extends AnyRef

An extractor class to create and pattern match with syntax BoundedWildcardTypeExtractor(bounds) with bounds denoting the type bounds.

Definition Classes
Types

abstract type ClassInfoType >: Null <: Universe.ClassInfoTypeApi with Universe.CompoundType

The ClassInfo type signature is used to define parents and declarations of classes, traits, and objects. If a class, trait, or object C is declared like this

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

its ClassInfo type has the following form:

ClassInfo(List(P_1, ..., P_m), Scope(D_1, ..., D_n), C)
Definition Classes
Types

trait ClassInfoTypeApi extends Universe.TypeApi

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

Definition Classes
Types

abstract class ClassInfoTypeExtractor extends AnyRef

An extractor class to create and pattern match with syntax ClassInfo(parents, decls, clazz) Here, parents is the list of parent types of the class, decls is the scope containing all declarations in the class, and clazz is the symbol of the class itself.

Definition Classes
Types

abstract type CompoundType >: Null <: Universe.CompoundTypeApi with Universe.Type

A subtype of Type representing refined types as well as ClassInfo signatures.

Definition Classes
Types

trait CompoundTypeApi extends AnyRef

Has no special methods. Is here to provide erased identity for CompoundType.

Definition Classes
Types

abstract type ConstantType >: Null <: Universe.ConstantTypeApi with Universe.SingletonType

A ConstantType type cannot be expressed in user programs; it is inferred as the type of a constant. Here are some constants with their types and the internal string representation:

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

ConstantTypes denote values that may safely be constant folded during type checking. The constantFold operation returns the equivalent type that will not be constant folded.

Definition Classes
Types

trait ConstantTypeApi extends Universe.TypeApi

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

Definition Classes
Types

abstract class ConstantTypeExtractor extends AnyRef

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

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

abstract type ExistentialType >: Null <: Universe.ExistentialTypeApi with Universe.Type

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

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

trait ExistentialTypeApi extends Universe.TypeApi

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

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

abstract class ExistentialTypeExtractor extends AnyRef

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

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

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

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

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

trait MethodTypeApi extends Universe.TypeApi

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

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

abstract class MethodTypeExtractor extends AnyRef

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

def f(): Int

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

def f: Int

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

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

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

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

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

trait NullaryMethodTypeApi extends Universe.TypeApi

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

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

abstract class NullaryMethodTypeExtractor extends AnyRef

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

Определяющие классы
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))
Definition Classes
Types

trait RefinedTypeApi extends Universe.TypeApi

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

Definition Classes
Types

abstract class RefinedTypeExtractor extends AnyRef

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

Definition Classes
Types

abstract type 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)
Definition Classes
Types

trait SingleTypeApi extends Universe.TypeApi

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

Definition Classes
Types

abstract class SingleTypeExtractor extends AnyRef

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

Definition Classes
Types

abstract type SingletonType >: Null <: Universe.SingletonTypeApi with Universe.Type

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

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

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

Definition Classes
Types

trait SingletonTypeApi extends AnyRef

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

Definition Classes
Types

abstract type SuperType >: Null <: Universe.SuperTypeApi with Universe.SingletonType

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

SuperType(thistpe, supertpe)

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

Definition Classes
Types

trait SuperTypeApi extends Universe.TypeApi

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

Definition Classes
Types

abstract class SuperTypeExtractor extends AnyRef

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

Definition Classes
Types

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

Тип-синглтон, описывающий типы в левой части с соответствующим представлением ThisType в правой части:

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

trait ThisTypeApi extends Universe.TypeApi

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

Definition Classes
Types

abstract class ThisTypeExtractor extends AnyRef

Класс-экстрактор для создания и сопоставления с образцом с синтаксисом ThisType(sym), где sym — префикс класса типа this.

Definition Classes
Types

abstract type Type >: Null <: Universe.TypeApi

Тип Scala-типов, а также сигнатур типов Scala. (Внутри между ними нет различий).

Definition Classes
Types

abstract class TypeApi extends AnyRef

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

Definition Classes
Types

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

Подпись типа TypeBounds используется для указания нижних и верхних границ типов параметров и абстрактных типов. Это не тип первого класса. Если абстрактный тип или параметр типа объявлен с любым из форм слева, его подпись — тип TypeBounds справа.

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

trait TypeBoundsApi extends Universe.TypeApi

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

Definition Classes
Types

abstract class TypeBoundsExtractor extends AnyRef

Класс-экстрактор для создания и сопоставления с образцом с синтаксисом TypeBound(lower, upper). Здесь lower — нижняя граница пары TypeBounds, а upper — верхняя граница.

Definition Classes
Types

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

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

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)
Определяющие классы
Types

тракт TypeRefApi extends Universe.TypeApi

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

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

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

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

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

абстрактный тип Internal <: MacroInternalApi

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

тракт MacroInternalApi extends InternalApi

абстрактный тип Mirror >: Null <: api.Mirror[Universe.this.type]

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

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

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

абстрактный тип Modifiers >: Null <: ModifiersApi

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

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

абстрактный тип Name >: Null <: NameApi

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

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

абстрактный тип Position >: Null <: api.Position { type Pos = Universe.this.Position }

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

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

абстрактный тип RuntimeClass >: Null <: AnyRef

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

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

абстрактный тип TermName >: Null <: TermNameApi с Name

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

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

тракт TreeGen extends AnyRef

абстрактный тип TypeName >: Null <: TypeNameApi с Name

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

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

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

abstract val Alternative: AlternativeExtractor

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

Definition Classes
Trees

implicit abstract val AlternativeTag: ClassTag[Alternative]

Definition Classes
ImplicitTags

abstract val Annotated: AnnotatedExtractor

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

Definition Classes
Trees

implicit abstract val AnnotatedTag: ClassTag[Annotated]

Definition Classes
ImplicitTags

abstract val AnnotatedType: AnnotatedTypeExtractor

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

Definition Classes
Types

implicit abstract val AnnotatedTypeTag: ClassTag[AnnotatedType]

Definition Classes
ImplicitTags

abstract val Annotation: AnnotationExtractor

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

Definition Classes
Annotations

implicit abstract val AnnotationTag: ClassTag[Annotation]

Definition Classes
ImplicitTags

abstract val AppliedTypeTree: AppliedTypeTreeExtractor

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

Definition Classes
Trees

implicit abstract val AppliedTypeTreeTag: ClassTag[AppliedTypeTree]

Definition Classes
ImplicitTags

abstract val Apply: ApplyExtractor

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

Definition Classes
Trees

implicit abstract val ApplyTag: ClassTag[Apply]

Definition Classes
ImplicitTags

abstract val Assign: AssignExtractor

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

Definition Classes
Trees

implicit abstract val AssignTag: ClassTag[Assign]

Definition Classes
ImplicitTags

abstract val Bind: BindExtractor

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

Definition Classes
Trees

implicit abstract val BindTag: ClassTag[Bind]

Definition Classes
ImplicitTags

abstract val Block: BlockExtractor

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

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

implicit abstract val BlockTag: ClassTag[Block]

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

abstract val BoundedWildcardType: BoundedWildcardTypeExtractor

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

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

implicit abstract val BoundedWildcardTypeTag: ClassTag[BoundedWildcardType]

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

abstract val CaseDef: CaseDefExtractor

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

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

implicit abstract val CaseDefTag: ClassTag[CaseDef]

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

abstract val ClassDef: ClassDefExtractor

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

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

implicit abstract val ClassDefTag: ClassTag[ClassDef]

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

abstract val ClassInfoType: ClassInfoTypeExtractor

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

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

implicit abstract val ClassInfoTypeTag: ClassTag[ClassInfoType]

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

implicit abstract val ClassSymbolTag: ClassTag[ClassSymbol]

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

implicit abstract val CompoundTypeTag: ClassTag[CompoundType]

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

abstract val CompoundTypeTree: CompoundTypeTreeExtractor

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

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

implicit abstract val CompoundTypeTreeTag: ClassTag[CompoundTypeTree]

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

abstract val Constant: ConstantExtractor

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

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

implicit abstract val ConstantTag: ClassTag[Constant]

Definition Classes
ImplicitTags

abstract val ConstantType: ConstantTypeExtractor

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

Definition Classes
Types

implicit abstract val ConstantTypeTag: ClassTag[ConstantType]

Definition Classes
ImplicitTags

abstract val DefDef: DefDefExtractor

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

Definition Classes
Trees

implicit abstract val DefDefTag: ClassTag[DefDef]

Definition Classes
ImplicitTags

implicit abstract val DefTreeTag: ClassTag[DefTree]

Definition Classes
ImplicitTags

abstract val EmptyTree: Tree

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

Definition Classes
Trees

abstract val ExistentialType: ExistentialTypeExtractor

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

Definition Classes
Types

implicit abstract val ExistentialTypeTag: ClassTag[ExistentialType]

Definition Classes
ImplicitTags

abstract val ExistentialTypeTree: ExistentialTypeTreeExtractor

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

Definition Classes
Trees

implicit abstract val ExistentialTypeTreeTag: ClassTag[ExistentialTypeTree]

Definition Classes
ImplicitTags

abstract val Flag: FlagValues

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

Definition Classes
FlagSets

implicit abstract val FlagSetTag: ClassTag[FlagSet]

Definition Classes
ImplicitTags

implicit abstract val FreeTermSymbolTag: ClassTag[FreeTermSymbol]

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

Definition Classes
Internals

implicit abstract val FreeTypeSymbolTag: ClassTag[FreeTypeSymbol]

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

Definition Classes
Internals

abstract val Function: FunctionExtractor

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

Definition Classes
Trees

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

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

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

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

абстрактный def Ident(sym: Symbol): Ident

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

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

абстрактный val Ident: IdentExtractor

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

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

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

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

абстрактный val If: IfExtractor

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

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

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

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

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

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

абстрактный val Import: ImportExtractor

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

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

абстрактный val ImportSelector: ImportSelectorExtractor

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

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

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

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

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

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

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

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

абстрактный val LabelDef: LabelDefExtractor

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

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

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

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

абстрактный val Literal: LiteralExtractor

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

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

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

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

абстрактное val Match: MatchExtractor

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

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

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

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

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

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

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

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

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

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

абстрактное val MethodType: MethodTypeExtractor

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

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

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

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

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

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

абстрактное val Modifiers: ModifiersExtractor

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

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

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

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

абстрактное val ModuleDef: ModuleDefExtractor

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

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

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

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

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

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

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

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

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

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

abstract val NamedArg: NamedArgExtractor

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

Definition Classes
Trees

implicit abstract val NamedArgTag: ClassTag[NamedArg]

Definition Classes
ImplicitTags

abstract val New: NewExtractor

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

Definition Classes
Trees

implicit abstract val NewTag: ClassTag[New]

Definition Classes
ImplicitTags

abstract val NoFlags: FlagSet

Пустое множество флагов

Definition Classes
FlagSets

abstract val NoPosition: Position

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

Definition Classes
Positions

abstract val NoPrefix: Type

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

Definition Classes
Types

abstract val NoSymbol: Symbol

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

Definition Classes
Symbols

abstract val NoType: Type

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

Definition Classes
Types

abstract val NullaryMethodType: NullaryMethodTypeExtractor

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

Definition Classes
Types

implicit abstract val NullaryMethodTypeTag: ClassTag[NullaryMethodType]

Definition Classes
ImplicitTags

abstract val PackageDef: PackageDefExtractor

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

Definition Classes
Trees

implicit abstract val PackageDefTag: ClassTag[PackageDef]

Definition Classes
ImplicitTags

abstract val PolyType: PolyTypeExtractor

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

Definition Classes
Types

implicit abstract val PolyTypeTag: ClassTag[PolyType]

Definition Classes
ImplicitTags

implicit abstract val PositionTag: ClassTag[Position]

Definition Classes
ImplicitTags

абстрактный val RefTree: RefTreeExtractor

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

Definition Classes
Trees

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

Definition Classes
ImplicitTags

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

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

Definition Classes
Internals

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

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

Definition Classes
Internals

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

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

Definition Classes
Types

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

Definition Classes
ImplicitTags

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

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

Definition Classes
Trees

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

Definition Classes
ImplicitTags

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

Definition Classes
ImplicitTags

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

Definition Classes
ImplicitTags

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

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

Definition Classes
Trees

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

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

Definition Classes
Trees

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

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

Definition Classes
Trees

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

Definition Classes
ImplicitTags

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

Definition Classes
ImplicitTags

abstract val SingleType: SingleTypeExtractor

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

Definition Classes
Types

implicit abstract val SingleTypeTag: ClassTag[SingleType]

Definition Classes
ImplicitTags

implicit abstract val SingletonTypeTag: ClassTag[SingletonType]

Definition Classes
ImplicitTags

abstract val SingletonTypeTree: SingletonTypeTreeExtractor

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

Definition Classes
Trees

implicit abstract val SingletonTypeTreeTag: ClassTag[SingletonTypeTree]

Definition Classes
ImplicitTags

abstract val Star: StarExtractor

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

Definition Classes
Trees

implicit abstract val StarTag: ClassTag[Star]

Definition Classes
ImplicitTags

abstract val Super: SuperExtractor

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

Definition Classes
Trees

implicit abstract val SuperTag: ClassTag[Super]

Definition Classes
ImplicitTags

abstract val SuperType: SuperTypeExtractor

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

Definition Classes
Types

implicit abstract val SuperTypeTag: ClassTag[SuperType]

Definition Classes
ImplicitTags

implicit abstract val SymTreeTag: ClassTag[SymTree]

Definition Classes
ImplicitTags

implicit abstract val SymbolTag: ClassTag[Symbol]

Definition Classes
ImplicitTags

abstract val Template: TemplateExtractor

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

Definition Classes
Trees

implicit abstract val TemplateTag: ClassTag[Template]

Definition Classes
ImplicitTags

abstract val TermName: TermNameExtractor

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

Definition Classes
Names

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

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

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

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

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

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

абстрактное def This(sym: Symbol): Tree

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

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

абстрактное val This: ThisExtractor

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

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

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

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

абстрактное val ThisType: ThisTypeExtractor

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

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

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

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

абстрактное val Throw: ThrowExtractor

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

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

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

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

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

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

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

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

абстрактное val Try: TryExtractor

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

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

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

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

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

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

абстрактное val TypeApply: TypeApplyExtractor

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

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

явное абстрактное значение TypeApplyTag: ClassTag[TypeApply]

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

абстрактное значение TypeBounds: TypeBoundsExtractor

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

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

явное абстрактное значение TypeBoundsTag: ClassTag[TypeBounds]

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

абстрактное значение TypeBoundsTree: TypeBoundsTreeExtractor

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

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

явное абстрактное значение TypeBoundsTreeTag: ClassTag[TypeBoundsTree]

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

абстрактное значение TypeDef: TypeDefExtractor

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

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

явное абстрактное значение TypeDefTag: ClassTag[TypeDef]

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

абстрактное значение TypeName: TypeNameExtractor

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

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

явное абстрактное значение TypeNameTag: ClassTag[TypeName]

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

абстрактное значение TypeRef: TypeRefExtractor

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

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

явное абстрактное значение TypeRefTag: ClassTag[TypeRef]

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

явное абстрактное значение TypeSymbolTag: ClassTag[TypeSymbol]

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

явное абстрактное значение TypeTagg: ClassTag[Type]

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

абстрактное определение TypeTree(tp: Type): TypeTree

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

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

абстрактное значение TypeTree: TypeTreeExtractor

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

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

явное абстрактное значение TypeTreeTag: ClassTag[TypeTree]

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

abstract val Typed: TypedExtractor

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

Definition Classes
Trees

implicit abstract 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
See also

appliedType

abstract def appliedType(sym: Symbol, args: List[Type]): Type

Definition Classes
Types
See also

appliedType

abstract def appliedType(tycon: Type, args: Type*): Type

Definition Classes
Types
See also

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.

Definition Classes
Positions

abstract val definitions: DefinitionsApi

Значение, содержащее все стандартные определения в DefinitionsApi

Definition Classes
StandardDefinitions

abstract def glb(ts: List[Type]): Type

Наибольшая нижняя граница списка типов, определяемая <:<.

Definition Classes
Types

abstract val internal: Internal

Definition Classes
Internals
See also

InternalApi

abstract def lub(xs: List[Type]): Type

Наименьшая верхняя граница списка типов, определяемая <:<.

Definition Classes
Types

abstract def newCodePrinter(out: PrintWriter, tree: Tree, printRootPkg: Boolean): TreePrinter

Зацепка для определения того, что означает showCode(...).

Attributes
protected
Definition Classes
Printers

abstract def newLazyTreeCopier: TreeCopier

Создает ленивый копировщик дерева.

Definition Classes
Trees

abstract def newRawTreePrinter(out: PrintWriter): TreePrinter

Зацепка для определения того, что означает showRaw(...).

Attributes
protected
Definition Classes
Printers

abstract def newStrictTreeCopier: TreeCopier

Создает строгий копировщик дерева.

Definition Classes
Trees

abstract def newTreePrinter(out: PrintWriter): TreePrinter

Зацепка для определения того, что означает show(...).

Attributes
protected
Definition Classes
Printers

abstract val noSelfType: ValDef

Пустое отложенное определение значения, соответствующее: val _: _ Это используется в качестве заполнителя в параметре self Template, если нет определения собственного значения собственного типа.

Definition Classes
Trees

abstract val pendingSuperCall: Apply

Вызов конструктора суперкласса без параметров, соответствующий: super.<init>() Используется в качестве заглушки в теле первичного конструктора в шаблонах классов для обозначения точки вставки вызова конструктора суперкласса после того, как типовая проверка определила суперкласс данного шаблона.

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

абстрактный val rootMirror: Mirror

Корневое зеркало этой вселенной. Это зеркало содержит стандартные классы и типы Scala, такие как Any, AnyRef, AnyVal, Nothing, Null, и все классы, загруженные из scala-library, которые совместно используются всеми зеркалами в рамках окружающей вселенной.

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

абстрактный def show(position: Position): String

Отображает красивое представление позиции.

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

абстрактный def show(flags: FlagSet): String

Отображает красивое представление набора флагов.

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

абстрактный def show(name: Name): String

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

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

абстрактный def showDecl(sym: Symbol): String

Отображает строку, представляющую объявление этого символа, написанного на Scala.

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

абстрактный def symbolOf[T](неявный arg0: WeakTypeTag[T]): TypeSymbol

Символ типа x, полученный из тега типа.

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

абстрактный val termNames: TermNamesApi

Значение, содержащее все стандартные имена терминов.

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

абстрактный def treeToAnnotation(tree: Tree): Annotation

Атрибуты
protected[scala]
Определяющие классы
Annotations

абстрактный val typeNames: TypeNamesApi

Значение, содержащее все стандартные имена типов.

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

абстрактный def wrappingPos(trees: List[Tree]): Position

Позиция, которая оборачивает непустой набор деревьев. Точка обёртывающей позиции - это точка позиции первого дерева. Если все деревья не являются синтетическими, возвращает позицию диапазона, охватывающую несинтетические деревья. В противном случае возвращает синтетическую позицию смещения для указания.

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

абстрактный def wrappingPos(default: Position, trees: List[Tree]): Position

Позиция, которая оборачивает набор деревьев. Точка позиции обёртывания - это точка позиции по умолчанию. Если некоторые деревья являются диапазонами, возвращает позицию диапазона, охватывающую все диапазоны. В противном случае возвращает позицию по умолчанию.

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

abstract def Apply(sym: Symbol, args: Tree*): Tree

Заводской метод для узлов Apply.

Definition Classes
Trees
Annotations
@deprecated
Deprecated

(Since version 2.10.1) использовать q"$sym(..$args)" вместо этого

abstract def ApplyConstructor(tpt: Tree, args: List[Tree]): Tree

Список из 0-1 аргумента new, основанный на дереве типов.

Definition Classes
Trees
Annotations
@deprecated
Deprecated

(Since version 2.10.1) использовать q"new $tpt(..$args)" вместо этого

abstract def Bind(sym: Symbol, body: Tree): Bind

Заводской метод для узлов Bind.

Definition Classes
Trees
Annotations
@deprecated
Deprecated

(Since version 2.10.1) использовать канонический конструктор Bind для создания привязки, а затем инициализировать его символ вручную

abstract def Block(stats: Tree*): Block

Заводской метод для узлов Block. Сглаживает непосредственно вложенные блоки.

Definition Classes
Trees
Annotations
@deprecated
Deprecated

(Since version 2.10.1) использовать q"{..$stats}" вместо этого. Вручную сгладить непосредственно вложенные блоки, если необходимо

abstract def CaseDef(pat: Tree, body: Tree): CaseDef

Заводской метод для узлов CaseDef.

Definition Classes
Trees
Annotations
@deprecated
Deprecated

(Since version 2.10.1) использовать cq"$pat => $body" вместо этого

abstract def Ident(name: String): Ident

Заводской метод для узлов Ident.

Definition Classes
Trees
Annotations
@deprecated
Deprecated

(Since version 2.10.1) использовать Ident(TermName(name)) вместо этого

abstract def New(sym: Symbol, args: Tree*): Tree

Список из 0-1 аргумента new, основанный на символе.

Definition Classes
Trees
Annotations
@deprecated
Deprecated

(Since version 2.10.1) использовать q"new ${sym.toType}(..$args)" вместо этого

abstract def New(tpe: Type, args: Tree*): Tree

Список из 0-1 аргумента new, основанный на типе.

Definition Classes
Trees
Annotations
@deprecated
Deprecated

(Since version 2.10.1) использовать q"new $tpe(..$args)" вместо этого

abstract def New(tpt: Tree, argss: List[List[Tree]]): Tree

Фабричный метод для создания объекта new tpt(args_1)...(args_n) A New(t, as) расширяется до: (new t).<init>(as)

Определяющие классы
Trees
Аннотации
@deprecated
Устарело

(Начиная с версии 2.10.1) используйте q"new $tpt(...$argss)" вместо этого

abstract def Select(qualifier: Tree, name: String): Select

Фабричный метод для Select узлов. Предполагается, что строковый аргумент name представляет TermName.

Определяющие классы
Trees
Аннотации
@deprecated
Устарело

(Начиная с версии 2.10.1) используйте Select(tree, TermName(name)) вместо этого

abstract def Super(sym: Symbol, mix: TypeName): Tree

Фабричный метод для Super узлов.

Определяющие классы
Trees
Аннотации
@deprecated
Устарело

(Начиная с версии 2.10.1) используйте q"$sym.super[$mix].x".qualifier вместо этого

abstract def Throw(tpe: Type, args: Tree*): Throw

Фабричный метод для Throw узлов.

Определяющие классы
Trees
Аннотации
@deprecated
Устарело

(Начиная с версии 2.10.1) используйте q"throw new $tpe(..$args)" вместо этого

abstract def Try(body: Tree, cases: (Tree, Tree)*): Try

Фабричный метод для Try узлов.

Определяющие классы
Trees
Аннотации
@deprecated
Устарело

(Начиная с версии 2.10.1) преобразуйте cases в casedefs и используйте q"try $body catch { case ..$newcases }" вместо этого

abstract val compat: Compat

Обеспечивает расширения для обеспечения совместимости исходного кода между Scala 2.10 и Scala 2.11. Если в вашей рефлексивной программе для Scala 2.10 вы использовали что-то, что теперь стало внутренним API, единственный импорт compat._ исправит все для вас.

Определяющие классы
Internals
Аннотации
@deprecated
Устарело

(Начиная с версии 2.13.0) совместимость со Scala 2.10 EOL

abstract val emptyValDef: ValDef

Определяющие классы
Trees
Аннотации
@deprecated
Устарело

(Начиная с версии 2.11.0) используйте noSelfType вместо этого

abstract def newTermName(s: String): TermName

Создать новое имя члена.

Определяющие классы
Names
Аннотации
@deprecated
Устарело

(Начиная с версии 2.11.0) используйте TermName вместо этого

abstract def newTypeName(s: String): TypeName

Создает новое имя типа.

Определяющие классы
Names
Аннотации
@deprecated
Устарело

(Начиная с версии 2.11.0) используйте TypeName вместо этого

abstract val nme: TermNamesApi

Определяющие классы
StandardNames
Аннотации
@deprecated
Устарело

(Начиная с версии 2.11.0) используйте termNames вместо этого

См. также

termNames

абстрактное значение tpnme: TypeNamesApi

Определяющие классы
StandardNames
Аннотации
@deprecated
Устаревшее

(С версии 2.11.0) используйте typeNames вместо этого

См. также

typeNames

абстрактное значение treeBuild: TreeGen

Аннотации
@deprecated
Устаревшее

(С версии 2.11.0) используйте internal.gen вместо этого

См. также

internal.gen

Члены конкретных значений

объект 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 def asInstanceOf[T0]: T0

Definition Classes
Any

def clone(): AnyRef

Attributes
protected[java.lang]
Definition Classes
AnyRef
Annotations
@throws(classOf[java.lang.CloneNotSupportedException]) @native()

def ensuring(cond: (Universe) => Boolean, msg: => Any): Universe

Неявное
Этот член добавлен неявным преобразованием из Universe вEnsuring[Universe] выполненным методом Ensuring в scala.Predef.
Definition Classes
Ensuring

def ensuring(cond: (Universe) => Boolean): Universe

Неявное
Этот член добавлен неявным преобразованием из Universe вEnsuring[Universe] выполненным методом Ensuring в scala.Predef.
Definition Classes
Ensuring

def ensuring(cond: Boolean, msg: => Any): Universe

Неявное
Этот член добавлен неявным преобразованием из Universe вEnsuring[Universe] выполненным методом Ensuring в scala.Predef.
Definition Classes
Ensuring

def ensuring(cond: Boolean): Universe

Неявное
Этот член добавлен неявным преобразованием из Universe вEnsuring[Universe] выполненным методом Ensuring в scala.Predef.
Definition Classes
Ensuring

final def eq(arg0: AnyRef): Boolean

Definition Classes
AnyRef

def equals(arg0: AnyRef): Boolean

Definition Classes
AnyRef → Any

def finalize(): Unit

Attributes
protected[java.lang]
Definition Classes
AnyRef
Annotations
@throws(classOf[java.lang.Throwable])

def formatted(fmtstr: String): String

Неявное
Этот член добавлен неявным преобразованием из Universe вStringFormat[Universe] выполненным методом StringFormat в scala.Predef.
Definition Classes
StringFormat
Annotations
@inline()

final def getClass(): Class[_ <: AnyRef]

Definition Classes
AnyRef → Any
Annotations
@native()

def hashCode(): Int

Definition Classes
AnyRef → Any
Annotations
@native()

final def isInstanceOf[T0]: Boolean

Definition Classes
Any

def itransform(transformer: Transformer, tree: Tree): Tree

Делегирует стратегию преобразования в scala.reflect.internal.Trees, потому что сопоставление с образцом по абстрактным типам, которые у нас здесь есть, ухудшает производительность.

Attributes
protected
Definition Classes
Trees

final def ne(arg0: AnyRef): Boolean

Definition Classes
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 в выражение, которое можно вставить.

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

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(флаги: FlagSet): String

Отображает внутреннюю структуру набора флагов.

Definition Classes
Printers

def showRaw(имя: Имя): String

Отображает внутреннюю структуру имени.

Definition Classes
Printers

def showRaw(объект: Any, выводитьТипы: BooleanFlag = None, выводитьИдентификаторы: BooleanFlag = None, выводитьВладельцев: BooleanFlag = None, выводитьТипы: BooleanFlag = None, выводитьЗеркала: BooleanFlag = None, выводитьПозиции: 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(дерево: Дерево): String

По умолчанию деревья печатаются с show

Attributes
protected
Definition Classes
Printers

def typeOf[T](implicit ttag: TypeTag[T]): Тип

Сокращение для 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]): Тип

Сокращение для implicitly[WeakTypeTag[T]].tpe

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

def weakTypeTag[T](implicit attag: WeakTypeTag[T]): WeakTypeTag[T]

Сокращение для implicitly[WeakTypeTag[T]]

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

def xtransform(transformer: Transformer, tree: Tree): Tree

Предоставляет расширяемый крючок для стратегии преобразования. Обеспечивает совместимость с новыми типами узлов.

Атрибуты
protected
Классы-определения
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/macros/Universe.html

Spec-Zone.ru

Настройки Оффлайн Что нового Помощь О нас
Spec-Zone .ru
спецификации, руководства, описания, API