diff options
author | Paul Phillips <paulp@improving.org> | 2012-11-19 14:50:29 -0800 |
---|---|---|
committer | Paul Phillips <paulp@improving.org> | 2012-11-24 01:34:18 -0800 |
commit | 7f1ba06f1313383fe60ce9bc6566afc78b3dae75 (patch) | |
tree | c31b7c36d1298bcc56c08f9dbd55ed5db97bbcd2 | |
parent | 5b498a2612f967c944fa1ed4f63a09d6acc41791 (diff) | |
download | scala-7f1ba06f1313383fe60ce9bc6566afc78b3dae75.tar.gz scala-7f1ba06f1313383fe60ce9bc6566afc78b3dae75.tar.bz2 scala-7f1ba06f1313383fe60ce9bc6566afc78b3dae75.zip |
Fix for SI-6687, wrong isVar logic.
Fields which back lazy vals need to be excluded via !isLazy
lest isVar return true.
-rw-r--r-- | src/reflect/scala/reflect/internal/Symbols.scala | 2 | ||||
-rw-r--r-- | test/files/run/t6687.scala | 10 |
2 files changed, 11 insertions, 1 deletions
diff --git a/src/reflect/scala/reflect/internal/Symbols.scala b/src/reflect/scala/reflect/internal/Symbols.scala index 9254cc9ac9..2a52178c4c 100644 --- a/src/reflect/scala/reflect/internal/Symbols.scala +++ b/src/reflect/scala/reflect/internal/Symbols.scala @@ -79,7 +79,7 @@ trait Symbols extends api.Symbols { self: SymbolTable => def isImplementationArtifact: Boolean = (this hasFlag BRIDGE) || (this hasFlag VBRIDGE) || (this hasFlag ARTIFACT) def isJava: Boolean = isJavaDefined def isVal: Boolean = isTerm && !isModule && !isMethod && !isMutable - def isVar: Boolean = isTerm && !isModule && !isMethod && isMutable + def isVar: Boolean = isTerm && !isModule && !isMethod && !isLazy && isMutable def newNestedSymbol(name: Name, pos: Position, newFlags: Long, isClass: Boolean): Symbol = name match { case n: TermName => newTermSymbol(n, pos, newFlags) diff --git a/test/files/run/t6687.scala b/test/files/run/t6687.scala new file mode 100644 index 0000000000..ee44e5f0d2 --- /dev/null +++ b/test/files/run/t6687.scala @@ -0,0 +1,10 @@ +import scala.reflect.runtime.universe._ + +class A { lazy val x = 1 } + +object Test { + def main(args: Array[String]): Unit = { + val vars = typeOf[A].members.toList filter (x => x.isTerm && x.asTerm.isVar) + assert(vars.isEmpty, vars) + } +} |