Skip to content

CC: Overriding needs to be integrated with box adaptation #16416

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
odersky opened this issue Nov 25, 2022 · 1 comment
Closed

CC: Overriding needs to be integrated with box adaptation #16416

odersky opened this issue Nov 25, 2022 · 1 comment
Labels
area:experimental:cc Capture checking related itype:bug

Comments

@odersky
Copy link
Contributor

odersky commented Nov 25, 2022

Compiler version

3.3.0

Minimized example

This test currently fails:

abstract class A[X]:
  def foo(x: X): X

class IO
class C
def test(io: {*} IO) =
  class B extends A[{io} C]:    // error, but should work
    override def foo(x: {io} C): {io} C = ???

Output

7 |  class B extends A[{io} C]:
  |        ^
  |class B needs to be abstract, since def foo(x: X): X in class A is not defined
  |(Note that
  | parameter X in def foo(x: X): X in class A does not match
  | parameter {io} C in override def foo(x: {io} C): {io} C in class B
  | )
*/

Expectation

Arguably there should be a way to achieve such overridings. You can think of it as inserting a bridge method in B that implements the method in A by forwarding to the method in B and box-adapting argument and result. However, it seems that such a box adaptation could in general require some capability in B that was not required before. So this would need to be worked into the general capability propagation framework.

The test is in #16415 (as a neg-test, to be re-classified once this works).

@odersky odersky added the stat:needs triage Every issue needs to have an "area" and "itype" label label Nov 25, 2022
@szymon-rd szymon-rd added area:experimental:cc Capture checking related itype:bug and removed stat:needs triage Every issue needs to have an "area" and "itype" label labels Nov 25, 2022
@Linyxus
Copy link
Contributor

Linyxus commented Feb 6, 2023

Fixed by #16479.

@Linyxus Linyxus closed this as completed Feb 6, 2023
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
area:experimental:cc Capture checking related itype:bug
Projects
None yet
Development

No branches or pull requests

3 participants