summaryrefslogtreecommitdiff
path: root/src/compiler/scala/tools/nsc/typechecker/Typers.scala
diff options
context:
space:
mode:
authorMartin Odersky <odersky@gmail.com>2006-01-30 17:45:42 +0000
committerMartin Odersky <odersky@gmail.com>2006-01-30 17:45:42 +0000
commit430648004416a3a04104fd49798d99db30e1fb4f (patch)
tree49a39203a49b1dd143cc960c62a4a93b9c8bf81e /src/compiler/scala/tools/nsc/typechecker/Typers.scala
parent7748d5fd7fe0d279c299f504e38aadcdf8116c01 (diff)
downloadscala-430648004416a3a04104fd49798d99db30e1fb4f.tar.gz
scala-430648004416a3a04104fd49798d99db30e1fb4f.tar.bz2
scala-430648004416a3a04104fd49798d99db30e1fb4f.zip
Diffstat (limited to 'src/compiler/scala/tools/nsc/typechecker/Typers.scala')
-rw-r--r--src/compiler/scala/tools/nsc/typechecker/Typers.scala10
1 files changed, 6 insertions, 4 deletions
diff --git a/src/compiler/scala/tools/nsc/typechecker/Typers.scala b/src/compiler/scala/tools/nsc/typechecker/Typers.scala
index b91c0c17b7..2a1502aa66 100644
--- a/src/compiler/scala/tools/nsc/typechecker/Typers.scala
+++ b/src/compiler/scala/tools/nsc/typechecker/Typers.scala
@@ -116,7 +116,8 @@ mixin class Typers requires Analyzer {
case ValDef(_, _, tpt, _) if (tpt.tpe == null) =>
"recursive "+sym+" needs type"
case DefDef(_, _, _, _, tpt, _) if (tpt.tpe == null) =>
- "recursive "+sym+" needs result type"
+ (if (sym.owner.isClass && sym.owner.info.member(sym.name).hasFlag(OVERLOADED)) "overloaded "
+ else "recursive ")+sym+" needs result type"
case _ =>
ex.getMessage()
}
@@ -705,7 +706,7 @@ mixin class Typers requires Analyzer {
superClazz.info.nonPrivateMember(alias.name) != alias)
alias = NoSymbol
if (alias != NoSymbol) {
- var ownAcc = clazz.info.decl(name)
+ var ownAcc = clazz.info.decl(name).suchThat(.hasFlag(PARAMACCESSOR))
if (ownAcc hasFlag ACCESSOR) ownAcc = ownAcc.accessed
if (settings.debug.value) log(""+ownAcc+" has alias "+alias + alias.locationString);//debug
ownAcc.asInstanceOf[TermSymbol].setAlias(alias)
@@ -1037,11 +1038,12 @@ mixin class Typers requires Analyzer {
while (defSym == NoSymbol && cx != NoContext) {
pre = cx.enclClass.prefix
defEntry = cx.scope.lookupEntry(name)
- if (defEntry != null) {
+ if (defEntry != null && defEntry.sym.tpe != NoType) {
defSym = defEntry.sym
} else {
cx = cx.enclClass
- defSym = pre.member(name) filter (sym => context.isAccessible(sym, pre, false))
+ defSym = pre.member(name) filter (
+ sym => sym.tpe != NoType && context.isAccessible(sym, pre, false))
if (defSym == NoSymbol) cx = cx.outer
}
}