diff options
author | Adriaan Moors <adriaan.moors@typesafe.com> | 2014-01-28 17:19:49 -0800 |
---|---|---|
committer | Adriaan Moors <adriaan.moors@typesafe.com> | 2014-02-18 20:36:54 -0800 |
commit | 971358bf0a90d7bbb6af7cc34eb282e9ade66460 (patch) | |
tree | e59545c508bf2c46c61dd226abd54ddc1b531833 /src/compiler/scala/tools/nsc/transform/patmat/MatchAnalysis.scala | |
parent | 3dbcb1b9d4daa5cba98747bbc66f898ba0f864fd (diff) | |
download | scala-971358bf0a90d7bbb6af7cc34eb282e9ade66460.tar.gz scala-971358bf0a90d7bbb6af7cc34eb282e9ade66460.tar.bz2 scala-971358bf0a90d7bbb6af7cc34eb282e9ade66460.zip |
SI-4577 singleton type pattern test should use `eq`, not `==`
I find it hard to imagine anyone is relying on `case x: foo.type =>`
erroneously being compiled to `foo == x` instead of the spec'ed `foo eq x`,
so let's finally fix this.
Diffstat (limited to 'src/compiler/scala/tools/nsc/transform/patmat/MatchAnalysis.scala')
-rw-r--r-- | src/compiler/scala/tools/nsc/transform/patmat/MatchAnalysis.scala | 3 |
1 files changed, 2 insertions, 1 deletions
diff --git a/src/compiler/scala/tools/nsc/transform/patmat/MatchAnalysis.scala b/src/compiler/scala/tools/nsc/transform/patmat/MatchAnalysis.scala index 2a3c631a66..dc4969be43 100644 --- a/src/compiler/scala/tools/nsc/transform/patmat/MatchAnalysis.scala +++ b/src/compiler/scala/tools/nsc/transform/patmat/MatchAnalysis.scala @@ -261,7 +261,8 @@ trait MatchApproximation extends TreeAndTypeAnalysis with ScalaLogic with MatchT } def nonNullTest(testedBinder: Symbol) = uniqueNonNullProp(binderToUniqueTree(testedBinder)) def equalsTest(pat: Tree, testedBinder: Symbol) = uniqueEqualityProp(binderToUniqueTree(testedBinder), unique(pat)) - def eqTest(pat: Tree, testedBinder: Symbol) = uniqueEqualityProp(binderToUniqueTree(testedBinder), unique(pat)) // TODO: eq, not == + // rewrite eq test to type test against the singleton type `pat.tpe`; unrelated to == (uniqueEqualityProp), could be null + def eqTest(pat: Tree, testedBinder: Symbol) = uniqueTypeProp(binderToUniqueTree(testedBinder), uniqueTp(pat.tpe)) def tru = True } ttm.renderCondition(condStrategy) |