Skip to content

Commit e4d9032

Browse files
committed
Java methods: JavaMethodType instead of MethodType, convert Object to Any
Fixes two bugs needed for java-override test: Namer was creating a MethodType instead of a JavaMethodType even though the JavaDefined flag was set on the DefDef. Following Scalac, Namer needs to convert Java method parameters of type j.l.Object to s.Any.
1 parent 7df36a3 commit e4d9032

File tree

4 files changed

+6
-0
lines changed

4 files changed

+6
-0
lines changed

src/dotty/tools/dotc/typer/Namer.scala

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -654,9 +654,14 @@ class Namer { typer: Typer =>
654654
else restpe
655655
val monotpe =
656656
(paramSymss :\ restpe1) { (params, restpe) =>
657+
val isJava = ddef.mods is JavaDefined
657658
val make =
658659
if (params.nonEmpty && (params.head is Implicit)) ImplicitMethodType
660+
else if(isJava) JavaMethodType
659661
else MethodType
662+
if(isJava) params.foreach { symbol =>
663+
if(symbol.info == defn.ObjectType) symbol.info = defn.AnyType
664+
}
660665
make.fromSymbols(params, restpe)
661666
}
662667
if (typeParams.nonEmpty) PolyType.fromSymbols(typeParams, monotpe)

test/dotc/tests.scala

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -57,6 +57,7 @@ class tests extends CompilerTest {
5757
@Test def pos_packageobject() = compileFile(posDir, "packageobject")
5858
@Test def pos_overloaded() = compileFile(posDir, "overloaded")
5959
@Test def pos_overrides() = compileFile(posDir, "overrides")
60+
@Test def pos_javaOverride() = compileDir(posDir + "java-override")
6061
@Test def pos_templateParents() = compileFile(posDir, "templateParents")
6162
@Test def pos_structural() = compileFile(posDir, "structural")
6263
@Test def pos_overloadedAccess = compileFile(posDir, "overloadedAccess")
File renamed without changes.
File renamed without changes.

0 commit comments

Comments
 (0)