Skip to content

Commit bdde244

Browse files
committed
Развернул кэш переменных в символьном дереве
1 parent 33b1365 commit bdde244

File tree

1 file changed

+10
-6
lines changed
  • src/main/java/com/github/_1c_syntax/bsl/languageserver/context/symbol

1 file changed

+10
-6
lines changed

src/main/java/com/github/_1c_syntax/bsl/languageserver/context/symbol/SymbolTree.java

Lines changed: 10 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -75,7 +75,7 @@ public class SymbolTree {
7575

7676
// TODO: value = AccessLevel.PRIVATE после окончания тестирования производительности
7777
@Getter(lazy = true)
78-
Map<String, Map<SourceDefinedSymbol, VariableSymbol>> variablesByName = createVariablesByName();
78+
Map<SourceDefinedSymbol, Map<String, VariableSymbol>> variablesByName = createVariablesByName();
7979

8080
/**
8181
* @return Список символов верхнего уровня за исключением символа модуля документа.
@@ -194,7 +194,7 @@ public Optional<VariableSymbol> getVariableSymbol(BSLParserRuleContext ctx) {
194194
*/
195195
public Optional<VariableSymbol> getVariableSymbol(String variableName, SourceDefinedSymbol scopeSymbol) {
196196
return Optional.ofNullable(
197-
getVariablesByName().getOrDefault(variableName, Collections.emptyMap()).get(scopeSymbol)
197+
getVariablesByName().getOrDefault(scopeSymbol, Collections.emptyMap()).get(variableName)
198198
);
199199
}
200200

@@ -213,13 +213,17 @@ private List<VariableSymbol> createVariables() {
213213
return getChildrenFlat(VariableSymbol.class);
214214
}
215215

216-
private Map<String, Map<SourceDefinedSymbol, VariableSymbol>> createVariablesByName() {
216+
private Map<SourceDefinedSymbol, Map<String, VariableSymbol>> createVariablesByName() {
217217
return getVariables().stream()
218218
.collect(
219219
groupingBy(
220-
VariableSymbol::getName,
221-
() -> new TreeMap<>(String.CASE_INSENSITIVE_ORDER),
222-
toMap(VariableSymbol::getScope, Function.identity())
220+
VariableSymbol::getScope,
221+
toMap(
222+
VariableSymbol::getName,
223+
Function.identity(),
224+
(existing, replacement) -> existing,
225+
() -> new TreeMap<>(String.CASE_INSENSITIVE_ORDER)
226+
)
223227
)
224228
);
225229
}

0 commit comments

Comments
 (0)