diff options
author | Adriaan Moors <adriaan.moors@epfl.ch> | 2010-05-04 14:36:14 +0000 |
---|---|---|
committer | Adriaan Moors <adriaan.moors@epfl.ch> | 2010-05-04 14:36:14 +0000 |
commit | 20192c84a98212ba2de6f52553b4ec7dafb6c6c3 (patch) | |
tree | 317a4aa4118d13be5da3ece24debfa1528d337ac /src/compiler | |
parent | c4732915972ebe78d95a033350b176d7dbe75288 (diff) | |
download | scala-20192c84a98212ba2de6f52553b4ec7dafb6c6c3.tar.gz scala-20192c84a98212ba2de6f52553b4ec7dafb6c6c3.tar.bz2 scala-20192c84a98212ba2de6f52553b4ec7dafb6c6c3.zip |
Revert r21790: "closes #3373, #3177: validity c...
Revert r21790: "closes #3373, #3177: validity check of an implicit "
value should consider the value as well as its accessor Revert r21792: "
"sorry, last-minute edit broke build: re-added parens "
will investigate how it broke and why my local pre-commit tests did not
catch the failure...
no review
Diffstat (limited to 'src/compiler')
-rw-r--r-- | src/compiler/scala/tools/nsc/typechecker/Implicits.scala | 14 |
1 files changed, 4 insertions, 10 deletions
diff --git a/src/compiler/scala/tools/nsc/typechecker/Implicits.scala b/src/compiler/scala/tools/nsc/typechecker/Implicits.scala index e503d721f9..9a6c4cc401 100644 --- a/src/compiler/scala/tools/nsc/typechecker/Implicits.scala +++ b/src/compiler/scala/tools/nsc/typechecker/Implicits.scala @@ -520,7 +520,7 @@ self: Analyzer => * - the symbol's type is initialized * - the symbol comes from a classfile * - the symbol comes from a different sourcefile than the current one - * - the symbol and the accessed symbol's definitions come before, and do not contain the closest enclosing definition, // see #3373 + * - the symbol's definition comes before, and does not contain the closest enclosing definition, * - the symbol's definition is a val, var, or def with an explicit result type * The aim of this method is to prevent premature cyclic reference errors * by computing the types of only those implicits for which one of these @@ -539,15 +539,9 @@ self: Analyzer => case _ => true } } - def comesBefore(sym: Symbol, owner: Symbol) = { - val ownerPos = owner.pos.pointOrElse(Integer.MAX_VALUE) - sym.pos.pointOrElse(0) < ownerPos && ( - if(sym isGetterOrSetter) { - val symAcc = sym.accessed // #3373 - symAcc.pos.pointOrElse(0) < ownerPos && - !(owner.ownerChain exists (o => (o eq sym) || (o eq symAcc))) // probably faster to iterate only once, don't feel like duplicating hasTransOwner for this case - } else !(owner hasTransOwner sym)) // faster than owner.ownerChain contains sym - } + def comesBefore(sym: Symbol, owner: Symbol) = + sym.pos.pointOrElse(0) < owner.pos.pointOrElse(Integer.MAX_VALUE) && + !(owner.ownerChain contains sym) sym.isInitialized || sym.sourceFile == null || |