Класс scala.reflect.api.Universe
абстрактный класс Universe extends Symbols с Types с FlagSets с Scopes с Names с Trees с Constants с Annotations с Positions с Exprs с TypeTags с ImplicitTags с StandardDefinitions с StandardNames с StandardLiftables с Mirrors с Printers с Liftables с Quasiquotes с Internals
Конструкторы экземпляров
new Universe()
Члены типа
abstract type Annotation >: Null <: Universe.AnnotationApi
Информация об аннотации.
- Definition Classes
- Annotations
trait AnnotationApi extends AnyRef
API экземпляров Annotation. Основным источником информации об аннотациях является страница scala.reflect.api.Annotations.
- Definition Classes
- Annotations
abstract class AnnotationExtractor extends AnyRef
Класс-экстрактор для создания и сопоставления шаблонов синтаксиса Annotation(tpe, scalaArgs, javaArgs). Здесь tpe - тип аннотации, scalaArgs - полезная нагрузка аннотаций Scala, и javaArgs - полезная нагрузка аннотаций Java.
- Definition Classes
- Annotations
abstract type Constant >: Null <: Universe.ConstantApi
Этот "виртуальный" класс case представляет собой отражающий интерфейс для литеральных выражений, которые нельзя далее разбить или оценить, такие как "true", "0", "classOf[List]". Такие значения становятся частями абстрактного синтаксического дерева Scala, представляющего программу. Константны соответствуют разделу 6.24 "Константные выражения" Спецификации языка Scala.
Такие константы используются для представления литералов в абстрактных синтаксических деревьях (узел scala.reflect.api.Trees#Literal) и литеральных аргументов для аннотаций Java-файлов (класс scala.reflect.api.Annotations#LiteralArgument).
Константы могут быть сопоставлены и могут быть построены непосредственно, как если бы они были классами case:
assert(Constant(true).value == true)
Constant(true) match {
case Constant(s: String) => println("A string: " + s)
case Constant(b: Boolean) => println("A boolean value: " + b)
case Constant(x) => println("Something else: " + x)
}
Экземпляры Constant могут обернуть определённые виды таких выражений:
-
Литералы примитивных типов (
Byte, Short, Int, Long, Float, Double, Char, Boolean и Unit) - представлены непосредственно в виде литералов соответствующего типа; литералы строк - представлены экземплярами String; ссылки на классы, обычно создаваемые с помощью scala.Predef#classOf - представлены как типы; ссылки на значения перечислений - представлены как символы. Ссылки на классы представлены экземплярами scala.reflect.api.Types#Type (потому что когда компилятор Scala обрабатывает ссылку на класс, подлежащий в реальном времени класс может ещё не быть скомпилирован). Чтобы преобразовать такую ссылку в реальный класс, необходимо использовать метод runtimeClass зеркала, такого как RuntimeMirror (наиболее простой способ получения такого зеркала - использовать scala.reflect.runtime.currentMirror).
Ссылки на значения перечислений представлены экземплярами scala.reflect.api.Symbols#Symbol, которые в JVM указывают на методы, возвращающие базовые значения перечислений. Для проверки базового перечисления или получения значения ссылки на перечисление в реальном времени нужно использовать scala.reflect.api.Mirrors#RuntimeMirror (наиболее простой способ получения такого зеркала - опять же scala.reflect.runtime.package#currentMirror).
Пример использования:
enum JavaSimpleEnumeration { FOO, BAR }
import java.lang.annotation.*;
@Retention(RetentionPolicy.RUNTIME)
@Target({ElementType.TYPE})
public @interface JavaSimpleAnnotation {
Class<?> classRef();
JavaSimpleEnumeration enumRef();
}
@JavaSimpleAnnotation(
classRef = JavaAnnottee.class,
enumRef = JavaSimpleEnumeration.BAR
)
public class JavaAnnottee {}
import scala.reflect.runtime.universe._
import scala.reflect.runtime.{currentMirror => cm}
object Test extends App {
val jann = typeOf[JavaAnnottee].typeSymbol.annotations(0).javaArgs
def jarg(name: String) = jann(TermName(name)) match {
// Constant is always wrapped into a Literal or LiteralArgument tree node
case LiteralArgument(ct: Constant) => value
}
val classRef = jarg("classRef").value.asInstanceOf[Type]
// ideally one should match instead of casting
println(showRaw(classRef)) // TypeRef(ThisType(<empty>), JavaAnnottee, List())
println(cm.runtimeClass(classRef)) // class JavaAnnottee
val enumRef = jarg("enumRef").value.asInstanceOf[Symbol]
// ideally one should match instead of casting
println(enumRef) // value BAR
val siblings = enumRef.owner.info.decls
val enumValues = siblings.filter(sym => sym.isVal && sym.isPublic)
println(enumValues) // Scope{
// final val FOO: JavaSimpleEnumeration;
// final val BAR: JavaSimpleEnumeration
// }
// doesn't work because of https://github.com/scala/bug/issues/6459
// val enumValue = mirror.reflectField(enumRef.asTerm).get
val enumClass = cm.runtimeClass(enumRef.owner.asClass)
val enumValue = enumClass.getDeclaredField(enumRef.name.toString).get(null)
println(enumValue) // BAR
}
- Definition Classes
- Constants
abstract class ConstantApi extends AnyRef
abstract class ConstantExtractor extends AnyRef
Класс-экстрактор для создания и сопоставления шаблонов синтаксиса Constant(value) где value - значение константы в Scala.
- Definition Classes
- Constants
trait Expr[+T] extends Equals with Serializable
Expr оборачивает абстрактное синтаксическое дерево и отмечает его типом. Основным источником информации об exprs является страница scala.reflect.api.Exprs.
- Definition Classes
- Exprs
trait FlagOps extends Any
API набора FlagSet экземпляров. Основным источником информации о наборах флагов является страница scala.reflect.api.FlagSets.
- Definition Classes
- FlagSets
abstract type FlagSet
Абстрактный тип, представляющий наборы флагов (например, private, final и т. д.), которые применяются к деревьям определений и символам
- Definition Classes
- FlagSets
trait FlagValues extends AnyRef
Все возможные значения, которые могут составлять наборы флагов. Основным источником информации о наборах флагов является страница scala.reflect.api.FlagSets.
- Definition Classes
- FlagSets
abstract type FreeTermSymbol >: Null <: Universe.FreeTermSymbolApi with Universe.TermSymbol
Тип свободных терминов, введённых повторной реализацией.
- Definition Classes
- Internals
trait FreeTermSymbolApi extends Universe.TermSymbolApi
API свободных символов терминов. Основным источником информации о символах является страница Symbols.
$SYMACCESSORS
- Definition Classes
- Internals
abstract type FreeTypeSymbol >: Null <: Universe.FreeTypeSymbolApi with Universe.TypeSymbol
Тип свободных типов, введённых повторной реализацией.
- Definition Classes
- Internals
trait FreeTypeSymbolApi extends Universe.TypeSymbolApi
API свободных символов типов. Основным источником информации о символах является страница Symbols.
$SYMACCESSORS
- Definition Classes
- Internals
trait Importer extends AnyRef
Этот трейт предоставляет поддержку импортеров, механизм для миграции артефактов рефлексии между вселенными. Примечание: этот трейт обычно следует использовать только в редких случаях.
Артефакты рефлексии, такие как Символы и Типы, содержатся во вселенных Universe. Обычно вся обработка происходит в рамках одной Universe (например, макрос на этапе компиляции Universe или рефлексия во время выполнения Universe), но иногда возникает необходимость в миграции артефактов из одной Universe в другую. Например, компиляция во время выполнения работает путём импорта деревьев рефлексии во время выполнения в вселенную компилятора во время выполнения, компиляции импортированных элементов и экспорта результата обратно.
Артефакты рефлексии прочно связаны со своими вселенными, что отражается в том, что типы артефактов из разных вселенных несовместимы. Однако, используя Importer, их можно импортировать из одной вселенной в другую. Например, для импорта foo.bar.Baz из исходной Universe во вселенную назначения Universe, импортер сначала проверит, существует ли вся цепочка владельцев во вселенной назначения Universe. Если да, то ничего другого не делается. В противном случае импортер воссоздаст всю цепочку владельцев и импортирует соответствующие сигнатуры типов во вселенную назначения Universe.
Поскольку импортеры сопоставляют Symbol таблицы исходной и целевой вселенных, используя простые строковые имена, программист несет ответственность за то, чтобы убедиться, что импорты не искажают семантику, например, что foo.bar.Baz в исходной Universe означает то же, что и foo.bar.Baz в целевой Universe.
Пример
Вот как можно реализовать макрос, выполняющий вычисление аргумента на этапе компиляции с использованием компилятора во время выполнения для компиляции и оценки дерева, принадлежащего компилятору на этапе компиляции:
def staticEval[T](x: T) = macro staticEval[T]
def staticEval[T](c: scala.reflect.macros.blackbox.Context)(x: c.Expr[T]) = {
// creates a runtime reflection universe to host runtime compilation
import scala.reflect.runtime.{universe => ru}
val mirror = ru.runtimeMirror(c.libraryClassLoader)
import scala.tools.reflect.ToolBox
val toolBox = mirror.mkToolBox()
// runtime reflection universe and compile-time macro universe are different
// therefore an importer is needed to bridge them
// currently mkImporter requires a cast to correctly assign the path-dependent types
val importer0 = ru.internal.mkImporter(c.universe)
val importer = importer0.asInstanceOf[ru.internal.Importer { val from: c.universe.type }]
// the created importer is used to turn a compiler tree into a runtime compiler tree
// both compilers use the same classpath, so semantics remains intact
val imported = importer.importTree(tree)
// after the tree is imported, it can be evaluated as usual
val tree = toolBox.untypecheck(imported.duplicate)
val valueOfX = toolBox.eval(imported).asInstanceOf[T]
...
}
- Definition Classes
- Internals
trait InternalApi extends AnyRef
API отражения демонстрирует присущее экспериментальным вещам напряжение: с одной стороны, мы хотим, чтобы он вырос в красивый и надежный API, но с другой стороны, мы должны иметь дело с незрелостью базовых механизмов, предоставляя не очень красивые решения для реализации важных вариантов использования.
В Scala 2.10, которая была нашей первой попыткой создать API отражения, у нас не было систематического подхода к решению этого напряжения, иногда раскрывая слишком много внутренних деталей (например, Symbol.deSkolemize), а иногда слишком мало (например, до сих пор нет возможности изменять владельцев, выполнять преобразования типов и т. д.). Это привело к некоторой путанице с некоторыми внутренними API, живущими среди общедоступных, пугая новичков, и некоторыми внутренними API, доступными только через приведение типов, что требует глубокого знания компилятора и нарушает гарантии совместимости.
Это привело к созданию модуля internal API для API отражения, который предоставляет расширенные API, необходимые для макросов, которые расширяют границы передовых технологий, четко разграничивая их от более или менее простой остальной части и обеспечивая гарантии совместимости наравне с остальной частью API отражения (полная совместимость в рамках незначительных релизов, максимальные усилия для обратной совместимости в рамках основных релизов, четкий путь замены в случае редких несовместимых изменений в основных релизах).
Сам модуль internal (значение, реализующее InternalApi) не определен здесь, в scala.reflect.api.Universe, но предоставляется на основе каждой реализации. Конечная точка API времени выполнения (scala.reflect.runtime.universe) предоставляет universe.compat: InternalApi, тогда как конечные точки API времени компиляции (экземпляры scala.reflect.macros.Context) предоставляют c.compat: ContextInternalApi, который расширяет InternalApi дополнительными функциями, специфичными для вселенной и контекста.
- Определяющие классы
- Internals
abstract type ReferenceToBoxed >: Null <: Universe.ReferenceToBoxedApi with Universe.TermTree
Помечает базовую ссылку на идентификатор как помеченную.
Предварительное условие: идентификатор должен ссылаться на захваченную переменную. Такая помеченная ссылка будет ссылаться на помеченный объект, разыменование с помощью `.elem` не выполняется. Этот узел дерева может быть выведен макросами, такими как reify, которые вызывают referenceCapturedVariable. Он устраняется в LambdaLift, где происходит преобразование в boxing.
- Определяющие классы
- Internals
trait ReferenceToBoxedApi extends Universe.TermTreeApi
API, который поддерживают все ссылки
- Определяющие классы
- Internals
abstract class ReferenceToBoxedExtractor extends AnyRef
Класс-извлекатель для создания и сопоставления с образцом с помощью синтаксиса ReferenceToBoxed(ident). Этот узел AST не имеет прямого соответствия коду Scala и выводится макросами для непосредственного обращения к переменным захвата без обращения к elem.
Например:
var x = ... fun { x }
Выведет:
Ident(x)
Который преобразуется в:
Select(Ident(x), "elem")
Если бы использовался ReferenceToBoxed вместо Ident, преобразование не выполнялось бы.
- Определяющие классы
- Internals
trait ReificationSupportApi extends AnyRef
Это внутренний класс реализации.
- Определяющие классы
- Internals
trait Liftable[T] extends AnyRef
Класс типа, который определяет представление T как Tree.
- Определяющие классы
- Liftables
- См. также
http://docs.scala-lang.org/overviews/quasiquotes/lifting.html
trait Unliftable[T] extends AnyRef
Класс типа, который определяет способ извлечения экземпляра T из Tree.
- Определяющие классы
- Liftables
- См. также
http://docs.scala-lang.org/overviews/quasiquotes/unlifting.html
trait ClassMirror extends Universe.TemplateMirror
Зеркало, отражающее части экземпляра класса времени выполнения. См. страница обзора для получения подробной информации о том, как использовать отражение во время выполнения.
- Определяющие классы
- Mirrors
trait FieldMirror extends AnyRef
Зеркало, отражающее поле. См. страница обзора для получения подробной информации о том, как использовать отражение во время выполнения.
- Определяющие классы
- Mirrors
trait InstanceMirror extends AnyRef
Зеркало, отражающее значение времени выполнения. См. страница обзора для получения подробной информации о том, как использовать отражение во время выполнения.
- Определяющие классы
- Mirrors
trait MethodMirror extends AnyRef
Зеркало, отражающее метод. См. страницу обзора для получения подробной информации о том, как использовать рефлексию во время выполнения.
- Definition Classes
- Mirrors
trait ModuleMirror extends Universe.TemplateMirror
Зеркало, отражающее определение Scala-объекта или статические части класса во время выполнения. См. страницу обзора для получения подробной информации о том, как использовать рефлексию во время выполнения.
- Definition Classes
- Mirrors
trait ReflectiveMirror extends api.Mirror[Mirrors.this.type]
Зеркало, отражающее экземпляры и статические классы. См. страницу обзора для получения подробной информации о том, как использовать рефлексию во время выполнения.
- Definition Classes
- Mirrors
trait RuntimeClassApi extends AnyRef
Не имеет специальных методов. Здесь для обеспечения стираемой идентичности для RuntimeClass.
- Definition Classes
- Mirrors
trait RuntimeMirror extends api.Mirror[Mirrors.this.type] with Universe.ReflectiveMirror
API зеркала для рефлексивной вселенной. См. страницу обзора для получения подробной информации о том, как использовать рефлексию во время выполнения.
- Definition Classes
- Mirrors
trait TemplateMirror extends AnyRef
Зеркало, отражающее экземпляры или статические части класса во время выполнения. См. страницу обзора для получения подробной информации о том, как использовать рефлексию во время выполнения.
- Definition Classes
- Mirrors
abstract class NameApi extends AnyRef
API экземпляров Name.
- Definition Classes
- Names
trait TermNameApi extends AnyRef
Не имеет специальных методов. Здесь для обеспечения стираемой идентичности для TermName.
- Definition Classes
- Names
abstract class TermNameExtractor extends AnyRef
Класс-экстрактор для создания и сопоставления с образцом с помощью синтаксиса TermName(s).
- Definition Classes
- Names
trait TypeNameApi extends AnyRef
Не имеет специальных методов. Здесь для обеспечения стираемой идентичности для TypeName.
- Definition Classes
- Names
abstract class TypeNameExtractor extends AnyRef
Класс-экстрактор для создания и сопоставления с образцом с помощью синтаксиса TypeName(s).
- Definition Classes
- Names
case class BooleanFlag(value: Option[Boolean]) extends Product with Serializable
- Definition Classes
- Printers
trait TreePrinter extends AnyRef
- Attributes
- protected
- Definition Classes
- Printers
implicit class Quasiquote extends AnyRef
Неявный класс, который вводит интерполяторы строк q, tq, cq, pq и fq, которые также известны как квазицитаты. С их помощью вы можете легко манипулировать AST отражения Scala.
- Definition Classes
- Quasiquotes
- См. также
abstract type MemberScope >: Null <: Universe.MemberScopeApi with Universe.Scope
Тип областей видимости членов, например, в определениях классов.
- Definition Classes
- Scopes
trait MemberScopeApi extends Universe.ScopeApi
API, поддерживаемый всеми областями видимости членов.
- Definition Classes
- Scopes
abstract type Scope >: Null <: Universe.ScopeApi
Базовый тип всех областей видимости.
- Definition Classes
- Scopes
trait ScopeApi extends Iterable[Universe.Symbol]
API, поддерживаемый всеми областями видимости.
- Definition Classes
- Scopes
trait DefinitionsApi extends Universe.StandardTypes
Определяет стандартные символы (и типы через его базовый трейт).
- Definition Classes
- StandardDefinitions
trait StandardTypes extends AnyRef
Определяет стандартные типы.
- Definition Classes
- StandardDefinitions
trait StandardLiftableInstances extends AnyRef
- Definition Classes
- StandardLiftables
trait StandardUnliftableInstances extends AnyRef
- Definition Classes
- StandardLiftables
trait NamesApi extends AnyRef
Определяет стандартные имена, общие для имен терминов и типов: к ним можно получить доступ через члены nme и tpnme.
- Definition Classes
- StandardNames
trait TermNamesApi extends Universe.NamesApi
Определяет стандартные имена терминов, к которым можно получить доступ через член nme.
- Definition Classes
- StandardNames
trait TypeNamesApi extends Universe.NamesApi
Определяет стандартные имена типов, к которым можно получить доступ через член tpnme.
- Definition Classes
- StandardNames
abstract type ClassSymbol >: Null <: Universe.ClassSymbolApi with Universe.TypeSymbol
Тип символов классов, представляющих определения классов и трейтов.
- Definition Classes
- Symbols
trait ClassSymbolApi extends Universe.TypeSymbolApi
API символов класса. Основной источник информации о символах — страница Symbols.
Класс Symbol определяет isXXX тестовые методы, такие как isPublic или isFinal, params и returnType методы для символов методов, baseClasses для символов классов и так далее. Некоторые из этих методов не имеют смысла для определенных подклассов Symbol и возвращают NoSymbol, Nil или другие пустые значения.
- Definition Classes
- Symbols
abstract type MethodSymbol >: Null <: Universe.MethodSymbolApi with Universe.TermSymbol
Тип символов методов, представляющих объявления def.
- Definition Classes
- Symbols
trait MethodSymbolApi extends Universe.TermSymbolApi
API символов методов. Основной источник информации о символах — страница Symbols.
Класс Symbol определяет isXXX тестовые методы, такие как isPublic или isFinal, params и returnType методы для символов методов, baseClasses для символов классов и так далее. Некоторые из этих методов не имеют смысла для определенных подклассов Symbol и возвращают NoSymbol, Nil или другие пустые значения.
- Definition Classes
- Symbols
abstract type ModuleSymbol >: Null <: Universe.ModuleSymbolApi with Universe.TermSymbol
Тип символов модулей, представляющих объявления объектов.
- Definition Classes
- Symbols
trait ModuleSymbolApi extends Universe.TermSymbolApi
API символов модулей. Основной источник информации о символах — страница Symbols.
Класс Symbol определяет isXXX тестовые методы, такие как isPublic или isFinal, params и returnType методы для символов методов, baseClasses для символов классов и так далее. Некоторые из этих методов не имеют смысла для определенных подклассов Symbol и возвращают NoSymbol, Nil или другие пустые значения.
- Definition Classes
- Symbols
abstract type Symbol >: Null <: Universe.SymbolApi
Тип символов, представляющих объявления.
- Definition Classes
- Symbols
trait SymbolApi extends AnyRef
API символов. Основной источник информации о символах — страница Symbols.
Класс Symbol определяет isXXX тестовые методы, такие как isPublic или isFinal, params и returnType методы для символов методов, baseClasses для символов классов и так далее. Некоторые из этих методов не имеют смысла для определенных подклассов Symbol и возвращают NoSymbol, Nil или другие пустые значения.
- Definition Classes
- Symbols
abstract type TermSymbol >: Null <: Universe.TermSymbolApi with Universe.Symbol
Тип символов терминов, представляющих объявления val, var, def и object, а также пакеты и параметры значений.
- Definition Classes
- Symbols
trait TermSymbolApi extends Universe.SymbolApi
API символов терминов. Основной источник информации о символах — страница Symbols.
Класс Symbol определяет isXXX тестовые методы, такие как isPublic или isFinal, params и returnType методы для символов методов, baseClasses для символов классов и так далее. Некоторые из этих методов не имеют смысла для определенных подклассов Symbol и возвращают NoSymbol, Nil или другие пустые значения.
- Definition Classes
- Symbols
abstract type TypeSymbol >: Null <: Universe.TypeSymbolApi with Universe.Symbol
Тип символов типов, представляющих объявления типов, классов и признаков, а также параметры типов.
- Definition Classes
- Symbols
trait TypeSymbolApi extends Universe.SymbolApi
API символов типов. Основным источником информации о символах является страница Symbols.
Класс Symbol определяет isXXX тестовые методы, такие как isPublic или isFinal, params и returnType методы для символов методов, baseClasses для символов классов и так далее. Некоторые из этих методов не имеют смысла для определенных подклассов Symbol и возвращают NoSymbol, Nil или другие пустые значения.
- Definition Classes
- Symbols
abstract type Alternative >: Null <: Universe.AlternativeApi with Universe.TermTree
Альтернативы шаблонов.
Исключаются фазами компилятора Исключаются фазами компилятора patmat (в новом сопоставителе шаблонов 2.10) или explicitouter (в старом сопоставителе шаблонов до 2.10), за исключением вхождений в закодированном операторе Switch (т.е. оставшийся Match(CaseDef(...)))
- Definition Classes
- Trees
trait AlternativeApi extends Universe.TermTreeApi
API, который поддерживают все альтернативы
- Definition Classes
- Trees
abstract class AlternativeExtractor extends AnyRef
Класс экстрактора для создания и сопоставления с синтаксисом Alternative(trees). Этот узел AST соответствует следующему коду Scala:
pat1 | ... | patn
- Definition Classes
- Trees
abstract type Annotated >: Null <: Universe.AnnotatedApi with Universe.Tree
Узел дерева, к которому прикреплено аннотация. Используется только для аннотированных типов и аннотаций-приписываний, аннотации для определений хранятся в Modifiers. Удаляется анализатором типов (typedAnnotated), аннотации затем хранятся в AnnotatedType.
- Definition Classes
- Trees
trait AnnotatedApi extends Universe.TreeApi
API, который поддерживают все аннотированные
- Definition Classes
- Trees
abstract class AnnotatedExtractor extends AnyRef
Класс экстрактора для создания и сопоставления с синтаксисом Annotated(annot, arg). Этот узел AST соответствует следующему коду Scala:
arg @annot // для типов arg: @annot // для выражений
- Definition Classes
- Trees
abstract type AppliedTypeTree >: Null <: Universe.AppliedTypeTreeApi with Universe.TypTree
Примененный тип <tpt> [ <args> ], исключается RefCheck
- Definition Classes
- Trees
trait AppliedTypeTreeApi extends Universe.TypTreeApi
API, который поддерживают все примененные деревья типов
- Definition Classes
- Trees
abstract class AppliedTypeTreeExtractor extends AnyRef
Класс экстрактора для создания и сопоставления с синтаксисом AppliedTypeTree(tpt, args). Этот узел AST соответствует следующему коду Scala:
tpt[args]
Следует использовать только с узлами tpt, которые являются типами, т.е. которые имеют isType, возвращающий true. В противном случае следует использовать TypeApply.
List[Int] как в val x: List[Int] = ??? // представлено как AppliedTypeTree(Ident(<List>), List(TypeTree(<Int>)))
def foo[T] = ??? foo[Int] // представлено как TypeApply(Ident(<foo>), List(TypeTree(<Int>)))
- Definition Classes
- Trees
abstract type Apply >: Null <: Universe.ApplyApi with Universe.GenericApply
Применение значения
- Определяющие классы
- Trees
trait ApplyApi extends Universe.GenericApplyApi
API, поддерживаемый всеми применениями
- Определяющие классы
- Trees
abstract class ApplyExtractor extends AnyRef
Класс экстрактора для создания и сопоставления с образцом с помощью синтаксиса Apply(fun, args). Этот узел AST соответствует следующему коду Scala:
fun(args)
Например:
fun[targs](args)
Выражается как:
Apply(TypeApply(fun, targs), args)
- Определяющие классы
- Trees
abstract type Assign >: Null <: Universe.AssignApi with Universe.TermTree
Присваивание
- Определяющие классы
- Trees
trait AssignApi extends Universe.TermTreeApi
API, поддерживаемый всеми присваиваниями
- Определяющие классы
- Trees
abstract class AssignExtractor extends AnyRef
Класс экстрактора для создания и сопоставления с образцом с помощью синтаксиса Assign(lhs, rhs). Этот узел AST соответствует следующему коду Scala:
lhs = rhs
- Определяющие классы
- Trees
abstract type Bind >: Null <: Universe.BindApi with Universe.DefTree
Привязка переменной к образцу rhs.
Исключается этапами компилятора patmat (в новом сопоставителе образцов 2.10) или explicitouter (в старом сопоставителе образцов до 2.10).
- Определяющие классы
- Trees
trait BindApi extends Universe.DefTreeApi
API, поддерживаемый всеми привязками
- Определяющие классы
- Trees
abstract class BindExtractor extends AnyRef
Класс экстрактора для создания и сопоставления с образцом с помощью синтаксиса Bind(name, body). Этот узел AST соответствует следующему коду Scala:
pat*
- Определяющие классы
- Trees
abstract type Block >: Null <: Universe.BlockApi with Universe.TermTree
Блок выражений (выражения, разделенные точкой с запятой)
- Определяющие классы
- Trees
trait BlockApi extends Universe.TermTreeApi
API, поддерживаемый всеми блоками
- Определяющие классы
- Trees
abstract class BlockExtractor extends AnyRef
Класс экстрактора для создания и сопоставления с образцом с помощью синтаксиса Block(stats, expr). Этот узел AST соответствует следующему коду Scala:
{ stats; expr }
Если блок пуст, то expr устанавливается в Literal(Constant(())).
- Определяющие классы
- Trees
abstract type CaseDef >: Null <: Universe.CaseDefApi with Universe.Tree
Пункт case в сопоставлении с образцом. (за исключением случаев в операторах switch). Удаляется компилятором на этапах patmat (в новом сопоставителе образцов 2.10) или explicitouter (в старом сопоставителе образцов до 2.10)
- Definition Classes
- Trees
trait CaseDefApi extends Universe.TreeApi
API, поддерживаемый всеми определениями case
- Definition Classes
- Trees
abstract class CaseDefExtractor extends AnyRef
Класс экстрактора для создания и сопоставления с образцом с использованием синтаксиса CaseDef(pat, guard, body). Этот узел AST соответствует следующему коду Scala:
case pat if guard => body
Если guard отсутствует, guard устанавливается в EmptyTree. Если тело не указано, body устанавливается в Literal(Constant(()))
- Definition Classes
- Trees
abstract type ClassDef >: Null <: Universe.ClassDefApi with Universe.ImplDef
Определение класса.
- Definition Classes
- Trees
trait ClassDefApi extends Universe.ImplDefApi
API, поддерживаемый всеми определениями классов
- Definition Classes
- Trees
abstract class ClassDefExtractor extends AnyRef
Класс экстрактора для создания и сопоставления с образцом с использованием синтаксиса ClassDef(mods, name, tparams, impl). Этот узел AST соответствует следующему коду Scala:
mods class name [tparams] impl
Где impl обозначает:
extends parents { defs }
- Definition Classes
- Trees
abstract type CompoundTypeTree >: Null <: Universe.CompoundTypeTreeApi with Universe.TypTree
Пересечение типов <parent1> with ... with <parentN> { <decls> }, удаляется RefCheck
- Definition Classes
- Trees
trait CompoundTypeTreeApi extends Universe.TypTreeApi
API, поддерживаемый всеми деревьями составных типов
- Definition Classes
- Trees
abstract class CompoundTypeTreeExtractor extends AnyRef
Класс экстрактора для создания и сопоставления с образцом с использованием синтаксиса CompoundTypeTree(templ). Этот узел AST соответствует следующему коду Scala:
parent1 with ... with parentN { refinement }
- Definition Classes
- Trees
abstract type DefDef >: Null <: Universe.DefDefApi with Universe.ValOrDefDef
Определение метода или макроса.
- Definition Classes
- Trees
trait DefDefApi extends Universe.ValOrDefDefApi
API, поддерживаемый всеми определениями def def
- Definition Classes
- Trees
abstract class DefDefExtractor extends AnyRef
Класс экстрактора для создания и сопоставления с образцом с использованием синтаксиса DefDef(mods, name, tparams, vparamss, tpt, rhs). Этот узел AST соответствует следующему коду Scala:
mods def name[tparams](vparams_1)...(vparams_n): tpt = rhs
Если тип возвращаемого значения не указан явно (т.е. должен быть выведен), это выражается тем, что tpt устанавливается в TypeTree() (но не в EmptyTree!).
- Definition Classes
- Trees
абстрактный тип DefTree >: Null <: Universe.DefTreeApi with Universe.SymTree with Universe.NameTree
Дерево, представляющее сущность, определяющую символ: 1) объявление или определение (тип, класс, объект, пакет, val, var или def) 2) Bind, используемое для представления связывающих вхождений в соответствиях с шаблонами 3) LabelDef, используемое внутри для представления циклов while
- Определения классов
- Trees
трактат DefTreeApi extends Universe.SymTreeApi with Universe.NameTreeApi
API, поддерживаемый всеми деревьями def
- Определения классов
- Trees
абстрактный тип ExistentialTypeTree >: Null <: Universe.ExistentialTypeTreeApi with Universe.TypTree
Узел дерева экзистенциального типа
- Определения классов
- Trees
трактат ExistentialTypeTreeApi extends Universe.TypTreeApi
API, поддерживаемый всеми деревьями экзистенциальных типов
- Определения классов
- Trees
абстрактный класс ExistentialTypeTreeExtractor extends AnyRef
Класс-экстрактор для создания и сопоставления с шаблонами синтаксиса ExistentialTypeTree(tpt, whereClauses). Этот узел AST соответствует следующему коду Scala:
tpt forSome { whereClauses }
- Определения классов
- Trees
абстрактный тип Function >: Null <: Universe.FunctionApi with Universe.TermTree with Universe.SymTree
Анонимная функция, устранённая фазой компилятора lambdalift
- Определения классов
- Trees
трактат FunctionApi extends Universe.TermTreeApi with Universe.SymTreeApi
API, поддерживаемый всеми функциями
- Определения классов
- Trees
абстрактный класс FunctionExtractor extends AnyRef
Класс-экстрактор для создания и сопоставления с шаблонами синтаксиса Function(vparams, body). Этот узел AST соответствует следующему коду Scala:
vparams => body
Символ функции — это синтетический TermSymbol. Это владелец параметров функции.
- Определения классов
- Trees
абстрактный тип GenericApply >: Null <: Universe.GenericApplyApi with Universe.TermTree
Общий базовый класс для Apply и TypeApply.
- Определения классов
- Trees
трактат GenericApplyApi extends Universe.TermTreeApi
API, поддерживаемый всеми применениями
- Определения классов
- Trees
абстрактный тип Ident >: Null <: Universe.IdentApi with Universe.RefTree
Ссылка на имя идентификатора name.
- Определения классов
- Trees
trait IdentApi extends Universe.RefTreeApi
API, поддерживаемый всеми идентификаторами
- Definition Classes
- Trees
abstract class IdentExtractor extends AnyRef
Класс экстрактора для создания и сопоставления шаблонов с синтаксисом Ident(qual, name). Этот узел AST соответствует следующему коду Scala:
name
Проверка типов преобразует идентификаторы, которые ссылаются на поля или методы, окружающие их, в выборки. Например, name ==> this.name
- Definition Classes
- Trees
abstract type If >: Null <: Universe.IfApi with Universe.TermTree
Условное выражение
- Definition Classes
- Trees
trait IfApi extends Universe.TermTreeApi
API, поддерживаемый всеми операторами if
- Definition Classes
- Trees
abstract class IfExtractor extends AnyRef
Класс экстрактора для создания и сопоставления шаблонов с синтаксисом If(cond, thenp, elsep). Этот узел AST соответствует следующему коду Scala:
if (cond) thenp else elsep
Если альтернатива отсутствует, elsep устанавливается в Literal(Constant(())).
- Definition Classes
- Trees
abstract type ImplDef >: Null <: Universe.ImplDefApi with Universe.MemberDef
Базовый класс для определений классов и объектов.
- Definition Classes
- Trees
trait ImplDefApi extends Universe.MemberDefApi
API, поддерживаемый всеми определениями impl
- Definition Classes
- Trees
abstract type Import >: Null <: Universe.ImportApi with Universe.SymTree
Пункт импорта
- Definition Classes
- Trees
trait ImportApi extends Universe.SymTreeApi
API, поддерживаемый всеми операторами импорта
- Definition Classes
- Trees
abstract class ImportExtractor extends AnyRef
Класс экстрактора для создания и сопоставления шаблонов с синтаксисом Import(expr, selectors). Этот узел AST соответствует следующему коду Scala:
import expr.{selectors}
Селекторы представляют собой список ImportSelectors, которые концептуально являются парами имен (from, to). Последнее (и, возможно, единственное) имя может быть nme.WILDCARD. Например:
import qual.{w => _, x, y => z, _}
Будет представлено как:
Import(qual, List(("w", WILDCARD), ("x", "x"), ("y", "z"), (WILDCARD, null)))
Символ Import является импортируемым символом @see Symbol.newImport. Он используется в основном как маркер для проверки того, что импорт был проверен на соответствие типам.
- Definition Classes
- Trees
abstract type ImportSelector >: Null <: Universe.ImportSelectorApi
Селектор импорта (не дерево, а компонент дерева Import)
Представление импортированного имени, его необязательного переименования и их необязательных позиций
Удаляется проверкой типов.
- Definition Classes
- Trees
trait ImportSelectorApi extends AnyRef
API, поддерживаемый всеми селекторами импорта
- Definition Classes
- Trees
abstract class ImportSelectorExtractor extends AnyRef
Класс-экстрактор для создания и сопоставления с образцом синтаксиса ImportSelector(name, namePos, rename, renamePos). Это не узел AST, он используется как часть узла Import.
- Классы-определения
- Trees
abstract тип LabelDef >: Null <: Universe.LabelDefApi with Universe.DefTree with Universe.TermTree
Определённое меткой выражение. Не выражается в синтаксисе языка, но генерируется компилятором для моделирования циклов while/do-while, а также подсистемой сопоставления с образцом.
Метка ведет себя как вложенная функция, где params представляет входные параметры. Символ, заданный для LabelDef, должен иметь тип MethodType, как если бы это была вложенная функция.
Переходы — это узлы apply, которые привязаны к символу метки. Аргументы из узла apply будут переданы метке и присвоены переменным Idents.
Разрешены прямые переходы в блоке.
- Классы-определения
- Trees
тракт LabelDefApi extends Universe.DefTreeApi with Universe.TermTreeApi
API, поддерживаемый всеми определениями меток
- Классы-определения
- Trees
abstract класс LabelDefExtractor extends AnyRef
Класс-экстрактор для создания и сопоставления с образцом синтаксиса LabelDef(name, params, rhs).
Этот узел AST не имеет прямого соответствия в коде Scala. Он используется для хвостовых вызовов и аналогичных задач. Например, while/do преобразуются в label def следующим образом:
while (cond) body ==> LabelDef($L, List(), if (cond) { body; L$() } else ())
do body while (cond) ==> LabelDef($L, List(), body; if (cond) L$() else ())
- Классы-определения
- Trees
abstract тип Literal >: Null <: Universe.LiteralApi with Universe.TermTree
Литерал
- Классы-определения
- Trees
тракт LiteralApi extends Universe.TermTreeApi
API, поддерживаемый всеми литералами
- Классы-определения
- Trees
abstract класс LiteralExtractor extends AnyRef
Класс-экстрактор для создания и сопоставления с образцом синтаксиса Literal(value). Этот узел AST соответствует следующему коду Scala:
value
- Классы-определения
- Trees
abstract тип Match >: Null <: Universe.MatchApi with Universe.TermTree
- Выражение сопоставления с образцом (до фазы компилятора explicitouter до 2.10 / patmat с 2.10)
-
Выражения switch (после фазы компилятора explicitouter до 2.10 / patmat с 2.10)
После фазы компилятора explicitouter до 2.10 / patmat с 2.10 ветви case будут удовлетворять следующим ограничениям:
-
все условия —
EmptyTree,все шаблоны будут либо Literal(Constant(x:Int)), либо Alternative(lit|...|lit), за исключением ветви «иначе», у которой шаблон Ident(nme.WILDCARD)
- Классы-определения
- Trees
тракт MatchApi extends Universe.TermTreeApi
API, поддерживаемый всеми сопоставлениями
- Классы-определения
- Trees
abstract класс MatchExtractor extends AnyRef
Класс-экстрактор для создания и сопоставления с образцом синтаксиса Match(selector, cases). Этот узел AST соответствует следующему коду Scala:
selector match { cases }
Match также используется в операциях сопоставления с образцом, таких как val (foo, bar) = baz.
- Классы-определения
- Trees
abstract тип MemberDef >: Null <: Universe.MemberDefApi with Universe.DefTree
Общий базовый класс для всех определений членов: типов, классов, объектов, пакетов, значений и переменных, определений.
- Классы-определения
- Trees
trait MemberDefApi extends Universe.DefTreeApi
API, поддерживаемый всеми определениями членов
- Definition Classes
- Trees
abstract class ModifiersApi extends AnyRef
API, поддерживаемый всеми модификаторами
- Definition Classes
- Trees
abstract class ModifiersExtractor extends AnyRef
Класс-извлекатель для создания и сопоставления шаблонов с синтаксисом Modifiers(flags, privateWithin, annotations). Modifiers инкапсулирует флаги, аннотации видимости и аннотации Scala для определений членов.
- Definition Classes
- Trees
abstract type ModuleDef >: Null <: Universe.ModuleDefApi with Universe.ImplDef
Определение объекта, например, object Foo. Внутренне объекты довольно часто называются модулями для уменьшения неоднозначности. Удаляется компилятором на этапе refcheck.
- Definition Classes
- Trees
trait ModuleDefApi extends Universe.ImplDefApi
API, поддерживаемый всеми определениями модулей
- Definition Classes
- Trees
abstract class ModuleDefExtractor extends AnyRef
Класс-извлекатель для создания и сопоставления шаблонов с синтаксисом ModuleDef(mods, name, impl). Этот узел AST соответствует следующему коду Scala:
mods object name impl
Где impl означает:
extends parents { defs }
- Definition Classes
- Trees
abstract type NameTree >: Null <: Universe.NameTreeApi with Universe.Tree
Дерево, содержащее имя, например, путем его определения (DefTree) или путем ссылки на него (RefTree).
- Definition Classes
- Trees
trait NameTreeApi extends Universe.TreeApi
API, поддерживаемый всеми деревьями имен
- Definition Classes
- Trees
abstract type NamedArg >: Null <: Universe.NamedArgApi with Universe.TermTree
Присваивание или именованный аргумент. Появляется только в списках аргументов, удаляется компилятором на этапе typecheck (doTypedApply), восстанавливается reifier.
- Definition Classes
- Trees
trait NamedArgApi extends Universe.TermTreeApi
API, поддерживаемый всеми присваиваниями
- Definition Classes
- Trees
abstract class NamedArgExtractor extends AnyRef
Класс-извлекатель для создания и сопоставления шаблонов с синтаксисом NamedArg(lhs, rhs). Этот узел AST соответствует следующему коду Scala:
m.f(lhs = rhs)
@annotation(lhs = rhs)
- Definition Classes
- Trees
abstract type New >: Null <: Universe.NewApi with Universe.TermTree
Создание объекта
- Definition Classes
- Trees
trait NewApi extends Universe.TermTreeApi
API, поддерживаемый всеми операциями создания новых объектов
- Definition Classes
- Trees
абстрактный класс NewExtractor extends AnyRef
Класс-экстрактор для создания и сопоставления с образцом синтаксиса New(tpt). Этот узел AST соответствует следующему коду Scala:
new T
Этот узел всегда встречается в следующем контексте:
(new tpt).<init>[targs](args)
Например, представление AST для:
new Example[Int](2)(3)
имеет следующий код:
Apply( Apply( TypeApply( Select(New(TypeTree(typeOf[Example])), nme.CONSTRUCTOR) TypeTree(typeOf[Int])), List(Literal(Constant(2)))), List(Literal(Constant(3))))
- Определение классов
- Trees
абстрактный тип PackageDef >: Null <: Universe.PackageDefApi with Universe.MemberDef
Пакет, например, package pid { stats }
- Определение классов
- Trees
тракт PackageDefApi extends Universe.MemberDefApi
API, поддерживаемый всеми определениями пакетов
- Определение классов
- Trees
абстрактный класс PackageDefExtractor extends AnyRef
Класс-экстрактор для создания и сопоставления с образцом синтаксиса PackageDef(pid, stats). Этот узел AST соответствует следующему коду Scala:
package pid { stats }
- Определение классов
- Trees
абстрактный тип RefTree >: Null <: Universe.RefTreeApi with Universe.SymTree with Universe.NameTree
Узел, который ссылается на сущность, несущую символ. Ссылка, а не определение; определения находятся в DefTrees.
- Определение классов
- Trees
тракт RefTreeApi extends Universe.SymTreeApi with Universe.NameTreeApi
API, поддерживаемый всеми узлами ref
- Определение классов
- Trees
абстрактный класс RefTreeExtractor extends AnyRef
Класс-экстрактор для создания и сопоставления с образцом синтаксиса RefTree(qual, name). Этот узел AST соответствует либо Ident, либо Select, либо SelectFromTypeTree.
- Определение классов
- Trees
абстрактный тип Return >: Null <: Universe.ReturnApi with Universe.SymTree with Universe.TermTree
Выражение Return
- Определение классов
- Trees
тракт ReturnApi extends Universe.TermTreeApi
API, поддерживаемый всеми возвращаемыми значениями
- Определение классов
- Trees
абстрактный класс ReturnExtractor extends AnyRef
Класс-экстрактор для создания и сопоставления с образцом синтаксиса Return(expr). Этот узел AST соответствует следующему коду Scala:
return expr
Символ узла Return — это окружающий метод.
- Определение классов
- Trees
абстрактный тип Select >: Null <: Universe.SelectApi with Universe.RefTree
Выбор члена <qualifier> . <name>
- Определение классов
- Trees
тракт SelectApi extends Universe.RefTreeApi
API, поддерживаемый всеми select
- Definition Classes
- Trees
abstract class SelectExtractor extends AnyRef
Класс экстрактора для создания и сопоставления с образцом с помощью синтаксиса Select(qual, name). Этот узел AST соответствует следующему коду Scala:
qualifier.selector
Должен использоваться только с узлами qualifier, которые являются терминами, т.е. которые имеют isTerm, возвращающий true. В противном случае следует использовать SelectFromTypeTree.
foo.Bar // представлено как Select(Ident(<foo>), <Bar>) Foo#Bar // представлено как SelectFromTypeTree(Ident(<Foo>), <Bar>)
- Definition Classes
- Trees
abstract type SelectFromTypeTree >: Null <: Universe.SelectFromTypeTreeApi with Universe.TypTree with Universe.RefTree
Выбор типа <qualifier> # <name>, исключён RefCheck
- Definition Classes
- Trees
trait SelectFromTypeTreeApi extends Universe.TypTreeApi with Universe.RefTreeApi
API, поддерживаемый всеми select из деревьев типов
- Definition Classes
- Trees
abstract class SelectFromTypeTreeExtractor extends AnyRef
Класс экстрактора для создания и сопоставления с образцом с помощью синтаксиса SelectFromTypeTree(qualifier, name). Этот узел AST соответствует следующему коду Scala:
qualifier # selector
Примечание: зависимый от пути тип p.T выражается как p.type # T
Должен использоваться только с узлами qualifier, которые являются типами, т.е. которые имеют isType, возвращающий true. В противном случае следует использовать Select.
Foo#Bar // представлено как SelectFromTypeTree(Ident(<Foo>), <Bar>) foo.Bar // представлено как Select(Ident(<foo>), <Bar>)
- Definition Classes
- Trees
abstract type SingletonTypeTree >: Null <: Universe.SingletonTypeTreeApi with Universe.TypTree
Синглетонный тип, исключён RefCheck
- Definition Classes
- Trees
trait SingletonTypeTreeApi extends Universe.TypTreeApi
API, поддерживаемый всеми деревьями синглетонных типов
- Definition Classes
- Trees
abstract class SingletonTypeTreeExtractor extends AnyRef
Класс экстрактора для создания и сопоставления с образцом с помощью синтаксиса SingletonTypeTree(ref). Этот узел AST соответствует следующему коду Scala:
ref.type
- Definition Classes
- Trees
abstract type Star >: Null <: Universe.StarApi with Universe.TermTree
Повторение шаблона.
Исключён фазами компилятора patmat (в новом механизме сопоставления с образцом 2.10) или explicitouter (в старом механизме сопоставления с образцом до 2.10).
- Definition Classes
- Trees
trait StarApi extends Universe.TermTreeApi
API, поддерживаемый всеми звёздочками
- Definition Classes
- Trees
abstract class StarExtractor extends AnyRef
Класс экстрактора для создания и сопоставления с образцом с помощью синтаксиса Star(elem). Этот узел AST соответствует следующему коду Scala:
pat*
- Definition Classes
- Trees
abstract type Super >: Null <: Universe.SuperApi with Universe.TermTree
Сверхссылка, где qual — соответствующая ссылка this. Ссылка на супер C.super[M] представлена как Super(This(C), M).
- Definition Classes
- Trees
trait SuperApi extends Universe.TermTreeApi
API, поддерживаемый всеми суперами
- Definition Classes
- Trees
abstract class SuperExtractor extends AnyRef
Класс-экстрактор для создания и сопоставления с образцом с синтаксисом Super(qual, mix). Этот узел AST соответствует следующему коду Scala:
C.super[M]
Что представлено как:
Super(This(C), M)
Если mix пусто, то это tpnme.EMPTY.
Символ Super — это класс, _из_ которого производится ссылка на супер. Например, в C.super(...), это будет C.
- Definition Classes
- Trees
abstract type SymTree >: Null <: Universe.SymTreeApi with Universe.Tree
Дерево, содержащее символ, например, определяя его (DefTree) или ссылаясь на него (RefTree). Такие деревья начинаются без символа, возвращая NoSymbol, но после проверки типов без ошибок они содержат непустые символы.
- Definition Classes
- Trees
trait SymTreeApi extends Universe.TreeApi
API, поддерживаемый всеми деревьями символов
- Definition Classes
- Trees
abstract type Template >: Null <: Universe.TemplateApi with Universe.SymTree
Шаблон инициализации класса или тракта
- Definition Classes
- Trees
trait TemplateApi extends Universe.SymTreeApi
API, поддерживаемый всеми шаблонами
- Definition Classes
- Trees
abstract class TemplateExtractor extends AnyRef
Класс-экстрактор для создания и сопоставления с образцом с синтаксисом Template(parents, self, body). Этот узел AST соответствует следующему коду Scala:
extends parents { self => body }
В случае отсутствия аннотации self-типа, она представлена как пустое определение с именем nme.WILDCARD и типом NoType.
Символ шаблона — это локальный фиктивный символ. @see Symbol.newLocalDummy Владелец локального фиктивного символа — это окружающий тракт или класс. Локальный фиктивный символ сам является владельцем любых локальных блоков. Например:
class C { def foo { // owner is C def bar // owner is local dummy } }
- Definition Classes
- Trees
abstract type TermTree >: Null <: Universe.TermTreeApi with Universe.Tree
Дерево для термина. Не все деревья, представляющие термины, являются TermTrees; используйте isTerm для надежной идентификации терминов.
- Definition Classes
- Trees
trait TermTreeApi extends Universe.TreeApi
API, поддерживаемый всеми деревьями терминов
- Definition Classes
- Trees
abstract type This >: Null <: Universe.ThisApi with Universe.TermTree with Universe.SymTree
Ссылка на себя
- Definition Classes
- Trees
trait ThisApi extends Universe.TermTreeApi with Universe.SymTreeApi
API, поддерживаемый всеми this
- Definition Classes
- Trees
abstract class ThisExtractor extends AnyRef
Класс-экстрактор для создания и сопоставления с шаблонами синтаксиса This(qual). Этот узел AST соответствует следующему коду Scala:
qual.this
Символ This — это класс, к которому относится this. Например, в C.this это будет C.
- Классы определений
- Trees
abstract тип Throw >: Null <: Universe.ThrowApi с Universe.TermTree
Выражение Throw
- Классы определений
- Trees
тракт ThrowApi extends Universe.TermTreeApi
API, поддерживаемый всеми попытками
- Классы определений
- Trees
abstract класс ThrowExtractor extends AnyRef
Класс-экстрактор для создания и сопоставления с шаблонами синтаксиса Throw(expr). Этот узел AST соответствует следующему коду Scala:
throw expr
- Классы определений
- Trees
abstract класс Transformer extends AnyRef
Класс, реализующий стратегию преобразования дерева по умолчанию: клонирование покомпонентно по принципу «ширина в глубину».
- Классы определений
- Trees
класс Traverser extends AnyRef
Класс, реализующий стратегию обхода дерева по умолчанию: покомпонентный обход по принципу «ширина в глубину».
- Классы определений
- Trees
abstract тип Tree >: Null <: Universe.TreeApi
Тип деревьев абстрактной синтаксической структуры Scala.
- Классы определений
- Trees
тракт TreeApi extends Product
API, поддерживаемый всеми деревьями. Основным источником информации о деревьях является страница scala.reflect.api.Trees.
- Классы определений
- Trees
abstract тип TreeCopier >: Null <: Universe.TreeCopierOps
Тип стандартных (ленивых) копиров деревьев.
- Классы определений
- Trees
abstract класс TreeCopierOps extends AnyRef
API копирователя дерева.
- Классы определений
- Trees
abstract тип Try >: Null <: Universe.TryApi с Universe.TermTree
Узел Try-catch
- Классы определений
- Trees
тракт TryApi extends Universe.TermTreeApi
API, поддерживаемый всеми попытками
- Классы определений
- Trees
abstract класс TryExtractor extends AnyRef
Класс-экстрактор для создания и сопоставления с шаблонами синтаксиса Try(block, catches, finalizer). Этот узел AST соответствует следующему коду Scala:
try block catch { catches } finally finalizer
Если finalizer отсутствует, то finalizer устанавливается в EmptyTree.
- Классы определений
- Trees
abstract тип TypTree >: Null <: Universe.TypTreeApi с Universe.Tree
Дерево для типа. Не все деревья, представляющие типы, являются TypTrees; используйте isType для надежной идентификации типов.
- Классы определений
- Trees
trait TypTreeApi extends Universe.TreeApi
API, поддерживаемый всеми узлами типа
- Определяющие классы
- Trees
abstract type TypeApply >: Null <: Universe.TypeApplyApi with Universe.GenericApply
Явное применение типа.
- Определяющие классы
- Trees
trait TypeApplyApi extends Universe.GenericApplyApi
API, поддерживаемый всеми применениями типа
- Определяющие классы
- Trees
abstract class TypeApplyExtractor extends AnyRef
Класс экстрактора для создания и сопоставления с образцом с помощью синтаксиса TypeApply(fun, args). Этот узел AST соответствует следующему коду Scala:
fun[args]
Должен использоваться только с узлами fun, которые являются терминами, т.е. которые имеют isTerm, возвращающий true. В противном случае следует использовать AppliedTypeTree.
def foo[T] = ??? foo[Int] // представлено как TypeApply(Ident(<foo>), List(TypeTree(<Int>)))
List[Int] как в val x: List[Int] = ??? // представлено как AppliedTypeTree(Ident(<List>), List(TypeTree(<Int>)))
- Определяющие классы
- Trees
abstract type TypeBoundsTree >: Null <: Universe.TypeBoundsTreeApi with Universe.TypTree
Узел дерева границ типа
- Определяющие классы
- Trees
trait TypeBoundsTreeApi extends Universe.TypTreeApi
API, поддерживаемый всеми узлами границ типа
- Определяющие классы
- Trees
abstract class TypeBoundsTreeExtractor extends AnyRef
Класс экстрактора для создания и сопоставления с образцом с помощью синтаксиса TypeBoundsTree(lo, hi). Этот узел AST соответствует следующему коду Scala:
>: lo <: hi
- Определяющие классы
- Trees
abstract type TypeDef >: Null <: Universe.TypeDefApi with Universe.MemberDef
Абстрактный тип, параметр типа или псевдоним типа. Удаляется стиранием.
- Определяющие классы
- Trees
trait TypeDefApi extends Universe.MemberDefApi
API, поддерживаемый всеми определениями типов
- Определяющие классы
- Trees
abstract class TypeDefExtractor extends AnyRef
Класс экстрактора для создания и сопоставления с образцом с помощью синтаксиса TypeDef(mods, name, tparams, rhs). Этот узел AST соответствует следующему коду Scala:
mods type name[tparams] = rhs
mods type name[tparams] >: lo <: hi
Первое использование иллюстрирует TypeDefs, представляющие псевдонимы типов и параметры типов. Второе использование иллюстрирует TypeDefs, представляющие абстрактные типы, где lo и hi являются обоих TypeBoundsTrees и Modifier.deferred установлен в mods.
- Определяющие классы
- Trees
abstract type TypeTree >: Null <: Universe.TypeTreeApi with Universe.TypTree
Синтетическое дерево, содержащее произвольный тип. Не следует путать с TypTree, признаком для деревьев, которые используются только для деревьев типов. Деревья TypeTree вставляются в нескольких местах, но наиболее заметно в RefCheck, где все произвольные деревья типов заменяются деревьями TypeTree.
- Определяющие классы
- Trees
trait TypeTreeApi extends Universe.TypTreeApi
API, который поддерживают все деревья типов
- Классы-определения
- Trees
abstract class TypeTreeExtractor extends AnyRef
Класс-экстрактор для создания и сопоставления с образцом синтаксиса TypeTree(). Этот узел АСТ не имеет прямого соответствия с кодом Scala и выводится везде, когда требуется обернуть Type в Tree.
- Классы-определения
- Trees
abstract type Typed >: Null <: Universe.TypedApi with Universe.TermTree
Аннотация типа, удалённая фазой очистки компилятора
- Классы-определения
- Trees
trait TypedApi extends Universe.TermTreeApi
API, который поддерживают все typeds
- Классы-определения
- Trees
abstract class TypedExtractor extends AnyRef
Класс-экстрактор для создания и сопоставления с образцом синтаксиса Typed(expr, tpt). Этот узел АСТ соответствует следующему коду Scala:
expr: tpt
- Классы-определения
- Trees
abstract type UnApply >: Null <: Universe.UnApplyApi with Universe.TermTree
Используется для представления методов unapply в сопоставлении с образцом.
Например:
2 match { case Foo(x) => x }
Представляется как:
Match(
Literal(Constant(2)),
List(
CaseDef(
UnApply(
// a dummy node that carries the type of unapplication to patmat
// the <unapply-selector> here doesn't have an underlying symbol
// it only has a type assigned, therefore after `untypecheck` this tree is no longer typeable
Apply(Select(Ident(Foo), TermName("unapply")), List(Ident(TermName("<unapply-selector>")))),
// arguments of the unapply => nothing synthetic here
List(Bind(TermName("x"), Ident(nme.WILDCARD)))),
EmptyTree,
Ident(TermName("x")))))
Введён в модуле typer. Удалён фазами компилятора patmat (в новом сопоставлении с образцом 2.10) или explicitouter (в старом сопоставлении с образцом до 2.10).
- Классы-определения
- Trees
trait UnApplyApi extends Universe.TermTreeApi
API, который поддерживают все unapplies
- Классы-определения
- Trees
abstract class UnApplyExtractor extends AnyRef
Класс-экстрактор для создания и сопоставления с образцом синтаксиса UnApply(fun, args). Этот узел АСТ не имеет прямого соответствия с кодом Scala и вводится при проверке типов сопоставлений с образцом и try блоков.
- Классы-определения
- Trees
abstract type ValDef >: Null <: Universe.ValDefApi with Universe.ValOrDefDef
В широком смысле, определение значения. Все эти элементы кодируются как ValDefs:
-
неизменяемые значения, например, "val x"изменяемые значения, например, "var x" - флаг MUTABLE установлен в модификаторахленивые значения, например, "lazy val x" - флаг LAZY установлен в модификаторахпараметры метода, см. vparamss в scala.reflect.api.Trees#DefDef - флаг PARAM установлен в модификаторахявные типы self, например, class A { self: Bar => }
- Классы-определения
- Trees
trait ValDefApi extends Universe.ValOrDefDefApi
API, который поддерживают все val defs
- Классы-определения
- Trees
abstract class ValDefExtractor extends AnyRef
Класс-экстрактор для создания и сопоставления с образцом синтаксиса ValDef(mods, name, tpt, rhs). Этот узел АСТ соответствует любому из следующих кодов Scala:
mods val name: tpt = rhs
mods var name: tpt = rhs
mods name: tpt = rhs // в сигнатурах определений функций и методов
self: Bar => // явные типы self
Если тип значения не указан явно (т.е. должен быть выведен), это выражается в том, что tpt установлен в TypeTree() (но не в EmptyTree!).
- Классы-определения
- Trees
abstract type ValOrDefDef >: Null <: Universe.ValOrDefDefApi with Universe.MemberDef
Общий базовый класс для ValDefs и DefDefs.
- Классы-определения
- Trees
trait ValOrDefDefApi extends Universe.MemberDefApi
API, поддерживаемый всеми val def и def def.
- Definition Classes
- Trees
trait TypeTag[T] extends Universe.WeakTypeTag[T] with Equals with Serializable
Тип TypeTag — это scala.reflect.api.TypeTags#WeakTypeTag с дополнительной гарантией, что все ссылки на типы являются конкретными, т.е. он не содержит ссылок на неразрешённые параметры типа или абстрактные типы.
- Definition Classes
- TypeTags
- Annotations
- @implicitNotFound("No TypeTag available for ${T}")
- См. также
trait WeakTypeTag[T] extends Equals with Serializable
Если требуется неявное значение типа WeakTypeTag[T], компилятор создаст его, а рефлексивное представление T можно получить через поле tpe. Компоненты T могут быть ссылками на параметры типа или абстрактные типы. Обратите внимание, что WeakTypeTag делает всё возможное, чтобы быть как можно более конкретным, т.е. если TypeTag доступны для ссылочных аргументов типа или абстрактных типов, они используются для встраивания конкретных типов в WeakTypeTag. В противном случае WeakTypeTag будет содержать ссылку на абстрактный тип. Это поведение может быть полезным, когда ожидается, что T будет частично абстрактным, но требует особого внимания к этому случаю. Однако, если ожидается, что T будет полностью известен, используйте scala.reflect.api.TypeTags#TypeTag вместо него, что гарантирует это свойство статически.
Для получения дополнительной информации об TypeTag, см. Руководство по рефлексии: TypeTags
- Definition Classes
- TypeTags
- Annotations
- @implicitNotFound("No WeakTypeTag available for ${T}")
- См. также
abstract type AnnotatedType >: Null <: Universe.AnnotatedTypeApi with Universe.Type
Подпись типа AnnotatedType используется для типов с аннотациями вида <type> @<annotation>.
- Definition Classes
- Types
trait AnnotatedTypeApi extends Universe.TypeApi
API, поддерживаемый всеми типами с аннотациями. Основным источником информации о типах является страница scala.reflect.api.Types.
- Definition Classes
- Types
abstract class AnnotatedTypeExtractor extends AnyRef
Класс-экстрактор для создания и сопоставления с образцом с синтаксисом AnnotatedType(annotations, underlying). Здесь annotations — это аннотации, которые украшают базовый тип underlying. selfSym — это символ, представляющий сам анотированный тип.
- Definition Classes
- Types
abstract type BoundedWildcardType >: Null <: Universe.BoundedWildcardTypeApi with Universe.Type
BoundedWildcardTypes, используемые только во время вывода типов, создаются в двух местах:
-
Если ожидаемый тип выражения — это экзистенциальный тип, его скрытые символы заменяются ограниченными универсальными символами. 2. При поиске неявного преобразования, частично основанного на имени метода в преобразуемом типе, создаётся тип HasMethodMatching: MethodType с параметрами, типизированными как BoundedWildcardTypes.
- Definition Classes
- Types
trait BoundedWildcardTypeApi extends Universe.TypeApi
API, поддерживаемый всеми этими типами. Основным источником информации о типах является страница scala.reflect.api.Types.
- Definition Classes
- Types
abstract class BoundedWildcardTypeExtractor extends AnyRef
Класс-экстрактор для создания и сопоставления с образцом синтаксиса BoundedWildcardTypeExtractor(bounds), где bounds обозначает границы типов.
- Определяющие классы
- Типы
абстрактный тип ClassInfoType >: Null <: Universe.ClassInfoTypeApi с Universe.CompoundType
Подпись типа ClassInfo используется для определения родительских элементов и объявлений классов, трактов и объектов. Если класс, тракт или объект C объявлен так
C extends P_1 with ... with P_m { D_1; ...; D_n}
его ClassInfo тип имеет следующий вид:
ClassInfo(List(P_1, ..., P_m), Scope(D_1, ..., D_n), C)
- Определяющие классы
- Типы
тракт ClassInfoTypeApi extends Universe.TypeApi
API, поддерживаемый всеми типами информации о классе. Основным источником информации о типах является страница scala.reflect.api.Types.
- Определяющие классы
- Типы
абстрактный класс ClassInfoTypeExtractor extends AnyRef
Класс-экстрактор для создания и сопоставления с образцом синтаксиса ClassInfo(parents, decls, clazz) Здесь, parents — список родительских типов класса, decls — область, содержащая все объявления в классе, а clazz — символ самого класса.
- Определяющие классы
- Типы
абстрактный тип CompoundType >: Null <: Universe.CompoundTypeApi с Universe.Type
Подтип Type, представляющий уточнённые типы, а также подписи ClassInfo.
- Определяющие классы
- Типы
тракт CompoundTypeApi extends AnyRef
Не имеет специальных методов. Здесь для обеспечения сохранённой идентичности CompoundType.
- Определяющие классы
- Типы
абстрактный тип ConstantType >: Null <: Universe.ConstantTypeApi с Universe.SingletonType
Тип ConstantType не может быть выражен в пользовательских программах; он выводится как тип константы. Вот некоторые константы с их типами и внутренним строковым представлением:
1 ConstantType(Constant(1)) Int(1)
"abc" ConstantType(Constant("abc")) String("abc")
Типы ConstantType обозначают значения, которые могут безопасно быть сложены во время проверки типов. Операция deconst возвращает эквивалентный тип, который не будет сложен во время проверки.
- Определяющие классы
- Типы
тракт ConstantTypeApi extends Universe.TypeApi
API, поддерживаемый всеми типами констант. Основным источником информации о типах является страница scala.reflect.api.Types.
- Определяющие классы
- Типы
абстрактный класс ConstantTypeExtractor extends AnyRef
Класс-экстрактор для создания и сопоставления с образцом синтаксиса ConstantType(constant) Здесь, constant — постоянное значение, представленное типом.
- Определяющие классы
- Типы
абстрактный тип ExistentialType >: Null <: Universe.ExistentialTypeApi с Universe.Type
Подпись типа ExistentialType используется для экзистенциальных типов и типов подстановок.
- Определяющие классы
- Типы
тракт ExistentialTypeApi extends Universe.TypeApi
API, поддерживаемый всеми экзистенциальными типами. Основным источником информации о типах является страница scala.reflect.api.Types.
- Определяющие классы
- Типы
abstract class ExistentialTypeExtractor extends AnyRef
Класс экстрактора для создания и сопоставления с образцом с помощью синтаксиса ExistentialType(quantified, underlying). Здесь, quantified - это переменные типа, связанные экзистенциальным типом, а underlying - это тип, который экзистенциально квантифицирован.
- Definition Classes
- Types
abstract type MethodType >: Null <: Universe.MethodTypeApi with Universe.Type
Подпись типа MethodType используется для указания параметров и типа результата метода
- Definition Classes
- Types
trait MethodTypeApi extends Universe.TypeApi
API, поддерживаемый всеми типами методов. Основной источник информации о типах - страница scala.reflect.api.Types.
- Definition Classes
- Types
abstract class MethodTypeExtractor extends AnyRef
Класс экстрактора для создания и сопоставления с образцом с помощью синтаксиса MethodType(params, restpe). Здесь, params - это потенциально пустой список символов параметров метода, а restpe - это тип результата метода. Если метод является каррированным, restpe будет другим MethodType. Примечание: MethodType(Nil, Int) будет типом метода, определенного с пустым списком параметров.
def f(): Int
Если метод полностью без параметров, как в
def f: Int
его тип является NullaryMethodType.
- Definition Classes
- Types
abstract type NullaryMethodType >: Null <: Universe.NullaryMethodTypeApi with Universe.Type
Подпись типа NullaryMethodType используется для методов без параметров с объявлениями вида def foo: T
- Definition Classes
- Types
trait NullaryMethodTypeApi extends Universe.TypeApi
API, поддерживаемый всеми типами методов без параметров. Основной источник информации о типах - страница scala.reflect.api.Types.
- Definition Classes
- Types
abstract class NullaryMethodTypeExtractor extends AnyRef
Класс экстрактора для создания и сопоставления с образцом с помощью синтаксиса NullaryMethodType(resultType). Здесь, resultType - это тип результата метода без параметров.
- Definition Classes
- Types
abstract type PolyType >: Null <: Universe.PolyTypeApi with Universe.Type
Подпись типа PolyType используется для полиморфных методов, которые имеют хотя бы один параметр типа.
- Definition Classes
- Types
trait PolyTypeApi extends Universe.TypeApi
API, поддерживаемый всеми полиморфными типами. Основной источник информации о типах - страница scala.reflect.api.Types.
- Definition Classes
- Types
abstract class PolyTypeExtractor extends AnyRef
Класс экстрактора для создания и сопоставления с образцом с помощью синтаксиса PolyType(typeParams, resultType). Здесь, typeParams - это параметры типа метода, а resultType - это сигнатура типа после параметров типа.
- Definition Classes
- Types
abstract type RefinedType >: Null <: Universe.RefinedTypeApi with Universe.CompoundType
Тип RefinedType определяет типы любого из форм слева с их представлениями RefinedType справа.
P_1 with ... with P_m { D_1; ...; D_n} RefinedType(List(P_1, ..., P_m), Scope(D_1, ..., D_n))
P_1 with ... with P_m RefinedType(List(P_1, ..., P_m), Scope())
{ D_1; ...; D_n} RefinedType(List(AnyRef), Scope(D_1, ..., D_n))
- Классы определений
- Типы
тракт RefinedTypeApi extends Universe.TypeApi
API, поддерживаемый всеми уточнёнными типами. Основным источником информации о типах является страница scala.reflect.api.Types.
- Классы определений
- Типы
абстрактный класс RefinedTypeExtractor extends AnyRef
Класс-экстрактор для создания и сопоставления с образцом с синтаксисом RefinedType(parents, decls) Здесь, parents — список родительских типов класса, а decls — область, содержащая все объявления в классе.
- Классы определений
- Типы
абстрактный тип SingleType >: Null <: Universe.SingleTypeApi with Universe.SingletonType
Тип SingleType описывает типы любой из форм слева с их представлениями TypeRef справа.
(T # x).type SingleType(T, x) p.x.type SingleType(p.type, x) x.type SingleType(NoPrefix, x)
- Классы определений
- Типы
тракт SingleTypeApi extends Universe.TypeApi
API, поддерживаемый всеми одиночными типами. Основным источником информации о типах является страница scala.reflect.api.Types.
- Классы определений
- Типы
абстрактный класс SingleTypeExtractor extends AnyRef
Класс-экстрактор для создания и сопоставления с образцом с синтаксисом SingleType(pre, sym) Здесь, pre — префикс одиночного типа, а sym — символ стабильного значения, к которому ссылается одиночный тип.
- Классы определений
- Типы
абстрактный тип SingletonType >: Null <: Universe.SingletonTypeApi with Universe.Type
Тип Scala одиночных типов, т.е. типов, которые обитаемы только одним ненулевым значением. К ним относятся типы форм
C.this.type C.super.type x.type
а также константные типы.
- Классы определений
- Типы
тракт SingletonTypeApi extends AnyRef
Не имеет специальных методов. Присутствует для обеспечения стираемой идентичности для SingletonType.
- Классы определений
- Типы
абстрактный тип SuperType >: Null <: Universe.SuperTypeApi with Universe.SingletonType
Тип SuperType не записывается напрямую, а возникает при использовании C.super в качестве префикса в TypeRef или SingleType. Его внутреннее представление
SuperType(thistpe, supertpe)
Здесь, thistpe — тип соответствующего this-типа. Например, в типе, возникающем из C.super, часть thistpe будет ThisType(C). supertpe — тип суперкласса, на который ссылается super.
- Классы определений
- Типы
тракт SuperTypeApi extends Universe.TypeApi
API, поддерживаемый всеми типами super. Основным источником информации о типах является страница scala.reflect.api.Types.
- Классы определений
- Типы
абстрактный класс SuperTypeExtractor extends AnyRef
Класс-экстрактор для создания и сопоставления с образцом с синтаксисом SuperType(thistpe, supertpe)
- Классы определений
- Типы
abstract type ThisType >: Null <: Universe.ThisTypeApi with Universe.SingletonType
A singleton type that describes types of the form on the left with the corresponding ThisType representation to the right:
C.this.type ThisType(C)
- Definition Classes
- Types
trait ThisTypeApi extends Universe.TypeApi
The API that all this types support. The main source of information about types is the scala.reflect.api.Types page.
- Definition Classes
- Types
abstract class ThisTypeExtractor extends AnyRef
An extractor class to create and pattern match with syntax ThisType(sym) where sym is the class prefix of the this type.
- Definition Classes
- Types
abstract type Type >: Null <: Universe.TypeApi
The type of Scala types, and also Scala type signatures. (No difference is internally made between the two).
- Definition Classes
- Types
abstract class TypeApi extends AnyRef
The API of types. The main source of information about types is the scala.reflect.api.Types page.
- Definition Classes
- Types
abstract type TypeBounds >: Null <: Universe.TypeBoundsApi with Universe.Type
The TypeBounds type signature is used to indicate lower and upper type bounds of type parameters and abstract types. It is not a first-class type. If an abstract type or type parameter is declared with any of the forms on the left, its type signature is the TypeBounds type on the right.
T >: L <: U TypeBounds(L, U) T >: L TypeBounds(L, Any) T <: U TypeBounds(Nothing, U)
- Definition Classes
- Types
trait TypeBoundsApi extends Universe.TypeApi
The API that all type bounds support. The main source of information about types is the scala.reflect.api.Types page.
- Definition Classes
- Types
abstract class TypeBoundsExtractor extends AnyRef
An extractor class to create and pattern match with syntax TypeBound(lower, upper) Here, lower is the lower bound of the TypeBounds pair, and upper is the upper bound.
- Definition Classes
- Types
abstract type TypeRef >: Null <: Universe.TypeRefApi with Universe.Type
The TypeRef type describes types of any of the forms on the left, with their TypeRef representations to the right.
T # C[T_1, ..., T_n] TypeRef(T, C, List(T_1, ..., T_n)) p.C[T_1, ..., T_n] TypeRef(p.type, C, List(T_1, ..., T_n)) C[T_1, ..., T_n] TypeRef(NoPrefix, C, List(T_1, ..., T_n)) T # C TypeRef(T, C, Nil) p.C TypeRef(p.type, C, Nil) C TypeRef(NoPrefix, C, Nil)
- Definition Classes
- Types
trait TypeRefApi extends Universe.TypeApi
The API that all type refs support. The main source of information about types is the scala.reflect.api.Types page.
- Definition Classes
- Types
abstract class TypeRefExtractor extends AnyRef
An extractor class to create and pattern match with syntax TypeRef(pre, sym, args) Here, pre is the prefix of the type reference, sym is the symbol referred to by the type reference, and args is a possible empty list of type arguments.
- Definition Classes
- Types
abstract тип Internal <: InternalApi
- Определяющие классы
- Internals
- См. также
abstract тип Mirror >: Null <: api.Mirror[Universe.this.type]
Базовый тип всех зеркал этого универсума.
Этот абстрактный тип соответствует базовому интерфейсу для всех зеркал, определенных в scala.reflect.api.Mirror, и постепенно уточняется в конкретных универсумах (например, Mirror scala.reflect.api.JavaUniverse обладает возможностью рефлексии).
- Определяющие классы
- Mirrors
abstract тип Modifiers >: Null <: ModifiersApi
Тип модификаторов деревьев (не само дерево, а часть DefTrees).
- Определяющие классы
- Trees
abstract тип Name >: Null <: NameApi
Абстрактный тип имен.
- Определяющие классы
- Names
abstract тип Position >: Null <: api.Position { type Pos = Universe.this.Position }
Определяет специфичное для универсума понятие позиций. Основная документация по позициям находится по адресу scala.reflect.api.Position.
- Определяющие классы
- Positions
abstract тип RuntimeClass >: Null <: AnyRef
Абстрагирует представление класса во время выполнения на базовой платформе.
- Определяющие классы
- Mirrors
abstract тип TermName >: Null <: TermNameApi with Name
Абстрактный тип имен, представляющих типы.
- Определяющие классы
- Names
abstract тип TypeName >: Null <: TypeNameApi with Name
Абстрактный тип имен, представляющих термины.
- Определяющие классы
- Names
Абстрактные члены значения
abstract val Alternative: AlternativeExtractor
Конструктор/экстрактор для экземпляров Alternative.
- Определяющие классы
- Trees
implicit abstract val AlternativeTag: ClassTag[Alternative]
- Определяющие классы
- ImplicitTags
abstract val Annotated: AnnotatedExtractor
Конструктор/экстрактор для экземпляров Annotated.
- Определяющие классы
- Trees
implicit abstract val AnnotatedTag: ClassTag[Annotated]
- Определяющие классы
- ImplicitTags
abstract val AnnotatedType: AnnotatedTypeExtractor
Конструктор/экстрактор для экземпляров AnnotatedType.
- Определяющие классы
- Types
implicit abstract val AnnotatedTypeTag: ClassTag[AnnotatedType]
- Определяющие классы
- ImplicitTags
abstract val Annotation: AnnotationExtractor
Конструктор/экстрактор для экземпляров Annotation.
- Определяющие классы
- Annotations
implicit abstract val AnnotationTag: ClassTag[Annotation]
- Определяющие классы
- ImplicitTags
abstract val AppliedTypeTree: AppliedTypeTreeExtractor
Конструктор/экстрактор для экземпляров AppliedTypeTree.
- Определяющие классы
- Trees
implicit abstract val AppliedTypeTreeTag: ClassTag[AppliedTypeTree]
- Определяющие классы
- ImplicitTags
abstract val Apply: ApplyExtractor
Конструктор/экстрактор для экземпляров Apply.
- Определяющие классы
- Trees
implicit abstract val ApplyTag: ClassTag[Apply]
- Определяющие классы
- ImplicitTags
abstract val Assign: AssignExtractor
Конструктор/экстрактор для экземпляров Assign.
- Определяющие классы
- Trees
implicit abstract val AssignTag: ClassTag[Assign]
- Определяющие классы
- ImplicitTags
abstract val Bind: BindExtractor
Конструктор/экстрактор для экземпляров Bind.
- Определяющие классы
- Trees
implicit abstract val BindTag: ClassTag[Bind]
- Определяющие классы
- ImplicitTags
abstract val Block: BlockExtractor
Конструктор/экстрактор для экземпляров Block.
- Definition Classes
- Trees
implicit abstract val BlockTag: ClassTag[Block]
- Definition Classes
- ImplicitTags
abstract val BoundedWildcardType: BoundedWildcardTypeExtractor
Конструктор/экстрактор для экземпляров BoundedWildcardType.
- Definition Classes
- Types
implicit abstract val BoundedWildcardTypeTag: ClassTag[BoundedWildcardType]
- Definition Classes
- ImplicitTags
abstract val CaseDef: CaseDefExtractor
Конструктор/экстрактор для экземпляров CaseDef.
- Definition Classes
- Trees
implicit abstract val CaseDefTag: ClassTag[CaseDef]
- Definition Classes
- ImplicitTags
abstract val ClassDef: ClassDefExtractor
Конструктор/экстрактор для экземпляров ClassDef.
- Definition Classes
- Trees
implicit abstract val ClassDefTag: ClassTag[ClassDef]
- Definition Classes
- ImplicitTags
abstract val ClassInfoType: ClassInfoTypeExtractor
Конструктор/экстрактор для экземпляров ClassInfoType.
- Definition Classes
- Types
implicit abstract val ClassInfoTypeTag: ClassTag[ClassInfoType]
- Definition Classes
- ImplicitTags
implicit abstract val ClassSymbolTag: ClassTag[ClassSymbol]
- Definition Classes
- ImplicitTags
implicit abstract val CompoundTypeTag: ClassTag[CompoundType]
- Definition Classes
- ImplicitTags
abstract val CompoundTypeTree: CompoundTypeTreeExtractor
Конструктор/экстрактор для экземпляров CompoundTypeTree.
- Definition Classes
- Trees
implicit abstract val CompoundTypeTreeTag: ClassTag[CompoundTypeTree]
- Definition Classes
- ImplicitTags
abstract val Constant: ConstantExtractor
Конструктор/экстрактор для экземпляров Constant.
- Definition Classes
- Constants
implicit abstract val ConstantTag: ClassTag[Constant]
- Definition Classes
- ImplicitTags
abstract val ConstantType: ConstantTypeExtractor
Конструктор/экстрактор для экземпляров ConstantType.
- Определяющие классы
- Types
implicit abstract val ConstantTypeTag: ClassTag[ConstantType]
- Определяющие классы
- ImplicitTags
abstract val DefDef: DefDefExtractor
Конструктор/экстрактор для экземпляров DefDef.
- Определяющие классы
- Trees
implicit abstract val DefDefTag: ClassTag[DefDef]
- Определяющие классы
- ImplicitTags
implicit abstract val DefTreeTag: ClassTag[DefTree]
- Определяющие классы
- ImplicitTags
abstract val EmptyTree: Tree
Пустое дерево
- Определяющие классы
- Trees
abstract val ExistentialType: ExistentialTypeExtractor
Конструктор/экстрактор для экземпляров ExistentialType.
- Определяющие классы
- Types
implicit abstract val ExistentialTypeTag: ClassTag[ExistentialType]
- Определяющие классы
- ImplicitTags
abstract val ExistentialTypeTree: ExistentialTypeTreeExtractor
Конструктор/экстрактор для экземпляров ExistentialTypeTree.
- Определяющие классы
- Trees
implicit abstract val ExistentialTypeTreeTag: ClassTag[ExistentialTypeTree]
- Определяющие классы
- ImplicitTags
abstract val Flag: FlagValues
Модуль, содержащий все возможные значения, которые могут составлять наборы флагов.
- Определяющие классы
- FlagSets
implicit abstract val FlagSetTag: ClassTag[FlagSet]
- Определяющие классы
- ImplicitTags
implicit abstract val FreeTermSymbolTag: ClassTag[FreeTermSymbol]
Тег, сохраняющий идентичность FreeTermSymbol при стирании. Может использоваться для сопоставления с образцом, проверки экземпляров, сериализации и т. п.
- Определяющие классы
- Internals
implicit abstract val FreeTypeSymbolTag: ClassTag[FreeTypeSymbol]
Тег, сохраняющий идентичность FreeTermSymbol при стирании. Может использоваться для сопоставления с образцом, проверки экземпляров, сериализации и т. п.
- Определяющие классы
- Internals
abstract val Function: FunctionExtractor
Конструктор/экстрактор для экземпляров Function.
- Определяющие классы
- Trees
implicit abstract val FunctionTag: ClassTag[Function]
- Классы-определения
- ImplicitTags
неявный абстрактный значение GenericApplyTag: ClassTag[GenericApply]
- Классы-определения
- ImplicitTags
абстрактный метод Ident(sym: Symbol): Ident
Метод-фабрика для узлов Ident.
- Классы-определения
- Trees
абстрактный значение Ident: IdentExtractor
Конструктор/экстрактор для экземпляров Ident.
- Классы-определения
- Trees
неявный абстрактный значение IdentTag: ClassTag[Ident]
- Классы-определения
- ImplicitTags
абстрактный значение If: IfExtractor
Конструктор/экстрактор для экземпляров If.
- Классы-определения
- Trees
неявный абстрактный значение IfTag: ClassTag[If]
- Классы-определения
- ImplicitTags
неявный абстрактный значение ImplDefTag: ClassTag[ImplDef]
- Классы-определения
- ImplicitTags
абстрактный значение Import: ImportExtractor
Конструктор/экстрактор для экземпляров Import.
- Классы-определения
- Trees
абстрактный значение ImportSelector: ImportSelectorExtractor
Конструктор/экстрактор для экземпляров ImportSelector.
- Классы-определения
- Trees
неявный абстрактный значение ImportSelectorTag: ClassTag[ImportSelector]
- Классы-определения
- ImplicitTags
неявный абстрактный значение ImportTag: ClassTag[Import]
- Классы-определения
- ImplicitTags
неявный абстрактный значение JavaArgumentTag: ClassTag[JavaArgument]
- Классы-определения
- ImplicitTags
абстрактный значение LabelDef: LabelDefExtractor
Конструктор/экстрактор для экземпляров LabelDef.
- Классы-определения
- Trees
неявный абстрактный значение LabelDefTag: ClassTag[LabelDef]
- Классы-определения
- ImplicitTags
абстрактный значение Literal: LiteralExtractor
Конструктор/экстрактор для экземпляров Literal.
- Классы-определения
- Trees
неявный абстрактный значение LiteralTag: ClassTag[Literal]
- Классы-определения
- ImplicitTags
abstract val Match: MatchExtractor
Конструктор/экстрактор для экземпляров Match.
- Definition Classes
- Trees
implicit abstract val MatchTag: ClassTag[Match]
- Definition Classes
- ImplicitTags
implicit abstract val MemberDefTag: ClassTag[MemberDef]
- Definition Classes
- ImplicitTags
implicit abstract val MemberScopeTag: ClassTag[MemberScope]
- Definition Classes
- ImplicitTags
implicit abstract val MethodSymbolTag: ClassTag[MethodSymbol]
- Definition Classes
- ImplicitTags
abstract val MethodType: MethodTypeExtractor
Конструктор/экстрактор для экземпляров MethodType.
- Definition Classes
- Types
implicit abstract val MethodTypeTag: ClassTag[MethodType]
- Definition Classes
- ImplicitTags
implicit abstract val MirrorTag: ClassTag[Mirror]
- Definition Classes
- ImplicitTags
abstract val Modifiers: ModifiersExtractor
Конструктор/экстрактор для экземпляров Modifiers.
- Definition Classes
- Trees
implicit abstract val ModifiersTag: ClassTag[Modifiers]
- Definition Classes
- ImplicitTags
abstract val ModuleDef: ModuleDefExtractor
Конструктор/экстрактор для экземпляров ModuleDef.
- Definition Classes
- Trees
implicit abstract val ModuleDefTag: ClassTag[ModuleDef]
- Definition Classes
- ImplicitTags
implicit abstract val ModuleSymbolTag: ClassTag[ModuleSymbol]
- Definition Classes
- ImplicitTags
implicit abstract val NameTag: ClassTag[Name]
- Definition Classes
- ImplicitTags
implicit abstract val NameTreeTag: ClassTag[NameTree]
- Definition Classes
- ImplicitTags
abstract val NamedArg: NamedArgExtractor
Конструктор/экстрактор для экземпляров NamedArg.
- Definition Classes
- Trees
явное абстрактное val NamedArgTag: ClassTag[NamedArg]
- Определяющие классы
- ImplicitTags
абстрактное val New: NewExtractor
Конструктор/экстрактор для экземпляров New.
- Определяющие классы
- Trees
явное абстрактное val NewTag: ClassTag[New]
- Определяющие классы
- ImplicitTags
абстрактное val NoFlags: FlagSet
Пустой набор флагов
- Определяющие классы
- FlagSets
абстрактное val NoPosition: Position
Специальное "отсутствующее" положение.
- Определяющие классы
- Positions
абстрактное val NoPrefix: Type
Эта константа используется как специальное значение, обозначающее пустой префикс в пути зависимого типа. Например, x.type представлен как SingleType(NoPrefix, <x>), где <x> обозначает символ x.
- Определяющие классы
- Types
абстрактное val NoSymbol: Symbol
Специальный "отсутствующий" символ. Часто используется в API для обозначения значения по умолчанию или пустого значения.
- Определяющие классы
- Symbols
абстрактное val NoType: Type
Эта константа используется как специальное значение, указывающее, что нет осмысленного типа.
- Определяющие классы
- Types
абстрактное val NullaryMethodType: NullaryMethodTypeExtractor
Конструктор/экстрактор для экземпляров NullaryMethodType.
- Определяющие классы
- Types
явное абстрактное val NullaryMethodTypeTag: ClassTag[NullaryMethodType]
- Определяющие классы
- ImplicitTags
абстрактное val PackageDef: PackageDefExtractor
Конструктор/экстрактор для экземпляров PackageDef.
- Определяющие классы
- Trees
явное абстрактное val PackageDefTag: ClassTag[PackageDef]
- Определяющие классы
- ImplicitTags
абстрактное val PolyType: PolyTypeExtractor
Конструктор/экстрактор для экземпляров PolyType.
- Определяющие классы
- Types
явное абстрактное val PolyTypeTag: ClassTag[PolyType]
- Определяющие классы
- ImplicitTags
явное абстрактное val PositionTag: ClassTag[Position]
- Определяющие классы
- ImplicitTags
абстрактное val RefTree: RefTreeExtractor
Конструктор/экстрактор для экземпляров RefTree.
- Определяющие классы
- Trees
явный абстрактный val RefTreeTag: ClassTag[RefTree]
- Определяющие классы
- ImplicitTags
абстрактный val ReferenceToBoxed: ReferenceToBoxedExtractor
Конструктор/экстрактор для экземпляров ReferenceToBoxed.
- Определяющие классы
- Internals
явный абстрактный val ReferenceToBoxedTag: ClassTag[ReferenceToBoxed]
Тег, сохраняющий идентичность ReferenceToBoxed при стирании. Может использоваться для сопоставления с образцом, проверки экземпляров, сериализации и т. п.
- Определяющие классы
- Internals
абстрактный val RefinedType: RefinedTypeExtractor
Конструктор/экстрактор для экземпляров RefinedType.
- Определяющие классы
- Types
явный абстрактный val RefinedTypeTag: ClassTag[RefinedType]
- Определяющие классы
- ImplicitTags
абстрактный val Return: ReturnExtractor
Конструктор/экстрактор для экземпляров Return.
- Определяющие классы
- Trees
явный абстрактный val ReturnTag: ClassTag[Return]
- Определяющие классы
- ImplicitTags
явный абстрактный val RuntimeClassTag: ClassTag[RuntimeClass]
- Определяющие классы
- ImplicitTags
явный абстрактный val ScopeTag: ClassTag[Scope]
- Определяющие классы
- ImplicitTags
абстрактный def Select(qualifier: Tree, sym: Symbol): Select
Метод-фабрика для узлов Select.
- Определяющие классы
- Trees
абстрактный val Select: SelectExtractor
Конструктор/экстрактор для экземпляров Select.
- Определяющие классы
- Trees
абстрактный val SelectFromTypeTree: SelectFromTypeTreeExtractor
Конструктор/экстрактор для экземпляров SelectFromTypeTree.
- Определяющие классы
- Trees
явный абстрактный val SelectFromTypeTreeTag: ClassTag[SelectFromTypeTree]
- Определяющие классы
- ImplicitTags
явный абстрактный val SelectTag: ClassTag[Select]
- Определяющие классы
- ImplicitTags
абстрактный val SingleType: SingleTypeExtractor
Конструктор/экстрактор для экземпляров SingleType.
- Определяющие классы
- Types
явное абстрактное значение SingleTypeTag: ClassTag[SingleType]
- Определяющие классы
- ImplicitTags
явное абстрактное значение SingletonTypeTag: ClassTag[SingletonType]
- Определяющие классы
- ImplicitTags
абстрактное значение SingletonTypeTree: SingletonTypeTreeExtractor
Конструктор/экстрактор для SingletonTypeTree экземпляров.
- Определяющие классы
- Trees
явное абстрактное значение SingletonTypeTreeTag: ClassTag[SingletonTypeTree]
- Определяющие классы
- ImplicitTags
абстрактное значение Star: StarExtractor
Конструктор/экстрактор для Star экземпляров.
- Определяющие классы
- Trees
явное абстрактное значение StarTag: ClassTag[Star]
- Определяющие классы
- ImplicitTags
абстрактное значение Super: SuperExtractor
Конструктор/экстрактор для Super экземпляров.
- Определяющие классы
- Trees
явное абстрактное значение SuperTag: ClassTag[Super]
- Определяющие классы
- ImplicitTags
абстрактное значение SuperType: SuperTypeExtractor
Конструктор/экстрактор для SuperType экземпляров.
- Определяющие классы
- Types
явное абстрактное значение SuperTypeTag: ClassTag[SuperType]
- Определяющие классы
- ImplicitTags
явное абстрактное значение SymTreeTag: ClassTag[SymTree]
- Определяющие классы
- ImplicitTags
явное абстрактное значение SymbolTag: ClassTag[Symbol]
- Определяющие классы
- ImplicitTags
абстрактное значение Template: TemplateExtractor
Конструктор/экстрактор для Template экземпляров.
- Определяющие классы
- Trees
явное абстрактное значение TemplateTag: ClassTag[Template]
- Определяющие классы
- ImplicitTags
абстрактное значение TermName: TermNameExtractor
Конструктор/экстрактор для TermName экземпляров.
- Определяющие классы
- Names
явное абстрактное значение TermNameTag: ClassTag[TermName]
- Определяющие классы
- ImplicitTags
неявный абстрактный значение TermSymbolTag: ClassTag[TermSymbol]
- Определяющие классы
- ImplicitTags
неявный абстрактный значение TermTreeTag: ClassTag[TermTree]
- Определяющие классы
- ImplicitTags
абстрактный метод This(sym: Symbol): Tree
Метод-фабрика для узлов This.
- Определяющие классы
- Trees
абстрактный значение This: ThisExtractor
Конструктор/экстрактор для экземпляров This.
- Определяющие классы
- Trees
неявный абстрактный значение ThisTag: ClassTag[This]
- Определяющие классы
- ImplicitTags
абстрактный значение ThisType: ThisTypeExtractor
Конструктор/экстрактор для экземпляров ThisType.
- Определяющие классы
- Types
неявный абстрактный значение ThisTypeTag: ClassTag[ThisType]
- Определяющие классы
- ImplicitTags
абстрактный значение Throw: ThrowExtractor
Конструктор/экстрактор для экземпляров Throw.
- Определяющие классы
- Trees
неявный абстрактный значение ThrowTag: ClassTag[Throw]
- Определяющие классы
- ImplicitTags
неявный абстрактный значение TreeCopierTag: ClassTag[TreeCopier]
- Определяющие классы
- ImplicitTags
неявный абстрактный значение TreeTag: ClassTag[Tree]
- Определяющие классы
- ImplicitTags
абстрактный значение Try: TryExtractor
Конструктор/экстрактор для экземпляров Try.
- Определяющие классы
- Trees
неявный абстрактный значение TryTag: ClassTag[Try]
- Определяющие классы
- ImplicitTags
неявный абстрактный значение TypTreeTag: ClassTag[TypTree]
- Определяющие классы
- ImplicitTags
абстрактный значение TypeApply: TypeApplyExtractor
Конструктор/экстрактор для экземпляров TypeApply.
- Определяющие классы
- Trees
неявный абстрактный значение TypeApplyTag: ClassTag[TypeApply]
- Определяющие классы
- ImplicitTags
абстрактный значение TypeBounds: TypeBoundsExtractor
Конструктор/экстрактор для экземпляров TypeBounds.
- Классы-определения
- Types
неявный абстрактный val TypeBoundsTag: ClassTag[TypeBounds]
- Классы-определения
- ImplicitTags
абстрактный val TypeBoundsTree: TypeBoundsTreeExtractor
Конструктор/экстрактор для экземпляров TypeBoundsTree.
- Классы-определения
- Trees
неявный абстрактный val TypeBoundsTreeTag: ClassTag[TypeBoundsTree]
- Классы-определения
- ImplicitTags
абстрактный val TypeDef: TypeDefExtractor
Конструктор/экстрактор для экземпляров TypeDef.
- Классы-определения
- Trees
неявный абстрактный val TypeDefTag: ClassTag[TypeDef]
- Классы-определения
- ImplicitTags
абстрактный val TypeName: TypeNameExtractor
Конструктор/экстрактор для экземпляров TypeName.
- Классы-определения
- Names
неявный абстрактный val TypeNameTag: ClassTag[TypeName]
- Классы-определения
- ImplicitTags
абстрактный val TypeRef: TypeRefExtractor
Конструктор/экстрактор для экземпляров TypeRef.
- Классы-определения
- Types
неявный абстрактный val TypeRefTag: ClassTag[TypeRef]
- Классы-определения
- ImplicitTags
неявный абстрактный val TypeSymbolTag: ClassTag[TypeSymbol]
- Классы-определения
- ImplicitTags
неявный абстрактный val TypeTagg: ClassTag[Type]
- Классы-определения
- ImplicitTags
абстрактный def TypeTree(tp: Type): TypeTree
Метод-фабрика для узлов TypeTree.
- Классы-определения
- Trees
абстрактный val TypeTree: TypeTreeExtractor
Конструктор/экстрактор для экземпляров TypeTree.
- Классы-определения
- Trees
неявный абстрактный val TypeTreeTag: ClassTag[TypeTree]
- Классы-определения
- ImplicitTags
абстрактный val Typed: TypedExtractor
Конструктор/экстрактор для экземпляров Typed.
- Классы-определения
- Trees
неявный абстрактный val TypedTag: ClassTag[Typed]
- Definition Classes
- ImplicitTags
abstract val UnApply: UnApplyExtractor
Конструктор/экстрактор для экземпляров UnApply.
- Definition Classes
- Trees
implicit abstract val UnApplyTag: ClassTag[UnApply]
- Definition Classes
- ImplicitTags
abstract val ValDef: ValDefExtractor
Конструктор/экстрактор для экземпляров ValDef.
- Definition Classes
- Trees
implicit abstract val ValDefTag: ClassTag[ValDef]
- Definition Classes
- ImplicitTags
implicit abstract val ValOrDefDefTag: ClassTag[ValOrDefDef]
- Definition Classes
- ImplicitTags
abstract val WildcardType: Type
Объект, представляющий неизвестный тип, используемый во время вывода типов. Если вы видите WildcardType вне вывода типов, это, скорее всего, ошибка.
- Definition Classes
- Types
implicit abstract def addFlagOps(left: FlagSet): FlagOps
API экземпляров FlagSet.
- Definition Classes
- FlagSets
abstract def annotationToTree(ann: Annotation): Tree
- Attributes
- protected[scala]
- Definition Classes
- Annotations
abstract def appliedType(sym: Symbol, args: Type*): Type
- Definition Classes
- Types
- См. также
abstract def appliedType(sym: Symbol, args: List[Type]): Type
- Definition Classes
- Types
- См. также
abstract def appliedType(tycon: Type, args: Type*): Type
- Definition Classes
- Types
- См. также
abstract def appliedType(tycon: Type, args: List[Type]): Type
Создатель применений типов.
Полезно для объединения и создания типов из универсальных. Например:
scala> val boolType = typeOf[Boolean] boolType: reflect.runtime.universe.Type = Boolean scala> val optionType = typeOf[Option[_]] optionType: reflect.runtime.universe.Type = Option[_] scala> appliedType(optionType.typeConstructor, boolType) res0: reflect.runtime.universe.Type = Option[Boolean]
- Definition Classes
- Types
abstract def atPos[T <: Tree](pos: Position)(tree: T): T
Присваивает заданную позицию всем узлам без позиции данного AST.
- Определяющие классы
- Positions
abstract val definitions: DefinitionsApi
Значение, содержащее все стандартные определения в DefinitionsApi
- Определяющие классы
- StandardDefinitions
abstract def glb(ts: List[Type]): Type
Наибольшая нижняя граница списка типов, определяемая <:<.
- Определяющие классы
- Types
abstract val internal: Internal
- Определяющие классы
- Internals
- См. также
abstract def lub(xs: List[Type]): Type
Наименьшая верхняя граница списка типов, определяемая <:<.
- Определяющие классы
- Types
abstract def newCodePrinter(out: PrintWriter, tree: Tree, printRootPkg: Boolean): TreePrinter
Зацепка для определения того, что означает showCode(...).
- Атрибуты
- protected
- Определяющие классы
- Printers
abstract def newLazyTreeCopier: TreeCopier
Создает ленивый копировщик дерева.
- Определяющие классы
- Trees
abstract def newRawTreePrinter(out: PrintWriter): TreePrinter
Зацепка для определения того, что означает showRaw(...).
- Атрибуты
- protected
- Определяющие классы
- Printers
abstract def newStrictTreeCopier: TreeCopier
Создает строгий копировщик дерева.
- Определяющие классы
- Trees
abstract def newTreePrinter(out: PrintWriter): TreePrinter
Зацепка для определения того, что означает show(...).
- Атрибуты
- protected
- Определяющие классы
- Printers
abstract val noSelfType: ValDef
Пустое отложенное определение значения, соответствующее: val _: _ Это используется в качестве заполнителя в параметре self Template, если нет определения собственного значения типа self.
- Определяющие классы
- Trees
abstract val pendingSuperCall: Apply
Пустой вызов конструктора суперкласса, соответствующий: super.<init>() Это используется в качестве заполнителя в теле основного конструктора в шаблонах классов, чтобы обозначить точку вставки вызова конструктора суперкласса после того, как typechecker определит суперкласс данного шаблона.
- Определяющие классы
- Trees
abstract val rootMirror: Mirror
Корневое зеркало этой вселенной. Это зеркало содержит стандартные классы и типы Scala, такие как Any, AnyRef, AnyVal, Nothing, Null, и все классы, загруженные из scala-library, которые используются во всех зеркалах в окружающей вселенной.
- Definition Classes
- Mirrors
abstract def show(position: Position): String
Отображает красивое представление позиции.
- Definition Classes
- Printers
abstract def show(flags: FlagSet): String
Отображает красивое представление набора флагов.
- Definition Classes
- Printers
abstract def show(name: Name): String
Отображает красивое представление имени.
- Definition Classes
- Printers
abstract def showDecl(sym: Symbol): String
Отображает строку, представляющую объявление этого символа на Scala.
- Definition Classes
- Printers
abstract def symbolOf[T](implicit arg0: WeakTypeTag[T]): TypeSymbol
Символ типа x, полученный из тега типа.
- Definition Classes
- TypeTags
abstract val termNames: TermNamesApi
Значение, содержащее все стандартные имена терминов.
- Definition Classes
- StandardNames
abstract def treeToAnnotation(tree: Tree): Annotation
- Attributes
- protected[scala]
- Definition Classes
- Annotations
abstract val typeNames: TypeNamesApi
Значение, содержащее все стандартные имена типов.
- Definition Classes
- StandardNames
abstract def wrappingPos(trees: List[Tree]): Position
Позиция, охватывающая непустой набор деревьев. Точка позиции охватывания — точка позиции первого дерева. Если все некоторые деревья не являются синтетическими, возвращает позицию диапазона, охватывающую несинтетические деревья. В противном случае возвращает синтетическую позицию смещения для указания.
- Definition Classes
- Positions
abstract def wrappingPos(default: Position, trees: List[Tree]): Position
Позиция, охватывающая набор деревьев. Точка позиции охватывания — точка позиции по умолчанию. Если некоторые из деревьев являются диапазонами, возвращает позицию диапазона, охватывающую все диапазоны. В противном случае возвращает позицию по умолчанию.
- Definition Classes
- Positions
abstract def Apply(sym: Symbol, args: Tree*): Tree
Метод-фабрика для узлов Apply.
- Definition Classes
- Trees
- Annotations
- @deprecated
- Deprecated
(Since version 2.10.1) use q"$sym(..$args)" instead
abstract def ApplyConstructor(tpt: Tree, args: List[Tree]): Tree
Список аргументов 0-1 new, основанный на дереве типов.
- Definition Classes
- Trees
- Annotations
- @deprecated
- Deprecated
(Since version 2.10.1) use q"new $tpt(..$args)" instead
abstract def Bind(sym: Symbol, body: Tree): Bind
Фабричный метод для узлов Bind.
- Definition Classes
- Trees
- Annotations
- @deprecated
- Deprecated
(Since version 2.10.1) use the canonical Bind constructor to create a bind and then initialize its symbol manually
abstract def Block(stats: Tree*): Block
Фабричный метод для узлов Block. Сглаживает непосредственно вложенные блоки.
- Definition Classes
- Trees
- Annotations
- @deprecated
- Deprecated
(Since version 2.10.1) use q"{..$stats}" instead. Flatten directly nested blocks manually if needed
abstract def CaseDef(pat: Tree, body: Tree): CaseDef
Фабричный метод для узлов CaseDef.
- Definition Classes
- Trees
- Annotations
- @deprecated
- Deprecated
(Since version 2.10.1) use cq"$pat => $body" instead
abstract def Ident(name: String): Ident
Фабричный метод для узлов Ident.
- Definition Classes
- Trees
- Annotations
- @deprecated
- Deprecated
(Since version 2.10.1) use Ident(TermName(name)) instead
abstract def New(sym: Symbol, args: Tree*): Tree
Список аргументов 0-1 new, основанный на символе.
- Definition Classes
- Trees
- Annotations
- @deprecated
- Deprecated
(Since version 2.10.1) use q"new ${sym.toType}(..$args)" instead
abstract def New(tpe: Type, args: Tree*): Tree
Список аргументов 0-1 new, основанный на типе.
- Definition Classes
- Trees
- Annotations
- @deprecated
- Deprecated
(Since version 2.10.1) use q"new $tpe(..$args)" instead
abstract def New(tpt: Tree, argss: List[List[Tree]]): Tree
Фабричный метод для создания объекта new tpt(args_1)...(args_n). New(t, as) расширяется до: (new t).<init>(as)
- Definition Classes
- Trees
- Annotations
- @deprecated
- Deprecated
(Since version 2.10.1) use q"new $tpt(...$argss)" instead
abstract def Select(qualifier: Tree, name: String): Select
Метод-фабрика для узлов Select. Строковый аргумент name предполагается представляющим TermName.
- Definition Classes
- Trees
- Annotations
- @deprecated
- Устарело
(С версии 2.10.1) используйте Select(tree, TermName(name)) вместо этого
абстрактный def Super(sym: Symbol, mix: TypeName): Tree
Метод-фабрика для узлов Super.
- Definition Classes
- Trees
- Annotations
- @deprecated
- Устарело
(С версии 2.10.1) используйте q"$sym.super[$mix].x".qualifier вместо этого
абстрактный def Throw(tpe: Type, args: Tree*): Throw
Метод-фабрика для узлов Throw.
- Definition Classes
- Trees
- Annotations
- @deprecated
- Устарело
(С версии 2.10.1) используйте q"throw new $tpe(..$args)" вместо этого
абстрактный def Try(body: Tree, cases: (Tree, Tree)*): Try
Метод-фабрика для узлов Try.
- Definition Classes
- Trees
- Annotations
- @deprecated
- Устарело
(С версии 2.10.1) преобразуйте случаи в casedefs и используйте q"try $body catch { case ..$newcases }" вместо этого
абстрактный val compat: Compat
Обеспечивает обогащения для обеспечения обратной совместимости между Scala 2.10 и Scala 2.11. Если в вашей рефлексивной программе для Scala 2.10 вы использовали что-то, что теперь стало внутренней API, один compat._ импорт исправит ситуацию.
- Definition Classes
- Internals
- Annotations
- @deprecated
- Устарело
(С версии 2.13.0) совместимость со Scala 2.10, срок действия которой истек
абстрактный val emptyValDef: ValDef
- Definition Classes
- Trees
- Annotations
- @deprecated
- Устарело
(С версии 2.11.0) используйте
noSelfTypeвместо этого
абстрактный def newTermName(s: String): TermName
Создайте новое имя для термина.
- Definition Classes
- Names
- Annotations
- @deprecated
- Устарело
(С версии 2.11.0) используйте TermName вместо этого
абстрактный def newTypeName(s: String): TypeName
Создаёт новое имя типа.
- Definition Classes
- Names
- Annotations
- @deprecated
- Устарело
(С версии 2.11.0) используйте TypeName вместо этого
абстрактный val nme: TermNamesApi
- Definition Classes
- StandardNames
- Annotations
- @deprecated
- Устарело
(С версии 2.11.0) используйте
termNamesвместо этого- См. также
абстрактный val tpnme: TypeNamesApi
- Definition Classes
- StandardNames
- Annotations
- @deprecated
- Устарело
(С версии 2.11.0) используйте
typeNamesвместо этого- См. также
Члены-значения
объект Expr extends java.io.Serializable
Конструктор/экстрактор для Expr.
Может быть полезен при работе с деревом и необходимости его вставки в вызов reify, в котором дерево предварительно должно быть обернуто в expr.
Основной источник информации об expr — страница scala.reflect.api.Exprs.
- Определяющие классы
- Exprs
объект Liftable extends Universe.StandardLiftableInstances
Компаньон для Liftable класса типов, содержащего стандартные экземпляры и предоставляющего вспомогательный метод apply для упрощения создания новых экземпляров.
- Определяющие классы
- Liftables
объект Unliftable extends Universe.StandardUnliftableInstances
Компаньон для Unliftable класса типов, содержащего стандартные экземпляры и предоставляющего вспомогательный метод apply для упрощения создания новых экземпляров.
- Определяющие классы
- Liftables
объект BooleanFlag extends java.io.Serializable
- Определяющие классы
- Printers
объект TypeTag extends java.io.Serializable
Теги типов, соответствующие примитивным типам, и конструктор/экстрактор для WeakTypeTags.
- Определяющие классы
- TypeTags
объект WeakTypeTag extends java.io.Serializable
Теги типов, соответствующие примитивным типам, и конструктор/экстрактор для WeakTypeTags.
- Определяющие классы
- TypeTags
final метод !=(arg0: Any): Boolean
- Определяющие классы
- AnyRef → Any
final метод ##(): Int
- Определяющие классы
- AnyRef → Any
метод +(other: String): String
метод ->[B](y: B): (Universe, B)
final метод ==(arg0: Any): Boolean
- Определяющие классы
- AnyRef → Any
метод Modifiers(flags: FlagSet): Modifiers
Фабрика для Modifiers экземпляров.
- Определяющие классы
- Trees
метод Modifiers(flags: FlagSet, privateWithin: Name): Modifiers
Фабрика для Modifiers экземпляров.
- Определяющие классы
- Trees
ленивая переменная NoMods: Modifiers
Пустой Modifiers объект: без флагов, пустая аннотация видимости и без аннотаций Scala.
- Определяющие классы
- Trees
final метод asInstanceOf[T0]: T0
- Определяющие классы
- Any
def clone(): AnyRef
- Атрибуты
- protected[java.lang]
- Определяющие классы
- AnyRef
- Аннотации
- @throws(classOf[java.lang.CloneNotSupportedException]) @native()
def ensuring(cond: (Universe) => Boolean, msg: => Any): Universe
def ensuring(cond: (Universe) => Boolean): Universe
def ensuring(cond: Boolean, msg: => Any): Universe
def ensuring(cond: Boolean): Universe
final def eq(arg0: AnyRef): Boolean
- Определяющие классы
- AnyRef
def equals(arg0: AnyRef): Boolean
- Определяющие классы
- AnyRef → Any
def finalize(): Unit
- Атрибуты
- protected[java.lang]
- Определяющие классы
- AnyRef
- Аннотации
- @throws(classOf[java.lang.Throwable])
def formatted(fmtstr: String): String
final def getClass(): Class[_ <: AnyRef]
- Определяющие классы
- AnyRef → Any
- Аннотации
- @native()
def hashCode(): Int
- Определяющие классы
- AnyRef → Any
- Аннотации
- @native()
final def isInstanceOf[T0]: Boolean
- Определяющие классы
- Any
def itransform(transformer: Transformer, tree: Tree): Tree
Делегирует стратегию преобразования scala.reflect.internal.Trees, поскольку сопоставление с образцом по абстрактным типам, которые у нас есть здесь, снижает производительность.
- Атрибуты
- protected
- Определяющие классы
- Trees
final def ne(arg0: AnyRef): Boolean
- Определяющие классы
- AnyRef
final def notify(): Unit
- Определяющие классы
- AnyRef
- Аннотации
- @native()
final def notifyAll(): Unit
- Определяющие классы
- AnyRef
- Аннотации
- @native()
macro def reify[T](expr: T): Expr[T]
Используйте reify для получения абстрактного синтаксического дерева, представляющего заданное выражение Scala.
Например:
val five = reify{ 5 } // Literal(Constant(5))
reify{ 5.toString } // Apply(Select(Literal(Constant(5)), TermName("toString")), List())
reify{ five.splice.toString } // Apply(Select(five, TermName("toString")), List())
Полученное дерево зависит от Вселенной reify, из которой был вызван метод.
Используйте scala.reflect.api.Exprs#Expr.splice для вставки существующего выражения в вызов reify. Используйте Expr для преобразования Tree в выражение, которое можно вставить.
def render(what: Any, mkPrinter: (PrintWriter) => TreePrinter, printTypes: BooleanFlag = None, printIds: BooleanFlag = None, printOwners: BooleanFlag = None, printKinds: BooleanFlag = None, printMirrors: BooleanFlag = None, printPositions: BooleanFlag = None): String
- Атрибуты
- protected
- Определяющие классы
- Printers
def show(any: Any, printTypes: BooleanFlag = None, printIds: BooleanFlag = None, printOwners: BooleanFlag = None, printKinds: BooleanFlag = None, printMirrors: BooleanFlag = None, printPositions: BooleanFlag = None): String
Отображает представление артефакта рефлексии в виде десугаризованного кода Scala.
- Определяющие классы
- Printers
def showCode(tree: Tree, printTypes: BooleanFlag = None, printIds: BooleanFlag = None, printOwners: BooleanFlag = None, printPositions: BooleanFlag = None, printRootPkg: Boolean = false): String
Отображает код переданного дерева, таким образом, что: 1) его можно позже скомпилировать с помощью scalac, сохранив то же значение, 2) он выглядит красиво. #1 доступен для деревьев без атрибутов и с атрибутами #2 более или менее правильный отступ, но в настоящее время многие операции десугаризации оставлены, и мы планируем улучшить это в будущем. Параметры printTypes, printIds, printPositions имеют то же значение, что и для TreePrinter printRootPkg доступен только для деревьев с атрибутами.
- Определяющие классы
- Printers
def showRaw(position: Position): String
Отображает внутреннюю структуру позиции.
- Определяющие классы
- Printers
def showRaw(flags: FlagSet): String
Отображает внутреннюю структуру набора флагов.
- Определяющие классы
- Printers
def showRaw(name: Name): String
Отображает внутреннюю структуру имени.
- Definition Classes
- Printers
def showRaw(any: Any, printTypes: BooleanFlag = None, printIds: BooleanFlag = None, printOwners: BooleanFlag = None, printKinds: BooleanFlag = None, printMirrors: BooleanFlag = None, printPositions: BooleanFlag = None): String
Отображает внутреннюю структуру артефакта рефлексии как визуализацию дерева синтаксиса Scala.
- Definition Classes
- Printers
final def synchronized[T0](arg0: => T0): T0
- Definition Classes
- AnyRef
def toString(): String
- Definition Classes
- AnyRef → Any
val treeCopy: TreeCopier
Стандартный (ленивый) копировщик деревьев.
- Definition Classes
- Trees
def treeToString(tree: Tree): String
По умолчанию деревья выводятся с show
- Attributes
- protected
- Definition Classes
- Printers
def typeOf[T](implicit ttag: TypeTag[T]): Type
Сокращение для implicitly[TypeTag[T]].tpe
- Definition Classes
- TypeTags
def typeTag[T](implicit ttag: TypeTag[T]): TypeTag[T]
Сокращение для implicitly[TypeTag[T]]
- Definition Classes
- TypeTags
final def wait(): Unit
- Definition Classes
- AnyRef
- Annotations
- @throws(classOf[java.lang.InterruptedException])
final def wait(arg0: Long, arg1: Int): Unit
- Definition Classes
- AnyRef
- Annotations
- @throws(classOf[java.lang.InterruptedException])
final def wait(arg0: Long): Unit
- Definition Classes
- AnyRef
- Annotations
- @throws(classOf[java.lang.InterruptedException]) @native()
def weakTypeOf[T](implicit attag: WeakTypeTag[T]): Type
Сокращение для implicitly[WeakTypeTag[T]].tpe
- Definition Classes
- TypeTags
def weakTypeTag[T](implicit attag: WeakTypeTag[T]): WeakTypeTag[T]
Сокращение для implicitly[WeakTypeTag[T]]
- Definition Classes
- TypeTags
def xtransform(transformer: Transformer, tree: Tree): Tree
Предоставляет точку расширения для стратегии преобразования. Обеспечивает совместимость с новыми типами узлов.
- Attributes
- protected
- Definition Classes
- Trees
© 2002-2019 EPFL, with contributions from Lightbend.
Licensed under the Apache License, Version 2.0.
https://www.scala-lang.org/api/2.13.0/scala-reflect/scala/reflect/api/Universe.html
ЭКСПЕРИМЕНТАЛЬНО
Universeпредоставляет полный набор операций рефлексии, которые позволяют рефлексивно исследовать отношения типов Scala, такие как членство или подтипирование.scala.reflect.api.Universe имеет два специализированных под-универсума для разных сценариев. scala.reflect.api.JavaUniverse добавляет операции, которые связывают символы и типы с базовыми классами и значениями времени выполнения экземпляра JVM — это можно рассматривать как
Universe, которое следует использовать для всех типичных случаев использования рефлексии Scala. scala.reflect.macros.Universe добавляет операции, которые позволяют макросам получать доступ к выбранным структурам данных и операциям компилятора — этот типUniverseдолжен существовать только в реализации макроса Scala.Universeможно рассматривать как точку входа в рефлексию Scala. Он включает в себя и, таким образом, предоставляет интерфейс к следующим основным типам:Для получения
Universeдля использования с рефлексией Scala runtime, просто убедитесь, что вы используете или импортируетеscala.reflect.runtime.universe._Для получения
Universeдля использования в макросе Scala, используйте scala.reflect.macros.blackbox.Context#universe. или scala.reflect.macros.whitebox.Context#universe. Например:def printf(format: String, params: Any*): Unit = macro impl def impl(c: Context)(format: c.Expr[String], params: c.Expr[Any]*): c.Expr[Unit] = { import c.universe._ ... }Дополнительную информацию о
Universeсм. в Руководстве по рефлексии: Универсумы