diff options
author | Martin Odersky <odersky@gmail.com> | 2006-09-03 14:32:12 +0000 |
---|---|---|
committer | Martin Odersky <odersky@gmail.com> | 2006-09-03 14:32:12 +0000 |
commit | 132637e42e4b45dd73b907ea5f63273876d2e99f (patch) | |
tree | f28d76dd4628637a55bc5749ef45481a83169139 /src/compiler/scala/tools/nsc/ast/TreeGen.scala | |
parent | bacd5d56f4ba1dc311cc68625535c270db93cb17 (diff) | |
download | scala-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.scala | 11 |
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. */ |