Class PlatformMemberReferenceFinder
java.lang.Object
com.github._1c_syntax.bsl.languageserver.references.PlatformMemberReferenceFinder
- All Implemented Interfaces:
ReferenceFinder
@Component
@Order(200)
public class PlatformMemberReferenceFinder
extends Object
implements ReferenceFinder
Finder для членов платформенных/конфигурационных типов и глобальных
функций/свойств, разрешаемых через
TypeService.memberAt(DocumentContext, Position).
Покрывает кейсы, у которых нет соответствующего
SourceDefinedSymbol
в дереве символов: цепочки accessor'ов (например, A.B.C.),
platform-методы (СтрЗаменить), члены коллекций и т.п.
Возвращает Reference с PlatformMemberSymbol —
специализированным symbol'ом, который несёт всю информацию для рендеринга
hover/completion/signature-help без обращения в другие сервисы из consumer'ов.
-
Constructor Summary
ConstructorsConstructorDescriptionPlatformMemberReferenceFinder(ServerContextProvider serverContextProvider, TypeService typeService) -
Method Summary
Modifier and TypeMethodDescriptionfindReference(URI uri, TerminalNode terminal) Поиск символа по уже известному терминалу-идентификатору — без спуска по AST от корня к позиции.findReference(URI uri, Position position) Поиск символа по позиции курсора.
-
Constructor Details
-
PlatformMemberReferenceFinder
@ConstructorProperties({"serverContextProvider","typeService"}) public PlatformMemberReferenceFinder(ServerContextProvider serverContextProvider, TypeService typeService)
-
-
Method Details
-
findReference
Description copied from interface:ReferenceFinderПоиск символа по позиции курсора.- Specified by:
findReferencein interfaceReferenceFinder- Parameters:
uri- URI документа, в котором необходимо осуществить поиск.position- позиция курсора.- Returns:
- данные ссылки.
-
findReference
Поиск символа по уже известному терминалу-идентификатору — без спуска по AST от корня к позиции. Реализация по умолчанию делегирует вReferenceFinder.findReference(URI, Position)по стартовой позиции терминала (полное поведенческое соответствие позиционному варианту). Finder'ы, чья стоимость — именно этот спуск (findTerminalNodeContainsPositionи аналоги), переопределяют метод на подъём вверх отterminal.Резолвит член по терминалу через
TypeService.memberAt(DocumentContext, TerminalNode)— без спуска по AST от корня к позиции.- Specified by:
findReferencein interfaceReferenceFinder- Parameters:
uri- URI документа, в котором необходимо осуществить поиск.terminal- терминал-идентификатор под курсором.- Returns:
- данные ссылки.
-