diff options
author | Ondrej Lhotak <olhotak@uwaterloo.ca> | 2015-02-02 09:59:15 +0100 |
---|---|---|
committer | Ondrej Lhotak <olhotak@uwaterloo.ca> | 2015-02-07 19:27:39 +0100 |
commit | 4316f9440312947ffbc83a0c3c19053f4393bc1a (patch) | |
tree | 0ffd3b2ffb0eedb2bab72689cf2d78ee8995dd26 /src/dotty/tools/dotc/typer/Namer.scala | |
parent | 9641b2a417f203b5c2e88e6330b2230713471307 (diff) | |
download | dotty-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.scala | 6 |
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) |