Permalink
Browse files

SI-6104 support This pattern

This(name) is treated just like Ident(name)

apparently this pattern was used in 2.9 code,
though I'm not sure it's spec'ed
  • Loading branch information...
adriaanm committed Jul 18, 2012
1 parent a4b7928 commit 86f7bc35e5fd9c12913318ed2b31e207d6f261fb
@@ -413,7 +413,7 @@ trait PatternMatching extends Transform with TypingTransformers with ast.TreeDSL
The pattern matches any value v such that r == v (§12.1).
The type of r must conform to the expected type of the pattern.
**/
case Literal(Constant(_)) | Ident(_) | Select(_, _) =>
case Literal(Constant(_)) | Ident(_) | Select(_, _) | This(_) =>
noFurtherSubPats(EqualityTestTreeMaker(patBinder, patTree, pos))
case Alternative(alts) =>
@@ -430,7 +430,7 @@ trait PatternMatching extends Transform with TypingTransformers with ast.TreeDSL
patmatDebug("WARNING: Bind tree with unbound symbol "+ patTree)
noFurtherSubPats() // there's no symbol -- something's wrong... don't fail here though (or should we?)
// case Star(_) | ArrayValue | This => error("stone age pattern relics encountered!")
// case Star(_) | ArrayValue => error("stone age pattern relics encountered!")
case _ =>
error("unsupported pattern: "+ patTree +"(a "+ patTree.getClass +")")
@@ -0,0 +1 @@
ok
@@ -0,0 +1,8 @@
class A { Self =>
val ok = "ok"
this match {
case me@Self => println(me.ok)
}
}
object Test extends A with App

0 comments on commit 86f7bc3

Please sign in to comment.