Skip to content
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

feat(jsii): Erase un-exported base interfaces instead of prohibiting those #426

Merged
merged 9 commits into from
Apr 4, 2019

Conversation

RomainMuller
Copy link
Contributor

@RomainMuller RomainMuller commented Apr 3, 2019

The previous version of interface erasure simply replaced un-exported
interfaces with whatever their exported bases were (if any), but did not
merge declarations of un-exported types into the exported ones.

This merges declarations from the erased interfaces into the exported
interface, and ignores any re-declaration that is hidden by an existing
declaration in the exported type, or another erased interface.

Fixes #417


By submitting this pull request, I confirm that my contribution is made under the terms of the Apache 2.0 license.

When an exported class extends an un-exported class, merge the declarations
of the un-exported base into the exported one, and replace the base class
relationship with the base's own base (recursively until an exported base is
found, or no further base class is declared - in which case the exported class
will not have a base class at all).

Declarations from the erased base class(es) will be ignored if there is another
declaration with the same name and type in the exported type (or another
erased base class that is closer to the exported type in the inheritance chain).

Fixes #417
The previous version of interface erasure simply replaced un-exported
interfaces with whatever their exported bases were (if any), but did not
merge declarations of un-exported types into the exported ones.

This merges declarations from the erased interfaces into the exported
interface, and ignores any re-declaration that is hidden by an existing
declaration in the exported type, or another erased interface.

Fixes #417
@RomainMuller RomainMuller self-assigned this Apr 3, 2019
@RomainMuller RomainMuller changed the title feat(jsii): Erase un-exported base interfaces feat(jsii): Erase un-exported base interfaces instead of prohibiting those Apr 3, 2019
@RomainMuller RomainMuller marked this pull request as ready for review April 3, 2019 14:48
@RomainMuller RomainMuller requested a review from a team as a code owner April 3, 2019 14:48
@RomainMuller RomainMuller added the pr/ready-to-merge This PR is ready to be merged. label Apr 3, 2019
@RomainMuller RomainMuller merged commit afbabff into master Apr 4, 2019
@RomainMuller RomainMuller deleted the rmuller/erase-non-exported-base-interfaces branch April 4, 2019 08:05
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
pr/ready-to-merge This PR is ready to be merged.
Projects
None yet
Development

Successfully merging this pull request may close these issues.

2 participants