diff --git a/src/test/java/targetast/TestCodegen.java b/src/test/java/targetast/TestCodegen.java index 10af0bf5..1f93cf2d 100644 --- a/src/test/java/targetast/TestCodegen.java +++ b/src/test/java/targetast/TestCodegen.java @@ -22,7 +22,6 @@ import static org.junit.Assert.*; import org.objectweb.asm.Opcodes; import java.io.File; -import java.io.FileOutputStream; import java.io.IOException; import java.nio.file.Files; import java.nio.file.Path; @@ -84,9 +83,6 @@ public class TestCodegen { public static Class generateClass(TargetStructure clazz, IByteArrayClassLoader classLoader, ASTToTargetAST converter) throws IOException { Codegen codegen = new Codegen(clazz, converter.compiler, converter); var code = codegen.generate(); - try (FileOutputStream fos = new FileOutputStream("C:\\Users\\ruben\\Desktop\\asd\\test.class")) { - fos.write(code); - } writeClassFile(clazz.qualifiedName().getClassName(), code); return classLoader.loadClass(code); } @@ -220,19 +216,19 @@ public class TestCodegen { public void testClassicSwitch() throws Exception { var targetClass = new TargetClass(Opcodes.ACC_PUBLIC , new JavaClassName("SwitchClassic")); targetClass.addMethod(Opcodes.ACC_PUBLIC | Opcodes.ACC_STATIC, "switchClassic", List.of(new MethodParameter(TargetType.Integer, "i")), TargetType.Integer, new TargetBlock(List.of( - new TargetVarDecl(TargetType.Integer, "res", null), - new TargetSwitch(new TargetLocalVar(TargetType.Integer, "i"), List.of( - new TargetSwitch.Case(List.of(new TargetLiteral.IntLiteral(10)), new TargetBlock( - List.of(new TargetAssign(TargetType.Integer, new TargetLocalVar(TargetType.Integer, "res"), new TargetLiteral.IntLiteral(0)), new TargetBreak()) - )), - new TargetSwitch.Case(List.of(new TargetLiteral.IntLiteral(15), new TargetLiteral.IntLiteral(20)), new TargetBlock(List.of())), - new TargetSwitch.Case(List.of(new TargetLiteral.IntLiteral(30)), new TargetBlock( - List.of(new TargetAssign(TargetType.Integer, new TargetLocalVar(TargetType.Integer, "res"), new TargetLiteral.IntLiteral(1)), new TargetBreak()) - )) - ), new TargetSwitch.Case(new TargetBlock( - List.of(new TargetAssign(TargetType.Integer, new TargetLocalVar(TargetType.Integer, "res"), new TargetLiteral.IntLiteral(2)), new TargetBreak()) - ), false)), - new TargetReturn(new TargetLocalVar(TargetType.Integer, "res")) + new TargetVarDecl(TargetType.Integer, "res", null), + new TargetSwitch(new TargetLocalVar(TargetType.Integer, "i"), List.of( + new TargetSwitch.Case(List.of(new TargetLiteral.IntLiteral(10)), new TargetBlock( + List.of(new TargetAssign(TargetType.Integer, new TargetLocalVar(TargetType.Integer, "res"), new TargetLiteral.IntLiteral(0)), new TargetBreak()) + )), + new TargetSwitch.Case(List.of(new TargetLiteral.IntLiteral(15), new TargetLiteral.IntLiteral(20)), new TargetBlock(List.of())), + new TargetSwitch.Case(List.of(new TargetLiteral.IntLiteral(30)), new TargetBlock( + List.of(new TargetAssign(TargetType.Integer, new TargetLocalVar(TargetType.Integer, "res"), new TargetLiteral.IntLiteral(1)), new TargetBreak()) + )) + ), new TargetSwitch.Case(new TargetBlock( + List.of(new TargetAssign(TargetType.Integer, new TargetLocalVar(TargetType.Integer, "res"), new TargetLiteral.IntLiteral(2)), new TargetBreak()) + ), false)), + new TargetReturn(new TargetLocalVar(TargetType.Integer, "res")) ))); var clazz = generateClass(targetClass, new ByteArrayClassLoader()); @@ -248,22 +244,22 @@ public class TestCodegen { public void testTypeSwitch() throws Exception { var targetClass = new TargetClass(Opcodes.ACC_PUBLIC, new JavaClassName("SwitchEnhanced")); targetClass.addMethod(Opcodes.ACC_PUBLIC | Opcodes.ACC_STATIC, "switchType", List.of(new MethodParameter(TargetType.Object, "obj")), TargetType.Integer, new TargetBlock(List.of( - new TargetReturn(new TargetSwitch(new TargetLocalVar(TargetType.Object, "obj"), List.of( - new TargetSwitch.Case(List.of(new TargetTypePattern(TargetType.String, "aString")), new TargetBlock( - List.of(new TargetYield(new TargetLiteral.IntLiteral(0))) - ), false), - new TargetSwitch.Case(List.of( - new TargetGuard(new TargetTypePattern(TargetType.Integer, "i"), new TargetBinaryOp.Less(TargetType.Integer, new TargetLocalVar(TargetType.Integer, "i"), new TargetLiteral.IntLiteral(10))) - ), new TargetBlock( - List.of(new TargetLiteral.IntLiteral(3)) - ), true), - new TargetSwitch.Case(List.of(new TargetTypePattern(TargetType.Integer, "anInteger")), new TargetBlock( - List.of(new TargetLiteral.IntLiteral(1)) - ), true) - ), new TargetSwitch.Case(new TargetBlock( - List.of(new TargetLiteral.IntLiteral(2)) - ), true), TargetType.Integer) - )))); + new TargetReturn(new TargetSwitch(new TargetLocalVar(TargetType.Object, "obj"), List.of( + new TargetSwitch.Case(List.of(new TargetTypePattern(TargetType.String, "aString")), new TargetBlock( + List.of(new TargetYield(new TargetLiteral.IntLiteral(0))) + ), false), + new TargetSwitch.Case(List.of( + new TargetGuard(new TargetTypePattern(TargetType.Integer, "i"), new TargetBinaryOp.Less(TargetType.Integer, new TargetLocalVar(TargetType.Integer, "i"), new TargetLiteral.IntLiteral(10))) + ), new TargetBlock( + List.of(new TargetLiteral.IntLiteral(3)) + ), true), + new TargetSwitch.Case(List.of(new TargetTypePattern(TargetType.Integer, "anInteger")), new TargetBlock( + List.of(new TargetLiteral.IntLiteral(1)) + ), true) + ), new TargetSwitch.Case(new TargetBlock( + List.of(new TargetLiteral.IntLiteral(2)) + ), true), TargetType.Integer) + )))); var clazz = generateClass(targetClass, new ByteArrayClassLoader()); var m = clazz.getDeclaredMethod("switchType", Object.class); assertEquals(m.invoke(null, "String"), 0);