Imports von importierten Klassen werden nicht berücksichtigt #290
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#290
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 eine Klasse mit dem JavaTX Compiler aufruft, von welcher eine weitere Klasse aufgeruft wird, verwendet der Typinferenz-Algorithmus nur die Imports, die in der ursprünglich aufgerufenen Klasse verwendet werden. Imports in der referenzierten Klasse werden nicht beachtet (zumindest beim Prüfen der Binary Operationen).
Beispiel
.
├── Bar.jav
├── Foo.jav
└── JavaTXcompiler-0.9-jar-with-dependencies.jar
Aufzurufende Klasse
Foo.jav
Von Foo.jav verwendete Klasse
Bar.jav
Ausgabe beim Aufruf
java -jar JavaTXcompiler-0.9-jar-with-dependencies.jar Foo.jav
:Das folgt glaube ich daher, dass die in Bar.jav importierten Klassen String und Integer bei der Überprüfung von Binary in der Typinferenz nicht beachtet werden, sondern lediglich die Imports aus der Klasse die ursprünglich vom Compiler aufgerufen wird (Foo.jav)
Debug Ansicht der Variable
info
in KlasseTypeStmt
Wenn
Foo.jav
so angepasst wird, dass String und Integer zusätzlich direkt hier importiert werden (obwohl diese Klasse sie gar nicht benutzt), erkennt die Typinferenz die Typen für die Binary ADD Operation und kompiliert.Debug Ansicht der Variable
info
in KlasseTypeStmt
Ich bin mir nicht sicher ob es funktioniert, musst du testen. Es müssen jetzt allerdings auch Klassen importiert werden die im selben Package sind. Das versuche ich noch zu fixen aber es schadet definitiv nicht die mit reinzuschreiben.