Zweite Zeile in der Family Def. 41 enthält noch Fehler #71

Open
opened 2021-02-02 20:52:56 +00:00 by pl · 0 comments
Owner

Branch: origin/bytecodeGenericsSecond
Commit: ef723e4103

public class TestGGFinder {
a;

id(b) {
    var c = b;
    return c;
}

setA(x) {
    a = x;
    return a;
}

m(x,y) {
    x = id(y);
}

}

liefert

public class TestGGFinder<N$ extends S$, S$> {
N$ a;
public TestGGFinder();
public <Q$ extends AC$, P$ extends Q$, AC$ extends Y$, Y$> AC$ id(P$);
public <T$ extends N$> S$ setA(T$);
public <Z$ extends P$, Y$, P$> void m(Y$, Z$);
}

Es müsste aber

public <Z$ extends P$, Y$, P$ extends Y$> void m(Y$, Z$);

liefern. Vermutlich wird in firstTransitiveSubtypeForMethodTypes
der Fall, dass Z < P und P < Y nicht berücksichtigt, weil Y < Object in der ersten Zeil nicht eingefuegt wird. Y aber eine Typevariable eines Nodes ist.

Branch: origin/bytecodeGenericsSecond Commit: ef723e4103a647d428d306fe5a80257af3ec04ad public class TestGGFinder { a; id(b) { var c = b; return c; } setA(x) { a = x; return a; } m(x,y) { x = id(y); } } liefert public class TestGGFinder<N$ extends S$, S$> { N$ a; public TestGGFinder(); public <Q$ extends AC$, P$ extends Q$, AC$ extends Y$, Y$> AC$ id(P$); public <T$ extends N$> S$ setA(T$); public <Z$ extends P$, Y$, P$> void m(Y$, Z$); } Es müsste aber public <Z$ extends P$, Y$, P$ extends Y$> void m(Y$, Z$); liefern. Vermutlich wird in firstTransitiveSubtypeForMethodTypes der Fall, dass Z < P und P < Y nicht berücksichtigt, weil Y < Object in der ersten Zeil nicht eingefuegt wird. Y aber eine Typevariable eines Nodes ist.
Sign in to join this conversation.
No Milestone
No project
No Assignees
1 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#71
No description provided.