prepack/test/error-handler
Sapan Bhatia ffd230e4d5 Model aliasing effects for array loop operators (#2570)
Summary:
This PR guarantees the correctness of optimized `Array.map` operators, even in the face of aliasing effects. It does four things:

1. Trigger generic leaking if an array operator is re-specialized in the non-Instant Render use case.
2. Tracks aliasing effects created by specialized operators, and triggers leaking or materialization when needed to ensure correct behavior
3. Deactivates immediate transitive materialization following the use of specialized operators, instead deferring this to the leaking implementation. The leaking implementation reaches aliased objects via a new arg added to widened numeric arrays. The arg is an abstract value of kind "mayAliasSet" that is set to top, but whose may alias set is tracked. If leaking does not happen, then materialization is avoided.
4. It permits benign mutations in Instant Render, where the mutations do not cause references to non-final snapshots of the object.

Follow up:
- Model aliasing effects losslessly via widened objects: #2569
- Add support for `filter` and `reduce`

Resolves #2449
Pull Request resolved: https://github.com/facebook/prepack/pull/2570

Differential Revision: D10149117

Pulled By: sb98052

fbshipit-source-id: eb686982574c8ef868934472903c405f3d63bbed
2018-10-02 12:39:46 -07:00
..
.write-write-conflict.js.swp Make optimized functions produce compiler diagnostic on mutating non-… (#2175) 2018-07-10 12:10:41 -07:00
abstract-value-check-dup-name-string.js Run Prettier for serializer tests too (#2234) 2018-07-11 03:55:11 -07:00
bad-functions.js Add basic support for throws in React (#2502) 2018-08-29 18:37:03 -07:00
binaryExpression.js Run Prettier for serializer tests too (#2234) 2018-07-11 03:55:11 -07:00
call2.js Run Prettier for serializer tests too (#2234) 2018-07-11 03:55:11 -07:00
call.js Run Prettier for serializer tests too (#2234) 2018-07-11 03:55:11 -07:00
class.js Run Prettier for serializer tests too (#2234) 2018-07-11 03:55:11 -07:00
conditional-return.js Run Prettier for serializer tests too (#2234) 2018-07-11 03:55:11 -07:00
EmptyBuiltInArrayCycle.js Enable and constrain optimized array operator support for InstantRender (#2547) 2018-09-17 14:55:58 -07:00
EmptyBuiltInPropsCycle.js Enable and constrain optimized array operator support for InstantRender (#2547) 2018-09-17 14:55:58 -07:00
FinalObjectCannotBeMutated.js Run Prettier for serializer tests too (#2234) 2018-07-11 03:55:11 -07:00
forInStatement.js Move away from object templates, part 5 2017-09-12 09:01:07 -07:00
forOfStatement.js Move away from object templates, part 1 2017-08-21 19:52:39 -07:00
in1.js Run Prettier for serializer tests too (#2234) 2018-07-11 03:55:11 -07:00
in2.js Run Prettier for serializer tests too (#2234) 2018-07-11 03:55:11 -07:00
instanceof.js Run Prettier for serializer tests too (#2234) 2018-07-11 03:55:11 -07:00
InstantRenderArrayOps3.js Enable and constrain optimized array operator support for InstantRender (#2547) 2018-09-17 14:55:58 -07:00
member2.js Provide for intrinsic abstract arrays 2017-12-23 11:09:17 -08:00
member.js Provide for intrinsic abstract arrays 2017-12-23 11:09:17 -08:00
ModifiedObjectPropertyLimitation.js Add basic support for throws in React (#2502) 2018-08-29 18:37:03 -07:00
object-assign.js Run Prettier for serializer tests too (#2234) 2018-07-11 03:55:11 -07:00
objectExpression2.js Run Prettier for serializer tests too (#2234) 2018-07-11 03:55:11 -07:00
objectExpression.js Run Prettier for serializer tests too (#2234) 2018-07-11 03:55:11 -07:00
objectpattern.js Error message for unknown name in object pattern 2017-07-13 12:25:56 -07:00
PropertyAttributeConflict.js Refactor assignment on partial or possibly deleted property (#2389) 2018-08-10 13:24:35 -07:00
Set.js Run Prettier for serializer tests too (#2234) 2018-07-11 03:55:11 -07:00
stackOverflow.js Fixing handling of stack overflows. (#2553) 2018-09-17 18:55:30 -07:00
syntaxError.js fix #1239 - Command-line based syntax errors now print location 2017-12-18 13:56:26 -08:00
testErrorHandlerCalled.js Error for in with abstract 2017-06-19 18:38:44 -07:00
try-and-access-abstract-property.js Run Prettier for serializer tests too (#2234) 2018-07-11 03:55:11 -07:00
try-and-call-abstract-function.js Run Prettier for serializer tests too (#2234) 2018-07-11 03:55:11 -07:00
unaryExpression.js Run Prettier for serializer tests too (#2234) 2018-07-11 03:55:11 -07:00
updateExpression.js Run Prettier for serializer tests too (#2234) 2018-07-11 03:55:11 -07:00
with2.js Run Prettier for serializer tests too (#2234) 2018-07-11 03:55:11 -07:00
with.js Run Prettier for serializer tests too (#2234) 2018-07-11 03:55:11 -07:00
write-forin-conflict.js A few issues I found while being a Prepack user on InstantRender. (#2352) 2018-08-02 12:39:02 -07:00
write-in-conflict.js A few issues I found while being a Prepack user on InstantRender. (#2352) 2018-08-02 12:39:02 -07:00
write-reflect-conflict.js A few issues I found while being a Prepack user on InstantRender. (#2352) 2018-08-02 12:39:02 -07:00
write-write-conflict2.js A few issues I found while being a Prepack user on InstantRender. (#2352) 2018-08-02 12:39:02 -07:00
write-write-conflict3.js A few issues I found while being a Prepack user on InstantRender. (#2352) 2018-08-02 12:39:02 -07:00
write-write-conflict4.js A few issues I found while being a Prepack user on InstantRender. (#2352) 2018-08-02 12:39:02 -07:00
write-write-conflict.js A few issues I found while being a Prepack user on InstantRender. (#2352) 2018-08-02 12:39:02 -07:00
write-write-unknown-prop-conflict.js A few issues I found while being a Prepack user on InstantRender. (#2352) 2018-08-02 12:39:02 -07:00