diff options
author | Martin Odersky <odersky@gmail.com> | 2008-05-22 15:13:53 +0000 |
---|---|---|
committer | Martin Odersky <odersky@gmail.com> | 2008-05-22 15:13:53 +0000 |
commit | e2fd411f0a2f78547167149cada72dc347394749 (patch) | |
tree | 569aed0e77679caea16ee72d5fb545d6dd2fa955 /src/compiler/scala/tools/nsc/typechecker/Namers.scala | |
parent | ef6460b6e40f145c9538e714fbf22f9144e603ca (diff) | |
download | scala-e2fd411f0a2f78547167149cada72dc347394749.tar.gz scala-e2fd411f0a2f78547167149cada72dc347394749.tar.bz2 scala-e2fd411f0a2f78547167149cada72dc347394749.zip |
fixed #911.
Diffstat (limited to 'src/compiler/scala/tools/nsc/typechecker/Namers.scala')
-rw-r--r-- | src/compiler/scala/tools/nsc/typechecker/Namers.scala | 11 |
1 files changed, 8 insertions, 3 deletions
diff --git a/src/compiler/scala/tools/nsc/typechecker/Namers.scala b/src/compiler/scala/tools/nsc/typechecker/Namers.scala index 01e22eae85..5ac2f17e93 100644 --- a/src/compiler/scala/tools/nsc/typechecker/Namers.scala +++ b/src/compiler/scala/tools/nsc/typechecker/Namers.scala @@ -380,7 +380,7 @@ trait Namers { self: Analyzer => case TypeDef(mods, name, tparams, _) => var flags: Long = mods.flags if ((flags & PARAM) != 0) flags |= DEFERRED - var sym =new TypeSymbol(owner, tree.pos, name).setFlag(flags) + var sym = new TypeSymbol(owner, tree.pos, name).setFlag(flags) setPrivateWithin(tree, sym, mods) tree.symbol = enterInScope(sym) finishWith(tparams) @@ -640,10 +640,12 @@ trait Namers { self: Analyzer => } def makeMethodType(vparams: List[Symbol], restpe: Type) = { - val formals = vparams map (_.tpe) + val formals = vparams map (vparam => + if (meth hasFlag JAVA) objToAny(vparam.tpe) else vparam.tpe) val restpe1 = convertToDeBruijn(vparams, 1)(restpe) if (!vparams.isEmpty && vparams.head.hasFlag(IMPLICIT)) ImplicitMethodType(formals, restpe1) + else if (meth hasFlag JAVA) JavaMethodType(formals, restpe1) else MethodType(formals, restpe1) } @@ -757,7 +759,10 @@ trait Namers { self: Analyzer => val tp = typer.typedType(rhs).tpe match { case TypeBounds(lt, rt) if (lt.isError || rt.isError) => TypeBounds(AllClass.tpe, AnyClass.tpe) - case tp => tp + case tp @ TypeBounds(lt, rt) if (tpsym hasFlag JAVA) => + TypeBounds(lt, objToAny(rt)) + case tp => + tp } def verifyOverriding(other: Symbol): Boolean = { |