diff options
author | Paul Phillips <paulp@improving.org> | 2009-10-17 12:36:14 +0000 |
---|---|---|
committer | Paul Phillips <paulp@improving.org> | 2009-10-17 12:36:14 +0000 |
commit | 4cb4ad76b213389b828ae9c1ab26c9d7a1c3a7c2 (patch) | |
tree | 26408ef80038d59cd9f713222edd659b30f88253 /src/compiler | |
parent | 3949726f1f053c9850d71064ec6c16819248c4e8 (diff) | |
download | scala-4cb4ad76b213389b828ae9c1ab26c9d7a1c3a7c2.tar.gz scala-4cb4ad76b213389b828ae9c1ab26c9d7a1c3a7c2.tar.bz2 scala-4cb4ad76b213389b828ae9c1ab26c9d7a1c3a7c2.zip |
Fix and test cases for ticket #443.
flags on AnyVal from FINAL|SEALED to ABSTRACT|SEALED. This appears
correct and without ill effect, but if anyone spots new anyval oddness
you know where to look.
Diffstat (limited to 'src/compiler')
-rw-r--r-- | src/compiler/scala/tools/nsc/matching/MatrixAdditions.scala | 10 | ||||
-rw-r--r-- | src/compiler/scala/tools/nsc/symtab/Definitions.scala | 2 |
2 files changed, 4 insertions, 8 deletions
diff --git a/src/compiler/scala/tools/nsc/matching/MatrixAdditions.scala b/src/compiler/scala/tools/nsc/matching/MatrixAdditions.scala index 4a1a423b7f..37ddbbc671 100644 --- a/src/compiler/scala/tools/nsc/matching/MatrixAdditions.scala +++ b/src/compiler/scala/tools/nsc/matching/MatrixAdditions.scala @@ -198,14 +198,10 @@ trait MatrixAdditions extends ast.TreeDSL { s resetFlag MUTABLE ; true } // side effects MUTABLE flag private def sealedSymsFor(s: Symbol): Set[Symbol] = { - def countSealed(child: Symbol) = { - // include base class only if non-abstract - def baseSet = if (child hasFlag ABSTRACT) Set() else Set(child) - sealedSymsFor(child) ++ baseSet - } - if (s hasFlag SEALED) s.children flatMap countSealed - else Set() + val kids = s.children flatMap sealedSymsFor + if (s hasFlag ABSTRACT) kids else kids + s } + private lazy val inexhaustives: List[List[Combo]] = { val collected = for ((pv, i) <- tvars.zipWithIndex ; val sym = pv.lhs ; if requiresExhaustive(sym)) yield diff --git a/src/compiler/scala/tools/nsc/symtab/Definitions.scala b/src/compiler/scala/tools/nsc/symtab/Definitions.scala index 9c2df4a6cb..6aa18d583f 100644 --- a/src/compiler/scala/tools/nsc/symtab/Definitions.scala +++ b/src/compiler/scala/tools/nsc/symtab/Definitions.scala @@ -53,7 +53,7 @@ trait Definitions { // top types lazy val AnyClass = newClass(ScalaPackageClass, nme.Any, Nil) setFlag (ABSTRACT) - lazy val AnyValClass = newClass(ScalaPackageClass, nme.AnyVal, anyparam) setFlag (FINAL | SEALED) + lazy val AnyValClass = newClass(ScalaPackageClass, nme.AnyVal, anyparam) setFlag (ABSTRACT | SEALED) lazy val AnyRefClass = newAlias(ScalaPackageClass, nme.AnyRef, ObjectClass.typeConstructor) lazy val ObjectClass = getClass(sn.Object) |