aboutsummaryrefslogtreecommitdiff
path: root/compiler/src/dotty/tools/dotc/transform
diff options
context:
space:
mode:
authorFelix Mulder <felix.mulder@gmail.com>2017-04-02 00:35:31 +0200
committerGitHub <noreply@github.com>2017-04-02 00:35:31 +0200
commit710e700b2285738bc0700ed548517efc1f368bb0 (patch)
tree79f7fd243efeffdc4843311651734d709c115d79 /compiler/src/dotty/tools/dotc/transform
parentaa2522c880d78d172b3af6cc4d336f2ebe447b18 (diff)
parentd73c8e42ca526ff2c53a17ddd1fa87044dd5bbca (diff)
downloaddotty-710e700b2285738bc0700ed548517efc1f368bb0.tar.gz
dotty-710e700b2285738bc0700ed548517efc1f368bb0.tar.bz2
dotty-710e700b2285738bc0700ed548517efc1f368bb0.zip
Merge branch 'master' into fix-hashcode
Diffstat (limited to 'compiler/src/dotty/tools/dotc/transform')
-rw-r--r--compiler/src/dotty/tools/dotc/transform/PatternMatcher.scala17
1 files changed, 6 insertions, 11 deletions
diff --git a/compiler/src/dotty/tools/dotc/transform/PatternMatcher.scala b/compiler/src/dotty/tools/dotc/transform/PatternMatcher.scala
index 7576ccc05..b0ae36612 100644
--- a/compiler/src/dotty/tools/dotc/transform/PatternMatcher.scala
+++ b/compiler/src/dotty/tools/dotc/transform/PatternMatcher.scala
@@ -848,13 +848,14 @@ class PatternMatcher extends MiniPhaseTransform with DenotTransformer {
val nextBinder = afterTest.asTerm
- def needsOuterTest(patType: Type, selType: Type, currentOwner: Symbol): Boolean = {
+ def outerTestNeeded(implicit ctx: Context): Boolean = {
// See the test for SI-7214 for motivation for dealias. Later `treeCondStrategy#outerTest`
// generates an outer test based on `patType.prefix` with automatically dealises.
- patType.dealias match {
- case tref @ TypeRef(pre, name) =>
- (pre ne NoPrefix) && tref.symbol.isClass &&
- ExplicitOuter.needsOuterIfReferenced(tref.symbol.asClass)
+ expectedTp.dealias match {
+ case tref @ TypeRef(pre: SingletonType, name) =>
+ val s = tref
+ s.symbol.isClass &&
+ ExplicitOuter.needsOuterIfReferenced(s.symbol.asClass)
case _ =>
false
}
@@ -862,12 +863,6 @@ class PatternMatcher extends MiniPhaseTransform with DenotTransformer {
override lazy val introducedRebindings = NoRebindings
- def outerTestNeeded = {
- val np = expectedTp.normalizedPrefix
- val ts = np.termSymbol
- (ts ne NoSymbol) && needsOuterTest(expectedTp, testedBinder.info, ctx.owner)
- }
-
// the logic to generate the run-time test that follows from the fact that
// a `prevBinder` is expected to have type `expectedTp`
// the actual tree-generation logic is factored out, since the analyses generate Cond(ition)s rather than Trees