| Commit message (Collapse) | Author | Age | Files | Lines |
| |
|
|
|
|
|
|
|
|
|
| |
These stem from the handling of the internal/external view
or method type parameters by `thisMethodType` in `Namers`.
I've now preseversed the orginal ValDefs favoured the latter
when constructing the new DefDef, and made construction of
all liftables consistent in this regard.
|
|
|
|
|
| |
Once they escape, we leave the references in the state
machines fields untouched.
|
|
|
|
| |
Completes removal performed in #37.
|
|
|
|
|
|
| |
The generated code can simply extends Function1 and Function0.
This class was a hacky means to get the macro working a long
time ago.
|
|
|
|
|
|
|
|
|
|
| |
- Remove the CPS fallback version of async. That was not intended
to be part of 1.0.
- Lookup the await method beside the macro, rather than requiring
all calls to go to AsyncBase.await.
- Create a minimal version of Async that just contains await/async
and delegates to the macro implementation in internal._
- Add scaladoc.
|
|
|
|
|
|
| |
We were relying on an internal API that no longer exists.
We also need to tweak the way our tests infer scalaBinaryVersion.
|
| |
|
|
|
|
|
| |
- Zero out fields of type Any
- Zero out fields of value class type
|
|
|
|
|
|
|
| |
- Adds a hook that lets a derived macro insert additional code
when zero-ing out a lifted field.
- Adds a variant of the `AsyncId` macro that logs zeroed-out fields.
- Adds a test using this mechanism
|
|
|
|
|
| |
- A missing condition could cause an infinite loop
- Various clean-ups
|
|
|
|
|
|
|
|
| |
- Iterative, backwards data-flow analysis
- Make sure fields captured by nested defs are never zeroed out.
This is done elegantly by declaring such fields a being live
at the exit of the final state; thus, they will never be
zeroed out.
|
| |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
OLD:
case (throwable @ _) if NonFatal.apply(throwable) => {
{
stateMachine$1.this.result.complete(Failure.apply[Nothing](throwable));
()
};
()
}
NEW:
case (throwable @ _) if NonFatal.apply(throwable) => {
stateMachine$1.this.result.complete(Failure.apply[Nothing](throwable));
()
}
|
| |
|
|
|
|
|
|
|
| |
Append a `()`, as we do for `Unit` returning `if`-s and `try-s`
We don't currently support `await` in try/catch, otherwise I'd
write tests for that case, too.
|
|\
| |
| | |
Use @uncheckedBounds to avoid introducing refchecks errors …
|
| |
| |
| |
| |
| |
| |
| |
| |
| | |
... in code that would otherwise have smuggled through these
slack LUBs in the types of trees but never in a TypeTree.
More details in SI-7694.
Fixes #29
|
| |
| |
| |
| |
| | |
These are are at odds with the junit-interface SBT test framework
under SBT 0.13.+, and appear to be superfluous.
|
|/
|
|
|
|
| |
- removed outdated comments in ANF transform
- added a few comments
- removed some unnecessary imports
|
|
|
|
| |
Tweak the way we set tpe = Unit in matches.
|
|
|
|
| |
Obsolete now that we carry all the types around.
|
| |
|
|
|
|
| |
Avoids runtime errors like: "java.lang.Double cannot be cast to scala.runtime.BoxedUnit"
|
| |
|
| |
|
|
|
|
| |
This case already works.
|
| |
|
|
|
|
|
| |
Also support AsyncId.async[Nothing], which was triggering a NPE
in the generated `null.asInstanceOf[Nothing]`.
|
|
|
|
|
|
|
|
|
| |
- Make sure all trees are positioned
- Mark range positions for synthetic code as transparent to allow
some wiggle room for overlapping ranges.
Enables -Yrangepos for our test suite. We can't add it for
the entire build until the fix for SI-7649 lands in the compiler.
|
|
|
|
|
| |
When convering If and Match nodes to ANF, set the type to Unit.
Otherwise, erasure might end up casting BoxedUnit to a real type.
|
|
|
|
|
| |
If we intend to keep CPS fallback around for any length of time
it should probably move there too.
|
| |
|
|
|
|
|
|
|
|
|
|
|
|
| |
- Avoid reset + retypecheck, instead hang onto the original types/symbols
- Eliminated duplication between AsyncDefinitionUseAnalyzer and ExprBuilder
- Instead, decide what do lift *after* running ExprBuilder
- Account for transitive references local classes/objects and lift them
as needed.
- Make the execution context an regular implicit parameter of the macro
- Fixes interaction with existential skolems and singleton types
Fixes #6, #13, #16, #17, #19, #21.
|
|
|
|
| |
This allows us to cross build against 2.10.x and 2.11.x.
|
|
|
|
| |
fixes a typo in 5a0b1918
|
| |
|
|
|
|
|
|
| |
Rather than as @deprecated.
This commit means we can no longer build against 2.10.0.
|
|\
| |
| | |
Allow await in applications with multiple argument lists
|
| |
| |
| |
| | |
Addresses review comments
|
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| | |
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
|
| |
| |
| |
| |
| |
| | |
- move all CPS-related code to `continuations` sub package
- fix CPS-based async implementation
- enable testing of CPS-based async implementation
|
|/
|
|
| |
We've got a perfectly good expression at hand.
|
|
|
|
| |
This time in the ANF/Inline transformation.
|
|
|
|
|
|
|
|
|
|
|
| |
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.
|
| |
|
| |
|
| |
|
| |
|
| |
|