Kaynağa Gözat

Map.put with class, maybe

kindlich 6 yıl önce
ebeveyn
işleme
9708c58f69
Veri tabanında bu imza için bilinen anahtar bulunamadı

+ 12
- 1
JavaBytecodeCompiler/src/main/java/org/openzen/zenscript/javabytecode/compiler/JavaExpressionVisitor.java Dosyayı Görüntüle

@@ -110,6 +110,7 @@ public class JavaExpressionVisitor implements ExpressionVisitor<Void>, JavaNativ
110 110
 	private static final JavaMethod HASHMAP_INIT = JavaMethod.getNativeConstructor(JavaClass.HASHMAP, "()V");
111 111
 	private static final JavaMethod MAP_GET = JavaMethod.getNativeVirtual(JavaClass.MAP, "get", "(Ljava/lang/Object;)Ljava/lang/Object;");
112 112
 	private static final JavaMethod MAP_PUT = JavaMethod.getNativeVirtual(JavaClass.MAP, "put", "(Ljava/lang/Object;Ljava/lang/Object;)Ljava/lang/Object;");
113
+	private static final JavaMethod MAP_PUT_ALL = JavaMethod.getNativeVirtual(JavaClass.MAP, "putAll", "(Ljava/util/Map;)V");
113 114
 	private static final JavaMethod MAP_CONTAINS_KEY = JavaMethod.getNativeVirtual(JavaClass.MAP, "containsKey", "(Ljava/lang/Object;)Z");
114 115
 	private static final JavaMethod MAP_SIZE = JavaMethod.getNativeVirtual(JavaClass.MAP, "size", "()I");
115 116
 	private static final JavaMethod MAP_ISEMPTY = JavaMethod.getNativeVirtual(JavaClass.MAP, "isEmpty", "()Z");
@@ -542,7 +543,7 @@ public class JavaExpressionVisitor implements ExpressionVisitor<Void>, JavaNativ
542 543
 					argument.accept(this);
543 544
 				}
544 545
 		}
545
-		
546
+
546 547
 		switch (builtin) {
547 548
 			case BOOL_NOT:
548 549
 				javaWriter.iConst1();
@@ -907,6 +908,13 @@ public class JavaExpressionVisitor implements ExpressionVisitor<Void>, JavaNativ
907 908
 				break;
908 909
 			}
909 910
 			case GENERICMAP_PUT: {
911
+				//FIXME dirty check for typeOfT
912
+				if (expression.arguments.arguments.length == 1) {
913
+					javaWriter.dup();
914
+					javaWriter.invokeVirtual(JavaMethod.getVirtual(JavaClass.OBJECT, "getClass", "()Ljava/lang/Class;", 0));
915
+					javaWriter.swap();
916
+				}
917
+
910 918
 				javaWriter.invokeVirtual(MAP_PUT);
911 919
 				javaWriter.pop();
912 920
 				break;
@@ -918,6 +926,9 @@ public class JavaExpressionVisitor implements ExpressionVisitor<Void>, JavaNativ
918 926
 				throw new UnsupportedOperationException("Not yet supported!");
919 927
 			case GENERICMAP_NOTEQUALS:
920 928
 				throw new UnsupportedOperationException("Not yet supported!");
929
+			case GENERICMAP_ADDALL:
930
+				javaWriter.invokeInterface(MAP_PUT_ALL);
931
+				break;
921 932
 			case ARRAY_INDEXGET: {
922 933
 				ArrayTypeID type = (ArrayTypeID) expression.target.type.type;
923 934
 				expression.target.accept(this);

Loading…
İptal
Kaydet