summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorMartin Odersky <odersky@gmail.com>2004-03-26 14:33:48 +0000
committerMartin Odersky <odersky@gmail.com>2004-03-26 14:33:48 +0000
commit56835ce1396b78b58b683f3d034d2253a508f1b6 (patch)
treeb3aff6d536299b5dc690d20725ad55f578ab0d0b
parentb9295636593fc7e200a70fa46af25eb60782090f (diff)
downloadscala-56835ce1396b78b58b683f3d034d2253a508f1b6.tar.gz
scala-56835ce1396b78b58b683f3d034d2253a508f1b6.tar.bz2
scala-56835ce1396b78b58b683f3d034d2253a508f1b6.zip
*** empty log message ***
-rw-r--r--sources/scala/tools/scalac/typechecker/Infer.scala54
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()