summaryrefslogtreecommitdiff
path: root/src/compiler/scala/tools/nsc/ast/TreeGen.scala
diff options
context:
space:
mode:
authorMartin Odersky <odersky@gmail.com>2006-09-03 14:32:12 +0000
committerMartin Odersky <odersky@gmail.com>2006-09-03 14:32:12 +0000
commit132637e42e4b45dd73b907ea5f63273876d2e99f (patch)
treef28d76dd4628637a55bc5749ef45481a83169139 /src/compiler/scala/tools/nsc/ast/TreeGen.scala
parentbacd5d56f4ba1dc311cc68625535c270db93cb17 (diff)
downloadscala-132637e42e4b45dd73b907ea5f63273876d2e99f.tar.gz
scala-132637e42e4b45dd73b907ea5f63273876d2e99f.tar.bz2
scala-132637e42e4b45dd73b907ea5f63273876d2e99f.zip
fixed bug 722
Diffstat (limited to 'src/compiler/scala/tools/nsc/ast/TreeGen.scala')
-rw-r--r--src/compiler/scala/tools/nsc/ast/TreeGen.scala11
1 files changed, 7 insertions, 4 deletions
diff --git a/src/compiler/scala/tools/nsc/ast/TreeGen.scala b/src/compiler/scala/tools/nsc/ast/TreeGen.scala
index 76bf0793c7..96110f8dc1 100644
--- a/src/compiler/scala/tools/nsc/ast/TreeGen.scala
+++ b/src/compiler/scala/tools/nsc/ast/TreeGen.scala
@@ -37,7 +37,7 @@ abstract class TreeGen {
if (sym.isRoot) {
mkAttributedThis(sym)
} else if (sym.isModuleClass) {
- val qual = mkAttributedSelect(mkAttributedQualifier(pre), sym.sourceModule);
+ val qual = mkAttributedRef(pre, sym.sourceModule);
qual.tpe match {
case MethodType(List(), restpe) =>
Apply(qual, List()) setType restpe
@@ -45,7 +45,7 @@ abstract class TreeGen {
qual
}
} else {
- assert(phase.erasedTypes, ""+sym+sym.isModuleClass)
+ assert(phase.erasedTypes)
mkAttributedThis(sym)
}
case _ =>
@@ -55,8 +55,11 @@ abstract class TreeGen {
/** Builds a reference to given symbol with given stable prefix. */
def mkAttributedRef(pre: Type, sym: Symbol): Tree = {
val qual = mkAttributedQualifier(pre)
- if (qual == EmptyTree) mkAttributedIdent(sym)
- else mkAttributedSelect(qual, sym)
+ qual match {
+ case EmptyTree => mkAttributedIdent(sym)
+ case This(clazz) if (qual.symbol.isRoot || qual.symbol.isEmptyPackageClass) => mkAttributedIdent(sym)
+ case _ => mkAttributedSelect(qual, sym)
+ }
}
/** Builds a reference to given symbol. */