Class PlatformMemberMethodCallSemanticTokensSupplier
java.lang.Object
com.github._1c_syntax.bsl.languageserver.semantictokens.AbstractPlatformMemberSemanticTokensSupplier<BSLParser.AccessCallContext>
com.github._1c_syntax.bsl.languageserver.semantictokens.PlatformMemberMethodCallSemanticTokensSupplier
- All Implemented Interfaces:
SemanticTokensSupplier
@Component
public class PlatformMemberMethodCallSemanticTokensSupplier
extends AbstractPlatformMemberSemanticTokensSupplier<BSLParser.AccessCallContext>
Сапплаер семантических токенов для вызовов методов платформенных типов через
accessCall (т.е. вызовов вида
receiver.method(...), где receiver
— типизированное выражение, чей тип резолвится через
ExpressionTypeInferencer).
Метод резолвится через TypeService.memberAt(DocumentContext, Position).
Если найден member с MemberKind.METHOD — имя метода получает
SemanticTokenTypes.Method + SemanticTokenModifiers.DefaultLibrary,
а для async-методов платформы (флаг MemberDescriptor.async()) добавляется
ещё и SemanticTokenModifiers.Async.
Симметричен PlatformMemberPropertyAccessSemanticTokensSupplier (обращения к
свойствам через accessProperty) — общий каркас в
AbstractPlatformMemberSemanticTokensSupplier.
Source-defined вызовы (методы общих модулей, локальные методы, OScript-library)
подсвечиваются через MethodCallSemanticTokensSupplier по ReferenceIndex —
этот сапплаер их пропускает, чтобы не дублировать токены.
-
Field Summary
Fields inherited from class AbstractPlatformMemberSemanticTokensSupplier
DEFAULT_LIBRARY_MODIFIERS, helper, typeService -
Constructor Summary
ConstructorsConstructorDescriptionPlatformMemberMethodCallSemanticTokensSupplier(TypeService typeService, ReferenceIndex referenceIndex, SemanticTokensHelper helper) -
Method Summary
Modifier and TypeMethodDescriptionprotected voidemit(List<SemanticTokenEntry> entries, DocumentContext documentContext, Range range) Резолвит член в позиции и при успехе добавляет токен вentries.Диапазон имени члена в узле; empty, если имени нет.protected intИндекс rule-узла AST для обхода (напримерBSLParser.RULE_accessProperty).protected BiPredicate<BSLParser.AccessCallContext, Range> skipFilter(DocumentContext documentContext) Предикат «пропустить узел» — позиции, которые уже красит другой сапплаер.Methods inherited from class AbstractPlatformMemberSemanticTokensSupplier
getSemanticTokens, getSemanticTokens
-
Constructor Details
-
PlatformMemberMethodCallSemanticTokensSupplier
public PlatformMemberMethodCallSemanticTokensSupplier(TypeService typeService, ReferenceIndex referenceIndex, SemanticTokensHelper helper)
-
-
Method Details
-
ruleIndex
protected int ruleIndex()Description copied from class:AbstractPlatformMemberSemanticTokensSupplierИндекс rule-узла AST для обхода (напримерBSLParser.RULE_accessProperty).- Specified by:
ruleIndexin classAbstractPlatformMemberSemanticTokensSupplier<BSLParser.AccessCallContext>
-
nameRange
Description copied from class:AbstractPlatformMemberSemanticTokensSupplierДиапазон имени члена в узле; empty, если имени нет.- Specified by:
nameRangein classAbstractPlatformMemberSemanticTokensSupplier<BSLParser.AccessCallContext>
-
skipFilter
protected BiPredicate<BSLParser.AccessCallContext, Range> skipFilter(DocumentContext documentContext) Description copied from class:AbstractPlatformMemberSemanticTokensSupplierПредикат «пропустить узел» — позиции, которые уже красит другой сапплаер. Считается один раз на документ (можно предвычислить тяжёлое состояние).- Specified by:
skipFilterin classAbstractPlatformMemberSemanticTokensSupplier<BSLParser.AccessCallContext>
-
emit
Description copied from class:AbstractPlatformMemberSemanticTokensSupplierРезолвит член в позиции и при успехе добавляет токен вentries.- Specified by:
emitin classAbstractPlatformMemberSemanticTokensSupplier<BSLParser.AccessCallContext>
-