summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorAdriaan Moors <adriaan.moors@epfl.ch>2012-07-20 09:35:51 -0700
committerAdriaan Moors <adriaan.moors@epfl.ch>2012-07-20 09:35:51 -0700
commita3d122a251bc89b4de23dd1e8b875b9f1c8fc97b (patch)
tree30672566b5a135c79fa498ea1eae588101a2a260
parentc1816313f52860d47dc7f3efed195f5b0482743b (diff)
parent86f7bc35e5fd9c12913318ed2b31e207d6f261fb (diff)
downloadscala-a3d122a251bc89b4de23dd1e8b875b9f1c8fc97b.tar.gz
scala-a3d122a251bc89b4de23dd1e8b875b9f1c8fc97b.tar.bz2
scala-a3d122a251bc89b4de23dd1e8b875b9f1c8fc97b.zip
Merge pull request #941 from adriaanm/ticket-6104
SI-6104 support This pattern
-rw-r--r--src/compiler/scala/tools/nsc/typechecker/PatternMatching.scala4
-rw-r--r--test/files/run/t6104.check1
-rw-r--r--test/files/run/t6104.scala8
3 files changed, 11 insertions, 2 deletions
diff --git a/src/compiler/scala/tools/nsc/typechecker/PatternMatching.scala b/src/compiler/scala/tools/nsc/typechecker/PatternMatching.scala
index b54f127417..6461168c15 100644
--- a/src/compiler/scala/tools/nsc/typechecker/PatternMatching.scala
+++ b/src/compiler/scala/tools/nsc/typechecker/PatternMatching.scala
@@ -422,7 +422,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) =>
@@ -439,7 +439,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 +")")
diff --git a/test/files/run/t6104.check b/test/files/run/t6104.check
new file mode 100644
index 0000000000..9766475a41
--- /dev/null
+++ b/test/files/run/t6104.check
@@ -0,0 +1 @@
+ok
diff --git a/test/files/run/t6104.scala b/test/files/run/t6104.scala
new file mode 100644
index 0000000000..8ab12c7752
--- /dev/null
+++ b/test/files/run/t6104.scala
@@ -0,0 +1,8 @@
+class A { Self =>
+ val ok = "ok"
+ this match {
+ case me@Self => println(me.ok)
+ }
+}
+
+object Test extends A with App \ No newline at end of file