Skip to content

Commit afdfa23

Browse files
committed
Исправление поиска ссылок на модулях с именем Module.bsl, но не общих модулях.
1 parent 9e5b7d8 commit afdfa23

File tree

3 files changed

+28
-11
lines changed
  • src
    • main/java/com/github/_1c_syntax/bsl/languageserver/references
    • test
      • java/com/github/_1c_syntax/bsl/languageserver/references
      • resources/metadata/Catalogs/Справочник1/Forms/ФормаСписка/Ext/Form

3 files changed

+28
-11
lines changed

src/main/java/com/github/_1c_syntax/bsl/languageserver/references/ReferenceIndex.java

Lines changed: 3 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -42,7 +42,6 @@
4242
import org.springframework.stereotype.Component;
4343

4444
import java.net.URI;
45-
import java.util.Arrays;
4645
import java.util.Collection;
4746
import java.util.Collections;
4847
import java.util.HashMap;
@@ -193,7 +192,7 @@ private Optional<Reference> buildReference(
193192

194193
private Optional<SourceDefinedSymbol> getSourceDefinedSymbol(MultiKey<String> multikey) {
195194
String mdoRef = multikey.getKey(0);
196-
ModuleType moduleType = getModuleType(multikey.getKey(1));
195+
ModuleType moduleType = ModuleType.valueOf(multikey.getKey(1));
197196
String symbolName = multikey.getKey(2);
198197

199198
return serverContext.getDocument(mdoRef, moduleType)
@@ -218,18 +217,11 @@ private SourceDefinedSymbol getFromSymbol(URI uri, Position position) {
218217
}
219218

220219
private static MultiKey<String> getKey(String mdoRef, ModuleType moduleType) {
221-
return new MultiKey<>(mdoRef, moduleType.getFileName());
220+
return new MultiKey<>(mdoRef, moduleType.toString());
222221
}
223222

224223
private static MultiKey<String> getRangesKey(String mdoRef, ModuleType moduleType, String symbolName) {
225-
return new MultiKey<>(mdoRef, moduleType.getFileName(), symbolName);
226-
}
227-
228-
private static ModuleType getModuleType(String filename) {
229-
return Arrays.stream(ModuleType.values())
230-
.filter(type -> type.getFileName().equals(filename))
231-
.findFirst()
232-
.orElseThrow();
224+
return new MultiKey<>(mdoRef, moduleType.toString(), symbolName);
233225
}
234226

235227
private static boolean isReferenceAccessible(Reference reference) {

src/test/java/com/github/_1c_syntax/bsl/languageserver/references/ReferenceIndexTest.java

Lines changed: 20 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -76,6 +76,26 @@ void getReferencesToLocalMethod() {
7676
;
7777
}
7878

79+
@Test
80+
void getReferencesToLocalMethodFromFormModule() {
81+
// given
82+
var documentContext = serverContext.getDocument("Catalog.Справочник1.Form.ФормаСписка", ModuleType.FormModule).orElseThrow();
83+
var method = documentContext.getSymbolTree().getMethodSymbol("ЛокальнаяПроцедура").orElseThrow();
84+
var module = documentContext.getSymbolTree().getModule();
85+
86+
var uri = documentContext.getUri();
87+
var location = new Location(uri.toString(), Ranges.create(4, 0, 18));
88+
89+
// when
90+
var references = referenceIndex.getReferencesTo(method);
91+
92+
// then
93+
assertThat(references)
94+
.isNotEmpty()
95+
.contains(Reference.of(module, method, location))
96+
;
97+
}
98+
7999
@Test
80100
void getReferencesToCommonModuleMethod() {
81101
// given
Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,5 @@
1+
Процедура ЛокальнаяПроцедура()
2+
3+
КонецПроцедуры
4+
5+
ЛокальнаяПроцедура();

0 commit comments

Comments
 (0)