diff options
author | Martin Odersky <odersky@gmail.com> | 2006-01-30 17:45:42 +0000 |
---|---|---|
committer | Martin Odersky <odersky@gmail.com> | 2006-01-30 17:45:42 +0000 |
commit | 430648004416a3a04104fd49798d99db30e1fb4f (patch) | |
tree | 49a39203a49b1dd143cc960c62a4a93b9c8bf81e /src/compiler/scala/tools/nsc/typechecker/Typers.scala | |
parent | 7748d5fd7fe0d279c299f504e38aadcdf8116c01 (diff) | |
download | scala-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.scala | 10 |
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 } } |