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