File tree Expand file tree Collapse file tree 3 files changed +50
-1
lines changed
src/compiler/scala/tools/nsc/transform/patmat Expand file tree Collapse file tree 3 files changed +50
-1
lines changed Original file line number Diff line number Diff line change @@ -355,7 +355,7 @@ trait MatchTreeMaking extends MatchCodeGen with Debugging {
355355 // this also includes methods and (possibly nested) objects inside of methods.
356356 def definedInStaticLocation (tp : Type ): Boolean = {
357357 def isStatic (tp : Type ): Boolean =
358- if (tp == NoType || tp.typeSymbol.isPackageClass || tp == NoPrefix ) true
358+ if (tp == NoType || tp.typeSymbol.isPackageClass || tp == NoPrefix || nme.isReplWrapperName(tp.typeSymbol.name) ) true
359359 else if (tp.typeSymbol.isModuleClass) isStatic(tp.prefix)
360360 else false
361361 tp.typeSymbol.owner == tp.prefix.typeSymbol && isStatic(tp.prefix)
Original file line number Diff line number Diff line change 1+
2+ scala> sealed abstract class Value; object Value {
3+ final case class Num(value: Double) extends Value
4+ final case class Str(value: String) extends Value
5+ final case class Bool(value: Boolean) extends Value
6+ }
7+ defined class Value
8+ defined object Value
9+
10+ scala> class C { final case class Num(value: Double) } // here it should still warn
11+ warning: there was one unchecked warning; for details, enable `:setting -unchecked' or `:replay -unchecked'
12+ defined class C
13+
14+ scala> :quit
Original file line number Diff line number Diff line change 1+ import scala .tools .nsc .Settings
2+ import scala .tools .partest .ReplTest
3+
4+ object Test extends ReplTest {
5+ override def transformSettings (s : Settings ) = {
6+ s.Yreplclassbased .value = true
7+ s
8+ }
9+
10+ def code = """
11+ |sealed abstract class Value; object Value {
12+ | final case class Num(value: Double) extends Value
13+ | final case class Str(value: String) extends Value
14+ | final case class Bool(value: Boolean) extends Value
15+ |}
16+ |class C { final case class Num(value: Double) } // here it should still warn
17+ |""" .stripMargin // scala/bug#11902
18+ }
19+
20+ /* was:
21+
22+ scala> sealed abstract class Value; object Value {
23+ final case class Num(value: Double) extends Value
24+ final case class Str(value: String) extends Value
25+ final case class Bool(value: Boolean) extends Value
26+ }
27+ warning: there were three unchecked warnings; for details, enable `:setting -unchecked' or `:replay -unchecked'
28+ defined class Value
29+ defined object Value
30+
31+ scala> class C { final case class Num(value: Double) } // here it should still warn
32+ warning: there was one unchecked warning; for details, enable `:setting -unchecked' or `:replay -unchecked'
33+ defined class C
34+
35+ */
You can’t perform that action at this time.
0 commit comments