summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorPaul Phillips <paulp@improving.org>2012-11-19 14:50:29 -0800
committerPaul Phillips <paulp@improving.org>2012-11-24 01:34:18 -0800
commit7f1ba06f1313383fe60ce9bc6566afc78b3dae75 (patch)
treec31b7c36d1298bcc56c08f9dbd55ed5db97bbcd2
parent5b498a2612f967c944fa1ed4f63a09d6acc41791 (diff)
downloadscala-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.scala2
-rw-r--r--test/files/run/t6687.scala10
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)
+ }
+}