summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorJason Zaugg <jzaugg@gmail.com>2016-09-15 15:37:31 +1000
committerGitHub <noreply@github.com>2016-09-15 15:37:31 +1000
commitde7cddd1905c730685f5ef2b74a6c0c1f30f2dd2 (patch)
tree2e43ad26ccf1de032f8207f14f2a5a911ccfdac1
parentbe43eb5fba5da844f664cca10783bb869c7b76e7 (diff)
parenta919fd7fa1f3c39dc396e7758240354e6fb0e79b (diff)
downloadscala-de7cddd1905c730685f5ef2b74a6c0c1f30f2dd2.tar.gz
scala-de7cddd1905c730685f5ef2b74a6c0c1f30f2dd2.tar.bz2
scala-de7cddd1905c730685f5ef2b74a6c0c1f30f2dd2.zip
Merge pull request #5395 from retronym/pr/5394
Avoid omitting constant typed vals in constructors
-rw-r--r--src/compiler/scala/tools/nsc/transform/Fields.scala2
-rw-r--r--test/files/pos/shapeless-regression.scala16
2 files changed, 17 insertions, 1 deletions
diff --git a/src/compiler/scala/tools/nsc/transform/Fields.scala b/src/compiler/scala/tools/nsc/transform/Fields.scala
index 8ebfdcc647..894d0a1701 100644
--- a/src/compiler/scala/tools/nsc/transform/Fields.scala
+++ b/src/compiler/scala/tools/nsc/transform/Fields.scala
@@ -696,7 +696,7 @@ abstract class Fields extends InfoTransform with ast.TreeDSL with TypingTransfor
// drop the val for (a) constant (pure & not-stored) and (b) not-stored (but still effectful) fields
case ValDef(mods, _, _, rhs) if (rhs ne EmptyTree) && !excludedAccessorOrFieldByFlags(statSym)
- && fieldMemoizationIn(statSym, currOwner).constantTyped =>
+ && currOwner.isClass && fieldMemoizationIn(statSym, currOwner).constantTyped =>
EmptyThicket
case ModuleDef(_, _, impl) =>
diff --git a/test/files/pos/shapeless-regression.scala b/test/files/pos/shapeless-regression.scala
new file mode 100644
index 0000000000..f3a1ed1ba0
--- /dev/null
+++ b/test/files/pos/shapeless-regression.scala
@@ -0,0 +1,16 @@
+class W[T <: AnyRef](val t: T) {
+ val v: T {} = t
+}
+
+object W {
+ def apply[T <: AnyRef](t: T) = new W[t.type](t)
+}
+
+object RightAssoc {
+ def ra_:[T](t: T): Unit = ()
+}
+
+object Boom {
+ W("fooo").v ra_: RightAssoc
+}
+