checkReturnType -> ensureReturnType

This commit is contained in:
Astrash
2023-07-23 19:17:50 +10:00
parent 802bce40c8
commit 8e96745a85
2 changed files with 10 additions and 10 deletions
@@ -96,7 +96,7 @@ public class Parser {
private WhileKeyword parseWhileLoop(Tokenizer tokenizer, SourcePosition start, ScopeBuilder scopeBuilder) { private WhileKeyword parseWhileLoop(Tokenizer tokenizer, SourcePosition start, ScopeBuilder scopeBuilder) {
Expression<?> first = parseLogicMathExpression(tokenizer, true, scopeBuilder); Expression<?> first = parseLogicMathExpression(tokenizer, true, scopeBuilder);
ParserUtil.checkReturnType(first, Expression.ReturnType.BOOLEAN); ParserUtil.ensureReturnType(first, Expression.ReturnType.BOOLEAN);
ParserUtil.ensureType(tokenizer.consume(), Token.Type.GROUP_END); ParserUtil.ensureType(tokenizer.consume(), Token.Type.GROUP_END);
@@ -105,7 +105,7 @@ public class Parser {
private IfKeyword parseIfStatement(Tokenizer tokenizer, SourcePosition start, boolean controlStructure, ScopeBuilder scopeBuilder) { private IfKeyword parseIfStatement(Tokenizer tokenizer, SourcePosition start, boolean controlStructure, ScopeBuilder scopeBuilder) {
Expression<?> condition = parseLogicMathExpression(tokenizer, true, scopeBuilder); Expression<?> condition = parseLogicMathExpression(tokenizer, true, scopeBuilder);
ParserUtil.checkReturnType(condition, Expression.ReturnType.BOOLEAN); ParserUtil.ensureReturnType(condition, Expression.ReturnType.BOOLEAN);
ParserUtil.ensureType(tokenizer.consume(), Token.Type.GROUP_END); ParserUtil.ensureType(tokenizer.consume(), Token.Type.GROUP_END);
@@ -119,7 +119,7 @@ public class Parser {
if(tokenizer.current().isType(Token.Type.IF_STATEMENT)) { if(tokenizer.current().isType(Token.Type.IF_STATEMENT)) {
tokenizer.consume(); // Consume if. tokenizer.consume(); // Consume if.
Expression<?> elseCondition = parseLogicMathExpression(tokenizer, true, scopeBuilder); Expression<?> elseCondition = parseLogicMathExpression(tokenizer, true, scopeBuilder);
ParserUtil.checkReturnType(elseCondition, Expression.ReturnType.BOOLEAN); ParserUtil.ensureReturnType(elseCondition, Expression.ReturnType.BOOLEAN);
elseIf.add(Pair.of((Expression<Boolean>) elseCondition, parseStatementBlock(tokenizer, controlStructure, scopeBuilder))); elseIf.add(Pair.of((Expression<Boolean>) elseCondition, parseStatementBlock(tokenizer, controlStructure, scopeBuilder)));
} else { } else {
elseBlock = parseStatementBlock(tokenizer, controlStructure, scopeBuilder); elseBlock = parseStatementBlock(tokenizer, controlStructure, scopeBuilder);
@@ -157,7 +157,7 @@ public class Parser {
} else initializer = parseLogicMathExpression(tokenizer, true, scopeBuilder); } else initializer = parseLogicMathExpression(tokenizer, true, scopeBuilder);
ParserUtil.ensureType(tokenizer.consume(), Token.Type.STATEMENT_END); ParserUtil.ensureType(tokenizer.consume(), Token.Type.STATEMENT_END);
Expression<?> conditional = parseLogicMathExpression(tokenizer, true, scopeBuilder); Expression<?> conditional = parseLogicMathExpression(tokenizer, true, scopeBuilder);
ParserUtil.checkReturnType(conditional, Expression.ReturnType.BOOLEAN); ParserUtil.ensureReturnType(conditional, Expression.ReturnType.BOOLEAN);
ParserUtil.ensureType(tokenizer.consume(), Token.Type.STATEMENT_END); ParserUtil.ensureType(tokenizer.consume(), Token.Type.STATEMENT_END);
Expression<?> incrementer; Expression<?> incrementer;
@@ -210,10 +210,10 @@ public class Parser {
} }
if(booleanInverted) { // Invert operation if boolean not detected if(booleanInverted) { // Invert operation if boolean not detected
ParserUtil.checkReturnType(expression, Expression.ReturnType.BOOLEAN); ParserUtil.ensureReturnType(expression, Expression.ReturnType.BOOLEAN);
expression = new BooleanNotOperation((Expression<Boolean>) expression, expression.getPosition()); expression = new BooleanNotOperation((Expression<Boolean>) expression, expression.getPosition());
} else if(negate) { } else if(negate) {
ParserUtil.checkReturnType(expression, Expression.ReturnType.NUMBER); ParserUtil.ensureReturnType(expression, Expression.ReturnType.NUMBER);
expression = new NegationOperation((Expression<Number>) expression, expression.getPosition()); expression = new NegationOperation((Expression<Number>) expression, expression.getPosition());
} }
@@ -317,7 +317,7 @@ public class Parser {
ParserUtil.ensureType(tokenizer.consume(), Token.Type.ASSIGNMENT); ParserUtil.ensureType(tokenizer.consume(), Token.Type.ASSIGNMENT);
Expression<?> value = parseLogicMathExpression(tokenizer, true, scopeBuilder); Expression<?> value = parseLogicMathExpression(tokenizer, true, scopeBuilder);
ParserUtil.checkReturnType(value, returnType); ParserUtil.ensureReturnType(value, returnType);
String id = identifier.getContent(); String id = identifier.getContent();
@@ -393,7 +393,7 @@ public class Parser {
String id = identifier.getContent(); String id = identifier.getContent();
ParserUtil.checkReturnType(value, scopeBuilder.getType(id)); ParserUtil.ensureReturnType(value, scopeBuilder.getType(id));
ReturnType type = value.returnType(); ReturnType type = value.returnType();
@@ -435,7 +435,7 @@ public class Parser {
if(builder.getArgument(i) == null) if(builder.getArgument(i) == null)
throw new ParseException("Unexpected argument at position " + i + " in function " + identifier.getContent(), throw new ParseException("Unexpected argument at position " + i + " in function " + identifier.getContent(),
identifier.getPosition()); identifier.getPosition());
ParserUtil.checkReturnType(argument, builder.getArgument(i)); ParserUtil.ensureReturnType(argument, builder.getArgument(i));
} }
return builder.build(args, identifier.getPosition()); return builder.build(args, identifier.getPosition());
} }
@@ -56,7 +56,7 @@ public class ParserUtil {
throw new ParseException("Expected " + Arrays.toString(expected) + " but found " + token.getType(), token.getPosition()); throw new ParseException("Expected " + Arrays.toString(expected) + " but found " + token.getType(), token.getPosition());
} }
public static void checkReturnType(Expression<?> returnable, Expression.ReturnType... types) { public static void ensureReturnType(Expression<?> returnable, Expression.ReturnType... types) {
for(Expression.ReturnType type : types) if(returnable.returnType().equals(type)) return; for(Expression.ReturnType type : types) if(returnable.returnType().equals(type)) return;
throw new ParseException("Expected " + Arrays.toString(types) + " but found " + returnable.returnType(), returnable.getPosition()); throw new ParseException("Expected " + Arrays.toString(types) + " but found " + returnable.returnType(), returnable.getPosition());
} }