summaryrefslogtreecommitdiff
path: root/src/compiler/scala/tools/nsc/typechecker/Namers.scala
diff options
context:
space:
mode:
authorMartin Odersky <odersky@gmail.com>2008-05-22 15:13:53 +0000
committerMartin Odersky <odersky@gmail.com>2008-05-22 15:13:53 +0000
commite2fd411f0a2f78547167149cada72dc347394749 (patch)
tree569aed0e77679caea16ee72d5fb545d6dd2fa955 /src/compiler/scala/tools/nsc/typechecker/Namers.scala
parentef6460b6e40f145c9538e714fbf22f9144e603ca (diff)
downloadscala-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.scala11
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 = {