Doppelte Code Generierung und doppelte Typinferenz bei Field-Initialisierung #203
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#203
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?
ClassOrInterface.java:
Einfuegen eines Attributes
private Optional fieldInitializations;
Hierin werden alle Initialisierungen als Block:
{
f1 = exp_1
f2 = exp_2
...
fn = exp_n
}
in einem Konstruktor Constructor.java gespeichert.
SyntaxTreeGenerator.java, Construtor.java:
In der Methode convert(int modifiers, Java8Parser.MethodHeaderContext header, Java8Parser.MethodBodyContext body, JavaClassName parentClass, RefType superClass, GenericsRegistry localGenerics)
wurde das Argument fieldInitializations aus dem Aufruf des Konstruktor Constructor entfernt.
Damit sind die fieldInitializations nicht mehr in den Konstruktoren der abstrakten Syntax enthalten.
TYPE.java:
In getConstraintsClass wird die Methode getConstraintsConstructor für den Konstruktur der Initialisierungen aufgerufen, um die Type-Constraints der Initialierungen zu bestimmen.
Nun muss noch die Bytecode-Generierung an die Veränderung angepasst werden:
In fieldInitializations werden nicht nur die Initialisierungen gespeichert sondern auch SuperCalls.
SuperCalls müssen von fieldInitializations entfernt werden.
branch: bytecode2
commit:
964b73e8c4
Ich habe nun die SuperCalls aus den fieldInitializations entfernt.
Zusätzlich habe ich noch die SuperCalls aus allen Constructoren entfernt.
Diese Müssen nun bei der Bytecodegenerierung eingefügt werden, obwohl sie nicht in der abstrakten Syntax stehen.
Im Momnet funktionieren daher alle Unittest nicht.