GenericParaListInsertTest PlugIn #158
Loading…
x
Reference in New Issue
Block a user
No description provided.
Delete Branch "%!s()"
Deleting a branch is permanent. Although the deleted branch may continue to exist for a short time before it actually gets removed, it CANNOT be undone in most cases. Continue?
Folgendes Resultat liefret das PlugIn
class GenericParaListInsertTest{
<KTM, LVS extends KTM, KTN extends LVS, LVU extends MXZ > KTM methode(LVU a){return a;}
}
Das Ergbenis müsste LVU extends KTM sein.
Problem ist, dass GTVs auch noch in die Typvariablen Liste aufgenommen werden müssen.
Vereifachtes Beispiel
class GenericParaListInsertTest{
A methode(a){return a;}
}
liefert
class GenericParaListInsertTest{
<A, B extends ABG > A methode(B a){return a;}
}
Es müsste aber auch noch
ABG extends A(GTV)
Dazugenommen werden.
Beispiel:
class GenericParaListInsertTest{
<A, ABH extends A, C extends ABH, D, E extends D> A methode(a){return a;}
}
Es enstehen diese Constraints:
(TPH B <. TPH ABG),
(TPH ABG <. GTV A),
(void <. void)
Der Unify-Algorithmus berechnet aus diesen Constraints das Ergebnis:
(TPH B <. TPH ABG)
Sollten in diesem Fall nur "B extends ABG" eingesetzt werden, also das Ergebnis aus dem Unify
oder "B extends ABG, ABG extends A", also die Information die sich aus den erstellten Constraints ergeben.
War ein Fehler im TUnify.
Der Fall Typ <. GTV war nicht berücksichtigt worden.
Deshalb wurde der Constraint gelöscht.