summaryrefslogtreecommitdiff
path: root/test/files/jvm/patmat_opt_primitive_typetest/Analyzed_1.scala
diff options
context:
space:
mode:
authorPaul Phillips <paulp@improving.org>2013-02-09 19:30:30 -0800
committerPaul Phillips <paulp@improving.org>2013-02-09 19:41:08 -0800
commit747f6a8d24c628d05ab3acea0b95a82d04a71df3 (patch)
tree435f44dd8856c91e1ac4ba1da86d74178e0a3586 /test/files/jvm/patmat_opt_primitive_typetest/Analyzed_1.scala
parentce32c1af462de7d7c6b90efd56217e202a18d1e6 (diff)
parent81d8f9d3da656cfb05f125ba7cf70ca51a477240 (diff)
downloadscala-747f6a8d24c628d05ab3acea0b95a82d04a71df3.tar.gz
scala-747f6a8d24c628d05ab3acea0b95a82d04a71df3.tar.bz2
scala-747f6a8d24c628d05ab3acea0b95a82d04a71df3.zip
Merge commit '81d8f9d3da' into merge-210
* excluded from merge: [nomerge] SI-6667 Demote a new ambiguity error to a lint warning. Revert "SI-6422: add missing Fractional and Integral alias in scala package" [backport] SI-6482, lost bounds in extension methods. * commit '81d8f9d3da': (31 commits) reflecting @throws defined in Scala code pullrequest feedback SI-5833 Fixes tail-of-Nil problem in RefinedType#normalizeImpl SI-6017 Scaladoc: Show all letters without dangling links SI-6017 Generate Scaladoc's index links in Scala side SI-5313 Minor code cleanup for store clobbering SI-5313 Test clobbers on the back edge of a loop SI-7033 Be symful when creating factory methods. SI-7022 Additional test case for value class w. bounds SI-7039 unapplySeq result type independent of subpattern count evicts javac-artifacts.jar SI-7008 @throws annotations are now populated in reflect Fix SI-6578. Deprecated `askType` because of possible race conditions in type checker. SI-7029 - Make test more robust SI-7029 - Makes sure that uncaught exceptions are propagated to the UEH for the global ExecutionContext SI-6941 tests SI-6686 drop valdef unused in flatMapCond's block ... Conflicts: src/compiler/scala/tools/nsc/backend/opt/DeadCodeElimination.scala src/compiler/scala/tools/nsc/transform/ExtensionMethods.scala src/reflect/scala/reflect/internal/Definitions.scala
Diffstat (limited to 'test/files/jvm/patmat_opt_primitive_typetest/Analyzed_1.scala')
-rw-r--r--test/files/jvm/patmat_opt_primitive_typetest/Analyzed_1.scala24
1 files changed, 24 insertions, 0 deletions
diff --git a/test/files/jvm/patmat_opt_primitive_typetest/Analyzed_1.scala b/test/files/jvm/patmat_opt_primitive_typetest/Analyzed_1.scala
new file mode 100644
index 0000000000..e5db6c4dd0
--- /dev/null
+++ b/test/files/jvm/patmat_opt_primitive_typetest/Analyzed_1.scala
@@ -0,0 +1,24 @@
+// this class's bytecode, compiled under -optimize is analyzed by the test
+// method a's bytecode should be identical to method b's bytecode
+class SameBytecode {
+ case class Foo(x: Int, y: String)
+
+ def a =
+ Foo(1, "a") match {
+ case Foo(_: Int, y) => y
+ }
+
+ // this method's body holds the tree that should be generated by the pattern matcher for method a (-Xprint:patmat)
+ // the test checks that bytecode for a and b is identical (modulo line numbers)
+ // we can't diff trees as they are quite different (patmat uses jumps to labels that cannot be expressed in source, for example)
+ // note that the actual tree is quite bad: we do an unnecessary null check, and local val (x3)
+ // some of these will be fixed soon (the initial null check is for the scrutinee, which is harder to fix in patmat)
+ def b: String = {
+ val x1 = Foo(1, "a")
+ if (x1.ne(null)) {
+ return x1.y
+ }
+
+ throw new MatchError(x1)
+ }
+} \ No newline at end of file