Falscher Bytecode bei Konstruktoraufruf mit Subtyp #329
Labels
No Label
Codegen
confirmed
duplicate
Eclipse-Plugin
Feature Request
generics
in progress
invalid
JavaCompilerCore
needs info
Parser
Trash
Type
Unify
won't fix
works for me
No Milestone
No project
No Assignees
2 Participants
Notifications
Due Date
No due date set.
Dependencies
No dependencies set.
Reference: JavaTX/JavaCompilerCore#329
Loading…
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?
Wenn man den eigenen Konstruktor mit this(...) aufruft und ein Subtyp des erwarteten Parameters als Parameter angibt, stimmt er Bytecode nicht. Allerdings stimmt der Bytecode für einen super()- oder einen normalen Methodenaufruf.
Beispiel
In diesem Fall wird folgendes inferiert:
Allerdings sieht der Aufruf des überladenen Konstruktors im Standardkonstruktor im Bytecode folgendermaßen aus:
Es wird also versucht den überladenen Konstruktor mit Integer aufzurufen, richtig wäre aber Number.
Wie gesagt ist der generierte Bytecode bei normalen Methodenaufrufen und super aufrufen korrekt, i.e.
Die Signatur ist immernoch falsch, selbes Problem wie #332