Skip to content

Commit 8dd18bc

Browse files
authored
Properly parse exprsecs in function calls (#8199)
modify section context when parsing functions
1 parent 75e4ddb commit 8dd18bc

File tree

2 files changed

+13
-2
lines changed

2 files changed

+13
-2
lines changed

src/main/java/ch/njol/skript/lang/Statement.java

Lines changed: 7 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -30,7 +30,13 @@ public abstract class Statement extends TriggerItem implements SyntaxElement {
3030

3131
public static @Nullable Statement parse(String input, @Nullable String defaultError, @Nullable SectionNode node, @Nullable List<TriggerItem> items) {
3232
try (ParseLogHandler log = SkriptLogger.startParseLogHandler()) {
33-
EffFunctionCall functionCall = EffFunctionCall.parse(input);
33+
Section.SectionContext sectionContext = ParserInstance.get().getData(Section.SectionContext.class);
34+
EffFunctionCall functionCall;
35+
if (node != null) {
36+
functionCall = sectionContext.modify(node, items, () -> EffFunctionCall.parse(input));
37+
} else {
38+
functionCall = EffFunctionCall.parse(input);
39+
}
3440
if (functionCall != null) {
3541
log.printLog();
3642
return functionCall;
@@ -49,7 +55,6 @@ public abstract class Statement extends TriggerItem implements SyntaxElement {
4955

5056
Statement statement;
5157
var iterator = Skript.instance().syntaxRegistry().syntaxes(org.skriptlang.skript.registration.SyntaxRegistry.STATEMENT).iterator();
52-
Section.SectionContext sectionContext = ParserInstance.get().getData(Section.SectionContext.class);
5358
if (node != null) {
5459
var wrappedIterator = new Iterator<>() {
5560
@Override
Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,6 @@
1+
local function f(x: worldborder):
2+
assert worldborder warning time of {_x} is 1 second with "Failed to modify worldborder before calling function. Check Statement.parse() for sectioncontext handling."
3+
4+
test "load expr secs in functions":
5+
f(a worldborder):
6+
set worldborder warning time to 20 ticks

0 commit comments

Comments
 (0)