summaryrefslogtreecommitdiff
path: root/src/compiler/scala/tools/nsc/typechecker/Typers.scala
diff options
context:
space:
mode:
authorMartin Odersky <odersky@gmail.com>2006-05-16 20:34:26 +0000
committerMartin Odersky <odersky@gmail.com>2006-05-16 20:34:26 +0000
commit8ab0305de71c63d8dcdba023fdb305202da57edd (patch)
tree8a4ac8b0939347008c0be1042468d05a32994f17 /src/compiler/scala/tools/nsc/typechecker/Typers.scala
parent5c11f952af7017a7d45b56f136a903e128aefcca (diff)
downloadscala-8ab0305de71c63d8dcdba023fdb305202da57edd.tar.gz
scala-8ab0305de71c63d8dcdba023fdb305202da57edd.tar.bz2
scala-8ab0305de71c63d8dcdba023fdb305202da57edd.zip
bug fixes
Diffstat (limited to 'src/compiler/scala/tools/nsc/typechecker/Typers.scala')
-rw-r--r--src/compiler/scala/tools/nsc/typechecker/Typers.scala11
1 files changed, 9 insertions, 2 deletions
diff --git a/src/compiler/scala/tools/nsc/typechecker/Typers.scala b/src/compiler/scala/tools/nsc/typechecker/Typers.scala
index d7390fd053..81ac6b0458 100644
--- a/src/compiler/scala/tools/nsc/typechecker/Typers.scala
+++ b/src/compiler/scala/tools/nsc/typechecker/Typers.scala
@@ -654,7 +654,12 @@ trait Typers requires Analyzer {
result
}
def setterDef: DefDef = {
- val setter = value.owner.info.decl(nme.getterToSetter(getter.name)).suchThat(.isSetter)
+ var setter = value.owner.info.decl(nme.getterToSetter(getter.name)).filter(
+ .tpe.=:=(MethodType(List(value.tpe.resultType), UnitClass.tpe)));
+ // note can't use .suchThat(.isSetter) above,
+ // because generated setters of abstract variables are not setters in this sense.
+ if (setter hasFlag OVERLOADED) setter = setter.alternatives.head;
+ // we will get a double definition error later anyway!
assert(setter != NoSymbol, getter);//debug
@@ -1564,7 +1569,9 @@ trait Typers requires Analyzer {
if (util.Statistics.enabled) selcnt = selcnt + 1
var qual1 = typedQualifier(qual)
if (name.isTypeName) qual1 = checkStable(qual1)
- typedSelect(qual1, name)
+ val tree1 = typedSelect(qual1, name)
+ if (qual1.symbol == RootPackage) copy.Ident(tree1, name)
+ else tree1
case Ident(name) =>
idcnt = idcnt + 1