Erzeugen von Bytecode, wenn keine Lösung mehr auswählbar ist #178

Closed
opened 2015-10-07 10:17:49 +00:00 by pl · 4 comments
Owner

Im Moment wird die Bytecodegen-Methode nur aufgerufen, wenn genau eine Typisierung möglich ist.
Es sollte aber auch dann Bytecode erzeugt, wenn keine Lösung mehr auswählbar ist, auch wenn intern noch mehrere Möglichkeiten möglich sind.

Im Moment wird die Bytecodegen-Methode nur aufgerufen, wenn genau eine Typisierung möglich ist. Es sollte aber auch dann Bytecode erzeugt, wenn keine Lösung mehr auswählbar ist, auch wenn intern noch mehrere Möglichkeiten möglich sind.
Author
Owner

Ergänzung:

Wenn nur eine Lösung auswählbar ist, dann soll für diese Bytecode erzeugt werden.

Ergänzung: Wenn nur eine Lösung auswählbar ist, dann soll für diese Bytecode erzeugt werden.
Owner

Änderungen durchgeführt. Siehe Commit 72dc22ff1d29615c2b7be51ed64322a65eab4a35

Änderungen durchgeführt. Siehe Commit 72dc22ff1d29615c2b7be51ed64322a65eab4a35
Author
Owner

Scheint noch so ganz zu funktionieren.

Für folgende beiden Beispiel wird kein Bytecode erzeugt, obwohl keine Typen mehr einsetzbar sind.

1.)
import java.util.Vector;

class Vector_Add {

<E1660369676, D> java.lang.Integer vector_add(java.util.Vector x,D y) {
java.lang.Integer i;
i = 0;
java.lang.Integer ret;
ret = 0;
while (i < x.size()) {
}
return ret;
}
}

2.)
class Lambda_Bsp {
<BDV, BDU extends BDV, ABN extends Fun1<R1186679466, java.lang.String>, R1186679466 extends BDU>
Fun1<? extends BDV, ? super Fun1<R1186679466, java.lang.String>> lambda = (f)-> f.apply("str");
}

Scheint noch so ganz zu funktionieren. Für folgende beiden Beispiel wird kein Bytecode erzeugt, obwohl keine Typen mehr einsetzbar sind. 1.) import java.util.Vector; class Vector_Add { <E1660369676, D> java.lang.Integer vector_add(java.util.Vector<E1660369676> x,D y) { java.lang.Integer i; i = 0; java.lang.Integer ret; ret = 0; while (i < x.size()) { } return ret; } } 2.) class Lambda_Bsp { <BDV, BDU extends BDV, ABN extends Fun1<R1186679466, java.lang.String>, R1186679466 extends BDU> Fun1<? extends BDV, ? super Fun1<R1186679466, java.lang.String>> lambda = (f)-> f.apply("str"); }
Owner

(In reply to Martin Plümicke from comment #3)

Für folgende beiden Beispiel wird kein Bytecode erzeugt, obwohl keine Typen
mehr einsetzbar sind.

1.)
import java.util.Vector;

class Vector_Add {

<E1660369676, D> java.lang.Integer vector_add(java.util.Vector
x,D y) {
java.lang.Integer i;
i = 0;
java.lang.Integer ret;
ret = 0;
while (i < x.size()) {
}
return ret;
}
}

Hier liegt der Fehler daran, dass ein Bug in der Bytecodegenerierung auftritt. Die Bytecodegenerierung wird also aufgerufen.

2.)
class Lambda_Bsp {
<BDV, BDU extends BDV, ABN extends Fun1<R1186679466, java.lang.String>,
R1186679466 extends BDU>
Fun1<? extends BDV, ? super Fun1<R1186679466, java.lang.String>> lambda =
(f)-> f.apply("str");
}

Das gleiche bei diesem Beispiel

(In reply to Martin Plümicke from comment #3) > Für folgende beiden Beispiel wird kein Bytecode erzeugt, obwohl keine Typen > mehr einsetzbar sind. > 1.) > import java.util.Vector; > > class Vector_Add { > > <E1660369676, D> java.lang.Integer vector_add(java.util.Vector<E1660369676> > x,D y) { > java.lang.Integer i; > i = 0; > java.lang.Integer ret; > ret = 0; > while (i < x.size()) { > } > return ret; > } > } Hier liegt der Fehler daran, dass ein Bug in der Bytecodegenerierung auftritt. Die Bytecodegenerierung wird also aufgerufen. > 2.) > class Lambda_Bsp { > <BDV, BDU extends BDV, ABN extends Fun1<R1186679466, java.lang.String>, > R1186679466 extends BDU> > Fun1<? extends BDV, ? super Fun1<R1186679466, java.lang.String>> lambda = > (f)-> f.apply("str"); > } Das gleiche bei diesem Beispiel
Sign in to join this conversation.
No Milestone
No project
No Assignees
2 Participants
Notifications
Due Date
The due date is invalid or out of range. Please use the format 'yyyy-mm-dd'.

No due date set.

Dependencies

No dependencies set.

Reference: JavaTX/JavaCompilerCore#178
No description provided.