Class NewExpressionReferenceFinder

java.lang.Object
com.github._1c_syntax.bsl.languageserver.references.NewExpressionReferenceFinder
All Implemented Interfaces:
ReferenceFinder

@Component @Order(150) public class NewExpressionReferenceFinder extends Object implements ReferenceFinder
Finder для имени класса в выражении Новый <ИмяКласса>(...).

Возвращает Reference с ConstructorCallSymbol, который несёт имя типа, ссылку на тип, фактическую арность и полный список конструкторов — этого достаточно для рендеринга hover/signature-help без обращения consumer'ов в TypeService.

  • Constructor Details

  • Method Details

    • findReference

      public Optional<Reference> findReference(URI uri, Position position)
      Description copied from interface: ReferenceFinder
      Поиск символа по позиции курсора.
      Specified by:
      findReference in interface ReferenceFinder
      Parameters:
      uri - URI документа, в котором необходимо осуществить поиск.
      position - позиция курсора.
      Returns:
      данные ссылки.
    • findReference

      public Optional<Reference> findReference(URI uri, TerminalNode terminal)
      Поиск символа по уже известному терминалу-идентификатору — без спуска по AST от корня к позиции. Реализация по умолчанию делегирует в ReferenceFinder.findReference(URI, Position) по стартовой позиции терминала (полное поведенческое соответствие позиционному варианту). Finder'ы, чья стоимость — именно этот спуск (findTerminalNodeContainsPosition и аналоги), переопределяют метод на подъём вверх от terminal.

      Терминал имени типа уже локализован — поднимается от него до объемлющего newExpression вместо спуска по AST от корня к позиции.

      Specified by:
      findReference in interface ReferenceFinder
      Parameters:
      uri - URI документа, в котором необходимо осуществить поиск.
      terminal - терминал-идентификатор под курсором.
      Returns:
      данные ссылки.