Class AbstractMethodSymbol

java.lang.Object
com.github._1c_syntax.bsl.languageserver.context.symbol.AbstractMethodSymbol
All Implemented Interfaces:
Describable, Exportable, MethodSymbol, SourceDefinedSymbol, Symbol
Direct Known Subclasses:
ConstructorSymbol, RegularMethodSymbol

public abstract class AbstractMethodSymbol extends Object implements MethodSymbol
Общая структура полей для callable-символов уровня модуля и реализация контракта MethodSymbol. Конкретные подтипы добавляют только SymbolKind и вызов соответствующего SymbolTreeVisitor-метода в Symbol.accept(SymbolTreeVisitor).
  • Constructor Details

  • Method Details

    • getRange

      public Range getRange()
      Specified by:
      getRange in interface SourceDefinedSymbol
      Returns:
      Диапазон, который захватывает символ.
    • getSubNameRange

      public Range getSubNameRange()
      Description copied from interface: MethodSymbol
      Диапазон имени метода/конструктора (без ключевых слов и параметров) — используется как selection-range и для матчинга позиции к символу.
      Specified by:
      getSubNameRange in interface MethodSymbol
    • getSelectionRange

      public Range getSelectionRange()
      Specified by:
      getSelectionRange in interface SourceDefinedSymbol
      Returns:
      Место интереса символа. Например, диапазон, где указано имя символа (в противовес полной строки декларации символа).
    • getRegion

      public Optional<RegionSymbol> getRegion()
      Description copied from interface: MethodSymbol
      Регион/область, в которой объявлен метод/конструктор, если он находится непосредственно внутри RegionSymbol.
      Specified by:
      getRegion in interface MethodSymbol
    • getName

      public String getName()
      Имя метода.
      Specified by:
      getName in interface MethodSymbol
      Specified by:
      getName in interface Symbol
      Returns:
      Имя символа.
    • getOwner

      public DocumentContext getOwner()
      DocumentContext, в котором объявлен метод.
      Specified by:
      getOwner in interface SourceDefinedSymbol
      Returns:
      Документ, в котором объявлен данный символ.
    • getParent

      public Optional<SourceDefinedSymbol> getParent()
      Родительский символ — область (#Область), модуль или вложенная область. Выставляется снаружи (после построения дерева), поэтому @Setter.
      Specified by:
      getParent in interface SourceDefinedSymbol
      Returns:
      Символ, внутри которого располагается данный символ.
    • getChildren

      public List<SourceDefinedSymbol> getChildren()
      Вложенные символы (локальные переменные, области внутри метода и т.п.).
      Specified by:
      getChildren in interface SourceDefinedSymbol
      Returns:
      Список "детей" символа - символов, которые располагаются внутри данного символа.
    • isFunction

      public boolean isFunction()
      true для функции (с Возврат), false для процедуры.
      Specified by:
      isFunction in interface MethodSymbol
    • isExport

      public boolean isExport()
      Объявлен ли метод с ключевым словом Экспорт.
      Specified by:
      isExport in interface Exportable
      Specified by:
      isExport in interface MethodSymbol
      Returns:
      Сущность является экспортной.
    • getDescription

      public Optional<MethodDescription> getDescription()
      Распаренная BSL-doc-документация метода (комментарии перед сигнатурой).
      Specified by:
      getDescription in interface Describable
      Specified by:
      getDescription in interface MethodSymbol
      Returns:
      Описание символа в форме, поставляемой bsl-parser'ом (используется диагностиками, которые знают конкретные подтипы MethodDescription/VariableDescription и т.п.).
    • isDeprecated

      public boolean isDeprecated()
      Помечен ли метод как устаревший (через doc-комментарии).
      Specified by:
      isDeprecated in interface MethodSymbol
      Specified by:
      isDeprecated in interface Symbol
      Returns:
      Является ли символ "устаревшим".
    • isAsync

      public boolean isAsync()
      Объявлен ли метод с ключевым словом Асинх (Async).
      Specified by:
      isAsync in interface MethodSymbol
    • getParameters

      public List<ParameterDefinition> getParameters()
      Объявленные параметры метода в порядке объявления.
      Specified by:
      getParameters in interface MethodSymbol
    • getCompilerDirectiveKind

      public Optional<CompilerDirectiveKind> getCompilerDirectiveKind()
      Compiler-directive (&НаСервере, &НаКлиенте, …) если стоит перед методом. В OScript обычно отсутствует.
      Specified by:
      getCompilerDirectiveKind in interface MethodSymbol
    • getAnnotations

      public List<Annotation> getAnnotations()
      Аннотации метода: всё, что стоит со & перед сигнатурой и не является compiler-directive (в OScript — пользовательские аннотации вроде &Желудь).
      Specified by:
      getAnnotations in interface MethodSymbol
    • equals

      public boolean equals(Object o)
      Overrides:
      equals in class Object
    • canEqual

      protected boolean canEqual(Object other)
    • hashCode

      public int hashCode()
      Overrides:
      hashCode in class Object
    • toString

      public String toString()
      Overrides:
      toString in class Object
    • setParent

      public void setParent(Optional<SourceDefinedSymbol> parent)
      Родительский символ — область (#Область), модуль или вложенная область. Выставляется снаружи (после построения дерева), поэтому @Setter.
      Specified by:
      setParent in interface SourceDefinedSymbol
      Parameters:
      parent - Символ, внутри которого располагается данный символ.