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

Closed
opened 2021-02-01 16:57:22 +00:00 by pl · 0 comments
Owner

Branch: origin/bytecodeGenericsSecond
Commit: ef723e4103

class TestTwoArgs {
a;

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

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

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

main(x,y) {
	return m(id(x),setA(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 class TestTwoArgs { a; id(b) { var c = b; return c; } setA(x) { a = x; return a; } m(x,y) { x = id(y); } main(x,y) { return m(id(x),setA(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
1 Participants
Notifications
Due Date
No due date set.
Dependencies

No dependencies set.

Reference: JavaTX/JavaCompilerCore#70
No description provided.