mirror of
https://github.com/PolyhedralDev/Terra.git
synced 2026-06-17 22:31:52 +00:00
checkReturnType -> ensureReturnType
This commit is contained in:
+9
-9
@@ -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());
|
||||||
}
|
}
|
||||||
|
|||||||
+1
-1
@@ -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());
|
||||||
}
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user