Class ModuleReference

java.lang.Object
com.github._1c_syntax.bsl.languageserver.utils.ModuleReference

public final class ModuleReference extends Object
Утилитный класс для работы со ссылками на общие модули.

Предоставляет методы для анализа конструкций получения ссылки на общий модуль через ОбщегоНазначения.ОбщийМодуль("ИмяМодуля"), ОбщегоНазначенияКлиент.ОбщийМодуль("ИмяМодуля") и других вариантов.

  • Method Details

    • parseAccessors

      public static ModuleReference.ParsedAccessors parseAccessors(List<String> commonModuleAccessors)
      Разбирает список паттернов доступа к общим модулям один раз.

      Вызывается один раз при инициализации и результат кэшируется.

      Parameters:
      commonModuleAccessors - Список паттернов "Модуль.Метод" или "Метод" для локального вызова
      Returns:
      Предварительно разобранные паттерны
    • isCommonModuleExpression

      public static boolean isCommonModuleExpression(BSLParser.ExpressionContext expression, ModuleReference.ParsedAccessors parsedAccessors)
      Проверить, является ли expression вызовом получения ссылки на общий модуль. Использует предварительно разобранные паттерны.
      Parameters:
      expression - Контекст выражения
      parsedAccessors - Предварительно разобранные паттерны
      Returns:
      true, если это вызов метода получения общего модуля
    • extractCommonModuleName

      public static Optional<String> extractCommonModuleName(BSLParser.ExpressionContext expression, ModuleReference.ParsedAccessors parsedAccessors)
      Извлечь имя общего модуля из expression.
      Parameters:
      expression - Контекст выражения
      parsedAccessors - Предварительно разобранные паттерны
      Returns:
      Имя модуля, если удалось извлечь
    • extractMethodCallOnGetterModule

      public static Optional<ModuleReference.CommonModuleMethodOnGetter> extractMethodCallOnGetterModule(@Nullable TerminalNode baseIdentifier, @Nullable BSLParser.GlobalMethodCallContext baseGlobalCall, List<? extends BSLParser.ModifierContext> modifiers, @Nullable BSLParser.AccessCallContext trailingCall, ModuleReference.ParsedAccessors parsedAccessors)
      Если в цепочке вызовов метод вызывается непосредственно у результата getter-а общего модуля (<Аксессор>.ОбщийМодуль("Имя").Метод(...) или ОбщийМодуль("Имя").Метод(...)), возвращает имя общего модуля и токен метода.

      Используется для регистрации в индексе ссылок вызова метода у общего модуля, полученного «на лету», без промежуточной переменной.

      Parameters:
      baseIdentifier - базовый идентификатор-аксессор (например ОбщегоНазначения), может быть null
      baseGlobalCall - базовый локальный вызов getter-а (например ОбщийМодуль("Имя")), может быть null
      modifiers - модификаторы цепочки после базы (через точку / индекс)
      trailingCall - завершающий вызов через точку (для callStatement), может быть null
      parsedAccessors - предварительно разобранные паттерны
      Returns:
      имя модуля и токен вызванного у него метода, если цепочка распознана