Class ReferenceIndex
Управляет индексацией и поиском ссылок на символы (методы, переменные) во всех документах workspace.
-
Constructor Summary
ConstructorsConstructorDescriptionReferenceIndex(ServerContextProvider serverContextProvider, com.github._1c_syntax.utils.StringInterner stringInterner, LocationRepository locationRepository, SymbolOccurrenceRepository symbolOccurrenceRepository) -
Method Summary
Modifier and TypeMethodDescriptionvoidclearReferences(URI uri) Очистить ссылки из/на текущий документ.getReference(URI uri, Position position) Поиск символа по позиции курсора.getReferencesFrom(SourceDefinedSymbol symbol) Поиск ссылок на символы в символе.getReferencesFrom(URI uri) Поиск ссылок на символы в документе.getReferencesFrom(URI uri, SymbolKind kind) Поиск ссылок на символы в документе.getReferencesTo(SourceDefinedSymbol symbol) Получить ссылки на символ.protected SymbolOccurrencemethodCallOccurrence(URI uri, String mdoRef, ModuleType moduleType, String symbolName, Range range) Построить вхождение «вызов метода» без записи в индекс.protected SymbolOccurrencemoduleReferenceOccurrence(URI uri, String mdoRef, ModuleType moduleType, Range range) Построить вхождение «ссылка на модуль» без записи в индекс.voidreplaceReferences(URI uri, Iterable<SymbolOccurrence> newOccurrences) Атомарно заменить все обращения к символам, расположенные в документе, на новый набор.protected SymbolOccurrencevariableOccurrence(URI uri, String mdoRef, ModuleType moduleType, String methodName, String variableName, Range range, OccurrenceType occurrenceType) Построить вхождение «обращение к переменной» без записи в индекс.
-
Constructor Details
-
ReferenceIndex
@ConstructorProperties({"serverContextProvider","stringInterner","locationRepository","symbolOccurrenceRepository"}) public ReferenceIndex(ServerContextProvider serverContextProvider, com.github._1c_syntax.utils.StringInterner stringInterner, LocationRepository locationRepository, SymbolOccurrenceRepository symbolOccurrenceRepository)
-
-
Method Details
-
getReferencesTo
Получить ссылки на символ.- Parameters:
symbol- Символ, для которого необходимо осуществить поиск ссылок.- Returns:
- Список ссылок на символ.
-
getReference
-
getReferencesFrom
-
getReferencesFrom
Поиск ссылок на символы в документе.- Parameters:
uri- URI документа, в котором нужно найти ссылки на другие символы.- Returns:
- Список ссылок на символы.
-
getReferencesFrom
Поиск ссылок на символы в символе.- Parameters:
symbol- Символ, в котором нужно найти ссылки на другие символы.- Returns:
- Список ссылок на символы.
-
clearReferences
Очистить ссылки из/на текущий документ.- Parameters:
uri- URI документа.
-
replaceReferences
Атомарно заменить все обращения к символам, расположенные в документе, на новый набор.В отличие от пары
clearReferences + addXxxне оставляет окна, в котором индекс документа пуст: сначала добавляются недостающие вхождения, затем удаляются устаревшие (разность старого и нового наборов). Конкурентные читатели в любой момент видят как минимум пересечение старого и нового наборов — «пропажа» ссылок на существующие символы (и, как следствие, ложные срабатывания диагностик неиспользуемых переменных/методов) исключена.- Parameters:
uri- URI документа, чьи вхождения заменяются.newOccurrences- Новый набор вхождений (дубликаты допускаются: повторная запись вхождения — идемпотентный no-op).
-
methodCallOccurrence
protected SymbolOccurrence methodCallOccurrence(URI uri, String mdoRef, ModuleType moduleType, String symbolName, Range range) Построить вхождение «вызов метода» без записи в индекс.- Parameters:
uri- URI документа, откуда произошел вызов.mdoRef- Ссылка на объект-метаданных, к которому происходит обращение (например, CommonModule.ОбщийМодуль1).moduleType- Тип модуля, к которому происходит обращение (например,ModuleType.CommonModule).symbolName- Имя символа, к которому происходит обращение.range- Диапазон, в котором происходит обращение к символу.- Returns:
- построенное вхождение.
-
moduleReferenceOccurrence
protected SymbolOccurrence moduleReferenceOccurrence(URI uri, String mdoRef, ModuleType moduleType, Range range) Построить вхождение «ссылка на модуль» без записи в индекс.Имя символа вычисляется детерминированно из
mdoRefиmoduleType(ModuleSymbol.nameOf(String, ModuleType)) и совпадает сModuleSymbol.getName(), поэтому запись и поиск (getReferencesTo(SourceDefinedSymbol)) симметричны без какой-либо спецобработки.- Parameters:
uri- URI документа, откуда произошло обращение к модулю.mdoRef- Ссылка на объект-метаданных модуля (например, CommonModule.ОбщийМодуль1).moduleType- Тип модуля (например,ModuleType.CommonModule).range- Диапазон, в котором происходит обращение к модулю.- Returns:
- построенное вхождение.
-
variableOccurrence
protected SymbolOccurrence variableOccurrence(URI uri, String mdoRef, ModuleType moduleType, String methodName, String variableName, Range range, OccurrenceType occurrenceType) Построить вхождение «обращение к переменной» без записи в индекс. Вид вхождения (OccurrenceType) задаётся явно.- Parameters:
uri- URI документа, откуда произошел вызов.mdoRef- Ссылка на объект-метаданных, к которому происходит обращение (например, CommonModule.ОбщийМодуль1).moduleType- Тип модуля, к которому происходит обращение (например,ModuleType.CommonModule).methodName- Имя метода, к которому относится переменная. Пустой, если переменная относится к модулю.variableName- Имя переменной, к которой происходит обращение.range- Диапазон, в котором происходит обращение к символу.occurrenceType- Вид обращения к символу.- Returns:
- построенное вхождение.
-