Pārlūkot izejas kodu

Map.put with class, maybe

kindlich 6 gadus atpakaļ
vecāks
revīzija
9708c58f69
Šim parakstam datu bāzē netika atrasta zināma atslēga

+ 12
- 1
JavaBytecodeCompiler/src/main/java/org/openzen/zenscript/javabytecode/compiler/JavaExpressionVisitor.java Parādīt failu

110
 	private static final JavaMethod HASHMAP_INIT = JavaMethod.getNativeConstructor(JavaClass.HASHMAP, "()V");
110
 	private static final JavaMethod HASHMAP_INIT = JavaMethod.getNativeConstructor(JavaClass.HASHMAP, "()V");
111
 	private static final JavaMethod MAP_GET = JavaMethod.getNativeVirtual(JavaClass.MAP, "get", "(Ljava/lang/Object;)Ljava/lang/Object;");
111
 	private static final JavaMethod MAP_GET = JavaMethod.getNativeVirtual(JavaClass.MAP, "get", "(Ljava/lang/Object;)Ljava/lang/Object;");
112
 	private static final JavaMethod MAP_PUT = JavaMethod.getNativeVirtual(JavaClass.MAP, "put", "(Ljava/lang/Object;Ljava/lang/Object;)Ljava/lang/Object;");
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
 	private static final JavaMethod MAP_CONTAINS_KEY = JavaMethod.getNativeVirtual(JavaClass.MAP, "containsKey", "(Ljava/lang/Object;)Z");
114
 	private static final JavaMethod MAP_CONTAINS_KEY = JavaMethod.getNativeVirtual(JavaClass.MAP, "containsKey", "(Ljava/lang/Object;)Z");
114
 	private static final JavaMethod MAP_SIZE = JavaMethod.getNativeVirtual(JavaClass.MAP, "size", "()I");
115
 	private static final JavaMethod MAP_SIZE = JavaMethod.getNativeVirtual(JavaClass.MAP, "size", "()I");
115
 	private static final JavaMethod MAP_ISEMPTY = JavaMethod.getNativeVirtual(JavaClass.MAP, "isEmpty", "()Z");
116
 	private static final JavaMethod MAP_ISEMPTY = JavaMethod.getNativeVirtual(JavaClass.MAP, "isEmpty", "()Z");
542
 					argument.accept(this);
543
 					argument.accept(this);
543
 				}
544
 				}
544
 		}
545
 		}
545
-		
546
+
546
 		switch (builtin) {
547
 		switch (builtin) {
547
 			case BOOL_NOT:
548
 			case BOOL_NOT:
548
 				javaWriter.iConst1();
549
 				javaWriter.iConst1();
907
 				break;
908
 				break;
908
 			}
909
 			}
909
 			case GENERICMAP_PUT: {
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
 				javaWriter.invokeVirtual(MAP_PUT);
918
 				javaWriter.invokeVirtual(MAP_PUT);
911
 				javaWriter.pop();
919
 				javaWriter.pop();
912
 				break;
920
 				break;
918
 				throw new UnsupportedOperationException("Not yet supported!");
926
 				throw new UnsupportedOperationException("Not yet supported!");
919
 			case GENERICMAP_NOTEQUALS:
927
 			case GENERICMAP_NOTEQUALS:
920
 				throw new UnsupportedOperationException("Not yet supported!");
928
 				throw new UnsupportedOperationException("Not yet supported!");
929
+			case GENERICMAP_ADDALL:
930
+				javaWriter.invokeInterface(MAP_PUT_ALL);
931
+				break;
921
 			case ARRAY_INDEXGET: {
932
 			case ARRAY_INDEXGET: {
922
 				ArrayTypeID type = (ArrayTypeID) expression.target.type.type;
933
 				ArrayTypeID type = (ArrayTypeID) expression.target.type.type;
923
 				expression.target.accept(this);
934
 				expression.target.accept(this);

Notiek ielāde…
Atcelt
Saglabāt