From bbab6e39ff2f8babf10c85e3ea578a8fdb964113 Mon Sep 17 00:00:00 2001 From: dfsek Date: Fri, 25 Dec 2020 02:43:15 -0700 Subject: [PATCH] enforce scope definitions in for loop declarations --- .../java/com/dfsek/terra/api/structures/parser/Parser.java | 3 +++ 1 file changed, 3 insertions(+) diff --git a/common/src/main/java/com/dfsek/terra/api/structures/parser/Parser.java b/common/src/main/java/com/dfsek/terra/api/structures/parser/Parser.java index 46ce78a87..2d4f4bf1d 100644 --- a/common/src/main/java/com/dfsek/terra/api/structures/parser/Parser.java +++ b/common/src/main/java/com/dfsek/terra/api/structures/parser/Parser.java @@ -128,6 +128,9 @@ public class Parser { ParserUtil.checkType(tokens.consume(), Token.Type.STRING_VARIABLE, Token.Type.BOOLEAN_VARIABLE, Token.Type.NUMBER_VARIABLE); Token name = tokens.get(); + if(functions.containsKey(name.getContent()) || variableMap.containsKey(name.getContent()) || builtinFunctions.contains(name.getContent())) + throw new ParseException(name.getContent() + " is already defined in this scope: " + name.getPosition()); + initializer = parseAssignment(forVar, tokens, variableMap); variableMap.put(name.getContent(), forVar); } else initializer = parseExpression(tokens, true, variableMap);