Class PlatformMemberPropertyAccessSemanticTokensSupplier

java.lang.Object
com.github._1c_syntax.bsl.languageserver.semantictokens.AbstractPlatformMemberSemanticTokensSupplier<BSLParser.AccessPropertyContext>
com.github._1c_syntax.bsl.languageserver.semantictokens.PlatformMemberPropertyAccessSemanticTokensSupplier
All Implemented Interfaces:
SemanticTokensSupplier

@Component public class PlatformMemberPropertyAccessSemanticTokensSupplier extends AbstractPlatformMemberSemanticTokensSupplier<BSLParser.AccessPropertyContext>
Сапплаер семантических токенов для обращения к свойствам платформенных типов через accessProperty (т.е. обращений вида receiver.property без скобок, где receiver — типизированное выражение, чей тип резолвится через ExpressionTypeInferencer).

Свойство резолвится через TypeService.memberAt(DocumentContext, Position). Имя свойства получает SemanticTokenTypes.Property + SemanticTokenModifiers.DefaultLibrary.

Симметричен PlatformMemberMethodCallSemanticTokensSupplier (вызовы методов через accessCall) — общий каркас в AbstractPlatformMemberSemanticTokensSupplier.

Цепочки, начинающиеся с глобального synthetic-имени (Справочники.Контрагенты, Перечисления.Пол.Мужской, КодировкаТекста.UTF8), целиком красит GlobalScopeSemanticTokensSupplier (метаобъекты → Class, значения перечислений → EnumMember). Такие цепочки пропускаются по базовому идентификатору — это ровно домен GlobalScope, и только там возникал конфликт Property vs Class/EnumMember. Обращения к свойствам локально-типизированных переменных (Объект.Ссылка, Строка.Родитель) GlobalScope не трогает — их подсвечиваем мы.