Skip to content

Remove code from optimizer related to impl classes #90

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

Closed
retronym opened this issue Feb 25, 2016 · 0 comments
Closed

Remove code from optimizer related to impl classes #90

retronym opened this issue Feb 25, 2016 · 0 comments
Assignees
Milestone

Comments

@retronym
Copy link
Member

WIP: retronym/scala@7725312

Related to #86

I'm not going to submit this as part of my nuke-impl-classes branch to keep things manageable for review. @lrytz I'll assign this one to you so you can fine tune the purge.

@lrytz lrytz added this to the 2.12.0-M4 milestone Feb 28, 2016
retronym referenced this issue in retronym/scala Mar 9, 2016
  - Leave the members in the trait instead (these will be emitted as
    default methods in the interface)
  - Add the trait mixin constructor to the interface, rather than
    the impl class
  - Change the invocation of the mixin constructor to use an
    invokespecial. This is encoded with the AST:
    `Apply(Select(Super(_, _), mixinConstructor)))`

I've tried to remove all traces of the interface / implclass
distinction.

To allow us to call arbitrary super methods with invokespecial,
the backend will add a transitively inherited interface as a direct
when needed to circumvent the JVM restriction that invokespecial
can only use a direct parent as the receiver.
@adriaanm adriaanm modified the milestones: 2.12.0-M4, 2.12.0-M5 Apr 1, 2016
@lrytz lrytz closed this as completed Apr 7, 2016
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

No branches or pull requests

3 participants