diff options
author | Jason Zaugg <jzaugg@gmail.com> | 2015-10-23 16:25:02 +1000 |
---|---|---|
committer | Jason Zaugg <jzaugg@gmail.com> | 2016-01-19 14:27:31 +1000 |
commit | 549a656fa22af5f7f0c5e89dd6e0a19ed4b604f5 (patch) | |
tree | 7a7c778a24143923a674acb9db30ecdc5e3f8f5e /CONTRIBUTING.md | |
parent | 634c454dbd546e2f3db6321b4047b3cebd2f899a (diff) | |
download | scala-async-549a656fa22af5f7f0c5e89dd6e0a19ed4b604f5.tar.gz scala-async-549a656fa22af5f7f0c5e89dd6e0a19ed4b604f5.tar.bz2 scala-async-549a656fa22af5f7f0c5e89dd6e0a19ed4b604f5.zip |
Various fixes to late expansion
- Detect cross-state symbol references where the RefTree is nested
in a LabelDef. Failure to do so led to ill-scoped local variable
references which sometimes manifest as VerifyErrors.
- Emit a default case in the Match intended to be a tableswitch.
We have to do this ourselves if we expand after pattern matcher
- Cleanup generated code to avoid redundant blocks
- Avoid unnecessary `matchRes` temporary variable for unit-typed
pattern matches
- Fix the trace level logging in the ANF transform to restore
indented output.
- Emit `{ state = nextState; ... }` rather than
`try { ... } finally { state = nextState }` in state handlers.
This simplifies generated code and has the same meaning, as the
code in the state machine isn't reentrant and can't observe the
"early" transition of the state.
Diffstat (limited to 'CONTRIBUTING.md')
0 files changed, 0 insertions, 0 deletions