Skip to content

Commit 40294b5

Browse files
committed
Improve AbstractVisitor (and linter)
1 parent 413548b commit 40294b5

File tree

3 files changed

+17
-3
lines changed

3 files changed

+17
-3
lines changed

docs/docs/en/changelog.md

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -5,7 +5,8 @@
55
### Fixes
66
- Fix passing command-line arguments to scripts.
77
- Fix `this` in non-static class methods.
8-
- Fix program stucking if using any http call (okhttp issue).
8+
- Fix program is not finished if using any http call (okhttp issue).
9+
- Fix visitor and linter checks inside functions.
910

1011
### Modules
1112
- [okhttp] Added `okhttp.newClient()` and `HttpClientBuilderValue`.

docs/docs/ru/changelog.md

Lines changed: 4 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -3,8 +3,10 @@
33
## Next
44

55
### Исправления
6-
- Исправлена передача аргументов командной строки скриптам
7-
- Исправлен `this` в нестатических методах классов
6+
- Исправлена передача аргументов командной строки скриптам.
7+
- Исправлен `this` в нестатических методах классов.
8+
- Исправлено завершение программы при использовании любого http запроса (баг в okhttp).
9+
- Исправлен visitor и проверки линтера внутри функций.
810

911
### Modules
1012
- [okhttp] Добавлен `okhttp.newClient()` и `HttpClientBuilderValue`

ownlang-parser/src/main/java/com/annimon/ownlang/parser/visitors/AbstractVisitor.java

Lines changed: 11 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,7 @@
11
package com.annimon.ownlang.parser.visitors;
22

3+
import com.annimon.ownlang.lib.Types;
4+
import com.annimon.ownlang.lib.UserDefinedFunction;
35
import com.annimon.ownlang.parser.ast.*;
46

57
import java.util.Map;
@@ -183,6 +185,15 @@ public void visit(UnaryExpression s) {
183185

184186
@Override
185187
public void visit(ValueExpression s) {
188+
if ( (s.value.type() == Types.FUNCTION) && (s.value.raw() instanceof UserDefinedFunction function) ) {
189+
for (Argument arg : function.arguments) {
190+
final Node valueExpr = arg.valueExpr();
191+
if (valueExpr != null) {
192+
arg.valueExpr().accept(this);
193+
}
194+
}
195+
function.body.accept(this);
196+
}
186197
}
187198

188199
@Override

0 commit comments

Comments
 (0)