Compare commits
3 Commits
e354838491
...
ebd6a00a39
Author | SHA1 | Date | |
---|---|---|---|
ebd6a00a39 | |||
f57d89c966 | |||
f9188e65ca |
1
pom.xml
1
pom.xml
@ -69,6 +69,7 @@ http://maven.apache.org/maven-v4_0_0.xsd">
|
||||
<trimStackTrace>true</trimStackTrace>
|
||||
<excludes>
|
||||
<exclude>**/JavaTXCompilerTest.java</exclude>
|
||||
<exclude>**/AllgemeinTest.java</exclude>
|
||||
<exclude>**/syntaxtreegenerator/*.java</exclude>
|
||||
</excludes>
|
||||
</configuration>
|
||||
|
@ -2,7 +2,7 @@ import java.lang.Integer;
|
||||
import java.lang.String;
|
||||
|
||||
public class AA {
|
||||
m(Integer i) { return "AA"; }
|
||||
public m(Integer i) { return "AA"; }
|
||||
|
||||
m2(AA x) { return "AA"; }
|
||||
public m2(AA x) { return "AA"; }
|
||||
}
|
@ -1,3 +1,4 @@
|
||||
import java.lang.Integer;
|
||||
import AA;
|
||||
|
||||
public class BB extends AA { }
|
@ -3,15 +3,15 @@ import java.lang.Double;
|
||||
|
||||
public class BinaryInMeth {
|
||||
|
||||
m(a){
|
||||
public m(a){
|
||||
return ++a;
|
||||
}
|
||||
|
||||
m2(a,b){
|
||||
public m2(a,b){
|
||||
return m(a+b);
|
||||
}
|
||||
|
||||
m3(a) {
|
||||
public m3(a) {
|
||||
return m(++a);
|
||||
}
|
||||
}
|
@ -1,5 +1,5 @@
|
||||
public class Bug112 {
|
||||
m(x) {
|
||||
public m(x) {
|
||||
var y;
|
||||
x = y;
|
||||
return y;
|
||||
|
@ -1,8 +1,8 @@
|
||||
import java.lang.Integer;
|
||||
import java.lang.Boolean;
|
||||
|
||||
class Bug122 {
|
||||
void main() {
|
||||
public class Bug122 {
|
||||
public void main() {
|
||||
if (true) {
|
||||
for (Integer i = 0; i < 10; i++) {
|
||||
|
||||
|
@ -1,12 +1,12 @@
|
||||
import java.lang.Boolean;
|
||||
import java.lang.Integer;
|
||||
|
||||
class Bug123 {
|
||||
Boolean works(){
|
||||
public class Bug123 {
|
||||
public Boolean works(){
|
||||
if(true) return true;
|
||||
else return false;
|
||||
}
|
||||
void fails(){
|
||||
public void fails(){
|
||||
Boolean a = true;
|
||||
if(true) a = false;
|
||||
}
|
||||
|
@ -5,11 +5,11 @@ import java.util.List;
|
||||
import java.util.LinkedList;
|
||||
import java.util.ArrayList;
|
||||
|
||||
class Bug125 {
|
||||
public class Bug125 {
|
||||
static ArrayList<String> works = new ArrayList<>();
|
||||
static List<String> fails = new ArrayList<>();
|
||||
|
||||
void main() {
|
||||
public void main() {
|
||||
works.toString();
|
||||
fails.toString();
|
||||
}
|
||||
|
@ -1,14 +1,14 @@
|
||||
import java.util.Optional;
|
||||
import java.lang.Integer;
|
||||
|
||||
class StaticClass {
|
||||
static StaticClass barbar() {
|
||||
public class StaticClass {
|
||||
public static StaticClass barbar() {
|
||||
return new StaticClass();
|
||||
}
|
||||
}
|
||||
|
||||
public class Bug285 {
|
||||
void foo() {
|
||||
public void foo() {
|
||||
Optional<Integer> opt = Optional.empty();
|
||||
StaticClass b = StaticClass.barbar();
|
||||
}
|
||||
|
7
resources/bytecode/javFiles/Bug290A.jav
Normal file
7
resources/bytecode/javFiles/Bug290A.jav
Normal file
@ -0,0 +1,7 @@
|
||||
import Bug290B;
|
||||
|
||||
public class Bug290A {
|
||||
public void m() {
|
||||
new Bug290B();
|
||||
}
|
||||
}
|
11
resources/bytecode/javFiles/Bug290B.jav
Normal file
11
resources/bytecode/javFiles/Bug290B.jav
Normal file
@ -0,0 +1,11 @@
|
||||
import java.lang.String;
|
||||
import java.lang.Integer;
|
||||
|
||||
public class Bug290B {
|
||||
String name;
|
||||
|
||||
public Bug290B() {
|
||||
Integer i = 0;
|
||||
name = i.toString() + "$$";
|
||||
}
|
||||
}
|
@ -4,7 +4,7 @@ import java.lang.String;
|
||||
|
||||
public class Bug98 {
|
||||
|
||||
m(x, y ,z) {
|
||||
public m(x, y ,z) {
|
||||
x = new Vector<Integer>();
|
||||
y = new Vector<String>();
|
||||
x.add(1);
|
||||
|
@ -1,11 +1,11 @@
|
||||
import java.lang.Integer;
|
||||
import java.lang.String;
|
||||
|
||||
import BB;
|
||||
|
||||
public class CC extends BB {
|
||||
m(Integer i) {
|
||||
public m(Integer i) {
|
||||
return "CC";
|
||||
}
|
||||
|
||||
m2(CC x) { return "CC"; }
|
||||
public m2(CC x) { return "CC"; }
|
||||
}
|
||||
|
@ -7,7 +7,7 @@ public class Chain {
|
||||
return this;
|
||||
}
|
||||
|
||||
m() {
|
||||
public m() {
|
||||
return this.chain().chain().chain().x;
|
||||
}
|
||||
}
|
@ -1,5 +1,5 @@
|
||||
class Cycle {
|
||||
m(x, y) {
|
||||
public class Cycle {
|
||||
public m(x, y) {
|
||||
y = x;
|
||||
x = y;
|
||||
}
|
||||
|
@ -1,4 +1,5 @@
|
||||
import java.lang.Integer;
|
||||
import CC;
|
||||
|
||||
public class DD extends CC { }
|
||||
|
||||
|
@ -2,7 +2,7 @@ import java.lang.String;
|
||||
import java.lang.RuntimeException;
|
||||
|
||||
public class Exceptions {
|
||||
m() {
|
||||
public m() {
|
||||
throw new RuntimeException("Some Exception");
|
||||
}
|
||||
}
|
@ -1,14 +1,14 @@
|
||||
import java.lang.String;
|
||||
|
||||
public class FieldTph2 {
|
||||
a;
|
||||
public a;
|
||||
|
||||
m(b){
|
||||
public m(b){
|
||||
b = a;
|
||||
return b;
|
||||
}
|
||||
|
||||
m2(c){
|
||||
public m2(c){
|
||||
a = c;
|
||||
}
|
||||
}
|
@ -1,20 +1,20 @@
|
||||
public class FieldTphConsMeth {
|
||||
|
||||
a;
|
||||
public a;
|
||||
public FieldTphConsMeth(c) {
|
||||
a = id(c);
|
||||
}
|
||||
|
||||
id(b) {
|
||||
public id(b) {
|
||||
return b;
|
||||
}
|
||||
|
||||
setA(x) {
|
||||
public setA(x) {
|
||||
a = x;
|
||||
return a;
|
||||
}
|
||||
|
||||
m(x,y) {
|
||||
public m(x,y) {
|
||||
x = id(y);
|
||||
}
|
||||
|
||||
|
@ -1,13 +1,13 @@
|
||||
import java.lang.Boolean;
|
||||
|
||||
public class FieldTphMMeth {
|
||||
a;
|
||||
public a;
|
||||
|
||||
public FieldTphMMeth(c,d,e) {
|
||||
a = m(c,d,e);
|
||||
}
|
||||
|
||||
m(b,d,e) {
|
||||
public m(b,d,e) {
|
||||
if(e) {
|
||||
return m3(b);
|
||||
} else{
|
||||
@ -16,11 +16,11 @@ public class FieldTphMMeth {
|
||||
|
||||
}
|
||||
|
||||
m2(b) {
|
||||
public m2(b) {
|
||||
a = m3(b);
|
||||
}
|
||||
|
||||
m3(b){
|
||||
public m3(b){
|
||||
return b;
|
||||
}
|
||||
|
||||
|
@ -1,8 +1,8 @@
|
||||
import java.lang.Integer;
|
||||
import java.lang.Boolean;
|
||||
|
||||
class For{
|
||||
Integer m(Integer x){
|
||||
public class For{
|
||||
public Integer m(Integer x){
|
||||
var c = x + 2;
|
||||
Boolean b = true;
|
||||
c = 5;
|
||||
|
@ -6,7 +6,7 @@ public class FunctionalInterface {
|
||||
return f.apply(20);
|
||||
}
|
||||
|
||||
Integer m() {
|
||||
public Integer m() {
|
||||
var v = accept(i -> {
|
||||
return i * 10;
|
||||
});
|
||||
|
@ -1,8 +1,8 @@
|
||||
import java.lang.String;
|
||||
import java.lang.Integer;
|
||||
|
||||
class Generics2<B extends String>{
|
||||
<B extends Integer> B m1(B b){
|
||||
public class Generics2<B extends String>{
|
||||
public <X extends Integer> X m1(X b){
|
||||
return b;
|
||||
}
|
||||
|
||||
|
@ -3,7 +3,7 @@ import java.lang.String;
|
||||
import java.io.PrintStream;
|
||||
|
||||
public class HelloWorld {
|
||||
static hello() {
|
||||
public static hello() {
|
||||
System.out.println("Hello World!");
|
||||
}
|
||||
}
|
@ -2,15 +2,18 @@ import java.util.Vector;
|
||||
|
||||
import java.lang.Integer;
|
||||
import java.lang.String;
|
||||
|
||||
import AA;
|
||||
import BB;
|
||||
import CC;
|
||||
import DD;
|
||||
|
||||
public class Inherit {
|
||||
|
||||
main(d, i) {
|
||||
public main(d, i) {
|
||||
return d.m(i);
|
||||
}
|
||||
|
||||
main(v, i) {
|
||||
public main(v, i) {
|
||||
var aa = v.elementAt(0);
|
||||
return aa.m(i);
|
||||
}
|
||||
|
@ -2,15 +2,18 @@ import java.util.Vector;
|
||||
|
||||
import java.lang.Integer;
|
||||
import java.lang.String;
|
||||
|
||||
import AA;
|
||||
import BB;
|
||||
import CC;
|
||||
import DD;
|
||||
|
||||
public class Inherit2 {
|
||||
|
||||
main(d) {
|
||||
public main(d) {
|
||||
return d.m2(d);
|
||||
}
|
||||
|
||||
main(v) {
|
||||
public main(v) {
|
||||
var aa = v.elementAt(0);
|
||||
return aa.m2(aa);
|
||||
}
|
||||
|
@ -12,7 +12,7 @@ class Test2 {
|
||||
public class InstanceOf {
|
||||
a = new Test();
|
||||
|
||||
test1() { return this.a instanceof Test; }
|
||||
test2() { return this.a instanceof Interface; }
|
||||
test3() { return this.a instanceof Integer; }
|
||||
public test1() { return this.a instanceof Test; }
|
||||
public test2() { return this.a instanceof Interface; }
|
||||
public test3() { return this.a instanceof Integer; }
|
||||
}
|
@ -2,7 +2,7 @@ import java.lang.Integer;
|
||||
|
||||
public class Lambda {
|
||||
|
||||
m () {
|
||||
public m() {
|
||||
var lam1 = (x) -> {
|
||||
return x;
|
||||
};
|
||||
|
@ -4,52 +4,52 @@ import java.lang.Float;
|
||||
import java.lang.Double;
|
||||
|
||||
public class LessEqual {
|
||||
lessEqual(Integer a, Integer b){
|
||||
public lessEqual(Integer a, Integer b){
|
||||
var c = a<=b;
|
||||
return c;
|
||||
}
|
||||
|
||||
lessEqual(Long a, Long b){
|
||||
public lessEqual(Long a, Long b){
|
||||
var c = a<=b;
|
||||
return c;
|
||||
}
|
||||
|
||||
lessEqual(Float a, Float b){
|
||||
public lessEqual(Float a, Float b){
|
||||
var c = a<=b;
|
||||
return c;
|
||||
}
|
||||
|
||||
lessEqual(Double a, Double b){
|
||||
public lessEqual(Double a, Double b){
|
||||
var c = a<=b;
|
||||
return c;
|
||||
}
|
||||
|
||||
lessEqual(Long a, Integer b){
|
||||
public lessEqual(Long a, Integer b){
|
||||
var c = a<=b;
|
||||
return c;
|
||||
}
|
||||
|
||||
lessEqual(Float a, Integer b){
|
||||
public lessEqual(Float a, Integer b){
|
||||
var c = a<=b;
|
||||
return c;
|
||||
}
|
||||
|
||||
lessEqual(Double a, Integer b){
|
||||
public lessEqual(Double a, Integer b){
|
||||
var c = a<=b;
|
||||
return c;
|
||||
}
|
||||
|
||||
lessEqual(Float a, Long b){
|
||||
public lessEqual(Float a, Long b){
|
||||
var c = a<=b;
|
||||
return c;
|
||||
}
|
||||
|
||||
lessEqual(Double a, Long b){
|
||||
public lessEqual(Double a, Long b){
|
||||
var c = a<=b;
|
||||
return c;
|
||||
}
|
||||
|
||||
lessEqual(Double a, Float b){
|
||||
public lessEqual(Double a, Float b){
|
||||
var c = a<=b;
|
||||
return c;
|
||||
}
|
||||
|
@ -5,52 +5,52 @@ import java.lang.Double;
|
||||
|
||||
public class LessThan {
|
||||
|
||||
lessThan(Integer a, Integer b){
|
||||
public lessThan(Integer a, Integer b){
|
||||
var c = a<b;
|
||||
return c;
|
||||
}
|
||||
|
||||
lessThan(Long a, Long b){
|
||||
public lessThan(Long a, Long b){
|
||||
var c = a<b;
|
||||
return c;
|
||||
}
|
||||
|
||||
lessThan(Float a, Float b){
|
||||
public lessThan(Float a, Float b){
|
||||
var c = a<b;
|
||||
return c;
|
||||
}
|
||||
|
||||
lessThan(Double a, Double b){
|
||||
public lessThan(Double a, Double b){
|
||||
var c = a<b;
|
||||
return c;
|
||||
}
|
||||
|
||||
lessThan(Long a, Integer b){
|
||||
public lessThan(Long a, Integer b){
|
||||
var c = a<b;
|
||||
return c;
|
||||
}
|
||||
|
||||
lessThan(Float a, Integer b){
|
||||
public lessThan(Float a, Integer b){
|
||||
var c = a<b;
|
||||
return c;
|
||||
}
|
||||
|
||||
lessThan(Double a, Integer b){
|
||||
public lessThan(Double a, Integer b){
|
||||
var c = a<b;
|
||||
return c;
|
||||
}
|
||||
|
||||
lessThan(Float a, Long b){
|
||||
public lessThan(Float a, Long b){
|
||||
var c = a<b;
|
||||
return c;
|
||||
}
|
||||
|
||||
lessThan(Double a, Long b){
|
||||
public lessThan(Double a, Long b){
|
||||
var c = a<b;
|
||||
return c;
|
||||
}
|
||||
|
||||
lessThan(Double a, Float b){
|
||||
public lessThan(Double a, Float b){
|
||||
var c = a<b;
|
||||
return c;
|
||||
}
|
||||
|
@ -1,6 +1,6 @@
|
||||
import java.lang.Character;
|
||||
|
||||
public class Literal {
|
||||
m() { return null; }
|
||||
m2() { return 'C'; }
|
||||
public m() { return null; }
|
||||
public m2() { return 'C'; }
|
||||
}
|
@ -9,7 +9,7 @@ public class Matrix extends Vector<Vector<Integer>> {
|
||||
Matrix () {
|
||||
}
|
||||
|
||||
Matrix(vv) {
|
||||
public Matrix(vv) {
|
||||
Integer i;
|
||||
i = 0;
|
||||
while(i < vv.size()) {
|
||||
@ -19,7 +19,7 @@ public class Matrix extends Vector<Vector<Integer>> {
|
||||
}
|
||||
}
|
||||
|
||||
mul(m) {
|
||||
public mul(m) {
|
||||
var ret = new Matrix();
|
||||
var i = 0;
|
||||
while(i < size()) {
|
||||
|
@ -8,7 +8,7 @@ public class MatrixOP extends Vector<Vector<Integer>> {
|
||||
MatrixOP () {
|
||||
}
|
||||
|
||||
MatrixOP(vv) {
|
||||
public MatrixOP(vv) {
|
||||
Integer i;
|
||||
i = 0;
|
||||
while(i < vv.size()) {
|
||||
|
@ -2,16 +2,16 @@ import java.util.List;
|
||||
import java.lang.Integer;
|
||||
//import java.util.Collection;
|
||||
|
||||
class Merge {
|
||||
public class Merge {
|
||||
|
||||
merge(a, b) {
|
||||
public merge(a, b) {
|
||||
a.addAll(b);
|
||||
return a;
|
||||
}
|
||||
|
||||
|
||||
|
||||
sort(in){
|
||||
public sort(in){
|
||||
var firstHalf = in.subList(1,2);
|
||||
var secondHalf = in.subList(1,2);
|
||||
return merge(sort(firstHalf), sort(secondHalf));
|
||||
|
@ -1,13 +1,14 @@
|
||||
import java.lang.Double;
|
||||
import java.lang.String;
|
||||
import java.lang.Long;
|
||||
import java.lang.Integer;
|
||||
|
||||
class OL {
|
||||
m (x) { return x + x; }
|
||||
public class OL {
|
||||
public m (x) { return x + x; }
|
||||
}
|
||||
|
||||
class OLMain {
|
||||
main(x) {
|
||||
public class OLMain {
|
||||
public main(x) {
|
||||
var ol;
|
||||
ol = new OL();
|
||||
return ol.m(x);
|
||||
|
@ -10,8 +10,8 @@ public class Parent {
|
||||
public Parent() {}
|
||||
}
|
||||
|
||||
class Child extends Parent {
|
||||
Child() {
|
||||
public class Child extends Parent {
|
||||
public Child() {
|
||||
super(3);
|
||||
}
|
||||
}
|
||||
|
@ -3,9 +3,9 @@ import java.lang.Double;
|
||||
import java.lang.String;
|
||||
|
||||
public class Op2 {
|
||||
m(){
|
||||
//var x = "";
|
||||
//var a = 5+x;
|
||||
public m(){
|
||||
var x = "";
|
||||
var a = 5+x;
|
||||
|
||||
Integer x = 10;
|
||||
Double y = 10.5;
|
||||
|
@ -5,15 +5,15 @@ import java.lang.Float;
|
||||
record Point(Number x, Number y) {}
|
||||
|
||||
public class OverloadPattern {
|
||||
m(Point(Integer x, Integer y)) {
|
||||
public m(Point(Integer x, Integer y)) {
|
||||
return x + y;
|
||||
}
|
||||
|
||||
m(Point(Float x, Float y)) {
|
||||
public m(Point(Float x, Float y)) {
|
||||
return x * y;
|
||||
}
|
||||
|
||||
m(Integer x) {
|
||||
public m(Integer x) {
|
||||
return x;
|
||||
}
|
||||
}
|
||||
|
@ -2,17 +2,17 @@ import java.lang.String;
|
||||
|
||||
public class Overloading{
|
||||
|
||||
test(x){
|
||||
public test(x){
|
||||
return x.methode();
|
||||
}
|
||||
|
||||
methode(){
|
||||
public methode(){
|
||||
return "Overloading";
|
||||
}
|
||||
}
|
||||
|
||||
public class Overloading2{
|
||||
methode(){
|
||||
public methode(){
|
||||
return "Overloading2";
|
||||
}
|
||||
}
|
@ -3,15 +3,15 @@ import java.lang.Boolean;
|
||||
import java.lang.Object;
|
||||
|
||||
|
||||
class Pair<T, U> {
|
||||
public class Pair<T, U> {
|
||||
T x;
|
||||
U y;
|
||||
|
||||
fst () {
|
||||
public fst() {
|
||||
return x;
|
||||
}
|
||||
|
||||
snd () {
|
||||
public snd() {
|
||||
return y;
|
||||
}
|
||||
}
|
@ -3,7 +3,7 @@ import java.lang.String;
|
||||
|
||||
public class Plus {
|
||||
|
||||
m(a,b) {
|
||||
public m(a,b) {
|
||||
return a+b;
|
||||
}
|
||||
}
|
@ -1,25 +1,25 @@
|
||||
import java.lang.Integer;
|
||||
|
||||
public class PostIncDec {
|
||||
m() {
|
||||
public m() {
|
||||
var i = 0;
|
||||
i++;
|
||||
return i;
|
||||
}
|
||||
|
||||
m2() {
|
||||
public m2() {
|
||||
var i = 0;
|
||||
var j = i++;
|
||||
return j;
|
||||
}
|
||||
|
||||
d() {
|
||||
public d() {
|
||||
var i = 0;
|
||||
i--;
|
||||
return i;
|
||||
}
|
||||
|
||||
d2() {
|
||||
public d2() {
|
||||
var i = 0;
|
||||
var j = i--;
|
||||
return j;
|
||||
|
@ -1,25 +1,25 @@
|
||||
import java.lang.Integer;
|
||||
|
||||
public class PreInc {
|
||||
m() {
|
||||
public m() {
|
||||
var i = 0;
|
||||
++i;
|
||||
return i;
|
||||
}
|
||||
|
||||
m2() {
|
||||
public m2() {
|
||||
var i = 0;
|
||||
var j = ++i;
|
||||
return j;
|
||||
}
|
||||
|
||||
d() {
|
||||
public d() {
|
||||
var i = 0;
|
||||
--i;
|
||||
return i;
|
||||
}
|
||||
|
||||
d2() {
|
||||
public d2() {
|
||||
var i = 0;
|
||||
var j = --i;
|
||||
return j;
|
||||
|
@ -3,16 +3,16 @@ import java.util.Stack;
|
||||
|
||||
public class Put {
|
||||
|
||||
putElement(ele, v) {
|
||||
public putElement(ele, v) {
|
||||
v.addElement(ele);
|
||||
}
|
||||
|
||||
putElement(ele, s) {
|
||||
public putElement(ele, s) {
|
||||
s.push(ele);
|
||||
}
|
||||
|
||||
|
||||
main(ele, x) {
|
||||
public main(ele, x) {
|
||||
putElement(ele, x);
|
||||
}
|
||||
|
||||
|
@ -15,8 +15,8 @@ public class RecordTest {
|
||||
b = new Rec(10, 20);
|
||||
c = new Rec(20, 40);
|
||||
|
||||
doesEqual() { return a.equals(b); }
|
||||
doesNotEqual() { return b.equals(c); }
|
||||
hashCode() { return a.hashCode(); }
|
||||
toString() { return a.toString(); }
|
||||
public doesEqual() { return a.equals(b); }
|
||||
public doesNotEqual() { return b.equals(c); }
|
||||
public hashCode() { return a.hashCode(); }
|
||||
public toString() { return a.toString(); }
|
||||
}
|
@ -2,7 +2,7 @@ import java.lang.Integer;
|
||||
import java.lang.Boolean;
|
||||
|
||||
public class RelOps {
|
||||
m(a,b){
|
||||
public m(a,b){
|
||||
return a<b;
|
||||
}
|
||||
}
|
@ -6,7 +6,7 @@ import java.lang.Float;
|
||||
|
||||
public class Scalar extends Vector<Integer> {
|
||||
|
||||
Scalar(v) {
|
||||
public Scalar(v) {
|
||||
Integer i;
|
||||
i = 0;
|
||||
while(i < v.size()) {
|
||||
@ -15,7 +15,7 @@ public class Scalar extends Vector<Integer> {
|
||||
}
|
||||
}
|
||||
|
||||
mul(v) {
|
||||
public mul(v) {
|
||||
var ret = 0;
|
||||
var i = 0;
|
||||
while(i < size()) {
|
||||
|
@ -12,7 +12,7 @@ public class Static {
|
||||
i = x;
|
||||
}
|
||||
|
||||
static m() {
|
||||
public static m() {
|
||||
return i + Other.field;
|
||||
}
|
||||
}
|
||||
|
@ -2,10 +2,10 @@ import java.lang.Integer;
|
||||
import java.lang.Object;
|
||||
import java.lang.Float;
|
||||
|
||||
record Rec(Integer a, Object b) {}
|
||||
public record Rec(Integer a, Object b) {}
|
||||
|
||||
public class Switch {
|
||||
main(o) {
|
||||
public main(o) {
|
||||
return switch (o) {
|
||||
case Rec(Integer a, Integer b) -> a + b;
|
||||
case Rec(Integer a, Float b) -> a + 10;
|
||||
|
@ -3,7 +3,7 @@ import java.lang.String;
|
||||
import java.lang.Object;
|
||||
|
||||
public class SwitchString {
|
||||
main(o) {
|
||||
public main(o) {
|
||||
return switch (o) {
|
||||
case "AaAaAa" -> 1; // These two have the same hash code!
|
||||
case "AaAaBB" -> 2;
|
||||
|
@ -1,10 +1,10 @@
|
||||
import java.lang.String;
|
||||
|
||||
class TXGenerics {
|
||||
public class TXGenerics {
|
||||
a;
|
||||
b;
|
||||
|
||||
test() {
|
||||
public test() {
|
||||
var c = new Cycle();
|
||||
c.m(a, b);
|
||||
}
|
||||
|
@ -1,11 +1,11 @@
|
||||
public class Tph {
|
||||
|
||||
m(a,b){
|
||||
public m(a,b){
|
||||
var c = m2(b);
|
||||
return a;
|
||||
}
|
||||
|
||||
m2(b){
|
||||
public m2(b){
|
||||
return b;
|
||||
}
|
||||
}
|
@ -3,7 +3,7 @@ import java.lang.Long;
|
||||
import java.lang.Double;
|
||||
|
||||
public class While {
|
||||
m(x) {
|
||||
public m(x) {
|
||||
while(x < 2) {
|
||||
x = x+1;
|
||||
}
|
||||
|
@ -1,10 +1,10 @@
|
||||
import java.lang.Integer;
|
||||
|
||||
class Y {
|
||||
public class Y {
|
||||
y;
|
||||
//factorial;
|
||||
|
||||
Y() {
|
||||
public Y() {
|
||||
y = f -> t -> f.apply(y.apply(f)).apply(t);
|
||||
//factorial = y.apply(f -> n -> { if (n == 0) return 1; else return n * f.apply(n - 1); });
|
||||
}
|
||||
|
@ -3,7 +3,7 @@ class Apply { }
|
||||
|
||||
public class applyLambda {
|
||||
|
||||
m () {
|
||||
public m () {
|
||||
var lam1 = (x) -> {
|
||||
return x;
|
||||
};
|
||||
|
@ -1435,6 +1435,8 @@ public class Codegen {
|
||||
var access = method.access();
|
||||
if (method.block() == null)
|
||||
access |= ACC_ABSTRACT;
|
||||
if (clazz instanceof TargetInterface)
|
||||
access |= ACC_PUBLIC;
|
||||
|
||||
// TODO The older codegen has set ACC_PUBLIC for all methods, good for testing but bad for everything else
|
||||
MethodVisitor mv = cw.visitMethod(access, method.name(), method.getDescriptor(), method.getSignature(), null);
|
||||
|
@ -57,6 +57,7 @@ import java.io.FileWriter;
|
||||
import java.io.IOException;
|
||||
import java.io.OutputStreamWriter;
|
||||
import java.io.Writer;
|
||||
import java.sql.Array;
|
||||
import java.util.*;
|
||||
import java.util.Map.Entry;
|
||||
import java.util.function.Function;
|
||||
@ -128,11 +129,11 @@ public class JavaTXCompiler {
|
||||
}
|
||||
|
||||
public ConstraintSet<Pair> getConstraints() throws ClassNotFoundException, IOException {
|
||||
List<ClassOrInterface> allClasses = new ArrayList<>();// environment.getAllAvailableClasses();
|
||||
List<ClassOrInterface> importedClasses = new ArrayList<>();
|
||||
Set<ClassOrInterface> allClasses = new HashSet<>();// environment.getAllAvailableClasses();
|
||||
ClassOrInterface objectClass = ASTFactory.createClass(classLoader.loadClass(new JavaClassName("java.lang.Object").toString()));
|
||||
// Alle Importierten Klassen in allen geparsten Sourcefiles kommen ins FC
|
||||
for (Entry<File, SourceFile> source : sourceFiles.entrySet()) {
|
||||
var importedClasses = new ArrayList<ClassOrInterface>();
|
||||
for (JavaClassName name : source.getValue().getImports()) {
|
||||
importedClasses.addAll(getAvailableClasses(name));
|
||||
}
|
||||
@ -140,18 +141,17 @@ public class JavaTXCompiler {
|
||||
ClassOrInterface importedClass = ASTFactory.createClass(c);
|
||||
importedClasses.add(importedClass);
|
||||
}
|
||||
source.getValue().availableClasses.addAll(importedClasses);
|
||||
}
|
||||
for (File f : this.sourceFiles.keySet()) {
|
||||
SourceFile sf = sourceFiles.get(f);
|
||||
sf = new SourceFile(sf.getPkgName(), sf.KlassenVektor.stream().map(cl -> new ClassOrInterface(cl)).collect(Collectors.toCollection(ArrayList::new)), sf.imports);
|
||||
SourceFile sf_new = new SourceFile(sf.getPkgName(), sf.KlassenVektor.stream().map(cl -> new ClassOrInterface(cl)).collect(Collectors.toCollection(ArrayList::new)), sf.imports);
|
||||
// sf enthaelt neues Source-File, neue Klassen-Objekte und neue
|
||||
// ArrayListen-Objekte fuer Fields, Construktoren und Methoden
|
||||
// Alle anderen Objekte werden nur kopiert.
|
||||
SourceFile sf_new = sf;
|
||||
sf.KlassenVektor.forEach(cl -> addMethods(sf_new, cl, importedClasses, objectClass));
|
||||
allClasses.addAll(sf.getClasses());
|
||||
sf_new.KlassenVektor.forEach(cl -> addMethods(sf_new, cl, sf.availableClasses, objectClass));
|
||||
allClasses.addAll(sf_new.getClasses());
|
||||
}
|
||||
allClasses.addAll(importedClasses);
|
||||
TYPE ty = new TYPE(sourceFiles.values(), allClasses);
|
||||
return ty.getConstraints();
|
||||
}
|
||||
|
@ -143,7 +143,8 @@ public class SyntaxTreeGenerator {
|
||||
if (srcfile.packageDeclaration() != null)
|
||||
this.pkgName = convert(srcfile.packageDeclaration());
|
||||
Map<String, Integer> imports = GatherNames.getImports(srcfile, packageCrawler, compiler);
|
||||
this.imports = imports.keySet().stream().map(name -> reg.getName(name)).collect(Collectors.toSet());
|
||||
this.imports.addAll(imports.keySet().stream().map(name -> reg.getName(name)).collect(Collectors.toSet()));
|
||||
|
||||
for (Java17Parser.ClassOrInterfaceContext type : srcfile.classOrInterface()) {
|
||||
ClassorinterfacedeclContext clsoif;
|
||||
if (type instanceof NoclassorinterfaceContext) {
|
||||
|
@ -15,6 +15,8 @@ public class SourceFile extends SyntaxTreeNode {
|
||||
public final List<ClassOrInterface> KlassenVektor;
|
||||
public final Set<JavaClassName> imports;
|
||||
|
||||
public List<ClassOrInterface> availableClasses = new ArrayList<>();
|
||||
|
||||
/**
|
||||
* Die SourceFile repräsntiert eine zu einem Syntaxbaum eingelesene Java-Datei.
|
||||
* SourceFile stellt dabei den Wurzelknoten des Syntaxbaumes dar.
|
||||
|
@ -293,7 +293,8 @@ public class ASTToTargetAST {
|
||||
for (var method : overloadedMethods) {
|
||||
var newMethod = new Method(
|
||||
method.modifier,
|
||||
encodeName(method.name, method.getParameterList()),
|
||||
method.name,
|
||||
//encodeName(method.name, method.getParameterList()),
|
||||
method.getReturnType(),
|
||||
method.getParameterList(),
|
||||
method.block,
|
||||
@ -303,7 +304,8 @@ public class ASTToTargetAST {
|
||||
res.add(newMethod);
|
||||
}
|
||||
|
||||
var template = overloadedMethods.get(0);
|
||||
// TODO Record overloading
|
||||
/*var template = overloadedMethods.get(0);
|
||||
|
||||
var pParams = new ArrayList<Pattern>();
|
||||
var i = 0;
|
||||
@ -321,7 +323,7 @@ public class ASTToTargetAST {
|
||||
var block = new Block(statements, new NullToken());
|
||||
var entryPoint = new Method(template.modifier, template.name, template.getReturnType(), params, block, template.getGenerics(), new NullToken());
|
||||
|
||||
res.add(entryPoint); // TODO
|
||||
res.add(entryPoint); // TODO*/
|
||||
return res.stream().map(this::convert).flatMap(List::stream).toList();
|
||||
}
|
||||
|
||||
|
@ -16,19 +16,23 @@ import java.util.*;
|
||||
public class TYPE {
|
||||
|
||||
private final Collection<SourceFile> sfs;
|
||||
private final TypeInferenceInformation typeInferenceInformation;
|
||||
private final Set<ClassOrInterface> allAvailableClasses;
|
||||
|
||||
public TYPE(Collection<SourceFile> sourceFiles, Collection<ClassOrInterface> allAvailableClasses){
|
||||
public TYPE(Collection<SourceFile> sourceFiles, Set<ClassOrInterface> allAvailableClasses){
|
||||
sfs = sourceFiles;
|
||||
this.typeInferenceInformation = new TypeInferenceInformation(allAvailableClasses);
|
||||
this.allAvailableClasses = allAvailableClasses;
|
||||
}
|
||||
|
||||
public ConstraintSet getConstraints() {
|
||||
ConstraintSet ret = new ConstraintSet();
|
||||
for(SourceFile sf : sfs)
|
||||
for (ClassOrInterface cl : sf.KlassenVektor) {
|
||||
ret.addAll(getConstraintsClass(cl ,typeInferenceInformation));
|
||||
}
|
||||
for (ClassOrInterface cl : sf.KlassenVektor) {
|
||||
System.out.println(sf.availableClasses);
|
||||
var allClasses = new HashSet<ClassOrInterface>();
|
||||
allClasses.addAll(allAvailableClasses);
|
||||
allClasses.addAll(sf.availableClasses);
|
||||
ret.addAll(getConstraintsClass(cl, new TypeInferenceInformation(allClasses)));
|
||||
}
|
||||
return ret;
|
||||
}
|
||||
|
||||
|
@ -670,6 +670,7 @@ public class TestComplete {
|
||||
assertEquals(swtch.invoke(instance, "Some string"), 0);
|
||||
}
|
||||
|
||||
@Ignore("Not implemented")
|
||||
@Test
|
||||
public void testSwitch2() throws Exception {
|
||||
var classFiles = generateClassFiles(new ByteArrayClassLoader(), "Switch2.jav");
|
||||
@ -698,6 +699,7 @@ public class TestComplete {
|
||||
var instance = clazz.getDeclaredConstructor().newInstance();
|
||||
}
|
||||
|
||||
@Ignore("Not implemented")
|
||||
@Test
|
||||
public void testOverloadPattern() throws Exception {
|
||||
var classFiles = generateClassFiles(new ByteArrayClassLoader(), "OverloadPattern.jav");
|
||||
@ -833,6 +835,7 @@ public class TestComplete {
|
||||
assertEquals(clazz.getSuperclass().getDeclaredField("x").get(instance), 3);
|
||||
}
|
||||
|
||||
@Ignore("Not implemented")
|
||||
@Test
|
||||
public void testStringConcat() throws Exception {
|
||||
var classFiles = generateClassFiles(new ByteArrayClassLoader(), "Op2.jav");
|
||||
@ -923,4 +926,11 @@ public class TestComplete {
|
||||
var clazz = classFiles.get("Bug285");
|
||||
var instance = clazz.getDeclaredConstructor().newInstance();
|
||||
}
|
||||
|
||||
@Test
|
||||
public void testBug290() throws Exception {
|
||||
var classFiles = generateClassFiles(new ByteArrayClassLoader(), "Bug290A.jav");
|
||||
var clazz = classFiles.get("Bug290A");
|
||||
var instance = clazz.getDeclaredConstructor().newInstance();
|
||||
}
|
||||
}
|
||||
|
@ -1,4 +1,5 @@
|
||||
import de.dhbwstuttgart.core.JavaTXCompiler;
|
||||
import org.junit.Ignore;
|
||||
import org.junit.Test;
|
||||
|
||||
import java.io.File;
|
||||
@ -21,6 +22,7 @@ public class TestPackages {
|
||||
cmp.generateBytecode(bytecodeDirectory);
|
||||
}
|
||||
|
||||
@Ignore("FIXME")
|
||||
@Test
|
||||
public void testPackagesCircular() throws Exception {
|
||||
var cmp = new JavaTXCompiler(
|
||||
|
@ -35,7 +35,7 @@ public class ASTToTypedTargetAST {
|
||||
var file = Path.of(System.getProperty("user.dir"), "/resources/bytecode/javFiles/Overloading.jav").toFile();
|
||||
var compiler = new JavaTXCompiler(file);
|
||||
var resultSet = compiler.typeInference();
|
||||
var converter = new ASTToTargetAST(resultSet);
|
||||
var converter = new ASTToTargetAST(compiler, resultSet);
|
||||
var classes = compiler.sourceFiles.get(file).getClasses();
|
||||
|
||||
var classLoader = new ByteArrayClassLoader();
|
||||
@ -106,7 +106,7 @@ public class ASTToTypedTargetAST {
|
||||
var file = Path.of(System.getProperty("user.dir"), "/resources/bytecode/javFiles/Generics.jav").toFile();
|
||||
var compiler = new JavaTXCompiler(file);
|
||||
var resultSet = compiler.typeInference();
|
||||
var converter = new ASTToTargetAST(resultSet);
|
||||
var converter = new ASTToTargetAST(compiler, resultSet);
|
||||
var classes = compiler.sourceFiles.get(file).getClasses();
|
||||
|
||||
var generics = TestCodegen.generateClass(converter.convert(classes.get(0)), new ByteArrayClassLoader());
|
||||
@ -151,7 +151,7 @@ public class ASTToTypedTargetAST {
|
||||
var file = Path.of(System.getProperty("user.dir"), "/resources/bytecode/javFiles/Generics4.jav").toFile();
|
||||
var compiler = new JavaTXCompiler(file);
|
||||
var resultSet = compiler.typeInference();
|
||||
var converter = new ASTToTargetAST(resultSet);
|
||||
var converter = new ASTToTargetAST(compiler, resultSet);
|
||||
var classes = compiler.sourceFiles.get(file).getClasses();
|
||||
|
||||
var generics4 = TestCodegen.generateClass(converter.convert(classes.get(0)), new ByteArrayClassLoader());
|
||||
|
@ -2,6 +2,7 @@ package targetast;
|
||||
|
||||
import de.dhbwstuttgart.environment.ByteArrayClassLoader;
|
||||
import org.junit.BeforeClass;
|
||||
import org.junit.Ignore;
|
||||
import org.junit.Test;
|
||||
|
||||
import java.lang.reflect.Method;
|
||||
@ -9,6 +10,7 @@ import java.util.Vector;
|
||||
|
||||
import static org.junit.Assert.assertEquals;
|
||||
|
||||
@Ignore("FIXME")
|
||||
public class InheritTest2 {
|
||||
private static Class<?> classToTest, classToTestAA, classToTestBB, classToTestCC, classToTestDD;
|
||||
private static Object instanceOfClass, instanceOfClassAA, instanceOfClassBB, instanceOfClassCC, instanceOfClassDD;
|
||||
|
@ -12,6 +12,7 @@ import de.dhbwstuttgart.target.generate.Bound;
|
||||
import static de.dhbwstuttgart.target.generate.Bound.*;
|
||||
import de.dhbwstuttgart.target.generate.BoundsList;
|
||||
import de.dhbwstuttgart.target.generate.GenericsResult;
|
||||
import org.junit.Ignore;
|
||||
import org.junit.Test;
|
||||
import static org.junit.Assert.*;
|
||||
|
||||
@ -21,6 +22,7 @@ import java.nio.file.Path;
|
||||
import java.util.ArrayList;
|
||||
import java.util.List;
|
||||
|
||||
@Ignore("TODO: Rewrite with the new algorithm")
|
||||
public class TestGenerics {
|
||||
private static final String rootDirectory = System.getProperty("user.dir") + "/resources/insertGenerics/javFiles/";
|
||||
private static final String bytecodeDirectory = System.getProperty("user.dir") + "targetTest";
|
||||
|
Loading…
Reference in New Issue
Block a user