Skip to content

Commit 4316f94

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 9641b2a commit 4316f94

File tree

4 files changed

+6
-1
lines changed

4 files changed

+6
-1
lines changed

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

Lines changed: 5 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -654,10 +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
659-
else if (ddef.mods.is(JavaDefined)) JavaMethodType
660+
else if(isJava) JavaMethodType
660661
else MethodType
662+
if(isJava) params.foreach { symbol =>
663+
if(symbol.info.isDirectRef(defn.ObjectClass)) symbol.info = defn.AnyType
664+
}
661665
make.fromSymbols(params, restpe)
662666
}
663667
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")

0 commit comments

Comments
 (0)