Spec-Zone.ru › Scala 2.13 Reflection

Трейт scala.reflect.api.Position

Трейт Position extends Attachments

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

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

Каждая неполая позиция ссылается на SourceFile и три смещения символов в нем: start, end и point. Point — это позиция, где находится ^ при выводе сообщения об ошибке, обычно Name. Позиция диапазона может быть обозначена как прозрачная, что освобождает ее от соблюдения следующих инвариантов. Если у прозрачной позиции есть непрозрачные дочерние элементы, они считаются прямыми дочерними элементами родителя прозрачной позиции.

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

Инвариант 1: в фокусированной/смещенной позиции start == point == end Инвариант 2: в позиции диапазона start <= point < end Инвариант 3: смещенная позиция никогда не имеет дочернего элемента с позицией диапазона Инвариант 4: каждый дочерний элемент позиции диапазона родительской позиции диапазона содержится внутри родительской позиции Инвариант 5: непрозрачные дочерние элементы позиции диапазона перекрываются максимум в одной точке

Следующие тесты полезны для позиций:

pos.isDefined true, если позиция не является UndefinedPosition (они представляют собой NoPosition и FakePos) pos.isRange true, если позиция является диапазоном (непрозрачным или прозрачным), что подразумевает start < end pos.isOpaqueRange true, если позиция является непрозрачным диапазоном

Предоставляются следующие методы доступа — исключение будет выброшено, если будет попытка получить point/start/end для UndefinedPosition.

pos.source Файл исходного кода позиции или NoSourceFile, если недоступен pos.point Смещение точки pos.start (включительно) начальное смещение или точка смещенной позиции pos.end (исключительно) конечное смещение или точка смещенной позиции

Следующие методы преобразования часто используются:

pos.focus Преобразует позицию диапазона в смещенную позицию, сфокусированную на точке pos.makeTransparent Преобразует непрозрачный диапазон в прозрачный диапазон

Для получения дополнительной информации о Positions, ознакомьтесь с Руководством по рефлексии: Аннотации, имена, области видимости и многое другое

Источник
Position.scala
Линейные супертипы
Attachments, AnyRef, Any

Типы-члены

абстрактный тип Pos >: Null <: Position

Тип позиции этого атрибута

Определяющие классы
Position → Attachments

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

abstract def column: Int

abstract def end: Int

abstract def focus: Pos

Если это позиция диапазона, смещенная позиция ее точки. В противном случае сама позиция

abstract def isOpaqueRange: Boolean

abstract def isRange: Boolean

abstract def isTransparent: Boolean

abstract def line: Int

abstract def makeTransparent: Pos

abstract def point: Int

abstract def pos: Pos

Базовая позиция

Definition Classes
Attachments

abstract def source: SourceFile

Java-файл, соответствующий исходному файлу этой позиции.

Возвращаемый тип — scala.reflect.io.AbstractFile, который относится к экспериментальной части Scala reflection. Не следует использовать, если вы не знаете, что делаете. В последующих выпусках этот API будет доработан и представлен как часть scala.reflect.api.

abstract def start: Int

abstract def withEnd(off: Int): Pos

abstract def withPoint(off: Int): Pos

abstract def withPos(newPos: Pos): Attachments { type Pos = Position.this.Pos }

Создает копию этого вложения, заменив позицию на newPos

Definition Classes
Attachments

abstract def withStart(off: Int): Pos

abstract def endOrPoint: Int

Конец диапазона позиции или точка, если позиция не диапазон.

Annotations
@deprecated
Устаревший

(Начиная с версии 2.11.0) удален из публичного API

abstract def focusEnd: Pos

Если это позиция диапазона, смещенная позиция ее конца. В противном случае сама позиция

Annotations
@deprecated
Устаревший

(Начиная с версии 2.11.0) удален из публичного API

abstract def focusStart: Pos

Если это позиция диапазона, смещенная позиция ее начала. В противном случае сама позиция

Annotations
@deprecated
Устаревший

(Начиная с версии 2.11.0) удален из публичного API

abstract def includes(pos: Pos): Boolean

Включает ли эта позиция заданную позицию pos? Это верно, если this — позиция диапазона, и ее диапазон [start..end] такой же или охватывает диапазон заданной позиции, которая может быть или не быть позицией диапазона.

Annotations
@deprecated
Устаревший

(Начиная с версии 2.11.0) удален из публичного API

abstract def isDefined: Boolean

Это позиция не NoPosition? Если isDefined истинно, смещение и источник определены.

Annotations
@deprecated
Устаревший

(Начиная с версии 2.11.0) удален из публичного API

abstract def lineContent: String

Содержание строки, на которую ссылается эта позиция.

Annotations
@deprecated
Устаревший

(Начиная с версии 2.11.0) удален из публичного API

abstract def overlaps(pos: Pos): Boolean

Пересекается ли эта позиция с заданной позицией? Это верно, если обе позиции являются интервалами, и существует интервал ненулевой длины, общий для обеих позиций.

Annotations
@deprecated
Deprecated

(Since version 2.11.0) removed from the public API

abstract def pointOrElse(default: Int): Int

Точка (где стоит ^) позиции, или же default если не определена.

Annotations
@deprecated
Deprecated

(Since version 2.11.0) removed from the public API

abstract def precedes(pos: Pos): Boolean

Предшествует ли эта позиция заданной позиции? Это верно, если обе позиции определены и конечная точка этой позиции не больше начальной точки заданной позиции.

Annotations
@deprecated
Deprecated

(Since version 2.11.0) removed from the public API

abstract def properlyIncludes(pos: Pos): Boolean

Включает ли эта позиция заданную позицию полностью pos («полностью» означает, что их диапазоны не одинаковы)?

Annotations
@deprecated
Deprecated

(Since version 2.11.0) removed from the public API

abstract def properlyPrecedes(pos: Pos): Boolean

Предшествует ли эта позиция заданной позиции полностью pos («полностью» означает, что их диапазоны не имеют общей точки).

Annotations
@deprecated
Deprecated

(Since version 2.11.0) removed from the public API

abstract def sameRange(pos: Pos): Boolean

Охватывает ли эта позиция тот же диапазон, что и заданная позиция? Верно только если обе позиции являются диапазонами.

Annotations
@deprecated
Deprecated

(Since version 2.11.0) removed from the public API

abstract def show: String

Показать текстовое представление позиции.

Annotations
@deprecated
Deprecated

(Since version 2.11.0) используйте universe.show(position) вместо этого

abstract def startOrPoint: Int

Начало диапазона позиции или точка, если позиция не диапазон.

Annotations
@deprecated
Deprecated

(Since version 2.11.0) removed from the public API

abstract def toSingleLine: Pos

Преобразовать в позицию вокруг point , которая охватывает одну строку исходного кода.

Annotations
@deprecated
Deprecated

(Since version 2.11.0) removed from the public API

abstract def union(pos: Pos): Pos

Если это диапазон, то объединение с другим диапазоном, с точкой этой позиции. В противном случае, эта позиция.

Annotations
@deprecated
Deprecated

(Since version 2.11.0) removed from the public API

Конкретные члены значения

final def !=(arg0: Any): Boolean

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

final def ##(): Int

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

def +(other: String): String

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

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

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

final def ==(arg0: Any): Boolean

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

def all: Set[Any]

Базовая полезная нагрузка с гарантией, что ни у двух элементов нет одного и того же типа.

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

final def asInstanceOf[T0]: T0

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

def clone(): AnyRef

Атрибуты
protected[java.lang]
Определяющие классы
AnyRef
Аннотации
@throws(classOf[java.lang.CloneNotSupportedException]) @native()

def contains[T](implicit arg0: ClassTag[T]): Boolean

Проверить, содержит ли базовая полезная нагрузка экземпляр типа T.

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

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

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

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

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

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

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

def ensuring(cond: Boolean): Position

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

final def eq(arg0: AnyRef): Boolean

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

def equals(arg0: AnyRef): Boolean

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

def finalize(): Unit

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

def formatted(fmtstr: String): String

Implicit
Этот член добавлен благодаря неявной конвертации из Position в StringFormat[Position] выполненной методом StringFormat в scala.Predef.
Definition Classes
StringFormat
Annotations
@inline()

def get[T](implicit arg0: ClassTag[T]): Option[T]

Базовая нагрузка заданного типа класса T.

Definition Classes
Attachments

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

Definition Classes
AnyRef → Any
Annotations
@native()

def hashCode(): Int

Definition Classes
AnyRef → Any
Annotations
@native()

def isEmpty: Boolean

Definition Classes
Attachments

final def isInstanceOf[T0]: Boolean

Definition Classes
Any

final def ne(arg0: AnyRef): Boolean

Definition Classes
AnyRef

final def notify(): Unit

Definition Classes
AnyRef
Annotations
@native()

final def notifyAll(): Unit

Definition Classes
AnyRef
Annotations
@native()

def remove[T](implicit arg0: ClassTag[T]): Attachments { type Pos = Position.this.Pos }

Создаёт копию этого атрибута с удалённой нагрузкой заданного типа класса T.

Definition Classes
Attachments

final def synchronized[T0](arg0: => T0): T0

Definition Classes
AnyRef

def toString(): String

Definition Classes
AnyRef → Any

def update[T](attachment: T)(implicit arg0: ClassTag[T]): Attachments { type Pos = Position.this.Pos }

Создаёт копию этого атрибута с обновлённым/добавленным слотом нагрузки типа T с предоставленным значением. Заменяет существующую нагрузку того же типа, если она существует.

Definition Classes
Attachments

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

© 2002-2019 EPFL, with contributions from Lightbend.
Licensed under the Apache License, Version 2.0.
https://www.scala-lang.org/api/2.13.0/scala-reflect/scala/reflect/api/Position.html

Spec-Zone.ru

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