2 Commits

Author SHA1 Message Date
  Jared 84b407af0d
Fix Iterator not having methods / fixed stdlibs not being reloadable 5 years ago
  Jared b10277cda2
Made the JavaClass#Iterator a supplier, fixes multiple engine runs 5 years ago

+ 5
- 4
JavaBytecodeCompiler/src/main/java/org/openzen/zenscript/javabytecode/compiler/JavaForeachWriter.java View File

@@ -9,6 +9,7 @@ import org.openzen.zenscript.javashared.JavaClass;
9 9
 import org.openzen.zenscript.javashared.JavaMethod;
10 10
 import org.openzen.zenscript.javashared.JavaModifiers;
11 11
 
12
+import java.util.HashMap;
12 13
 import java.util.Map;
13 14
 @SuppressWarnings("Duplicates")
14 15
 public class JavaForeachWriter {
@@ -91,10 +92,10 @@ public class JavaForeachWriter {
91 92
         
92 93
         javaWriter.label(startLabel);
93 94
         javaWriter.dup();
94
-        javaWriter.invokeInterface(JavaMethod.getVirtual(JavaClass.ITERATOR.get(), "hasNext", "()Z", 0));
95
+        javaWriter.invokeInterface(JavaMethod.getVirtual(JavaClass.ITERATOR, "hasNext", "()Z", 0));
95 96
         javaWriter.ifEQ(endLabel);
96 97
         javaWriter.dup();
97
-        javaWriter.invokeInterface(JavaMethod.getVirtual(JavaClass.ITERATOR.get(), "next", "()Ljava/lang/Object;", 0));
98
+        javaWriter.invokeInterface(JavaMethod.getVirtual(JavaClass.ITERATOR, "next", "()Ljava/lang/Object;", 0));
98 99
         
99 100
         final JavaLocalVariableInfo keyVariable = javaWriter.getLocalVariable(variables[0].variable);
100 101
         this.downCast(0, keyVariable.type);
@@ -109,10 +110,10 @@ public class JavaForeachWriter {
109 110
 
110 111
 		javaWriter.label(startLabel);
111 112
 		javaWriter.dup();
112
-		javaWriter.invokeInterface(JavaMethod.getVirtual(JavaClass.ITERATOR.get(), "hasNext", "()Z", 0));
113
+		javaWriter.invokeInterface(JavaMethod.getVirtual(JavaClass.ITERATOR, "hasNext", "()Z", 0));
113 114
 		javaWriter.ifEQ(endLabel);
114 115
 		javaWriter.dup();
115
-		javaWriter.invokeInterface(JavaMethod.getVirtual(JavaClass.ITERATOR.get(), "next", "()Ljava/lang/Object;", 0));
116
+		javaWriter.invokeInterface(JavaMethod.getVirtual(JavaClass.ITERATOR, "next", "()Ljava/lang/Object;", 0));
116 117
 		javaWriter.checkCast(Type.getType(Map.Entry.class));
117 118
 		javaWriter.dup(false);
118 119
 

+ 2
- 4
JavaShared/src/main/java/org/openzen/zenscript/javashared/JavaClass.java View File

@@ -5,10 +5,8 @@
5 5
  */
6 6
 package org.openzen.zenscript.javashared;
7 7
 
8
-import stdlib.Strings;
9
-
10 8
 import java.util.Arrays;
11
-import java.util.function.Supplier;
9
+import stdlib.Strings;
12 10
 
13 11
 /**
14 12
  *
@@ -22,7 +20,7 @@ public class JavaClass implements Comparable<JavaClass> {
22 20
 	public static final JavaClass CLOSEABLE = new JavaClass("java.lang", "AutoCloseable", Kind.INTERFACE);
23 21
 	public static final JavaClass MAP = new JavaClass("java.util", "Map", JavaClass.Kind.INTERFACE);
24 22
 	public static final JavaClass HASHMAP = new JavaClass("java.util", "HashMap", JavaClass.Kind.CLASS);
25
-	public static final Supplier<JavaClass> ITERATOR = () -> new JavaClass("java.util", "Iterator", JavaClass.Kind.INTERFACE);
23
+	public static final JavaClass ITERATOR = new JavaClass("java.util", "Iterator", JavaClass.Kind.INTERFACE);
26 24
 	public static final JavaClass ARRAYS = new JavaClass("java.util", "Arrays", Kind.CLASS);
27 25
 	
28 26
 	public static final JavaClass BOOLEAN = new JavaClass("java.lang", "Boolean", Kind.CLASS);

+ 1
- 1
JavaShared/src/main/java/org/openzen/zenscript/javashared/prepare/JavaPrepareDefinitionVisitor.java View File

@@ -95,7 +95,7 @@ public class JavaPrepareDefinitionVisitor implements DefinitionVisitor<JavaClass
95 95
 		}
96 96
 		
97 97
 		{
98
-			JavaNativeClass iterator = new JavaNativeClass(JavaClass.ITERATOR.get());
98
+			JavaNativeClass iterator = new JavaNativeClass(new JavaClass("java.util", "Iterator", JavaClass.Kind.INTERFACE));
99 99
 			iterator.addMethod("empty", new JavaMethod(JavaClass.COLLECTIONS, JavaMethod.Kind.STATIC, "emptyIterator", false, "()Ljava/lang/Iterator;", JavaModifiers.STATIC | JavaModifiers.PUBLIC, false));
100 100
 			iterator.addInstanceMethod("hasNext", "hasNext", "()Z");
101 101
 			iterator.addInstanceMethod("next", "next", "()Ljava/lang/Object;");

Loading…
Cancel
Save