diff options
author | Adriaan Moors <adriaan.moors@typesafe.com> | 2012-11-25 13:24:23 -0800 |
---|---|---|
committer | Adriaan Moors <adriaan.moors@typesafe.com> | 2012-11-25 13:24:23 -0800 |
commit | 5df0d40045903eacb56d61a32dbe8327897d3189 (patch) | |
tree | 17bb12c8f992e16211ad95fb0caaf18d984c12a6 | |
parent | aa817c24e6ffd53b43372e1b47702c29f5933b13 (diff) | |
parent | 8b54ec9f4ee8c5a0ab00f4b6ffd35c5c9913afd6 (diff) | |
download | scala-5df0d40045903eacb56d61a32dbe8327897d3189.tar.gz scala-5df0d40045903eacb56d61a32dbe8327897d3189.tar.bz2 scala-5df0d40045903eacb56d61a32dbe8327897d3189.zip |
Merge pull request #1647 from adriaanm/backport-1626-2.10.x
Fix for SI-6357, cycle with value classes.
-rw-r--r-- | src/compiler/scala/tools/nsc/typechecker/Namers.scala | 3 | ||||
-rw-r--r-- | test/files/neg/t6357.check | 4 | ||||
-rw-r--r-- | test/files/neg/t6357.scala | 6 |
3 files changed, 12 insertions, 1 deletions
diff --git a/src/compiler/scala/tools/nsc/typechecker/Namers.scala b/src/compiler/scala/tools/nsc/typechecker/Namers.scala index f5d4df14fe..36edd46f25 100644 --- a/src/compiler/scala/tools/nsc/typechecker/Namers.scala +++ b/src/compiler/scala/tools/nsc/typechecker/Namers.scala @@ -1289,7 +1289,8 @@ trait Namers extends MethodSynthesis { if (clazz.isDerivedValueClass) { log("Ensuring companion for derived value class " + name + " at " + cdef.pos.show) clazz setFlag FINAL - enclosingNamerWithScope(clazz.owner.info.decls).ensureCompanionObject(cdef) + // Don't force the owner's info lest we create cycles as in SI-6357. + enclosingNamerWithScope(clazz.owner.rawInfo.decls).ensureCompanionObject(cdef) } result diff --git a/test/files/neg/t6357.check b/test/files/neg/t6357.check new file mode 100644 index 0000000000..a534d1439a --- /dev/null +++ b/test/files/neg/t6357.check @@ -0,0 +1,4 @@ +t6357.scala:3: error: value class may not be a local class + final class Y(val j: Int) extends AnyVal + ^ +one error found diff --git a/test/files/neg/t6357.scala b/test/files/neg/t6357.scala new file mode 100644 index 0000000000..47f5629638 --- /dev/null +++ b/test/files/neg/t6357.scala @@ -0,0 +1,6 @@ +object K { + def q = { + final class Y(val j: Int) extends AnyVal + 3 + } +} |