-
Notifications
You must be signed in to change notification settings - Fork 93
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Incremental delete of duplicate interfaces (IInvocationContextCore and IProblemLocationCore) #1138
Incremental delete of duplicate interfaces (IInvocationContextCore and IProblemLocationCore) #1138
Conversation
7058105
to
97c1f2c
Compare
The |
Inspecting the changed files to see how many changed files have
In short, the only API classes that have been modified are |
97c1f2c
to
88421e5
Compare
green build now |
5bdf5b3
to
fc8c1b3
Compare
8eb7922
to
7b3e049
Compare
7b3e049
to
6ff28f0
Compare
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Change looks good to me. Just a few comments on some minor things.
…ationCore Signed-off-by: Rob Stryker <stryker@redhat.com> Adjust problem filters Signed-off-by: Rob Stryker <stryker@redhat.com>
Signed-off-by: Rob Stryker <stryker@redhat.com>
6ff28f0
to
1b26d3c
Compare
What it does
There is a massive duplication of interfaces that have appeared as code has moved from jdt.ui to jdt.core.manipulations. Most of these interfaces never had any reason to exist, as the original interfaces could have simply been pushed down to the core plugin directly. This PR is the first step in removing some of the identical and duplicate interfaces.
This PR consists of a single commit above the above-mentioned PR dependency, and it effectively does the following: Removal of internal interfaces
IInvocationContextCore
andIProblemLocationCore
Both of these interfaces are identically duplicated by
IInvocationContext
andIProblemLocation
respectively. This should be a very painless migration, even for illegal extenders like jdt.ls.Why this is needed
While pushing code related to the completion subprocessors from jdt.ui to jdt.core.manipulations, one specific (and hefty) subprocessor, LocalCorrectionsSubProcessor, uses a lot of proposals that wrap
CleanUp
objects, using either theICleanUp
orICleanUpCore
interfaces, as well as theAbstractCleanUp
orAbstractCleanUpCore
abstract classes.While identical interfaces are not much of a problem, having two parallel-but-slightly-different abstract classes leads to two parallel heirarchies, and clients can not simply extend both or support both very easily. While trying to untangle these specific issues, the myriad of other duplicate (and otherwise harmless) interfaces that are in the affected code also begin to add complexity to the solution.
With that in mind, removing the most unoffensive interfaces first becomes the safest course of action, while at the same time building our way up to tackling the larger parallel-heirarchy issue via small and manageable changes to the heirarchy as the situation becomes less cluttered.
How to test
Removal of two identically-duplicated internal interfaces should not have much of an affect on the behavior of the codebase at all. The existing test suite should be more than sufficient.
Author checklist