Skip to content

Commit 9f8d05b

Browse files
committed
wip
1 parent 069d091 commit 9f8d05b

File tree

3 files changed

+20
-9
lines changed

3 files changed

+20
-9
lines changed

src/main/java/com/github/_1c_syntax/bsl/languageserver/context/ServerContext.java

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -23,7 +23,7 @@
2323

2424
import com.github._1c_syntax.bsl.languageserver.utils.MdoRefBuilder;
2525
import com.github._1c_syntax.mdclasses.Configuration;
26-
import com.github._1c_syntax.mdclasses.mdo.AbstractMDObjectBase;
26+
import com.github._1c_syntax.mdclasses.mdo.AbstractMDObjectBSL;
2727
import com.github._1c_syntax.mdclasses.mdo.MDCommonModule;
2828
import com.github._1c_syntax.mdclasses.mdo.support.MDOModule;
2929
import com.github._1c_syntax.mdclasses.mdo.support.ModuleType;
@@ -166,9 +166,9 @@ public Configuration getConfiguration() {
166166
return configurationMetadata.getOrCompute();
167167
}
168168

169-
public Set<AbstractMDObjectBase> getGlobalModules() {
169+
public Set<AbstractMDObjectBSL> getGlobalModules() {
170170

171-
Set<AbstractMDObjectBase> globalModules = new HashSet<>();
171+
Set<AbstractMDObjectBSL> globalModules = new HashSet<>();
172172

173173
getConfiguration().getCommonModules().values().stream()
174174
.filter(MDCommonModule::isGlobal)

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

Lines changed: 15 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -28,6 +28,8 @@
2828
import com.github._1c_syntax.bsl.languageserver.context.symbol.SymbolTree;
2929
import com.github._1c_syntax.bsl.languageserver.utils.MdoRefBuilder;
3030
import com.github._1c_syntax.bsl.languageserver.utils.Ranges;
31+
import com.github._1c_syntax.mdclasses.mdo.AbstractMDObjectBSL;
32+
import com.github._1c_syntax.mdclasses.mdo.support.MDOModule;
3133
import com.github._1c_syntax.mdclasses.mdo.support.ModuleType;
3234
import lombok.RequiredArgsConstructor;
3335
import lombok.Synchronized;
@@ -50,6 +52,7 @@
5052
import java.util.Map;
5153
import java.util.Optional;
5254
import java.util.stream.Collectors;
55+
import java.util.stream.Stream;
5356

5457
@Component
5558
@RequiredArgsConstructor
@@ -204,11 +207,19 @@ private Optional<SourceDefinedSymbol> getSourceDefinedSymbol(MultiKey<String> mu
204207
ModuleType moduleType = ModuleType.valueOf(multikey.getKey(1));
205208
String symbolName = multikey.getKey(2);
206209

207-
return serverContext.getDocument(mdoRef, moduleType)
210+
Stream<DocumentContext> reffedModules = serverContext.getDocument(mdoRef, moduleType).stream();
211+
Stream<DocumentContext> globalModules = serverContext.getGlobalModules().stream()
212+
.map(AbstractMDObjectBSL::getModules)
213+
.flatMap(Collection::stream)
214+
.map(MDOModule::getUri)
215+
.map(serverContext::getDocument);
216+
217+
return Stream.concat(reffedModules, globalModules)
208218
.map(DocumentContext::getSymbolTree)
209-
// TODO: SymbolTree#getSymbol(Position)?
210-
// Для поиска не только методов, но и переменных, которые могут иметь одинаковые имена
211-
.flatMap(symbolTree -> symbolTree.getMethodSymbol(symbolName));
219+
.flatMap(symbolTree -> symbolTree.getMethodSymbol(symbolName).stream())
220+
.map(SourceDefinedSymbol.class::cast)
221+
.findAny();
222+
212223
}
213224

214225
private SourceDefinedSymbol getFromSymbol(URI uri, Position position) {

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

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -174,7 +174,7 @@ void testGetReferenceToGlobalMethodFromApplicationModule() {
174174
// then
175175
assertThat(reference.getFrom()).isEqualTo(methodSymbol);
176176
assertThat(reference.getSymbol()).isEqualTo(calledMethodSymbol);
177-
assertThat(reference.getSelectionRange()).isEqualTo(Ranges.create(5, 4, 41));
177+
assertThat(reference.getSelectionRange()).isEqualTo(Ranges.create(5, 4, 29));
178178
assertThat(reference.getUri()).isEqualTo(uri);
179179
}
180180

@@ -215,7 +215,7 @@ void testGetReferencesFromLocalMethodSymbol() {
215215

216216
// then
217217
assertThat(references)
218-
.hasSize(3)
218+
.hasSize(5)
219219
.contains(Reference.of(localMethodSymbol, localMethodSymbol, locationLocal))
220220
.contains(Reference.of(localMethodSymbol, commonModuleMethodSymbol, locationCommonModule))
221221
.contains(Reference.of(localMethodSymbol, managerModuleMethodSymbol, locationManagerModule))

0 commit comments

Comments
 (0)