Skip to content

Bad inference of override with dependent result #12621

Open
@som-snytt

Description

@som-snytt

Reproduction steps

  ~ skala -Xsource:3
Welcome to Scala 2.13.9-20220720-072233-0771b75 (OpenJDK 64-Bit Server VM, Java 18.0.1.1).
Type in expressions for evaluation. Or try :help.

scala> class C { def f(sb: StringBuilder): sb.type = sb }
class C

scala> class D extends C { override def f(sb: StringBuilder) = sb }
                                        ^
       error: incompatible type in overriding
       def f(sb: StringBuilder): sb.type (defined in class C);
        found   : (sb: StringBuilder): StringBuilder
        required: (sb: StringBuilder): sb.type

Problem

Under -Xsource:3, infer the result type from the overridden method.

Welcome to Scala 3.1.3 (18.0.1.1, Java OpenJDK 64-Bit Server VM).
Type in expressions for evaluation. Or try :help.

scala> class C { def f(sb: StringBuilder): sb.type = sb }
// defined class C

scala> class D extends C { override def f(sb: StringBuilder) = sb }
// defined class D

scala>

Metadata

Metadata

Assignees

Type

No type

Projects

No projects

Relationships

None yet

Development

No branches or pull requests

Issue actions