package org.simantics.scl.compiler.internal.codegen.utils; import java.util.Arrays; import org.cojen.classfile.TypeDesc; import org.objectweb.asm.Label; import org.objectweb.asm.Opcodes; import org.simantics.scl.compiler.internal.codegen.references.Val; import org.simantics.scl.compiler.internal.codegen.types.JavaTypeTranslator; import org.simantics.scl.compiler.types.Type; public class CodeBuilderUtils { /** * Creates fields c0,...,c{N-1} to the given class, where c is fieldNamePrefix and N is the length of types. * Creates also a constructor for the fields. * @param classFile * @param fieldModifiers * @param fieldNamePrefix * @param types */ public static void makeRecord(ClassBuilder classBuilder, String recordName, int fieldModifiers, String fieldNamePrefix, TypeDesc[] types, boolean generateEqualsAndHashCode) { // Create fields for(int i=0;i 0) { tsmb.newObject(TypeDesc.forClass(StringBuilder.class)); tsmb.dup(); tsmb.invokeConstructor("java/lang/StringBuilder", Constants.EMPTY_TYPEDESC_ARRAY); // build string tsmb.loadConstant("(" + recordName); StringBuilder_appendString(tsmb); for(int i=0;i