diff --git a/pom.xml b/pom.xml
index d69740e0..3c31a7e8 100644
--- a/pom.xml
+++ b/pom.xml
@@ -1,7 +1,7 @@
+http://maven.apache.org/maven-v4_0_0.xsd">
4.0.0
de.dhbwstuttgart
JavaTXcompiler
@@ -11,6 +11,12 @@
JavaTXcompiler
http://maven.apache.org
+
+ junit
+ junit
+ 4.0
+ test
+
org.antlr
antlr4
@@ -37,12 +43,6 @@
asm
7.0
-
- junit
- junit
- 4.0
-
-
-
- org.apache.maven.plugins
- maven-compiler-plugin
-
-
- ${project.basedir}/src/test/resources/testBytecode/generatedBC/*.java
-
-
-
+
@@ -189,3 +169,5 @@
+
+
diff --git a/src/build_compiler.sh b/src/build_compiler.sh
deleted file mode 100755
index 6ccc2dc4..00000000
--- a/src/build_compiler.sh
+++ /dev/null
@@ -1,24 +0,0 @@
-#!/bin/bash
-# A basic script to compile the necessary packages and their subpackages to work with the parser.
-# Messages are logged to stderr.
->&2 echo "Building de.dhbwstuttgart.typecheck..."
-javac -d ../bin ./de/dhbwstuttgart/typecheck/*.java
->&2 echo "Building de.dhbwstuttgart.syntaxtree..."
-javac -d ../bin ./de/dhbwstuttgart/syntaxtree/*.java
->&2 echo "Building de.dhbwstuttgart.syntaxtree.factory..."
-javac -d ../bin ./de/dhbwstuttgart/syntaxtree/factory/*.java
->&2 echo "Building de.dhbwstuttgart.syntaxtree.operator..."
-javac -d ../bin ./de/dhbwstuttgart/syntaxtree/operator/*.java
->&2 echo "Building de.dhbwstuttgart.syntaxtree.statement..."
-javac -d ../bin ./de/dhbwstuttgart/syntaxtree/statement/*.java
->&2 echo "Building de.dhbwstuttgart.syntaxtree.statement.literal..."
-javac -d ../bin ./de/dhbwstuttgart/syntaxtree/statement/literal/*.java
->&2 echo "Building de.dhbwstuttgart.syntaxtree.type..."
-javac -d ../bin ./de/dhbwstuttgart/syntaxtree/type/*.java
->&2 echo "Building de.dhbwstuttgart.parser..."
-javac -d ../bin ./de/dhbwstuttgart/parser/*.java
->&2 echo "Building de.dhbwstuttgart.parser.SyntaxTreeGenerator..."
-javac -d ../bin ./de/dhbwstuttgart/parser/SyntaxTreeGenerator/*.java
->&2 echo "Building de.dhbwstuttgart.parser.antlr..."
-javac -d ../bin ./de/dhbwstuttgart/parser/antlr/*.java
-echo "Done. Now its your turn to debug:)."
diff --git a/src/main/java/de/dhbwstuttgart/.DS_Store b/src/main/java/de/dhbwstuttgart/.DS_Store
deleted file mode 100644
index aa8a1074..00000000
Binary files a/src/main/java/de/dhbwstuttgart/.DS_Store and /dev/null differ
diff --git a/src/main/java/de/dhbwstuttgart/bytecode/BytecodeGen.java b/src/main/java/de/dhbwstuttgart/bytecode/BytecodeGen.java
index 2ac10fcc..0dea801d 100644
--- a/src/main/java/de/dhbwstuttgart/bytecode/BytecodeGen.java
+++ b/src/main/java/de/dhbwstuttgart/bytecode/BytecodeGen.java
@@ -70,6 +70,7 @@ public class BytecodeGen implements ASTVisitor {
// stores generics and their bounds of class
HashMap genericsAndBounds = new HashMap<>();
+ private int constructorPos = 0;
private final TPHExtractor tphExtractor = new TPHExtractor();
private final ArrayList commonPairs = new ArrayList<>();
@@ -272,7 +273,8 @@ public class BytecodeGen implements ASTVisitor {
for(String paramName : methodParamsAndTypes.keySet()) {
String typeOfParam = methodParamsAndTypes.get(paramName).acceptTV(new TypeToSignature());
- if(genericsAndBounds.containsKey(typeOfParam) ||typeOfParam.substring(0, 4).equals("TPH ")
+ System.out.println(typeOfParam);
+ if(genericsAndBounds.containsKey(typeOfParam) ||typeOfParam.contains("$")
|| typeOfParam.contains("<")) {
hasGen = true;
break;
@@ -291,10 +293,14 @@ public class BytecodeGen implements ASTVisitor {
desc = constructor.accept(new DescriptorToString(resultSet));
System.out.println("Constructor: " + field.getName() + " Sig: "+ sig + " Desc: " + desc);
MethodVisitor mv = cw.visitMethod(Opcodes.ACC_PUBLIC, "", desc, sig, null);
- mv.visitCode();
+ mv.visitCode();
+
Block block = fieldInitializations.get().block;
+
+ constructorPos += 1;
+
BytecodeGenMethod gen = new BytecodeGenMethod(className,superClass,resultSet,field, mv,paramsAndLocals,cw,
- genericsAndBoundsMethod,genericsAndBounds,isInterface,classFiles, sf,path, block);
+ genericsAndBoundsMethod,genericsAndBounds,isInterface,classFiles, sf,path, block, constructorPos);
if(!field.getParameterList().iterator().hasNext() && !(field.block.statements.get(field.block.statements.size()-1) instanceof ReturnVoid)) {
mv.visitInsn(Opcodes.RETURN);
}
diff --git a/src/main/java/de/dhbwstuttgart/bytecode/BytecodeGenMethod.java b/src/main/java/de/dhbwstuttgart/bytecode/BytecodeGenMethod.java
index 24611f75..ff2c49a3 100644
--- a/src/main/java/de/dhbwstuttgart/bytecode/BytecodeGenMethod.java
+++ b/src/main/java/de/dhbwstuttgart/bytecode/BytecodeGenMethod.java
@@ -85,13 +85,15 @@ public class BytecodeGenMethod implements StatementVisitor {
private boolean isRightSideALambda = false;
private KindOfLambda kindOfLambda;
private HashMap classFiles;
+
+ private int constructorPos = 0;
private ArrayList varsFunInterface = new ArrayList<>();;
// generate bytecode for constructor
public BytecodeGenMethod(String className, String superClass,ResultSet resultSet, Method m, MethodVisitor mv,
HashMap paramsAndLocals, ClassWriter cw, HashMap genericsAndBoundsMethod,
HashMap genericsAndBounds, boolean isInterface, HashMap classFiles,
- SourceFile sf,String path, Block block) {
+ SourceFile sf,String path, Block block, int constructorPos) {
this.className = className;
this.superClass = superClass;
@@ -106,6 +108,7 @@ public class BytecodeGenMethod implements StatementVisitor {
this.classFiles = classFiles;
this.sf = sf;
this.path = path;
+ this.constructorPos = constructorPos;
if(block != null)
this.blockFieldInit = block;
this.m.block.accept(this);
@@ -634,20 +637,20 @@ public class BytecodeGenMethod implements StatementVisitor {
// Desc: (this/nothing)TargetType
String fiMethodDesc = samMethod.accept(new DescriptorToString(resultSet));
mv.visitInvokeDynamicInsn("apply", fiMethodDesc, bootstrap, arg1, arg2, arg3);
-
- MethodVisitor mvLambdaBody = cw.visitMethod(Opcodes.ACC_PRIVATE + staticOrInstance + Opcodes.ACC_SYNTHETIC,
- methodName, newDesc, null, null);
-
- ArrayList usedVars = kindOfLambda.getUsedVars();
-
- new BytecodeGenMethod(lambdaExpression, usedVars,this.resultSet, mvLambdaBody, indexOfFirstParamLam, isInterface,
- classFiles,this.path, lamCounter, sf);
-
- mvLambdaBody.visitMaxs(0, 0);
- mvLambdaBody.visitEnd();
- cw.visitInnerClass("java/lang/invoke/MethodHandles$Lookup", "java/lang/invoke/MethodHandles", "Lookup",
- Opcodes.ACC_PUBLIC + Opcodes.ACC_STATIC + Opcodes.ACC_FINAL);
-
+ if(constructorPos<2) {
+ MethodVisitor mvLambdaBody = cw.visitMethod(Opcodes.ACC_PRIVATE + staticOrInstance + Opcodes.ACC_SYNTHETIC,
+ methodName, newDesc, null, null);
+
+ ArrayList usedVars = kindOfLambda.getUsedVars();
+
+ new BytecodeGenMethod(lambdaExpression, usedVars,this.resultSet, mvLambdaBody, indexOfFirstParamLam, isInterface,
+ classFiles,this.path, lamCounter, sf);
+
+ mvLambdaBody.visitMaxs(0, 0);
+ mvLambdaBody.visitEnd();
+ cw.visitInnerClass("java/lang/invoke/MethodHandles$Lookup", "java/lang/invoke/MethodHandles", "Lookup",
+ Opcodes.ACC_PUBLIC + Opcodes.ACC_STATIC + Opcodes.ACC_FINAL);
+ }
// generateBCForFunN(lambdaExpression, typeErasure);
}
diff --git a/src/main/java/de/dhbwstuttgart/bytecode/descriptor/DescriptorToString.java b/src/main/java/de/dhbwstuttgart/bytecode/descriptor/DescriptorToString.java
index 5464aa91..07471ae1 100644
--- a/src/main/java/de/dhbwstuttgart/bytecode/descriptor/DescriptorToString.java
+++ b/src/main/java/de/dhbwstuttgart/bytecode/descriptor/DescriptorToString.java
@@ -106,7 +106,14 @@ public class DescriptorToString implements DescriptorVisitor{
if(constructor.getGenericsAndBounds().containsKey(fpDesc)){
desc += "L"+constructor.getGenericsAndBounds().get(fpDesc)+ ";";
}else {
- desc += "L"+resultSet.resolveType(fp.getType()).resolvedType.acceptTV(new TypeToDescriptor())+ ";";
+// desc += "L"+resultSet.resolveType(fp.getType()).resolvedType.acceptTV(new TypeToDescriptor())+ ";";
+ String resType = resultSet.resolveType(fp.getType()).resolvedType.acceptTV(new TypeToDescriptor());
+ if(resType.subSequence(0, 4).equals("TPH ")) {
+ // Bound ist immer Object
+ desc += "L"+Type.getInternalName(Object.class)+ ";";
+ } else {
+ desc += "L"+resType+ ";";
+ }
}
}else {
// System.out.println("Cons has NO Gens");
diff --git a/src/main/java/de/dhbwstuttgart/bytecode/utilities/KindOfLambda.java b/src/main/java/de/dhbwstuttgart/bytecode/utilities/KindOfLambda.java
index b897684a..aeefda62 100644
--- a/src/main/java/de/dhbwstuttgart/bytecode/utilities/KindOfLambda.java
+++ b/src/main/java/de/dhbwstuttgart/bytecode/utilities/KindOfLambda.java
@@ -162,7 +162,7 @@ public class KindOfLambda implements StatementVisitor{
@Override
public void visit(UnaryExpr unaryExpr) {
- throw new NotImplementedException();
+
}
@Override
@@ -202,7 +202,8 @@ public class KindOfLambda implements StatementVisitor{
@Override
public void visit(WhileStmt whileStmt) {
- // TODO Auto-generated method stub
+ whileStmt.expr.accept(this);
+ whileStmt.loopBlock.accept(this);
}
diff --git a/src/main/java/de/dhbwstuttgart/bytecode/utilities/Simplify.java b/src/main/java/de/dhbwstuttgart/bytecode/utilities/Simplify.java
index 49b1b4f4..d19d38dc 100644
--- a/src/main/java/de/dhbwstuttgart/bytecode/utilities/Simplify.java
+++ b/src/main/java/de/dhbwstuttgart/bytecode/utilities/Simplify.java
@@ -174,9 +174,11 @@ public class Simplify {
allCons.addAll(result.keySet());
if(!allCons.isEmpty() && allCons.size()<2) {
-
- if(!result.containsKey(allCons.get(0)))
- result.put(allCons.get(0), null);
+ TPHConstraint cons = allCons.get(0);
+ if(!result.containsKey(cons)) {
+ result.put(cons, null);
+ result.put(new ExtendsConstraint(cons.getRight(), Type.getInternalName(Object.class), Relation.EXTENDS), null);
+ }
return result;
}
diff --git a/src/main/java/de/dhbwstuttgart/core/JavaTXCompiler.java b/src/main/java/de/dhbwstuttgart/core/JavaTXCompiler.java
index 8729dd3e..c7959005 100644
--- a/src/main/java/de/dhbwstuttgart/core/JavaTXCompiler.java
+++ b/src/main/java/de/dhbwstuttgart/core/JavaTXCompiler.java
@@ -122,7 +122,9 @@ public class JavaTXCompiler {
TypeUnify unify = new TypeUnify();
Set> results = new HashSet<>();
try {
- FileWriter logFile = new FileWriter(new File(System.getProperty("user.dir")+"/test/logFiles/"+"log"));
+ File logPath = new File(System.getProperty("user.dir")+"/target/logFiles/");
+ logPath.mkdirs();
+ FileWriter logFile = new FileWriter(new File(logPath, "log"));
logFile.write("FC:\\" + finiteClosure.toString()+"\n");
for(SourceFile sf : this.sourceFiles.values()) {
logFile.write(ASTTypePrinter.print(sf));
@@ -223,7 +225,9 @@ public class JavaTXCompiler {
logFile.write("PLACEHOLDERS: " + PlaceholderType.EXISTING_PLACEHOLDERS);
logFile.flush();
}
- catch (IOException e) { }
+ catch (IOException e) {
+ e.printStackTrace();
+ }
return results.stream().map((unifyPairs ->
new ResultSet(UnifyTypeFactory.convert(unifyPairs, generateTPHMap(cons))))).collect(Collectors.toList());
}
diff --git a/src/test/java/asp/typeinference/ASPTest.java b/src/test/java/asp/typeinference/ASPTest.java
index 632d288e..5a43b6a9 100644
--- a/src/test/java/asp/typeinference/ASPTest.java
+++ b/src/test/java/asp/typeinference/ASPTest.java
@@ -20,7 +20,7 @@ import java.util.Set;
public class ASPTest {
- public static final String rootDirectory = System.getProperty("user.dir")+"/test/javFiles/";
+ public static final String rootDirectory = System.getProperty("user.dir")+"/src/test/resources/javFiles/";
private static final List filesToTest = new ArrayList<>();
protected File fileToTest = null;
diff --git a/src/test/java/bytecode/FacultyTest.java b/src/test/java/bytecode/FacultyTest.java
index dd7bb51e..44a0e1c5 100644
--- a/src/test/java/bytecode/FacultyTest.java
+++ b/src/test/java/bytecode/FacultyTest.java
@@ -27,7 +27,7 @@ public class FacultyTest {
path = System.getProperty("user.dir")+"/src/test/resources/bytecode/javFiles/Faculty.jav";
fileToTest = new File(path);
compiler = new JavaTXCompiler(fileToTest);
- compiler.generateBytecode(System.getProperty("user.dir")+"//src/test/resources/testBytecode/generatedBC/");
+ compiler.generateBytecode(System.getProperty("user.dir")+"/src/test/resources/testBytecode/generatedBC/");
pathToClassFile = System.getProperty("user.dir")+"/src/test/resources/testBytecode/generatedBC/";
loader = new URLClassLoader(new URL[] {new URL("file://"+pathToClassFile)});
classToTest = loader.loadClass("Faculty");
diff --git a/src/test/java/bytecode/FieldTphConsMethTest.java b/src/test/java/bytecode/FieldTphConsMethTest.java
new file mode 100644
index 00000000..ecf992d0
--- /dev/null
+++ b/src/test/java/bytecode/FieldTphConsMethTest.java
@@ -0,0 +1,49 @@
+package bytecode;
+
+import static org.junit.Assert.*;
+
+import java.io.File;
+import java.lang.reflect.Field;
+import java.lang.reflect.Method;
+import java.net.URL;
+import java.net.URLClassLoader;
+
+import org.junit.BeforeClass;
+import org.junit.Test;
+
+import de.dhbwstuttgart.core.JavaTXCompiler;
+
+public class FieldTphConsMethTest {
+
+ private static String path;
+ private static File fileToTest;
+ private static JavaTXCompiler compiler;
+ private static ClassLoader loader;
+ private static Class> classToTest;
+ private static String pathToClassFile;
+ private static Object instanceOfClass;
+
+ @BeforeClass
+ public static void setUpBeforeClass() throws Exception {
+ path = System.getProperty("user.dir")+"/src/test/resources/bytecode/javFiles/FieldTphConsMeth.jav";
+ fileToTest = new File(path);
+ compiler = new JavaTXCompiler(fileToTest);
+ compiler.generateBytecode(System.getProperty("user.dir")+"/src/test/resources/testBytecode/generatedBC/");
+ pathToClassFile = System.getProperty("user.dir")+"/src/test/resources/testBytecode/generatedBC/";
+ loader = new URLClassLoader(new URL[] {new URL("file://"+pathToClassFile)});
+ classToTest = loader.loadClass("FieldTphConsMeth");
+ instanceOfClass = classToTest.getDeclaredConstructor().newInstance();
+ }
+
+ @Test
+ public void test() throws Exception {
+ Field a = classToTest.getDeclaredField("a");
+ a.setAccessible(true);
+
+ Method m = classToTest.getDeclaredMethod("m", Object.class);
+ Object result = m.invoke(instanceOfClass, 42);
+
+ assertEquals(42,result);
+ }
+
+}
diff --git a/src/test/java/bytecode/IdTest.java b/src/test/java/bytecode/IdTest.java
new file mode 100644
index 00000000..d8392e55
--- /dev/null
+++ b/src/test/java/bytecode/IdTest.java
@@ -0,0 +1,38 @@
+package bytecode;
+
+import static org.junit.Assert.*;
+
+import java.io.File;
+import java.lang.reflect.Field;
+import java.net.URL;
+import java.net.URLClassLoader;
+
+import org.junit.BeforeClass;
+import org.junit.Test;
+
+import de.dhbwstuttgart.core.JavaTXCompiler;
+
+public class IdTest {
+
+ private static String path;
+ private static File fileToTest;
+ private static JavaTXCompiler compiler;
+ private static ClassLoader loader;
+ private static Class> classToTest;
+ private static String pathToClassFile;
+ private static Object instanceOfClass;
+
+
+ @Test
+ public void test() throws Exception {
+ path = System.getProperty("user.dir")+"/src/test/resources/bytecode/javFiles/Id.jav";
+ fileToTest = new File(path);
+ compiler = new JavaTXCompiler(fileToTest);
+ compiler.generateBytecode(System.getProperty("user.dir")+"/src/test/resources/testBytecode/generatedBC/");
+ pathToClassFile = System.getProperty("user.dir")+"/src/test/resources/testBytecode/generatedBC/";
+ loader = new URLClassLoader(new URL[] {new URL("file://"+pathToClassFile)});
+ classToTest = loader.loadClass("Id");
+ instanceOfClass = classToTest.getDeclaredConstructor().newInstance();
+ }
+
+}
diff --git a/src/test/java/bytecode/Tph6Test.java b/src/test/java/bytecode/Tph6Test.java
new file mode 100644
index 00000000..da368151
--- /dev/null
+++ b/src/test/java/bytecode/Tph6Test.java
@@ -0,0 +1,45 @@
+package bytecode;
+
+import static org.junit.Assert.*;
+
+import java.io.File;
+import java.lang.reflect.Method;
+import java.net.URL;
+import java.net.URLClassLoader;
+
+import org.junit.BeforeClass;
+import org.junit.Test;
+
+import de.dhbwstuttgart.core.JavaTXCompiler;
+
+public class Tph6Test {
+
+ private static String path;
+ private static File fileToTest;
+ private static JavaTXCompiler compiler;
+ private static ClassLoader loader;
+ private static Class> classToTest;
+ private static String pathToClassFile;
+ private static Object instanceOfClass;
+
+ @BeforeClass
+ public static void setUpBeforeClass() throws Exception {
+ path = System.getProperty("user.dir")+"/src/test/resources/bytecode/javFiles/Tph6.jav";
+ fileToTest = new File(path);
+ compiler = new JavaTXCompiler(fileToTest);
+ pathToClassFile = System.getProperty("user.dir")+"/src/test/resources/testBytecode/generatedBC/";
+ compiler.generateBytecode(pathToClassFile);
+ loader = new URLClassLoader(new URL[] {new URL("file://"+pathToClassFile)});
+ classToTest = loader.loadClass("Tph6");
+ instanceOfClass = classToTest.getDeclaredConstructor().newInstance();
+ }
+
+ @Test
+ public void test() throws Exception {
+// Method m = classToTest.getDeclaredMethod("m", Object.class, Object.class, Object.class);
+ Method m = classToTest.getDeclaredMethod("m", Object.class, Object.class);
+// Object result = m.invoke(instanceOfClass, "xx",2,3);
+
+ //assertEquals(2,result);
+ }
+}
diff --git a/src/test/java/javFiles/AddLong.jav b/src/test/java/javFiles/AddLong.jav
new file mode 100644
index 00000000..d6d47e9f
--- /dev/null
+++ b/src/test/java/javFiles/AddLong.jav
@@ -0,0 +1,9 @@
+import java.lang.Integer;
+import java.lang.Long;
+
+public class AddLong{
+ Long add(Integer a, Long b) {
+ Long c = a+b;
+ return c;
+ }
+}
\ No newline at end of file
diff --git a/src/test/java/javFiles/EmptyClass.jav b/src/test/java/javFiles/EmptyClass.jav
new file mode 100644
index 00000000..8160d7da
--- /dev/null
+++ b/src/test/java/javFiles/EmptyClass.jav
@@ -0,0 +1,3 @@
+public class EmptyClass{
+
+}
\ No newline at end of file
diff --git a/src/test/java/javFiles/EmptyMethod.jav b/src/test/java/javFiles/EmptyMethod.jav
new file mode 100644
index 00000000..dd28fc69
--- /dev/null
+++ b/src/test/java/javFiles/EmptyMethod.jav
@@ -0,0 +1,37 @@
+public class EmptyMethod{
+ static String s1 ="";
+ String s2;
+ public void m1(){
+ //String s = "";
+ System.out.println("test");
+ //Integer ab = Math.abs(1);
+ //Math.abs(1);
+ //String lV = "local";
+ //s1 = "1";
+ //s1.concat("2");
+ s2 = s1;
+ //m2();
+ Clazz i = new Clazz();
+ Integer i = new Integer(1);
+ }
+
+ public void m2(){}
+}
+
+class Clazz{}
+/*
+public class EmptyMethod2{
+ public static test = "5";
+ public void m1(Integer i, String j, Boolean b){
+ //String s = "";
+ EmptyMethod em = new EmptyMethod();
+ em.m1();
+ em.s1 = "";
+ //Integer ab = Math.abs(1);
+ //Math.abs(1);
+ //String lV = "local";
+ //s1 = "1";
+ //s1.concat("2");
+ //s2 = s1;
+ }
+}*/
\ No newline at end of file
diff --git a/src/test/java/javFiles/Expressions.jav b/src/test/java/javFiles/Expressions.jav
new file mode 100644
index 00000000..e2e992a1
--- /dev/null
+++ b/src/test/java/javFiles/Expressions.jav
@@ -0,0 +1,8 @@
+class Expressions{
+
+void test(){
+ var x = 2;
+ x = x + 2;
+}
+
+}
\ No newline at end of file
diff --git a/src/test/java/javFiles/FC_Matrix.jav b/src/test/java/javFiles/FC_Matrix.jav
new file mode 100644
index 00000000..75ead472
--- /dev/null
+++ b/src/test/java/javFiles/FC_Matrix.jav
@@ -0,0 +1,10 @@
+import java.util.Vector;
+
+class Matrix extends Vector> {
+
+ methode(m) {
+ m.add(1);
+ Matrix i;
+ methode(i);
+ }
+ }
diff --git a/src/test/java/javFiles/Faculty.jav b/src/test/java/javFiles/Faculty.jav
new file mode 100644
index 00000000..ca539add
--- /dev/null
+++ b/src/test/java/javFiles/Faculty.jav
@@ -0,0 +1,15 @@
+import java.lang.Integer;
+
+class Faculty {
+
+ Integer mul(Integer x, Integer y) {
+ return x;
+ }
+
+ m () {
+ var fact = (Integer x) -> {
+ return mul(x, fact.apply(x));
+ };
+ return fact;
+ }
+}
\ No newline at end of file
diff --git a/src/test/java/javFiles/FacultyIf.jav b/src/test/java/javFiles/FacultyIf.jav
new file mode 100644
index 00000000..3c368923
--- /dev/null
+++ b/src/test/java/javFiles/FacultyIf.jav
@@ -0,0 +1,17 @@
+import java.lang.Integer;
+
+class Faculty {
+
+ m () {
+
+ var fact = (Integer x) -> {
+ if (x == 1) {
+ return x;
+ }
+ else {
+ return x * (fact.apply(x-1));
+ }
+ };
+ return fact;
+ }
+}
diff --git a/src/test/java/javFiles/FacultyTyped.jav b/src/test/java/javFiles/FacultyTyped.jav
new file mode 100644
index 00000000..089d2f33
--- /dev/null
+++ b/src/test/java/javFiles/FacultyTyped.jav
@@ -0,0 +1,19 @@
+import java.lang.Integer;
+
+class Faculty {
+
+ Integer mul(Integer x, Integer y) {
+ return x;
+ }
+
+ Fun1 m () {
+ var fact = (Integer x) -> {
+ return mul(x, fact.apply(x));
+ };
+ return fact;
+ }
+}
+
+interface Fun1{
+ B apply(A a);
+}
\ No newline at end of file
diff --git a/src/test/java/javFiles/Fields.jav b/src/test/java/javFiles/Fields.jav
new file mode 100644
index 00000000..cd2add71
--- /dev/null
+++ b/src/test/java/javFiles/Fields.jav
@@ -0,0 +1,11 @@
+import java.lang.String;
+
+class Fields{
+test2 = "test";
+test;
+m(){
+ var test3;
+ return test;
+}
+
+}
\ No newline at end of file
diff --git a/src/test/java/javFiles/Generics.jav b/src/test/java/javFiles/Generics.jav
new file mode 100644
index 00000000..dd7b4eba
--- /dev/null
+++ b/src/test/java/javFiles/Generics.jav
@@ -0,0 +1,22 @@
+import java.lang.String;
+
+class Generics {
+ // A mt1(A a, B b){
+ B mt1(B a, B b){
+ return mt1(a, a);
+ }
+}
+
+class Test {
+ methode(String s){
+ return new Generics().mt1(s,s);
+ }
+}
+
+/*
+Problem:
+auto test = new List();
+auto test2 = new List();
+... //code, welcher möglicherweise test und test2 vertauscht
+test.add("hallo");
+*/
\ No newline at end of file
diff --git a/src/test/java/javFiles/IfTest.jav b/src/test/java/javFiles/IfTest.jav
new file mode 100644
index 00000000..1e1141df
--- /dev/null
+++ b/src/test/java/javFiles/IfTest.jav
@@ -0,0 +1,14 @@
+import java.lang.Integer;
+import java.lang.Boolean;
+import java.lang.Object;
+
+public class IfTest{
+ Object m1(b) {
+ Integer i;
+ if(b) {
+ return i;
+ }else{
+ return b;
+ }
+ }
+}
\ No newline at end of file
diff --git a/src/test/java/javFiles/Import.jav b/src/test/java/javFiles/Import.jav
new file mode 100644
index 00000000..c48082ba
--- /dev/null
+++ b/src/test/java/javFiles/Import.jav
@@ -0,0 +1,8 @@
+import java.util.Vector;
+
+class Import {
+ void methode(){
+ Vector v;
+ v.add(v);
+ }
+}
\ No newline at end of file
diff --git a/src/test/java/javFiles/Lambda.jav b/src/test/java/javFiles/Lambda.jav
new file mode 100644
index 00000000..5bd67a0b
--- /dev/null
+++ b/src/test/java/javFiles/Lambda.jav
@@ -0,0 +1,13 @@
+
+class Apply { }
+
+public class Lambda {
+
+ m () {
+ var lam1 = (x) -> {
+ return x;
+ };
+ return lam1.apply(new Apply());
+ }
+}
+
diff --git a/src/test/java/javFiles/Lambda2.jav b/src/test/java/javFiles/Lambda2.jav
new file mode 100644
index 00000000..cf1e910b
--- /dev/null
+++ b/src/test/java/javFiles/Lambda2.jav
@@ -0,0 +1,33 @@
+import java.lang.String;
+
+public class Lambda2
+{
+ public static void main(List args){
+ var listOfStrings = new List();
+ var listOfObjects;
+ listOfObjects = map(listOfStrings, (a) -> a);
+}
+
+public map(a , b){
+ b.apply(a);
+ return a;
+}
+
+/*
+public static List map(List input, Function func) {
+ List output;
+ output = new List();
+ output.add(func.apply(input.get()));
+ return output;
+}
+*/
+}
+
+class List{
+ A get();
+ void add(A);
+}
+
+class Function{
+ B apply(A a);
+}
\ No newline at end of file
diff --git a/src/test/java/javFiles/Lambda3.jav b/src/test/java/javFiles/Lambda3.jav
new file mode 100644
index 00000000..9e22f302
--- /dev/null
+++ b/src/test/java/javFiles/Lambda3.jav
@@ -0,0 +1,24 @@
+import java.lang.String;
+
+public class Lambda2
+{
+ /*
+ public static List map(List extends A> input,
+ Function super A, ? extends A> func){
+ input.add(func.apply(input.get()));
+ }
+ */
+ public map(input,func){
+ input.add(func.apply(input.get()));
+ return map(new List(), func);
+ }
+}
+
+class List{
+ A get();
+ void add(A);
+}
+
+class Function{
+ B apply(A a);
+}
\ No newline at end of file
diff --git a/src/test/java/javFiles/LambdaField.jav b/src/test/java/javFiles/LambdaField.jav
new file mode 100644
index 00000000..4eb53738
--- /dev/null
+++ b/src/test/java/javFiles/LambdaField.jav
@@ -0,0 +1,6 @@
+public class LambdaField {
+
+ f = x -> x;
+
+}
+
diff --git a/src/test/java/javFiles/LambdaRunnable.jav b/src/test/java/javFiles/LambdaRunnable.jav
new file mode 100644
index 00000000..37924ea2
--- /dev/null
+++ b/src/test/java/javFiles/LambdaRunnable.jav
@@ -0,0 +1,14 @@
+import java.lang.Runnable;
+import java.lang.String;
+import java.lang.System;
+
+public class LamRunnable{
+
+ public LamRunnable(){
+
+
+ Runnable lam = () -> {System.out.println("lambda");};
+ lam.run();
+ }
+}
+
diff --git a/src/test/java/javFiles/ListenerOverload.jav b/src/test/java/javFiles/ListenerOverload.jav
new file mode 100644
index 00000000..e1a8d65d
--- /dev/null
+++ b/src/test/java/javFiles/ListenerOverload.jav
@@ -0,0 +1,20 @@
+import java.lang.Integer;
+import java.lang.String;
+
+class ListenerOverload{
+
+call(p){
+ call(p.left);
+ call(p.right);
+}
+
+call(Integer i){}
+
+call(String s){}
+
+}
+
+class Pair{
+ A left;
+ B right;
+}
\ No newline at end of file
diff --git a/src/test/java/javFiles/Matrix.jav b/src/test/java/javFiles/Matrix.jav
new file mode 100644
index 00000000..5e1eac08
--- /dev/null
+++ b/src/test/java/javFiles/Matrix.jav
@@ -0,0 +1,28 @@
+import java.util.Vector;
+import java.lang.Integer;
+
+class Matrix extends Vector> {
+ Integer mul1(Integer x, Integer y) { return x;}
+ Integer add1(Integer x, Integer y) { return x;}
+ mul(m) {
+ var ret = new Matrix();
+ var i = 0;
+ while(i < size()) {
+ var v1 = this.elementAt(i);
+ var v2 = new Vector();
+ var j = 0;
+ while(j < v1.size()) {
+ var erg = 0;
+ var k = 0;
+ while(k < v1.size()) {
+ erg = erg + v1.elementAt(k) * m.elementAt(k).elementAt(j);
+ //erg = add1(erg, mul1(v1.elementAt(k),
+ // m.elementAt(k).elementAt(j)));
+ k++; }
+ v2.addElement(new Integer(erg));
+ j++; }
+ ret.addElement(v2);
+ i++; }
+ return ret;
+ }
+}
diff --git a/src/test/java/javFiles/Meth_Gen.jav b/src/test/java/javFiles/Meth_Gen.jav
new file mode 100644
index 00000000..056dd82f
--- /dev/null
+++ b/src/test/java/javFiles/Meth_Gen.jav
@@ -0,0 +1,11 @@
+class Meth_Gen {
+
+ m1(x, y) {
+ m2(x);
+ x = y;
+ }
+
+ m2(y) {
+ m1(y, y);
+ }
+}
\ No newline at end of file
diff --git a/src/test/java/javFiles/MethodCallGenerics.jav b/src/test/java/javFiles/MethodCallGenerics.jav
new file mode 100644
index 00000000..0d02509b
--- /dev/null
+++ b/src/test/java/javFiles/MethodCallGenerics.jav
@@ -0,0 +1,14 @@
+import java.lang.String;
+
+class Generics {
+ // A mt1(A a, B b){
+ B mt1(B a, B b){
+ return mt1(a, a);
+ }
+}
+
+class Test {
+ methode(String s){
+ return new Generics().mt1(s,s);
+ }
+}
diff --git a/src/test/java/javFiles/Methods.jav b/src/test/java/javFiles/Methods.jav
new file mode 100644
index 00000000..e45d9830
--- /dev/null
+++ b/src/test/java/javFiles/Methods.jav
@@ -0,0 +1,17 @@
+
+class Methods {
+ mt4(a,b,c) { return a.add(b).sub(c) ; }
+
+ mt1(a) {return a;}
+
+ mt2(a) {return a.f; }
+
+ mt3(a) {return a.add(); }
+}
+
+class Test {
+ java.lang.Object f;
+ add(){}
+ add(b){return b;}
+ sub(b){}
+}
\ No newline at end of file
diff --git a/src/test/java/javFiles/MethodsEasy.jav b/src/test/java/javFiles/MethodsEasy.jav
new file mode 100644
index 00000000..ee6f9daf
--- /dev/null
+++ b/src/test/java/javFiles/MethodsEasy.jav
@@ -0,0 +1,7 @@
+
+class Methods {
+ mt4(a,b,c) { return a.mt3(b).mt3(c) ; }
+
+ mt3(a) {return a.mt3(a); }
+}
+
diff --git a/src/test/java/javFiles/Op1.jav b/src/test/java/javFiles/Op1.jav
new file mode 100644
index 00000000..800f58b8
--- /dev/null
+++ b/src/test/java/javFiles/Op1.jav
@@ -0,0 +1,11 @@
+public class Op1{
+ public Op1() {
+
+ Runnable lam = () -> {
+ String test = "";
+ String b = "b";
+ test = b;
+ System.out.println(test);};
+ //lam.run();
+ }
+}
\ No newline at end of file
diff --git a/src/test/java/javFiles/Package.jav b/src/test/java/javFiles/Package.jav
new file mode 100644
index 00000000..bbc1e51d
--- /dev/null
+++ b/src/test/java/javFiles/Package.jav
@@ -0,0 +1,5 @@
+package strucType.input;
+
+class Neu
+{
+}
\ No newline at end of file
diff --git a/src/test/java/javFiles/Sorting.jav b/src/test/java/javFiles/Sorting.jav
new file mode 100644
index 00000000..04ef23e5
--- /dev/null
+++ b/src/test/java/javFiles/Sorting.jav
@@ -0,0 +1,8 @@
+import java.util.List;
+import java.util.Collection;
+
+class Sorting{
+ void merge(a, b){
+ a.addAll(b);
+ }
+}
\ No newline at end of file
diff --git a/src/test/java/javFiles/Subclass.jav b/src/test/java/javFiles/Subclass.jav
new file mode 100644
index 00000000..fe6e9208
--- /dev/null
+++ b/src/test/java/javFiles/Subclass.jav
@@ -0,0 +1,6 @@
+public class Subclass extends Superclass {
+
+ public void printMethod() {
+ super.printMethod();
+ }
+}
\ No newline at end of file
diff --git a/src/test/java/javFiles/Superclass.jav b/src/test/java/javFiles/Superclass.jav
new file mode 100644
index 00000000..d58089de
--- /dev/null
+++ b/src/test/java/javFiles/Superclass.jav
@@ -0,0 +1,6 @@
+public class Superclass {
+
+ public void printMethod() {
+ System.out.println("Printed in Superclass.");
+ }
+}
diff --git a/src/test/java/javFiles/Vector.jav b/src/test/java/javFiles/Vector.jav
new file mode 100644
index 00000000..5c21cfff
--- /dev/null
+++ b/src/test/java/javFiles/Vector.jav
@@ -0,0 +1,23 @@
+import java.util.ArrayList;
+import java.util.Vector;
+import java.lang.Object;
+
+class MyVector{
+
+id(x){
+ Object i;
+ x.add(i);
+ x.add(i);
+ x.add(i);
+ x.add(i);
+ x.add(i);
+ x.add(i);
+ x.add(i);
+ x.add(i);
+ x.add(i);
+ x.add(i);
+ x.add(i);
+ x.add(i);
+ return x;
+}
+}
\ No newline at end of file
diff --git a/src/test/java/javFiles/fc.jav b/src/test/java/javFiles/fc.jav
new file mode 100644
index 00000000..a3278cbc
--- /dev/null
+++ b/src/test/java/javFiles/fc.jav
@@ -0,0 +1,18 @@
+import java.util.List;
+
+class Test{
+ methode(param1, param2, param3) {
+ param2.add(param3);
+ return param1.meth(param2);
+ }
+}
+
+interface Klasse1{
+ Klasse1 meth(List p);
+ Klasse1 meth(Klasse2 p);
+}
+
+interface Klasse2{
+ Klasse1 meth(Klasse1 p);
+ Klasse2 meth(Klasse2 p);
+}
\ No newline at end of file
diff --git a/src/test/java/javFiles/mathStruc.jav b/src/test/java/javFiles/mathStruc.jav
new file mode 100644
index 00000000..93f901ce
--- /dev/null
+++ b/src/test/java/javFiles/mathStruc.jav
@@ -0,0 +1,13 @@
+
+class mathStruc {
+
+mathStruc(A a) { }
+
+A model(){ A a; return a; }
+
+methode(){
+var innerOp = o -> ms ->
+ new mathStruc(o.apply(this.model(),ms.model()));
+ return innerOp;
+ }
+}
\ No newline at end of file
diff --git a/src/test/java/javFiles/test.jav b/src/test/java/javFiles/test.jav
new file mode 100644
index 00000000..303d167a
--- /dev/null
+++ b/src/test/java/javFiles/test.jav
@@ -0,0 +1,15 @@
+class Test{
+ methode(param1, param2, param3) {
+ return param1.meth(param2.meth(param3));
+ }
+}
+
+interface Klasse1{
+ Klasse1 meth(Klasse1 p);
+ Klasse1 meth(Klasse2 p);
+}
+
+interface Klasse2{
+ Klasse1 meth(Klasse1 p);
+ Klasse2 meth(Klasse2 p);
+}
\ No newline at end of file
diff --git a/src/test/java/javFiles/test1.jav b/src/test/java/javFiles/test1.jav
new file mode 100644
index 00000000..4b34948e
--- /dev/null
+++ b/src/test/java/javFiles/test1.jav
@@ -0,0 +1,7 @@
+class Faculty {
+
+ int a;
+ m (int x) {
+ return a+x;
+ }
+}
diff --git a/src/test/java/log4jTesting.xml b/src/test/java/log4jTesting.xml
new file mode 100755
index 00000000..dc30c245
--- /dev/null
+++ b/src/test/java/log4jTesting.xml
@@ -0,0 +1,24 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/src/test/java/typeinference/JavaTXCompilerTest.java b/src/test/java/typeinference/JavaTXCompilerTest.java
index 233e8b24..26f5db09 100644
--- a/src/test/java/typeinference/JavaTXCompilerTest.java
+++ b/src/test/java/typeinference/JavaTXCompilerTest.java
@@ -22,7 +22,7 @@ import java.util.Set;
public class JavaTXCompilerTest {
- public static final String rootDirectory = System.getProperty("user.dir")+"/test/javFiles/";
+ public static final String rootDirectory = System.getProperty("user.dir")+"/src/test/resources/javFiles/";
@Test
public void finiteClosure() throws IOException, ClassNotFoundException {
execute(new File(rootDirectory+"fc.jav"));
diff --git a/src/test/java/typeinference/Meth_GenTest.java b/src/test/java/typeinference/Meth_GenTest.java
index f5e64f9f..d879408c 100644
--- a/src/test/java/typeinference/Meth_GenTest.java
+++ b/src/test/java/typeinference/Meth_GenTest.java
@@ -22,7 +22,7 @@ import java.util.Set;
public class Meth_GenTest {
- public static final String rootDirectory = System.getProperty("user.dir")+"/test/javFiles/";
+ public static final String rootDirectory = System.getProperty("user.dir")+"/src/test/resources/javFiles/";
/*
@Test
public void finiteClosure() throws IOException, ClassNotFoundException {
diff --git a/src/test/java/typeinference/UnifyTest.java b/src/test/java/typeinference/UnifyTest.java
index f8b6ec2e..38af248e 100644
--- a/src/test/java/typeinference/UnifyTest.java
+++ b/src/test/java/typeinference/UnifyTest.java
@@ -22,7 +22,7 @@ import java.util.Set;
public class UnifyTest {
- public static final String rootDirectory = System.getProperty("user.dir")+"/test/javFiles/";
+ public static final String rootDirectory = System.getProperty("user.dir")+"/src/test/resources/javFiles/";
/*
@Test
public void finiteClosure() throws IOException, ClassNotFoundException {
diff --git a/src/test/resources/bytecode/javFiles/FieldTphConsMeth.jav b/src/test/resources/bytecode/javFiles/FieldTphConsMeth.jav
new file mode 100644
index 00000000..e749bb4f
--- /dev/null
+++ b/src/test/resources/bytecode/javFiles/FieldTphConsMeth.jav
@@ -0,0 +1,11 @@
+public class FieldTphConsMeth {
+
+ a;
+ public FieldTphConsMeth(c) {
+ a = m(c);
+ }
+
+ m(b) {
+ return b;
+ }
+}
\ No newline at end of file
diff --git a/src/test/resources/bytecode/javFiles/Id.jav b/src/test/resources/bytecode/javFiles/Id.jav
new file mode 100644
index 00000000..6cb5d4b0
--- /dev/null
+++ b/src/test/resources/bytecode/javFiles/Id.jav
@@ -0,0 +1,6 @@
+public class Id {
+
+ id(b){
+ return b;
+ }
+}
\ No newline at end of file
diff --git a/src/test/resources/bytecode/javFiles/Tph6.jav b/src/test/resources/bytecode/javFiles/Tph6.jav
new file mode 100644
index 00000000..2f9e4294
--- /dev/null
+++ b/src/test/resources/bytecode/javFiles/Tph6.jav
@@ -0,0 +1,14 @@
+public class Tph6 {
+// m(a,b,c){
+// a = c;
+// b = c;
+// return a;
+// }
+
+ m(x,y){
+ var c = m2(y);
+ c = m2(x);
+ }
+
+ m2(y) { return y; }
+}
diff --git a/src/test/resources/testBytecode/Field.java b/src/test/resources/testBytecode/Field.java
new file mode 100644
index 00000000..50002082
--- /dev/null
+++ b/src/test/resources/testBytecode/Field.java
@@ -0,0 +1,6 @@
+public class Field{
+ public void m(){
+ MethFieldVar mF = new MethFieldVar();
+ mF.s1 = "Field S1";
+ }
+}
diff --git a/src/test/resources/testBytecode/Import.java b/src/test/resources/testBytecode/Import.java
new file mode 100644
index 00000000..f3519acb
--- /dev/null
+++ b/src/test/resources/testBytecode/Import.java
@@ -0,0 +1,8 @@
+import java.util.Vector;
+
+class Import {
+ void methode(){
+ Vector v = new Vector();
+ v.add(v);
+ }
+}
diff --git a/src/test/resources/testBytecode/Lam1.java b/src/test/resources/testBytecode/Lam1.java
new file mode 100644
index 00000000..142feed2
--- /dev/null
+++ b/src/test/resources/testBytecode/Lam1.java
@@ -0,0 +1,10 @@
+import java.util.function.Function;
+public class Lam1{
+ public Lam1() {
+ Function fun = (x) -> x+"1";
+ fun.apply("2");
+
+ Runnable lam = () -> System.out.println("lambda");
+ lam.run();
+ }
+}
diff --git a/src/test/resources/testBytecode/LamRun.java b/src/test/resources/testBytecode/LamRun.java
new file mode 100644
index 00000000..fdaf0852
--- /dev/null
+++ b/src/test/resources/testBytecode/LamRun.java
@@ -0,0 +1,8 @@
+public class LamRun{
+
+ public void mRun(){
+
+ Runnable lam = () -> System.out.println("lambda");
+ lam.run();
+ }
+}
diff --git a/src/test/resources/testBytecode/MethFieldVar.java b/src/test/resources/testBytecode/MethFieldVar.java
new file mode 100644
index 00000000..74086a01
--- /dev/null
+++ b/src/test/resources/testBytecode/MethFieldVar.java
@@ -0,0 +1,38 @@
+public class MethFieldVar{
+ String s1;// = "";
+ String s2;
+
+/* public void meth(Integer i, String j, Boolean b){
+ //String local = "a";
+ //int localL = local.length();
+ //int l = s.length();
+ String s = null;
+ //s = "";
+ //return s.length();//l+localL;
+ }
+*/
+ public void mm(){
+// return "mm";
+ }
+ public void m2(){
+ System.out.println("");
+ // Math.abs(1);
+ // String lV = "local";
+ // s1 = "1";
+ // s1.concat("2");
+ s2 = s1;
+
+ mm();
+
+ Clazz i = new Clazz();
+
+ Runnable lam = ()->{
+ String test = "";
+ String b = "b";
+ test = b;
+ System.out.println(test);
+ };
+ }
+}
+
+class Clazz{}
diff --git a/src/test/resources/testBytecode/Subclass.java b/src/test/resources/testBytecode/Subclass.java
new file mode 100644
index 00000000..3e8b5853
--- /dev/null
+++ b/src/test/resources/testBytecode/Subclass.java
@@ -0,0 +1,6 @@
+public class Subclass extends Superclass {
+
+ public void printMethod() {
+ super.printMethod();
+ }
+}
diff --git a/src/test/resources/testBytecode/SuperTest.java b/src/test/resources/testBytecode/SuperTest.java
new file mode 100644
index 00000000..1b6ac268
--- /dev/null
+++ b/src/test/resources/testBytecode/SuperTest.java
@@ -0,0 +1,14 @@
+public class Superclass {
+
+ public void printMethod() {
+ System.out.println("Printed in Superclass.");
+ }
+}
+
+public class Subclass extends Superclass {
+
+ public void printMethod() {
+ super.printMethod();
+
+ }
+}
diff --git a/src/test/resources/testBytecode/Superclass.java b/src/test/resources/testBytecode/Superclass.java
new file mode 100644
index 00000000..d58089de
--- /dev/null
+++ b/src/test/resources/testBytecode/Superclass.java
@@ -0,0 +1,6 @@
+public class Superclass {
+
+ public void printMethod() {
+ System.out.println("Printed in Superclass.");
+ }
+}
diff --git a/src/test/resources/testBytecode/TestMyTest.java b/src/test/resources/testBytecode/TestMyTest.java
new file mode 100644
index 00000000..e1305f76
--- /dev/null
+++ b/src/test/resources/testBytecode/TestMyTest.java
@@ -0,0 +1,11 @@
+class TestMyTest{
+public static void main(String[] a){
+ //test1
+ //new TestClass();
+ //test if statement
+ //new TestIf(new Boolean(true));
+ // test lambda
+ //new TestClass();
+ new LamRun();
+}
+}
diff --git a/src/test/resources/testBytecode/public b/src/test/resources/testBytecode/public
new file mode 100644
index 00000000..8b137891
--- /dev/null
+++ b/src/test/resources/testBytecode/public
@@ -0,0 +1 @@
+
diff --git a/src/test/resources/testBytecode/testF.java b/src/test/resources/testBytecode/testF.java
new file mode 100644
index 00000000..fa4a50b7
--- /dev/null
+++ b/src/test/resources/testBytecode/testF.java
@@ -0,0 +1,5 @@
+public class testTets(){
+ public static void main(String[] args){
+ new tetsF();
+ }
+}
diff --git a/src/test/resources/testBytecode/testTets.java b/src/test/resources/testBytecode/testTets.java
new file mode 100644
index 00000000..4f95cbc0
--- /dev/null
+++ b/src/test/resources/testBytecode/testTets.java
@@ -0,0 +1,5 @@
+public class testTets{
+ public static void main(String[] args){
+ new TetsF();
+ }
+}
diff --git a/src/test/resources/testBytecode/testTetsF.java b/src/test/resources/testBytecode/testTetsF.java
new file mode 100644
index 00000000..fa4a50b7
--- /dev/null
+++ b/src/test/resources/testBytecode/testTetsF.java
@@ -0,0 +1,5 @@
+public class testTets(){
+ public static void main(String[] args){
+ new tetsF();
+ }
+}