Skip to content

Commit 3e661c8

Browse files
committed
Simplify variables grabber
1 parent 8a4dcde commit 3e661c8

File tree

1 file changed

+12
-15
lines changed

1 file changed

+12
-15
lines changed

ownlang-parser/src/main/java/com/annimon/ownlang/parser/optimization/VariablesGrabber.java

Lines changed: 12 additions & 15 deletions
Original file line numberDiff line numberDiff line change
@@ -36,34 +36,33 @@ public Node visit(AssignmentExpression s, Map<String, VariableInfo> t) {
3636
}
3737

3838
final String variableName = ((VariableExpression) s.target).name;
39-
final VariableInfo var = variableInfo(t, variableName);
39+
final VariableInfo var = grabVariableInfo(t, variableName);
4040

4141
if (s.operation == null && isValue(s.expression)) {
4242
var.value = ((ValueExpression) s.expression).value;
4343
}
44-
t.put(variableName, var);
4544
return super.visit(s, t);
4645
}
4746

4847
@Override
4948
public Node visit(DestructuringAssignmentStatement s, Map<String, VariableInfo> t) {
5049
for (String variableName : s.variables) {
5150
if (variableName == null) continue;
52-
t.put(variableName, variableInfo(t, variableName));
51+
grabVariableInfo(t, variableName);
5352
}
5453
return super.visit(s, t);
5554
}
5655

5756
@Override
5857
public Node visit(ForeachArrayStatement s, Map<String, VariableInfo> t) {
59-
t.put(s.variable, variableInfo(t, s.variable));
58+
grabVariableInfo(t, s.variable);
6059
return super.visit(s, t);
6160
}
6261

6362
@Override
6463
public Node visit(ForeachMapStatement s, Map<String, VariableInfo> t) {
65-
t.put(s.key, variableInfo(t, s.key));
66-
t.put(s.value, variableInfo(t, s.value));
64+
grabVariableInfo(t, s.key);
65+
grabVariableInfo(t, s.value);
6766
return super.visit(s, t);
6867
}
6968

@@ -72,7 +71,7 @@ public Node visit(MatchExpression s, Map<String, VariableInfo> t) {
7271
for (MatchExpression.Pattern pattern : s.patterns) {
7372
if (pattern instanceof MatchExpression.VariablePattern varPattern) {
7473
final String variableName = varPattern.variable;
75-
t.put(variableName, variableInfo(t, variableName));
74+
grabVariableInfo(t, variableName);
7675
}
7776
}
7877
return super.visit(s, t);
@@ -82,13 +81,12 @@ public Node visit(MatchExpression s, Map<String, VariableInfo> t) {
8281
public Node visit(UnaryExpression s, Map<String, VariableInfo> t) {
8382
if (s.expr1 instanceof Accessible) {
8483
if (s.expr1 instanceof VariableExpression varExpr) {
85-
final String variableName = varExpr.name;
86-
t.put(variableName, variableInfo(t, variableName));
84+
grabVariableInfo(t, varExpr.name);
8785
}
8886
if (s.expr1 instanceof ContainerAccessExpression conExpr) {
8987
if (conExpr.rootIsVariable()) {
9088
final String variableName = ((VariableExpression) conExpr.root).name;
91-
t.put(variableName, variableInfo(t, variableName));
89+
grabVariableInfo(t, variableName);
9290
}
9391
}
9492
}
@@ -99,9 +97,8 @@ public Node visit(UnaryExpression s, Map<String, VariableInfo> t) {
9997
public Node visit(UseStatement s, Map<String, VariableInfo> t) {
10098
if (grabModuleConstants) {
10199
for (Map.Entry<String, Value> entry : s.loadConstants().entrySet()) {
102-
final VariableInfo var = variableInfo(t, entry.getKey());
100+
final VariableInfo var = grabVariableInfo(t, entry.getKey());
103101
var.value = entry.getValue();
104-
t.put(entry.getKey(), var);
105102
}
106103
}
107104
return super.visit(s, t);
@@ -111,27 +108,27 @@ public Node visit(UseStatement s, Map<String, VariableInfo> t) {
111108
protected boolean visit(Arguments in, Arguments out, Map<String, VariableInfo> t) {
112109
for (Argument argument : in) {
113110
final String variableName = argument.name();
114-
final VariableInfo var = variableInfo(t, variableName);
111+
grabVariableInfo(t, variableName);
115112
/* No need to add value - it is optional arguments
116113
final Expression expr = argument.getValueExpr();
117114
if (expr != null && isValue(expr)) {
118115
var.value = ((ValueExpression) expr).value;
119116
}*/
120-
t.put(variableName, var);
121117
}
122118
return super.visit(in, out, t);
123119
}
124120

125121

126122

127-
private VariableInfo variableInfo(Map<String, VariableInfo> t, final String variableName) {
123+
private VariableInfo grabVariableInfo(Map<String, VariableInfo> t, final String variableName) {
128124
final VariableInfo var;
129125
if (t.containsKey(variableName)) {
130126
var = t.get(variableName);
131127
var.modifications++;
132128
} else {
133129
var = new VariableInfo();
134130
var.modifications = 1;
131+
t.put(variableName, var);
135132
}
136133
return var;
137134
}

0 commit comments

Comments
 (0)