Skip to content

Commit

Permalink
Properly log if the list of a foreach is invalid.
Browse files Browse the repository at this point in the history
  • Loading branch information
kindlich committed Jun 24, 2024
1 parent 0db64e8 commit fb9654f
Showing 1 changed file with 9 additions and 1 deletion.
Original file line number Diff line number Diff line change
@@ -1,16 +1,20 @@
package org.openzen.zenscript.parser.statements;

import org.openzen.zencode.shared.CodePosition;
import org.openzen.zencode.shared.CompileError;
import org.openzen.zencode.shared.CompileException;
import org.openzen.zenscript.codemodel.WhitespaceInfo;
import org.openzen.zenscript.codemodel.compilation.*;
import org.openzen.zenscript.codemodel.compilation.statement.CompilingExpressionCodeStatement;
import org.openzen.zenscript.codemodel.compilation.statement.CompilingLoopStatement;
import org.openzen.zenscript.codemodel.compilation.statement.CompilingStatement;
import org.openzen.zenscript.codemodel.expression.Expression;
import org.openzen.zenscript.codemodel.expression.InvalidExpression;
import org.openzen.zenscript.codemodel.identifiers.instances.IteratorInstance;
import org.openzen.zenscript.codemodel.ssa.CodeBlock;
import org.openzen.zenscript.codemodel.ssa.IterateStatement;
import org.openzen.zenscript.codemodel.statement.*;
import org.openzen.zenscript.codemodel.type.BasicTypeID;
import org.openzen.zenscript.codemodel.type.TypeID;
import org.openzen.zenscript.parser.ParsedAnnotation;

Expand Down Expand Up @@ -106,8 +110,12 @@ public Statement complete() {

ResolvedType listType = compiler.resolve(list.type);
Optional<IteratorInstance> maybeIterator = listType.findIterator(varnames.length);
if (!maybeIterator.isPresent())
if (!maybeIterator.isPresent()) {
if(list instanceof InvalidExpression) {
return new InvalidStatement(position, ((InvalidExpression) list).error);
}
return new InvalidStatement(position, CompileErrors.noSuchIterator(list.type, varnames.length));
}

IteratorInstance iterator = maybeIterator.get();
TypeID[] loopTypes = iterator.getLoopVariableTypes();
Expand Down

0 comments on commit fb9654f

Please sign in to comment.