test: reverted TestCodegen
This commit is contained in:
parent
cc8f36d3ec
commit
6e1198ab3d
@ -22,7 +22,6 @@ import static org.junit.Assert.*;
|
|||||||
import org.objectweb.asm.Opcodes;
|
import org.objectweb.asm.Opcodes;
|
||||||
|
|
||||||
import java.io.File;
|
import java.io.File;
|
||||||
import java.io.FileOutputStream;
|
|
||||||
import java.io.IOException;
|
import java.io.IOException;
|
||||||
import java.nio.file.Files;
|
import java.nio.file.Files;
|
||||||
import java.nio.file.Path;
|
import java.nio.file.Path;
|
||||||
@ -84,9 +83,6 @@ public class TestCodegen {
|
|||||||
public static Class<?> generateClass(TargetStructure clazz, IByteArrayClassLoader classLoader, ASTToTargetAST converter) throws IOException {
|
public static Class<?> generateClass(TargetStructure clazz, IByteArrayClassLoader classLoader, ASTToTargetAST converter) throws IOException {
|
||||||
Codegen codegen = new Codegen(clazz, converter.compiler, converter);
|
Codegen codegen = new Codegen(clazz, converter.compiler, converter);
|
||||||
var code = codegen.generate();
|
var code = codegen.generate();
|
||||||
try (FileOutputStream fos = new FileOutputStream("C:\\Users\\ruben\\Desktop\\asd\\test.class")) {
|
|
||||||
fos.write(code);
|
|
||||||
}
|
|
||||||
writeClassFile(clazz.qualifiedName().getClassName(), code);
|
writeClassFile(clazz.qualifiedName().getClassName(), code);
|
||||||
return classLoader.loadClass(code);
|
return classLoader.loadClass(code);
|
||||||
}
|
}
|
||||||
@ -220,19 +216,19 @@ public class TestCodegen {
|
|||||||
public void testClassicSwitch() throws Exception {
|
public void testClassicSwitch() throws Exception {
|
||||||
var targetClass = new TargetClass(Opcodes.ACC_PUBLIC , new JavaClassName("SwitchClassic"));
|
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(
|
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 TargetVarDecl(TargetType.Integer, "res", null),
|
||||||
new TargetSwitch(new TargetLocalVar(TargetType.Integer, "i"), List.of(
|
new TargetSwitch(new TargetLocalVar(TargetType.Integer, "i"), List.of(
|
||||||
new TargetSwitch.Case(List.of(new TargetLiteral.IntLiteral(10)), new TargetBlock(
|
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())
|
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(15), new TargetLiteral.IntLiteral(20)), new TargetBlock(List.of())),
|
||||||
new TargetSwitch.Case(List.of(new TargetLiteral.IntLiteral(30)), new TargetBlock(
|
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())
|
List.of(new TargetAssign(TargetType.Integer, new TargetLocalVar(TargetType.Integer, "res"), new TargetLiteral.IntLiteral(1)), new TargetBreak())
|
||||||
))
|
))
|
||||||
), new TargetSwitch.Case(new TargetBlock(
|
), new TargetSwitch.Case(new TargetBlock(
|
||||||
List.of(new TargetAssign(TargetType.Integer, new TargetLocalVar(TargetType.Integer, "res"), new TargetLiteral.IntLiteral(2)), new TargetBreak())
|
List.of(new TargetAssign(TargetType.Integer, new TargetLocalVar(TargetType.Integer, "res"), new TargetLiteral.IntLiteral(2)), new TargetBreak())
|
||||||
), false)),
|
), false)),
|
||||||
new TargetReturn(new TargetLocalVar(TargetType.Integer, "res"))
|
new TargetReturn(new TargetLocalVar(TargetType.Integer, "res"))
|
||||||
)));
|
)));
|
||||||
|
|
||||||
var clazz = generateClass(targetClass, new ByteArrayClassLoader());
|
var clazz = generateClass(targetClass, new ByteArrayClassLoader());
|
||||||
@ -248,22 +244,22 @@ public class TestCodegen {
|
|||||||
public void testTypeSwitch() throws Exception {
|
public void testTypeSwitch() throws Exception {
|
||||||
var targetClass = new TargetClass(Opcodes.ACC_PUBLIC, new JavaClassName("SwitchEnhanced"));
|
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(
|
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 TargetReturn(new TargetSwitch(new TargetLocalVar(TargetType.Object, "obj"), List.of(
|
||||||
new TargetSwitch.Case(List.of(new TargetTypePattern(TargetType.String, "aString")), new TargetBlock(
|
new TargetSwitch.Case(List.of(new TargetTypePattern(TargetType.String, "aString")), new TargetBlock(
|
||||||
List.of(new TargetYield(new TargetLiteral.IntLiteral(0)))
|
List.of(new TargetYield(new TargetLiteral.IntLiteral(0)))
|
||||||
), false),
|
), false),
|
||||||
new TargetSwitch.Case(List.of(
|
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 TargetGuard(new TargetTypePattern(TargetType.Integer, "i"), new TargetBinaryOp.Less(TargetType.Integer, new TargetLocalVar(TargetType.Integer, "i"), new TargetLiteral.IntLiteral(10)))
|
||||||
), new TargetBlock(
|
), new TargetBlock(
|
||||||
List.of(new TargetLiteral.IntLiteral(3))
|
List.of(new TargetLiteral.IntLiteral(3))
|
||||||
), true),
|
), true),
|
||||||
new TargetSwitch.Case(List.of(new TargetTypePattern(TargetType.Integer, "anInteger")), new TargetBlock(
|
new TargetSwitch.Case(List.of(new TargetTypePattern(TargetType.Integer, "anInteger")), new TargetBlock(
|
||||||
List.of(new TargetLiteral.IntLiteral(1))
|
List.of(new TargetLiteral.IntLiteral(1))
|
||||||
), true)
|
), true)
|
||||||
), new TargetSwitch.Case(new TargetBlock(
|
), new TargetSwitch.Case(new TargetBlock(
|
||||||
List.of(new TargetLiteral.IntLiteral(2))
|
List.of(new TargetLiteral.IntLiteral(2))
|
||||||
), true), TargetType.Integer)
|
), true), TargetType.Integer)
|
||||||
))));
|
))));
|
||||||
var clazz = generateClass(targetClass, new ByteArrayClassLoader());
|
var clazz = generateClass(targetClass, new ByteArrayClassLoader());
|
||||||
var m = clazz.getDeclaredMethod("switchType", Object.class);
|
var m = clazz.getDeclaredMethod("switchType", Object.class);
|
||||||
assertEquals(m.invoke(null, "String"), 0);
|
assertEquals(m.invoke(null, "String"), 0);
|
||||||
|
Loading…
Reference in New Issue
Block a user