summaryrefslogtreecommitdiff
path: root/test/disabled-windows/script
diff options
context:
space:
mode:
authorAdriaan Moors <adriaan@lightbend.com>2016-08-26 09:21:38 +0200
committerAdriaan Moors <adriaan@lightbend.com>2016-08-30 19:24:04 +0200
commit92d1af11b04b4f7c8aafd4ff911bf747eb1029aa (patch)
tree097ee110e9c5a6a20a76469874cf8c26427a847b /test/disabled-windows/script
parentf12e6257eef36ffaa9e2a72afc3f83f59296bf67 (diff)
downloadscala-92d1af11b04b4f7c8aafd4ff911bf747eb1029aa.tar.gz
scala-92d1af11b04b4f7c8aafd4ff911bf747eb1029aa.tar.bz2
scala-92d1af11b04b4f7c8aafd4ff911bf747eb1029aa.zip
Specialize erasure of `synchronized` primitive method
The goal is to avoid emitting unneeded `BoxedUnit` values, which are the result of adapting a `Unit`-typed expression inside a `synchronized(...)` to the erased type of `synchronized`'s argument -- `Object`. The proposed solution gives `synchronized` a polymorphic type (the info of the type param is still erased so that bounds checking works in the erased type system), so that an application `synchronized(println("boo"))` erases to `synchronized[Unit])(println("boo"))`, and no boxing is performed on the `println("boo")` argument, whose expected type is now `Unit` instead of `Object`.
Diffstat (limited to 'test/disabled-windows/script')
0 files changed, 0 insertions, 0 deletions