Class PlatformMemberCalls
java.lang.Object
com.github._1c_syntax.bsl.languageserver.diagnostics.platform.PlatformMemberCalls
Резолв обращений к платформенному API в модуле — общая база для диагностик
устаревания (
DeprecatedMethodCall) и недоступности-по-версии
(UnavailableMemberCall). Собирает два вида мест в коде: обращения к
членам (вызов метода, обращение к свойству, вызов глобальной функции) и
конструирование типов (Новый Тип(…)). Версионная применимость
(устаревание/недоступность) вынесена в
PlatformMemberVersions.
Глобальные функции резолвятся напрямую (без инференса), поэтому собираются
без pre-filter'а. Члены типов (метод/свойство) предварительно отсеиваются по
имени через TypeService.isVersionedMemberName(String) — это лишь
дешёвый фильтр, после которого TypeService.membersAt(DocumentContext, Position) выполняет
точный резолв члена на конкретном типе-владельце (иначе сработал бы
однофамилец с другого типа).
Форма Новый("ИмяТипа", …) не разбирается: имя типа там — значение
выражения, вычисляемое в рантайме.
-
Nested Class Summary
Nested ClassesModifier and TypeClassDescriptionstatic final recordМеста обращения к платформенному API в одном модуле.static final recordКонструируемый тип в одном выраженииНовый Тип(…). -
Method Summary
Modifier and TypeMethodDescriptioncollect(DocumentContext documentContext, TypeService typeService) Собирает все места обращения к платформенному API модуля за один обход AST (раньше на каждый вид обращения был свойfindAllRuleNodes— то есть отдельный полный обход дерева).static booleanhasDeletedPrefix(@Nullable String name) Имя следует 1С-конвенции «устарело» — начинается с одного из префиксовDELETED_PREFIXES(без учёта регистра, с хотя бы одним символом после префикса).
-
Method Details
-
collect
public static PlatformMemberCalls.CallSites collect(DocumentContext documentContext, TypeService typeService) Собирает все места обращения к платформенному API модуля за один обход AST (раньше на каждый вид обращения был свойfindAllRuleNodes— то есть отдельный полный обход дерева). Нерезолвленные имена пропускаются. -
hasDeletedPrefix
Имя следует 1С-конвенции «устарело» — начинается с одного из префиксовDELETED_PREFIXES(без учёта регистра, с хотя бы одним символом после префикса). Используется в паре сMemberKind.PROPERTY, чтобы не захватывать одноимённые action-методы вродеУдалитьФайл.
-