Skip to content

Commit 03a37a5

Browse files
committed
fix JavaMethodType creation and parameter matching of JavaMethodTypes
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. TypeComparer.matchingParams had the cases mixed up: it considered a j.l.Object in Scala code to match a s.Any in Java code. It should be that Object in Java code matches Any in Scala code.
1 parent 7df36a3 commit 03a37a5

File tree

5 files changed

+4
-2
lines changed

5 files changed

+4
-2
lines changed

src/dotty/tools/dotc/core/TypeComparer.scala

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -681,8 +681,8 @@ class TypeComparer(initctx: Context) extends DotClass with ConstraintHandling wi
681681
formals2 match {
682682
case formal2 :: rest2 =>
683683
(isSameType(formal1, formal2)
684-
|| isJava1 && (formal2 isRef ObjectClass) && (formal1 isRef AnyClass)
685-
|| isJava2 && (formal1 isRef ObjectClass) && (formal2 isRef AnyClass)) &&
684+
|| isJava1 && (formal1 isRef ObjectClass) && (formal2 isRef AnyClass)
685+
|| isJava2 && (formal2 isRef ObjectClass) && (formal1 isRef AnyClass)) &&
686686
matchingParams(rest1, rest2, isJava1, isJava2)
687687
case nil =>
688688
false

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

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -656,6 +656,7 @@ class Namer { typer: Typer =>
656656
(paramSymss :\ restpe1) { (params, restpe) =>
657657
val make =
658658
if (params.nonEmpty && (params.head is Implicit)) ImplicitMethodType
659+
else if(ddef.mods is JavaDefined) JavaMethodType
659660
else MethodType
660661
make.fromSymbols(params, restpe)
661662
}

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)