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