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
 import org.openzen.zenscript.javashared.JavaMethod;
9
 import org.openzen.zenscript.javashared.JavaMethod;
10
 import org.openzen.zenscript.javashared.JavaModifiers;
10
 import org.openzen.zenscript.javashared.JavaModifiers;
11
 
11
 
12
+import java.util.HashMap;
12
 import java.util.Map;
13
 import java.util.Map;
13
 @SuppressWarnings("Duplicates")
14
 @SuppressWarnings("Duplicates")
14
 public class JavaForeachWriter {
15
 public class JavaForeachWriter {
91
         
92
         
92
         javaWriter.label(startLabel);
93
         javaWriter.label(startLabel);
93
         javaWriter.dup();
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
         javaWriter.ifEQ(endLabel);
96
         javaWriter.ifEQ(endLabel);
96
         javaWriter.dup();
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
         final JavaLocalVariableInfo keyVariable = javaWriter.getLocalVariable(variables[0].variable);
100
         final JavaLocalVariableInfo keyVariable = javaWriter.getLocalVariable(variables[0].variable);
100
         this.downCast(0, keyVariable.type);
101
         this.downCast(0, keyVariable.type);
109
 
110
 
110
 		javaWriter.label(startLabel);
111
 		javaWriter.label(startLabel);
111
 		javaWriter.dup();
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
 		javaWriter.ifEQ(endLabel);
114
 		javaWriter.ifEQ(endLabel);
114
 		javaWriter.dup();
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
 		javaWriter.checkCast(Type.getType(Map.Entry.class));
117
 		javaWriter.checkCast(Type.getType(Map.Entry.class));
117
 		javaWriter.dup(false);
118
 		javaWriter.dup(false);
118
 
119
 

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

5
  */
5
  */
6
 package org.openzen.zenscript.javashared;
6
 package org.openzen.zenscript.javashared;
7
 
7
 
8
-import stdlib.Strings;
9
-
10
 import java.util.Arrays;
8
 import java.util.Arrays;
11
-import java.util.function.Supplier;
9
+import stdlib.Strings;
12
 
10
 
13
 /**
11
 /**
14
  *
12
  *
22
 	public static final JavaClass CLOSEABLE = new JavaClass("java.lang", "AutoCloseable", Kind.INTERFACE);
20
 	public static final JavaClass CLOSEABLE = new JavaClass("java.lang", "AutoCloseable", Kind.INTERFACE);
23
 	public static final JavaClass MAP = new JavaClass("java.util", "Map", JavaClass.Kind.INTERFACE);
21
 	public static final JavaClass MAP = new JavaClass("java.util", "Map", JavaClass.Kind.INTERFACE);
24
 	public static final JavaClass HASHMAP = new JavaClass("java.util", "HashMap", JavaClass.Kind.CLASS);
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
 	public static final JavaClass ARRAYS = new JavaClass("java.util", "Arrays", Kind.CLASS);
24
 	public static final JavaClass ARRAYS = new JavaClass("java.util", "Arrays", Kind.CLASS);
27
 	
25
 	
28
 	public static final JavaClass BOOLEAN = new JavaClass("java.lang", "Boolean", Kind.CLASS);
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
 		}
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
 			iterator.addMethod("empty", new JavaMethod(JavaClass.COLLECTIONS, JavaMethod.Kind.STATIC, "emptyIterator", false, "()Ljava/lang/Iterator;", JavaModifiers.STATIC | JavaModifiers.PUBLIC, false));
99
 			iterator.addMethod("empty", new JavaMethod(JavaClass.COLLECTIONS, JavaMethod.Kind.STATIC, "emptyIterator", false, "()Ljava/lang/Iterator;", JavaModifiers.STATIC | JavaModifiers.PUBLIC, false));
100
 			iterator.addInstanceMethod("hasNext", "hasNext", "()Z");
100
 			iterator.addInstanceMethod("hasNext", "hasNext", "()Z");
101
 			iterator.addInstanceMethod("next", "next", "()Ljava/lang/Object;");
101
 			iterator.addInstanceMethod("next", "next", "()Ljava/lang/Object;");

Loading…
Cancel
Save