8000 Compiler support for scala-async, with a state machine transform phase running after erasure [ci: last-only] by retronym · Pull Request #8816 · scala/scala · GitHub
[go: up one dir, main page]

Skip to content

Compiler support for scala-async, with a state machine transform phase running after erasure [ci: last-only] #8816

New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Merged
merged 94 commits into from
Jun 18, 2020
Merged
Show file tree
Hide file tree
Changes from 1 commit
Commits
Show all changes
94 commits
Select commit Hold shift + click to select a range
9a0cbe8
make xprompt work in sbt's scalac task
adriaanm Feb 1, 2019
3d09049
Import async
adriaanm Jan 30, 2019
9535c94
patch for async debugging
adriaanm Dec 7, 2018
6a665e9
Implement async transform with a macro and a post-erasure phase
adriaanm Jan 30, 2019
a7bbec5
Improvements to async phase
retronym Feb 6, 2020
008137d
Move to scala.async.Async for compatibility with existing macros
szeiger Feb 12, 2020
5dd9495
Add JUnit support to partest
szeiger Feb 12, 2020
08fa083
Add tests from scala-async
szeiger Feb 12, 2020
3b38d95
Fix bug in StateSet and add a remove operation
retronym Mar 11, 2020
b61e65b
Delete dead code.
retronym Mar 12, 2020
5a9517b
Convert tests to ScalaConcurrent Future System
retronym Feb 17, 2020
50150ca
Fix nested async transforms
retronym Feb 18, 2020
8de6b1b
We'll never see `isAsync` again in nested trees.
retronym Feb 25, 2020
9666175
Deal with await in ArrayValue
retronym Feb 18, 2020
e82ed14
Live variables: detect usages in Awaitable.expr
retronym Feb 25, 2020
0619d4e
Companion Detection should be post-erasure aware
retronym Feb 24, 2020
2b580ed
Look for references in types as well as in terms.
retronym Mar 14, 2020
ec81663
A simpler and faster ANF transform
retronym Feb 18, 2020
b1c43ce
Reduce allocations in name freshening.
retronym Feb 24, 2020
d0ac056
Fix broken attempt to elide nulling in final state
retronym Feb 25, 2020
ee66301
Sort cases by state ID
retronym Feb 25, 2020
c7cb301
Fix .dot output when code contains ampersand
retronym Feb 25, 2020
210bfac
Use reporter.error directly
retronym Feb 25, 2020
90568be
Cleanup AsyncPhase's transformer
retronym Feb 25, 2020
2d20aeb
Harden Context.make debug logging against null trees.
retronym Feb 25, 2020
e276921
Integrate async's logging into debuglog
retronym Feb 25, 2020
588cab4
Refactor and document UseFields transform
retronym Feb 27, 2020
528ffd2
Avoid overhead in tree attachments
retronym Mar 3, 2020
b617575
Reduce number of states in async state machine
retronym Mar 3, 2020
7fdeed3
Use faster attachment lookups in ThicketTransformer
retronym Mar 11, 2020
1db7f9d
Reinstate live variables test and fix null assignment
retronym Mar 12, 2020
32e15bb
Use compiler APIs.
retronym Mar 12, 2020
c62fb75
Deal in typed trees in ExprBuilder.
retronym Mar 12, 2020
ffc613b
Remove PhasedTransform
retronym Mar 12, 2020
789811a
Remove legacy future system methods.
retronym Mar 12, 2020
b86f268
Remove unused imports
retronym Mar 12, 2020
2f75120
Allow a nested TypingTransformer to use an existing local typer.
retronym Mar 13, 2020
4753b39
Merge AsyncTransformState with SymLookup
retronym Mar 14, 2020
bcf25d7
Add a fast path to the async phase
retronym Mar 14, 2020
f512e2f
Split some async implementation classes into files
retronym Mar 14, 2020
dd0001b
Refactor lifting to to change owner sooner
retronym Mar 14, 2020
ad00a91
Refactor field nulling.
retronym Mar 14, 2020
60db8f9
Remove unused imports.
retronym Mar 15, 2020
5755c74
Remove dead cases from adaptToUnit
retronym Mar 15, 2020
ef04e59
Move AsyncTransform code into AsyncPhase.scala
retronym Mar 15, 2020
6f1546c
Use of AnfTransformer directly.
retronym Mar 15, 2020
93748bd
Refactor asyncTransform
retronym Mar 15, 2020
22014fc
Refactor addFutureSystemAttachment
retronym Mar 15, 2020
0cea808
Remove dead code.
retronym Mar 15, 2020
02bbc1d
Avoid allocating containsAwaitTraverser so often.
retronym Mar 15, 2020
a3aaeda
Avoid logging string allocation
retronym Mar 15, 2020
1285669
Comment out debugging toString.
retronym Mar 15, 2020
4124c25
More efficient Contains-/No-Await cleanup
retronym Mar 15, 2020
aabe723
Avoid overload resolution in typing default case of state handler.
retronym Mar 15, 2020
01a83cb
Limit UseFields transform to relevent subtrees.
retronym Mar 15, 2020
c89c21b
More typed sub-trees avoiding working in `typed(...)`
retronym Mar 15, 2020
33ca19f
Inline case class Awaitable
retronym Mar 15, 2020
c5bc867
StateSet: Allocate caseSet lazily
retronym Mar 18, 2020
2631d47
Be explicit about lambdaLift following the async phase.
retronym Mar 18, 2020
11733cb
Overhaul integration with front end macros
retronym Mar 16, 2020
791c015
Don't insert null assignments for the terminal state.
retronym Mar 21, 2020
36ad222
Remove dead code or make things more private.
retronym Mar 21, 2020
d7a2764
Local TypeDef no longer make it to the async phase.
retronym Mar 23, 2020
36d452e
Allow compilation of async's partest suite in Junit
retronym Mar 23, 2020
dd463d1
Test and simplify ANF transform of Nothing-typed if/match
retronym Mar 23, 2020
de4fc23
Fix detection of ill-nested awaits
retronym Mar 23, 2020
7d46e6b
Move ThicketTransformer to s.t.n.transform
retronym Mar 24, 2020
469cfc1
Add tests from scala/scala-async#210
retronym Mar 24, 2020
074b480
Add tests from scala/scala-async#206
retronym Mar 24, 2020
3a2882f
Fix regression with non-awaiting patterns in tail position
retronym Mar 27, 2020
b68e118
More granular fresh names.
retronym Mar 28, 2020
0775a0d
erasure: push casts into LabelDefs to simplify async phase
retronym Mar 28, 2020
d1d3daa
Avoid VerifyErrors wrapping Try in Assign.
retronym Mar 28, 2020
8c770f2
await in by-name function arg is repoted as ill-nested.
retronym Mar 30, 2020
4d0f6bb
Improve error reporting in asynj junit test.
retronym Mar 31, 2020
a5298c5
Support state getter/setter methods
retronym Mar 31, 2020
499296c
Better integration with compiler fresh names
retronym Apr 2, 2020
e73f502
Position synthetic trees accurately
retronym Apr 19, 2020
bcb5dc6
Overhaul/fix live variables
retronym Mar 30, 2020
d81ef53
Add an another example of a Writer/Option monad
retronym Apr 22, 2020
502c127
Fixup remove stray .log files from partest suite
retronym Jun 4, 2020
e63a133
Move async run tests to jvm category
retronym Jun 4, 2020
f9d7952
Add a Scala.js compatible smoke test.
retronym Jun 4, 2020
215f173
Move some async test cases to partest
retronym Jun 4, 2020
5455445
Tweak names in generated code
retronym Jun 8, 2020
db3ea69
Avoid exotic use of Labels to gain Scala.js compat
retronym Jun 9, 2020
923e57b
Add missing source file headers
retronym Jun 10, 2020
b76a0ec
Fix an edge case for value classes
retronym Jun 11, 2020
c94951e
Fix an edge case for while in expr position
retronym Jun 12, 2020
7f22119
Rework async expression wrapping
retronym Jun 15, 2020
230684d
Avoid generating dead code for terminal state
retronym Jun 15, 2020
0e27334
remove old ThicketTransformer
lrytz Jun 12, 2020
ae91a3c
Address review comments (remove dead/debug code, +comments)
retronym Jun 17, 2020
89f48d2
Refactor detection of ill nested await calls
retronym Jun 18, 2020
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
Prev Previous commit
Next Next commit
Move async run tests to jvm category
Some will be made Scala.js compatible in a subsequent commit and
moved back to run.
  • Loading branch information
retronym committed Jun 10, 2020
commit e63a133c65fd0c6c98688d2d80603d8e1ccb045b
File renamed without changes.
File renamed without changes.
File renamed without changes.
File renamed without changes.
File renamed without changes.
File renamed without changes.
File renamed without changes.
File renamed without changes.
File renamed without changes.
File renamed without changes.
File renamed without changes.
File renamed without changes.
File renamed without changes.
File renamed without changes.
File renamed without changes.
File renamed without changes.
File renamed without changes.
File renamed without changes.
File renamed without changes.
File renamed without changes.
File renamed without changes.
File renamed without changes.
File renamed without changes.
File renamed without changes.
File renamed without changes.
File renamed without changes.
File renamed without changes.
File renamed without changes.
File renamed without changes.
File renamed without changes.
File renamed without changes.
File renamed without changes.
File renamed without changes.
File renamed without changes.
File renamed without changes.
File renamed without changes.
File renamed without changes.
File renamed without changes.
File renamed without changes.
File renamed without changes.
File renamed without changes.
File renamed without changes.
File renamed without changes.
0