aboutsummaryrefslogtreecommitdiff
Commit message (Collapse)AuthorAgeFilesLines
* Add BlockingAsync and BlockingFutureSystemtopic/seq-debuggingPhilipp Haller2013-06-255-7/+131
|
* Enable trampolining of async state executionPhilipp Haller2013-06-253-5/+19
| | | | | | | | | | | | | | | | | | This replaces the previous body of an `async` block with a while loop: var task$async: Option[() => Unit] = Some(<future body>) while (task$async.nonEmpty) { val task = task$async.get task$async = None task() } This enables executing an `async` block on a single thread by using a future system that blocks upon `await`. This execution mode can be very useful for debugging. The introduced trampolining enables this mode without running into stack overflows.
* Clean-ups using typeOfPhilipp Haller2013-06-251-7/+3
|
* Merge pull request #18 from lrytz/typoJason Zaugg2013-04-291-1/+1
|\ | | | | call setSymbol only on outermost Apply for multi-arg-list applications
| * call setSymbol only on outermost Apply for multi-arg-list applicationsLukas Rytz2013-04-291-1/+1
|/ | | | fixes a typo in 5a0b1918
* Merge pull request #14 from lrytz/cleanupsJason Zaugg2013-04-271-13/+14
|\ | | | | minor cleanups accumulated while reading the code
| * minor cleanups accumulated while reading the codeLukas Rytz2013-04-271-13/+14
|/
* Merge pull request #12 from retronym/topic/compile-time-onlyJason Zaugg2013-04-202-3/+3
|\ | | | | Mark `await` as @compileTimeOnly
| * Mark `await` as @compileTimeOnlyJason Zaugg2013-04-172-3/+3
|/ | | | | | Rather than as @deprecated. This commit means we can no longer build against 2.10.0.
* Merge pull request #9 from retronym/ticket/4-multi-paramPhilipp Haller2013-04-174-74/+134
|\ | | | | Allow await in applications with multiple argument lists
| * Rephrase a few pattern matches, fix ANF tracing.Jason Zaugg2013-04-152-11/+9
| | | | | | | | Addresses review comments
| * Allow await in applications with multiple argument listsJason Zaugg2013-04-114-70/+132
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | Before, we levied an implementation restriction to prevent this. As it turned out, that needlessly prevented use of `await` in the receiver of a multi-param-list application. This commit lifts the restriction altogether, and treats such applications holistically, being careful to preserve the left-to-right evaluation order of arguments in the translated code. - use `TreeInfo.Applied` and `Type#paramss` from `reflect.internal` to get the info we need - use the parameter name for the lifted argument val, rather than `argN` - encapsulate handling of by-name-ness and parameter names in `mapArgumentss` - test for evaluation order preservation
* | Merge pull request #10 from phaller/topic/cps-depPhilipp Haller2013-04-1310-67/+244
|\ \ | | | | | | Remove CPS dependency from default async implementation
| * | Remove CPS dependency from default async implementationPhilipp Haller2013-04-1210-67/+244
|/ / | | | | | | | | | | - move all CPS-related code to `continuations` sub package - fix CPS-based async implementation - enable testing of CPS-based async implementation
* | Merge pull request #7 from retronym/topic/scala-2.10.1Jason Zaugg2013-04-118-20/+43
|\ \ | | | | | | Scala 2.10.1 compatibility
| * | Avoid needless Unit literal as the expression of a Block.Jason Zaugg2013-04-111-1/+1
| |/ | | | | | | We've got a perfectly good expression at hand.
| * Scala 2.10.1 compat: apply renaming to originals of TypeTreesJason Zaugg2013-04-102-18/+22
| | | | | | | | This time in the ANF/Inline transformation.
| * Scala 2.10.1 compat: account for change in PartialFunction synthesis.Jason Zaugg2013-04-102-22/+28
| | | | | | | | | | | | | | | | | | | | | | Since SI-6187, the default case of a partial function is now included in the tree. Before, it was a tree attachment, conditionally inserted in the pattern matcher. I had hoped that that change would allow us to do away with `RestorePatternMatchingFunctions` altogether, but it seems that we aren't so lucky. Instead, I've adapted that transformer to account for the new scheme.
| * Scala 2.10.1 compat: apply renaming to originals of TypeTreesJason Zaugg2013-04-103-19/+27
| |
| * Temporarily comment out tests that are failing under 2.10.1.Jason Zaugg2013-04-104-61/+66
| |
| * Address lint warnings.Jason Zaugg2013-04-101-2/+2
| |
| * Address deprecation warnings in Scala 2.10.1Jason Zaugg2013-04-104-10/+10
|/
* Merge pull request #2 from viktorklang/patch-1Philipp Haller2013-04-031-1/+1
|\ | | | | Update README.md
| * Update README.mdViktor Klang (√)2013-04-031-1/+1
| | | | | | Technically line 5 is very blocking.
* | Merge pull request #1 from xuwei-k/fix-github-urlPhilipp Haller2013-04-032-8/+8
|\ \ | |/ |/| fix github url
| * fix github urlxuwei-k2013-04-042-8/+8
|/
* Bump Scala version to 2.10.0Philipp Haller2013-02-051-2/+2
|
* s/LHS/RHSJason Zaugg2012-12-201-1/+1
|
* Update version for M1 releasephaller2012-12-201-1/+1
|
* Bump Scala version to latest RCphaller2012-12-201-1/+1
|
* Remove unreachable code in pattern matching testphaller2012-12-201-1/+0
|
* Fix typos in READMEphaller2012-12-201-12/+12
|
* Resolve merge conflictphaller2012-12-195-17/+93
|\
| * New fix for #1861: Add fall-back to CPS for all unsupported uses of awaitphaller2012-12-195-16/+93
| | | | | | | | | | | | | | This is a re-implementation of a previous fix. It is more modular, since it enables the definition of a CPS-based fall-back as a subclass of `AsyncBase`. Thus, it's possible to define fall-back-enabled subclasses of `AsyncBase` targetting not only Scala Futures.
* | Update README.mdJason Zaugg2012-12-191-0/+171
| |
* | Merge pull request #49 from phaller/topic/patmat-partial-functionJason Zaugg2012-12-196-33/+132
|\ \ | | | | | | Topic/patmat partial function
| * | Prohibit lazy vals in async blocks.Jason Zaugg2012-12-102-3/+18
| | |
| * | Workaround non-idempotency of typing pattern matching anonymous functions.Jason Zaugg2012-12-106-30/+114
| | | | | | | | | | | | | | | | | | | | | - Undo the transformation that takes place in Typers to leave us with Match(EmptyTree, cases). - Make sure we don't descend into the cases of such a tree when peforming the async transform
* | | Expand documentationJason Zaugg2012-12-191-6/+150
| |/ |/|
* | Merge pull request #47 from phaller/ticket/46-varargs-holistic-applyPhilipp Haller2012-12-033-11/+54
|\ \ | | | | | | Fix ANF transform involving `xs: _*` trees.
| * | Fix ANF transform involving `xs: _*` trees.Jason Zaugg2012-11-273-11/+54
| | | | | | | | | | | | | | | | | | | | | | | | We need to unwrap and inline `xs`, then rewrap the result expression with the wildcard star. Addresses the first half of #46.
* | | Fix typophaller2012-11-291-3/+3
|/ /
* | Remove @author tagsphaller2012-11-273-9/+0
| |
* | Merge pull request #45 from phaller/ticket/33-by-name-2Philipp Haller2012-11-274-24/+139
|\| | | | | Ticket/33 by name 2
| * No need to extract vals for inlinable args.Jason Zaugg2012-11-273-15/+23
| | | | | | | | | | | | We use `isExprSafeToInline` from the non-public reflection API to check. In addtion, we now that an untyped Ident("await$N") is also an inlinable expression.
| * Test cases for named and default args.Jason Zaugg2012-11-271-1/+35
| |
| * Disallow await in non-primary param sections.Jason Zaugg2012-11-272-9/+52
| | | | | | | | | | | | | | | | | | We can allow it, but we need to treat nested Apply trees holistically, in order to lift out all the arguments and maintain the correct evaluation order. Fixes #33.
| * Fix semantics of by-name applicationJason Zaugg2012-11-272-8/+38
|/ | | | | | | | - If we lift one arg, we must lift them all. This preserves evaluation order. - But, never lift an by-name arg Addresses the first half of #33.
* Fix execution context lookup for the trivial async block.Jason Zaugg2012-11-271-1/+1
|
* Lookup log level dynamically from system property.Jason Zaugg2012-11-272-19/+19
| | | | | | And change TreeInterrogation to set if via this means, rather than through a direct means, which seems to assume too much about classloaders.