aboutsummaryrefslogtreecommitdiff
path: root/src/dotty/tools/dotc/typer/Namer.scala
diff options
context:
space:
mode:
authorOndrej Lhotak <olhotak@uwaterloo.ca>2015-02-02 09:59:15 +0100
committerOndrej Lhotak <olhotak@uwaterloo.ca>2015-02-07 19:27:39 +0100
commit4316f9440312947ffbc83a0c3c19053f4393bc1a (patch)
tree0ffd3b2ffb0eedb2bab72689cf2d78ee8995dd26 /src/dotty/tools/dotc/typer/Namer.scala
parent9641b2a417f203b5c2e88e6330b2230713471307 (diff)
downloaddotty-4316f9440312947ffbc83a0c3c19053f4393bc1a.tar.gz
dotty-4316f9440312947ffbc83a0c3c19053f4393bc1a.tar.bz2
dotty-4316f9440312947ffbc83a0c3c19053f4393bc1a.zip
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.
Diffstat (limited to 'src/dotty/tools/dotc/typer/Namer.scala')
-rw-r--r--src/dotty/tools/dotc/typer/Namer.scala6
1 files changed, 5 insertions, 1 deletions
diff --git a/src/dotty/tools/dotc/typer/Namer.scala b/src/dotty/tools/dotc/typer/Namer.scala
index 854af688a..c522a5998 100644
--- a/src/dotty/tools/dotc/typer/Namer.scala
+++ b/src/dotty/tools/dotc/typer/Namer.scala
@@ -654,10 +654,14 @@ class Namer { typer: Typer =>
else restpe
val monotpe =
(paramSymss :\ restpe1) { (params, restpe) =>
+ val isJava = ddef.mods is JavaDefined
val make =
if (params.nonEmpty && (params.head is Implicit)) ImplicitMethodType
- else if (ddef.mods.is(JavaDefined)) JavaMethodType
+ else if(isJava) JavaMethodType
else MethodType
+ if(isJava) params.foreach { symbol =>
+ if(symbol.info.isDirectRef(defn.ObjectClass)) symbol.info = defn.AnyType
+ }
make.fromSymbols(params, restpe)
}
if (typeParams.nonEmpty) PolyType.fromSymbols(typeParams, monotpe)