aboutsummaryrefslogtreecommitdiff
path: root/src/test/scala/scala/async/run
Commit message (Collapse)AuthorAgeFilesLines
* Support await in a while loop.Jason Zaugg2012-11-231-0/+43
|
* Fix #31, Unfinished ANF transformJason Zaugg2012-11-231-0/+33
| | | | | | | | Prepend {(); ... } before starting the ANF transform. Add tracing to the anf/inline transform. Also enables and addresses SIP-18 warnings.
* Ensure unique names for definitions in the async block.Jason Zaugg2012-11-231-31/+32
| | | | | | | | - transform the provided tree using reflect.internal.Symbols#Symbol.name_= and treeCopy.{Ident, Select}. - not sure if this is possible within the public Symbol API. - move checking for unsupported nested module/class to AsyncAnalysis. - make block merging selective (only do so if there are nested await calls.)
* Support match as an expression.Jason Zaugg2012-11-222-24/+51
| | | | | | | | - corrects detection of await calls in the ANF transform. - Split AsyncAnalyzer into two parts. Unsupported await detection must happen prior to the async transform to prevent the ANF lifting out by-name arguments to vals and hence changing the semantics.
* Cleanups and docs.Jason Zaugg2012-11-221-0/+32
| | | | | - Move now-working duplicate definition tests from `neg` to `run`. - Renames and small code beautification around the var lifting analysis
* Generate cleaner code for Unit-typed if-else expressionsphaller2012-11-161-0/+20
| | | | | | | | | | | | | | | | | | | | | | | | | | | | Instead of generating an assignment to a Unit-typed variable, just add the Unit value after the if-else expression: [async] scala.async.Async.async[Unit]({ val f: scala.concurrent.Future[Int] = AnfTestClass.this.base(y); if (y.>(0)) State.result_=(scala.async.Async.await[Int](f).+(2)) else State.result_=(scala.async.Async.await[Int](f).-(2)) }) [async] ANF transform expands to: { val f: scala.concurrent.Future[Int] = AnfTestClass.this.base(y); if (y.>(0)) { val await$8: Int = scala.async.Async.await[Int](f); State.result_=(await$8.+(2)) } else { val await$9: Int = scala.async.Async.await[Int](f); State.result_=(await$9.-(2)) }; () }
* Add selective ANF transformphaller2012-11-161-0/+94
| | | | | - Does not descend into class and module defs - Adds several tests, including tests for if-else
* Fixes #7, allow async blocks without await or with a single expression.Jason Zaugg2012-11-111-0/+34
|
* Synthesize `case 23 => rhs` rather than `case any @ (_: Int) if any == 25)`Jason Zaugg2012-11-111-1/+0
|
* Test with less trivial types.Jason Zaugg2012-11-091-0/+39
| | | | Works like it says on the box.
* Avoid hygiene problems by suffixing result/result/state.Jason Zaugg2012-11-091-0/+52
| | | | Perhaps we should freshen them, but that will be a little awkward in our reify block.
* Remove sleeps from the tests.Jason Zaugg2012-11-098-12/+0
|
* Support await inside match expressionsphaller2012-11-061-0/+73
|
* File naming consistency.Jason Zaugg2012-11-051-0/+0
|
* Move test utils into a package object, rather than base class.Jason Zaugg2012-11-057-7/+7
|
* Expand build configuration.Jason Zaugg2012-11-057-11/+11
| | | | | | | - Enable continuations plugin - Fill in project metadata - Enable stricter compiler options - satisfy -Xlint with some empty parens.
* Improve test infrastructureJason Zaugg2012-11-057-0/+472
- Convert tests to use JUnit - For the 'run' tests, just use plain-old-test-cases - Add a sample 'neg' test to use ToolBoxes to compile code snippets on the fly.