summaryrefslogtreecommitdiff
path: root/sources/scala/tools/nsc/typechecker/Typers.scala
diff options
context:
space:
mode:
authorMartin Odersky <odersky@gmail.com>2005-07-07 16:01:09 +0000
committerMartin Odersky <odersky@gmail.com>2005-07-07 16:01:09 +0000
commit5e728c60b7eb4bcc7e3a2476a2d5a6947698bfe4 (patch)
treec900577e7d683e608ff56aa003083a9a320b0b10 /sources/scala/tools/nsc/typechecker/Typers.scala
parent1e33553484b0a842b8e8ade819294c028892e253 (diff)
downloadscala-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-xsources/scala/tools/nsc/typechecker/Typers.scala11
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;
}