Class PlatformMemberCalls

java.lang.Object
com.github._1c_syntax.bsl.languageserver.diagnostics.platform.PlatformMemberCalls

public final class PlatformMemberCalls extends Object
Резолв обращений к платформенному API в модуле — общая база для диагностик устаревания (DeprecatedMethodCall) и недоступности-по-версии (UnavailableMemberCall). Собирает два вида мест в коде: обращения к членам (вызов метода, обращение к свойству, вызов глобальной функции) и конструирование типов (Новый Тип(…)). Версионная применимость (устаревание/недоступность) вынесена в PlatformMemberVersions.

Глобальные функции резолвятся напрямую (без инференса), поэтому собираются без pre-filter'а. Члены типов (метод/свойство) предварительно отсеиваются по имени через TypeService.isVersionedMemberName(String) — это лишь дешёвый фильтр, после которого TypeService.membersAt(DocumentContext, Position) выполняет точный резолв члена на конкретном типе-владельце (иначе сработал бы однофамилец с другого типа).

Форма Новый("ИмяТипа", …) не разбирается: имя типа там — значение выражения, вычисляемое в рантайме.

  • Nested Class Summary

    Nested Classes
    Modifier and Type
    Class
    Description
    static final record 
    Места обращения к платформенному API в одном модуле.
    static final record 
    Конструируемый тип в одном выражении Новый Тип(…).
  • Method Summary

    Modifier and Type
    Method
    Description
    collect(DocumentContext documentContext, TypeService typeService)
    Собирает все места обращения к платформенному API модуля за один обход AST (раньше на каждый вид обращения был свой findAllRuleNodes — то есть отдельный полный обход дерева).
    static boolean
    Имя следует 1С-конвенции «устарело» — начинается с одного из префиксов DELETED_PREFIXES (без учёта регистра, с хотя бы одним символом после префикса).

    Methods inherited from class Object

    clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
  • Method Details

    • collect

      public static PlatformMemberCalls.CallSites collect(DocumentContext documentContext, TypeService typeService)
      Собирает все места обращения к платформенному API модуля за один обход AST (раньше на каждый вид обращения был свой findAllRuleNodes — то есть отдельный полный обход дерева). Нерезолвленные имена пропускаются.
    • hasDeletedPrefix

      public static boolean hasDeletedPrefix(@Nullable String name)
      Имя следует 1С-конвенции «устарело» — начинается с одного из префиксов DELETED_PREFIXES (без учёта регистра, с хотя бы одним символом после префикса). Используется в паре с MemberKind.PROPERTY, чтобы не захватывать одноимённые action-методы вроде УдалитьФайл.