diff options
author | Martin Odersky <odersky@gmail.com> | 2004-03-26 14:33:48 +0000 |
---|---|---|
committer | Martin Odersky <odersky@gmail.com> | 2004-03-26 14:33:48 +0000 |
commit | 56835ce1396b78b58b683f3d034d2253a508f1b6 (patch) | |
tree | b3aff6d536299b5dc690d20725ad55f578ab0d0b /sources | |
parent | b9295636593fc7e200a70fa46af25eb60782090f (diff) | |
download | scala-56835ce1396b78b58b683f3d034d2253a508f1b6.tar.gz scala-56835ce1396b78b58b683f3d034d2253a508f1b6.tar.bz2 scala-56835ce1396b78b58b683f3d034d2253a508f1b6.zip |
*** empty log message ***
Diffstat (limited to 'sources')
-rw-r--r-- | sources/scala/tools/scalac/typechecker/Infer.scala | 54 |
1 files changed, 28 insertions, 26 deletions
diff --git a/sources/scala/tools/scalac/typechecker/Infer.scala b/sources/scala/tools/scalac/typechecker/Infer.scala index dde89e51be..54dd1f748f 100644 --- a/sources/scala/tools/scalac/typechecker/Infer.scala +++ b/sources/scala/tools/scalac/typechecker/Infer.scala @@ -61,32 +61,34 @@ class Infer(global: scalac_Global, gen: TreeGen, make: TreeFactory) extends scal private def companionObjViews(tp: Type, clazz: Symbol): List[View] = { if (clazz.kind == CLASS && !clazz.isModuleClass() && !clazz.isCaseClass()) { var obj = clazz.owner().info().lookupNonPrivate(clazz.name.toTermName()); - //System.out.println("comp obj view " + tp + " " + obj);//DEBUG - obj.getType() match { - case Type$OverloadedType(alts, alttypes) => - var i = 0; while (i < alts.length) { - if (alts(i).isModule()) obj = alts(i); - i = i + 1 - } - case _ => - } - if (obj.isModule()) { - val qual = if (tp.prefix() == Type.NoType) Tree.Empty - else gen.mkRef(Position.NOPOS, tp.prefix(), obj); - val viewsym = obj.info().lookupNonPrivate(Names.view); - if (viewsym.kind == VAL) { - obj.getType().memberType(viewsym) match { - case Type$OverloadedType(alts, alttypes) => - var i = alttypes.length - 1; - var vs: List[View] = List(); - while (i >= 0) { - vs = View(alts(i), alttypes(i), qual, Context.NONE) :: vs; - i = i - 1 - } - vs - case viewtype => - List(View(viewsym, viewtype, qual, Context.NONE)) - } + if (obj.isExternal() == clazz.isExternal()) { + //System.out.println("comp obj view " + tp + " " + obj);//DEBUG + obj.getType() match { + case Type$OverloadedType(alts, alttypes) => + var i = 0; while (i < alts.length) { + if (alts(i).isModule()) obj = alts(i); + i = i + 1 + } + case _ => + } + if (obj.isModule()) { + val qual = if (tp.prefix() == Type.NoType) Tree.Empty + else gen.mkRef(Position.NOPOS, tp.prefix(), obj); + val viewsym = obj.info().lookupNonPrivate(Names.view); + if (viewsym.kind == VAL) { + obj.getType().memberType(viewsym) match { + case Type$OverloadedType(alts, alttypes) => + var i = alttypes.length - 1; + var vs: List[View] = List(); + while (i >= 0) { + vs = View(alts(i), alttypes(i), qual, Context.NONE) :: vs; + i = i - 1 + } + vs + case viewtype => + List(View(viewsym, viewtype, qual, Context.NONE)) + } + } else List() } else List() } else List() } else List() |