aboutsummaryrefslogtreecommitdiff
Commit message (Collapse)AuthorAgeFilesLines
...
* Merge pull request #44 from phaller/topic/exception-handlingJason Zaugg2012-11-264-20/+106
|\ | | | | Topic/exception handling
| * More tests for ExceptionsSpecphaller2012-11-261-8/+30
| |
| * Fix #42 - Futures created by async are not properly completed with exceptionsphaller2012-11-264-20/+84
|/ | | | | | | | | | | | This augments the on-complete handler for an async state with await as follows: if (tr.isFailure) result$async.complete(tr.asInstanceOf[Try[T]]) else { <resultName> = tr.get.asInstanceOf[<resultType>] <nextState> <mkResumeApply> }
* Merge pull request #37 from phaller/ticket/23-port-futures-testsPhilipp Haller2012-11-261-0/+536
|\ | | | | Port futures tests of scala.concurrent
| * Replace uses of Future.map/Future.flatMap with async+awaitphaller2012-11-261-24/+33
| |
| * Add ported futures testsphaller2012-11-261-0/+527
| | | | | | | | | | | | These tests do not use async/await, yet. Refs #23
* | Merge pull request #41 from phaller/ticket/35-synth-object-2Philipp Haller2012-11-2618-159/+444
|\ \ | | | | | | Ticket/35 synth object 2
| * | Show that indirectly nested defs aren't lifted.Jason Zaugg2012-11-262-3/+18
| | |
| * | Fix #26, leaner code gen for `async { <no awaits> }`.Jason Zaugg2012-11-261-9/+20
| | | | | | | | | | | | We can then use this as a replacement for `Future { expr }`.
| * | Make the name uniqification more selective.Jason Zaugg2012-11-262-12/+12
| | | | | | | | | | | | | | | | | | We need not, and should not, rename definitions beyond the scope of the async transform, e.g. in nested classes of function bodies.
| * | Rewrite the state machine to a class, rather than an object.Jason Zaugg2012-11-269-88/+92
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | To avoid suprises in tree retyping, the instance of this class is immediately upcase to StateMachine[Promise[T], ExecContext]. Allow nested non-case classes. These pop up when we use nested async calls. Only look for duplicate names in the subtrees traversed by AsyncTraverser.
| * | Preserve outer This() refs through resetAttrs.Jason Zaugg2012-11-266-40/+120
| | | | | | | | | | | | | | | | | | Adapt the compiler's standard ResetAttrs to keep This() nodes don't refer to a symbol defined in the current async block.
| * | Synthesize an object implementing Function#apply and resume()Jason Zaugg2012-11-265-52/+84
| | | | | | | | | | | | | | | | | | | | | | | | There is a fly in the ointment: any This() trees in the provided code are getting rebound to this class. Sounds like more resetAttrs fun ahead. The object also serves as the Future {} thunk.
| * | Lift local defs and functions.Jason Zaugg2012-11-265-11/+81
| | | | | | | | | | | | | | | | | | | | | Any vals referred to in the body of these must also be lifted. Fixes #36
| * | Fix await in if condition / match scrutinee.Jason Zaugg2012-11-267-41/+59
| | | | | | | | | | | | | | | | | | The type-checking performed in ANF transform is precarious, and needed to use the original condition/ scrutinee in a throwaway tree to get things to work.
| * | Extract vals for all names bound in a pattern.Jason Zaugg2012-11-267-49/+107
| | | | | | | | | | | | | | | | | | | | | These gives us something to lift to vars to be accessed from multiple states of the state machine. Fixes #35
| * | Flatmap it, Sam.Jason Zaugg2012-11-261-4/+1
|/ /
* | Merge pull request #38 from phaller/ticket/19-external-varsPhilipp Haller2012-11-261-26/+64
|\ \ | | | | | | Fix #19
| * | Address review commentphaller2012-11-261-3/+1
| | |
| * | Fix #19phaller2012-11-261-26/+66
| |/ | | | | | | | | | | | | - Add tests where the result of an await is assigned to a variable external to the async block. - Clean up HygieneSpec.
* | Merge pull request #39 from phaller/topic/simplify-attachcopyJason Zaugg2012-11-263-50/+24
|\ \ | | | | | | Simplify attachCopy
| * | Turn object into defphaller2012-11-261-12/+11
| | |
| * | Simplify attachCopy in TransformUtilsphaller2012-11-263-39/+14
|/ / | | | | | | This refactoring removes a group of factory methods.
* | Remove modifiers of case class parametersphaller2012-11-264-4/+4
| |
* | Merge pull request #32 from phaller/topic/try-whilePhilipp Haller2012-11-2629-383/+660
|\| | | | | Topic/try while
| * Refactor some tree creation from Async to ExprBuilder.Jason Zaugg2012-11-243-72/+89
| |
| * Tiny aesthetic refactorings.Jason Zaugg2012-11-242-14/+14
| |
| * Refactoring to avoid unneeded mutable fields.Jason Zaugg2012-11-241-34/+21
| | | | | | | | Brings uniformity to the result generation of AsyncStateBuilder.
| * Refactoring to use AwaitableJason Zaugg2012-11-241-19/+16
| | | | | | | | Rather than three separate parameters.
| * Refactor AsyncState heirarchy.Jason Zaugg2012-11-241-34/+38
| | | | | | | | | | No more extension from concrete classes; no more dummy values for nextState.
| * More refactoring in ExprBuilder.Jason Zaugg2012-11-241-41/+33
| | | | | | | | | | | | - Moving some private methods out of the top-billing at the head of the file - Replace three nullable fields with one Option.
| * Address a little duplication in ExprBuilder.Jason Zaugg2012-11-241-20/+19
| |
| * More small refactorings.Jason Zaugg2012-11-243-27/+14
| | | | | | | | Goal is to make ExprBuilder less cluttered.
| * Refactor name substitution out of ExprBuilder.Jason Zaugg2012-11-242-12/+17
| |
| * Favouring composition over inheritance.Jason Zaugg2012-11-245-31/+31
| |
| * add missing copyrightJason Zaugg2012-11-2427-15/+64
| |
| * Refine tracing of ANF.Jason Zaugg2012-11-241-2/+3
| | | | | | | | - show the AST on one line.
| * Centralize naming.Jason Zaugg2012-11-243-29/+33
| |
| * Cleanup var lifting.Jason Zaugg2012-11-242-33/+12
| | | | | | | | | | Seeing as we know in advance the full set of lifted vars, we don't need to thread this information through ExprBuilder.
| * Cleaner while rewritingJason Zaugg2012-11-242-21/+22
| | | | | | | | | | | | | | -preserve LabelDef symbols to allow use of Symbol, rather than Names as map keys. -a label jump overwrites the nextState of an AsyncState. This is cleaner than inserting a return { state = 12; resume() }.
| * Prohibit await in if condition (for now)Jason Zaugg2012-11-246-20/+62
| | | | | | | | | | | | Test nested loops. Control ANF tracing with another system property.
| * Prohibit return.Jason Zaugg2012-11-232-0/+14
| | | | | | | | Closes #21
| * Explicitly prohibit await in nested methods.Jason Zaugg2012-11-234-2/+19
| |
| * Enable debug logging with a system property.Jason Zaugg2012-11-232-5/+6
| |
| * Support await in a while loop.Jason Zaugg2012-11-237-43/+112
| |
| * Test for await in while (currently forbidden).Jason Zaugg2012-11-234-3/+40
| | | | | | | | Lookup the ValDef symbol from Assign#rhs.symbol.
| * Forbid await in try/catch.Jason Zaugg2012-11-232-0/+40
| |
| * Tightenen up modifiers and other refactoring.Jason Zaugg2012-11-234-18/+13
| |
| * Fix #31, Unfinished ANF transformJason Zaugg2012-11-235-12/+69
| | | | | | | | | | | | | | | | Prepend {(); ... } before starting the ANF transform. Add tracing to the anf/inline transform. Also enables and addresses SIP-18 warnings.
| * Move TestUtils contents directly into the package object.Jason Zaugg2012-11-232-59/+42
| | | | | | | | Why suffer SI-4695 needlessly?