Spec-Zone.ru › Scala 2.13 Reflection

Trait scala.reflect.api.JavaUniverse

trait JavaUniverse extends Universe

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

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

Это уточнение оснащает зеркала возможностями рефлексии для JVM. JavaMirror может преобразовывать артефакты рефлексии Scala (символы и типы) в артефакты рефлексии Java (классы) и наоборот. Он также может выполнять рефлексивные вызовы (получение/установка значений полей, вызов методов и т. д.).

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

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

Члены типа

abstract тип Annotation >: Null <: Universe.AnnotationApi

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

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

тракт AnnotationApi extends AnyRef

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

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

abstract класс AnnotationExtractor extends AnyRef

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

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

abstract тип Constant >: Null <: Universe.ConstantApi

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

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

Константы можно сопоставлять и создавать напрямую, как если бы они были классами-случаями:

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

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

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

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

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

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

enum JavaSimpleEnumeration { FOO, BAR }

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

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

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

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

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

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

  // doesn't work because of https://github.com/scala/bug/issues/6459
  // val enumValue = mirror.reflectField(enumRef.asTerm).get
  val enumClass = cm.runtimeClass(enumRef.owner.asClass)
  val enumValue = enumClass.getDeclaredField(enumRef.name.toString).get(null)
  println(enumValue)                     // BAR
}
Классы определения
Constants

abstract класс ConstantApi extends AnyRef

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

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

abstract класс 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.

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

abstract тип FlagSet

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

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

тракт FlagValues extends AnyRef

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

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

abstract тип FreeTermSymbol >: Null <: Universe.FreeTermSymbolApi with Universe.TermSymbol

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

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

тракт FreeTermSymbolApi extends Universe.TermSymbolApi

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

$SYMACCESSORS

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

abstract тип FreeTypeSymbol >: Null <: Universe.FreeTypeSymbolApi with Universe.TypeSymbol

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

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

тракт FreeTypeSymbolApi extends Universe.TypeSymbolApi

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

$SYMACCESSORS

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

тракт Importer extends AnyRef

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

Артефакты рефлексии, такие как Symbols и Types, содержатся во вселенных Universe. Обычно вся обработка происходит в пределах одной 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]
  ...
}
Классы определения
Internals

тракт InternalApi extends AnyRef

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

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

Это привело к созданию модуля API internal для 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 дополнительными функциональными возможностями, специфичными для вселенной и контекста.

Definition Classes
Internals

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

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

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

Definition Classes
Internals

trait ReferenceToBoxedApi extends Universe.TermTreeApi

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

Definition Classes
Internals

abstract class ReferenceToBoxedExtractor extends AnyRef

Класс-экстрактор для создания и сопоставления с шаблоном с синтаксисом ReferenceToBoxed(ident). Этот узел абстрактного синтаксического дерева не имеет прямого соответствия с кодом Scala и выводится макросами для прямой ссылки на переменные захвата, минуя elem.

Например:

var x = ... fun { x }

Выведет:

Ident(x)

Что преобразуется в:

Select(Ident(x), "elem")

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

Definition Classes
Internals

trait ReificationSupportApi extends AnyRef

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

Definition Classes
Internals

abstract type Internal <: InternalApi

Definition Classes
Internals
See also

InternalApi

trait JavaMirror extends api.Mirror[JavaUniverse.this.type] with RuntimeMirror

Уточнение scala.reflect.api.Mirror для рефлексии во время выполнения с использованием загрузчиков классов JVM.

С этим обновлением зеркала могут преобразовывать артефакты рефлексии Scala (символы и типы) в артефакты рефлексии Java (классы) и наоборот. В результате уточненные зеркала способны выполнять рефлексивные вызовы (получение/установка значений полей, вызов методов и т. д.).

Для получения дополнительной информации о Mirrors см. scala.reflect.api.Mirrors или Руководство по рефлексии: Зеркала

abstract type Mirror >: Null <: JavaMirror

В универсалах рефлексии во время выполнения зеркала являются JavaMirrors.

Definition Classes
JavaUniverse → Mirrors

abstract type Modifiers >: Null <: ModifiersApi

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

Definition Classes
Trees

abstract type Name >: Null <: NameApi

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

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

abstract type Position >: Null <: api.Position { type Pos = JavaUniverse.this.Position }

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

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

type RuntimeClass = Class[_]

В вселенных выполнения рефлексии, временное представление класса — это java.lang.Class.

Классы-определения
JavaUniverse → Mirrors

abstract type TermName >: Null <: TermNameApi with Name

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

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

abstract type TypeName >: Null <: TypeNameApi with Name

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

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

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

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

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

trait FieldMirror extends AnyRef

Зеркало, отражающее поле. Подробная информация о том, как использовать runtime-рефлексию, содержится на странице обзора.

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

trait InstanceMirror extends AnyRef

Зеркало, отражающее runtime-значение. Подробная информация о том, как использовать runtime-рефлексию, содержится на странице обзора.

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

trait MethodMirror extends AnyRef

Зеркало, отражающее метод. Подробная информация о том, как использовать runtime-рефлексию, содержится на странице обзора.

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

trait ModuleMirror extends Universe.TemplateMirror

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

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

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

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

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

trait RuntimeClassApi extends AnyRef

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

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

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

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

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

trait TemplateMirror extends AnyRef

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

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

abstract class NameApi extends AnyRef

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

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

trait TermNameApi extends AnyRef

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

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

abstract class TermNameExtractor extends AnyRef

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

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

trait TypeNameApi extends AnyRef

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

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

abstract class TypeNameExtractor extends AnyRef

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

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

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

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

trait TreePrinter extends AnyRef

Атрибуты
protected
Определяющие классы
Printers

implicit class Quasiquote extends AnyRef

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

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

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

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

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

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

trait MemberScopeApi extends Universe.ScopeApi

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

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

abstract type Scope >: Null <: Universe.ScopeApi

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

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

trait ScopeApi extends Iterable[Universe.Symbol]

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

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

trait DefinitionsApi extends Universe.StandardTypes

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

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

trait StandardTypes extends AnyRef

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

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

trait StandardLiftableInstances extends AnyRef

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

trait StandardUnliftableInstances extends AnyRef

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

trait NamesApi extends AnyRef

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

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

trait TermNamesApi extends Universe.NamesApi

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

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

trait TypeNamesApi extends Universe.NamesApi

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

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

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

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

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

trait ClassSymbolApi extends Universe.TypeSymbolApi

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

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

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

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

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

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

trait MethodSymbolApi extends Universe.TermSymbolApi

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

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

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

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

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

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

trait ModuleSymbolApi extends Universe.TermSymbolApi

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

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

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

abstract type Symbol >: Null <: Universe.SymbolApi

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

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

trait SymbolApi extends AnyRef

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

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

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

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

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

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

trait TermSymbolApi extends Universe.SymbolApi

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

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

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

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

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

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

trait TypeSymbolApi extends Universe.SymbolApi

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

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

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

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

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

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

Definition Classes
Trees

trait AlternativeApi extends Universe.TermTreeApi

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

Definition Classes
Trees

abstract class AlternativeExtractor extends AnyRef

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

pat1 | ... | patn

Definition Classes
Trees

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

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

Definition Classes
Trees

trait AnnotatedApi extends Universe.TreeApi

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

Definition Classes
Trees

abstract class AnnotatedExtractor extends AnyRef

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

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

Definition Classes
Trees

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

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

Definition Classes
Trees

trait AppliedTypeTreeApi extends Universe.TypTreeApi

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

Definition Classes
Trees

abstract class AppliedTypeTreeExtractor extends AnyRef

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

tpt[args]

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

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

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

Definition Classes
Trees

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

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

Definition Classes
Trees

trait ApplyApi extends Universe.GenericApplyApi

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

Definition Classes
Trees

abstract class ApplyExtractor extends AnyRef

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

fun(args)

Например:

fun[targs](args)

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

Apply(TypeApply(fun, targs), args)

Definition Classes
Trees

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

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

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

trait AssignApi extends Universe.TermTreeApi

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

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

abstract class AssignExtractor extends AnyRef

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

lhs = rhs

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

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

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

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

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

trait BindApi extends Universe.DefTreeApi

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

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

abstract class BindExtractor extends AnyRef

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

pat*

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

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

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

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

trait BlockApi extends Universe.TermTreeApi

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

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

abstract class BlockExtractor extends AnyRef

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

{ stats; expr }

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

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

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

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

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

trait CaseDefApi extends Universe.TreeApi

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

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

abstract class CaseDefExtractor extends AnyRef

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

case pat if guard => body

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

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

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

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

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

трайт ClassDefApi extends Universe.ImplDefApi

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

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

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

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

mods class name [tparams] impl

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

extends parents { defs }

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

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

Пересечение типов <parent1> with ... with <parentN> { <decls> }, исключенное RefCheck

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

трайт CompoundTypeTreeApi extends Universe.TypTreeApi

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

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

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

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

parent1 with ... with parentN { refinement }

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

абстрактный тип DefDef >: Null <: Universe.DefDefApi with Universe.ValOrDefDef

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

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

трайт DefDefApi extends Universe.ValOrDefDefApi

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

trait ExistentialTypeTreeApi extends Universe.TypTreeApi

API всех узлов типов существования

Definition Classes
Trees

abstract class ExistentialTypeTreeExtractor extends AnyRef

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

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

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

vparams => body

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

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 всех условных операторов

Definition Classes
Trees

abstract class IfExtractor extends AnyRef

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

if (cond) thenp else elsep

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

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

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

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

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

trait ImplDefApi extends Universe.MemberDefApi

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

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

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

Оператор импорта

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

trait ImportApi extends Universe.SymTreeApi

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

Классы-определения
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. Он используется в основном в качестве метки для проверки того, что импорт был проверен по типу.

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

abstract type ImportSelector >: Null <: Universe.ImportSelectorApi

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

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

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

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

trait ImportSelectorApi extends AnyRef

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

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

abstract class ImportSelectorExtractor extends AnyRef

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

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

abstract type LabelDef >: Null <: Universe.LabelDefApi with Universe.DefTree with Universe.TermTree

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

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

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

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

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

trait LabelDefApi extends Universe.DefTreeApi with Universe.TermTreeApi

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

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

abstract class LabelDefExtractor extends AnyRef

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

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

while (cond) body ==> LabelDef($L, List(), if (cond) { body; L$() } else ())
do body while (cond) ==> LabelDef($L, List(), body; if (cond) L$() else ())
Определяющие классы
Trees

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

Литерал

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

тракт LiteralApi extends Universe.TermTreeApi

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

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

abstract класс LiteralExtractor extends AnyRef

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

значение

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

abstract тип 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, случаи будут соответствовать следующим ограничениям:

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

тракт MatchApi extends Universe.TermTreeApi

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

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

abstract класс MatchExtractor extends AnyRef

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

селектор match { случаи }

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

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

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

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

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

тракт MemberDefApi extends Universe.DefTreeApi

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

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

abstract класс ModifiersApi extends AnyRef

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

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

abstract класс ModifiersExtractor extends AnyRef

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

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

abstract тип ModuleDef >: Null <: Universe.ModuleDefApi with Universe.ImplDef

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

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

тракт ModuleDefApi extends Universe.ImplDefApi

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

Definition Classes
Trees

abstract class ModuleDefExtractor extends AnyRef

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

mods object name impl

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

extends parents { defs }

Definition Classes
Trees

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

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

Definition Classes
Trees

trait NameTreeApi extends Universe.TreeApi

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

Definition Classes
Trees

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

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

Definition Classes
Trees

trait NamedArgApi extends Universe.TermTreeApi

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

Definition Classes
Trees

abstract class NamedArgExtractor extends AnyRef

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

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

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

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

Definition Classes
Trees

trait NewApi extends Universe.TermTreeApi

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

Definition Classes
Trees

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

Definition Classes
Trees

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

Упаковщик, например, package pid { stats }

Definition Classes
Trees

trait PackageDefApi extends Universe.MemberDefApi

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

Definition Classes
Trees

abstract class PackageDefExtractor extends AnyRef

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

package pid { stats }

Definition Classes
Trees

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

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

Definition Classes
Trees

trait RefTreeApi extends Universe.SymTreeApi with Universe.NameTreeApi

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

Definition Classes
Trees

abstract class RefTreeExtractor extends AnyRef

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

Definition Classes
Trees

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

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

Definition Classes
Trees

trait ReturnApi extends Universe.TermTreeApi

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

Definition Classes
Trees

abstract class ReturnExtractor extends AnyRef

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

return expr

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

Definition Classes
Trees

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

Выбор члена <квалификатор> . <имя>

Definition Classes
Trees

trait SelectApi extends Universe.RefTreeApi

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

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

Выбор типа <квалификатор> # <имя>, исключенный RefCheck

Definition Classes
Trees

trait SelectFromTypeTreeApi extends Universe.TypTreeApi with Universe.RefTreeApi

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

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

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

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

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

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

trait SingletonTypeTreeApi extends Universe.TypTreeApi

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

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

abstract class SingletonTypeTreeExtractor extends AnyRef

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

ref.type

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

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

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

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

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

trait StarApi extends Universe.TermTreeApi

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

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

abstract class StarExtractor extends AnyRef

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

pat*

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

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

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

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

trait SuperApi extends Universe.TermTreeApi

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

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

abstract class SuperExtractor extends AnyRef

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

C.super[M]

Который представлен как:

Super(This(C), M)

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

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

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

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

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

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

trait SymTreeApi extends Universe.TreeApi

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

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

abstract тип Template >: Null <: Universe.TemplateApi with Universe.SymTree

Шаблон создания экземпляра класса или тракта

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

тракт TemplateApi extends Universe.SymTreeApi

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

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

abstract класс TemplateExtractor extends AnyRef

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

extends родители { self => тело }

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

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

class C { def foo { // владелец — C def bar // владелец — локальный фиктивный } }

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

abstract тип TermTree >: Null <: Universe.TermTreeApi with Universe.Tree

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

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

тракт TermTreeApi extends Universe.TreeApi

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

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

abstract тип This >: Null <: Universe.ThisApi with Universe.TermTree with Universe.SymTree

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

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

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

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

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

abstract класс ThisExtractor extends AnyRef

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

qual.this

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

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

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

Выражение Throw

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

тракт ThrowApi extends Universe.TermTreeApi

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

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

abstract класс ThrowExtractor extends AnyRef

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

throw expr

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

abstract класс Transformer extends AnyRef

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

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

класс Traverser extends AnyRef

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

Definition Classes
Trees

abstract type Tree >: Null <: Universe.TreeApi

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

Definition Classes
Trees

trait TreeApi extends Product

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

Definition Classes
Trees

abstract type TreeCopier >: Null <: Universe.TreeCopierOps

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

Definition Classes
Trees

abstract class TreeCopierOps extends AnyRef

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

Definition Classes
Trees

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

Узел обработки исключений Try.

Definition Classes
Trees

trait TryApi extends Universe.TermTreeApi

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

Definition Classes
Trees

abstract class TryExtractor extends AnyRef

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

try блок catch { обработки_исключений } finally финализатор

Если финализатор отсутствует, то 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, поддерживаемый всеми узлами TypTree.

Definition Classes
Trees

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

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

Definition Classes
Trees

trait TypeApplyApi extends Universe.GenericApplyApi

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

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

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

трайт UnApplyApi extends Universe.TermTreeApi

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

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

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

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

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

абстрактный тип 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 => }
Классы-определения
Trees

трайт ValDefApi extends Universe.ValOrDefDefApi

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

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

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

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

mods val name: tpt = rhs

mods var name: tpt = rhs

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

self: Bar => // self-типы

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

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

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

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

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

трайт ValOrDefDefApi extends Universe.MemberDefApi

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

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

трайт TypeTag[T] extends Universe.WeakTypeTag[T] with Equals with Serializable

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

Классы-определения
TypeTags
Аннотации
@implicitNotFound("No TypeTag available for ${T}")
См. также

scala.reflect.api.TypeTags

трайт WeakTypeTag[T] extends Equals with Serializable

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

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

Определяющие классы
TypeTags
Аннотации
@implicitNotFound("Нет доступного WeakTypeTag для ${T}")
См. также

scala.reflect.api.TypeTags

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

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

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

trait AnnotatedTypeApi extends Universe.TypeApi

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

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

abstract class AnnotatedTypeExtractor extends AnyRef

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

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

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

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

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

trait BoundedWildcardTypeApi extends Universe.TypeApi

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

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

abstract class BoundedWildcardTypeExtractor extends AnyRef

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

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

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

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

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

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

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

trait ClassInfoTypeApi extends Universe.TypeApi

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

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

abstract class ClassInfoTypeExtractor extends AnyRef

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

Definition Classes
Types

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

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

Definition Classes
Types

trait CompoundTypeApi extends AnyRef

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

Definition Classes
Types

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

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

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

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

Definition Classes
Types

trait ConstantTypeApi extends Universe.TypeApi

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

Definition Classes
Types

abstract class ConstantTypeExtractor extends AnyRef

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

Definition Classes
Types

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

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

Definition Classes
Types

trait ExistentialTypeApi extends Universe.TypeApi

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

Definition Classes
Types

abstract class ExistentialTypeExtractor extends AnyRef

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

Definition Classes
Types

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

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

Definition Classes
Types

trait MethodTypeApi extends Universe.TypeApi

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

Definition Classes
Types

abstract class MethodTypeExtractor extends AnyRef

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

def f(): Int

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

def f: Int

его тип — это NullaryMethodType.

Definition Classes
Types

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

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

Definition Classes
Types

trait NullaryMethodTypeApi extends Universe.TypeApi

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

Definition Classes
Types

abstract class NullaryMethodTypeExtractor extends AnyRef

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

Definition Classes
Types

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

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

Definition Classes
Types

trait PolyTypeApi extends Universe.TypeApi

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

Definition Classes
Types

abstract class PolyTypeExtractor extends AnyRef

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

Definition Classes
Types

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

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

P_1 with ... with P_m { D_1; ...; D_n}      RefinedType(List(P_1, ..., P_m), Scope(D_1, ..., D_n))
P_1 with ... with P_m                       RefinedType(List(P_1, ..., P_m), Scope())
{ D_1; ...; D_n}                            RefinedType(List(AnyRef), Scope(D_1, ..., D_n))
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
Типы

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
Типы

trait TypeBoundsApi extends Universe.TypeApi

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

Definition Classes
Типы

abstract class TypeBoundsExtractor extends AnyRef

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

Definition Classes
Типы

abstract type TypeRef >: Null <: Universe.TypeRefApi with 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)
Definition Classes
Типы

trait TypeRefApi extends Universe.TypeApi

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

Definition Classes
Типы

abstract class TypeRefExtractor extends AnyRef

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

Definition Classes
Типы

Члены-значения абстрактного типа

абстрактное значение Alternative: AlternativeExtractor

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

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

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

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

абстрактное значение Annotated: AnnotatedExtractor

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

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

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

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

абстрактное значение AnnotatedType: AnnotatedTypeExtractor

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

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

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

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

абстрактное значение Annotation: AnnotationExtractor

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

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

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

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

абстрактное значение AppliedTypeTree: AppliedTypeTreeExtractor

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

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

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

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

абстрактное значение Apply: ApplyExtractor

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

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

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

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

абстрактное значение Assign: AssignExtractor

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

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

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

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

абстрактное значение Bind: BindExtractor

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

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

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

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

abstract val Block: BlockExtractor

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

Definition Classes
Trees

implicit abstract val BlockTag: ClassTag[Block]

Definition Classes
ImplicitTags

abstract val BoundedWildcardType: BoundedWildcardTypeExtractor

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

Definition Classes
Types

implicit abstract val BoundedWildcardTypeTag: ClassTag[BoundedWildcardType]

Definition Classes
ImplicitTags

abstract val CaseDef: CaseDefExtractor

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

Definition Classes
Trees

implicit abstract val CaseDefTag: ClassTag[CaseDef]

Definition Classes
ImplicitTags

abstract val ClassDef: ClassDefExtractor

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

Definition Classes
Trees

implicit abstract val ClassDefTag: ClassTag[ClassDef]

Definition Classes
ImplicitTags

abstract val ClassInfoType: ClassInfoTypeExtractor

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

Definition Classes
Types

implicit abstract val ClassInfoTypeTag: ClassTag[ClassInfoType]

Definition Classes
ImplicitTags

implicit abstract val ClassSymbolTag: ClassTag[ClassSymbol]

Definition Classes
ImplicitTags

implicit abstract val CompoundTypeTag: ClassTag[CompoundType]

Definition Classes
ImplicitTags

abstract val CompoundTypeTree: CompoundTypeTreeExtractor

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

Definition Classes
Trees

implicit abstract val CompoundTypeTreeTag: ClassTag[CompoundTypeTree]

Definition Classes
ImplicitTags

abstract val Constant: ConstantExtractor

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

Definition Classes
Constants

implicit abstract val ConstantTag: ClassTag[Constant]

Definition Classes
ImplicitTags

abstract val ConstantType: ConstantTypeExtractor

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

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

implicit abstract val ConstantTypeTag: ClassTag[ConstantType]

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

abstract val DefDef: DefDefExtractor

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

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

implicit abstract val DefDefTag: ClassTag[DefDef]

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

implicit abstract val DefTreeTag: ClassTag[DefTree]

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

abstract val EmptyTree: Tree

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

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

abstract val ExistentialType: ExistentialTypeExtractor

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

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

implicit abstract val ExistentialTypeTag: ClassTag[ExistentialType]

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

abstract val ExistentialTypeTree: ExistentialTypeTreeExtractor

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

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

implicit abstract val ExistentialTypeTreeTag: ClassTag[ExistentialTypeTree]

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

abstract val Flag: FlagValues

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

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

implicit abstract val FlagSetTag: ClassTag[FlagSet]

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

implicit abstract val FreeTermSymbolTag: ClassTag[FreeTermSymbol]

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

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

implicit abstract val FreeTypeSymbolTag: ClassTag[FreeTypeSymbol]

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

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

abstract val Function: FunctionExtractor

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

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

implicit abstract val FunctionTag: ClassTag[Function]

Definition Classes
ImplicitTags

implicit abstract val GenericApplyTag: ClassTag[GenericApply]

Definition Classes
ImplicitTags

abstract def Ident(sym: Symbol): Ident

A factory method for Ident nodes.

Definition Classes
Trees

abstract val Ident: IdentExtractor

The constructor/extractor for Ident instances.

Definition Classes
Trees

implicit abstract val IdentTag: ClassTag[Ident]

Definition Classes
ImplicitTags

abstract val If: IfExtractor

The constructor/extractor for If instances.

Definition Classes
Trees

implicit abstract val IfTag: ClassTag[If]

Definition Classes
ImplicitTags

implicit abstract val ImplDefTag: ClassTag[ImplDef]

Definition Classes
ImplicitTags

abstract val Import: ImportExtractor

The constructor/extractor for Import instances.

Definition Classes
Trees

abstract val ImportSelector: ImportSelectorExtractor

The constructor/extractor for ImportSelector instances.

Definition Classes
Trees

implicit abstract val ImportSelectorTag: ClassTag[ImportSelector]

Definition Classes
ImplicitTags

implicit abstract val ImportTag: ClassTag[Import]

Definition Classes
ImplicitTags

implicit abstract val JavaArgumentTag: ClassTag[JavaArgument]

Definition Classes
ImplicitTags

abstract val LabelDef: LabelDefExtractor

The constructor/extractor for LabelDef instances.

Definition Classes
Trees

implicit abstract val LabelDefTag: ClassTag[LabelDef]

Definition Classes
ImplicitTags

abstract val Literal: LiteralExtractor

The constructor/extractor for Literal instances.

Definition Classes
Trees

implicit abstract val LiteralTag: ClassTag[Literal]

Definition Classes
ImplicitTags

abstract val Match: MatchExtractor

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

Definition Classes
Trees

implicit abstract val MatchTag: ClassTag[Match]

Definition Classes
ImplicitTags

implicit abstract val MemberDefTag: ClassTag[MemberDef]

Definition Classes
ImplicitTags

implicit abstract val MemberScopeTag: ClassTag[MemberScope]

Definition Classes
ImplicitTags

implicit abstract val MethodSymbolTag: ClassTag[MethodSymbol]

Definition Classes
ImplicitTags

abstract val MethodType: MethodTypeExtractor

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

Definition Classes
Types

implicit abstract val MethodTypeTag: ClassTag[MethodType]

Definition Classes
ImplicitTags

implicit abstract val MirrorTag: ClassTag[Mirror]

Definition Classes
ImplicitTags

abstract val Modifiers: ModifiersExtractor

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

Definition Classes
Trees

implicit abstract val ModifiersTag: ClassTag[Modifiers]

Definition Classes
ImplicitTags

abstract val ModuleDef: ModuleDefExtractor

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

Definition Classes
Trees

implicit abstract val ModuleDefTag: ClassTag[ModuleDef]

Definition Classes
ImplicitTags

implicit abstract val ModuleSymbolTag: ClassTag[ModuleSymbol]

Definition Classes
ImplicitTags

implicit abstract val NameTag: ClassTag[Name]

Definition Classes
ImplicitTags

implicit abstract val NameTreeTag: ClassTag[NameTree]

Definition Classes
ImplicitTags

abstract val NamedArg: NamedArgExtractor

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

Definition Classes
Trees

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

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

абстрактный val New: NewExtractor

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

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

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

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

абстрактный val NoFlags: FlagSet

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

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

абстрактный val NoPosition: Position

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

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

абстрактный val NoPrefix: Type

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

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

абстрактный val NoSymbol: Symbol

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

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

абстрактный val NoType: Type

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

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

абстрактный val NullaryMethodType: NullaryMethodTypeExtractor

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

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

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

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

абстрактный val PackageDef: PackageDefExtractor

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

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

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

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

абстрактный val PolyType: PolyTypeExtractor

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

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

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

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

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

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

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

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

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

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

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

абстрактное val ReferenceToBoxed: ReferenceToBoxedExtractor

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

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

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

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

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

абстрактное val RefinedType: RefinedTypeExtractor

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

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

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

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

абстрактное val Return: ReturnExtractor

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

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

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

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

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

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

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

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

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

абстрактное val Select: SelectExtractor

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

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

абстрактное val SelectFromTypeTree: SelectFromTypeTreeExtractor

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

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

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

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

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

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

абстрактное val SingleType: SingleTypeExtractor

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

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

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

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

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

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

абстрактное значение SingletonTypeTree: SingletonTypeTreeExtractor

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

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

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

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

абстрактное значение Star: StarExtractor

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

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

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

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

абстрактное значение Super: SuperExtractor

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

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

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

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

абстрактное значение SuperType: SuperTypeExtractor

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

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

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

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

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

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

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

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

абстрактное значение Template: TemplateExtractor

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

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

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

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

абстрактное значение TermName: TermNameExtractor

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

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

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

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

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

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

явное абстрактное 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

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

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

абстрактное val 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

абстрактный значение Typed: TypedExtractor

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

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

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

Определяющие классы
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>() Это используется в качестве заполнителя в теле основного конструктора в шаблонах классов, чтобы обозначить точку вставки вызова конструктора суперкласса после того, как проверка типов определит суперкласс данного шаблона.

Definition Classes
Trees

abstract val rootMirror: Mirror

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

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

абстрактный def runtimeMirror(cl: ClassLoader): Зеркало

Создаёт зеркало отражения времени выполнения из загрузчика класса JVM.

Для получения дополнительной информации о Mirrors, см. scala.reflect.api.Mirrors или Руководство по отражению: Зеркала

абстрактный def show(position: Позиция): Строка

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

Классы-определения
Печаталки

абстрактный def show(flags: ФлагНабор): Строка

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

Классы-определения
Печаталки

абстрактный def show(name: Имя): Строка

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

Классы-определения
Печаталки

абстрактный def showDecl(sym: Символ): Строка

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

Классы-определения
Печаталки

абстрактный def symbolOf[T](неявный arg0: СлабыйТипТэг[T]): ТипСимвол

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

Классы-определения
ТипТэги

абстрактный val termNames: ИменаТермов

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

Классы-определения
СтандартныеИмена

абстрактный def treeToAnnotation(tree: Дерево): Аннотация

Атрибуты
protected[scala]
Классы-определения
Аннотации

абстрактный val typeNames: ИменаТипов

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

Классы-определения
СтандартныеИмена

абстрактный def wrappingPos(trees: Список[Дерево]): Позиция

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

Классы-определения
Позиции

абстрактный def wrappingPos(default: Позиция, trees: Список[Дерево]): Позиция

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

Классы-определения
Позиции

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

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

Definition Classes
Trees
Annotations
@deprecated
Deprecated

(Since version 2.10.1) use q"$sym(..$args)" instead

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

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

Definition Classes
Trees
Annotations
@deprecated
Deprecated

(Since version 2.10.1) use q"new $tpt(..$args)" instead

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

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

Definition Classes
Trees
Annotations
@deprecated
Deprecated

(Since version 2.10.1) use the canonical Bind constructor to create a bind and then initialize its symbol manually

abstract def Block(stats: Tree*): Block

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

Definition Classes
Trees
Annotations
@deprecated
Deprecated

(Since version 2.10.1) use q"{..$stats}" instead. Flatten directly nested blocks manually if needed

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

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

Definition Classes
Trees
Annotations
@deprecated
Deprecated

(Since version 2.10.1) use cq"$pat => $body" instead

abstract def Ident(name: String): Ident

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

Definition Classes
Trees
Annotations
@deprecated
Deprecated

(Since version 2.10.1) use Ident(TermName(name)) instead

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

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

Definition Classes
Trees
Annotations
@deprecated
Deprecated

(Since version 2.10.1) use q"new ${sym.toType}(..$args)" instead

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

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

Definition Classes
Trees
Annotations
@deprecated
Deprecated

(Since version 2.10.1) use q"new $tpe(..$args)" instead

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

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

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

Члены-значения конкретного типа

объект Expr реализует java.io.Serializable

Конструктор/экстрактор для Expr.

Может быть полезен при работе с деревом и необходимости его вставки в вызов reify, в этом случае дерево сначала нужно обернуть в expr.

Основной источник информации об expr — страница scala.reflect.api.Exprs.

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

final def !=(arg0: Any): Boolean

Определяющие классы
AnyRef → Any

final def ##(): Int

Определяющие классы
AnyRef → Any

def +(other: String): String

Неявный
Этот член добавлен неявным преобразованием из JavaUniverse вany2stringadd[JavaUniverse] выполненным методом any2stringadd в scala.Predef.
Определяющие классы
any2stringadd

def ->[B](y: B): (JavaUniverse, B)

Неявный
Этот член добавлен неявным преобразованием из JavaUniverse вArrowAssoc[JavaUniverse] выполненным методом ArrowAssoc в scala.Predef.
Определяющие классы
ArrowAssoc
Аннотации
@inline()

final def ==(arg0: Any): Boolean

Определяющие классы
AnyRef → Any

def Modifiers(flags: FlagSet): Modifiers

Фабрика для экземпляров Modifiers.

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

def Modifiers(flags: FlagSet, privateWithin: Name): Modifiers

Фабрика для экземпляров Modifiers.

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

ленивое значение NoMods: Modifiers

Пустой объект Modifiers: нет флагов, пустое аннотацию видимости и без аннотаций Scala.

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

неявный val RuntimeClassTag: ClassTag[RuntimeClass]

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

final def asInstanceOf[T0]: T0

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

def clone(): AnyRef

Атрибуты
protected[java.lang]
Определяющие классы
AnyRef
Аннотации
@throws(classOf[java.lang.CloneNotSupportedException]) @native()

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

Неявный
Этот член добавлен неявным преобразованием из JavaUniverse вEnsuring[JavaUniverse] выполненным методом Ensuring в scala.Predef.
Определяющие классы
Ensuring

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

Неявный
Этот член добавлен неявным преобразованием из JavaUniverse вEnsuring[JavaUniverse] выполненным методом Ensuring в scala.Predef.
Определяющие классы
Ensuring

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

Implicit
Этот член добавлен неявным преобразованием из JavaUniverse вEnsuring[JavaUniverse] с помощью метода Ensuring в scala.Predef.
Definition Classes
Ensuring

def ensuring(cond: Boolean): JavaUniverse

Implicit
Этот член добавлен неявным преобразованием из JavaUniverse вEnsuring[JavaUniverse] с помощью метода 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

Implicit
Этот член добавлен неявным преобразованием из JavaUniverse вStringFormat[JavaUniverse] с помощью метода 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

Definition Classes
AnyRef
Annotations
@native()

final def notifyAll(): Unit

Definition Classes
AnyRef
Annotations
@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 в выражение, которое можно использовать для вставки.

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

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

Definition Classes
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 опция доступна только для деревьев с атрибутами.

Definition Classes
Printers

def showRaw(position: Position): String

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

Definition Classes
Printers

def showRaw(flags: FlagSet): String

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

Definition Classes
Printers

def showRaw(name: Name): String

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

Definition Classes
Printers

def showRaw(any: Any, printTypes: BooleanFlag = None, printIds: BooleanFlag = None, printOwners: BooleanFlag = None, printKinds: BooleanFlag = None, printMirrors: BooleanFlag = None, printPositions: BooleanFlag = None): String

Отображает внутреннюю структуру отражаемого артефакта как визуализацию дерева синтаксиса Scala.

Definition Classes
Printers

final def synchronized[T0](arg0: => T0): T0

Definition Classes
AnyRef

def toString(): String

Definition Classes
AnyRef → Any

val treeCopy: TreeCopier

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

Definition Classes
Trees

def treeToString(tree: Tree): String

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

Attributes
protected
Definition Classes
Printers

def typeOf[T](implicit ttag: TypeTag[T]): Type

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

Definition Classes
TypeTags

def typeTag[T](implicit ttag: TypeTag[T]): TypeTag[T]

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

Definition Classes
TypeTags

final def wait(): Unit

Definition Classes
AnyRef
Annotations
@throws(classOf[java.lang.InterruptedException])

final def wait(arg0: Long, arg1: Int): Unit

Definition Classes
AnyRef
Annotations
@throws(classOf[java.lang.InterruptedException])

final def wait(arg0: Long): Unit

Definition Classes
AnyRef
Annotations
@throws(classOf[java.lang.InterruptedException]) @native()

def weakTypeOf[T](implicit attag: WeakTypeTag[T]): Type

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

Definition Classes
TypeTags

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

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

Definition Classes
TypeTags

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

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

Атрибуты
protected
Определяющие классы
Trees

object Liftable extends Universe.StandardLiftableInstances

Компаньон к Liftable типу класса, содержащий стандартные экземпляры и предоставляющий вспомогательный apply метод для упрощения создания новых.

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

object Unliftable extends Universe.StandardUnliftableInstances

Компаньон к Unliftable типу класса, содержащий стандартные экземпляры и предоставляющий вспомогательный apply метод для упрощения создания новых.

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

object BooleanFlag extends java.io.Serializable

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

object TypeTag extends java.io.Serializable

Тип метки, соответствующий примитивным типам, и конструктор/экстрактор для WeakTypeTags.

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

object WeakTypeTag extends java.io.Serializable

Тип метки, соответствующий примитивным типам, и конструктор/экстрактор для WeakTypeTags.

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

© 2002-2019 EPFL, with contributions from Lightbend.
Licensed under the Apache License, Version 2.0.
https://www.scala-lang.org/api/2.13.0/scala-reflect/scala/reflect/api/JavaUniverse.html

Spec-Zone.ru

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