TypeScript/tests/cases/compiler/deeplyDependentLargeArrayMutation2.ts
Wesley Wigham 5e8b63cd1d
Use context free expression types in evolving array checking and cache context free type (#26585)
* Use context free expression types in evolving array checking and cache context free type

* Simplify second test

* Low max depth a tad just so node 8 wont stack out

* By request make flow control a round number
2018-08-22 16:17:42 -07:00

320 lines
9 KiB
TypeScript

// @allowJs: true
// @checkJs: true
// @noEmit: true
// @filename: foo.js
// Looking at this test and thinking "that's silly, nobody would write code like that" and thinking it's OK to break this test?
// You'd be wrong - https://raw.githubusercontent.com/archilogic-com/3dio-js/master/build/3dio.js and plenty of other codebases
// have js code exactly like this! This pattern (even at this size!) with a few more embellishments is a common way to encode
// polygons or verticies into a buffer from a formulaic object definition! So while this is a lot more regular than a real piece
// of code, this is still representative of a common pattern.
function build() {
let i = 0;
const arr = [];
arr[i++] = arr[i] + 1;
arr[i++] = arr[i] + 1;
arr[i++] = arr[i] + 1;
arr[i++] = arr[i] + 1;
arr[i++] = arr[i] + 1;
arr[i++] = arr[i] + 1;
arr[i++] = arr[i] + 1;
arr[i++] = arr[i] + 1;
arr[i++] = arr[i] + 1;
arr[i++] = arr[i] + 1;
arr[i++] = arr[i] + 1;
arr[i++] = arr[i] + 1;
arr[i++] = arr[i] + 1;
arr[i++] = arr[i] + 1;
arr[i++] = arr[i] + 1;
arr[i++] = arr[i] + 1;
arr[i++] = arr[i] + 1;
arr[i++] = arr[i] + 1;
arr[i++] = arr[i] + 1;
arr[i++] = arr[i] + 1;
arr[i++] = arr[i] + 1;
arr[i++] = arr[i] + 1;
arr[i++] = arr[i] + 1;
arr[i++] = arr[i] + 1;
arr[i++] = arr[i] + 1;
arr[i++] = arr[i] + 1;
arr[i++] = arr[i] + 1;
arr[i++] = arr[i] + 1;
arr[i++] = arr[i] + 1;
arr[i++] = arr[i] + 1;
arr[i++] = arr[i] + 1;
arr[i++] = arr[i] + 1;
arr[i++] = arr[i] + 1;
arr[i++] = arr[i] + 1;
arr[i++] = arr[i] + 1;
arr[i++] = arr[i] + 1;
arr[i++] = arr[i] + 1;
arr[i++] = arr[i] + 1;
arr[i++] = arr[i] + 1;
arr[i++] = arr[i] + 1;
arr[i++] = arr[i] + 1;
arr[i++] = arr[i] + 1;
arr[i++] = arr[i] + 1;
arr[i++] = arr[i] + 1;
arr[i++] = arr[i] + 1;
arr[i++] = arr[i] + 1;
arr[i++] = arr[i] + 1;
arr[i++] = arr[i] + 1;
arr[i++] = arr[i] + 1;
arr[i++] = arr[i] + 1;
arr[i++] = arr[i] + 1;
arr[i++] = arr[i] + 1;
arr[i++] = arr[i] + 1;
arr[i++] = arr[i] + 1;
arr[i++] = arr[i] + 1;
arr[i++] = arr[i] + 1;
arr[i++] = arr[i] + 1;
arr[i++] = arr[i] + 1;
arr[i++] = arr[i] + 1;
arr[i++] = arr[i] + 1;
arr[i++] = arr[i] + 1;
arr[i++] = arr[i] + 1;
arr[i++] = arr[i] + 1;
arr[i++] = arr[i] + 1;
arr[i++] = arr[i] + 1;
arr[i++] = arr[i] + 1;
arr[i++] = arr[i] + 1;
arr[i++] = arr[i] + 1;
arr[i++] = arr[i] + 1;
arr[i++] = arr[i] + 1;
arr[i++] = arr[i] + 1;
arr[i++] = arr[i] + 1;
arr[i++] = arr[i] + 1;
arr[i++] = arr[i] + 1;
arr[i++] = arr[i] + 1;
arr[i++] = arr[i] + 1;
arr[i++] = arr[i] + 1;
arr[i++] = arr[i] + 1;
arr[i++] = arr[i] + 1;
arr[i++] = arr[i] + 1;
arr[i++] = arr[i] + 1;
arr[i++] = arr[i] + 1;
arr[i++] = arr[i] + 1;
arr[i++] = arr[i] + 1;
arr[i++] = arr[i] + 1;
arr[i++] = arr[i] + 1;
arr[i++] = arr[i] + 1;
arr[i++] = arr[i] + 1;
arr[i++] = arr[i] + 1;
arr[i++] = arr[i] + 1;
arr[i++] = arr[i] + 1;
arr[i++] = arr[i] + 1;
arr[i++] = arr[i] + 1;
arr[i++] = arr[i] + 1;
arr[i++] = arr[i] + 1;
arr[i++] = arr[i] + 1;
arr[i++] = arr[i] + 1;
arr[i++] = arr[i] + 1;
arr[i++] = arr[i] + 1;
arr[i++] = arr[i] + 1;
arr[i++] = arr[i] + 1;
arr[i++] = arr[i] + 1;
arr[i++] = arr[i] + 1;
arr[i++] = arr[i] + 1;
arr[i++] = arr[i] + 1;
arr[i++] = arr[i] + 1;
arr[i++] = arr[i] + 1;
arr[i++] = arr[i] + 1;
arr[i++] = arr[i] + 1;
arr[i++] = arr[i] + 1;
arr[i++] = arr[i] + 1;
arr[i++] = arr[i] + 1;
arr[i++] = arr[i] + 1;
arr[i++] = arr[i] + 1;
arr[i++] = arr[i] + 1;
arr[i++] = arr[i] + 1;
arr[i++] = arr[i] + 1;
arr[i++] = arr[i] + 1;
arr[i++] = arr[i] + 1;
arr[i++] = arr[i] + 1;
arr[i++] = arr[i] + 1;
arr[i++] = arr[i] + 1;
arr[i++] = arr[i] + 1;
arr[i++] = arr[i] + 1;
arr[i++] = arr[i] + 1;
arr[i++] = arr[i] + 1;
arr[i++] = arr[i] + 1;
arr[i++] = arr[i] + 1;
arr[i++] = arr[i] + 1;
arr[i++] = arr[i] + 1;
arr[i++] = arr[i] + 1;
arr[i++] = arr[i] + 1;
arr[i++] = arr[i] + 1;
arr[i++] = arr[i] + 1;
arr[i++] = arr[i] + 1;
arr[i++] = arr[i] + 1;
arr[i++] = arr[i] + 1;
arr[i++] = arr[i] + 1;
arr[i++] = arr[i] + 1;
arr[i++] = arr[i] + 1;
arr[i++] = arr[i] + 1;
arr[i++] = arr[i] + 1;
arr[i++] = arr[i] + 1;
arr[i++] = arr[i] + 1;
arr[i++] = arr[i] + 1;
arr[i++] = arr[i] + 1;
arr[i++] = arr[i] + 1;
arr[i++] = arr[i] + 1;
arr[i++] = arr[i] + 1;
arr[i++] = arr[i] + 1;
arr[i++] = arr[i] + 1;
arr[i++] = arr[i] + 1;
arr[i++] = arr[i] + 1;
arr[i++] = arr[i] + 1;
arr[i++] = arr[i] + 1;
arr[i++] = arr[i] + 1;
arr[i++] = arr[i] + 1;
arr[i++] = arr[i] + 1;
arr[i++] = arr[i] + 1;
arr[i++] = arr[i] + 1;
arr[i++] = arr[i] + 1;
arr[i++] = arr[i] + 1;
arr[i++] = arr[i] + 1;
arr[i++] = arr[i] + 1;
arr[i++] = arr[i] + 1;
arr[i++] = arr[i] + 1;
arr[i++] = arr[i] + 1;
arr[i++] = arr[i] + 1;
arr[i++] = arr[i] + 1;
arr[i++] = arr[i] + 1;
arr[i++] = arr[i] + 1;
arr[i++] = arr[i] + 1;
arr[i++] = arr[i] + 1;
arr[i++] = arr[i] + 1;
arr[i++] = arr[i] + 1;
arr[i++] = arr[i] + 1;
arr[i++] = arr[i] + 1;
arr[i++] = arr[i] + 1;
arr[i++] = arr[i] + 1;
arr[i++] = arr[i] + 1;
arr[i++] = arr[i] + 1;
arr[i++] = arr[i] + 1;
arr[i++] = arr[i] + 1;
arr[i++] = arr[i] + 1;
arr[i++] = arr[i] + 1;
arr[i++] = arr[i] + 1;
arr[i++] = arr[i] + 1;
arr[i++] = arr[i] + 1;
arr[i++] = arr[i] + 1;
arr[i++] = arr[i] + 1;
arr[i++] = arr[i] + 1;
arr[i++] = arr[i] + 1;
arr[i++] = arr[i] + 1;
arr[i++] = arr[i] + 1;
arr[i++] = arr[i] + 1;
arr[i++] = arr[i] + 1;
arr[i++] = arr[i] + 1;
arr[i++] = arr[i] + 1;
arr[i++] = arr[i] + 1;
arr[i++] = arr[i] + 1;
arr[i++] = arr[i] + 1;
arr[i++] = arr[i] + 1;
arr[i++] = arr[i] + 1;
arr[i++] = arr[i] + 1;
arr[i++] = arr[i] + 1;
arr[i++] = arr[i] + 1;
arr[i++] = arr[i] + 1;
arr[i++] = arr[i] + 1;
arr[i++] = arr[i] + 1;
arr[i++] = arr[i] + 1;
arr[i++] = arr[i] + 1;
arr[i++] = arr[i] + 1;
arr[i++] = arr[i] + 1;
arr[i++] = arr[i] + 1;
arr[i++] = arr[i] + 1;
arr[i++] = arr[i] + 1;
arr[i++] = arr[i] + 1;
arr[i++] = arr[i] + 1;
arr[i++] = arr[i] + 1;
arr[i++] = arr[i] + 1;
arr[i++] = arr[i] + 1;
arr[i++] = arr[i] + 1;
arr[i++] = arr[i] + 1;
arr[i++] = arr[i] + 1;
arr[i++] = arr[i] + 1;
arr[i++] = arr[i] + 1;
arr[i++] = arr[i] + 1;
arr[i++] = arr[i] + 1;
arr[i++] = arr[i] + 1;
arr[i++] = arr[i] + 1;
arr[i++] = arr[i] + 1;
arr[i++] = arr[i] + 1;
arr[i++] = arr[i] + 1;
arr[i++] = arr[i] + 1;
arr[i++] = arr[i] + 1;
arr[i++] = arr[i] + 1;
arr[i++] = arr[i] + 1;
arr[i++] = arr[i] + 1;
arr[i++] = arr[i] + 1;
arr[i++] = arr[i] + 1;
arr[i++] = arr[i] + 1;
arr[i++] = arr[i] + 1;
arr[i++] = arr[i] + 1;
arr[i++] = arr[i] + 1;
arr[i++] = arr[i] + 1;
arr[i++] = arr[i] + 1;
arr[i++] = arr[i] + 1;
arr[i++] = arr[i] + 1;
arr[i++] = arr[i] + 1;
arr[i++] = arr[i] + 1;
arr[i++] = arr[i] + 1;
arr[i++] = arr[i] + 1;
arr[i++] = arr[i] + 1;
arr[i++] = arr[i] + 1;
arr[i++] = arr[i] + 1;
arr[i++] = arr[i] + 1;
arr[i++] = arr[i] + 1;
arr[i++] = arr[i] + 1;
arr[i++] = arr[i] + 1;
arr[i++] = arr[i] + 1;
arr[i++] = arr[i] + 1;
arr[i++] = arr[i] + 1;
arr[i++] = arr[i] + 1;
arr[i++] = arr[i] + 1;
arr[i++] = arr[i] + 1;
arr[i++] = arr[i] + 1;
arr[i++] = arr[i] + 1;
arr[i++] = arr[i] + 1;
arr[i++] = arr[i] + 1;
arr[i++] = arr[i] + 1;
arr[i++] = arr[i] + 1;
arr[i++] = arr[i] + 1;
arr[i++] = arr[i] + 1;
arr[i++] = arr[i] + 1;
arr[i++] = arr[i] + 1;
arr[i++] = arr[i] + 1;
arr[i++] = arr[i] + 1;
arr[i++] = arr[i] + 1;
arr[i++] = arr[i] + 1;
arr[i++] = arr[i] + 1;
arr[i++] = arr[i] + 1;
arr[i++] = arr[i] + 1;
arr[i++] = arr[i] + 1;
arr[i++] = arr[i] + 1;
arr[i++] = arr[i] + 1;
arr[i++] = arr[i] + 1;
arr[i++] = arr[i] + 1;
arr[i++] = arr[i] + 1;
arr[i++] = arr[i] + 1;
arr[i++] = arr[i] + 1;
arr[i++] = arr[i] + 1;
arr[i++] = arr[i] + 1;
arr[i++] = arr[i] + 1;
arr[i++] = arr[i] + 1;
arr[i++] = arr[i] + 1;
arr[i++] = arr[i] + 1;
arr[i++] = arr[i] + 1;
arr[i++] = arr[i] + 1;
arr[i++] = arr[i] + 1;
arr[i++] = arr[i] + 1;
arr[i++] = arr[i] + 1;
arr[i++] = arr[i] + 1;
arr[i++] = arr[i] + 1;
arr[i++] = arr[i] + 1;
return arr;
}
const a = build();