Class ModuleReference
java.lang.Object
com.github._1c_syntax.bsl.languageserver.utils.ModuleReference
Утилитный класс для работы со ссылками на общие модули.
Предоставляет методы для анализа конструкций получения ссылки на общий модуль через ОбщегоНазначения.ОбщийМодуль("ИмяМодуля"), ОбщегоНазначенияКлиент.ОбщийМодуль("ИмяМодуля") и других вариантов.
-
Nested Class Summary
Nested ClassesModifier and TypeClassDescriptionstatic final recordОписание вызова метода у общего модуля, полученного через getter (например,ОбщегоНазначения.ОбщийМодуль("Имя").Метод(...)илиОбщийМодуль("Имя").Метод(...)).static final recordПредварительно разобранные паттерны доступа к общим модулям. -
Method Summary
Modifier and TypeMethodDescriptionextractCommonModuleName(BSLParser.ExpressionContext expression, ModuleReference.ParsedAccessors parsedAccessors) Извлечь имя общего модуля из expression.extractMethodCallOnGetterModule(@Nullable TerminalNode baseIdentifier, @Nullable BSLParser.GlobalMethodCallContext baseGlobalCall, List<? extends BSLParser.ModifierContext> modifiers, @Nullable BSLParser.AccessCallContext trailingCall, ModuleReference.ParsedAccessors parsedAccessors) Если в цепочке вызовов метод вызывается непосредственно у результата getter-а общего модуля (<Аксессор>.ОбщийМодуль("Имя").Метод(...)илиОбщийМодуль("Имя").Метод(...)), возвращает имя общего модуля и токен метода.static booleanisCommonModuleExpression(BSLParser.ExpressionContext expression, ModuleReference.ParsedAccessors parsedAccessors) Проверить, является ли expression вызовом получения ссылки на общий модуль.parseAccessors(List<String> commonModuleAccessors) Разбирает список паттернов доступа к общим модулям один раз.
-
Method Details
-
parseAccessors
Разбирает список паттернов доступа к общим модулям один раз.Вызывается один раз при инициализации и результат кэшируется.
- 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- базовый идентификатор-аксессор (напримерОбщегоНазначения), может быть nullbaseGlobalCall- базовый локальный вызов getter-а (напримерОбщийМодуль("Имя")), может быть nullmodifiers- модификаторы цепочки после базы (через точку / индекс)trailingCall- завершающий вызов через точку (для callStatement), может быть nullparsedAccessors- предварительно разобранные паттерны- Returns:
- имя модуля и токен вызванного у него метода, если цепочка распознана
-