~ubuntu-branches/debian/sid/scala/sid

« back to all changes in this revision

Viewing changes to test/files/jvm/patmat_opt_ignore_underscore/Analyzed_1.scala

  • Committer: Package Import Robot
  • Author(s): Emmanuel Bourg, Mehdi Dogguy, Lucas Satabin, Frank S. Thomas, Emmanuel Bourg
  • Date: 2015-06-05 23:52:59 UTC
  • mfrom: (1.2.11)
  • Revision ID: package-import@ubuntu.com-20150605235259-wk00vgk83dh8o19g
Tags: 2.10.5-1
* Team upload.

[ Mehdi Dogguy ]
* New upstream release (Closes: #744278).

[ Lucas Satabin ]
* Update patches
* Update the clean target
* Update paths of elements to install
* Update watch file

[ Frank S. Thomas ]
* Remove myself from Uploaders.

[ Emmanuel Bourg ]
* The package has been adopted by the Java Team (Closes: #754935)
* Patched the build to avoid downloading libraries from the Internet
* Replaced the minified JavaScript files with unobfuscated ones
* No longer build scala-partest.jar until diffutils is packaged or replaced
* debian/watch: Fixed the versions matched (x.y.z instead of x.y.z..z)
* debian/rules:
  - Added the missing get-orig-source target (Closes: #724704)
  - Improved the clean target
* debian/control:
  - Build depend on scala (>= 2.10) and bnd
  - Use canonical URLs for the Vcs-* fields
  - Standards-Version updated to 3.9.6 (no changes)
* Switch to debhelper level 9

Show diffs side-by-side

added added

removed removed

Lines of Context:
 
1
// this class's bytecode, compiled under -optimize is analyzed by the test
 
2
// method a's bytecode should be identical to method b's bytecode
 
3
// this is not the best test for shielding against regressing on this particular issue,
 
4
// but it sets the stage for checking the bytecode emitted by the pattern matcher and
 
5
// comparing it to manually tuned code using if/then/else etc.
 
6
class SameBytecode {
 
7
  case class Foo(x: Any, y: String)
 
8
 
 
9
  def a = 
 
10
    Foo(1, "a") match {
 
11
      case Foo(_: String, y) => y
 
12
    }
 
13
 
 
14
  // this method's body holds the tree that should be generated by the pattern matcher for method a (-Xprint:patmat)
 
15
  // the test checks that bytecode for a and b is identical (modulo line numbers)
 
16
  // we can't diff trees as they are quite different (patmat uses jumps to labels that cannot be expressed in source, for example)
 
17
  // note that the actual tree is quite bad: we do an unnecessary null check, isInstanceOf and local val (x3)
 
18
  // some of these will be fixed soon (the initial null check is for the scrutinee, which is harder to fix in patmat)
 
19
  def b: String = {
 
20
    val x1 = Foo(1, "a")
 
21
    if (x1.ne(null)) {
 
22
      if (x1.x.isInstanceOf[String]) {
 
23
        return x1.y
 
24
      }
 
25
    }
 
26
 
 
27
    throw new MatchError(x1)
 
28
  }
 
29
}
 
 
b'\\ No newline at end of file'