Skip to content

Commit

Permalink
Merge pull request #9891 from som-snytt/issue/7212
Browse files Browse the repository at this point in the history
Prefer type of overridden member when inferring (under `-Xsource:3`)
  • Loading branch information
lrytz committed Feb 9, 2022
2 parents 60606ba + 817bdc3 commit 1707249
Show file tree
Hide file tree
Showing 5 changed files with 35 additions and 3 deletions.
7 changes: 4 additions & 3 deletions src/compiler/scala/tools/nsc/typechecker/Namers.scala
Expand Up @@ -1126,9 +1126,10 @@ trait Namers extends MethodSynthesis {
case ddef: DefDef if tree.symbol.isTermMacro => defnTyper.computeMacroDefType(ddef, pt)
case _ => defnTyper.computeType(tree.rhs, pt)
}

val defnTpe = dropIllegalStarTypes(widenIfNecessary(tree.symbol, rhsTpe, pt))
tree.tpt defineType defnTpe setPos tree.pos.focus
tree.tpt.defineType {
if (currentRun.isScala3 && !pt.isWildcard && pt != NoType && !pt.isErroneous) pt
else dropIllegalStarTypes(widenIfNecessary(tree.symbol, rhsTpe, pt))
}.setPos(tree.pos.focus)
tree.tpt.tpe
}

Expand Down
15 changes: 15 additions & 0 deletions test/files/pos/t7212.scala
@@ -0,0 +1,15 @@

// scalac: -Xsource:3

class A {
def f: Option[String] = Some("hello, world")
def remove(): Unit = ()
}
class B extends A {
override def f = None
override def remove() = ???
}
class C extends B {
override def f: Option[String] = Some("goodbye, cruel world")
override def remove(): Unit = println("removed! (not really)")
}
6 changes: 6 additions & 0 deletions test/files/pos/t7212b/JavaClient.java
@@ -0,0 +1,6 @@

public class JavaClient extends ScalaThing {
public void remove() {
throw new UnsupportedOperationException();
}
}
4 changes: 4 additions & 0 deletions test/files/pos/t7212b/JavaThing.java
@@ -0,0 +1,4 @@

public interface JavaThing {
default void remove() { throw new UnsupportedOperationException(); }
}
6 changes: 6 additions & 0 deletions test/files/pos/t7212b/ScalaThing.scala
@@ -0,0 +1,6 @@

// scalac: -Xsource:3

class ScalaThing extends JavaThing {
override def remove() = ???
}

0 comments on commit 1707249

Please sign in to comment.