diff options
author | Martin Odersky <odersky@gmail.com> | 2005-07-07 16:01:09 +0000 |
---|---|---|
committer | Martin Odersky <odersky@gmail.com> | 2005-07-07 16:01:09 +0000 |
commit | 5e728c60b7eb4bcc7e3a2476a2d5a6947698bfe4 (patch) | |
tree | c900577e7d683e608ff56aa003083a9a320b0b10 /sources/scala/tools/nsc/typechecker/Typers.scala | |
parent | 1e33553484b0a842b8e8ade819294c028892e253 (diff) | |
download | scala-5e728c60b7eb4bcc7e3a2476a2d5a6947698bfe4.tar.gz scala-5e728c60b7eb4bcc7e3a2476a2d5a6947698bfe4.tar.bz2 scala-5e728c60b7eb4bcc7e3a2476a2d5a6947698bfe4.zip |
*** empty log message ***
Diffstat (limited to 'sources/scala/tools/nsc/typechecker/Typers.scala')
-rwxr-xr-x | sources/scala/tools/nsc/typechecker/Typers.scala | 11 |
1 files changed, 7 insertions, 4 deletions
diff --git a/sources/scala/tools/nsc/typechecker/Typers.scala b/sources/scala/tools/nsc/typechecker/Typers.scala index 0034f08679..9875fdac28 100755 --- a/sources/scala/tools/nsc/typechecker/Typers.scala +++ b/sources/scala/tools/nsc/typechecker/Typers.scala @@ -247,7 +247,7 @@ abstract class Typers: Analyzer { * If all this fails, error */ // def adapt(tree: Tree, mode: int, pt: Type): Tree = { - private def adapt(tree: Tree, mode: int, pt: Type): Tree = tree.tpe match { + protected def adapt(tree: Tree, mode: int, pt: Type): Tree = tree.tpe match { case ct @ ConstantType(value) if ((mode & TYPEmode) == 0 && (ct <:< pt)) => // (0) copy.Literal(tree, value) case OverloadedType(pre, alts) if ((mode & FUNmode) == 0) => // (1) @@ -458,8 +458,11 @@ abstract class Typers: Analyzer { val vdef = copy.ValDef(stat, mods | PRIVATE | LOCAL, nme.LOCAL_NAME(name), tpe, rhs); val getter: DefDef = { val sym = vdef.symbol; - val getter = sym.owner.info.decls.lookup(name).suchThat(.hasFlag(ACCESSOR)); - assert(getter != NoSymbol, vdef); + val decls = sym.owner.info.decls; + var getterEntry = decls.lookupEntry(name); + while (!(getterEntry.sym hasFlag ACCESSOR)) + getterEntry = decls.lookupNextEntry(getterEntry); + val getter = getterEntry.sym; val result = atPos(vdef.pos)( DefDef(getter, vparamss => if ((mods & DEFERRED) != 0) EmptyTree else typed(gen.mkRef(sym), EXPRmode, sym.tpe))); @@ -1065,7 +1068,7 @@ abstract class Typers: Analyzer { else if (!context.owner.hasFlag(INITIALIZED)) errorTree(tree, "method " + context.owner + " has return statement; needs result type") else { - val expr1: Tree = typed(expr, enclFun.tpe.resultType); + val expr1: Tree = typed(expr, enclFun.tpe.finalResultType); copy.Return(tree, expr1) setSymbol enclFun setType AllClass.tpe; } |