@@ -75,7 +75,7 @@ public class SymbolTree {
75
75
76
76
// TODO: value = AccessLevel.PRIVATE после окончания тестирования производительности
77
77
@ Getter (lazy = true )
78
- Map <String , Map <SourceDefinedSymbol , VariableSymbol >> variablesByName = createVariablesByName ();
78
+ Map <SourceDefinedSymbol , Map <String , VariableSymbol >> variablesByName = createVariablesByName ();
79
79
80
80
/**
81
81
* @return Список символов верхнего уровня за исключением символа модуля документа.
@@ -194,7 +194,7 @@ public Optional<VariableSymbol> getVariableSymbol(BSLParserRuleContext ctx) {
194
194
*/
195
195
public Optional <VariableSymbol > getVariableSymbol (String variableName , SourceDefinedSymbol scopeSymbol ) {
196
196
return Optional .ofNullable (
197
- getVariablesByName ().getOrDefault (variableName , Collections .emptyMap ()).get (scopeSymbol )
197
+ getVariablesByName ().getOrDefault (scopeSymbol , Collections .emptyMap ()).get (variableName )
198
198
);
199
199
}
200
200
@@ -213,13 +213,17 @@ private List<VariableSymbol> createVariables() {
213
213
return getChildrenFlat (VariableSymbol .class );
214
214
}
215
215
216
- private Map <String , Map <SourceDefinedSymbol , VariableSymbol >> createVariablesByName () {
216
+ private Map <SourceDefinedSymbol , Map <String , VariableSymbol >> createVariablesByName () {
217
217
return getVariables ().stream ()
218
218
.collect (
219
219
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
+ )
223
227
)
224
228
);
225
229
}
0 commit comments