diff options
author | Adriaan Moors <adriaan.moors@epfl.ch> | 2012-07-20 09:35:51 -0700 |
---|---|---|
committer | Adriaan Moors <adriaan.moors@epfl.ch> | 2012-07-20 09:35:51 -0700 |
commit | a3d122a251bc89b4de23dd1e8b875b9f1c8fc97b (patch) | |
tree | 30672566b5a135c79fa498ea1eae588101a2a260 | |
parent | c1816313f52860d47dc7f3efed195f5b0482743b (diff) | |
parent | 86f7bc35e5fd9c12913318ed2b31e207d6f261fb (diff) | |
download | scala-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.scala | 4 | ||||
-rw-r--r-- | test/files/run/t6104.check | 1 | ||||
-rw-r--r-- | test/files/run/t6104.scala | 8 |
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 |