Add this suggestion to a batch that can be applied as a single commit.
This suggestion is invalid because no changes were made to the code.
Suggestions cannot be applied while the pull request is closed.
Suggestions cannot be applied while viewing a subset of changes.
Only one suggestion per line can be applied in a batch.
Add this suggestion to a batch that can be applied as a single commit.
Applying suggestions on deleted lines is not supported.
You must change the existing code in this line in order to create a valid suggestion.
Outdated suggestions cannot be applied.
This suggestion has been applied or marked resolved.
Suggestions cannot be applied from pending reviews.
Suggestions cannot be applied on multi-line comments.
Suggestions cannot be applied while the pull request is queued to merge.
Suggestion cannot be applied right now. Please check back later.
This PR fixes #2738, fixes #2735, fixes #2729, fixes #2640, fixes #2633, fixes #285
The first commit moves all Eclipse only methods into a seperate inner class which only gets touched if Eclipse is available. I also tried to simplify the code. Basically this is a simpler version of #2634 that does not break the detection of already implemented methods.
The second commit solves the classloading problem by
ShadowClassLoader
to reuse classes of the prepended classloader instead of creating a new onesecj
classes in ecj related methods inPatchFixesHider
. As thePatch*
classes get loaded byShadowClassLoader
they also use it for resolving all the ecj classes.transplant()
forskipResolveInitializerIfAlreadyCalled(2)
. That is required because casting of the returnedTypeBinding
is not possible for method replacements.I also removed the
PatchExtensionMethodPortal
because it was not used at all.These changes are inspired a lot by rgra@6503177 from @rgra, thanks a lot for that and the tycho example project.