Трейт scala.reflect.api.Position
Трейт Position extends Attachments
Типы-члены
абстрактный тип 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
def ->[B](y: B): (Position, B)
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
def ensuring(cond: (Position) => Boolean): Position
def ensuring(cond: Boolean, msg: => Any): Position
def ensuring(cond: Boolean): Position
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
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
ЭКСПЕРИМЕНТАЛЬНО
Позиция отслеживает происхождение символов и узлов дерева. Они обычно используются при отображении предупреждений и ошибок, чтобы указать неверную точку в программе.
Каждая неполая позиция ссылается на 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, ознакомьтесь с Руководством по рефлексии: Аннотации, имена, области видимости и многое другое