Skip to content

Commit

Permalink
Исправление поиска ссылок на модулях с именем Module.bsl, но не общих…
Browse files Browse the repository at this point in the history
… модулях.
  • Loading branch information
nixel2007 committed Apr 21, 2021
1 parent 9e5b7d8 commit afdfa23
Show file tree
Hide file tree
Showing 3 changed files with 28 additions and 11 deletions.
Original file line number Diff line number Diff line change
Expand Up @@ -42,7 +42,6 @@
import org.springframework.stereotype.Component;

import java.net.URI;
import java.util.Arrays;
import java.util.Collection;
import java.util.Collections;
import java.util.HashMap;
Expand Down Expand Up @@ -193,7 +192,7 @@ private Optional<Reference> buildReference(

private Optional<SourceDefinedSymbol> getSourceDefinedSymbol(MultiKey<String> multikey) {
String mdoRef = multikey.getKey(0);
ModuleType moduleType = getModuleType(multikey.getKey(1));
ModuleType moduleType = ModuleType.valueOf(multikey.getKey(1));
String symbolName = multikey.getKey(2);

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

private static MultiKey<String> getKey(String mdoRef, ModuleType moduleType) {
return new MultiKey<>(mdoRef, moduleType.getFileName());
return new MultiKey<>(mdoRef, moduleType.toString());
}

private static MultiKey<String> getRangesKey(String mdoRef, ModuleType moduleType, String symbolName) {
return new MultiKey<>(mdoRef, moduleType.getFileName(), symbolName);
}

private static ModuleType getModuleType(String filename) {
return Arrays.stream(ModuleType.values())
.filter(type -> type.getFileName().equals(filename))
.findFirst()
.orElseThrow();
return new MultiKey<>(mdoRef, moduleType.toString(), symbolName);
}

private static boolean isReferenceAccessible(Reference reference) {
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -76,6 +76,26 @@ void getReferencesToLocalMethod() {
;
}

@Test
void getReferencesToLocalMethodFromFormModule() {
// given
var documentContext = serverContext.getDocument("Catalog.Справочник1.Form.ФормаСписка", ModuleType.FormModule).orElseThrow();
var method = documentContext.getSymbolTree().getMethodSymbol("ЛокальнаяПроцедура").orElseThrow();
var module = documentContext.getSymbolTree().getModule();

var uri = documentContext.getUri();
var location = new Location(uri.toString(), Ranges.create(4, 0, 18));

// when
var references = referenceIndex.getReferencesTo(method);

// then
assertThat(references)
.isNotEmpty()
.contains(Reference.of(module, method, location))
;
}

@Test
void getReferencesToCommonModuleMethod() {
// given
Expand Down
Original file line number Diff line number Diff line change
@@ -0,0 +1,5 @@
Процедура ЛокальнаяПроцедура()

КонецПроцедуры

ЛокальнаяПроцедура();

0 comments on commit afdfa23

Please sign in to comment.