diff --git a/quest/m3/README.md b/quest/m3/README.md index 6d46a895c..36498ed54 100644 --- a/quest/m3/README.md +++ b/quest/m3/README.md @@ -27,7 +27,7 @@ generic std gap is planned here even when moq never calls it. - [Placeholders written to a crate's own fmt::Write](/quest/m3/ts-fmt-calls.md) - `write!` with placeholders into a crate's own writer translates, its `write_str` seeing each call std makes - [Waiting: drop the lang fixture's mul_add allowance](/quest/m3/ts-fma-allowance.md) - the differential fails on any `mul_add` difference again once wasm32's `fma` rounds exactly - [Waiting: type-check in process with tsrs](/quest/m3/ts-tsrs.md) - rust2-ts checks bindings through tsrs instead of `tsc` once it is a stable library -- [Drop order in std's folds and iterators](/quest/m3/ts-drop-order.md) - the values that drop still refused in std's consumers, flattens, and collects drop as std's do +- [Drop order in std's folds and iterators](/quest/m3/ts-drop-order.md) - the values that drop still refused in std's consumers and collects drop as std's do - [A slice of one value behind any &mut](/quest/m3/ts-slice-of-one.md) - `slice::from_mut` and `array::from_mut` of a `&mut u8`, or of an object no place names, translate - [std's calls of a closure that have no mapping](/quest/m3/ts-closure-calls.md) - `try_fold`, `partition`, `repeat_with`, `sort_by_cached_key`, and `LazyCell::new` translate, dropping what their closures own as std's do - [A closure that drops given to a string's edit or search](/quest/m3/ts-string-closures.md) - `String::retain` and `str`'s searches by a closure that owns a value that drops translate diff --git a/quest/m3/ts-drop-order.md b/quest/m3/ts-drop-order.md index d52434a82..10d5a1447 100644 --- a/quest/m3/ts-drop-order.md +++ b/quest/m3/ts-drop-order.md @@ -17,23 +17,12 @@ map's `into_keys` and `into_values`, and the closures `for_each` and `fold` own The closures `reduce`, `max_by`, `min_by`, their `_by_key` forms, `is_sorted_by_key`, and a map's entries' `or_insert_with`, `or_insert_with_key`, and `and_modify` own landed in [#438](https://github.com/moq-dev/rust2/pull/438), with its `released` step. +A `skip` of a zip std reads by index, a zip collected in place, and a `flatten` whose +inner iterators hold items once they end landed in +[#446](https://github.com/moq-dev/rust2/pull/446), with its `indexed` and +`flattened` steps. Each left is refused with a span where std's order is one JS's can't follow yet: -- A `skip` of a `zip` of two `TrustedRandomAccess` iterators of items that drop, as the - reject fixture's `skipped_zip`: std's `Skip` read by index, as a zip by index or `take`'s - fold reads it, makes and drops each skipped pair whole, where its `next` skips through - the zip's `nth`, a side at a time. `rt.Iter` would need a reader by index beside `folded`. -- A `collect` in place of a zip std reads by index that holds values that drop, as the - reject fixture's `zip_in_place`: std reads it by index, then drops it whole, inner - closures before outer ones, where the runtime's bounded read is its `fold`, which drops - each closure as its fold ends. -- A `flatten` or `flat_map` whose inner iterator holds items once ended, as - `v.into_iter().map(|v| v.into_iter().take(1)).flatten()` of a `Vec>` whose `T` - drops. std's `try_fold` keeps an ended inner iterator until the next one replaces it, or - drops it after the source once the source ends, where `next` drops it as it ends. Every - adaptor whose `try_fold` is its source's, such as `map`, `filter`'s `next`, and `rev`'s - through `try_rfold`, reads it that way, so `rt.Iter::folded` would follow through each, - a hot path to measure on the [TS benchmark](/ts/README.md#bench). - A B-tree's `collect` of entries that drop, sorted and deduplicated by the crate's own impls, as `v.into_iter().collect::>()` of an `O` whose `Ord`, `PartialOrd`, or `PartialEq` is its own: one that panics or disagrees with itself leaves equal keys diff --git a/ts/bench/iter.ts b/ts/bench/iter.ts index 39af9a779..947cea042 100644 --- a/ts/bench/iter.ts +++ b/ts/bench/iter.ts @@ -46,6 +46,13 @@ export function iterate(chain: number, data: Uint8Array): Uint8Array { for (let i = data.length - 1; i >= 0; i--) if ((i & 0xff) < data[i]) n++; return u64(n); } + case 8: { + // Both sides mapped as the front's `for ... of` reads them. + let n = 0; + let i = 0; + for (const a of data.values()) if (a >> 1 < (data[i++] ^ 3)) n++; + return u64(n); + } default: { let last = 0; let i = 0; diff --git a/ts/bench/workloads.ts b/ts/bench/workloads.ts index 3afdcd876..b21e0904e 100644 --- a/ts/bench/workloads.ts +++ b/ts/bench/workloads.ts @@ -58,7 +58,7 @@ export function workloads(encode: (input: Uint8Array) => Uint8Array): Workload[] // Iterator chains over bytes, as `bench.rs`'s op 6 picks them by selector; no byte is // 0xff, so `any` reads them all. const bytes = Uint8Array.from({ length: 1024 }, (_, i) => (i * 167 + 13) % 255); - const chains = ["map-filter-count", "any", "filter-collect", "sum", "skip-take-fold", "enumerate-for", "zip-filter-count", "zip-rev-filter-count"]; + const chains = ["map-filter-count", "any", "filter-collect", "sum", "skip-take-fold", "enumerate-for", "zip-filter-count", "zip-rev-filter-count", "zip-map-filter-count"]; chains.forEach((chain, selector) => { out.push({ name: `iter/${chain}`, op: "iterate", items: bytes.length, input: Uint8Array.of(6, selector, ...bytes) }); }); diff --git a/ts/fixtures/codec/expected/bench.ts b/ts/fixtures/codec/expected/bench.ts index f0da8c28a..089edc987 100644 --- a/ts/fixtures/codec/expected/bench.ts +++ b/ts/fixtures/codec/expected/bench.ts @@ -473,45 +473,53 @@ export function push(selector: rt.u8, data: rt.ByteSlice, out: rt.ByteVec): void */ export function iterate(chain: rt.u8, data: rt.ByteSlice, out: rt.ByteVec): void { if (chain === 0) { - putUsize(out, rt.iterCount(rt.iterFilter(rt.iterMap(rt.iterSlice(rt.byteSliceView(data)), (_214: rt.u8): rt.u8 => { - return _214 >> 1; - }), (_215: rt.u8): boolean => { - return (_215 & 1) === 0; + putUsize(out, rt.iterCount(rt.iterFilter(rt.iterMap(rt.iterSlice(rt.byteSliceView(data)), (_217: rt.u8): rt.u8 => { + return _217 >> 1; + }), (_218: rt.u8): boolean => { + return (_218 & 1) === 0; }))); } else if (chain === 1) { - rt.byteVecPush(out, rt.iterAny(rt.iterSlice(rt.byteSliceView(data)), (_213: rt.u8): boolean => { - return _213 === 255; + rt.byteVecPush(out, rt.iterAny(rt.iterSlice(rt.byteSliceView(data)), (_216: rt.u8): boolean => { + return _216 === 255; }) ? 1 : 0); } else if (chain === 2) { - putUsize(out, rt.iterToByteVec(rt.iterFilter(rt.iterSlice(rt.byteSliceView(data)), (_212: rt.u8): boolean => { - return (_212 & 1) === 1; + putUsize(out, rt.iterToByteVec(rt.iterFilter(rt.iterSlice(rt.byteSliceView(data)), (_215: rt.u8): boolean => { + return (_215 & 1) === 1; }), "next").length); } else if (chain === 3) { - harness_putU64(out, rt.iterSum(rt.iterMap(rt.iterSlice(rt.byteSliceView(data)), (_211: rt.u8): rt.u32 => { - return _211 as rt.u32; + harness_putU64(out, rt.iterSum(rt.iterMap(rt.iterSlice(rt.byteSliceView(data)), (_214: rt.u8): rt.u32 => { + return _214 as rt.u32; }), rt.u32Add, 0) as rt.u64); } else if (chain === 4) { harness_putU64(out, rt.iterFold(rt.iterTake(rt.iterSkip(rt.iterSlice(rt.byteSliceView(data)), 16), 512), 0, (acc: rt.u32, _3: rt.u8): rt.u32 => { return (acc ^ _3 as rt.u32) >>> 0; }) as rt.u64); } else if (chain === 6) { - putUsize(out, rt.iterCount(rt.iterFilter(rt.iterZip(rt.iterSlice(rt.byteSliceView(data)), rt.iterRev(rt.iterSlice(rt.byteSliceView(data))), "len"), (_210: [rt.u8, rt.u8]): boolean => { - return _210[0] < _210[1]; + putUsize(out, rt.iterCount(rt.iterFilter(rt.iterZip(rt.iterSlice(rt.byteSliceView(data)), rt.iterRev(rt.iterSlice(rt.byteSliceView(data))), "len"), (_213: [rt.u8, rt.u8]): boolean => { + return _213[0] < _213[1]; }))); } else if (chain === 7) { - putUsize(out, rt.iterCount(rt.iterFilter(rt.iterRev(rt.iterZip(new rt.Range(0, rt.usizeMul(data.length, 64)), rt.iterSlice(rt.byteSliceView(data)), [false, false])), (_2: [rt.usize, rt.u8]): boolean => { - return (_2[0] & 0xff) < _2[1]; + putUsize(out, rt.iterCount(rt.iterFilter(rt.iterRev(rt.iterZip(new rt.Range(0, rt.usizeMul(data.length, 64)), rt.iterSlice(rt.byteSliceView(data)), [false, false])), (_212: [rt.usize, rt.u8]): boolean => { + return (_212[0] & 0xff) < _212[1]; + }))); + } else if (chain === 8) { + putUsize(out, rt.iterCount(rt.iterFilter(rt.iterZip(rt.iterMap(rt.iterSlice(rt.byteSliceView(data)), (_2: rt.u8): rt.u8 => { + return _2 >> 1; + }), rt.iterMap(rt.iterSlice(rt.byteSliceView(data)), (_210: rt.u8): rt.u8 => { + return _210 ^ 3; + }), [true, true]), (_211: [rt.u8, rt.u8]): boolean => { + return _211[0] < _211[1]; }))); } else { let last: rt.usize = 0; const iter: rt.Iter<[rt.usize, rt.u8]> = rt.iterEnumerate(rt.iterSlice(rt.byteSliceView(data))); while (true) { - const _47: [rt.usize, rt.u8] | rt.Done = iter.next(); - if (_47 === rt.DONE) { + const _54: [rt.usize, rt.u8] | rt.Done = iter.next(); + if (_54 === rt.DONE) { break; } - const i: rt.usize = _47[0]; - if (_47[1] === 128) { + const i: rt.usize = _54[0]; + if (_54[1] === 128) { last = i; } } diff --git a/ts/fixtures/codec/src/bench.rs b/ts/fixtures/codec/src/bench.rs index d9482e68b..75584c03c 100644 --- a/ts/fixtures/codec/src/bench.rs +++ b/ts/fixtures/codec/src/bench.rs @@ -329,6 +329,15 @@ fn iterate(chain: u8, data: &[u8], out: &mut Vec) { .filter(|&(i, &b)| (i as u8) < b) .count(), ), + // By index from the front, each side mapped, which may have side effects. + 8 => put_usize( + out, + data.iter() + .map(|&b| b >> 1) + .zip(data.iter().map(|&b| b ^ 3)) + .filter(|(a, b)| a < b) + .count(), + ), _ => { let mut last = 0; for (i, &b) in data.iter().enumerate() { diff --git a/ts/fixtures/lang/expected/iters.ts b/ts/fixtures/lang/expected/iters.ts index 4c45f7da8..c368e3d72 100644 --- a/ts/fixtures/lang/expected/iters.ts +++ b/ts/fixtures/lang/expected/iters.ts @@ -2115,7 +2115,7 @@ export function zips(kind: rt.u8, data: rt.ByteSlice, out: rt.ByteVec): void { rt.byteVecPush(_6227.value, x217 ^ 2); rt.refMutRelease(_6227); return x217; - }), [true, true]), n)) & 0xff); + }), [true, true]), n, undefined, true)) & 0xff); } else if (_79 === 6) { rt.byteVecPush(out, rt.iterCount(rt.iterSkip(rt.iterZip(rt.iterMap(rt.iterSlice(rt.byteSliceView(a2)), (_2272: rt.u8): rt.u8 => { const x214: rt.u8 = _2272; @@ -2536,7 +2536,7 @@ export function zips(kind: rt.u8, data: rt.ByteSlice, out: rt.ByteVec): void { rt.byteVecPush(_6179.value, x139 ^ 8); rt.refMutRelease(_6179); return x139; - }), "len"); + }), "index"); const _574: rt.usize = rt.usizeRem(data.length, 8); if (_574 === 0) { rt.byteVecPush(out, rt.iterCount(z7) & 0xff); @@ -2555,7 +2555,7 @@ export function zips(kind: rt.u8, data: rt.ByteSlice, out: rt.ByteVec): void { } else if (_574 === 4) { rt.iterExtendBytes(out, rt.byteVecIntoIter(rt.iterToByteVec(rt.iterMap(z7, (_2205: [rt.u8, rt.u8]): rt.u8 => { return _2205[0] ^ _2205[1]; - }), undefined, true, 1)), undefined, true); + }), "index", true, 1)), undefined, true); } else if (_574 === 5) { rt.byteVecPush(out, rt.iterFold(z7, 0, (acc4: rt.u8, p14: [rt.u8, rt.u8]): rt.u8 => { return rt.u8WrappingMul(acc4, 3) ^ _573(p14); @@ -2598,7 +2598,7 @@ export function zips(kind: rt.u8, data: rt.ByteSlice, out: rt.ByteVec): void { rt.byteVecPush(_6177.value, x136 ^ 8); rt.refMutRelease(_6177); return x136; - }), "len"), (_2198: [rt.u8, rt.u8]): boolean => { + }), "index"), (_2198: [rt.u8, rt.u8]): boolean => { return rt.u8Rem(_2198[0], 2) === 0; })) & 0xff); } else if (_612 === 1) { @@ -2612,7 +2612,7 @@ export function zips(kind: rt.u8, data: rt.ByteSlice, out: rt.ByteVec): void { rt.byteVecPush(_6175.value, x133 ^ 8); rt.refMutRelease(_6175); return x133; - }), "len"), (_2197: [rt.u8, rt.u8]): rt.u8 | undefined => { + }), "index"), (_2197: [rt.u8, rt.u8]): rt.u8 | undefined => { return rt.u8CheckedSub(_2197[0], _2197[1]); })) & 0xff); } else if (_612 === 2) { @@ -2626,7 +2626,7 @@ export function zips(kind: rt.u8, data: rt.ByteSlice, out: rt.ByteVec): void { rt.byteVecPush(_6173.value, x130 ^ 8); rt.refMutRelease(_6173); return x130; - }), "len"), (_2196: [rt.u8, rt.u8]): boolean => { + }), "index"), (_2196: [rt.u8, rt.u8]): boolean => { return _2196[0] < 128; })) & 0xff); } else if (_612 === 3) { @@ -2640,7 +2640,7 @@ export function zips(kind: rt.u8, data: rt.ByteSlice, out: rt.ByteVec): void { rt.byteVecPush(_6171.value, x128 ^ 8); rt.refMutRelease(_6171); return x128; - }), "len")), (_2195: [rt.usize, [rt.u8, rt.u8]]): rt.u8 => { + }), "index")), (_2195: [rt.usize, [rt.u8, rt.u8]]): rt.u8 => { return _2195[0] & 0xff; })), 238)); } else if (_612 === 4) { @@ -2654,7 +2654,7 @@ export function zips(kind: rt.u8, data: rt.ByteSlice, out: rt.ByteVec): void { rt.byteVecPush(_6169.value, x126 ^ 8); rt.refMutRelease(_6169); return x126; - }), "len"), rt.iterSlice([[1, 2] as [rt.u8, rt.u8]]))) & 0xff); + }), "index"), rt.iterSlice([[1, 2] as [rt.u8, rt.u8]]))) & 0xff); } else if (_612 === 5) { rt.byteVecPush(out, rt.iterCount(rt.iterTake(rt.iterZip(rt.iterMap(rt.byteVecIntoIter(rt.byteSliceToByteVec(a2)), (x123: rt.u8): rt.u8 => { const _6166: rt.RefCell = rt.refCellBorrowMut(log); @@ -2666,7 +2666,7 @@ export function zips(kind: rt.u8, data: rt.ByteSlice, out: rt.ByteVec): void { rt.byteVecPush(_6167.value, x124 ^ 8); rt.refMutRelease(_6167); return x124; - }), "len"), n)) & 0xff); + }), "index"), n)) & 0xff); } else if (_612 === 6) { rt.byteVecPush(out, rt.iterCount(rt.iterSkip(rt.iterZip(rt.iterMap(rt.byteVecIntoIter(rt.byteSliceToByteVec(a2)), (x121: rt.u8): rt.u8 => { const _6164: rt.RefCell = rt.refCellBorrowMut(log); @@ -2678,7 +2678,7 @@ export function zips(kind: rt.u8, data: rt.ByteSlice, out: rt.ByteVec): void { rt.byteVecPush(_6165.value, x122 ^ 8); rt.refMutRelease(_6165); return x122; - }), "len"), n)) & 0xff); + }), "index"), n)) & 0xff); } else { const p4: rt.Peekable<[rt.u8, rt.u8]> = rt.iterPeekable(rt.iterZip(rt.iterMap(rt.byteVecIntoIter(rt.byteSliceToByteVec(a2)), (x119: rt.u8): rt.u8 => { const _6162: rt.RefCell = rt.refCellBorrowMut(log); @@ -2690,7 +2690,7 @@ export function zips(kind: rt.u8, data: rt.ByteSlice, out: rt.ByteVec): void { rt.byteVecPush(_6163.value, x120 ^ 8); rt.refMutRelease(_6163); return x120; - }), "len")); + }), "index")); rt.byteVecPush(out, (rt.peekablePeek(p4) !== undefined ? 1 : 0) ^ (rt.iterCount(p4) & 0xff)); } } @@ -2706,7 +2706,7 @@ export function zips(kind: rt.u8, data: rt.ByteSlice, out: rt.ByteVec): void { rt.byteVecPush(_6159.value, x108 ^ 10); rt.refMutRelease(_6159); return x108; - }), "len"); + }), "index"); const _751: rt.usize = rt.usizeRem(data.length, 8); if (_751 === 0) { rt.byteVecPush(out, rt.iterCount(z9) & 0xff); @@ -2725,7 +2725,7 @@ export function zips(kind: rt.u8, data: rt.ByteSlice, out: rt.ByteVec): void { } else if (_751 === 4) { rt.iterExtendBytes(out, rt.byteVecIntoIter(rt.iterToByteVec(rt.iterMap(z9, (_2192: [rt.u8, rt.u8]): rt.u8 => { return _2192[0] ^ _2192[1]; - }), undefined, true, 1)), undefined, true); + }), "index", true, 1)), undefined, true); } else if (_751 === 5) { rt.byteVecPush(out, rt.iterFold(z9, 0, (acc3: rt.u8, p12: [rt.u8, rt.u8]): rt.u8 => { return rt.u8WrappingMul(acc3, 3) ^ _750(p12); @@ -2769,7 +2769,7 @@ export function zips(kind: rt.u8, data: rt.ByteSlice, out: rt.ByteVec): void { rt.byteVecPush(_6157.value, x105 ^ 10); rt.refMutRelease(_6157); return x105; - }), "len"), (_2184: [rt.u8, rt.u8]): boolean => { + }), "index"), (_2184: [rt.u8, rt.u8]): boolean => { return rt.u8Rem(_2184[0], 2) === 0; })) & 0xff); } else if (_789 === 1) { @@ -2784,7 +2784,7 @@ export function zips(kind: rt.u8, data: rt.ByteSlice, out: rt.ByteVec): void { rt.byteVecPush(_6155.value, x102 ^ 10); rt.refMutRelease(_6155); return x102; - }), "len"), (_2182: [rt.u8, rt.u8]): rt.u8 | undefined => { + }), "index"), (_2182: [rt.u8, rt.u8]): rt.u8 | undefined => { return rt.u8CheckedSub(_2182[0], _2182[1]); })) & 0xff); } else if (_789 === 2) { @@ -2799,7 +2799,7 @@ export function zips(kind: rt.u8, data: rt.ByteSlice, out: rt.ByteVec): void { rt.byteVecPush(_6153.value, x99 ^ 10); rt.refMutRelease(_6153); return x99; - }), "len"), (_2180: [rt.u8, rt.u8]): boolean => { + }), "index"), (_2180: [rt.u8, rt.u8]): boolean => { return _2180[0] < 128; })) & 0xff); } else if (_789 === 3) { @@ -2814,7 +2814,7 @@ export function zips(kind: rt.u8, data: rt.ByteSlice, out: rt.ByteVec): void { rt.byteVecPush(_6151.value, x97 ^ 10); rt.refMutRelease(_6151); return x97; - }), "len")), (_2178: [rt.usize, [rt.u8, rt.u8]]): rt.u8 => { + }), "index")), (_2178: [rt.usize, [rt.u8, rt.u8]]): rt.u8 => { return _2178[0] & 0xff; })), 238)); } else if (_789 === 4) { @@ -2829,7 +2829,7 @@ export function zips(kind: rt.u8, data: rt.ByteSlice, out: rt.ByteVec): void { rt.byteVecPush(_6149.value, x95 ^ 10); rt.refMutRelease(_6149); return x95; - }), "len"), rt.iterSlice([[1, 2] as [rt.u8, rt.u8]]))) & 0xff); + }), "index"), rt.iterSlice([[1, 2] as [rt.u8, rt.u8]]))) & 0xff); } else if (_789 === 5) { rt.byteVecPush(out, rt.iterCount(rt.iterTake(rt.iterZip(rt.iterMap(rt.iterSkip(rt.byteVecIntoIter(rt.byteSliceToByteVec(a2)), 1), (x92: rt.u8): rt.u8 => { const _6146: rt.RefCell = rt.refCellBorrowMut(log); @@ -2842,7 +2842,7 @@ export function zips(kind: rt.u8, data: rt.ByteSlice, out: rt.ByteVec): void { rt.byteVecPush(_6147.value, x93 ^ 10); rt.refMutRelease(_6147); return x93; - }), "len"), n)) & 0xff); + }), "index"), n)) & 0xff); } else if (_789 === 6) { rt.byteVecPush(out, rt.iterCount(rt.iterSkip(rt.iterZip(rt.iterMap(rt.iterSkip(rt.byteVecIntoIter(rt.byteSliceToByteVec(a2)), 1), (x90: rt.u8): rt.u8 => { const _6144: rt.RefCell = rt.refCellBorrowMut(log); @@ -2855,7 +2855,7 @@ export function zips(kind: rt.u8, data: rt.ByteSlice, out: rt.ByteVec): void { rt.byteVecPush(_6145.value, x91 ^ 10); rt.refMutRelease(_6145); return x91; - }), "len"), n)) & 0xff); + }), "index"), n)) & 0xff); } else { const p5: rt.Peekable<[rt.u8, rt.u8]> = rt.iterPeekable(rt.iterZip(rt.iterMap(rt.iterSkip(rt.byteVecIntoIter(rt.byteSliceToByteVec(a2)), 1), (x88: rt.u8): rt.u8 => { const _6142: rt.RefCell = rt.refCellBorrowMut(log); @@ -2868,7 +2868,7 @@ export function zips(kind: rt.u8, data: rt.ByteSlice, out: rt.ByteVec): void { rt.byteVecPush(_6143.value, x89 ^ 10); rt.refMutRelease(_6143); return x89; - }), "len")); + }), "index")); rt.byteVecPush(out, (rt.peekablePeek(p5) !== undefined ? 1 : 0) ^ (rt.iterCount(p5) & 0xff)); } } diff --git a/ts/fixtures/lang/expected/lengths.ts b/ts/fixtures/lang/expected/lengths.ts index d10a61343..65468f8d1 100644 --- a/ts/fixtures/lang/expected/lengths.ts +++ b/ts/fixtures/lang/expected/lengths.ts @@ -439,7 +439,7 @@ export function filled$array0_u8_0(data: rt.ByteSlice, fill: Uint8Array[], out: } picks.push(copy$array_u8(rt.byteSliceToArray(_26))); } - const iter3: rt.Iter<[[Uint8Array[], [rt.u8, rt.u8]], Uint8Array | undefined]> = rt.iterZip(rt.iterSkip(rt.iterSlice(slots), 1), rt.iterSlice(picks), "len"); + const iter3: rt.Iter<[[Uint8Array[], [rt.u8, rt.u8]], Uint8Array | undefined]> = rt.iterZip(rt.iterSkip(rt.iterSlice(slots), 1), rt.iterSlice(picks), "index"); while (true) { const _41: [[Uint8Array[], [rt.u8, rt.u8]], Uint8Array | undefined] | rt.Done = iter3.next(); if (_41 === rt.DONE) { @@ -502,7 +502,7 @@ export function filled$array17_u8_17(data: rt.ByteSlice, fill: Uint8Array[], out } picks.push(copy$array_u8(rt.byteSliceToArray(_26))); } - const iter3: rt.Iter<[[Uint8Array[], [rt.u8, rt.u8]], Uint8Array | undefined]> = rt.iterZip(rt.iterSkip(rt.iterSlice(slots), 1), rt.iterSlice(picks), "len"); + const iter3: rt.Iter<[[Uint8Array[], [rt.u8, rt.u8]], Uint8Array | undefined]> = rt.iterZip(rt.iterSkip(rt.iterSlice(slots), 1), rt.iterSlice(picks), "index"); while (true) { const _41: [[Uint8Array[], [rt.u8, rt.u8]], Uint8Array | undefined] | rt.Done = iter3.next(); if (_41 === rt.DONE) { @@ -565,7 +565,7 @@ export function filled$array1_u8_1(data: rt.ByteSlice, fill: Uint8Array[], out: } picks.push(copy$array_u8(rt.byteSliceToArray(_26))); } - const iter3: rt.Iter<[[Uint8Array[], [rt.u8, rt.u8]], Uint8Array | undefined]> = rt.iterZip(rt.iterSkip(rt.iterSlice(slots), 1), rt.iterSlice(picks), "len"); + const iter3: rt.Iter<[[Uint8Array[], [rt.u8, rt.u8]], Uint8Array | undefined]> = rt.iterZip(rt.iterSkip(rt.iterSlice(slots), 1), rt.iterSlice(picks), "index"); while (true) { const _41: [[Uint8Array[], [rt.u8, rt.u8]], Uint8Array | undefined] | rt.Done = iter3.next(); if (_41 === rt.DONE) { @@ -628,7 +628,7 @@ export function filled$array3_u8_3(data: rt.ByteSlice, fill: Uint8Array[], out: } picks.push(copy$array_u8(rt.byteSliceToArray(_26))); } - const iter3: rt.Iter<[[Uint8Array[], [rt.u8, rt.u8]], Uint8Array | undefined]> = rt.iterZip(rt.iterSkip(rt.iterSlice(slots), 1), rt.iterSlice(picks), "len"); + const iter3: rt.Iter<[[Uint8Array[], [rt.u8, rt.u8]], Uint8Array | undefined]> = rt.iterZip(rt.iterSkip(rt.iterSlice(slots), 1), rt.iterSlice(picks), "index"); while (true) { const _41: [[Uint8Array[], [rt.u8, rt.u8]], Uint8Array | undefined] | rt.Done = iter3.next(); if (_41 === rt.DONE) { @@ -686,7 +686,7 @@ export function filled$lengths_Tagged_u32_0(data: rt.ByteSlice, fill: lengths_Ta for (const _26 of fill) { picks.push(_26); } - const iter3: rt.Iter<[[lengths_Tagged.Tagged[], [rt.u8, rt.u8]], lengths_Tagged.Tagged | undefined]> = rt.iterZip(rt.iterSkip(rt.iterSlice(slots), 1), rt.iterSlice(picks), "len"); + const iter3: rt.Iter<[[lengths_Tagged.Tagged[], [rt.u8, rt.u8]], lengths_Tagged.Tagged | undefined]> = rt.iterZip(rt.iterSkip(rt.iterSlice(slots), 1), rt.iterSlice(picks), "index"); while (true) { const _41: [[lengths_Tagged.Tagged[], [rt.u8, rt.u8]], lengths_Tagged.Tagged | undefined] | rt.Done = iter3.next(); if (_41 === rt.DONE) { @@ -744,7 +744,7 @@ export function filled$lengths_Tagged_u32_1(data: rt.ByteSlice, fill: lengths_Ta for (const _26 of fill) { picks.push(_26); } - const iter3: rt.Iter<[[lengths_Tagged.Tagged[], [rt.u8, rt.u8]], lengths_Tagged.Tagged | undefined]> = rt.iterZip(rt.iterSkip(rt.iterSlice(slots), 1), rt.iterSlice(picks), "len"); + const iter3: rt.Iter<[[lengths_Tagged.Tagged[], [rt.u8, rt.u8]], lengths_Tagged.Tagged | undefined]> = rt.iterZip(rt.iterSkip(rt.iterSlice(slots), 1), rt.iterSlice(picks), "index"); while (true) { const _41: [[lengths_Tagged.Tagged[], [rt.u8, rt.u8]], lengths_Tagged.Tagged | undefined] | rt.Done = iter3.next(); if (_41 === rt.DONE) { @@ -802,7 +802,7 @@ export function filled$lengths_Tagged_u32_17(data: rt.ByteSlice, fill: lengths_T for (const _26 of fill) { picks.push(_26); } - const iter3: rt.Iter<[[lengths_Tagged.Tagged[], [rt.u8, rt.u8]], lengths_Tagged.Tagged | undefined]> = rt.iterZip(rt.iterSkip(rt.iterSlice(slots), 1), rt.iterSlice(picks), "len"); + const iter3: rt.Iter<[[lengths_Tagged.Tagged[], [rt.u8, rt.u8]], lengths_Tagged.Tagged | undefined]> = rt.iterZip(rt.iterSkip(rt.iterSlice(slots), 1), rt.iterSlice(picks), "index"); while (true) { const _41: [[lengths_Tagged.Tagged[], [rt.u8, rt.u8]], lengths_Tagged.Tagged | undefined] | rt.Done = iter3.next(); if (_41 === rt.DONE) { @@ -860,7 +860,7 @@ export function filled$lengths_Tagged_u32_3(data: rt.ByteSlice, fill: lengths_Ta for (const _26 of fill) { picks.push(_26); } - const iter3: rt.Iter<[[lengths_Tagged.Tagged[], [rt.u8, rt.u8]], lengths_Tagged.Tagged | undefined]> = rt.iterZip(rt.iterSkip(rt.iterSlice(slots), 1), rt.iterSlice(picks), "len"); + const iter3: rt.Iter<[[lengths_Tagged.Tagged[], [rt.u8, rt.u8]], lengths_Tagged.Tagged | undefined]> = rt.iterZip(rt.iterSkip(rt.iterSlice(slots), 1), rt.iterSlice(picks), "index"); while (true) { const _41: [[lengths_Tagged.Tagged[], [rt.u8, rt.u8]], lengths_Tagged.Tagged | undefined] | rt.Done = iter3.next(); if (_41 === rt.DONE) { @@ -916,7 +916,7 @@ export function filled$u32_0(data: rt.ByteSlice, fill: rt.u32[], out: rt.ByteVec for (const _26 of fill) { picks.push(_26); } - const iter3: rt.Iter<[[rt.u32[], [rt.u8, rt.u8]], rt.u32 | undefined]> = rt.iterZip(rt.iterSkip(rt.iterSlice(slots), 1), rt.iterSlice(picks), "len"); + const iter3: rt.Iter<[[rt.u32[], [rt.u8, rt.u8]], rt.u32 | undefined]> = rt.iterZip(rt.iterSkip(rt.iterSlice(slots), 1), rt.iterSlice(picks), "index"); while (true) { const _41: [[rt.u32[], [rt.u8, rt.u8]], rt.u32 | undefined] | rt.Done = iter3.next(); if (_41 === rt.DONE) { @@ -972,7 +972,7 @@ export function filled$u32_1(data: rt.ByteSlice, fill: rt.u32[], out: rt.ByteVec for (const _26 of fill) { picks.push(_26); } - const iter3: rt.Iter<[[rt.u32[], [rt.u8, rt.u8]], rt.u32 | undefined]> = rt.iterZip(rt.iterSkip(rt.iterSlice(slots), 1), rt.iterSlice(picks), "len"); + const iter3: rt.Iter<[[rt.u32[], [rt.u8, rt.u8]], rt.u32 | undefined]> = rt.iterZip(rt.iterSkip(rt.iterSlice(slots), 1), rt.iterSlice(picks), "index"); while (true) { const _41: [[rt.u32[], [rt.u8, rt.u8]], rt.u32 | undefined] | rt.Done = iter3.next(); if (_41 === rt.DONE) { @@ -1028,7 +1028,7 @@ export function filled$u32_17(data: rt.ByteSlice, fill: rt.u32[], out: rt.ByteVe for (const _26 of fill) { picks.push(_26); } - const iter3: rt.Iter<[[rt.u32[], [rt.u8, rt.u8]], rt.u32 | undefined]> = rt.iterZip(rt.iterSkip(rt.iterSlice(slots), 1), rt.iterSlice(picks), "len"); + const iter3: rt.Iter<[[rt.u32[], [rt.u8, rt.u8]], rt.u32 | undefined]> = rt.iterZip(rt.iterSkip(rt.iterSlice(slots), 1), rt.iterSlice(picks), "index"); while (true) { const _41: [[rt.u32[], [rt.u8, rt.u8]], rt.u32 | undefined] | rt.Done = iter3.next(); if (_41 === rt.DONE) { @@ -1084,7 +1084,7 @@ export function filled$u32_3(data: rt.ByteSlice, fill: rt.u32[], out: rt.ByteVec for (const _26 of fill) { picks.push(_26); } - const iter3: rt.Iter<[[rt.u32[], [rt.u8, rt.u8]], rt.u32 | undefined]> = rt.iterZip(rt.iterSkip(rt.iterSlice(slots), 1), rt.iterSlice(picks), "len"); + const iter3: rt.Iter<[[rt.u32[], [rt.u8, rt.u8]], rt.u32 | undefined]> = rt.iterZip(rt.iterSkip(rt.iterSlice(slots), 1), rt.iterSlice(picks), "index"); while (true) { const _41: [[rt.u32[], [rt.u8, rt.u8]], rt.u32 | undefined] | rt.Done = iter3.next(); if (_41 === rt.DONE) { @@ -1140,7 +1140,7 @@ export function filled$u8_0(data: rt.ByteSlice, fill: Uint8Array, out: rt.ByteVe for (const _26 of rt.byteSliceView(rt.byteSliceFrom(fill))) { picks.push(_26); } - const iter3: rt.Iter<[[Uint8Array, [rt.u8, rt.u8]], rt.u8 | undefined]> = rt.iterZip(rt.iterSkip(rt.iterSlice(slots), 1), rt.iterSlice(picks), "len"); + const iter3: rt.Iter<[[Uint8Array, [rt.u8, rt.u8]], rt.u8 | undefined]> = rt.iterZip(rt.iterSkip(rt.iterSlice(slots), 1), rt.iterSlice(picks), "index"); while (true) { const _41: [[Uint8Array, [rt.u8, rt.u8]], rt.u8 | undefined] | rt.Done = iter3.next(); if (_41 === rt.DONE) { @@ -1196,7 +1196,7 @@ export function filled$u8_1(data: rt.ByteSlice, fill: Uint8Array, out: rt.ByteVe for (const _26 of rt.byteSliceView(rt.byteSliceFrom(fill))) { picks.push(_26); } - const iter3: rt.Iter<[[Uint8Array, [rt.u8, rt.u8]], rt.u8 | undefined]> = rt.iterZip(rt.iterSkip(rt.iterSlice(slots), 1), rt.iterSlice(picks), "len"); + const iter3: rt.Iter<[[Uint8Array, [rt.u8, rt.u8]], rt.u8 | undefined]> = rt.iterZip(rt.iterSkip(rt.iterSlice(slots), 1), rt.iterSlice(picks), "index"); while (true) { const _41: [[Uint8Array, [rt.u8, rt.u8]], rt.u8 | undefined] | rt.Done = iter3.next(); if (_41 === rt.DONE) { @@ -1252,7 +1252,7 @@ export function filled$u8_17(data: rt.ByteSlice, fill: Uint8Array, out: rt.ByteV for (const _26 of rt.byteSliceView(rt.byteSliceFrom(fill))) { picks.push(_26); } - const iter3: rt.Iter<[[Uint8Array, [rt.u8, rt.u8]], rt.u8 | undefined]> = rt.iterZip(rt.iterSkip(rt.iterSlice(slots), 1), rt.iterSlice(picks), "len"); + const iter3: rt.Iter<[[Uint8Array, [rt.u8, rt.u8]], rt.u8 | undefined]> = rt.iterZip(rt.iterSkip(rt.iterSlice(slots), 1), rt.iterSlice(picks), "index"); while (true) { const _41: [[Uint8Array, [rt.u8, rt.u8]], rt.u8 | undefined] | rt.Done = iter3.next(); if (_41 === rt.DONE) { @@ -1308,7 +1308,7 @@ export function filled$u8_3(data: rt.ByteSlice, fill: Uint8Array, out: rt.ByteVe for (const _26 of rt.byteSliceView(rt.byteSliceFrom(fill))) { picks.push(_26); } - const iter3: rt.Iter<[[Uint8Array, [rt.u8, rt.u8]], rt.u8 | undefined]> = rt.iterZip(rt.iterSkip(rt.iterSlice(slots), 1), rt.iterSlice(picks), "len"); + const iter3: rt.Iter<[[Uint8Array, [rt.u8, rt.u8]], rt.u8 | undefined]> = rt.iterZip(rt.iterSkip(rt.iterSlice(slots), 1), rt.iterSlice(picks), "index"); while (true) { const _41: [[Uint8Array, [rt.u8, rt.u8]], rt.u8 | undefined] | rt.Done = iter3.next(); if (_41 === rt.DONE) { diff --git a/ts/fixtures/lang/expected/strs.ts b/ts/fixtures/lang/expected/strs.ts index a3e6f98f0..f09ce273b 100644 --- a/ts/fixtures/lang/expected/strs.ts +++ b/ts/fixtures/lang/expected/strs.ts @@ -1482,7 +1482,7 @@ export function hinted(kind: rt.u8, data: rt.ByteSlice, out: rt.ByteVec): void { _48.v = rt.stringExtendChars(_48.v, _49); } else if (_38 === 3) { const _61: rt.Place = rt.place(() => t, (value11) => t = value11); - const _62: rt.Iter = rt.iterTake(rt.iterMap(new rt.Range(0, n), f), m as rt.usize); + const _62: rt.Iter = rt.iterTake(rt.iterMap(new rt.Range(0, n), f), m as rt.usize, undefined, true); _61.v = rt.stringExtendChars(_61.v, _62); } else if (_38 === 4) { const _66: rt.Place = rt.place(() => t, (value10) => t = value10); diff --git a/ts/fixtures/reject/census.md b/ts/fixtures/reject/census.md index a1f7273ab..af9c6e285 100644 --- a/ts/fixtures/reject/census.md +++ b/ts/fixtures/reject/census.md @@ -1,102 +1,100 @@ # Census of `reject-fixture` -- Refusals: 260 -- Function instances: 296 +- Refusals: 258 +- Function instances: 294 - Generic functions no instance reached, lowered over their type parameters: 13 ## By construct | Count | Construct | First | | ---: | --- | --- | -| 50 | a raw pointer to `_` in `_`, which the crate may put another object in place of | fixtures/reject/src/lib.rs:556:10 | -| 23 | a raw pointer to `_` in a variable assigned again while it may point there | fixtures/reject/src/lib.rs:564:10 | +| 50 | a raw pointer to `_` in `_`, which the crate may put another object in place of | fixtures/reject/src/lib.rs:543:10 | +| 23 | a raw pointer to `_` in a variable assigned again while it may point there | fixtures/reject/src/lib.rs:551:10 | | 20 | unsupported call to `_` | fixtures/reject/src/lib.rs:164:8 | -| 15 | a reference through which a raw pointer may be made into `_` in `_`, which the crate may put another object in place of | fixtures/reject/src/lib.rs:1285:33 | -| 15 | a reference to `_`, through which a raw pointer may be made, in a variable assigned again while that pointer may point there | fixtures/reject/src/lib.rs:1603:18 | -| 6 | a cast from a pointer to `_` to one to `_`, which reads the bytes of one type as another | fixtures/reject/src/lib.rs:503:27 | -| 5 | `_` with a mutable reference to a value JS copies, which its mapping would copy | fixtures/reject/src/lib.rs:1183:22 | -| 5 | a raw pointer to `_` in an element, a payload, or a union field, which is not supported yet | fixtures/reject/src/lib.rs:627:10 | -| 5 | memory from `alloc` cast to pointers to `_` and to `_`, which reads the bytes of one type as another | fixtures/reject/src/lib.rs:2294:7 | -| 4 | a variant of `_`, which is not supported: either is the same JS string | fixtures/reject/src/lib.rs:280:2 | +| 15 | a reference through which a raw pointer may be made into `_` in `_`, which the crate may put another object in place of | fixtures/reject/src/lib.rs:1272:33 | +| 15 | a reference to `_`, through which a raw pointer may be made, in a variable assigned again while that pointer may point there | fixtures/reject/src/lib.rs:1590:18 | +| 6 | a cast from a pointer to `_` to one to `_`, which reads the bytes of one type as another | fixtures/reject/src/lib.rs:490:27 | +| 5 | `_` with a mutable reference to a value JS copies, which its mapping would copy | fixtures/reject/src/lib.rs:1170:22 | +| 5 | a raw pointer to `_` in an element, a payload, or a union field, which is not supported yet | fixtures/reject/src/lib.rs:614:10 | +| 5 | memory from `alloc` cast to pointers to `_` and to `_`, which reads the bytes of one type as another | fixtures/reject/src/lib.rs:2281:7 | +| 4 | a variant of `_`, which is not supported: either is the same JS string | fixtures/reject/src/lib.rs:267:2 | | 4 | an assignment through a reference to `_` | fixtures/reject/src/lib.rs:83:2 | | 3 | `_` of `_`, whose `clone_from` is its own, which is not supported yet | fixtures/reject/src/lib.rs:21:4 | -| 3 | a byte of memory from `alloc`, which JS keeps as the values a cast of its pointer types it as | fixtures/reject/src/lib.rs:516:3 | -| 3 | a copy between pointers to `_`, which JS keeps as an object that knows no array it is in | fixtures/reject/src/lib.rs:1658:3 | -| 3 | a copy of a closure that changes what it captured | fixtures/reject/src/lib.rs:195:14 | -| 3 | a slice or a cell of a mutable reference to `_` that names no place, which a whole write would replace only there | fixtures/reject/src/lib.rs:2214:2 | -| 3 | an offset of a pointer to `_`, which JS keeps as an object that knows no array it is in | fixtures/reject/src/lib.rs:1661:56 | +| 3 | a byte of memory from `alloc`, which JS keeps as the values a cast of its pointer types it as | fixtures/reject/src/lib.rs:503:3 | +| 3 | a copy between pointers to `_`, which JS keeps as an object that knows no array it is in | fixtures/reject/src/lib.rs:1645:3 | +| 3 | a copy of a closure that changes what it captured | fixtures/reject/src/lib.rs:182:14 | +| 3 | a slice or a cell of a mutable reference to `_` that names no place, which a whole write would replace only there | fixtures/reject/src/lib.rs:2201:2 | +| 3 | an offset of a pointer to `_`, which JS keeps as an object that knows no array it is in | fixtures/reject/src/lib.rs:1648:56 | | 3 | replacing the value behind a reference to `_` | fixtures/reject/src/lib.rs:91:2 | | 3 | unsupported type `_` | fixtures/reject/src/lib.rs:7:14 | | 2 | `_` is not supported: its `None` and `Some` would both be `rt.None` | fixtures/reject/src/lib.rs:16:15 | | 2 | `_` of `_`, whose `None` is `rt.None`, which is not supported yet | fixtures/reject/src/lib.rs:37:4 | | 2 | `_`, a trait object of another crate's trait, which is not supported yet | fixtures/reject/src/lib.rs:11:16 | -| 2 | `_`, a trait object of the generic trait `_`, which is not supported yet | fixtures/reject/src/lib.rs:406:23 | -| 2 | `offset_from` between a pointer into a value in no array and one into a value in no array, which JS keeps in different arrays | fixtures/reject/src/lib.rs:2173:5 | -| 2 | `offset_from` between a pointer into an array of this body's own and one into an array of this body's own, which JS keeps in different arrays | fixtures/reject/src/lib.rs:2175:24 | -| 2 | a pointer reaching past a shared slice JS copies, which JS keeps apart from what holds it in Rust | fixtures/reject/src/lib.rs:2198:18 | -| 2 | a raw or mutable slice of a byte in no array of bytes | fixtures/reject/src/lib.rs:2184:12 | -| 2 | a raw pointer to a place of `()`, which has no address of its own | fixtures/reject/src/lib.rs:676:15 | -| 2 | an upcast from `_` to `_`, which is not supported yet | fixtures/reject/src/lib.rs:474:32 | -| 2 | comparing pointers to `_`, each a place JS makes of its own | fixtures/reject/src/lib.rs:544:2 | +| 2 | `_`, a trait object of the generic trait `_`, which is not supported yet | fixtures/reject/src/lib.rs:393:23 | +| 2 | `offset_from` between a pointer into a value in no array and one into a value in no array, which JS keeps in different arrays | fixtures/reject/src/lib.rs:2160:5 | +| 2 | `offset_from` between a pointer into an array of this body's own and one into an array of this body's own, which JS keeps in different arrays | fixtures/reject/src/lib.rs:2162:24 | +| 2 | a pointer reaching past a shared slice JS copies, which JS keeps apart from what holds it in Rust | fixtures/reject/src/lib.rs:2185:18 | +| 2 | a raw or mutable slice of a byte in no array of bytes | fixtures/reject/src/lib.rs:2171:12 | +| 2 | a raw pointer to a place of `()`, which has no address of its own | fixtures/reject/src/lib.rs:663:15 | +| 2 | an upcast from `_` to `_`, which is not supported yet | fixtures/reject/src/lib.rs:461:32 | +| 2 | comparing pointers to `_`, each a place JS makes of its own | fixtures/reject/src/lib.rs:531:2 | | 2 | overriding `_`, which std's adaptors call in place of `next` or beside it | fixtures/reject/src/lib.rs:125:2 | -| 2 | passing `_`, which drops, to `_`, which is not supported yet | fixtures/reject/src/lib.rs:275:4 | -| 2 | unsupported type `_` from another crate | fixtures/reject/src/lib.rs:387:32 | -| 1 | `Buf::copy_to_bytes` of `_`, a value JS copies, which is not supported | fixtures/reject/src/lib.rs:709:2 | -| 1 | `BufMut::put` of `_` into a `BytesMut`, which advances it by the room left in a capacity that depends on whether the other handles of its storage dropped, which is not supported | fixtures/reject/src/lib.rs:343:2 | -| 1 | `BufMut::put` of `_` into a `BytesMut`, which picks the methods it calls by a capacity that depends on whether the other handles of its storage dropped, which is not supported | fixtures/reject/src/lib.rs:338:2 | -| 1 | `Bytes::from_owner` of `_`, which would drop with the last clone of what it makes, which is not supported | fixtures/reject/src/lib.rs:323:2 | -| 1 | `Extend` of `_` by `_`, whose `_` of `_` is not supported yet | fixtures/reject/src/lib.rs:1220:31 | +| 2 | passing `_`, which drops, to `_`, which is not supported yet | fixtures/reject/src/lib.rs:262:4 | +| 2 | unsupported type `_` from another crate | fixtures/reject/src/lib.rs:374:32 | +| 1 | `Buf::copy_to_bytes` of `_`, a value JS copies, which is not supported | fixtures/reject/src/lib.rs:696:2 | +| 1 | `BufMut::put` of `_` into a `BytesMut`, which advances it by the room left in a capacity that depends on whether the other handles of its storage dropped, which is not supported | fixtures/reject/src/lib.rs:330:2 | +| 1 | `BufMut::put` of `_` into a `BytesMut`, which picks the methods it calls by a capacity that depends on whether the other handles of its storage dropped, which is not supported | fixtures/reject/src/lib.rs:325:2 | +| 1 | `Bytes::from_owner` of `_`, which would drop with the last clone of what it makes, which is not supported | fixtures/reject/src/lib.rs:310:2 | +| 1 | `Extend` of `_` by `_`, whose `_` of `_` is not supported yet | fixtures/reject/src/lib.rs:1207:31 | | 1 | `Pointer` formatting, as in `{:p}`, is not supported | fixtures/reject/src/lib.rs:49:2 | | 1 | `_` is not supported: its `Pending` and `Ready` would both be `rt.OuterPending` | fixtures/reject/src/lib.rs:72:20 | | 1 | `_` is not supported: its field `_` is `_`, typed `_`, whose `None` would be `rt.None` as `_` | fixtures/reject/src/lib.rs:31:2 | -| 1 | `_` is not supported: its field `_` is `_`, typed `_`, whose `Pending` would be `rt.OuterPending` as `_` | fixtures/reject/src/lib.rs:444:2 | -| 1 | `_` of `_` by `_`, which is not supported yet | fixtures/reject/src/lib.rs:224:6 | -| 1 | `_` of `_`, which is not supported yet | fixtures/reject/src/lib.rs:486:4 | -| 1 | `_`, which reads a capacity that depends on whether the other handles of its storage dropped, which is not supported | fixtures/reject/src/lib.rs:332:6 | -| 1 | `clone_from` of `_`, whose items' `clone_from` is their own, which is not supported yet | fixtures/reject/src/lib.rs:2066:4 | -| 1 | `collect` of `_`, which sorts by `_`'s own `Ord`, of entries that drop, which is not supported yet | fixtures/reject/src/lib.rs:903:22 | +| 1 | `_` is not supported: its field `_` is `_`, typed `_`, whose `Pending` would be `rt.OuterPending` as `_` | fixtures/reject/src/lib.rs:431:2 | +| 1 | `_` of `_` by `_`, which is not supported yet | fixtures/reject/src/lib.rs:211:6 | +| 1 | `_` of `_`, which is not supported yet | fixtures/reject/src/lib.rs:473:4 | +| 1 | `_`, which reads a capacity that depends on whether the other handles of its storage dropped, which is not supported | fixtures/reject/src/lib.rs:319:6 | +| 1 | `clone_from` of `_`, whose items' `clone_from` is their own, which is not supported yet | fixtures/reject/src/lib.rs:2053:4 | +| 1 | `collect` of `_`, which sorts by `_`'s own `Ord`, of entries that drop, which is not supported yet | fixtures/reject/src/lib.rs:890:22 | | 1 | `fmt::Arguments` with a placeholder, or not made in place, written to `_`'s own `fmt::Write`, which is not supported yet: std splits what a placeholder writes into `write_str` calls the runtime does not make | fixtures/reject/src/lib.rs:55:10 | -| 1 | `offset_from` between a pointer into a shared slice JS copies and one into a value in no array, which JS keeps in different arrays | fixtures/reject/src/lib.rs:2178:21 | -| 1 | `offset_from` between a pointer into a shared slice JS copies and one into an array of this body's own, which JS keeps in different arrays | fixtures/reject/src/lib.rs:2177:20 | -| 1 | `offset_from` of pointers to `()`, which has no bytes | fixtures/reject/src/lib.rs:2120:13 | -| 1 | `offset_from` of pointers to `_`, which JS keeps as an object that knows no array it is in | fixtures/reject/src/lib.rs:2113:36 | -| 1 | a `collect` in place of `_`, a zip std reads by index, holding values that drop, which is not supported yet | fixtures/reject/src/lib.rs:180:40 | -| 1 | a `skip` of `_`, a zip std reads by index, of items that drop, which is not supported yet | fixtures/reject/src/lib.rs:173:8 | +| 1 | `offset_from` between a pointer into a shared slice JS copies and one into a value in no array, which JS keeps in different arrays | fixtures/reject/src/lib.rs:2165:21 | +| 1 | `offset_from` between a pointer into a shared slice JS copies and one into an array of this body's own, which JS keeps in different arrays | fixtures/reject/src/lib.rs:2164:20 | +| 1 | `offset_from` of pointers to `()`, which has no bytes | fixtures/reject/src/lib.rs:2107:13 | +| 1 | `offset_from` of pointers to `_`, which JS keeps as an object that knows no array it is in | fixtures/reject/src/lib.rs:2100:36 | | 1 | a cast from `_` to `_` | fixtures/reject/src/lib.rs:68:2 | -| 1 | a coercion to `_` | fixtures/reject/src/lib.rs:247:2 | -| 1 | a coercion to `_`, which is not supported yet | fixtures/reject/src/lib.rs:433:30 | -| 1 | a constant of type `_` | fixtures/reject/src/lib.rs:2314:34 | -| 1 | a constant of type `_`, a pointer into memory translation can't name | fixtures/reject/src/lib.rs:726:3 | -| 1 | a copy reaching past a shared slice JS copies, which JS keeps apart from what holds it in Rust | fixtures/reject/src/lib.rs:2196:3 | -| 1 | a dangling pointer to `_`, a value of no bytes made of more than structs and tuples | fixtures/reject/src/lib.rs:685:11 | +| 1 | a coercion to `_` | fixtures/reject/src/lib.rs:234:2 | +| 1 | a coercion to `_`, which is not supported yet | fixtures/reject/src/lib.rs:420:30 | +| 1 | a constant of type `_` | fixtures/reject/src/lib.rs:2301:34 | +| 1 | a constant of type `_`, a pointer into memory translation can't name | fixtures/reject/src/lib.rs:713:3 | +| 1 | a copy reaching past a shared slice JS copies, which JS keeps apart from what holds it in Rust | fixtures/reject/src/lib.rs:2183:3 | +| 1 | a dangling pointer to `_`, a value of no bytes made of more than structs and tuples | fixtures/reject/src/lib.rs:672:11 | | 1 | a future of `_`, which can be `rt.Pending`, as the future's own `Pending` is | fixtures/reject/src/lib.rs:77:34 | -| 1 | a mapped guard of `_`, which JS can't write in place | fixtures/reject/src/lib.rs:2100:10 | -| 1 | a mutable reference into a `Result`'s payload, passed on or kept | fixtures/reject/src/lib.rs:311:12 | +| 1 | a mapped guard of `_`, which JS can't write in place | fixtures/reject/src/lib.rs:2087:10 | +| 1 | a mutable reference into a `Result`'s payload, passed on or kept | fixtures/reject/src/lib.rs:298:12 | | 1 | a mutable static, which any code may write | fixtures/reject/src/lib.rs:61:11 | -| 1 | a pointer into `_`, which JS keeps as an object that knows no array it is in | fixtures/reject/src/lib.rs:2107:12 | -| 1 | a pointer into an array of `_`, which JS keeps as an object that knows no array it is in | fixtures/reject/src/lib.rs:2112:30 | -| 1 | a pointer reaching past a value in no array, which JS keeps apart from what holds it in Rust | fixtures/reject/src/lib.rs:2200:27 | -| 1 | a pointer's address, which JS has no counterpart of | fixtures/reject/src/lib.rs:508:17 | +| 1 | a pointer into `_`, which JS keeps as an object that knows no array it is in | fixtures/reject/src/lib.rs:2094:12 | +| 1 | a pointer into an array of `_`, which JS keeps as an object that knows no array it is in | fixtures/reject/src/lib.rs:2099:30 | +| 1 | a pointer reaching past a value in no array, which JS keeps apart from what holds it in Rust | fixtures/reject/src/lib.rs:2187:27 | +| 1 | a pointer's address, which JS has no counterpart of | fixtures/reject/src/lib.rs:495:17 | | 1 | a printable type must implement `Display` or `Debug` | fixtures/reject/src/lib.rs:64:1 | -| 1 | a raw pointer to `_` behind a reference, which is the object and not where it is kept | fixtures/reject/src/lib.rs:525:10 | -| 1 | a reference through which a raw pointer may be made into `_` in an element, a payload, or a union field, which is not supported yet | fixtures/reject/src/lib.rs:1312:11 | +| 1 | a raw pointer to `_` behind a reference, which is the object and not where it is kept | fixtures/reject/src/lib.rs:512:10 | +| 1 | a reference through which a raw pointer may be made into `_` in an element, a payload, or a union field, which is not supported yet | fixtures/reject/src/lib.rs:1299:11 | | 1 | a scalar constant of type `_` | fixtures/reject/src/lib.rs:8:2 | -| 1 | a slice from a pointer to `_`, which JS keeps as an object that knows no array it is in | fixtures/reject/src/lib.rs:2111:11 | -| 1 | a slice of `()`, which has no bytes, from a pointer | fixtures/reject/src/lib.rs:2120:39 | -| 1 | a slice of one byte's place, which a byte slice can view only in an array of bytes | fixtures/reject/src/lib.rs:2208:2 | -| 1 | a slice reaching past a value in no array, which JS keeps apart from what holds it in Rust | fixtures/reject/src/lib.rs:2199:6 | -| 1 | a trait object of `_`, which is not supported yet | fixtures/reject/src/lib.rs:423:26 | +| 1 | a slice from a pointer to `_`, which JS keeps as an object that knows no array it is in | fixtures/reject/src/lib.rs:2098:11 | +| 1 | a slice of `()`, which has no bytes, from a pointer | fixtures/reject/src/lib.rs:2107:39 | +| 1 | a slice of one byte's place, which a byte slice can view only in an array of bytes | fixtures/reject/src/lib.rs:2195:2 | +| 1 | a slice reaching past a value in no array, which JS keeps apart from what holds it in Rust | fixtures/reject/src/lib.rs:2186:6 | +| 1 | a trait object of `_`, which is not supported yet | fixtures/reject/src/lib.rs:410:26 | | 1 | arithmetic on `_` | fixtures/reject/src/lib.rs:8:2 | -| 1 | comparing `_` | fixtures/reject/src/lib.rs:1660:41 | -| 1 | comparing `_` as a key, which is not supported yet | fixtures/reject/src/lib.rs:206:75 | -| 1 | comparing pointers to `_` in an atomic, which JS has no address of | fixtures/reject/src/lib.rs:725:15 | -| 1 | comparing pointers to `_`, which has no bytes and so no address of its own | fixtures/reject/src/lib.rs:676:70 | -| 1 | const generic types are not supported: `_` | fixtures/reject/src/lib.rs:2045:1 | -| 1 | constructing `_` | fixtures/reject/src/lib.rs:298:53 | -| 1 | hashing `_` as a key, which is not supported yet | fixtures/reject/src/lib.rs:206:75 | -| 1 | hashing `_` by its address, which JS has no counterpart of | fixtures/reject/src/lib.rs:1664:5 | -| 1 | hashing `_` through `_`'s own `Hash::hash_slice`, which is not supported yet | fixtures/reject/src/lib.rs:266:16 | -| 1 | union `_`, whose fields overlap in `_` and `f64`, which JS keeps apart | fixtures/reject/src/lib.rs:530:1 | +| 1 | comparing `_` | fixtures/reject/src/lib.rs:1647:41 | +| 1 | comparing `_` as a key, which is not supported yet | fixtures/reject/src/lib.rs:193:75 | +| 1 | comparing pointers to `_` in an atomic, which JS has no address of | fixtures/reject/src/lib.rs:712:15 | +| 1 | comparing pointers to `_`, which has no bytes and so no address of its own | fixtures/reject/src/lib.rs:663:70 | +| 1 | const generic types are not supported: `_` | fixtures/reject/src/lib.rs:2032:1 | +| 1 | constructing `_` | fixtures/reject/src/lib.rs:285:53 | +| 1 | hashing `_` as a key, which is not supported yet | fixtures/reject/src/lib.rs:193:75 | +| 1 | hashing `_` by its address, which JS has no counterpart of | fixtures/reject/src/lib.rs:1651:5 | +| 1 | hashing `_` through `_`'s own `Hash::hash_slice`, which is not supported yet | fixtures/reject/src/lib.rs:253:16 | +| 1 | union `_`, whose fields overlap in `_` and `f64`, which JS keeps apart | fixtures/reject/src/lib.rs:517:1 | ## By API @@ -104,166 +102,164 @@ The type or module each refused type or path belongs to. | Count | API | First | | ---: | --- | --- | -| 39 | `std::cell::UnsafeCell` | fixtures/reject/src/lib.rs:635:15 | -| 27 | `(u32, u32)` | fixtures/reject/src/lib.rs:556:10 | -| 15 | `u32` | fixtures/reject/src/lib.rs:503:27 | -| 11 | `(u8, u8)` | fixtures/reject/src/lib.rs:1220:31 | -| 9 | `[u8; 4]` | fixtures/reject/src/lib.rs:423:26 | -| 8 | `u8` | fixtures/reject/src/lib.rs:224:6 | +| 39 | `std::cell::UnsafeCell` | fixtures/reject/src/lib.rs:622:15 | +| 27 | `(u32, u32)` | fixtures/reject/src/lib.rs:543:10 | +| 15 | `u32` | fixtures/reject/src/lib.rs:490:27 | +| 11 | `(u8, u8)` | fixtures/reject/src/lib.rs:1207:31 | +| 9 | `[u8; 4]` | fixtures/reject/src/lib.rs:410:26 | +| 8 | `u8` | fixtures/reject/src/lib.rs:211:6 | | 6 | `f16` | fixtures/reject/src/lib.rs:7:14 | -| 6 | `std::borrow::Cow` | fixtures/reject/src/lib.rs:280:2 | -| 5 | `Gap` | fixtures/reject/src/lib.rs:856:10 | +| 6 | `std::borrow::Cow` | fixtures/reject/src/lib.rs:267:2 | +| 5 | `Gap` | fixtures/reject/src/lib.rs:843:10 | | 5 | `Option` | fixtures/reject/src/lib.rs:16:15 | -| 5 | `i32` | fixtures/reject/src/lib.rs:2294:7 | +| 5 | `i32` | fixtures/reject/src/lib.rs:2281:7 | | 4 | `std::pin::Pin` | fixtures/reject/src/lib.rs:91:2 | -| 4 | `std::str` | fixtures/reject/src/lib.rs:388:4 | +| 4 | `std::str` | fixtures/reject/src/lib.rs:375:4 | | 3 | `Iterator` | fixtures/reject/src/lib.rs:37:4 | -| 3 | `Mid` | fixtures/reject/src/lib.rs:1303:34 | -| 3 | `Outer` | fixtures/reject/src/lib.rs:1303:34 | +| 3 | `Mid` | fixtures/reject/src/lib.rs:1290:34 | +| 3 | `Outer` | fixtures/reject/src/lib.rs:1290:34 | | 3 | `Reused` | fixtures/reject/src/lib.rs:21:4 | -| 3 | `dyn std::any::Any` | fixtures/reject/src/lib.rs:474:32 | -| 3 | `std::mem::ManuallyDrop` | fixtures/reject/src/lib.rs:2314:2 | -| 3 | `std::vec::Vec` | fixtures/reject/src/lib.rs:266:16 | -| 3 | `{closure}` | fixtures/reject/src/lib.rs:275:4 | -| 2 | `(u16, u16)` | fixtures/reject/src/lib.rs:1124:31 | -| 2 | `Counted` | fixtures/reject/src/lib.rs:338:2 | -| 2 | `InArray` | fixtures/reject/src/lib.rs:1250:9 | -| 2 | `InPayload` | fixtures/reject/src/lib.rs:1262:9 | -| 2 | `InTuple` | fixtures/reject/src/lib.rs:1254:9 | -| 2 | `InWritten` | fixtures/reject/src/lib.rs:1274:9 | -| 2 | `Inside` | fixtures/reject/src/lib.rs:1793:20 | +| 3 | `dyn std::any::Any` | fixtures/reject/src/lib.rs:461:32 | +| 3 | `std::mem::ManuallyDrop` | fixtures/reject/src/lib.rs:2301:2 | +| 3 | `std::vec::Vec` | fixtures/reject/src/lib.rs:253:16 | +| 3 | `{closure}` | fixtures/reject/src/lib.rs:262:4 | +| 2 | `(u16, u16)` | fixtures/reject/src/lib.rs:1111:31 | +| 2 | `Counted` | fixtures/reject/src/lib.rs:325:2 | +| 2 | `InArray` | fixtures/reject/src/lib.rs:1237:9 | +| 2 | `InPayload` | fixtures/reject/src/lib.rs:1249:9 | +| 2 | `InTuple` | fixtures/reject/src/lib.rs:1241:9 | +| 2 | `InWritten` | fixtures/reject/src/lib.rs:1261:9 | +| 2 | `Inside` | fixtures/reject/src/lib.rs:1780:20 | | 2 | `Poll` | fixtures/reject/src/lib.rs:72:20 | -| 2 | `Scaled` | fixtures/reject/src/lib.rs:406:23 | -| 2 | `[u32; 3]` | fixtures/reject/src/lib.rs:2138:10 | -| 2 | `[u8; 2]` | fixtures/reject/src/lib.rs:1674:37 | -| 2 | `[u8; 3]` | fixtures/reject/src/lib.rs:1674:15 | -| 2 | `dyn Keyed` | fixtures/reject/src/lib.rs:474:32 | -| 2 | `dyn Scaled` | fixtures/reject/src/lib.rs:406:23 | +| 2 | `Scaled` | fixtures/reject/src/lib.rs:393:23 | +| 2 | `[u32; 3]` | fixtures/reject/src/lib.rs:2125:10 | +| 2 | `[u8; 2]` | fixtures/reject/src/lib.rs:1661:37 | +| 2 | `[u8; 3]` | fixtures/reject/src/lib.rs:1661:15 | +| 2 | `dyn Keyed` | fixtures/reject/src/lib.rs:461:32 | +| 2 | `dyn Scaled` | fixtures/reject/src/lib.rs:393:23 | | 2 | `dyn std::iter::Iterator` | fixtures/reject/src/lib.rs:11:16 | | 2 | `slice` | fixtures/reject/src/lib.rs:21:4 | -| 2 | `std::any::TypeId` | fixtures/reject/src/lib.rs:486:2 | -| 2 | `std::collections::BTreeSet` | fixtures/reject/src/lib.rs:206:75 | -| 2 | `std::collections::LinkedList` | fixtures/reject/src/lib.rs:2065:4 | -| 2 | `std::mem::MaybeUninit` | fixtures/reject/src/lib.rs:870:19 | +| 2 | `std::any::TypeId` | fixtures/reject/src/lib.rs:473:2 | +| 2 | `std::collections::BTreeSet` | fixtures/reject/src/lib.rs:193:75 | +| 2 | `std::collections::LinkedList` | fixtures/reject/src/lib.rs:2052:4 | +| 2 | `std::mem::MaybeUninit` | fixtures/reject/src/lib.rs:857:19 | | 2 | `std::ops::Range` | fixtures/reject/src/lib.rs:164:8 | -| 2 | `std::option::Option` | fixtures/reject/src/lib.rs:318:2 | -| 2 | `std::sync::Arc` | fixtures/reject/src/lib.rs:247:2 | +| 2 | `std::option::Option` | fixtures/reject/src/lib.rs:305:2 | +| 2 | `std::sync::Arc` | fixtures/reject/src/lib.rs:234:2 | | 2 | `std::sync::MutexGuard` | fixtures/reject/src/lib.rs:83:2 | -| 2 | `std::vec::IntoIter` | fixtures/reject/src/lib.rs:383:17 | -| 1 | `(Dropped, (u8, u8))` | fixtures/reject/src/lib.rs:2359:2 | -| 1 | `([Cloned; 2], (u8, u8))` | fixtures/reject/src/lib.rs:2343:2 | -| 1 | `([Greatest; 2], (u8, u8))` | fixtures/reject/src/lib.rs:2377:13 | -| 1 | `([Touched; 2], (u8, u8))` | fixtures/reject/src/lib.rs:2408:2 | -| 1 | `(std::vec::Vec, Tens)` | fixtures/reject/src/lib.rs:1220:31 | -| 1 | `(u16, ByKeyReplace)` | fixtures/reject/src/lib.rs:1569:55 | -| 1 | `(u16, ByKeySet)` | fixtures/reject/src/lib.rs:1561:51 | -| 1 | `(u16, ByKeyTake)` | fixtures/reject/src/lib.rs:1576:52 | -| 1 | `(u16, ByRefReplace)` | fixtures/reject/src/lib.rs:1545:32 | -| 1 | `(u16, ByRefTake)` | fixtures/reject/src/lib.rs:1553:32 | -| 1 | `(u16, InTuple)` | fixtures/reject/src/lib.rs:1294:33 | -| 1 | `*const [u8; 4]` | fixtures/reject/src/lib.rs:1664:5 | -| 1 | `*mut [u8; 4]` | fixtures/reject/src/lib.rs:1660:41 | -| 1 | `Aliased` | fixtures/reject/src/lib.rs:1068:29 | -| 1 | `Assigned` | fixtures/reject/src/lib.rs:1960:20 | -| 1 | `Bare` | fixtures/reject/src/lib.rs:676:70 | -| 1 | `Batched` | fixtures/reject/src/lib.rs:266:16 | -| 1 | `Behind` | fixtures/reject/src/lib.rs:1699:22 | -| 1 | `Bits` | fixtures/reject/src/lib.rs:530:1 | -| 1 | `Blank` | fixtures/reject/src/lib.rs:709:2 | -| 1 | `Block` | fixtures/reject/src/lib.rs:2045:1 | -| 1 | `ByBox` | fixtures/reject/src/lib.rs:1452:35 | -| 1 | `ByClosure` | fixtures/reject/src/lib.rs:1467:35 | -| 1 | `ByExchanged` | fixtures/reject/src/lib.rs:1513:30 | -| 1 | `ByInstance` | fixtures/reject/src/lib.rs:1493:35 | -| 1 | `ByKeyReplace` | fixtures/reject/src/lib.rs:1569:55 | -| 1 | `ByKeySet` | fixtures/reject/src/lib.rs:1561:51 | -| 1 | `ByKeyTake` | fixtures/reject/src/lib.rs:1576:52 | -| 1 | `ByObject` | fixtures/reject/src/lib.rs:1480:35 | -| 1 | `ByRead` | fixtures/reject/src/lib.rs:1403:35 | -| 1 | `ByRefReplace` | fixtures/reject/src/lib.rs:1545:32 | -| 1 | `ByRefTake` | fixtures/reject/src/lib.rs:1553:32 | -| 1 | `ByReplace` | fixtures/reject/src/lib.rs:1441:35 | -| 1 | `BySwap` | fixtures/reject/src/lib.rs:1429:35 | -| 1 | `BySwapped` | fixtures/reject/src/lib.rs:1502:76 | -| 1 | `ByWrite` | fixtures/reject/src/lib.rs:1416:35 | -| 1 | `BytesMut` | fixtures/reject/src/lib.rs:332:6 | -| 1 | `Called` | fixtures/reject/src/lib.rs:1034:28 | -| 1 | `Chosen` | fixtures/reject/src/lib.rs:1854:17 | -| 1 | `Clone` | fixtures/reject/src/lib.rs:2219:4 | -| 1 | `Closed` | fixtures/reject/src/lib.rs:2026:15 | -| 1 | `Compared` | fixtures/reject/src/lib.rs:1821:22 | -| 1 | `Copied` | fixtures/reject/src/lib.rs:1124:31 | -| 1 | `Deep` | fixtures/reject/src/lib.rs:1735:18 | -| 1 | `Deeper` | fixtures/reject/src/lib.rs:1986:22 | +| 2 | `std::vec::IntoIter` | fixtures/reject/src/lib.rs:370:17 | +| 1 | `(Dropped, (u8, u8))` | fixtures/reject/src/lib.rs:2346:2 | +| 1 | `([Cloned; 2], (u8, u8))` | fixtures/reject/src/lib.rs:2330:2 | +| 1 | `([Greatest; 2], (u8, u8))` | fixtures/reject/src/lib.rs:2364:13 | +| 1 | `([Touched; 2], (u8, u8))` | fixtures/reject/src/lib.rs:2395:2 | +| 1 | `(std::vec::Vec, Tens)` | fixtures/reject/src/lib.rs:1207:31 | +| 1 | `(u16, ByKeyReplace)` | fixtures/reject/src/lib.rs:1556:55 | +| 1 | `(u16, ByKeySet)` | fixtures/reject/src/lib.rs:1548:51 | +| 1 | `(u16, ByKeyTake)` | fixtures/reject/src/lib.rs:1563:52 | +| 1 | `(u16, ByRefReplace)` | fixtures/reject/src/lib.rs:1532:32 | +| 1 | `(u16, ByRefTake)` | fixtures/reject/src/lib.rs:1540:32 | +| 1 | `(u16, InTuple)` | fixtures/reject/src/lib.rs:1281:33 | +| 1 | `*const [u8; 4]` | fixtures/reject/src/lib.rs:1651:5 | +| 1 | `*mut [u8; 4]` | fixtures/reject/src/lib.rs:1647:41 | +| 1 | `Aliased` | fixtures/reject/src/lib.rs:1055:29 | +| 1 | `Assigned` | fixtures/reject/src/lib.rs:1947:20 | +| 1 | `Bare` | fixtures/reject/src/lib.rs:663:70 | +| 1 | `Batched` | fixtures/reject/src/lib.rs:253:16 | +| 1 | `Behind` | fixtures/reject/src/lib.rs:1686:22 | +| 1 | `Bits` | fixtures/reject/src/lib.rs:517:1 | +| 1 | `Blank` | fixtures/reject/src/lib.rs:696:2 | +| 1 | `Block` | fixtures/reject/src/lib.rs:2032:1 | +| 1 | `ByBox` | fixtures/reject/src/lib.rs:1439:35 | +| 1 | `ByClosure` | fixtures/reject/src/lib.rs:1454:35 | +| 1 | `ByExchanged` | fixtures/reject/src/lib.rs:1500:30 | +| 1 | `ByInstance` | fixtures/reject/src/lib.rs:1480:35 | +| 1 | `ByKeyReplace` | fixtures/reject/src/lib.rs:1556:55 | +| 1 | `ByKeySet` | fixtures/reject/src/lib.rs:1548:51 | +| 1 | `ByKeyTake` | fixtures/reject/src/lib.rs:1563:52 | +| 1 | `ByObject` | fixtures/reject/src/lib.rs:1467:35 | +| 1 | `ByRead` | fixtures/reject/src/lib.rs:1390:35 | +| 1 | `ByRefReplace` | fixtures/reject/src/lib.rs:1532:32 | +| 1 | `ByRefTake` | fixtures/reject/src/lib.rs:1540:32 | +| 1 | `ByReplace` | fixtures/reject/src/lib.rs:1428:35 | +| 1 | `BySwap` | fixtures/reject/src/lib.rs:1416:35 | +| 1 | `BySwapped` | fixtures/reject/src/lib.rs:1489:76 | +| 1 | `ByWrite` | fixtures/reject/src/lib.rs:1403:35 | +| 1 | `BytesMut` | fixtures/reject/src/lib.rs:319:6 | +| 1 | `Called` | fixtures/reject/src/lib.rs:1021:28 | +| 1 | `Chosen` | fixtures/reject/src/lib.rs:1841:17 | +| 1 | `Clone` | fixtures/reject/src/lib.rs:2206:4 | +| 1 | `Closed` | fixtures/reject/src/lib.rs:2013:15 | +| 1 | `Compared` | fixtures/reject/src/lib.rs:1808:22 | +| 1 | `Copied` | fixtures/reject/src/lib.rs:1111:31 | +| 1 | `Deep` | fixtures/reject/src/lib.rs:1722:18 | +| 1 | `Deeper` | fixtures/reject/src/lib.rs:1973:22 | | 1 | `DoubleEndedIterator` | fixtures/reject/src/lib.rs:150:2 | -| 1 | `Dynamic` | fixtures/reject/src/lib.rs:2010:20 | -| 1 | `Enclosing` | fixtures/reject/src/lib.rs:1838:22 | -| 1 | `Escaped` | fixtures/reject/src/lib.rs:1020:43 | -| 1 | `Halves` | fixtures/reject/src/lib.rs:2281:16 | -| 1 | `HashMap` | fixtures/reject/src/lib.rs:224:6 | -| 1 | `Hits` | fixtures/reject/src/lib.rs:668:21 | -| 1 | `InField` | fixtures/reject/src/lib.rs:1266:9 | -| 1 | `InGeneric` | fixtures/reject/src/lib.rs:1270:9 | -| 1 | `InNested` | fixtures/reject/src/lib.rs:1258:9 | -| 1 | `Lane` | fixtures/reject/src/lib.rs:820:19 | -| 1 | `Lanes` | fixtures/reject/src/lib.rs:2140:10 | -| 1 | `Loaded` | fixtures/reject/src/lib.rs:1090:29 | -| 1 | `Looped` | fixtures/reject/src/lib.rs:1058:26 | -| 1 | `Mapped` | fixtures/reject/src/lib.rs:1135:39 | +| 1 | `Dynamic` | fixtures/reject/src/lib.rs:1997:20 | +| 1 | `Enclosing` | fixtures/reject/src/lib.rs:1825:22 | +| 1 | `Escaped` | fixtures/reject/src/lib.rs:1007:43 | +| 1 | `Halves` | fixtures/reject/src/lib.rs:2268:16 | +| 1 | `HashMap` | fixtures/reject/src/lib.rs:211:6 | +| 1 | `Hits` | fixtures/reject/src/lib.rs:655:21 | +| 1 | `InField` | fixtures/reject/src/lib.rs:1253:9 | +| 1 | `InGeneric` | fixtures/reject/src/lib.rs:1257:9 | +| 1 | `InNested` | fixtures/reject/src/lib.rs:1245:9 | +| 1 | `Lane` | fixtures/reject/src/lib.rs:807:19 | +| 1 | `Lanes` | fixtures/reject/src/lib.rs:2127:10 | +| 1 | `Loaded` | fixtures/reject/src/lib.rs:1077:29 | +| 1 | `Looped` | fixtures/reject/src/lib.rs:1045:26 | +| 1 | `Mapped` | fixtures/reject/src/lib.rs:1122:39 | | 1 | `Maybe` | fixtures/reject/src/lib.rs:31:2 | -| 1 | `Onced` | fixtures/reject/src/lib.rs:1181:46 | -| 1 | `Only` | fixtures/reject/src/lib.rs:685:11 | -| 1 | `Parked` | fixtures/reject/src/lib.rs:2085:20 | -| 1 | `Parking` | fixtures/reject/src/lib.rs:2085:20 | -| 1 | `Plain` | fixtures/reject/src/lib.rs:774:10 | -| 1 | `Pushed` | fixtures/reject/src/lib.rs:1196:22 | -| 1 | `Repeated` | fixtures/reject/src/lib.rs:1169:18 | -| 1 | `Replaced` | fixtures/reject/src/lib.rs:1905:20 | -| 1 | `Rewritten` | fixtures/reject/src/lib.rs:1078:47 | -| 1 | `Shared` | fixtures/reject/src/lib.rs:1776:20 | +| 1 | `Onced` | fixtures/reject/src/lib.rs:1168:46 | +| 1 | `Only` | fixtures/reject/src/lib.rs:672:11 | +| 1 | `Parked` | fixtures/reject/src/lib.rs:2072:20 | +| 1 | `Parking` | fixtures/reject/src/lib.rs:2072:20 | +| 1 | `Plain` | fixtures/reject/src/lib.rs:761:10 | +| 1 | `Pushed` | fixtures/reject/src/lib.rs:1183:22 | +| 1 | `Repeated` | fixtures/reject/src/lib.rs:1156:18 | +| 1 | `Replaced` | fixtures/reject/src/lib.rs:1892:20 | +| 1 | `Rewritten` | fixtures/reject/src/lib.rs:1065:47 | +| 1 | `Shared` | fixtures/reject/src/lib.rs:1763:20 | | 1 | `Sink` | fixtures/reject/src/lib.rs:55:10 | -| 1 | `Slotted` | fixtures/reject/src/lib.rs:1757:21 | -| 1 | `Span2` | fixtures/reject/src/lib.rs:556:10 | -| 1 | `String` | fixtures/reject/src/lib.rs:732:4 | -| 1 | `Swapped` | fixtures/reject/src/lib.rs:1923:20 | +| 1 | `Slotted` | fixtures/reject/src/lib.rs:1744:21 | +| 1 | `Span2` | fixtures/reject/src/lib.rs:543:10 | +| 1 | `String` | fixtures/reject/src/lib.rs:719:4 | +| 1 | `Swapped` | fixtures/reject/src/lib.rs:1910:20 | | 1 | `T \| undefined` | fixtures/reject/src/lib.rs:31:2 | -| 1 | `Tail` | fixtures/reject/src/lib.rs:433:30 | -| 1 | `Taken` | fixtures/reject/src/lib.rs:1941:20 | -| 1 | `Target` | fixtures/reject/src/lib.rs:1617:10 | -| 1 | `Tens` | fixtures/reject/src/lib.rs:1220:31 | -| 1 | `Track` | fixtures/reject/src/lib.rs:800:19 | -| 1 | `Unboxed` | fixtures/reject/src/lib.rs:1714:16 | -| 1 | `Waiting` | fixtures/reject/src/lib.rs:444:2 | -| 1 | `Window` | fixtures/reject/src/lib.rs:617:2 | -| 1 | `Wrapped` | fixtures/reject/src/lib.rs:1882:21 | -| 1 | `[InArray; 2]` | fixtures/reject/src/lib.rs:1285:33 | -| 1 | `[InWritten; 1]` | fixtures/reject/src/lib.rs:1346:35 | -| 1 | `[std::cell::UnsafeCell; 2]` | fixtures/reject/src/lib.rs:2039:20 | -| 1 | `[u32; 2]` | fixtures/reject/src/lib.rs:2125:13 | -| 1 | `poll` | fixtures/reject/src/lib.rs:444:2 | -| 1 | `rt.Poll` | fixtures/reject/src/lib.rs:444:2 | -| 1 | `std::any::Any` | fixtures/reject/src/lib.rs:486:4 | -| 1 | `std::cell::Cell` | fixtures/reject/src/lib.rs:903:22 | -| 1 | `std::cell::LazyCell` | fixtures/reject/src/lib.rs:2256:3 | -| 1 | `std::collections::BTreeMap` | fixtures/reject/src/lib.rs:903:22 | -| 1 | `std::collections::HashMap` | fixtures/reject/src/lib.rs:224:6 | -| 1 | `std::default::Default` | fixtures/reject/src/lib.rs:2067:2 | -| 1 | `std::iter::Map` | fixtures/reject/src/lib.rs:180:40 | -| 1 | `std::iter::Zip` | fixtures/reject/src/lib.rs:173:8 | -| 1 | `std::iter` | fixtures/reject/src/lib.rs:1183:22 | -| 1 | `std::mem` | fixtures/reject/src/lib.rs:2224:2 | -| 1 | `std::net::AddrParseError` | fixtures/reject/src/lib.rs:387:32 | -| 1 | `std::net::Ipv4Addr` | fixtures/reject/src/lib.rs:387:32 | -| 1 | `std::num` | fixtures/reject/src/lib.rs:1225:4 | -| 1 | `std::ops::RangeFrom` | fixtures/reject/src/lib.rs:932:32 | -| 1 | `std::ops::RangeTo` | fixtures/reject/src/lib.rs:932:11 | -| 1 | `std::ptr` | fixtures/reject/src/lib.rs:1660:14 | -| 1 | `std::slice::IterMut` | fixtures/reject/src/lib.rs:714:15 | -| 1 | `std::std` | fixtures/reject/src/lib.rs:2308:13 | -| 1 | `std::sync::LazyLock` | fixtures/reject/src/lib.rs:2261:2 | +| 1 | `Tail` | fixtures/reject/src/lib.rs:420:30 | +| 1 | `Taken` | fixtures/reject/src/lib.rs:1928:20 | +| 1 | `Target` | fixtures/reject/src/lib.rs:1604:10 | +| 1 | `Tens` | fixtures/reject/src/lib.rs:1207:31 | +| 1 | `Track` | fixtures/reject/src/lib.rs:787:19 | +| 1 | `Unboxed` | fixtures/reject/src/lib.rs:1701:16 | +| 1 | `Waiting` | fixtures/reject/src/lib.rs:431:2 | +| 1 | `Window` | fixtures/reject/src/lib.rs:604:2 | +| 1 | `Wrapped` | fixtures/reject/src/lib.rs:1869:21 | +| 1 | `[InArray; 2]` | fixtures/reject/src/lib.rs:1272:33 | +| 1 | `[InWritten; 1]` | fixtures/reject/src/lib.rs:1333:35 | +| 1 | `[std::cell::UnsafeCell; 2]` | fixtures/reject/src/lib.rs:2026:20 | +| 1 | `[u32; 2]` | fixtures/reject/src/lib.rs:2112:13 | +| 1 | `poll` | fixtures/reject/src/lib.rs:431:2 | +| 1 | `rt.Poll` | fixtures/reject/src/lib.rs:431:2 | +| 1 | `std::any::Any` | fixtures/reject/src/lib.rs:473:4 | +| 1 | `std::cell::Cell` | fixtures/reject/src/lib.rs:890:22 | +| 1 | `std::cell::LazyCell` | fixtures/reject/src/lib.rs:2243:3 | +| 1 | `std::collections::BTreeMap` | fixtures/reject/src/lib.rs:890:22 | +| 1 | `std::collections::HashMap` | fixtures/reject/src/lib.rs:211:6 | +| 1 | `std::default::Default` | fixtures/reject/src/lib.rs:2054:2 | +| 1 | `std::iter` | fixtures/reject/src/lib.rs:1170:22 | +| 1 | `std::mem` | fixtures/reject/src/lib.rs:2211:2 | +| 1 | `std::net::AddrParseError` | fixtures/reject/src/lib.rs:374:32 | +| 1 | `std::net::Ipv4Addr` | fixtures/reject/src/lib.rs:374:32 | +| 1 | `std::num` | fixtures/reject/src/lib.rs:1212:4 | +| 1 | `std::ops::RangeFrom` | fixtures/reject/src/lib.rs:919:32 | +| 1 | `std::ops::RangeTo` | fixtures/reject/src/lib.rs:919:11 | +| 1 | `std::ptr` | fixtures/reject/src/lib.rs:1647:14 | +| 1 | `std::slice::IterMut` | fixtures/reject/src/lib.rs:701:15 | +| 1 | `std::std` | fixtures/reject/src/lib.rs:2295:13 | +| 1 | `std::sync::LazyLock` | fixtures/reject/src/lib.rs:2248:2 | | 1 | `std::task::Poll` | fixtures/reject/src/lib.rs:77:34 | -| 1 | `std::thread::LocalKey` | fixtures/reject/src/lib.rs:2267:2 | -| 1 | `str` | fixtures/reject/src/lib.rs:275:4 | +| 1 | `std::thread::LocalKey` | fixtures/reject/src/lib.rs:2254:2 | +| 1 | `str` | fixtures/reject/src/lib.rs:262:4 | | 1 | `u64` | fixtures/reject/src/lib.rs:68:2 | | 1 | `value` | fixtures/reject/src/lib.rs:31:2 | @@ -271,387 +267,385 @@ The type or module each refused type or path belongs to. | Count | Construct | Type or path | First | | ---: | --- | --- | --- | -| 17 | a raw pointer to `_` in a variable assigned again while it may point there | `(u32, u32)` | fixtures/reject/src/lib.rs:564:10 | -| 4 | a variant of `_`, which is not supported: either is the same JS string | `std::borrow::Cow` | fixtures/reject/src/lib.rs:280:2 | -| 3 | a raw pointer to `_` in `_`, which the crate may put another object in place of | `(u32, u32)`, `Gap` | fixtures/reject/src/lib.rs:856:10 | -| 3 | a reference through which a raw pointer may be made into `_` in `_`, which the crate may put another object in place of | `Mid`, `Outer` | fixtures/reject/src/lib.rs:1303:34 | -| 3 | memory from `alloc` cast to pointers to `_` and to `_`, which reads the bytes of one type as another | `i32`, `u32` | fixtures/reject/src/lib.rs:2295:11 | +| 17 | a raw pointer to `_` in a variable assigned again while it may point there | `(u32, u32)` | fixtures/reject/src/lib.rs:551:10 | +| 4 | a variant of `_`, which is not supported: either is the same JS string | `std::borrow::Cow` | fixtures/reject/src/lib.rs:267:2 | +| 3 | a raw pointer to `_` in `_`, which the crate may put another object in place of | `(u32, u32)`, `Gap` | fixtures/reject/src/lib.rs:843:10 | +| 3 | a reference through which a raw pointer may be made into `_` in `_`, which the crate may put another object in place of | `Mid`, `Outer` | fixtures/reject/src/lib.rs:1290:34 | +| 3 | memory from `alloc` cast to pointers to `_` and to `_`, which reads the bytes of one type as another | `i32`, `u32` | fixtures/reject/src/lib.rs:2282:11 | | 3 | unsupported type `_` | `f16` | fixtures/reject/src/lib.rs:7:14 | | 2 | `_` is not supported: its `None` and `Some` would both be `rt.None` | `Option` | fixtures/reject/src/lib.rs:16:15 | | 2 | `_` of `_`, whose `None` is `rt.None`, which is not supported yet | `Iterator::scan`, `Option` | fixtures/reject/src/lib.rs:37:4 | | 2 | `_`, a trait object of another crate's trait, which is not supported yet | `dyn std::iter::Iterator` | fixtures/reject/src/lib.rs:11:16 | -| 2 | `_`, a trait object of the generic trait `_`, which is not supported yet | `dyn Scaled`, `Scaled` | fixtures/reject/src/lib.rs:406:23 | -| 2 | a cast from a pointer to `_` to one to `_`, which reads the bytes of one type as another | `u32`, `u8` | fixtures/reject/src/lib.rs:503:27 | -| 2 | a cast from a pointer to `_` to one to `_`, which reads the bytes of one type as another | `u8`, `u32` | fixtures/reject/src/lib.rs:2280:15 | -| 2 | a copy between pointers to `_`, which JS keeps as an object that knows no array it is in | `[u8; 4]` | fixtures/reject/src/lib.rs:1658:3 | -| 2 | a raw pointer to `_` in `_`, which the crate may put another object in place of | `std::mem::MaybeUninit`, `Gap` | fixtures/reject/src/lib.rs:870:19 | -| 2 | a raw pointer to `_` in a variable assigned again while it may point there | `[u8; 4]` | fixtures/reject/src/lib.rs:1681:26 | -| 2 | a raw pointer to `_` in a variable assigned again while it may point there | `std::cell::UnsafeCell` | fixtures/reject/src/lib.rs:644:15 | -| 2 | a raw pointer to `_` in an element, a payload, or a union field, which is not supported yet | `[u8; 2]` | fixtures/reject/src/lib.rs:1674:37 | -| 2 | a raw pointer to `_` in an element, a payload, or a union field, which is not supported yet | `[u8; 3]` | fixtures/reject/src/lib.rs:1674:15 | -| 2 | a reference to `_`, through which a raw pointer may be made, in a variable assigned again while that pointer may point there | `Inside` | fixtures/reject/src/lib.rs:1793:20 | -| 2 | a reference to `_`, through which a raw pointer may be made, in a variable assigned again while that pointer may point there | `[u8; 4]` | fixtures/reject/src/lib.rs:1681:26 | +| 2 | `_`, a trait object of the generic trait `_`, which is not supported yet | `dyn Scaled`, `Scaled` | fixtures/reject/src/lib.rs:393:23 | +| 2 | a cast from a pointer to `_` to one to `_`, which reads the bytes of one type as another | `u32`, `u8` | fixtures/reject/src/lib.rs:490:27 | +| 2 | a cast from a pointer to `_` to one to `_`, which reads the bytes of one type as another | `u8`, `u32` | fixtures/reject/src/lib.rs:2267:15 | +| 2 | a copy between pointers to `_`, which JS keeps as an object that knows no array it is in | `[u8; 4]` | fixtures/reject/src/lib.rs:1645:3 | +| 2 | a raw pointer to `_` in `_`, which the crate may put another object in place of | `std::mem::MaybeUninit`, `Gap` | fixtures/reject/src/lib.rs:857:19 | +| 2 | a raw pointer to `_` in a variable assigned again while it may point there | `[u8; 4]` | fixtures/reject/src/lib.rs:1668:26 | +| 2 | a raw pointer to `_` in a variable assigned again while it may point there | `std::cell::UnsafeCell` | fixtures/reject/src/lib.rs:631:15 | +| 2 | a raw pointer to `_` in an element, a payload, or a union field, which is not supported yet | `[u8; 2]` | fixtures/reject/src/lib.rs:1661:37 | +| 2 | a raw pointer to `_` in an element, a payload, or a union field, which is not supported yet | `[u8; 3]` | fixtures/reject/src/lib.rs:1661:15 | +| 2 | a reference to `_`, through which a raw pointer may be made, in a variable assigned again while that pointer may point there | `Inside` | fixtures/reject/src/lib.rs:1780:20 | +| 2 | a reference to `_`, through which a raw pointer may be made, in a variable assigned again while that pointer may point there | `[u8; 4]` | fixtures/reject/src/lib.rs:1668:26 | | 2 | an assignment through a reference to `_` | `std::pin::Pin` | fixtures/reject/src/lib.rs:107:2 | -| 2 | an offset of a pointer to `_`, which JS keeps as an object that knows no array it is in | `[u8; 4]` | fixtures/reject/src/lib.rs:1661:56 | -| 2 | an upcast from `_` to `_`, which is not supported yet | `dyn Keyed`, `dyn std::any::Any` | fixtures/reject/src/lib.rs:474:32 | -| 2 | comparing pointers to `_`, each a place JS makes of its own | `u32` | fixtures/reject/src/lib.rs:544:2 | -| 2 | memory from `alloc` cast to pointers to `_` and to `_`, which reads the bytes of one type as another | `u32`, `i32` | fixtures/reject/src/lib.rs:2294:7 | +| 2 | an offset of a pointer to `_`, which JS keeps as an object that knows no array it is in | `[u8; 4]` | fixtures/reject/src/lib.rs:1648:56 | +| 2 | an upcast from `_` to `_`, which is not supported yet | `dyn Keyed`, `dyn std::any::Any` | fixtures/reject/src/lib.rs:461:32 | +| 2 | comparing pointers to `_`, each a place JS makes of its own | `u32` | fixtures/reject/src/lib.rs:531:2 | +| 2 | memory from `alloc` cast to pointers to `_` and to `_`, which reads the bytes of one type as another | `u32`, `i32` | fixtures/reject/src/lib.rs:2281:7 | | 2 | replacing the value behind a reference to `_` | `std::pin::Pin` | fixtures/reject/src/lib.rs:91:2 | -| 2 | unsupported call to `_` | `::sum` | fixtures/reject/src/lib.rs:383:17 | -| 1 | `Buf::copy_to_bytes` of `_`, a value JS copies, which is not supported | `Blank` | fixtures/reject/src/lib.rs:709:2 | -| 1 | `BufMut::put` of `_` into a `BytesMut`, which advances it by the room left in a capacity that depends on whether the other handles of its storage dropped, which is not supported | `Counted` | fixtures/reject/src/lib.rs:343:2 | -| 1 | `BufMut::put` of `_` into a `BytesMut`, which picks the methods it calls by a capacity that depends on whether the other handles of its storage dropped, which is not supported | `Counted` | fixtures/reject/src/lib.rs:338:2 | -| 1 | `Bytes::from_owner` of `_`, which would drop with the last clone of what it makes, which is not supported | `std::sync::Arc` | fixtures/reject/src/lib.rs:323:2 | -| 1 | `Extend` of `_` by `_`, whose `_` of `_` is not supported yet | `(std::vec::Vec, Tens)`, `(u8, u8)`, `Tens`, `u8` | fixtures/reject/src/lib.rs:1220:31 | +| 2 | unsupported call to `_` | `::sum` | fixtures/reject/src/lib.rs:370:17 | +| 1 | `Buf::copy_to_bytes` of `_`, a value JS copies, which is not supported | `Blank` | fixtures/reject/src/lib.rs:696:2 | +| 1 | `BufMut::put` of `_` into a `BytesMut`, which advances it by the room left in a capacity that depends on whether the other handles of its storage dropped, which is not supported | `Counted` | fixtures/reject/src/lib.rs:330:2 | +| 1 | `BufMut::put` of `_` into a `BytesMut`, which picks the methods it calls by a capacity that depends on whether the other handles of its storage dropped, which is not supported | `Counted` | fixtures/reject/src/lib.rs:325:2 | +| 1 | `Bytes::from_owner` of `_`, which would drop with the last clone of what it makes, which is not supported | `std::sync::Arc` | fixtures/reject/src/lib.rs:310:2 | +| 1 | `Extend` of `_` by `_`, whose `_` of `_` is not supported yet | `(std::vec::Vec, Tens)`, `(u8, u8)`, `Tens`, `u8` | fixtures/reject/src/lib.rs:1207:31 | | 1 | `_` is not supported: its `Pending` and `Ready` would both be `rt.OuterPending` | `Poll` | fixtures/reject/src/lib.rs:72:20 | | 1 | `_` is not supported: its field `_` is `_`, typed `_`, whose `None` would be `rt.None` as `_` | `Maybe`, `value`, `Option`, `T \| undefined`, `Option` | fixtures/reject/src/lib.rs:31:2 | -| 1 | `_` is not supported: its field `_` is `_`, typed `_`, whose `Pending` would be `rt.OuterPending` as `_` | `Waiting`, `poll`, `Poll`, `rt.Poll`, `Poll` | fixtures/reject/src/lib.rs:444:2 | -| 1 | `_` of `_` by `_`, which is not supported yet | `HashMap::contains_key`, `std::collections::HashMap`, `u8` | fixtures/reject/src/lib.rs:224:6 | -| 1 | `_` of `_`, which is not supported yet | `std::any::Any::type_id`, `dyn std::any::Any` | fixtures/reject/src/lib.rs:486:4 | -| 1 | `_` of `_`, whose `clone_from` is its own, which is not supported yet | `Clone::clone_from`, `std::vec::Vec` | fixtures/reject/src/lib.rs:2219:4 | -| 1 | `_` of `_`, whose `clone_from` is its own, which is not supported yet | `slice::clone_from_slice`, `Reused` | fixtures/reject/src/lib.rs:242:4 | +| 1 | `_` is not supported: its field `_` is `_`, typed `_`, whose `Pending` would be `rt.OuterPending` as `_` | `Waiting`, `poll`, `Poll`, `rt.Poll`, `Poll` | fixtures/reject/src/lib.rs:431:2 | +| 1 | `_` of `_` by `_`, which is not supported yet | `HashMap::contains_key`, `std::collections::HashMap`, `u8` | fixtures/reject/src/lib.rs:211:6 | +| 1 | `_` of `_`, which is not supported yet | `std::any::Any::type_id`, `dyn std::any::Any` | fixtures/reject/src/lib.rs:473:4 | +| 1 | `_` of `_`, whose `clone_from` is its own, which is not supported yet | `Clone::clone_from`, `std::vec::Vec` | fixtures/reject/src/lib.rs:2206:4 | +| 1 | `_` of `_`, whose `clone_from` is its own, which is not supported yet | `slice::clone_from_slice`, `Reused` | fixtures/reject/src/lib.rs:229:4 | | 1 | `_` of `_`, whose `clone_from` is its own, which is not supported yet | `slice::fill`, `Reused` | fixtures/reject/src/lib.rs:21:4 | -| 1 | `_` with a mutable reference to a value JS copies, which its mapping would copy | `std::collections::LinkedList::retain` | fixtures/reject/src/lib.rs:2065:4 | -| 1 | `_` with a mutable reference to a value JS copies, which its mapping would copy | `std::default::Default::default` | fixtures/reject/src/lib.rs:2067:2 | -| 1 | `_` with a mutable reference to a value JS copies, which its mapping would copy | `std::iter::once` | fixtures/reject/src/lib.rs:1183:22 | -| 1 | `_` with a mutable reference to a value JS copies, which its mapping would copy | `std::str::from_utf8_mut` | fixtures/reject/src/lib.rs:1590:20 | -| 1 | `_` with a mutable reference to a value JS copies, which its mapping would copy | `std::str::get_unchecked_mut` | fixtures/reject/src/lib.rs:1585:13 | -| 1 | `_`, which reads a capacity that depends on whether the other handles of its storage dropped, which is not supported | `BytesMut::capacity` | fixtures/reject/src/lib.rs:332:6 | -| 1 | `clone_from` of `_`, whose items' `clone_from` is their own, which is not supported yet | `std::collections::LinkedList` | fixtures/reject/src/lib.rs:2066:4 | -| 1 | `collect` of `_`, which sorts by `_`'s own `Ord`, of entries that drop, which is not supported yet | `std::collections::BTreeMap`, `std::cell::Cell` | fixtures/reject/src/lib.rs:903:22 | +| 1 | `_` with a mutable reference to a value JS copies, which its mapping would copy | `std::collections::LinkedList::retain` | fixtures/reject/src/lib.rs:2052:4 | +| 1 | `_` with a mutable reference to a value JS copies, which its mapping would copy | `std::default::Default::default` | fixtures/reject/src/lib.rs:2054:2 | +| 1 | `_` with a mutable reference to a value JS copies, which its mapping would copy | `std::iter::once` | fixtures/reject/src/lib.rs:1170:22 | +| 1 | `_` with a mutable reference to a value JS copies, which its mapping would copy | `std::str::from_utf8_mut` | fixtures/reject/src/lib.rs:1577:20 | +| 1 | `_` with a mutable reference to a value JS copies, which its mapping would copy | `std::str::get_unchecked_mut` | fixtures/reject/src/lib.rs:1572:13 | +| 1 | `_`, which reads a capacity that depends on whether the other handles of its storage dropped, which is not supported | `BytesMut::capacity` | fixtures/reject/src/lib.rs:319:6 | +| 1 | `clone_from` of `_`, whose items' `clone_from` is their own, which is not supported yet | `std::collections::LinkedList` | fixtures/reject/src/lib.rs:2053:4 | +| 1 | `collect` of `_`, which sorts by `_`'s own `Ord`, of entries that drop, which is not supported yet | `std::collections::BTreeMap`, `std::cell::Cell` | fixtures/reject/src/lib.rs:890:22 | | 1 | `fmt::Arguments` with a placeholder, or not made in place, written to `_`'s own `fmt::Write`, which is not supported yet: std splits what a placeholder writes into `write_str` calls the runtime does not make | `Sink` | fixtures/reject/src/lib.rs:55:10 | -| 1 | `offset_from` of pointers to `_`, which JS keeps as an object that knows no array it is in | `(u8, u8)` | fixtures/reject/src/lib.rs:2113:36 | -| 1 | a `collect` in place of `_`, a zip std reads by index, holding values that drop, which is not supported yet | `std::iter::Map` | fixtures/reject/src/lib.rs:180:40 | -| 1 | a `skip` of `_`, a zip std reads by index, of items that drop, which is not supported yet | `std::iter::Zip` | fixtures/reject/src/lib.rs:173:8 | +| 1 | `offset_from` of pointers to `_`, which JS keeps as an object that knows no array it is in | `(u8, u8)` | fixtures/reject/src/lib.rs:2100:36 | | 1 | a cast from `_` to `_` | `u64`, `f16` | fixtures/reject/src/lib.rs:68:2 | -| 1 | a cast from a pointer to `_` to one to `_`, which reads the bytes of one type as another | `u32`, `[u32; 2]` | fixtures/reject/src/lib.rs:2125:13 | -| 1 | a cast from a pointer to `_` to one to `_`, which reads the bytes of one type as another | `u8`, `Halves` | fixtures/reject/src/lib.rs:2281:16 | -| 1 | a coercion to `_` | `std::sync::Arc` | fixtures/reject/src/lib.rs:247:2 | -| 1 | a coercion to `_`, which is not supported yet | `&Tail` | fixtures/reject/src/lib.rs:433:30 | -| 1 | a constant of type `_` | `std::mem::ManuallyDrop` | fixtures/reject/src/lib.rs:2314:34 | -| 1 | a constant of type `_`, a pointer into memory translation can't name | `&u32` | fixtures/reject/src/lib.rs:726:3 | -| 1 | a copy between pointers to `_`, which JS keeps as an object that knows no array it is in | `(u8, u8)` | fixtures/reject/src/lib.rs:2110:3 | -| 1 | a dangling pointer to `_`, a value of no bytes made of more than structs and tuples | `Only` | fixtures/reject/src/lib.rs:685:11 | +| 1 | a cast from a pointer to `_` to one to `_`, which reads the bytes of one type as another | `u32`, `[u32; 2]` | fixtures/reject/src/lib.rs:2112:13 | +| 1 | a cast from a pointer to `_` to one to `_`, which reads the bytes of one type as another | `u8`, `Halves` | fixtures/reject/src/lib.rs:2268:16 | +| 1 | a coercion to `_` | `std::sync::Arc` | fixtures/reject/src/lib.rs:234:2 | +| 1 | a coercion to `_`, which is not supported yet | `&Tail` | fixtures/reject/src/lib.rs:420:30 | +| 1 | a constant of type `_` | `std::mem::ManuallyDrop` | fixtures/reject/src/lib.rs:2301:34 | +| 1 | a constant of type `_`, a pointer into memory translation can't name | `&u32` | fixtures/reject/src/lib.rs:713:3 | +| 1 | a copy between pointers to `_`, which JS keeps as an object that knows no array it is in | `(u8, u8)` | fixtures/reject/src/lib.rs:2097:3 | +| 1 | a dangling pointer to `_`, a value of no bytes made of more than structs and tuples | `Only` | fixtures/reject/src/lib.rs:672:11 | | 1 | a future of `_`, which can be `rt.Pending`, as the future's own `Pending` is | `std::task::Poll` | fixtures/reject/src/lib.rs:77:34 | -| 1 | a mapped guard of `_`, which JS can't write in place | `{closure}` | fixtures/reject/src/lib.rs:2100:10 | -| 1 | a pointer into `_`, which JS keeps as an object that knows no array it is in | `(u8, u8)` | fixtures/reject/src/lib.rs:2107:12 | -| 1 | a pointer into an array of `_`, which JS keeps as an object that knows no array it is in | `(u8, u8)` | fixtures/reject/src/lib.rs:2112:30 | -| 1 | a raw pointer to `_` behind a reference, which is the object and not where it is kept | `std::vec::Vec` | fixtures/reject/src/lib.rs:525:10 | -| 1 | a raw pointer to `_` in `_`, which the crate may put another object in place of | `(u16, u16)`, `Copied` | fixtures/reject/src/lib.rs:1124:31 | -| 1 | a raw pointer to `_` in `_`, which the crate may put another object in place of | `(u16, u16)`, `Pushed` | fixtures/reject/src/lib.rs:1196:22 | -| 1 | a raw pointer to `_` in `_`, which the crate may put another object in place of | `(u32, u32)`, `Lane` | fixtures/reject/src/lib.rs:820:19 | -| 1 | a raw pointer to `_` in `_`, which the crate may put another object in place of | `(u32, u32)`, `Plain` | fixtures/reject/src/lib.rs:774:10 | -| 1 | a raw pointer to `_` in `_`, which the crate may put another object in place of | `(u32, u32)`, `Span2` | fixtures/reject/src/lib.rs:556:10 | -| 1 | a raw pointer to `_` in `_`, which the crate may put another object in place of | `(u32, u32)`, `Track` | fixtures/reject/src/lib.rs:800:19 | -| 1 | a raw pointer to `_` in `_`, which the crate may put another object in place of | `(u32, u32)`, `Window` | fixtures/reject/src/lib.rs:617:2 | -| 1 | a raw pointer to `_` in `_`, which the crate may put another object in place of | `(u32, u32)`, `std::cell::UnsafeCell` | fixtures/reject/src/lib.rs:635:15 | -| 1 | a raw pointer to `_` in `_`, which the crate may put another object in place of | `(u8, u8)`, `(Dropped, (u8, u8))` | fixtures/reject/src/lib.rs:2359:2 | -| 1 | a raw pointer to `_` in `_`, which the crate may put another object in place of | `(u8, u8)`, `([Cloned; 2], (u8, u8))` | fixtures/reject/src/lib.rs:2343:2 | -| 1 | a raw pointer to `_` in `_`, which the crate may put another object in place of | `(u8, u8)`, `([Greatest; 2], (u8, u8))` | fixtures/reject/src/lib.rs:2377:13 | -| 1 | a raw pointer to `_` in `_`, which the crate may put another object in place of | `(u8, u8)`, `([Touched; 2], (u8, u8))` | fixtures/reject/src/lib.rs:2408:2 | -| 1 | a raw pointer to `_` in `_`, which the crate may put another object in place of | `ByKeyReplace`, `(u16, ByKeyReplace)` | fixtures/reject/src/lib.rs:1569:55 | -| 1 | a raw pointer to `_` in `_`, which the crate may put another object in place of | `ByKeySet`, `(u16, ByKeySet)` | fixtures/reject/src/lib.rs:1561:51 | -| 1 | a raw pointer to `_` in `_`, which the crate may put another object in place of | `ByKeyTake`, `(u16, ByKeyTake)` | fixtures/reject/src/lib.rs:1576:52 | -| 1 | a raw pointer to `_` in `_`, which the crate may put another object in place of | `ByRefReplace`, `(u16, ByRefReplace)` | fixtures/reject/src/lib.rs:1545:32 | -| 1 | a raw pointer to `_` in `_`, which the crate may put another object in place of | `ByRefTake`, `(u16, ByRefTake)` | fixtures/reject/src/lib.rs:1553:32 | -| 1 | a raw pointer to `_` in `_`, which the crate may put another object in place of | `[u32; 3]`, `Lanes` | fixtures/reject/src/lib.rs:2140:10 | -| 1 | a raw pointer to `_` in `_`, which the crate may put another object in place of | `std::cell::UnsafeCell`, `Aliased` | fixtures/reject/src/lib.rs:1068:29 | -| 1 | a raw pointer to `_` in `_`, which the crate may put another object in place of | `std::cell::UnsafeCell`, `ByBox` | fixtures/reject/src/lib.rs:1452:35 | -| 1 | a raw pointer to `_` in `_`, which the crate may put another object in place of | `std::cell::UnsafeCell`, `ByClosure` | fixtures/reject/src/lib.rs:1467:35 | -| 1 | a raw pointer to `_` in `_`, which the crate may put another object in place of | `std::cell::UnsafeCell`, `ByExchanged` | fixtures/reject/src/lib.rs:1513:30 | -| 1 | a raw pointer to `_` in `_`, which the crate may put another object in place of | `std::cell::UnsafeCell`, `ByInstance` | fixtures/reject/src/lib.rs:1493:35 | -| 1 | a raw pointer to `_` in `_`, which the crate may put another object in place of | `std::cell::UnsafeCell`, `ByObject` | fixtures/reject/src/lib.rs:1480:35 | -| 1 | a raw pointer to `_` in `_`, which the crate may put another object in place of | `std::cell::UnsafeCell`, `ByRead` | fixtures/reject/src/lib.rs:1403:35 | -| 1 | a raw pointer to `_` in `_`, which the crate may put another object in place of | `std::cell::UnsafeCell`, `ByReplace` | fixtures/reject/src/lib.rs:1441:35 | -| 1 | a raw pointer to `_` in `_`, which the crate may put another object in place of | `std::cell::UnsafeCell`, `BySwap` | fixtures/reject/src/lib.rs:1429:35 | -| 1 | a raw pointer to `_` in `_`, which the crate may put another object in place of | `std::cell::UnsafeCell`, `BySwapped` | fixtures/reject/src/lib.rs:1502:76 | -| 1 | a raw pointer to `_` in `_`, which the crate may put another object in place of | `std::cell::UnsafeCell`, `ByWrite` | fixtures/reject/src/lib.rs:1416:35 | -| 1 | a raw pointer to `_` in `_`, which the crate may put another object in place of | `std::cell::UnsafeCell`, `Called` | fixtures/reject/src/lib.rs:1034:28 | -| 1 | a raw pointer to `_` in `_`, which the crate may put another object in place of | `std::cell::UnsafeCell`, `Escaped` | fixtures/reject/src/lib.rs:1020:43 | -| 1 | a raw pointer to `_` in `_`, which the crate may put another object in place of | `std::cell::UnsafeCell`, `Hits` | fixtures/reject/src/lib.rs:668:21 | -| 1 | a raw pointer to `_` in `_`, which the crate may put another object in place of | `std::cell::UnsafeCell`, `InArray` | fixtures/reject/src/lib.rs:1250:9 | -| 1 | a raw pointer to `_` in `_`, which the crate may put another object in place of | `std::cell::UnsafeCell`, `InField` | fixtures/reject/src/lib.rs:1266:9 | -| 1 | a raw pointer to `_` in `_`, which the crate may put another object in place of | `std::cell::UnsafeCell`, `InGeneric` | fixtures/reject/src/lib.rs:1270:9 | -| 1 | a raw pointer to `_` in `_`, which the crate may put another object in place of | `std::cell::UnsafeCell`, `InNested` | fixtures/reject/src/lib.rs:1258:9 | -| 1 | a raw pointer to `_` in `_`, which the crate may put another object in place of | `std::cell::UnsafeCell`, `InPayload` | fixtures/reject/src/lib.rs:1262:9 | -| 1 | a raw pointer to `_` in `_`, which the crate may put another object in place of | `std::cell::UnsafeCell`, `InTuple` | fixtures/reject/src/lib.rs:1254:9 | -| 1 | a raw pointer to `_` in `_`, which the crate may put another object in place of | `std::cell::UnsafeCell`, `InWritten` | fixtures/reject/src/lib.rs:1274:9 | -| 1 | a raw pointer to `_` in `_`, which the crate may put another object in place of | `std::cell::UnsafeCell`, `Loaded` | fixtures/reject/src/lib.rs:1090:29 | -| 1 | a raw pointer to `_` in `_`, which the crate may put another object in place of | `std::cell::UnsafeCell`, `Looped` | fixtures/reject/src/lib.rs:1058:26 | -| 1 | a raw pointer to `_` in `_`, which the crate may put another object in place of | `std::cell::UnsafeCell`, `Mapped` | fixtures/reject/src/lib.rs:1135:39 | -| 1 | a raw pointer to `_` in `_`, which the crate may put another object in place of | `std::cell::UnsafeCell`, `Onced` | fixtures/reject/src/lib.rs:1181:46 | -| 1 | a raw pointer to `_` in `_`, which the crate may put another object in place of | `std::cell::UnsafeCell`, `Repeated` | fixtures/reject/src/lib.rs:1169:18 | -| 1 | a raw pointer to `_` in `_`, which the crate may put another object in place of | `std::cell::UnsafeCell`, `Rewritten` | fixtures/reject/src/lib.rs:1078:47 | -| 1 | a raw pointer to `_` in a variable assigned again while it may point there | `Target` | fixtures/reject/src/lib.rs:1617:10 | -| 1 | a raw pointer to `_` in a variable assigned again while it may point there | `[u32; 3]` | fixtures/reject/src/lib.rs:2138:10 | -| 1 | a raw pointer to `_` in an element, a payload, or a union field, which is not supported yet | `(u32, u32)` | fixtures/reject/src/lib.rs:627:10 | -| 1 | a reference through which a raw pointer may be made into `_` in `_`, which the crate may put another object in place of | `InArray`, `[InArray; 2]` | fixtures/reject/src/lib.rs:1285:33 | -| 1 | a reference through which a raw pointer may be made into `_` in `_`, which the crate may put another object in place of | `InTuple`, `(u16, InTuple)` | fixtures/reject/src/lib.rs:1294:33 | -| 1 | a reference through which a raw pointer may be made into `_` in `_`, which the crate may put another object in place of | `InWritten`, `[InWritten; 1]` | fixtures/reject/src/lib.rs:1346:35 | -| 1 | a reference through which a raw pointer may be made into `_` in `_`, which the crate may put another object in place of | `Parked`, `Parking` | fixtures/reject/src/lib.rs:2085:20 | -| 1 | a reference through which a raw pointer may be made into `_` in `_`, which the crate may put another object in place of | `std::cell::UnsafeCell`, `Assigned` | fixtures/reject/src/lib.rs:1960:20 | -| 1 | a reference through which a raw pointer may be made into `_` in `_`, which the crate may put another object in place of | `std::cell::UnsafeCell`, `Closed` | fixtures/reject/src/lib.rs:2026:15 | -| 1 | a reference through which a raw pointer may be made into `_` in `_`, which the crate may put another object in place of | `std::cell::UnsafeCell`, `Deeper` | fixtures/reject/src/lib.rs:1986:22 | -| 1 | a reference through which a raw pointer may be made into `_` in `_`, which the crate may put another object in place of | `std::cell::UnsafeCell`, `Dynamic` | fixtures/reject/src/lib.rs:2010:20 | -| 1 | a reference through which a raw pointer may be made into `_` in `_`, which the crate may put another object in place of | `std::cell::UnsafeCell`, `Replaced` | fixtures/reject/src/lib.rs:1905:20 | -| 1 | a reference through which a raw pointer may be made into `_` in `_`, which the crate may put another object in place of | `std::cell::UnsafeCell`, `Swapped` | fixtures/reject/src/lib.rs:1923:20 | -| 1 | a reference through which a raw pointer may be made into `_` in `_`, which the crate may put another object in place of | `std::cell::UnsafeCell`, `Taken` | fixtures/reject/src/lib.rs:1941:20 | -| 1 | a reference through which a raw pointer may be made into `_` in `_`, which the crate may put another object in place of | `std::cell::UnsafeCell`, `[std::cell::UnsafeCell; 2]` | fixtures/reject/src/lib.rs:2039:20 | -| 1 | a reference through which a raw pointer may be made into `_` in an element, a payload, or a union field, which is not supported yet | `InPayload` | fixtures/reject/src/lib.rs:1312:11 | -| 1 | a reference to `_`, through which a raw pointer may be made, in a variable assigned again while that pointer may point there | `Behind` | fixtures/reject/src/lib.rs:1699:22 | -| 1 | a reference to `_`, through which a raw pointer may be made, in a variable assigned again while that pointer may point there | `Chosen` | fixtures/reject/src/lib.rs:1854:17 | -| 1 | a reference to `_`, through which a raw pointer may be made, in a variable assigned again while that pointer may point there | `Compared` | fixtures/reject/src/lib.rs:1821:22 | -| 1 | a reference to `_`, through which a raw pointer may be made, in a variable assigned again while that pointer may point there | `Deep` | fixtures/reject/src/lib.rs:1735:18 | -| 1 | a reference to `_`, through which a raw pointer may be made, in a variable assigned again while that pointer may point there | `Enclosing` | fixtures/reject/src/lib.rs:1838:22 | -| 1 | a reference to `_`, through which a raw pointer may be made, in a variable assigned again while that pointer may point there | `Shared` | fixtures/reject/src/lib.rs:1776:20 | -| 1 | a reference to `_`, through which a raw pointer may be made, in a variable assigned again while that pointer may point there | `Slotted` | fixtures/reject/src/lib.rs:1757:21 | -| 1 | a reference to `_`, through which a raw pointer may be made, in a variable assigned again while that pointer may point there | `Unboxed` | fixtures/reject/src/lib.rs:1714:16 | -| 1 | a reference to `_`, through which a raw pointer may be made, in a variable assigned again while that pointer may point there | `Wrapped` | fixtures/reject/src/lib.rs:1882:21 | -| 1 | a reference to `_`, through which a raw pointer may be made, in a variable assigned again while that pointer may point there | `std::cell::UnsafeCell` | fixtures/reject/src/lib.rs:1603:18 | -| 1 | a reference to `_`, through which a raw pointer may be made, in a variable assigned again while that pointer may point there | `std::option::Option` | fixtures/reject/src/lib.rs:2056:13 | +| 1 | a mapped guard of `_`, which JS can't write in place | `{closure}` | fixtures/reject/src/lib.rs:2087:10 | +| 1 | a pointer into `_`, which JS keeps as an object that knows no array it is in | `(u8, u8)` | fixtures/reject/src/lib.rs:2094:12 | +| 1 | a pointer into an array of `_`, which JS keeps as an object that knows no array it is in | `(u8, u8)` | fixtures/reject/src/lib.rs:2099:30 | +| 1 | a raw pointer to `_` behind a reference, which is the object and not where it is kept | `std::vec::Vec` | fixtures/reject/src/lib.rs:512:10 | +| 1 | a raw pointer to `_` in `_`, which the crate may put another object in place of | `(u16, u16)`, `Copied` | fixtures/reject/src/lib.rs:1111:31 | +| 1 | a raw pointer to `_` in `_`, which the crate may put another object in place of | `(u16, u16)`, `Pushed` | fixtures/reject/src/lib.rs:1183:22 | +| 1 | a raw pointer to `_` in `_`, which the crate may put another object in place of | `(u32, u32)`, `Lane` | fixtures/reject/src/lib.rs:807:19 | +| 1 | a raw pointer to `_` in `_`, which the crate may put another object in place of | `(u32, u32)`, `Plain` | fixtures/reject/src/lib.rs:761:10 | +| 1 | a raw pointer to `_` in `_`, which the crate may put another object in place of | `(u32, u32)`, `Span2` | fixtures/reject/src/lib.rs:543:10 | +| 1 | a raw pointer to `_` in `_`, which the crate may put another object in place of | `(u32, u32)`, `Track` | fixtures/reject/src/lib.rs:787:19 | +| 1 | a raw pointer to `_` in `_`, which the crate may put another object in place of | `(u32, u32)`, `Window` | fixtures/reject/src/lib.rs:604:2 | +| 1 | a raw pointer to `_` in `_`, which the crate may put another object in place of | `(u32, u32)`, `std::cell::UnsafeCell` | fixtures/reject/src/lib.rs:622:15 | +| 1 | a raw pointer to `_` in `_`, which the crate may put another object in place of | `(u8, u8)`, `(Dropped, (u8, u8))` | fixtures/reject/src/lib.rs:2346:2 | +| 1 | a raw pointer to `_` in `_`, which the crate may put another object in place of | `(u8, u8)`, `([Cloned; 2], (u8, u8))` | fixtures/reject/src/lib.rs:2330:2 | +| 1 | a raw pointer to `_` in `_`, which the crate may put another object in place of | `(u8, u8)`, `([Greatest; 2], (u8, u8))` | fixtures/reject/src/lib.rs:2364:13 | +| 1 | a raw pointer to `_` in `_`, which the crate may put another object in place of | `(u8, u8)`, `([Touched; 2], (u8, u8))` | fixtures/reject/src/lib.rs:2395:2 | +| 1 | a raw pointer to `_` in `_`, which the crate may put another object in place of | `ByKeyReplace`, `(u16, ByKeyReplace)` | fixtures/reject/src/lib.rs:1556:55 | +| 1 | a raw pointer to `_` in `_`, which the crate may put another object in place of | `ByKeySet`, `(u16, ByKeySet)` | fixtures/reject/src/lib.rs:1548:51 | +| 1 | a raw pointer to `_` in `_`, which the crate may put another object in place of | `ByKeyTake`, `(u16, ByKeyTake)` | fixtures/reject/src/lib.rs:1563:52 | +| 1 | a raw pointer to `_` in `_`, which the crate may put another object in place of | `ByRefReplace`, `(u16, ByRefReplace)` | fixtures/reject/src/lib.rs:1532:32 | +| 1 | a raw pointer to `_` in `_`, which the crate may put another object in place of | `ByRefTake`, `(u16, ByRefTake)` | fixtures/reject/src/lib.rs:1540:32 | +| 1 | a raw pointer to `_` in `_`, which the crate may put another object in place of | `[u32; 3]`, `Lanes` | fixtures/reject/src/lib.rs:2127:10 | +| 1 | a raw pointer to `_` in `_`, which the crate may put another object in place of | `std::cell::UnsafeCell`, `Aliased` | fixtures/reject/src/lib.rs:1055:29 | +| 1 | a raw pointer to `_` in `_`, which the crate may put another object in place of | `std::cell::UnsafeCell`, `ByBox` | fixtures/reject/src/lib.rs:1439:35 | +| 1 | a raw pointer to `_` in `_`, which the crate may put another object in place of | `std::cell::UnsafeCell`, `ByClosure` | fixtures/reject/src/lib.rs:1454:35 | +| 1 | a raw pointer to `_` in `_`, which the crate may put another object in place of | `std::cell::UnsafeCell`, `ByExchanged` | fixtures/reject/src/lib.rs:1500:30 | +| 1 | a raw pointer to `_` in `_`, which the crate may put another object in place of | `std::cell::UnsafeCell`, `ByInstance` | fixtures/reject/src/lib.rs:1480:35 | +| 1 | a raw pointer to `_` in `_`, which the crate may put another object in place of | `std::cell::UnsafeCell`, `ByObject` | fixtures/reject/src/lib.rs:1467:35 | +| 1 | a raw pointer to `_` in `_`, which the crate may put another object in place of | `std::cell::UnsafeCell`, `ByRead` | fixtures/reject/src/lib.rs:1390:35 | +| 1 | a raw pointer to `_` in `_`, which the crate may put another object in place of | `std::cell::UnsafeCell`, `ByReplace` | fixtures/reject/src/lib.rs:1428:35 | +| 1 | a raw pointer to `_` in `_`, which the crate may put another object in place of | `std::cell::UnsafeCell`, `BySwap` | fixtures/reject/src/lib.rs:1416:35 | +| 1 | a raw pointer to `_` in `_`, which the crate may put another object in place of | `std::cell::UnsafeCell`, `BySwapped` | fixtures/reject/src/lib.rs:1489:76 | +| 1 | a raw pointer to `_` in `_`, which the crate may put another object in place of | `std::cell::UnsafeCell`, `ByWrite` | fixtures/reject/src/lib.rs:1403:35 | +| 1 | a raw pointer to `_` in `_`, which the crate may put another object in place of | `std::cell::UnsafeCell`, `Called` | fixtures/reject/src/lib.rs:1021:28 | +| 1 | a raw pointer to `_` in `_`, which the crate may put another object in place of | `std::cell::UnsafeCell`, `Escaped` | fixtures/reject/src/lib.rs:1007:43 | +| 1 | a raw pointer to `_` in `_`, which the crate may put another object in place of | `std::cell::UnsafeCell`, `Hits` | fixtures/reject/src/lib.rs:655:21 | +| 1 | a raw pointer to `_` in `_`, which the crate may put another object in place of | `std::cell::UnsafeCell`, `InArray` | fixtures/reject/src/lib.rs:1237:9 | +| 1 | a raw pointer to `_` in `_`, which the crate may put another object in place of | `std::cell::UnsafeCell`, `InField` | fixtures/reject/src/lib.rs:1253:9 | +| 1 | a raw pointer to `_` in `_`, which the crate may put another object in place of | `std::cell::UnsafeCell`, `InGeneric` | fixtures/reject/src/lib.rs:1257:9 | +| 1 | a raw pointer to `_` in `_`, which the crate may put another object in place of | `std::cell::UnsafeCell`, `InNested` | fixtures/reject/src/lib.rs:1245:9 | +| 1 | a raw pointer to `_` in `_`, which the crate may put another object in place of | `std::cell::UnsafeCell`, `InPayload` | fixtures/reject/src/lib.rs:1249:9 | +| 1 | a raw pointer to `_` in `_`, which the crate may put another object in place of | `std::cell::UnsafeCell`, `InTuple` | fixtures/reject/src/lib.rs:1241:9 | +| 1 | a raw pointer to `_` in `_`, which the crate may put another object in place of | `std::cell::UnsafeCell`, `InWritten` | fixtures/reject/src/lib.rs:1261:9 | +| 1 | a raw pointer to `_` in `_`, which the crate may put another object in place of | `std::cell::UnsafeCell`, `Loaded` | fixtures/reject/src/lib.rs:1077:29 | +| 1 | a raw pointer to `_` in `_`, which the crate may put another object in place of | `std::cell::UnsafeCell`, `Looped` | fixtures/reject/src/lib.rs:1045:26 | +| 1 | a raw pointer to `_` in `_`, which the crate may put another object in place of | `std::cell::UnsafeCell`, `Mapped` | fixtures/reject/src/lib.rs:1122:39 | +| 1 | a raw pointer to `_` in `_`, which the crate may put another object in place of | `std::cell::UnsafeCell`, `Onced` | fixtures/reject/src/lib.rs:1168:46 | +| 1 | a raw pointer to `_` in `_`, which the crate may put another object in place of | `std::cell::UnsafeCell`, `Repeated` | fixtures/reject/src/lib.rs:1156:18 | +| 1 | a raw pointer to `_` in `_`, which the crate may put another object in place of | `std::cell::UnsafeCell`, `Rewritten` | fixtures/reject/src/lib.rs:1065:47 | +| 1 | a raw pointer to `_` in a variable assigned again while it may point there | `Target` | fixtures/reject/src/lib.rs:1604:10 | +| 1 | a raw pointer to `_` in a variable assigned again while it may point there | `[u32; 3]` | fixtures/reject/src/lib.rs:2125:10 | +| 1 | a raw pointer to `_` in an element, a payload, or a union field, which is not supported yet | `(u32, u32)` | fixtures/reject/src/lib.rs:614:10 | +| 1 | a reference through which a raw pointer may be made into `_` in `_`, which the crate may put another object in place of | `InArray`, `[InArray; 2]` | fixtures/reject/src/lib.rs:1272:33 | +| 1 | a reference through which a raw pointer may be made into `_` in `_`, which the crate may put another object in place of | `InTuple`, `(u16, InTuple)` | fixtures/reject/src/lib.rs:1281:33 | +| 1 | a reference through which a raw pointer may be made into `_` in `_`, which the crate may put another object in place of | `InWritten`, `[InWritten; 1]` | fixtures/reject/src/lib.rs:1333:35 | +| 1 | a reference through which a raw pointer may be made into `_` in `_`, which the crate may put another object in place of | `Parked`, `Parking` | fixtures/reject/src/lib.rs:2072:20 | +| 1 | a reference through which a raw pointer may be made into `_` in `_`, which the crate may put another object in place of | `std::cell::UnsafeCell`, `Assigned` | fixtures/reject/src/lib.rs:1947:20 | +| 1 | a reference through which a raw pointer may be made into `_` in `_`, which the crate may put another object in place of | `std::cell::UnsafeCell`, `Closed` | fixtures/reject/src/lib.rs:2013:15 | +| 1 | a reference through which a raw pointer may be made into `_` in `_`, which the crate may put another object in place of | `std::cell::UnsafeCell`, `Deeper` | fixtures/reject/src/lib.rs:1973:22 | +| 1 | a reference through which a raw pointer may be made into `_` in `_`, which the crate may put another object in place of | `std::cell::UnsafeCell`, `Dynamic` | fixtures/reject/src/lib.rs:1997:20 | +| 1 | a reference through which a raw pointer may be made into `_` in `_`, which the crate may put another object in place of | `std::cell::UnsafeCell`, `Replaced` | fixtures/reject/src/lib.rs:1892:20 | +| 1 | a reference through which a raw pointer may be made into `_` in `_`, which the crate may put another object in place of | `std::cell::UnsafeCell`, `Swapped` | fixtures/reject/src/lib.rs:1910:20 | +| 1 | a reference through which a raw pointer may be made into `_` in `_`, which the crate may put another object in place of | `std::cell::UnsafeCell`, `Taken` | fixtures/reject/src/lib.rs:1928:20 | +| 1 | a reference through which a raw pointer may be made into `_` in `_`, which the crate may put another object in place of | `std::cell::UnsafeCell`, `[std::cell::UnsafeCell; 2]` | fixtures/reject/src/lib.rs:2026:20 | +| 1 | a reference through which a raw pointer may be made into `_` in an element, a payload, or a union field, which is not supported yet | `InPayload` | fixtures/reject/src/lib.rs:1299:11 | +| 1 | a reference to `_`, through which a raw pointer may be made, in a variable assigned again while that pointer may point there | `Behind` | fixtures/reject/src/lib.rs:1686:22 | +| 1 | a reference to `_`, through which a raw pointer may be made, in a variable assigned again while that pointer may point there | `Chosen` | fixtures/reject/src/lib.rs:1841:17 | +| 1 | a reference to `_`, through which a raw pointer may be made, in a variable assigned again while that pointer may point there | `Compared` | fixtures/reject/src/lib.rs:1808:22 | +| 1 | a reference to `_`, through which a raw pointer may be made, in a variable assigned again while that pointer may point there | `Deep` | fixtures/reject/src/lib.rs:1722:18 | +| 1 | a reference to `_`, through which a raw pointer may be made, in a variable assigned again while that pointer may point there | `Enclosing` | fixtures/reject/src/lib.rs:1825:22 | +| 1 | a reference to `_`, through which a raw pointer may be made, in a variable assigned again while that pointer may point there | `Shared` | fixtures/reject/src/lib.rs:1763:20 | +| 1 | a reference to `_`, through which a raw pointer may be made, in a variable assigned again while that pointer may point there | `Slotted` | fixtures/reject/src/lib.rs:1744:21 | +| 1 | a reference to `_`, through which a raw pointer may be made, in a variable assigned again while that pointer may point there | `Unboxed` | fixtures/reject/src/lib.rs:1701:16 | +| 1 | a reference to `_`, through which a raw pointer may be made, in a variable assigned again while that pointer may point there | `Wrapped` | fixtures/reject/src/lib.rs:1869:21 | +| 1 | a reference to `_`, through which a raw pointer may be made, in a variable assigned again while that pointer may point there | `std::cell::UnsafeCell` | fixtures/reject/src/lib.rs:1590:18 | +| 1 | a reference to `_`, through which a raw pointer may be made, in a variable assigned again while that pointer may point there | `std::option::Option` | fixtures/reject/src/lib.rs:2043:13 | | 1 | a scalar constant of type `_` | `f16` | fixtures/reject/src/lib.rs:8:2 | -| 1 | a slice from a pointer to `_`, which JS keeps as an object that knows no array it is in | `(u8, u8)` | fixtures/reject/src/lib.rs:2111:11 | -| 1 | a slice or a cell of a mutable reference to `_` that names no place, which a whole write would replace only there | `Reused` | fixtures/reject/src/lib.rs:2214:2 | -| 1 | a slice or a cell of a mutable reference to `_` that names no place, which a whole write would replace only there | `std::cell::LazyCell` | fixtures/reject/src/lib.rs:2256:3 | -| 1 | a slice or a cell of a mutable reference to `_` that names no place, which a whole write would replace only there | `std::thread::LocalKey` | fixtures/reject/src/lib.rs:2267:2 | -| 1 | a trait object of `_`, which is not supported yet | `[u8; 4]` | fixtures/reject/src/lib.rs:423:26 | -| 1 | an assignment through a reference to `_` | `std::sync::LazyLock` | fixtures/reject/src/lib.rs:2261:2 | +| 1 | a slice from a pointer to `_`, which JS keeps as an object that knows no array it is in | `(u8, u8)` | fixtures/reject/src/lib.rs:2098:11 | +| 1 | a slice or a cell of a mutable reference to `_` that names no place, which a whole write would replace only there | `Reused` | fixtures/reject/src/lib.rs:2201:2 | +| 1 | a slice or a cell of a mutable reference to `_` that names no place, which a whole write would replace only there | `std::cell::LazyCell` | fixtures/reject/src/lib.rs:2243:3 | +| 1 | a slice or a cell of a mutable reference to `_` that names no place, which a whole write would replace only there | `std::thread::LocalKey` | fixtures/reject/src/lib.rs:2254:2 | +| 1 | a trait object of `_`, which is not supported yet | `[u8; 4]` | fixtures/reject/src/lib.rs:410:26 | +| 1 | an assignment through a reference to `_` | `std::sync::LazyLock` | fixtures/reject/src/lib.rs:2248:2 | | 1 | an assignment through a reference to `_` | `std::sync::MutexGuard` | fixtures/reject/src/lib.rs:83:2 | -| 1 | an offset of a pointer to `_`, which JS keeps as an object that knows no array it is in | `(u8, u8)` | fixtures/reject/src/lib.rs:2109:13 | +| 1 | an offset of a pointer to `_`, which JS keeps as an object that knows no array it is in | `(u8, u8)` | fixtures/reject/src/lib.rs:2096:13 | | 1 | arithmetic on `_` | `f16` | fixtures/reject/src/lib.rs:8:2 | -| 1 | comparing `_` | `*mut [u8; 4]` | fixtures/reject/src/lib.rs:1660:41 | -| 1 | comparing `_` as a key, which is not supported yet | `std::collections::BTreeSet` | fixtures/reject/src/lib.rs:206:75 | -| 1 | comparing pointers to `_` in an atomic, which JS has no address of | `u32` | fixtures/reject/src/lib.rs:725:15 | -| 1 | comparing pointers to `_`, which has no bytes and so no address of its own | `Bare` | fixtures/reject/src/lib.rs:676:70 | -| 1 | const generic types are not supported: `_` | `Block` | fixtures/reject/src/lib.rs:2045:1 | -| 1 | constructing `_` | `std::borrow::Cow` | fixtures/reject/src/lib.rs:298:53 | -| 1 | hashing `_` as a key, which is not supported yet | `std::collections::BTreeSet` | fixtures/reject/src/lib.rs:206:75 | -| 1 | hashing `_` by its address, which JS has no counterpart of | `*const [u8; 4]` | fixtures/reject/src/lib.rs:1664:5 | -| 1 | hashing `_` through `_`'s own `Hash::hash_slice`, which is not supported yet | `std::vec::Vec`, `Batched` | fixtures/reject/src/lib.rs:266:16 | +| 1 | comparing `_` | `*mut [u8; 4]` | fixtures/reject/src/lib.rs:1647:41 | +| 1 | comparing `_` as a key, which is not supported yet | `std::collections::BTreeSet` | fixtures/reject/src/lib.rs:193:75 | +| 1 | comparing pointers to `_` in an atomic, which JS has no address of | `u32` | fixtures/reject/src/lib.rs:712:15 | +| 1 | comparing pointers to `_`, which has no bytes and so no address of its own | `Bare` | fixtures/reject/src/lib.rs:663:70 | +| 1 | const generic types are not supported: `_` | `Block` | fixtures/reject/src/lib.rs:2032:1 | +| 1 | constructing `_` | `std::borrow::Cow` | fixtures/reject/src/lib.rs:285:53 | +| 1 | hashing `_` as a key, which is not supported yet | `std::collections::BTreeSet` | fixtures/reject/src/lib.rs:193:75 | +| 1 | hashing `_` by its address, which JS has no counterpart of | `*const [u8; 4]` | fixtures/reject/src/lib.rs:1651:5 | +| 1 | hashing `_` through `_`'s own `Hash::hash_slice`, which is not supported yet | `std::vec::Vec`, `Batched` | fixtures/reject/src/lib.rs:253:16 | | 1 | overriding `_`, which std's adaptors call in place of `next` or beside it | `DoubleEndedIterator::nth_back` | fixtures/reject/src/lib.rs:150:2 | | 1 | overriding `_`, which std's adaptors call in place of `next` or beside it | `Iterator::fold` | fixtures/reject/src/lib.rs:125:2 | -| 1 | passing `_`, which drops, to `_`, which is not supported yet | `{closure}`, `String::retain` | fixtures/reject/src/lib.rs:732:4 | -| 1 | passing `_`, which drops, to `_`, which is not supported yet | `{closure}`, `str::contains` | fixtures/reject/src/lib.rs:275:4 | +| 1 | passing `_`, which drops, to `_`, which is not supported yet | `{closure}`, `String::retain` | fixtures/reject/src/lib.rs:719:4 | +| 1 | passing `_`, which drops, to `_`, which is not supported yet | `{closure}`, `str::contains` | fixtures/reject/src/lib.rs:262:4 | | 1 | replacing the value behind a reference to `_` | `std::sync::MutexGuard` | fixtures/reject/src/lib.rs:112:2 | -| 1 | union `_`, whose fields overlap in `_` and `f64`, which JS keeps apart | `Bits`, `u32` | fixtures/reject/src/lib.rs:530:1 | -| 1 | unsupported call to `_` | `::eq` | fixtures/reject/src/lib.rs:486:2 | -| 1 | unsupported call to `_` | `::eq` | fixtures/reject/src/lib.rs:2314:25 | -| 1 | unsupported call to `_` | `::fmt` | fixtures/reject/src/lib.rs:2314:2 | -| 1 | unsupported call to `_` | `::contains` | fixtures/reject/src/lib.rs:932:32 | -| 1 | unsupported call to `_` | `::eq` | fixtures/reject/src/lib.rs:318:2 | -| 1 | unsupported call to `_` | `::is_sorted` | fixtures/reject/src/lib.rs:714:15 | -| 1 | unsupported call to `_` | `::hash` | fixtures/reject/src/lib.rs:257:10 | -| 1 | unsupported call to `_` | `std::any::TypeId::of` | fixtures/reject/src/lib.rs:486:17 | -| 1 | unsupported call to `_` | `std::borrow::Cow::is_borrowed` | fixtures/reject/src/lib.rs:292:2 | -| 1 | unsupported call to `_` | `std::mem::size_of_val` | fixtures/reject/src/lib.rs:2224:2 | -| 1 | unsupported call to `_` | `std::num::is_ascii_octdigit` | fixtures/reject/src/lib.rs:1225:4 | +| 1 | union `_`, whose fields overlap in `_` and `f64`, which JS keeps apart | `Bits`, `u32` | fixtures/reject/src/lib.rs:517:1 | +| 1 | unsupported call to `_` | `::eq` | fixtures/reject/src/lib.rs:473:2 | +| 1 | unsupported call to `_` | `::eq` | fixtures/reject/src/lib.rs:2301:25 | +| 1 | unsupported call to `_` | `::fmt` | fixtures/reject/src/lib.rs:2301:2 | +| 1 | unsupported call to `_` | `::contains` | fixtures/reject/src/lib.rs:919:32 | +| 1 | unsupported call to `_` | `::eq` | fixtures/reject/src/lib.rs:305:2 | +| 1 | unsupported call to `_` | `::is_sorted` | fixtures/reject/src/lib.rs:701:15 | +| 1 | unsupported call to `_` | `::hash` | fixtures/reject/src/lib.rs:244:10 | +| 1 | unsupported call to `_` | `std::any::TypeId::of` | fixtures/reject/src/lib.rs:473:17 | +| 1 | unsupported call to `_` | `std::borrow::Cow::is_borrowed` | fixtures/reject/src/lib.rs:279:2 | +| 1 | unsupported call to `_` | `std::mem::size_of_val` | fixtures/reject/src/lib.rs:2211:2 | +| 1 | unsupported call to `_` | `std::num::is_ascii_octdigit` | fixtures/reject/src/lib.rs:1212:4 | | 1 | unsupported call to `_` | `std::ops::Range::contains` | fixtures/reject/src/lib.rs:164:8 | -| 1 | unsupported call to `_` | `std::ops::Range::is_empty` | fixtures/reject/src/lib.rs:937:9 | -| 1 | unsupported call to `_` | `std::ops::RangeTo::contains` | fixtures/reject/src/lib.rs:932:11 | -| 1 | unsupported call to `_` | `std::ptr::addr_eq` | fixtures/reject/src/lib.rs:1660:14 | -| 1 | unsupported call to `_` | `std::std::alloc_zeroed` | fixtures/reject/src/lib.rs:2308:13 | -| 1 | unsupported call to `_` | `std::str::as_bytes_mut` | fixtures/reject/src/lib.rs:1584:13 | -| 1 | unsupported call to `_` | `std::str::parse` | fixtures/reject/src/lib.rs:388:4 | -| 1 | unsupported type `_` from another crate | `std::net::AddrParseError` | fixtures/reject/src/lib.rs:387:32 | -| 1 | unsupported type `_` from another crate | `std::net::Ipv4Addr` | fixtures/reject/src/lib.rs:387:32 | +| 1 | unsupported call to `_` | `std::ops::Range::is_empty` | fixtures/reject/src/lib.rs:924:9 | +| 1 | unsupported call to `_` | `std::ops::RangeTo::contains` | fixtures/reject/src/lib.rs:919:11 | +| 1 | unsupported call to `_` | `std::ptr::addr_eq` | fixtures/reject/src/lib.rs:1647:14 | +| 1 | unsupported call to `_` | `std::std::alloc_zeroed` | fixtures/reject/src/lib.rs:2295:13 | +| 1 | unsupported call to `_` | `std::str::as_bytes_mut` | fixtures/reject/src/lib.rs:1571:13 | +| 1 | unsupported call to `_` | `std::str::parse` | fixtures/reject/src/lib.rs:375:4 | +| 1 | unsupported type `_` from another crate | `std::net::AddrParseError` | fixtures/reject/src/lib.rs:374:32 | +| 1 | unsupported type `_` from another crate | `std::net::Ipv4Addr` | fixtures/reject/src/lib.rs:374:32 | ## Spans
a raw pointer to `_` in `_`, which the crate may put another object in place of (50) -- fixtures/reject/src/lib.rs:556:10: a raw pointer to `(u32, u32)` in `Span2`, which the crate may put another object in place of -- fixtures/reject/src/lib.rs:617:2: a raw pointer to `(u32, u32)` in `Window`, which the crate may put another object in place of -- fixtures/reject/src/lib.rs:635:15: a raw pointer to `(u32, u32)` in `std::cell::UnsafeCell<(u32, u32)>`, which the crate may put another object in place of -- fixtures/reject/src/lib.rs:668:21: a raw pointer to `std::cell::UnsafeCell` in `Hits`, which the crate may put another object in place of -- fixtures/reject/src/lib.rs:774:10: a raw pointer to `(u32, u32)` in `Plain`, which the crate may put another object in place of -- fixtures/reject/src/lib.rs:800:19: a raw pointer to `(u32, u32)` in `Track`, which the crate may put another object in place of -- fixtures/reject/src/lib.rs:820:19: a raw pointer to `(u32, u32)` in `Lane`, which the crate may put another object in place of -- fixtures/reject/src/lib.rs:856:10: a raw pointer to `(u32, u32)` in `Gap`, which the crate may put another object in place of -- fixtures/reject/src/lib.rs:857:10: a raw pointer to `(u32, u32)` in `Gap`, which the crate may put another object in place of -- fixtures/reject/src/lib.rs:858:58: a raw pointer to `(u32, u32)` in `Gap`, which the crate may put another object in place of -- fixtures/reject/src/lib.rs:870:19: a raw pointer to `std::mem::MaybeUninit<(u32, u32)>` in `Gap`, which the crate may put another object in place of -- fixtures/reject/src/lib.rs:871:19: a raw pointer to `std::mem::MaybeUninit<(u32, u32)>` in `Gap`, which the crate may put another object in place of -- fixtures/reject/src/lib.rs:1020:43: a raw pointer to `std::cell::UnsafeCell<(u16, u16)>` in `Escaped`, which the crate may put another object in place of -- fixtures/reject/src/lib.rs:1034:28: a raw pointer to `std::cell::UnsafeCell<(u16, u16)>` in `Called`, which the crate may put another object in place of -- fixtures/reject/src/lib.rs:1058:26: a raw pointer to `std::cell::UnsafeCell<(u16, u16)>` in `Looped`, which the crate may put another object in place of -- fixtures/reject/src/lib.rs:1068:29: a raw pointer to `std::cell::UnsafeCell<(u16, u16)>` in `Aliased`, which the crate may put another object in place of -- fixtures/reject/src/lib.rs:1078:47: a raw pointer to `std::cell::UnsafeCell<(u16, u16)>` in `Rewritten`, which the crate may put another object in place of -- fixtures/reject/src/lib.rs:1090:29: a raw pointer to `std::cell::UnsafeCell<(u16, u16)>` in `Loaded`, which the crate may put another object in place of -- fixtures/reject/src/lib.rs:1124:31: a raw pointer to `(u16, u16)` in `Copied`, which the crate may put another object in place of -- fixtures/reject/src/lib.rs:1135:39: a raw pointer to `std::cell::UnsafeCell<(u16, u16)>` in `Mapped`, which the crate may put another object in place of -- fixtures/reject/src/lib.rs:1169:18: a raw pointer to `std::cell::UnsafeCell<(u16, u16)>` in `Repeated`, which the crate may put another object in place of -- fixtures/reject/src/lib.rs:1181:46: a raw pointer to `std::cell::UnsafeCell<(u16, u16)>` in `Onced`, which the crate may put another object in place of -- fixtures/reject/src/lib.rs:1196:22: a raw pointer to `(u16, u16)` in `Pushed`, which the crate may put another object in place of -- fixtures/reject/src/lib.rs:1250:9: a raw pointer to `std::cell::UnsafeCell` in `InArray`, which the crate may put another object in place of -- fixtures/reject/src/lib.rs:1254:9: a raw pointer to `std::cell::UnsafeCell` in `InTuple`, which the crate may put another object in place of -- fixtures/reject/src/lib.rs:1258:9: a raw pointer to `std::cell::UnsafeCell` in `InNested`, which the crate may put another object in place of -- fixtures/reject/src/lib.rs:1262:9: a raw pointer to `std::cell::UnsafeCell` in `InPayload`, which the crate may put another object in place of -- fixtures/reject/src/lib.rs:1266:9: a raw pointer to `std::cell::UnsafeCell` in `InField`, which the crate may put another object in place of -- fixtures/reject/src/lib.rs:1270:9: a raw pointer to `std::cell::UnsafeCell` in `InGeneric`, which the crate may put another object in place of -- fixtures/reject/src/lib.rs:1274:9: a raw pointer to `std::cell::UnsafeCell` in `InWritten`, which the crate may put another object in place of -- fixtures/reject/src/lib.rs:1403:35: a raw pointer to `std::cell::UnsafeCell` in `ByRead`, which the crate may put another object in place of -- fixtures/reject/src/lib.rs:1416:35: a raw pointer to `std::cell::UnsafeCell` in `ByWrite`, which the crate may put another object in place of -- fixtures/reject/src/lib.rs:1429:35: a raw pointer to `std::cell::UnsafeCell` in `BySwap`, which the crate may put another object in place of -- fixtures/reject/src/lib.rs:1441:35: a raw pointer to `std::cell::UnsafeCell` in `ByReplace`, which the crate may put another object in place of -- fixtures/reject/src/lib.rs:1452:35: a raw pointer to `std::cell::UnsafeCell` in `ByBox`, which the crate may put another object in place of -- fixtures/reject/src/lib.rs:1467:35: a raw pointer to `std::cell::UnsafeCell` in `ByClosure`, which the crate may put another object in place of -- fixtures/reject/src/lib.rs:1480:35: a raw pointer to `std::cell::UnsafeCell` in `ByObject`, which the crate may put another object in place of -- fixtures/reject/src/lib.rs:1493:35: a raw pointer to `std::cell::UnsafeCell` in `ByInstance`, which the crate may put another object in place of -- fixtures/reject/src/lib.rs:1502:76: a raw pointer to `std::cell::UnsafeCell` in `BySwapped`, which the crate may put another object in place of -- fixtures/reject/src/lib.rs:1513:30: a raw pointer to `std::cell::UnsafeCell` in `ByExchanged`, which the crate may put another object in place of -- fixtures/reject/src/lib.rs:1545:32: a raw pointer to `ByRefReplace` in `(u16, ByRefReplace)`, which the crate may put another object in place of -- fixtures/reject/src/lib.rs:1553:32: a raw pointer to `ByRefTake` in `(u16, ByRefTake)`, which the crate may put another object in place of -- fixtures/reject/src/lib.rs:1561:51: a raw pointer to `ByKeySet` in `(u16, ByKeySet)`, which the crate may put another object in place of -- fixtures/reject/src/lib.rs:1569:55: a raw pointer to `ByKeyReplace` in `(u16, ByKeyReplace)`, which the crate may put another object in place of -- fixtures/reject/src/lib.rs:1576:52: a raw pointer to `ByKeyTake` in `(u16, ByKeyTake)`, which the crate may put another object in place of -- fixtures/reject/src/lib.rs:2140:10: a raw pointer to `[u32; 3]` in `Lanes`, which the crate may put another object in place of -- fixtures/reject/src/lib.rs:2343:2: a raw pointer to `(u8, u8)` in `([Cloned; 2], (u8, u8))`, which the crate may put another object in place of -- fixtures/reject/src/lib.rs:2359:2: a raw pointer to `(u8, u8)` in `(Dropped, (u8, u8))`, which the crate may put another object in place of -- fixtures/reject/src/lib.rs:2377:13: a raw pointer to `(u8, u8)` in `([Greatest; 2], (u8, u8))`, which the crate may put another object in place of -- fixtures/reject/src/lib.rs:2408:2: a raw pointer to `(u8, u8)` in `([Touched; 2], (u8, u8))`, which the crate may put another object in place of +- fixtures/reject/src/lib.rs:543:10: a raw pointer to `(u32, u32)` in `Span2`, which the crate may put another object in place of +- fixtures/reject/src/lib.rs:604:2: a raw pointer to `(u32, u32)` in `Window`, which the crate may put another object in place of +- fixtures/reject/src/lib.rs:622:15: a raw pointer to `(u32, u32)` in `std::cell::UnsafeCell<(u32, u32)>`, which the crate may put another object in place of +- fixtures/reject/src/lib.rs:655:21: a raw pointer to `std::cell::UnsafeCell` in `Hits`, which the crate may put another object in place of +- fixtures/reject/src/lib.rs:761:10: a raw pointer to `(u32, u32)` in `Plain`, which the crate may put another object in place of +- fixtures/reject/src/lib.rs:787:19: a raw pointer to `(u32, u32)` in `Track`, which the crate may put another object in place of +- fixtures/reject/src/lib.rs:807:19: a raw pointer to `(u32, u32)` in `Lane`, which the crate may put another object in place of +- fixtures/reject/src/lib.rs:843:10: a raw pointer to `(u32, u32)` in `Gap`, which the crate may put another object in place of +- fixtures/reject/src/lib.rs:844:10: a raw pointer to `(u32, u32)` in `Gap`, which the crate may put another object in place of +- fixtures/reject/src/lib.rs:845:58: a raw pointer to `(u32, u32)` in `Gap`, which the crate may put another object in place of +- fixtures/reject/src/lib.rs:857:19: a raw pointer to `std::mem::MaybeUninit<(u32, u32)>` in `Gap`, which the crate may put another object in place of +- fixtures/reject/src/lib.rs:858:19: a raw pointer to `std::mem::MaybeUninit<(u32, u32)>` in `Gap`, which the crate may put another object in place of +- fixtures/reject/src/lib.rs:1007:43: a raw pointer to `std::cell::UnsafeCell<(u16, u16)>` in `Escaped`, which the crate may put another object in place of +- fixtures/reject/src/lib.rs:1021:28: a raw pointer to `std::cell::UnsafeCell<(u16, u16)>` in `Called`, which the crate may put another object in place of +- fixtures/reject/src/lib.rs:1045:26: a raw pointer to `std::cell::UnsafeCell<(u16, u16)>` in `Looped`, which the crate may put another object in place of +- fixtures/reject/src/lib.rs:1055:29: a raw pointer to `std::cell::UnsafeCell<(u16, u16)>` in `Aliased`, which the crate may put another object in place of +- fixtures/reject/src/lib.rs:1065:47: a raw pointer to `std::cell::UnsafeCell<(u16, u16)>` in `Rewritten`, which the crate may put another object in place of +- fixtures/reject/src/lib.rs:1077:29: a raw pointer to `std::cell::UnsafeCell<(u16, u16)>` in `Loaded`, which the crate may put another object in place of +- fixtures/reject/src/lib.rs:1111:31: a raw pointer to `(u16, u16)` in `Copied`, which the crate may put another object in place of +- fixtures/reject/src/lib.rs:1122:39: a raw pointer to `std::cell::UnsafeCell<(u16, u16)>` in `Mapped`, which the crate may put another object in place of +- fixtures/reject/src/lib.rs:1156:18: a raw pointer to `std::cell::UnsafeCell<(u16, u16)>` in `Repeated`, which the crate may put another object in place of +- fixtures/reject/src/lib.rs:1168:46: a raw pointer to `std::cell::UnsafeCell<(u16, u16)>` in `Onced`, which the crate may put another object in place of +- fixtures/reject/src/lib.rs:1183:22: a raw pointer to `(u16, u16)` in `Pushed`, which the crate may put another object in place of +- fixtures/reject/src/lib.rs:1237:9: a raw pointer to `std::cell::UnsafeCell` in `InArray`, which the crate may put another object in place of +- fixtures/reject/src/lib.rs:1241:9: a raw pointer to `std::cell::UnsafeCell` in `InTuple`, which the crate may put another object in place of +- fixtures/reject/src/lib.rs:1245:9: a raw pointer to `std::cell::UnsafeCell` in `InNested`, which the crate may put another object in place of +- fixtures/reject/src/lib.rs:1249:9: a raw pointer to `std::cell::UnsafeCell` in `InPayload`, which the crate may put another object in place of +- fixtures/reject/src/lib.rs:1253:9: a raw pointer to `std::cell::UnsafeCell` in `InField`, which the crate may put another object in place of +- fixtures/reject/src/lib.rs:1257:9: a raw pointer to `std::cell::UnsafeCell` in `InGeneric`, which the crate may put another object in place of +- fixtures/reject/src/lib.rs:1261:9: a raw pointer to `std::cell::UnsafeCell` in `InWritten`, which the crate may put another object in place of +- fixtures/reject/src/lib.rs:1390:35: a raw pointer to `std::cell::UnsafeCell` in `ByRead`, which the crate may put another object in place of +- fixtures/reject/src/lib.rs:1403:35: a raw pointer to `std::cell::UnsafeCell` in `ByWrite`, which the crate may put another object in place of +- fixtures/reject/src/lib.rs:1416:35: a raw pointer to `std::cell::UnsafeCell` in `BySwap`, which the crate may put another object in place of +- fixtures/reject/src/lib.rs:1428:35: a raw pointer to `std::cell::UnsafeCell` in `ByReplace`, which the crate may put another object in place of +- fixtures/reject/src/lib.rs:1439:35: a raw pointer to `std::cell::UnsafeCell` in `ByBox`, which the crate may put another object in place of +- fixtures/reject/src/lib.rs:1454:35: a raw pointer to `std::cell::UnsafeCell` in `ByClosure`, which the crate may put another object in place of +- fixtures/reject/src/lib.rs:1467:35: a raw pointer to `std::cell::UnsafeCell` in `ByObject`, which the crate may put another object in place of +- fixtures/reject/src/lib.rs:1480:35: a raw pointer to `std::cell::UnsafeCell` in `ByInstance`, which the crate may put another object in place of +- fixtures/reject/src/lib.rs:1489:76: a raw pointer to `std::cell::UnsafeCell` in `BySwapped`, which the crate may put another object in place of +- fixtures/reject/src/lib.rs:1500:30: a raw pointer to `std::cell::UnsafeCell` in `ByExchanged`, which the crate may put another object in place of +- fixtures/reject/src/lib.rs:1532:32: a raw pointer to `ByRefReplace` in `(u16, ByRefReplace)`, which the crate may put another object in place of +- fixtures/reject/src/lib.rs:1540:32: a raw pointer to `ByRefTake` in `(u16, ByRefTake)`, which the crate may put another object in place of +- fixtures/reject/src/lib.rs:1548:51: a raw pointer to `ByKeySet` in `(u16, ByKeySet)`, which the crate may put another object in place of +- fixtures/reject/src/lib.rs:1556:55: a raw pointer to `ByKeyReplace` in `(u16, ByKeyReplace)`, which the crate may put another object in place of +- fixtures/reject/src/lib.rs:1563:52: a raw pointer to `ByKeyTake` in `(u16, ByKeyTake)`, which the crate may put another object in place of +- fixtures/reject/src/lib.rs:2127:10: a raw pointer to `[u32; 3]` in `Lanes`, which the crate may put another object in place of +- fixtures/reject/src/lib.rs:2330:2: a raw pointer to `(u8, u8)` in `([Cloned; 2], (u8, u8))`, which the crate may put another object in place of +- fixtures/reject/src/lib.rs:2346:2: a raw pointer to `(u8, u8)` in `(Dropped, (u8, u8))`, which the crate may put another object in place of +- fixtures/reject/src/lib.rs:2364:13: a raw pointer to `(u8, u8)` in `([Greatest; 2], (u8, u8))`, which the crate may put another object in place of +- fixtures/reject/src/lib.rs:2395:2: a raw pointer to `(u8, u8)` in `([Touched; 2], (u8, u8))`, which the crate may put another object in place of
a raw pointer to `_` in a variable assigned again while it may point there (23) -- fixtures/reject/src/lib.rs:564:10: a raw pointer to `(u32, u32)` in a variable assigned again while it may point there -- fixtures/reject/src/lib.rs:572:10: a raw pointer to `(u32, u32)` in a variable assigned again while it may point there -- fixtures/reject/src/lib.rs:581:10: a raw pointer to `(u32, u32)` in a variable assigned again while it may point there -- fixtures/reject/src/lib.rs:589:10: a raw pointer to `(u32, u32)` in a variable assigned again while it may point there -- fixtures/reject/src/lib.rs:598:10: a raw pointer to `(u32, u32)` in a variable assigned again while it may point there -- fixtures/reject/src/lib.rs:606:10: a raw pointer to `(u32, u32)` in a variable assigned again while it may point there +- fixtures/reject/src/lib.rs:551:10: a raw pointer to `(u32, u32)` in a variable assigned again while it may point there +- fixtures/reject/src/lib.rs:559:10: a raw pointer to `(u32, u32)` in a variable assigned again while it may point there +- fixtures/reject/src/lib.rs:568:10: a raw pointer to `(u32, u32)` in a variable assigned again while it may point there +- fixtures/reject/src/lib.rs:576:10: a raw pointer to `(u32, u32)` in a variable assigned again while it may point there +- fixtures/reject/src/lib.rs:585:10: a raw pointer to `(u32, u32)` in a variable assigned again while it may point there +- fixtures/reject/src/lib.rs:593:10: a raw pointer to `(u32, u32)` in a variable assigned again while it may point there +- fixtures/reject/src/lib.rs:631:15: a raw pointer to `std::cell::UnsafeCell` in a variable assigned again while it may point there - fixtures/reject/src/lib.rs:644:15: a raw pointer to `std::cell::UnsafeCell` in a variable assigned again while it may point there -- fixtures/reject/src/lib.rs:657:15: a raw pointer to `std::cell::UnsafeCell` in a variable assigned again while it may point there -- fixtures/reject/src/lib.rs:949:26: a raw pointer to `(u32, u32)` in a variable assigned again while it may point there -- fixtures/reject/src/lib.rs:962:22: a raw pointer to `(u32, u32)` in a variable assigned again while it may point there -- fixtures/reject/src/lib.rs:972:12: a raw pointer to `(u32, u32)` in a variable assigned again while it may point there -- fixtures/reject/src/lib.rs:981:10: a raw pointer to `(u32, u32)` in a variable assigned again while it may point there -- fixtures/reject/src/lib.rs:991:17: a raw pointer to `(u32, u32)` in a variable assigned again while it may point there -- fixtures/reject/src/lib.rs:996:10: a raw pointer to `(u32, u32)` in a variable assigned again while it may point there -- fixtures/reject/src/lib.rs:1617:10: a raw pointer to `Target` in a variable assigned again while it may point there -- fixtures/reject/src/lib.rs:1630:10: a raw pointer to `(u32, u32)` in a variable assigned again while it may point there -- fixtures/reject/src/lib.rs:1645:10: a raw pointer to `(u32, u32)` in a variable assigned again while it may point there -- fixtures/reject/src/lib.rs:1681:26: a raw pointer to `[u8; 4]` in a variable assigned again while it may point there -- fixtures/reject/src/lib.rs:1682:10: a raw pointer to `[u8; 4]` in a variable assigned again while it may point there -- fixtures/reject/src/lib.rs:2138:10: a raw pointer to `[u32; 3]` in a variable assigned again while it may point there -- fixtures/reject/src/lib.rs:2230:10: a raw pointer to `(u32, u32)` in a variable assigned again while it may point there -- fixtures/reject/src/lib.rs:2238:10: a raw pointer to `(u32, u32)` in a variable assigned again while it may point there -- fixtures/reject/src/lib.rs:2246:10: a raw pointer to `(u32, u32)` in a variable assigned again while it may point there +- fixtures/reject/src/lib.rs:936:26: a raw pointer to `(u32, u32)` in a variable assigned again while it may point there +- fixtures/reject/src/lib.rs:949:22: a raw pointer to `(u32, u32)` in a variable assigned again while it may point there +- fixtures/reject/src/lib.rs:959:12: a raw pointer to `(u32, u32)` in a variable assigned again while it may point there +- fixtures/reject/src/lib.rs:968:10: a raw pointer to `(u32, u32)` in a variable assigned again while it may point there +- fixtures/reject/src/lib.rs:978:17: a raw pointer to `(u32, u32)` in a variable assigned again while it may point there +- fixtures/reject/src/lib.rs:983:10: a raw pointer to `(u32, u32)` in a variable assigned again while it may point there +- fixtures/reject/src/lib.rs:1604:10: a raw pointer to `Target` in a variable assigned again while it may point there +- fixtures/reject/src/lib.rs:1617:10: a raw pointer to `(u32, u32)` in a variable assigned again while it may point there +- fixtures/reject/src/lib.rs:1632:10: a raw pointer to `(u32, u32)` in a variable assigned again while it may point there +- fixtures/reject/src/lib.rs:1668:26: a raw pointer to `[u8; 4]` in a variable assigned again while it may point there +- fixtures/reject/src/lib.rs:1669:10: a raw pointer to `[u8; 4]` in a variable assigned again while it may point there +- fixtures/reject/src/lib.rs:2125:10: a raw pointer to `[u32; 3]` in a variable assigned again while it may point there +- fixtures/reject/src/lib.rs:2217:10: a raw pointer to `(u32, u32)` in a variable assigned again while it may point there +- fixtures/reject/src/lib.rs:2225:10: a raw pointer to `(u32, u32)` in a variable assigned again while it may point there +- fixtures/reject/src/lib.rs:2233:10: a raw pointer to `(u32, u32)` in a variable assigned again while it may point there
unsupported call to `_` (20) - fixtures/reject/src/lib.rs:164:8: unsupported call to `std::ops::Range::::contains::` -- fixtures/reject/src/lib.rs:257:10: unsupported call to `::hash::` -- fixtures/reject/src/lib.rs:292:2: unsupported call to `std::borrow::Cow::<'_, [u8]>::is_borrowed` -- fixtures/reject/src/lib.rs:318:2: unsupported call to ` as std::cmp::PartialEq>::eq` -- fixtures/reject/src/lib.rs:383:17: unsupported call to ` as std::iter::Iterator>::sum::` -- fixtures/reject/src/lib.rs:383:38: unsupported call to ` as std::iter::Iterator>::sum::` -- fixtures/reject/src/lib.rs:388:4: unsupported call to `core::str::::parse::` -- fixtures/reject/src/lib.rs:486:2: unsupported call to `::eq` -- fixtures/reject/src/lib.rs:486:17: unsupported call to `std::any::TypeId::of::` -- fixtures/reject/src/lib.rs:714:15: unsupported call to ` as std::iter::Iterator>::is_sorted` -- fixtures/reject/src/lib.rs:932:11: unsupported call to `std::ops::RangeTo::::contains::` -- fixtures/reject/src/lib.rs:932:32: unsupported call to ` as std::ops::RangeBounds>::contains::` -- fixtures/reject/src/lib.rs:937:9: unsupported call to `std::ops::Range::<&mut u8>::is_empty` -- fixtures/reject/src/lib.rs:1225:4: unsupported call to `core::num::::is_ascii_octdigit` -- fixtures/reject/src/lib.rs:1584:13: unsupported call to `core::str::::as_bytes_mut` -- fixtures/reject/src/lib.rs:1660:14: unsupported call to `std::ptr::addr_eq::<[u8; 4], [u8; 4]>` -- fixtures/reject/src/lib.rs:2224:2: unsupported call to `std::mem::size_of_val::` -- fixtures/reject/src/lib.rs:2308:13: unsupported call to `std::alloc::alloc_zeroed` -- fixtures/reject/src/lib.rs:2314:2: unsupported call to ` as std::fmt::Debug>::fmt` -- fixtures/reject/src/lib.rs:2314:25: unsupported call to ` as std::cmp::PartialEq>::eq` +- fixtures/reject/src/lib.rs:244:10: unsupported call to `::hash::` +- fixtures/reject/src/lib.rs:279:2: unsupported call to `std::borrow::Cow::<'_, [u8]>::is_borrowed` +- fixtures/reject/src/lib.rs:305:2: unsupported call to ` as std::cmp::PartialEq>::eq` +- fixtures/reject/src/lib.rs:370:17: unsupported call to ` as std::iter::Iterator>::sum::` +- fixtures/reject/src/lib.rs:370:38: unsupported call to ` as std::iter::Iterator>::sum::` +- fixtures/reject/src/lib.rs:375:4: unsupported call to `core::str::::parse::` +- fixtures/reject/src/lib.rs:473:2: unsupported call to `::eq` +- fixtures/reject/src/lib.rs:473:17: unsupported call to `std::any::TypeId::of::` +- fixtures/reject/src/lib.rs:701:15: unsupported call to ` as std::iter::Iterator>::is_sorted` +- fixtures/reject/src/lib.rs:919:11: unsupported call to `std::ops::RangeTo::::contains::` +- fixtures/reject/src/lib.rs:919:32: unsupported call to ` as std::ops::RangeBounds>::contains::` +- fixtures/reject/src/lib.rs:924:9: unsupported call to `std::ops::Range::<&mut u8>::is_empty` +- fixtures/reject/src/lib.rs:1212:4: unsupported call to `core::num::::is_ascii_octdigit` +- fixtures/reject/src/lib.rs:1571:13: unsupported call to `core::str::::as_bytes_mut` +- fixtures/reject/src/lib.rs:1647:14: unsupported call to `std::ptr::addr_eq::<[u8; 4], [u8; 4]>` +- fixtures/reject/src/lib.rs:2211:2: unsupported call to `std::mem::size_of_val::` +- fixtures/reject/src/lib.rs:2295:13: unsupported call to `std::alloc::alloc_zeroed` +- fixtures/reject/src/lib.rs:2301:2: unsupported call to ` as std::fmt::Debug>::fmt` +- fixtures/reject/src/lib.rs:2301:25: unsupported call to ` as std::cmp::PartialEq>::eq`
a reference through which a raw pointer may be made into `_` in `_`, which the crate may put another object in place of (15) -- fixtures/reject/src/lib.rs:1285:33: a reference through which a raw pointer may be made into `InArray` in `[InArray; 2]`, which the crate may put another object in place of -- fixtures/reject/src/lib.rs:1294:33: a reference through which a raw pointer may be made into `InTuple` in `(u16, InTuple)`, which the crate may put another object in place of -- fixtures/reject/src/lib.rs:1303:34: a reference through which a raw pointer may be made into `Mid` in `Outer`, which the crate may put another object in place of -- fixtures/reject/src/lib.rs:1324:33: a reference through which a raw pointer may be made into `Mid` in `Outer`, which the crate may put another object in place of -- fixtures/reject/src/lib.rs:1337:35: a reference through which a raw pointer may be made into `Mid` in `Outer`, which the crate may put another object in place of -- fixtures/reject/src/lib.rs:1346:35: a reference through which a raw pointer may be made into `InWritten` in `[InWritten; 1]`, which the crate may put another object in place of -- fixtures/reject/src/lib.rs:1905:20: a reference through which a raw pointer may be made into `std::cell::UnsafeCell` in `Replaced`, which the crate may put another object in place of -- fixtures/reject/src/lib.rs:1923:20: a reference through which a raw pointer may be made into `std::cell::UnsafeCell` in `Swapped`, which the crate may put another object in place of -- fixtures/reject/src/lib.rs:1941:20: a reference through which a raw pointer may be made into `std::cell::UnsafeCell` in `Taken`, which the crate may put another object in place of -- fixtures/reject/src/lib.rs:1960:20: a reference through which a raw pointer may be made into `std::cell::UnsafeCell` in `Assigned`, which the crate may put another object in place of -- fixtures/reject/src/lib.rs:1986:22: a reference through which a raw pointer may be made into `std::cell::UnsafeCell` in `Deeper`, which the crate may put another object in place of -- fixtures/reject/src/lib.rs:2010:20: a reference through which a raw pointer may be made into `std::cell::UnsafeCell` in `Dynamic`, which the crate may put another object in place of -- fixtures/reject/src/lib.rs:2026:15: a reference through which a raw pointer may be made into `std::cell::UnsafeCell` in `Closed`, which the crate may put another object in place of -- fixtures/reject/src/lib.rs:2039:20: a reference through which a raw pointer may be made into `std::cell::UnsafeCell` in `[std::cell::UnsafeCell; 2]`, which the crate may put another object in place of -- fixtures/reject/src/lib.rs:2085:20: a reference through which a raw pointer may be made into `Parked` in `Parking`, which the crate may put another object in place of +- fixtures/reject/src/lib.rs:1272:33: a reference through which a raw pointer may be made into `InArray` in `[InArray; 2]`, which the crate may put another object in place of +- fixtures/reject/src/lib.rs:1281:33: a reference through which a raw pointer may be made into `InTuple` in `(u16, InTuple)`, which the crate may put another object in place of +- fixtures/reject/src/lib.rs:1290:34: a reference through which a raw pointer may be made into `Mid` in `Outer`, which the crate may put another object in place of +- fixtures/reject/src/lib.rs:1311:33: a reference through which a raw pointer may be made into `Mid` in `Outer`, which the crate may put another object in place of +- fixtures/reject/src/lib.rs:1324:35: a reference through which a raw pointer may be made into `Mid` in `Outer`, which the crate may put another object in place of +- fixtures/reject/src/lib.rs:1333:35: a reference through which a raw pointer may be made into `InWritten` in `[InWritten; 1]`, which the crate may put another object in place of +- fixtures/reject/src/lib.rs:1892:20: a reference through which a raw pointer may be made into `std::cell::UnsafeCell` in `Replaced`, which the crate may put another object in place of +- fixtures/reject/src/lib.rs:1910:20: a reference through which a raw pointer may be made into `std::cell::UnsafeCell` in `Swapped`, which the crate may put another object in place of +- fixtures/reject/src/lib.rs:1928:20: a reference through which a raw pointer may be made into `std::cell::UnsafeCell` in `Taken`, which the crate may put another object in place of +- fixtures/reject/src/lib.rs:1947:20: a reference through which a raw pointer may be made into `std::cell::UnsafeCell` in `Assigned`, which the crate may put another object in place of +- fixtures/reject/src/lib.rs:1973:22: a reference through which a raw pointer may be made into `std::cell::UnsafeCell` in `Deeper`, which the crate may put another object in place of +- fixtures/reject/src/lib.rs:1997:20: a reference through which a raw pointer may be made into `std::cell::UnsafeCell` in `Dynamic`, which the crate may put another object in place of +- fixtures/reject/src/lib.rs:2013:15: a reference through which a raw pointer may be made into `std::cell::UnsafeCell` in `Closed`, which the crate may put another object in place of +- fixtures/reject/src/lib.rs:2026:20: a reference through which a raw pointer may be made into `std::cell::UnsafeCell` in `[std::cell::UnsafeCell; 2]`, which the crate may put another object in place of +- fixtures/reject/src/lib.rs:2072:20: a reference through which a raw pointer may be made into `Parked` in `Parking`, which the crate may put another object in place of
a reference to `_`, through which a raw pointer may be made, in a variable assigned again while that pointer may point there (15) -- fixtures/reject/src/lib.rs:1603:18: a reference to `std::cell::UnsafeCell`, through which a raw pointer may be made, in a variable assigned again while that pointer may point there -- fixtures/reject/src/lib.rs:1681:26: a reference to `[u8; 4]`, through which a raw pointer may be made, in a variable assigned again while that pointer may point there -- fixtures/reject/src/lib.rs:1699:22: a reference to `Behind`, through which a raw pointer may be made, in a variable assigned again while that pointer may point there -- fixtures/reject/src/lib.rs:1714:16: a reference to `Unboxed`, through which a raw pointer may be made, in a variable assigned again while that pointer may point there -- fixtures/reject/src/lib.rs:1735:18: a reference to `Deep`, through which a raw pointer may be made, in a variable assigned again while that pointer may point there -- fixtures/reject/src/lib.rs:1757:21: a reference to `Slotted`, through which a raw pointer may be made, in a variable assigned again while that pointer may point there -- fixtures/reject/src/lib.rs:1776:20: a reference to `Shared`, through which a raw pointer may be made, in a variable assigned again while that pointer may point there -- fixtures/reject/src/lib.rs:1793:20: a reference to `Inside`, through which a raw pointer may be made, in a variable assigned again while that pointer may point there -- fixtures/reject/src/lib.rs:1806:26: a reference to `Inside`, through which a raw pointer may be made, in a variable assigned again while that pointer may point there -- fixtures/reject/src/lib.rs:1821:22: a reference to `Compared`, through which a raw pointer may be made, in a variable assigned again while that pointer may point there -- fixtures/reject/src/lib.rs:1838:22: a reference to `Enclosing`, through which a raw pointer may be made, in a variable assigned again while that pointer may point there -- fixtures/reject/src/lib.rs:1854:17: a reference to `Chosen`, through which a raw pointer may be made, in a variable assigned again while that pointer may point there -- fixtures/reject/src/lib.rs:1867:19: a reference to `[u8; 4]`, through which a raw pointer may be made, in a variable assigned again while that pointer may point there -- fixtures/reject/src/lib.rs:1882:21: a reference to `Wrapped>`, through which a raw pointer may be made, in a variable assigned again while that pointer may point there -- fixtures/reject/src/lib.rs:2056:13: a reference to `std::option::Option>`, through which a raw pointer may be made, in a variable assigned again while that pointer may point there +- fixtures/reject/src/lib.rs:1590:18: a reference to `std::cell::UnsafeCell`, through which a raw pointer may be made, in a variable assigned again while that pointer may point there +- fixtures/reject/src/lib.rs:1668:26: a reference to `[u8; 4]`, through which a raw pointer may be made, in a variable assigned again while that pointer may point there +- fixtures/reject/src/lib.rs:1686:22: a reference to `Behind`, through which a raw pointer may be made, in a variable assigned again while that pointer may point there +- fixtures/reject/src/lib.rs:1701:16: a reference to `Unboxed`, through which a raw pointer may be made, in a variable assigned again while that pointer may point there +- fixtures/reject/src/lib.rs:1722:18: a reference to `Deep`, through which a raw pointer may be made, in a variable assigned again while that pointer may point there +- fixtures/reject/src/lib.rs:1744:21: a reference to `Slotted`, through which a raw pointer may be made, in a variable assigned again while that pointer may point there +- fixtures/reject/src/lib.rs:1763:20: a reference to `Shared`, through which a raw pointer may be made, in a variable assigned again while that pointer may point there +- fixtures/reject/src/lib.rs:1780:20: a reference to `Inside`, through which a raw pointer may be made, in a variable assigned again while that pointer may point there +- fixtures/reject/src/lib.rs:1793:26: a reference to `Inside`, through which a raw pointer may be made, in a variable assigned again while that pointer may point there +- fixtures/reject/src/lib.rs:1808:22: a reference to `Compared`, through which a raw pointer may be made, in a variable assigned again while that pointer may point there +- fixtures/reject/src/lib.rs:1825:22: a reference to `Enclosing`, through which a raw pointer may be made, in a variable assigned again while that pointer may point there +- fixtures/reject/src/lib.rs:1841:17: a reference to `Chosen`, through which a raw pointer may be made, in a variable assigned again while that pointer may point there +- fixtures/reject/src/lib.rs:1854:19: a reference to `[u8; 4]`, through which a raw pointer may be made, in a variable assigned again while that pointer may point there +- fixtures/reject/src/lib.rs:1869:21: a reference to `Wrapped>`, through which a raw pointer may be made, in a variable assigned again while that pointer may point there +- fixtures/reject/src/lib.rs:2043:13: a reference to `std::option::Option>`, through which a raw pointer may be made, in a variable assigned again while that pointer may point there
a cast from a pointer to `_` to one to `_`, which reads the bytes of one type as another (6) -- fixtures/reject/src/lib.rs:503:27: a cast from a pointer to `u32` to one to `u8`, which reads the bytes of one type as another -- fixtures/reject/src/lib.rs:2125:13: a cast from a pointer to `u32` to one to `[u32; 2]`, which reads the bytes of one type as another -- fixtures/reject/src/lib.rs:2280:15: a cast from a pointer to `u8` to one to `u32`, which reads the bytes of one type as another -- fixtures/reject/src/lib.rs:2281:16: a cast from a pointer to `u8` to one to `Halves`, which reads the bytes of one type as another -- fixtures/reject/src/lib.rs:2283:15: a cast from a pointer to `u32` to one to `u8`, which reads the bytes of one type as another -- fixtures/reject/src/lib.rs:2308:12: a cast from a pointer to `u8` to one to `u32`, which reads the bytes of one type as another +- fixtures/reject/src/lib.rs:490:27: a cast from a pointer to `u32` to one to `u8`, which reads the bytes of one type as another +- fixtures/reject/src/lib.rs:2112:13: a cast from a pointer to `u32` to one to `[u32; 2]`, which reads the bytes of one type as another +- fixtures/reject/src/lib.rs:2267:15: a cast from a pointer to `u8` to one to `u32`, which reads the bytes of one type as another +- fixtures/reject/src/lib.rs:2268:16: a cast from a pointer to `u8` to one to `Halves`, which reads the bytes of one type as another +- fixtures/reject/src/lib.rs:2270:15: a cast from a pointer to `u32` to one to `u8`, which reads the bytes of one type as another +- fixtures/reject/src/lib.rs:2295:12: a cast from a pointer to `u8` to one to `u32`, which reads the bytes of one type as another
`_` with a mutable reference to a value JS copies, which its mapping would copy (5) -- fixtures/reject/src/lib.rs:1183:22: `std::iter::once` with a mutable reference to a value JS copies, which its mapping would copy -- fixtures/reject/src/lib.rs:1585:13: `core::str::::get_unchecked_mut` with a mutable reference to a value JS copies, which its mapping would copy -- fixtures/reject/src/lib.rs:1590:20: `std::str::from_utf8_mut` with a mutable reference to a value JS copies, which its mapping would copy -- fixtures/reject/src/lib.rs:2065:4: `std::collections::LinkedList::::retain` with a mutable reference to a value JS copies, which its mapping would copy -- fixtures/reject/src/lib.rs:2067:2: `std::default::Default::default` with a mutable reference to a value JS copies, which its mapping would copy +- fixtures/reject/src/lib.rs:1170:22: `std::iter::once` with a mutable reference to a value JS copies, which its mapping would copy +- fixtures/reject/src/lib.rs:1572:13: `core::str::::get_unchecked_mut` with a mutable reference to a value JS copies, which its mapping would copy +- fixtures/reject/src/lib.rs:1577:20: `std::str::from_utf8_mut` with a mutable reference to a value JS copies, which its mapping would copy +- fixtures/reject/src/lib.rs:2052:4: `std::collections::LinkedList::::retain` with a mutable reference to a value JS copies, which its mapping would copy +- fixtures/reject/src/lib.rs:2054:2: `std::default::Default::default` with a mutable reference to a value JS copies, which its mapping would copy
a raw pointer to `_` in an element, a payload, or a union field, which is not supported yet (5) -- fixtures/reject/src/lib.rs:627:10: a raw pointer to `(u32, u32)` in an element, a payload, or a union field, which is not supported yet -- fixtures/reject/src/lib.rs:1674:15: a raw pointer to `[u8; 3]` in an element, a payload, or a union field, which is not supported yet -- fixtures/reject/src/lib.rs:1674:18: a raw pointer to `[u8; 3]` in an element, a payload, or a union field, which is not supported yet -- fixtures/reject/src/lib.rs:1674:37: a raw pointer to `[u8; 2]` in an element, a payload, or a union field, which is not supported yet -- fixtures/reject/src/lib.rs:1674:44: a raw pointer to `[u8; 2]` in an element, a payload, or a union field, which is not supported yet +- fixtures/reject/src/lib.rs:614:10: a raw pointer to `(u32, u32)` in an element, a payload, or a union field, which is not supported yet +- fixtures/reject/src/lib.rs:1661:15: a raw pointer to `[u8; 3]` in an element, a payload, or a union field, which is not supported yet +- fixtures/reject/src/lib.rs:1661:18: a raw pointer to `[u8; 3]` in an element, a payload, or a union field, which is not supported yet +- fixtures/reject/src/lib.rs:1661:37: a raw pointer to `[u8; 2]` in an element, a payload, or a union field, which is not supported yet +- fixtures/reject/src/lib.rs:1661:44: a raw pointer to `[u8; 2]` in an element, a payload, or a union field, which is not supported yet
memory from `alloc` cast to pointers to `_` and to `_`, which reads the bytes of one type as another (5) -- fixtures/reject/src/lib.rs:2294:7: memory from `alloc` cast to pointers to `u32` and to `i32`, which reads the bytes of one type as another -- fixtures/reject/src/lib.rs:2295:11: memory from `alloc` cast to pointers to `i32` and to `u32`, which reads the bytes of one type as another -- fixtures/reject/src/lib.rs:2297:17: memory from `alloc` cast to pointers to `i32` and to `u32`, which reads the bytes of one type as another -- fixtures/reject/src/lib.rs:2298:21: memory from `alloc` cast to pointers to `u32` and to `i32`, which reads the bytes of one type as another -- fixtures/reject/src/lib.rs:2300:17: memory from `alloc` cast to pointers to `i32` and to `u32`, which reads the bytes of one type as another +- fixtures/reject/src/lib.rs:2281:7: memory from `alloc` cast to pointers to `u32` and to `i32`, which reads the bytes of one type as another +- fixtures/reject/src/lib.rs:2282:11: memory from `alloc` cast to pointers to `i32` and to `u32`, which reads the bytes of one type as another +- fixtures/reject/src/lib.rs:2284:17: memory from `alloc` cast to pointers to `i32` and to `u32`, which reads the bytes of one type as another +- fixtures/reject/src/lib.rs:2285:21: memory from `alloc` cast to pointers to `u32` and to `i32`, which reads the bytes of one type as another +- fixtures/reject/src/lib.rs:2287:17: memory from `alloc` cast to pointers to `i32` and to `u32`, which reads the bytes of one type as another
a variant of `_`, which is not supported: either is the same JS string (4) -- fixtures/reject/src/lib.rs:280:2: a variant of `std::borrow::Cow<'_, str>`, which is not supported: either is the same JS string -- fixtures/reject/src/lib.rs:281:30: a variant of `std::borrow::Cow<'_, str>`, which is not supported: either is the same JS string -- fixtures/reject/src/lib.rs:282:27: a variant of `std::borrow::Cow<'_, str>`, which is not supported: either is the same JS string -- fixtures/reject/src/lib.rs:287:2: a variant of `std::borrow::Cow<'_, str>`, which is not supported: either is the same JS string +- fixtures/reject/src/lib.rs:267:2: a variant of `std::borrow::Cow<'_, str>`, which is not supported: either is the same JS string +- fixtures/reject/src/lib.rs:268:30: a variant of `std::borrow::Cow<'_, str>`, which is not supported: either is the same JS string +- fixtures/reject/src/lib.rs:269:27: a variant of `std::borrow::Cow<'_, str>`, which is not supported: either is the same JS string +- fixtures/reject/src/lib.rs:274:2: a variant of `std::borrow::Cow<'_, str>`, which is not supported: either is the same JS string
@@ -659,56 +653,56 @@ The type or module each refused type or path belongs to. - fixtures/reject/src/lib.rs:83:2: an assignment through a reference to `std::sync::MutexGuard<'_, u8>` - fixtures/reject/src/lib.rs:107:2: an assignment through a reference to `std::pin::Pin>>` -- fixtures/reject/src/lib.rs:185:2: an assignment through a reference to `std::pin::Pin<&mut Noisy>` -- fixtures/reject/src/lib.rs:2261:2: an assignment through a reference to `std::sync::LazyLock` +- fixtures/reject/src/lib.rs:172:2: an assignment through a reference to `std::pin::Pin<&mut Noisy>` +- fixtures/reject/src/lib.rs:2248:2: an assignment through a reference to `std::sync::LazyLock`
`_` of `_`, whose `clone_from` is its own, which is not supported yet (3) - fixtures/reject/src/lib.rs:21:4: `slice::fill` of `Reused`, whose `clone_from` is its own, which is not supported yet -- fixtures/reject/src/lib.rs:242:4: `slice::clone_from_slice` of `Reused`, whose `clone_from` is its own, which is not supported yet -- fixtures/reject/src/lib.rs:2219:4: `Clone::clone_from` of `std::vec::Vec`, whose `clone_from` is its own, which is not supported yet +- fixtures/reject/src/lib.rs:229:4: `slice::clone_from_slice` of `Reused`, whose `clone_from` is its own, which is not supported yet +- fixtures/reject/src/lib.rs:2206:4: `Clone::clone_from` of `std::vec::Vec`, whose `clone_from` is its own, which is not supported yet
a byte of memory from `alloc`, which JS keeps as the values a cast of its pointer types it as (3) -- fixtures/reject/src/lib.rs:516:3: a byte of memory from `alloc`, which JS keeps as the values a cast of its pointer types it as -- fixtures/reject/src/lib.rs:517:11: a byte of memory from `alloc`, which JS keeps as the values a cast of its pointer types it as -- fixtures/reject/src/lib.rs:2279:3: a byte of memory from `alloc`, which JS keeps as the values a cast of its pointer types it as +- fixtures/reject/src/lib.rs:503:3: a byte of memory from `alloc`, which JS keeps as the values a cast of its pointer types it as +- fixtures/reject/src/lib.rs:504:11: a byte of memory from `alloc`, which JS keeps as the values a cast of its pointer types it as +- fixtures/reject/src/lib.rs:2266:3: a byte of memory from `alloc`, which JS keeps as the values a cast of its pointer types it as
a copy between pointers to `_`, which JS keeps as an object that knows no array it is in (3) -- fixtures/reject/src/lib.rs:1658:3: a copy between pointers to `[u8; 4]`, which JS keeps as an object that knows no array it is in -- fixtures/reject/src/lib.rs:1659:3: a copy between pointers to `[u8; 4]`, which JS keeps as an object that knows no array it is in -- fixtures/reject/src/lib.rs:2110:3: a copy between pointers to `(u8, u8)`, which JS keeps as an object that knows no array it is in +- fixtures/reject/src/lib.rs:1645:3: a copy between pointers to `[u8; 4]`, which JS keeps as an object that knows no array it is in +- fixtures/reject/src/lib.rs:1646:3: a copy between pointers to `[u8; 4]`, which JS keeps as an object that knows no array it is in +- fixtures/reject/src/lib.rs:2097:3: a copy between pointers to `(u8, u8)`, which JS keeps as an object that knows no array it is in
a copy of a closure that changes what it captured (3) -- fixtures/reject/src/lib.rs:195:14: a copy of a closure that changes what it captured -- fixtures/reject/src/lib.rs:456:14: a copy of a closure that changes what it captured -- fixtures/reject/src/lib.rs:457:14: a copy of a closure that changes what it captured +- fixtures/reject/src/lib.rs:182:14: a copy of a closure that changes what it captured +- fixtures/reject/src/lib.rs:443:14: a copy of a closure that changes what it captured +- fixtures/reject/src/lib.rs:444:14: a copy of a closure that changes what it captured
a slice or a cell of a mutable reference to `_` that names no place, which a whole write would replace only there (3) -- fixtures/reject/src/lib.rs:2214:2: a slice or a cell of a mutable reference to `Reused` that names no place, which a whole write would replace only there -- fixtures/reject/src/lib.rs:2256:3: a slice or a cell of a mutable reference to `std::cell::LazyCell` that names no place, which a whole write would replace only there -- fixtures/reject/src/lib.rs:2267:2: a slice or a cell of a mutable reference to `std::thread::LocalKey` that names no place, which a whole write would replace only there +- fixtures/reject/src/lib.rs:2201:2: a slice or a cell of a mutable reference to `Reused` that names no place, which a whole write would replace only there +- fixtures/reject/src/lib.rs:2243:3: a slice or a cell of a mutable reference to `std::cell::LazyCell` that names no place, which a whole write would replace only there +- fixtures/reject/src/lib.rs:2254:2: a slice or a cell of a mutable reference to `std::thread::LocalKey` that names no place, which a whole write would replace only there
an offset of a pointer to `_`, which JS keeps as an object that knows no array it is in (3) -- fixtures/reject/src/lib.rs:1661:56: an offset of a pointer to `[u8; 4]`, which JS keeps as an object that knows no array it is in -- fixtures/reject/src/lib.rs:1661:73: an offset of a pointer to `[u8; 4]`, which JS keeps as an object that knows no array it is in -- fixtures/reject/src/lib.rs:2109:13: an offset of a pointer to `(u8, u8)`, which JS keeps as an object that knows no array it is in +- fixtures/reject/src/lib.rs:1648:56: an offset of a pointer to `[u8; 4]`, which JS keeps as an object that knows no array it is in +- fixtures/reject/src/lib.rs:1648:73: an offset of a pointer to `[u8; 4]`, which JS keeps as an object that knows no array it is in +- fixtures/reject/src/lib.rs:2096:13: an offset of a pointer to `(u8, u8)`, which JS keeps as an object that knows no array it is in
@@ -738,7 +732,7 @@ The type or module each refused type or path belongs to.
`_` of `_`, whose `None` is `rt.None`, which is not supported yet (2) - fixtures/reject/src/lib.rs:37:4: `Iterator::scan` of `Option>`, whose `None` is `rt.None`, which is not supported yet -- fixtures/reject/src/lib.rs:201:11: `Iterator::scan` of `Option<()>`, whose `None` is `rt.None`, which is not supported yet +- fixtures/reject/src/lib.rs:188:11: `Iterator::scan` of `Option<()>`, whose `None` is `rt.None`, which is not supported yet
@@ -751,57 +745,57 @@ The type or module each refused type or path belongs to.
`_`, a trait object of the generic trait `_`, which is not supported yet (2) -- fixtures/reject/src/lib.rs:406:23: `dyn Scaled`, a trait object of the generic trait `Scaled`, which is not supported yet -- fixtures/reject/src/lib.rs:407:4: `dyn Scaled`, a trait object of the generic trait `Scaled`, which is not supported yet +- fixtures/reject/src/lib.rs:393:23: `dyn Scaled`, a trait object of the generic trait `Scaled`, which is not supported yet +- fixtures/reject/src/lib.rs:394:4: `dyn Scaled`, a trait object of the generic trait `Scaled`, which is not supported yet
`offset_from` between a pointer into a value in no array and one into a value in no array, which JS keeps in different arrays (2) -- fixtures/reject/src/lib.rs:2173:5: `offset_from` between a pointer into a value in no array and one into a value in no array, which JS keeps in different arrays -- fixtures/reject/src/lib.rs:2174:26: `offset_from` between a pointer into a value in no array and one into a value in no array, which JS keeps in different arrays +- fixtures/reject/src/lib.rs:2160:5: `offset_from` between a pointer into a value in no array and one into a value in no array, which JS keeps in different arrays +- fixtures/reject/src/lib.rs:2161:26: `offset_from` between a pointer into a value in no array and one into a value in no array, which JS keeps in different arrays
`offset_from` between a pointer into an array of this body's own and one into an array of this body's own, which JS keeps in different arrays (2) -- fixtures/reject/src/lib.rs:2175:24: `offset_from` between a pointer into an array of this body's own and one into an array of this body's own, which JS keeps in different arrays -- fixtures/reject/src/lib.rs:2176:23: `offset_from` between a pointer into an array of this body's own and one into an array of this body's own, which JS keeps in different arrays +- fixtures/reject/src/lib.rs:2162:24: `offset_from` between a pointer into an array of this body's own and one into an array of this body's own, which JS keeps in different arrays +- fixtures/reject/src/lib.rs:2163:23: `offset_from` between a pointer into an array of this body's own and one into an array of this body's own, which JS keeps in different arrays
a pointer reaching past a shared slice JS copies, which JS keeps apart from what holds it in Rust (2) -- fixtures/reject/src/lib.rs:2198:18: a pointer reaching past a shared slice JS copies, which JS keeps apart from what holds it in Rust -- fixtures/reject/src/lib.rs:2201:21: a pointer reaching past a shared slice JS copies, which JS keeps apart from what holds it in Rust +- fixtures/reject/src/lib.rs:2185:18: a pointer reaching past a shared slice JS copies, which JS keeps apart from what holds it in Rust +- fixtures/reject/src/lib.rs:2188:21: a pointer reaching past a shared slice JS copies, which JS keeps apart from what holds it in Rust
a raw or mutable slice of a byte in no array of bytes (2) -- fixtures/reject/src/lib.rs:2184:12: a raw or mutable slice of a byte in no array of bytes -- fixtures/reject/src/lib.rs:2185:19: a raw or mutable slice of a byte in no array of bytes +- fixtures/reject/src/lib.rs:2171:12: a raw or mutable slice of a byte in no array of bytes +- fixtures/reject/src/lib.rs:2172:19: a raw or mutable slice of a byte in no array of bytes
a raw pointer to a place of `()`, which has no address of its own (2) -- fixtures/reject/src/lib.rs:676:15: a raw pointer to a place of `()`, which has no address of its own -- fixtures/reject/src/lib.rs:676:29: a raw pointer to a place of `()`, which has no address of its own +- fixtures/reject/src/lib.rs:663:15: a raw pointer to a place of `()`, which has no address of its own +- fixtures/reject/src/lib.rs:663:29: a raw pointer to a place of `()`, which has no address of its own
an upcast from `_` to `_`, which is not supported yet (2) -- fixtures/reject/src/lib.rs:474:32: an upcast from `dyn Keyed` to `dyn std::any::Any`, which is not supported yet -- fixtures/reject/src/lib.rs:480:46: an upcast from `dyn Keyed` to `dyn std::any::Any`, which is not supported yet +- fixtures/reject/src/lib.rs:461:32: an upcast from `dyn Keyed` to `dyn std::any::Any`, which is not supported yet +- fixtures/reject/src/lib.rs:467:46: an upcast from `dyn Keyed` to `dyn std::any::Any`, which is not supported yet
comparing pointers to `_`, each a place JS makes of its own (2) -- fixtures/reject/src/lib.rs:544:2: comparing pointers to `u32`, each a place JS makes of its own -- fixtures/reject/src/lib.rs:2093:2: comparing pointers to `u32`, each a place JS makes of its own +- fixtures/reject/src/lib.rs:531:2: comparing pointers to `u32`, each a place JS makes of its own +- fixtures/reject/src/lib.rs:2080:2: comparing pointers to `u32`, each a place JS makes of its own
@@ -814,45 +808,45 @@ The type or module each refused type or path belongs to.
passing `_`, which drops, to `_`, which is not supported yet (2) -- fixtures/reject/src/lib.rs:275:4: passing `{closure@fixtures/reject/src/lib.rs:275:13: 275:27}`, which drops, to `str::contains`, which is not supported yet -- fixtures/reject/src/lib.rs:732:4: passing `{closure@fixtures/reject/src/lib.rs:732:11: 732:19}`, which drops, to `String::retain`, which is not supported yet +- fixtures/reject/src/lib.rs:262:4: passing `{closure@fixtures/reject/src/lib.rs:262:13: 262:27}`, which drops, to `str::contains`, which is not supported yet +- fixtures/reject/src/lib.rs:719:4: passing `{closure@fixtures/reject/src/lib.rs:719:11: 719:19}`, which drops, to `String::retain`, which is not supported yet
unsupported type `_` from another crate (2) -- fixtures/reject/src/lib.rs:387:32: unsupported type `std::net::AddrParseError` from another crate -- fixtures/reject/src/lib.rs:387:32: unsupported type `std::net::Ipv4Addr` from another crate +- fixtures/reject/src/lib.rs:374:32: unsupported type `std::net::AddrParseError` from another crate +- fixtures/reject/src/lib.rs:374:32: unsupported type `std::net::Ipv4Addr` from another crate
`Buf::copy_to_bytes` of `_`, a value JS copies, which is not supported (1) -- fixtures/reject/src/lib.rs:709:2: `Buf::copy_to_bytes` of `Blank`, a value JS copies, which is not supported +- fixtures/reject/src/lib.rs:696:2: `Buf::copy_to_bytes` of `Blank`, a value JS copies, which is not supported
`BufMut::put` of `_` into a `BytesMut`, which advances it by the room left in a capacity that depends on whether the other handles of its storage dropped, which is not supported (1) -- fixtures/reject/src/lib.rs:343:2: `BufMut::put` of `Counted` into a `BytesMut`, which advances it by the room left in a capacity that depends on whether the other handles of its storage dropped, which is not supported +- fixtures/reject/src/lib.rs:330:2: `BufMut::put` of `Counted` into a `BytesMut`, which advances it by the room left in a capacity that depends on whether the other handles of its storage dropped, which is not supported
`BufMut::put` of `_` into a `BytesMut`, which picks the methods it calls by a capacity that depends on whether the other handles of its storage dropped, which is not supported (1) -- fixtures/reject/src/lib.rs:338:2: `BufMut::put` of `Counted` into a `BytesMut`, which picks the methods it calls by a capacity that depends on whether the other handles of its storage dropped, which is not supported +- fixtures/reject/src/lib.rs:325:2: `BufMut::put` of `Counted` into a `BytesMut`, which picks the methods it calls by a capacity that depends on whether the other handles of its storage dropped, which is not supported
`Bytes::from_owner` of `_`, which would drop with the last clone of what it makes, which is not supported (1) -- fixtures/reject/src/lib.rs:323:2: `Bytes::from_owner` of `std::sync::Arc<[u8]>`, which would drop with the last clone of what it makes, which is not supported +- fixtures/reject/src/lib.rs:310:2: `Bytes::from_owner` of `std::sync::Arc<[u8]>`, which would drop with the last clone of what it makes, which is not supported
`Extend` of `_` by `_`, whose `_` of `_` is not supported yet (1) -- fixtures/reject/src/lib.rs:1220:31: `Extend` of `(std::vec::Vec, Tens)` by `(u8, u8)`, whose `Tens` of `u8` is not supported yet +- fixtures/reject/src/lib.rs:1207:31: `Extend` of `(std::vec::Vec, Tens)` by `(u8, u8)`, whose `Tens` of `u8` is not supported yet
@@ -876,37 +870,37 @@ The type or module each refused type or path belongs to.
`_` is not supported: its field `_` is `_`, typed `_`, whose `Pending` would be `rt.OuterPending` as `_` (1) -- fixtures/reject/src/lib.rs:444:2: `Waiting>` is not supported: its field `poll` is `Poll`, typed `rt.Poll`, whose `Pending` would be `rt.OuterPending` as `Poll>` +- fixtures/reject/src/lib.rs:431:2: `Waiting>` is not supported: its field `poll` is `Poll`, typed `rt.Poll`, whose `Pending` would be `rt.OuterPending` as `Poll>`
`_` of `_` by `_`, which is not supported yet (1) -- fixtures/reject/src/lib.rs:224:6: `HashMap::contains_key` of `std::collections::HashMap` by `u8`, which is not supported yet +- fixtures/reject/src/lib.rs:211:6: `HashMap::contains_key` of `std::collections::HashMap` by `u8`, which is not supported yet
`_` of `_`, which is not supported yet (1) -- fixtures/reject/src/lib.rs:486:4: `std::any::Any::type_id` of `dyn std::any::Any`, which is not supported yet +- fixtures/reject/src/lib.rs:473:4: `std::any::Any::type_id` of `dyn std::any::Any`, which is not supported yet
`_`, which reads a capacity that depends on whether the other handles of its storage dropped, which is not supported (1) -- fixtures/reject/src/lib.rs:332:6: `BytesMut::capacity`, which reads a capacity that depends on whether the other handles of its storage dropped, which is not supported +- fixtures/reject/src/lib.rs:319:6: `BytesMut::capacity`, which reads a capacity that depends on whether the other handles of its storage dropped, which is not supported
`clone_from` of `_`, whose items' `clone_from` is their own, which is not supported yet (1) -- fixtures/reject/src/lib.rs:2066:4: `clone_from` of `std::collections::LinkedList`, whose items' `clone_from` is their own, which is not supported yet +- fixtures/reject/src/lib.rs:2053:4: `clone_from` of `std::collections::LinkedList`, whose items' `clone_from` is their own, which is not supported yet
`collect` of `_`, which sorts by `_`'s own `Ord`, of entries that drop, which is not supported yet (1) -- fixtures/reject/src/lib.rs:903:22: `collect` of `std::collections::BTreeMap, Noisy>`, which sorts by `std::cell::Cell`'s own `Ord`, of entries that drop, which is not supported yet +- fixtures/reject/src/lib.rs:890:22: `collect` of `std::collections::BTreeMap, Noisy>`, which sorts by `std::cell::Cell`'s own `Ord`, of entries that drop, which is not supported yet
@@ -918,37 +912,25 @@ The type or module each refused type or path belongs to.
`offset_from` between a pointer into a shared slice JS copies and one into a value in no array, which JS keeps in different arrays (1) -- fixtures/reject/src/lib.rs:2178:21: `offset_from` between a pointer into a shared slice JS copies and one into a value in no array, which JS keeps in different arrays +- fixtures/reject/src/lib.rs:2165:21: `offset_from` between a pointer into a shared slice JS copies and one into a value in no array, which JS keeps in different arrays
`offset_from` between a pointer into a shared slice JS copies and one into an array of this body's own, which JS keeps in different arrays (1) -- fixtures/reject/src/lib.rs:2177:20: `offset_from` between a pointer into a shared slice JS copies and one into an array of this body's own, which JS keeps in different arrays +- fixtures/reject/src/lib.rs:2164:20: `offset_from` between a pointer into a shared slice JS copies and one into an array of this body's own, which JS keeps in different arrays
`offset_from` of pointers to `()`, which has no bytes (1) -- fixtures/reject/src/lib.rs:2120:13: `offset_from` of pointers to `()`, which has no bytes +- fixtures/reject/src/lib.rs:2107:13: `offset_from` of pointers to `()`, which has no bytes
`offset_from` of pointers to `_`, which JS keeps as an object that knows no array it is in (1) -- fixtures/reject/src/lib.rs:2113:36: `offset_from` of pointers to `(u8, u8)`, which JS keeps as an object that knows no array it is in - -
- -
a `collect` in place of `_`, a zip std reads by index, holding values that drop, which is not supported yet (1) - -- fixtures/reject/src/lib.rs:180:40: a `collect` in place of `std::iter::Map, {closure@fixtures/reject/src/lib.rs:179:32: 179:40}>, std::ops::Range>, {closure@fixtures/reject/src/lib.rs:180:24: 180:32}>`, a zip std reads by index, holding values that drop, which is not supported yet - -
- -
a `skip` of `_`, a zip std reads by index, of items that drop, which is not supported yet (1) - -- fixtures/reject/src/lib.rs:173:8: a `skip` of `std::iter::Zip, {closure@fixtures/reject/src/lib.rs:172:27: 172:31}>, std::iter::Map, {closure@fixtures/reject/src/lib.rs:172:59: 172:63}>>`, a zip std reads by index, of items that drop, which is not supported yet +- fixtures/reject/src/lib.rs:2100:36: `offset_from` of pointers to `(u8, u8)`, which JS keeps as an object that knows no array it is in
@@ -960,37 +942,37 @@ The type or module each refused type or path belongs to.
a coercion to `_` (1) -- fixtures/reject/src/lib.rs:247:2: a coercion to `std::sync::Arc<[u8]>` +- fixtures/reject/src/lib.rs:234:2: a coercion to `std::sync::Arc<[u8]>`
a coercion to `_`, which is not supported yet (1) -- fixtures/reject/src/lib.rs:433:30: a coercion to `&Tail`, which is not supported yet +- fixtures/reject/src/lib.rs:420:30: a coercion to `&Tail`, which is not supported yet
a constant of type `_` (1) -- fixtures/reject/src/lib.rs:2314:34: a constant of type `std::mem::ManuallyDrop` +- fixtures/reject/src/lib.rs:2301:34: a constant of type `std::mem::ManuallyDrop`
a constant of type `_`, a pointer into memory translation can't name (1) -- fixtures/reject/src/lib.rs:726:3: a constant of type `&u32`, a pointer into memory translation can't name +- fixtures/reject/src/lib.rs:713:3: a constant of type `&u32`, a pointer into memory translation can't name
a copy reaching past a shared slice JS copies, which JS keeps apart from what holds it in Rust (1) -- fixtures/reject/src/lib.rs:2196:3: a copy reaching past a shared slice JS copies, which JS keeps apart from what holds it in Rust +- fixtures/reject/src/lib.rs:2183:3: a copy reaching past a shared slice JS copies, which JS keeps apart from what holds it in Rust
a dangling pointer to `_`, a value of no bytes made of more than structs and tuples (1) -- fixtures/reject/src/lib.rs:685:11: a dangling pointer to `Only`, a value of no bytes made of more than structs and tuples +- fixtures/reject/src/lib.rs:672:11: a dangling pointer to `Only`, a value of no bytes made of more than structs and tuples
@@ -1002,13 +984,13 @@ The type or module each refused type or path belongs to.
a mapped guard of `_`, which JS can't write in place (1) -- fixtures/reject/src/lib.rs:2100:10: a mapped guard of `{closure@fixtures/reject/src/lib.rs:2099:38: 2099:50}`, which JS can't write in place +- fixtures/reject/src/lib.rs:2087:10: a mapped guard of `{closure@fixtures/reject/src/lib.rs:2086:38: 2086:50}`, which JS can't write in place
a mutable reference into a `Result`'s payload, passed on or kept (1) -- fixtures/reject/src/lib.rs:311:12: a mutable reference into a `Result`'s payload, passed on or kept +- fixtures/reject/src/lib.rs:298:12: a mutable reference into a `Result`'s payload, passed on or kept
@@ -1020,25 +1002,25 @@ The type or module each refused type or path belongs to.
a pointer into `_`, which JS keeps as an object that knows no array it is in (1) -- fixtures/reject/src/lib.rs:2107:12: a pointer into `(u8, u8)`, which JS keeps as an object that knows no array it is in +- fixtures/reject/src/lib.rs:2094:12: a pointer into `(u8, u8)`, which JS keeps as an object that knows no array it is in
a pointer into an array of `_`, which JS keeps as an object that knows no array it is in (1) -- fixtures/reject/src/lib.rs:2112:30: a pointer into an array of `(u8, u8)`, which JS keeps as an object that knows no array it is in +- fixtures/reject/src/lib.rs:2099:30: a pointer into an array of `(u8, u8)`, which JS keeps as an object that knows no array it is in
a pointer reaching past a value in no array, which JS keeps apart from what holds it in Rust (1) -- fixtures/reject/src/lib.rs:2200:27: a pointer reaching past a value in no array, which JS keeps apart from what holds it in Rust +- fixtures/reject/src/lib.rs:2187:27: a pointer reaching past a value in no array, which JS keeps apart from what holds it in Rust
a pointer's address, which JS has no counterpart of (1) -- fixtures/reject/src/lib.rs:508:17: a pointer's address, which JS has no counterpart of +- fixtures/reject/src/lib.rs:495:17: a pointer's address, which JS has no counterpart of
@@ -1050,13 +1032,13 @@ The type or module each refused type or path belongs to.
a raw pointer to `_` behind a reference, which is the object and not where it is kept (1) -- fixtures/reject/src/lib.rs:525:10: a raw pointer to `std::vec::Vec` behind a reference, which is the object and not where it is kept +- fixtures/reject/src/lib.rs:512:10: a raw pointer to `std::vec::Vec` behind a reference, which is the object and not where it is kept
a reference through which a raw pointer may be made into `_` in an element, a payload, or a union field, which is not supported yet (1) -- fixtures/reject/src/lib.rs:1312:11: a reference through which a raw pointer may be made into `InPayload` in an element, a payload, or a union field, which is not supported yet +- fixtures/reject/src/lib.rs:1299:11: a reference through which a raw pointer may be made into `InPayload` in an element, a payload, or a union field, which is not supported yet
@@ -1068,31 +1050,31 @@ The type or module each refused type or path belongs to.
a slice from a pointer to `_`, which JS keeps as an object that knows no array it is in (1) -- fixtures/reject/src/lib.rs:2111:11: a slice from a pointer to `(u8, u8)`, which JS keeps as an object that knows no array it is in +- fixtures/reject/src/lib.rs:2098:11: a slice from a pointer to `(u8, u8)`, which JS keeps as an object that knows no array it is in
a slice of `()`, which has no bytes, from a pointer (1) -- fixtures/reject/src/lib.rs:2120:39: a slice of `()`, which has no bytes, from a pointer +- fixtures/reject/src/lib.rs:2107:39: a slice of `()`, which has no bytes, from a pointer
a slice of one byte's place, which a byte slice can view only in an array of bytes (1) -- fixtures/reject/src/lib.rs:2208:2: a slice of one byte's place, which a byte slice can view only in an array of bytes +- fixtures/reject/src/lib.rs:2195:2: a slice of one byte's place, which a byte slice can view only in an array of bytes
a slice reaching past a value in no array, which JS keeps apart from what holds it in Rust (1) -- fixtures/reject/src/lib.rs:2199:6: a slice reaching past a value in no array, which JS keeps apart from what holds it in Rust +- fixtures/reject/src/lib.rs:2186:6: a slice reaching past a value in no array, which JS keeps apart from what holds it in Rust
a trait object of `_`, which is not supported yet (1) -- fixtures/reject/src/lib.rs:423:26: a trait object of `[u8; 4]`, which is not supported yet +- fixtures/reject/src/lib.rs:410:26: a trait object of `[u8; 4]`, which is not supported yet
@@ -1104,60 +1086,60 @@ The type or module each refused type or path belongs to.
comparing `_` (1) -- fixtures/reject/src/lib.rs:1660:41: comparing `*mut [u8; 4]` +- fixtures/reject/src/lib.rs:1647:41: comparing `*mut [u8; 4]`
comparing `_` as a key, which is not supported yet (1) -- fixtures/reject/src/lib.rs:206:75: comparing `std::collections::BTreeSet` as a key, which is not supported yet +- fixtures/reject/src/lib.rs:193:75: comparing `std::collections::BTreeSet` as a key, which is not supported yet
comparing pointers to `_` in an atomic, which JS has no address of (1) -- fixtures/reject/src/lib.rs:725:15: comparing pointers to `u32` in an atomic, which JS has no address of +- fixtures/reject/src/lib.rs:712:15: comparing pointers to `u32` in an atomic, which JS has no address of
comparing pointers to `_`, which has no bytes and so no address of its own (1) -- fixtures/reject/src/lib.rs:676:70: comparing pointers to `Bare`, which has no bytes and so no address of its own +- fixtures/reject/src/lib.rs:663:70: comparing pointers to `Bare`, which has no bytes and so no address of its own
const generic types are not supported: `_` (1) -- fixtures/reject/src/lib.rs:2045:1: const generic types are not supported: `Block` +- fixtures/reject/src/lib.rs:2032:1: const generic types are not supported: `Block`
constructing `_` (1) -- fixtures/reject/src/lib.rs:298:53: constructing `std::borrow::Cow<'_, std::sync::Arc>` +- fixtures/reject/src/lib.rs:285:53: constructing `std::borrow::Cow<'_, std::sync::Arc>`
hashing `_` as a key, which is not supported yet (1) -- fixtures/reject/src/lib.rs:206:75: hashing `std::collections::BTreeSet` as a key, which is not supported yet +- fixtures/reject/src/lib.rs:193:75: hashing `std::collections::BTreeSet` as a key, which is not supported yet
hashing `_` by its address, which JS has no counterpart of (1) -- fixtures/reject/src/lib.rs:1664:5: hashing `*const [u8; 4]` by its address, which JS has no counterpart of +- fixtures/reject/src/lib.rs:1651:5: hashing `*const [u8; 4]` by its address, which JS has no counterpart of
hashing `_` through `_`'s own `Hash::hash_slice`, which is not supported yet (1) -- fixtures/reject/src/lib.rs:266:16: hashing `std::vec::Vec` through `Batched`'s own `Hash::hash_slice`, which is not supported yet +- fixtures/reject/src/lib.rs:253:16: hashing `std::vec::Vec` through `Batched`'s own `Hash::hash_slice`, which is not supported yet
union `_`, whose fields overlap in `_` and `f64`, which JS keeps apart (1) -- fixtures/reject/src/lib.rs:530:1: union `Bits`, whose fields overlap in `u32` and `f64`, which JS keeps apart +- fixtures/reject/src/lib.rs:517:1: union `Bits`, whose fields overlap in `u32` and `f64`, which JS keeps apart
diff --git a/ts/fixtures/reject/expected.txt b/ts/fixtures/reject/expected.txt index 4ebe54150..45865fa13 100644 --- a/ts/fixtures/reject/expected.txt +++ b/ts/fixtures/reject/expected.txt @@ -25,236 +25,234 @@ replacing the value behind a reference to `std::pin::Pin>>` at fixtures/reject/src/lib.rs:107:2 replacing the value behind a reference to `std::pin::Pin>` at fixtures/reject/src/lib.rs:99:2 unsupported call to `std::ops::Range::::contains::` at fixtures/reject/src/lib.rs:164:8 -unsupported call to `std::ops::RangeTo::::contains::` at fixtures/reject/src/lib.rs:932:11 -unsupported call to ` as std::ops::RangeBounds>::contains::` at fixtures/reject/src/lib.rs:932:32 -unsupported call to `std::ops::Range::<&mut u8>::is_empty` at fixtures/reject/src/lib.rs:937:9 -a `skip` of `std::iter::Zip, {closure@fixtures/reject/src/lib.rs:172:27: 172:31}>, std::iter::Map, {closure@fixtures/reject/src/lib.rs:172:59: 172:63}>>`, a zip std reads by index, of items that drop, which is not supported yet at fixtures/reject/src/lib.rs:173:8 -a `collect` in place of `std::iter::Map, {closure@fixtures/reject/src/lib.rs:179:32: 179:40}>, std::ops::Range>, {closure@fixtures/reject/src/lib.rs:180:24: 180:32}>`, a zip std reads by index, holding values that drop, which is not supported yet at fixtures/reject/src/lib.rs:180:40 -an assignment through a reference to `std::pin::Pin<&mut Noisy>` at fixtures/reject/src/lib.rs:185:2 -a copy of a closure that changes what it captured at fixtures/reject/src/lib.rs:195:14 -`Iterator::scan` of `Option<()>`, whose `None` is `rt.None`, which is not supported yet at fixtures/reject/src/lib.rs:201:11 -hashing `std::collections::BTreeSet` as a key, which is not supported yet at fixtures/reject/src/lib.rs:206:75 -comparing `std::collections::BTreeSet` as a key, which is not supported yet at fixtures/reject/src/lib.rs:206:75 -`HashMap::contains_key` of `std::collections::HashMap` by `u8`, which is not supported yet at fixtures/reject/src/lib.rs:224:6 -`slice::clone_from_slice` of `Reused`, whose `clone_from` is its own, which is not supported yet at fixtures/reject/src/lib.rs:242:4 -a coercion to `std::sync::Arc<[u8]>` at fixtures/reject/src/lib.rs:247:2 -a variant of `std::borrow::Cow<'_, str>`, which is not supported: either is the same JS string at fixtures/reject/src/lib.rs:280:2 -a variant of `std::borrow::Cow<'_, str>`, which is not supported: either is the same JS string at fixtures/reject/src/lib.rs:282:27 -a variant of `std::borrow::Cow<'_, str>`, which is not supported: either is the same JS string at fixtures/reject/src/lib.rs:281:30 -a variant of `std::borrow::Cow<'_, str>`, which is not supported: either is the same JS string at fixtures/reject/src/lib.rs:287:2 -unsupported call to `std::borrow::Cow::<'_, [u8]>::is_borrowed` at fixtures/reject/src/lib.rs:292:2 -constructing `std::borrow::Cow<'_, std::sync::Arc>` at fixtures/reject/src/lib.rs:298:53 -hashing `std::vec::Vec` through `Batched`'s own `Hash::hash_slice`, which is not supported yet at fixtures/reject/src/lib.rs:266:16 -passing `{closure@fixtures/reject/src/lib.rs:275:13: 275:27}`, which drops, to `str::contains`, which is not supported yet at fixtures/reject/src/lib.rs:275:4 -unsupported call to ` as std::iter::Iterator>::sum::` at fixtures/reject/src/lib.rs:383:17 -unsupported call to ` as std::iter::Iterator>::sum::` at fixtures/reject/src/lib.rs:383:38 -a mutable reference into a `Result`'s payload, passed on or kept at fixtures/reject/src/lib.rs:311:12 -unsupported call to ` as std::cmp::PartialEq>::eq` at fixtures/reject/src/lib.rs:318:2 -`Bytes::from_owner` of `std::sync::Arc<[u8]>`, which would drop with the last clone of what it makes, which is not supported at fixtures/reject/src/lib.rs:323:2 -`BytesMut::capacity`, which reads a capacity that depends on whether the other handles of its storage dropped, which is not supported at fixtures/reject/src/lib.rs:332:6 -`BufMut::put` of `Counted` into a `BytesMut`, which picks the methods it calls by a capacity that depends on whether the other handles of its storage dropped, which is not supported at fixtures/reject/src/lib.rs:338:2 -`BufMut::put` of `Counted` into a `BytesMut`, which advances it by the room left in a capacity that depends on whether the other handles of its storage dropped, which is not supported at fixtures/reject/src/lib.rs:343:2 -unsupported call to `core::str::::parse::` at fixtures/reject/src/lib.rs:388:4 -unsupported type `std::net::Ipv4Addr` from another crate at fixtures/reject/src/lib.rs:387:32 -unsupported type `std::net::AddrParseError` from another crate at fixtures/reject/src/lib.rs:387:32 -`dyn Scaled`, a trait object of the generic trait `Scaled`, which is not supported yet at fixtures/reject/src/lib.rs:406:23 -`dyn Scaled`, a trait object of the generic trait `Scaled`, which is not supported yet at fixtures/reject/src/lib.rs:407:4 -a trait object of `[u8; 4]`, which is not supported yet at fixtures/reject/src/lib.rs:423:26 -a coercion to `&Tail`, which is not supported yet at fixtures/reject/src/lib.rs:433:30 -`Waiting>` is not supported: its field `poll` is `Poll`, typed `rt.Poll`, whose `Pending` would be `rt.OuterPending` as `Poll>` at fixtures/reject/src/lib.rs:444:2 -a copy of a closure that changes what it captured at fixtures/reject/src/lib.rs:456:14 -a copy of a closure that changes what it captured at fixtures/reject/src/lib.rs:457:14 -an upcast from `dyn Keyed` to `dyn std::any::Any`, which is not supported yet at fixtures/reject/src/lib.rs:474:32 -an upcast from `dyn Keyed` to `dyn std::any::Any`, which is not supported yet at fixtures/reject/src/lib.rs:480:46 -`std::any::Any::type_id` of `dyn std::any::Any`, which is not supported yet at fixtures/reject/src/lib.rs:486:4 -unsupported call to `std::any::TypeId::of::` at fixtures/reject/src/lib.rs:486:17 -unsupported call to `::eq` at fixtures/reject/src/lib.rs:486:2 -a cast from a pointer to `u32` to one to `u8`, which reads the bytes of one type as another at fixtures/reject/src/lib.rs:503:27 -a pointer's address, which JS has no counterpart of at fixtures/reject/src/lib.rs:508:17 -a byte of memory from `alloc`, which JS keeps as the values a cast of its pointer types it as at fixtures/reject/src/lib.rs:516:3 -a byte of memory from `alloc`, which JS keeps as the values a cast of its pointer types it as at fixtures/reject/src/lib.rs:517:11 -a raw pointer to `std::vec::Vec` behind a reference, which is the object and not where it is kept at fixtures/reject/src/lib.rs:525:10 -union `Bits`, whose fields overlap in `u32` and `f64`, which JS keeps apart at fixtures/reject/src/lib.rs:536:10 -comparing pointers to `u32`, each a place JS makes of its own at fixtures/reject/src/lib.rs:544:2 -comparing pointers to `u32`, each a place JS makes of its own at fixtures/reject/src/lib.rs:2093:2 -a raw pointer to `(u32, u32)` in `Span2`, which the crate may put another object in place of at fixtures/reject/src/lib.rs:556:10 -a raw pointer to `(u32, u32)` in a variable assigned again while it may point there at fixtures/reject/src/lib.rs:564:10 -a raw pointer to `(u32, u32)` in a variable assigned again while it may point there at fixtures/reject/src/lib.rs:572:10 -a raw pointer to `(u32, u32)` in a variable assigned again while it may point there at fixtures/reject/src/lib.rs:581:10 -a raw pointer to `(u32, u32)` in a variable assigned again while it may point there at fixtures/reject/src/lib.rs:589:10 -a raw pointer to `(u32, u32)` in a variable assigned again while it may point there at fixtures/reject/src/lib.rs:598:10 -a raw pointer to `(u32, u32)` in a variable assigned again while it may point there at fixtures/reject/src/lib.rs:606:10 -a reference to `std::cell::UnsafeCell`, through which a raw pointer may be made, in a variable assigned again while that pointer may point there at fixtures/reject/src/lib.rs:1603:18 -a raw pointer to `Target` in a variable assigned again while it may point there at fixtures/reject/src/lib.rs:1617:10 -a raw pointer to `(u32, u32)` in a variable assigned again while it may point there at fixtures/reject/src/lib.rs:1630:10 -a raw pointer to `(u32, u32)` in a variable assigned again while it may point there at fixtures/reject/src/lib.rs:1645:10 -a reference to `Behind`, through which a raw pointer may be made, in a variable assigned again while that pointer may point there at fixtures/reject/src/lib.rs:1699:22 -a reference to `Unboxed`, through which a raw pointer may be made, in a variable assigned again while that pointer may point there at fixtures/reject/src/lib.rs:1714:16 -a reference to `Deep`, through which a raw pointer may be made, in a variable assigned again while that pointer may point there at fixtures/reject/src/lib.rs:1735:18 -a reference to `Slotted`, through which a raw pointer may be made, in a variable assigned again while that pointer may point there at fixtures/reject/src/lib.rs:1757:21 -a reference to `Shared`, through which a raw pointer may be made, in a variable assigned again while that pointer may point there at fixtures/reject/src/lib.rs:1776:20 -a reference to `Inside`, through which a raw pointer may be made, in a variable assigned again while that pointer may point there at fixtures/reject/src/lib.rs:1793:20 -a reference to `Inside`, through which a raw pointer may be made, in a variable assigned again while that pointer may point there at fixtures/reject/src/lib.rs:1806:26 -a reference to `Wrapped>`, through which a raw pointer may be made, in a variable assigned again while that pointer may point there at fixtures/reject/src/lib.rs:1882:21 -a reference through which a raw pointer may be made into `std::cell::UnsafeCell` in `Replaced`, which the crate may put another object in place of at fixtures/reject/src/lib.rs:1905:20 -a reference through which a raw pointer may be made into `std::cell::UnsafeCell` in `Swapped`, which the crate may put another object in place of at fixtures/reject/src/lib.rs:1923:20 -a reference through which a raw pointer may be made into `std::cell::UnsafeCell` in `Taken`, which the crate may put another object in place of at fixtures/reject/src/lib.rs:1941:20 -a reference through which a raw pointer may be made into `std::cell::UnsafeCell` in `Assigned`, which the crate may put another object in place of at fixtures/reject/src/lib.rs:1960:20 -a reference through which a raw pointer may be made into `std::cell::UnsafeCell` in `Deeper`, which the crate may put another object in place of at fixtures/reject/src/lib.rs:1986:22 -a reference through which a raw pointer may be made into `std::cell::UnsafeCell` in `Dynamic`, which the crate may put another object in place of at fixtures/reject/src/lib.rs:2010:20 -a reference through which a raw pointer may be made into `std::cell::UnsafeCell` in `Closed`, which the crate may put another object in place of at fixtures/reject/src/lib.rs:2026:15 -a reference through which a raw pointer may be made into `std::cell::UnsafeCell` in `[std::cell::UnsafeCell; 2]`, which the crate may put another object in place of at fixtures/reject/src/lib.rs:2039:20 -a reference to `Compared`, through which a raw pointer may be made, in a variable assigned again while that pointer may point there at fixtures/reject/src/lib.rs:1821:22 -a reference to `Enclosing`, through which a raw pointer may be made, in a variable assigned again while that pointer may point there at fixtures/reject/src/lib.rs:1838:22 -a reference to `Chosen`, through which a raw pointer may be made, in a variable assigned again while that pointer may point there at fixtures/reject/src/lib.rs:1854:17 -a reference to `[u8; 4]`, through which a raw pointer may be made, in a variable assigned again while that pointer may point there at fixtures/reject/src/lib.rs:1867:19 -a raw pointer to `(u32, u32)` in a variable assigned again while it may point there at fixtures/reject/src/lib.rs:949:26 -a raw pointer to `(u32, u32)` in a variable assigned again while it may point there at fixtures/reject/src/lib.rs:962:22 -a raw pointer to `(u32, u32)` in a variable assigned again while it may point there at fixtures/reject/src/lib.rs:972:12 -a raw pointer to `(u32, u32)` in a variable assigned again while it may point there at fixtures/reject/src/lib.rs:981:10 -a raw pointer to `(u32, u32)` in a variable assigned again while it may point there at fixtures/reject/src/lib.rs:991:17 -a raw pointer to `(u32, u32)` in a variable assigned again while it may point there at fixtures/reject/src/lib.rs:996:10 -a raw pointer to `(u32, u32)` in `Window`, which the crate may put another object in place of at fixtures/reject/src/lib.rs:617:2 -a raw pointer to `(u32, u32)` in an element, a payload, or a union field, which is not supported yet at fixtures/reject/src/lib.rs:627:10 -a raw pointer to `(u32, u32)` in `std::cell::UnsafeCell<(u32, u32)>`, which the crate may put another object in place of at fixtures/reject/src/lib.rs:635:15 +unsupported call to `std::ops::RangeTo::::contains::` at fixtures/reject/src/lib.rs:919:11 +unsupported call to ` as std::ops::RangeBounds>::contains::` at fixtures/reject/src/lib.rs:919:32 +unsupported call to `std::ops::Range::<&mut u8>::is_empty` at fixtures/reject/src/lib.rs:924:9 +an assignment through a reference to `std::pin::Pin<&mut Noisy>` at fixtures/reject/src/lib.rs:172:2 +a copy of a closure that changes what it captured at fixtures/reject/src/lib.rs:182:14 +`Iterator::scan` of `Option<()>`, whose `None` is `rt.None`, which is not supported yet at fixtures/reject/src/lib.rs:188:11 +hashing `std::collections::BTreeSet` as a key, which is not supported yet at fixtures/reject/src/lib.rs:193:75 +comparing `std::collections::BTreeSet` as a key, which is not supported yet at fixtures/reject/src/lib.rs:193:75 +`HashMap::contains_key` of `std::collections::HashMap` by `u8`, which is not supported yet at fixtures/reject/src/lib.rs:211:6 +`slice::clone_from_slice` of `Reused`, whose `clone_from` is its own, which is not supported yet at fixtures/reject/src/lib.rs:229:4 +a coercion to `std::sync::Arc<[u8]>` at fixtures/reject/src/lib.rs:234:2 +a variant of `std::borrow::Cow<'_, str>`, which is not supported: either is the same JS string at fixtures/reject/src/lib.rs:267:2 +a variant of `std::borrow::Cow<'_, str>`, which is not supported: either is the same JS string at fixtures/reject/src/lib.rs:269:27 +a variant of `std::borrow::Cow<'_, str>`, which is not supported: either is the same JS string at fixtures/reject/src/lib.rs:268:30 +a variant of `std::borrow::Cow<'_, str>`, which is not supported: either is the same JS string at fixtures/reject/src/lib.rs:274:2 +unsupported call to `std::borrow::Cow::<'_, [u8]>::is_borrowed` at fixtures/reject/src/lib.rs:279:2 +constructing `std::borrow::Cow<'_, std::sync::Arc>` at fixtures/reject/src/lib.rs:285:53 +hashing `std::vec::Vec` through `Batched`'s own `Hash::hash_slice`, which is not supported yet at fixtures/reject/src/lib.rs:253:16 +passing `{closure@fixtures/reject/src/lib.rs:262:13: 262:27}`, which drops, to `str::contains`, which is not supported yet at fixtures/reject/src/lib.rs:262:4 +unsupported call to ` as std::iter::Iterator>::sum::` at fixtures/reject/src/lib.rs:370:17 +unsupported call to ` as std::iter::Iterator>::sum::` at fixtures/reject/src/lib.rs:370:38 +a mutable reference into a `Result`'s payload, passed on or kept at fixtures/reject/src/lib.rs:298:12 +unsupported call to ` as std::cmp::PartialEq>::eq` at fixtures/reject/src/lib.rs:305:2 +`Bytes::from_owner` of `std::sync::Arc<[u8]>`, which would drop with the last clone of what it makes, which is not supported at fixtures/reject/src/lib.rs:310:2 +`BytesMut::capacity`, which reads a capacity that depends on whether the other handles of its storage dropped, which is not supported at fixtures/reject/src/lib.rs:319:6 +`BufMut::put` of `Counted` into a `BytesMut`, which picks the methods it calls by a capacity that depends on whether the other handles of its storage dropped, which is not supported at fixtures/reject/src/lib.rs:325:2 +`BufMut::put` of `Counted` into a `BytesMut`, which advances it by the room left in a capacity that depends on whether the other handles of its storage dropped, which is not supported at fixtures/reject/src/lib.rs:330:2 +unsupported call to `core::str::::parse::` at fixtures/reject/src/lib.rs:375:4 +unsupported type `std::net::Ipv4Addr` from another crate at fixtures/reject/src/lib.rs:374:32 +unsupported type `std::net::AddrParseError` from another crate at fixtures/reject/src/lib.rs:374:32 +`dyn Scaled`, a trait object of the generic trait `Scaled`, which is not supported yet at fixtures/reject/src/lib.rs:393:23 +`dyn Scaled`, a trait object of the generic trait `Scaled`, which is not supported yet at fixtures/reject/src/lib.rs:394:4 +a trait object of `[u8; 4]`, which is not supported yet at fixtures/reject/src/lib.rs:410:26 +a coercion to `&Tail`, which is not supported yet at fixtures/reject/src/lib.rs:420:30 +`Waiting>` is not supported: its field `poll` is `Poll`, typed `rt.Poll`, whose `Pending` would be `rt.OuterPending` as `Poll>` at fixtures/reject/src/lib.rs:431:2 +a copy of a closure that changes what it captured at fixtures/reject/src/lib.rs:443:14 +a copy of a closure that changes what it captured at fixtures/reject/src/lib.rs:444:14 +an upcast from `dyn Keyed` to `dyn std::any::Any`, which is not supported yet at fixtures/reject/src/lib.rs:461:32 +an upcast from `dyn Keyed` to `dyn std::any::Any`, which is not supported yet at fixtures/reject/src/lib.rs:467:46 +`std::any::Any::type_id` of `dyn std::any::Any`, which is not supported yet at fixtures/reject/src/lib.rs:473:4 +unsupported call to `std::any::TypeId::of::` at fixtures/reject/src/lib.rs:473:17 +unsupported call to `::eq` at fixtures/reject/src/lib.rs:473:2 +a cast from a pointer to `u32` to one to `u8`, which reads the bytes of one type as another at fixtures/reject/src/lib.rs:490:27 +a pointer's address, which JS has no counterpart of at fixtures/reject/src/lib.rs:495:17 +a byte of memory from `alloc`, which JS keeps as the values a cast of its pointer types it as at fixtures/reject/src/lib.rs:503:3 +a byte of memory from `alloc`, which JS keeps as the values a cast of its pointer types it as at fixtures/reject/src/lib.rs:504:11 +a raw pointer to `std::vec::Vec` behind a reference, which is the object and not where it is kept at fixtures/reject/src/lib.rs:512:10 +union `Bits`, whose fields overlap in `u32` and `f64`, which JS keeps apart at fixtures/reject/src/lib.rs:523:10 +comparing pointers to `u32`, each a place JS makes of its own at fixtures/reject/src/lib.rs:531:2 +comparing pointers to `u32`, each a place JS makes of its own at fixtures/reject/src/lib.rs:2080:2 +a raw pointer to `(u32, u32)` in `Span2`, which the crate may put another object in place of at fixtures/reject/src/lib.rs:543:10 +a raw pointer to `(u32, u32)` in a variable assigned again while it may point there at fixtures/reject/src/lib.rs:551:10 +a raw pointer to `(u32, u32)` in a variable assigned again while it may point there at fixtures/reject/src/lib.rs:559:10 +a raw pointer to `(u32, u32)` in a variable assigned again while it may point there at fixtures/reject/src/lib.rs:568:10 +a raw pointer to `(u32, u32)` in a variable assigned again while it may point there at fixtures/reject/src/lib.rs:576:10 +a raw pointer to `(u32, u32)` in a variable assigned again while it may point there at fixtures/reject/src/lib.rs:585:10 +a raw pointer to `(u32, u32)` in a variable assigned again while it may point there at fixtures/reject/src/lib.rs:593:10 +a reference to `std::cell::UnsafeCell`, through which a raw pointer may be made, in a variable assigned again while that pointer may point there at fixtures/reject/src/lib.rs:1590:18 +a raw pointer to `Target` in a variable assigned again while it may point there at fixtures/reject/src/lib.rs:1604:10 +a raw pointer to `(u32, u32)` in a variable assigned again while it may point there at fixtures/reject/src/lib.rs:1617:10 +a raw pointer to `(u32, u32)` in a variable assigned again while it may point there at fixtures/reject/src/lib.rs:1632:10 +a reference to `Behind`, through which a raw pointer may be made, in a variable assigned again while that pointer may point there at fixtures/reject/src/lib.rs:1686:22 +a reference to `Unboxed`, through which a raw pointer may be made, in a variable assigned again while that pointer may point there at fixtures/reject/src/lib.rs:1701:16 +a reference to `Deep`, through which a raw pointer may be made, in a variable assigned again while that pointer may point there at fixtures/reject/src/lib.rs:1722:18 +a reference to `Slotted`, through which a raw pointer may be made, in a variable assigned again while that pointer may point there at fixtures/reject/src/lib.rs:1744:21 +a reference to `Shared`, through which a raw pointer may be made, in a variable assigned again while that pointer may point there at fixtures/reject/src/lib.rs:1763:20 +a reference to `Inside`, through which a raw pointer may be made, in a variable assigned again while that pointer may point there at fixtures/reject/src/lib.rs:1780:20 +a reference to `Inside`, through which a raw pointer may be made, in a variable assigned again while that pointer may point there at fixtures/reject/src/lib.rs:1793:26 +a reference to `Wrapped>`, through which a raw pointer may be made, in a variable assigned again while that pointer may point there at fixtures/reject/src/lib.rs:1869:21 +a reference through which a raw pointer may be made into `std::cell::UnsafeCell` in `Replaced`, which the crate may put another object in place of at fixtures/reject/src/lib.rs:1892:20 +a reference through which a raw pointer may be made into `std::cell::UnsafeCell` in `Swapped`, which the crate may put another object in place of at fixtures/reject/src/lib.rs:1910:20 +a reference through which a raw pointer may be made into `std::cell::UnsafeCell` in `Taken`, which the crate may put another object in place of at fixtures/reject/src/lib.rs:1928:20 +a reference through which a raw pointer may be made into `std::cell::UnsafeCell` in `Assigned`, which the crate may put another object in place of at fixtures/reject/src/lib.rs:1947:20 +a reference through which a raw pointer may be made into `std::cell::UnsafeCell` in `Deeper`, which the crate may put another object in place of at fixtures/reject/src/lib.rs:1973:22 +a reference through which a raw pointer may be made into `std::cell::UnsafeCell` in `Dynamic`, which the crate may put another object in place of at fixtures/reject/src/lib.rs:1997:20 +a reference through which a raw pointer may be made into `std::cell::UnsafeCell` in `Closed`, which the crate may put another object in place of at fixtures/reject/src/lib.rs:2013:15 +a reference through which a raw pointer may be made into `std::cell::UnsafeCell` in `[std::cell::UnsafeCell; 2]`, which the crate may put another object in place of at fixtures/reject/src/lib.rs:2026:20 +a reference to `Compared`, through which a raw pointer may be made, in a variable assigned again while that pointer may point there at fixtures/reject/src/lib.rs:1808:22 +a reference to `Enclosing`, through which a raw pointer may be made, in a variable assigned again while that pointer may point there at fixtures/reject/src/lib.rs:1825:22 +a reference to `Chosen`, through which a raw pointer may be made, in a variable assigned again while that pointer may point there at fixtures/reject/src/lib.rs:1841:17 +a reference to `[u8; 4]`, through which a raw pointer may be made, in a variable assigned again while that pointer may point there at fixtures/reject/src/lib.rs:1854:19 +a raw pointer to `(u32, u32)` in a variable assigned again while it may point there at fixtures/reject/src/lib.rs:936:26 +a raw pointer to `(u32, u32)` in a variable assigned again while it may point there at fixtures/reject/src/lib.rs:949:22 +a raw pointer to `(u32, u32)` in a variable assigned again while it may point there at fixtures/reject/src/lib.rs:959:12 +a raw pointer to `(u32, u32)` in a variable assigned again while it may point there at fixtures/reject/src/lib.rs:968:10 +a raw pointer to `(u32, u32)` in a variable assigned again while it may point there at fixtures/reject/src/lib.rs:978:17 +a raw pointer to `(u32, u32)` in a variable assigned again while it may point there at fixtures/reject/src/lib.rs:983:10 +a raw pointer to `(u32, u32)` in `Window`, which the crate may put another object in place of at fixtures/reject/src/lib.rs:604:2 +a raw pointer to `(u32, u32)` in an element, a payload, or a union field, which is not supported yet at fixtures/reject/src/lib.rs:614:10 +a raw pointer to `(u32, u32)` in `std::cell::UnsafeCell<(u32, u32)>`, which the crate may put another object in place of at fixtures/reject/src/lib.rs:622:15 +a raw pointer to `std::cell::UnsafeCell` in a variable assigned again while it may point there at fixtures/reject/src/lib.rs:631:15 a raw pointer to `std::cell::UnsafeCell` in a variable assigned again while it may point there at fixtures/reject/src/lib.rs:644:15 -a raw pointer to `std::cell::UnsafeCell` in a variable assigned again while it may point there at fixtures/reject/src/lib.rs:657:15 -a raw pointer to `std::cell::UnsafeCell` in `Hits`, which the crate may put another object in place of at fixtures/reject/src/lib.rs:668:21 -a raw pointer to a place of `()`, which has no address of its own at fixtures/reject/src/lib.rs:676:15 -a raw pointer to a place of `()`, which has no address of its own at fixtures/reject/src/lib.rs:676:29 -comparing pointers to `Bare`, which has no bytes and so no address of its own at fixtures/reject/src/lib.rs:676:70 -a dangling pointer to `Only`, a value of no bytes made of more than structs and tuples at fixtures/reject/src/lib.rs:685:11 -`Buf::copy_to_bytes` of `Blank`, a value JS copies, which is not supported at fixtures/reject/src/lib.rs:709:2 -unsupported call to ` as std::iter::Iterator>::is_sorted` at fixtures/reject/src/lib.rs:714:15 -comparing pointers to `u32` in an atomic, which JS has no address of at fixtures/reject/src/lib.rs:725:15 -a constant of type `&u32`, a pointer into memory translation can't name at fixtures/reject/src/lib.rs:726:3 -passing `{closure@fixtures/reject/src/lib.rs:732:11: 732:19}`, which drops, to `String::retain`, which is not supported yet at fixtures/reject/src/lib.rs:732:4 -a raw pointer to `(u32, u32)` in `Plain`, which the crate may put another object in place of at fixtures/reject/src/lib.rs:774:10 -a raw pointer to `(u32, u32)` in `Track`, which the crate may put another object in place of at fixtures/reject/src/lib.rs:800:19 -a raw pointer to `(u32, u32)` in `Lane`, which the crate may put another object in place of at fixtures/reject/src/lib.rs:820:19 -a raw pointer to `(u32, u32)` in `Gap`, which the crate may put another object in place of at fixtures/reject/src/lib.rs:856:10 -a raw pointer to `(u32, u32)` in `Gap`, which the crate may put another object in place of at fixtures/reject/src/lib.rs:857:10 -a raw pointer to `(u32, u32)` in `Gap`, which the crate may put another object in place of at fixtures/reject/src/lib.rs:858:58 -a raw pointer to `std::mem::MaybeUninit<(u32, u32)>` in `Gap`, which the crate may put another object in place of at fixtures/reject/src/lib.rs:870:19 -a raw pointer to `std::mem::MaybeUninit<(u32, u32)>` in `Gap`, which the crate may put another object in place of at fixtures/reject/src/lib.rs:871:19 -`collect` of `std::collections::BTreeMap, Noisy>`, which sorts by `std::cell::Cell`'s own `Ord`, of entries that drop, which is not supported yet at fixtures/reject/src/lib.rs:903:22 -a raw pointer to `std::cell::UnsafeCell<(u16, u16)>` in `Looped`, which the crate may put another object in place of at fixtures/reject/src/lib.rs:1058:26 -a raw pointer to `std::cell::UnsafeCell<(u16, u16)>` in `Aliased`, which the crate may put another object in place of at fixtures/reject/src/lib.rs:1068:29 -a raw pointer to `std::cell::UnsafeCell<(u16, u16)>` in `Rewritten`, which the crate may put another object in place of at fixtures/reject/src/lib.rs:1078:47 -a raw pointer to `std::cell::UnsafeCell<(u16, u16)>` in `Loaded`, which the crate may put another object in place of at fixtures/reject/src/lib.rs:1090:29 -a raw pointer to `std::cell::UnsafeCell<(u16, u16)>` in `Mapped`, which the crate may put another object in place of at fixtures/reject/src/lib.rs:1135:39 -a raw pointer to `std::cell::UnsafeCell<(u16, u16)>` in `Repeated`, which the crate may put another object in place of at fixtures/reject/src/lib.rs:1169:18 -a raw pointer to `std::cell::UnsafeCell<(u16, u16)>` in `Onced`, which the crate may put another object in place of at fixtures/reject/src/lib.rs:1181:46 -`std::iter::once` with a mutable reference to a value JS copies, which its mapping would copy at fixtures/reject/src/lib.rs:1183:22 -a raw pointer to `(u16, u16)` in `Pushed`, which the crate may put another object in place of at fixtures/reject/src/lib.rs:1196:22 -`Extend` of `(std::vec::Vec, Tens)` by `(u8, u8)`, whose `Tens` of `u8` is not supported yet at fixtures/reject/src/lib.rs:1220:31 -unsupported call to `core::num::::is_ascii_octdigit` at fixtures/reject/src/lib.rs:1225:4 -a reference through which a raw pointer may be made into `InArray` in `[InArray; 2]`, which the crate may put another object in place of at fixtures/reject/src/lib.rs:1285:33 -a reference through which a raw pointer may be made into `InTuple` in `(u16, InTuple)`, which the crate may put another object in place of at fixtures/reject/src/lib.rs:1294:33 -a reference through which a raw pointer may be made into `Mid` in `Outer`, which the crate may put another object in place of at fixtures/reject/src/lib.rs:1303:34 -a reference through which a raw pointer may be made into `InPayload` in an element, a payload, or a union field, which is not supported yet at fixtures/reject/src/lib.rs:1312:11 -a reference through which a raw pointer may be made into `Mid` in `Outer`, which the crate may put another object in place of at fixtures/reject/src/lib.rs:1324:33 -a reference through which a raw pointer may be made into `Mid` in `Outer`, which the crate may put another object in place of at fixtures/reject/src/lib.rs:1337:35 -a reference through which a raw pointer may be made into `InWritten` in `[InWritten; 1]`, which the crate may put another object in place of at fixtures/reject/src/lib.rs:1346:35 -a raw pointer to `std::cell::UnsafeCell` in `ByRead`, which the crate may put another object in place of at fixtures/reject/src/lib.rs:1403:35 -a raw pointer to `std::cell::UnsafeCell` in `ByWrite`, which the crate may put another object in place of at fixtures/reject/src/lib.rs:1416:35 -a raw pointer to `std::cell::UnsafeCell` in `BySwap`, which the crate may put another object in place of at fixtures/reject/src/lib.rs:1429:35 -a raw pointer to `std::cell::UnsafeCell` in `ByReplace`, which the crate may put another object in place of at fixtures/reject/src/lib.rs:1441:35 -a raw pointer to `std::cell::UnsafeCell` in `ByBox`, which the crate may put another object in place of at fixtures/reject/src/lib.rs:1452:35 -a raw pointer to `std::cell::UnsafeCell` in `ByClosure`, which the crate may put another object in place of at fixtures/reject/src/lib.rs:1467:35 -a raw pointer to `std::cell::UnsafeCell` in `ByObject`, which the crate may put another object in place of at fixtures/reject/src/lib.rs:1480:35 -a raw pointer to `std::cell::UnsafeCell` in `ByInstance`, which the crate may put another object in place of at fixtures/reject/src/lib.rs:1493:35 -a raw pointer to `std::cell::UnsafeCell` in `BySwapped`, which the crate may put another object in place of at fixtures/reject/src/lib.rs:1502:76 -a raw pointer to `std::cell::UnsafeCell` in `ByExchanged`, which the crate may put another object in place of at fixtures/reject/src/lib.rs:1513:30 -a raw pointer to `ByRefReplace` in `(u16, ByRefReplace)`, which the crate may put another object in place of at fixtures/reject/src/lib.rs:1545:32 -a raw pointer to `ByRefTake` in `(u16, ByRefTake)`, which the crate may put another object in place of at fixtures/reject/src/lib.rs:1553:32 -a raw pointer to `ByKeySet` in `(u16, ByKeySet)`, which the crate may put another object in place of at fixtures/reject/src/lib.rs:1561:51 -a raw pointer to `ByKeyReplace` in `(u16, ByKeyReplace)`, which the crate may put another object in place of at fixtures/reject/src/lib.rs:1569:55 -a raw pointer to `ByKeyTake` in `(u16, ByKeyTake)`, which the crate may put another object in place of at fixtures/reject/src/lib.rs:1576:52 -unsupported call to `core::str::::as_bytes_mut` at fixtures/reject/src/lib.rs:1584:13 -`core::str::::get_unchecked_mut` with a mutable reference to a value JS copies, which its mapping would copy at fixtures/reject/src/lib.rs:1585:13 -`std::str::from_utf8_mut` with a mutable reference to a value JS copies, which its mapping would copy at fixtures/reject/src/lib.rs:1590:20 -a copy between pointers to `[u8; 4]`, which JS keeps as an object that knows no array it is in at fixtures/reject/src/lib.rs:1658:3 -a copy between pointers to `[u8; 4]`, which JS keeps as an object that knows no array it is in at fixtures/reject/src/lib.rs:1659:3 -unsupported call to `std::ptr::addr_eq::<[u8; 4], [u8; 4]>` at fixtures/reject/src/lib.rs:1660:14 -comparing `*mut [u8; 4]` at fixtures/reject/src/lib.rs:1660:41 -an offset of a pointer to `[u8; 4]`, which JS keeps as an object that knows no array it is in at fixtures/reject/src/lib.rs:1661:56 -an offset of a pointer to `[u8; 4]`, which JS keeps as an object that knows no array it is in at fixtures/reject/src/lib.rs:1661:73 -hashing `*const [u8; 4]` by its address, which JS has no counterpart of at fixtures/reject/src/lib.rs:1664:5 -a raw pointer to `[u8; 3]` in an element, a payload, or a union field, which is not supported yet at fixtures/reject/src/lib.rs:1674:15 -a raw pointer to `[u8; 3]` in an element, a payload, or a union field, which is not supported yet at fixtures/reject/src/lib.rs:1674:18 -a raw pointer to `[u8; 2]` in an element, a payload, or a union field, which is not supported yet at fixtures/reject/src/lib.rs:1674:37 -a raw pointer to `[u8; 2]` in an element, a payload, or a union field, which is not supported yet at fixtures/reject/src/lib.rs:1674:44 -a reference to `[u8; 4]`, through which a raw pointer may be made, in a variable assigned again while that pointer may point there at fixtures/reject/src/lib.rs:1681:26 -a raw pointer to `[u8; 4]` in a variable assigned again while it may point there at fixtures/reject/src/lib.rs:1681:26 -a raw pointer to `[u8; 4]` in a variable assigned again while it may point there at fixtures/reject/src/lib.rs:1682:10 -const generic types are not supported: `Block` at fixtures/reject/src/lib.rs:2049:21 -`std::collections::LinkedList::::retain` with a mutable reference to a value JS copies, which its mapping would copy at fixtures/reject/src/lib.rs:2065:4 -`clone_from` of `std::collections::LinkedList`, whose items' `clone_from` is their own, which is not supported yet at fixtures/reject/src/lib.rs:2066:4 -`std::default::Default::default` with a mutable reference to a value JS copies, which its mapping would copy at fixtures/reject/src/lib.rs:2067:2 -a mapped guard of `{closure@fixtures/reject/src/lib.rs:2099:38: 2099:50}`, which JS can't write in place at fixtures/reject/src/lib.rs:2100:10 -a pointer into `(u8, u8)`, which JS keeps as an object that knows no array it is in at fixtures/reject/src/lib.rs:2107:12 -an offset of a pointer to `(u8, u8)`, which JS keeps as an object that knows no array it is in at fixtures/reject/src/lib.rs:2109:13 -a copy between pointers to `(u8, u8)`, which JS keeps as an object that knows no array it is in at fixtures/reject/src/lib.rs:2110:3 -a slice from a pointer to `(u8, u8)`, which JS keeps as an object that knows no array it is in at fixtures/reject/src/lib.rs:2111:11 -a pointer into an array of `(u8, u8)`, which JS keeps as an object that knows no array it is in at fixtures/reject/src/lib.rs:2112:30 -`offset_from` of pointers to `(u8, u8)`, which JS keeps as an object that knows no array it is in at fixtures/reject/src/lib.rs:2113:36 -`offset_from` of pointers to `()`, which has no bytes at fixtures/reject/src/lib.rs:2120:13 -a slice of `()`, which has no bytes, from a pointer at fixtures/reject/src/lib.rs:2120:39 -a cast from a pointer to `u32` to one to `[u32; 2]`, which reads the bytes of one type as another at fixtures/reject/src/lib.rs:2125:13 -a raw pointer to `[u32; 3]` in a variable assigned again while it may point there at fixtures/reject/src/lib.rs:2138:10 -a raw pointer to `[u32; 3]` in `Lanes`, which the crate may put another object in place of at fixtures/reject/src/lib.rs:2140:10 -`offset_from` between a pointer into a value in no array and one into a value in no array, which JS keeps in different arrays at fixtures/reject/src/lib.rs:2173:5 -`offset_from` between a pointer into a value in no array and one into a value in no array, which JS keeps in different arrays at fixtures/reject/src/lib.rs:2174:26 -`offset_from` between a pointer into an array of this body's own and one into an array of this body's own, which JS keeps in different arrays at fixtures/reject/src/lib.rs:2175:24 -`offset_from` between a pointer into an array of this body's own and one into an array of this body's own, which JS keeps in different arrays at fixtures/reject/src/lib.rs:2176:23 -`offset_from` between a pointer into a shared slice JS copies and one into an array of this body's own, which JS keeps in different arrays at fixtures/reject/src/lib.rs:2177:20 -`offset_from` between a pointer into a shared slice JS copies and one into a value in no array, which JS keeps in different arrays at fixtures/reject/src/lib.rs:2178:21 -a raw or mutable slice of a byte in no array of bytes at fixtures/reject/src/lib.rs:2184:12 -a raw or mutable slice of a byte in no array of bytes at fixtures/reject/src/lib.rs:2185:19 -a copy reaching past a shared slice JS copies, which JS keeps apart from what holds it in Rust at fixtures/reject/src/lib.rs:2196:3 -a pointer reaching past a shared slice JS copies, which JS keeps apart from what holds it in Rust at fixtures/reject/src/lib.rs:2198:18 -a slice reaching past a value in no array, which JS keeps apart from what holds it in Rust at fixtures/reject/src/lib.rs:2199:6 -a pointer reaching past a value in no array, which JS keeps apart from what holds it in Rust at fixtures/reject/src/lib.rs:2200:27 -a pointer reaching past a shared slice JS copies, which JS keeps apart from what holds it in Rust at fixtures/reject/src/lib.rs:2201:21 -a slice of one byte's place, which a byte slice can view only in an array of bytes at fixtures/reject/src/lib.rs:2208:2 -a slice or a cell of a mutable reference to `Reused` that names no place, which a whole write would replace only there at fixtures/reject/src/lib.rs:2214:2 -`Clone::clone_from` of `std::vec::Vec`, whose `clone_from` is its own, which is not supported yet at fixtures/reject/src/lib.rs:2219:4 -unsupported call to `std::mem::size_of_val::` at fixtures/reject/src/lib.rs:2224:2 -a raw pointer to `(u32, u32)` in a variable assigned again while it may point there at fixtures/reject/src/lib.rs:2230:10 -a raw pointer to `(u32, u32)` in a variable assigned again while it may point there at fixtures/reject/src/lib.rs:2238:10 -a raw pointer to `(u32, u32)` in a variable assigned again while it may point there at fixtures/reject/src/lib.rs:2246:10 -a slice or a cell of a mutable reference to `std::cell::LazyCell` that names no place, which a whole write would replace only there at fixtures/reject/src/lib.rs:2256:3 -an assignment through a reference to `std::sync::LazyLock` at fixtures/reject/src/lib.rs:2261:2 -a slice or a cell of a mutable reference to `std::thread::LocalKey` that names no place, which a whole write would replace only there at fixtures/reject/src/lib.rs:2267:2 -a byte of memory from `alloc`, which JS keeps as the values a cast of its pointer types it as at fixtures/reject/src/lib.rs:2279:3 -a cast from a pointer to `u8` to one to `u32`, which reads the bytes of one type as another at fixtures/reject/src/lib.rs:2280:15 -a cast from a pointer to `u8` to one to `Halves`, which reads the bytes of one type as another at fixtures/reject/src/lib.rs:2281:16 -a cast from a pointer to `u32` to one to `u8`, which reads the bytes of one type as another at fixtures/reject/src/lib.rs:2283:15 -unsupported call to `std::alloc::alloc_zeroed` at fixtures/reject/src/lib.rs:2308:13 -a cast from a pointer to `u8` to one to `u32`, which reads the bytes of one type as another at fixtures/reject/src/lib.rs:2308:12 -unsupported call to ` as std::cmp::PartialEq>::eq` at fixtures/reject/src/lib.rs:2314:25 -a constant of type `std::mem::ManuallyDrop` at fixtures/reject/src/lib.rs:2314:34 -unsupported call to ` as std::fmt::Debug>::fmt` at fixtures/reject/src/lib.rs:2314:11 -memory from `alloc` cast to pointers to `u32` and to `i32`, which reads the bytes of one type as another at fixtures/reject/src/lib.rs:2294:7 -memory from `alloc` cast to pointers to `i32` and to `u32`, which reads the bytes of one type as another at fixtures/reject/src/lib.rs:2295:11 -memory from `alloc` cast to pointers to `i32` and to `u32`, which reads the bytes of one type as another at fixtures/reject/src/lib.rs:2297:17 -memory from `alloc` cast to pointers to `u32` and to `i32`, which reads the bytes of one type as another at fixtures/reject/src/lib.rs:2298:21 -memory from `alloc` cast to pointers to `i32` and to `u32`, which reads the bytes of one type as another at fixtures/reject/src/lib.rs:2300:17 +a raw pointer to `std::cell::UnsafeCell` in `Hits`, which the crate may put another object in place of at fixtures/reject/src/lib.rs:655:21 +a raw pointer to a place of `()`, which has no address of its own at fixtures/reject/src/lib.rs:663:15 +a raw pointer to a place of `()`, which has no address of its own at fixtures/reject/src/lib.rs:663:29 +comparing pointers to `Bare`, which has no bytes and so no address of its own at fixtures/reject/src/lib.rs:663:70 +a dangling pointer to `Only`, a value of no bytes made of more than structs and tuples at fixtures/reject/src/lib.rs:672:11 +`Buf::copy_to_bytes` of `Blank`, a value JS copies, which is not supported at fixtures/reject/src/lib.rs:696:2 +unsupported call to ` as std::iter::Iterator>::is_sorted` at fixtures/reject/src/lib.rs:701:15 +comparing pointers to `u32` in an atomic, which JS has no address of at fixtures/reject/src/lib.rs:712:15 +a constant of type `&u32`, a pointer into memory translation can't name at fixtures/reject/src/lib.rs:713:3 +passing `{closure@fixtures/reject/src/lib.rs:719:11: 719:19}`, which drops, to `String::retain`, which is not supported yet at fixtures/reject/src/lib.rs:719:4 +a raw pointer to `(u32, u32)` in `Plain`, which the crate may put another object in place of at fixtures/reject/src/lib.rs:761:10 +a raw pointer to `(u32, u32)` in `Track`, which the crate may put another object in place of at fixtures/reject/src/lib.rs:787:19 +a raw pointer to `(u32, u32)` in `Lane`, which the crate may put another object in place of at fixtures/reject/src/lib.rs:807:19 +a raw pointer to `(u32, u32)` in `Gap`, which the crate may put another object in place of at fixtures/reject/src/lib.rs:843:10 +a raw pointer to `(u32, u32)` in `Gap`, which the crate may put another object in place of at fixtures/reject/src/lib.rs:844:10 +a raw pointer to `(u32, u32)` in `Gap`, which the crate may put another object in place of at fixtures/reject/src/lib.rs:845:58 +a raw pointer to `std::mem::MaybeUninit<(u32, u32)>` in `Gap`, which the crate may put another object in place of at fixtures/reject/src/lib.rs:857:19 +a raw pointer to `std::mem::MaybeUninit<(u32, u32)>` in `Gap`, which the crate may put another object in place of at fixtures/reject/src/lib.rs:858:19 +`collect` of `std::collections::BTreeMap, Noisy>`, which sorts by `std::cell::Cell`'s own `Ord`, of entries that drop, which is not supported yet at fixtures/reject/src/lib.rs:890:22 +a raw pointer to `std::cell::UnsafeCell<(u16, u16)>` in `Looped`, which the crate may put another object in place of at fixtures/reject/src/lib.rs:1045:26 +a raw pointer to `std::cell::UnsafeCell<(u16, u16)>` in `Aliased`, which the crate may put another object in place of at fixtures/reject/src/lib.rs:1055:29 +a raw pointer to `std::cell::UnsafeCell<(u16, u16)>` in `Rewritten`, which the crate may put another object in place of at fixtures/reject/src/lib.rs:1065:47 +a raw pointer to `std::cell::UnsafeCell<(u16, u16)>` in `Loaded`, which the crate may put another object in place of at fixtures/reject/src/lib.rs:1077:29 +a raw pointer to `std::cell::UnsafeCell<(u16, u16)>` in `Mapped`, which the crate may put another object in place of at fixtures/reject/src/lib.rs:1122:39 +a raw pointer to `std::cell::UnsafeCell<(u16, u16)>` in `Repeated`, which the crate may put another object in place of at fixtures/reject/src/lib.rs:1156:18 +a raw pointer to `std::cell::UnsafeCell<(u16, u16)>` in `Onced`, which the crate may put another object in place of at fixtures/reject/src/lib.rs:1168:46 +`std::iter::once` with a mutable reference to a value JS copies, which its mapping would copy at fixtures/reject/src/lib.rs:1170:22 +a raw pointer to `(u16, u16)` in `Pushed`, which the crate may put another object in place of at fixtures/reject/src/lib.rs:1183:22 +`Extend` of `(std::vec::Vec, Tens)` by `(u8, u8)`, whose `Tens` of `u8` is not supported yet at fixtures/reject/src/lib.rs:1207:31 +unsupported call to `core::num::::is_ascii_octdigit` at fixtures/reject/src/lib.rs:1212:4 +a reference through which a raw pointer may be made into `InArray` in `[InArray; 2]`, which the crate may put another object in place of at fixtures/reject/src/lib.rs:1272:33 +a reference through which a raw pointer may be made into `InTuple` in `(u16, InTuple)`, which the crate may put another object in place of at fixtures/reject/src/lib.rs:1281:33 +a reference through which a raw pointer may be made into `Mid` in `Outer`, which the crate may put another object in place of at fixtures/reject/src/lib.rs:1290:34 +a reference through which a raw pointer may be made into `InPayload` in an element, a payload, or a union field, which is not supported yet at fixtures/reject/src/lib.rs:1299:11 +a reference through which a raw pointer may be made into `Mid` in `Outer`, which the crate may put another object in place of at fixtures/reject/src/lib.rs:1311:33 +a reference through which a raw pointer may be made into `Mid` in `Outer`, which the crate may put another object in place of at fixtures/reject/src/lib.rs:1324:35 +a reference through which a raw pointer may be made into `InWritten` in `[InWritten; 1]`, which the crate may put another object in place of at fixtures/reject/src/lib.rs:1333:35 +a raw pointer to `std::cell::UnsafeCell` in `ByRead`, which the crate may put another object in place of at fixtures/reject/src/lib.rs:1390:35 +a raw pointer to `std::cell::UnsafeCell` in `ByWrite`, which the crate may put another object in place of at fixtures/reject/src/lib.rs:1403:35 +a raw pointer to `std::cell::UnsafeCell` in `BySwap`, which the crate may put another object in place of at fixtures/reject/src/lib.rs:1416:35 +a raw pointer to `std::cell::UnsafeCell` in `ByReplace`, which the crate may put another object in place of at fixtures/reject/src/lib.rs:1428:35 +a raw pointer to `std::cell::UnsafeCell` in `ByBox`, which the crate may put another object in place of at fixtures/reject/src/lib.rs:1439:35 +a raw pointer to `std::cell::UnsafeCell` in `ByClosure`, which the crate may put another object in place of at fixtures/reject/src/lib.rs:1454:35 +a raw pointer to `std::cell::UnsafeCell` in `ByObject`, which the crate may put another object in place of at fixtures/reject/src/lib.rs:1467:35 +a raw pointer to `std::cell::UnsafeCell` in `ByInstance`, which the crate may put another object in place of at fixtures/reject/src/lib.rs:1480:35 +a raw pointer to `std::cell::UnsafeCell` in `BySwapped`, which the crate may put another object in place of at fixtures/reject/src/lib.rs:1489:76 +a raw pointer to `std::cell::UnsafeCell` in `ByExchanged`, which the crate may put another object in place of at fixtures/reject/src/lib.rs:1500:30 +a raw pointer to `ByRefReplace` in `(u16, ByRefReplace)`, which the crate may put another object in place of at fixtures/reject/src/lib.rs:1532:32 +a raw pointer to `ByRefTake` in `(u16, ByRefTake)`, which the crate may put another object in place of at fixtures/reject/src/lib.rs:1540:32 +a raw pointer to `ByKeySet` in `(u16, ByKeySet)`, which the crate may put another object in place of at fixtures/reject/src/lib.rs:1548:51 +a raw pointer to `ByKeyReplace` in `(u16, ByKeyReplace)`, which the crate may put another object in place of at fixtures/reject/src/lib.rs:1556:55 +a raw pointer to `ByKeyTake` in `(u16, ByKeyTake)`, which the crate may put another object in place of at fixtures/reject/src/lib.rs:1563:52 +unsupported call to `core::str::::as_bytes_mut` at fixtures/reject/src/lib.rs:1571:13 +`core::str::::get_unchecked_mut` with a mutable reference to a value JS copies, which its mapping would copy at fixtures/reject/src/lib.rs:1572:13 +`std::str::from_utf8_mut` with a mutable reference to a value JS copies, which its mapping would copy at fixtures/reject/src/lib.rs:1577:20 +a copy between pointers to `[u8; 4]`, which JS keeps as an object that knows no array it is in at fixtures/reject/src/lib.rs:1645:3 +a copy between pointers to `[u8; 4]`, which JS keeps as an object that knows no array it is in at fixtures/reject/src/lib.rs:1646:3 +unsupported call to `std::ptr::addr_eq::<[u8; 4], [u8; 4]>` at fixtures/reject/src/lib.rs:1647:14 +comparing `*mut [u8; 4]` at fixtures/reject/src/lib.rs:1647:41 +an offset of a pointer to `[u8; 4]`, which JS keeps as an object that knows no array it is in at fixtures/reject/src/lib.rs:1648:56 +an offset of a pointer to `[u8; 4]`, which JS keeps as an object that knows no array it is in at fixtures/reject/src/lib.rs:1648:73 +hashing `*const [u8; 4]` by its address, which JS has no counterpart of at fixtures/reject/src/lib.rs:1651:5 +a raw pointer to `[u8; 3]` in an element, a payload, or a union field, which is not supported yet at fixtures/reject/src/lib.rs:1661:15 +a raw pointer to `[u8; 3]` in an element, a payload, or a union field, which is not supported yet at fixtures/reject/src/lib.rs:1661:18 +a raw pointer to `[u8; 2]` in an element, a payload, or a union field, which is not supported yet at fixtures/reject/src/lib.rs:1661:37 +a raw pointer to `[u8; 2]` in an element, a payload, or a union field, which is not supported yet at fixtures/reject/src/lib.rs:1661:44 +a reference to `[u8; 4]`, through which a raw pointer may be made, in a variable assigned again while that pointer may point there at fixtures/reject/src/lib.rs:1668:26 +a raw pointer to `[u8; 4]` in a variable assigned again while it may point there at fixtures/reject/src/lib.rs:1668:26 +a raw pointer to `[u8; 4]` in a variable assigned again while it may point there at fixtures/reject/src/lib.rs:1669:10 +const generic types are not supported: `Block` at fixtures/reject/src/lib.rs:2036:21 +`std::collections::LinkedList::::retain` with a mutable reference to a value JS copies, which its mapping would copy at fixtures/reject/src/lib.rs:2052:4 +`clone_from` of `std::collections::LinkedList`, whose items' `clone_from` is their own, which is not supported yet at fixtures/reject/src/lib.rs:2053:4 +`std::default::Default::default` with a mutable reference to a value JS copies, which its mapping would copy at fixtures/reject/src/lib.rs:2054:2 +a mapped guard of `{closure@fixtures/reject/src/lib.rs:2086:38: 2086:50}`, which JS can't write in place at fixtures/reject/src/lib.rs:2087:10 +a pointer into `(u8, u8)`, which JS keeps as an object that knows no array it is in at fixtures/reject/src/lib.rs:2094:12 +an offset of a pointer to `(u8, u8)`, which JS keeps as an object that knows no array it is in at fixtures/reject/src/lib.rs:2096:13 +a copy between pointers to `(u8, u8)`, which JS keeps as an object that knows no array it is in at fixtures/reject/src/lib.rs:2097:3 +a slice from a pointer to `(u8, u8)`, which JS keeps as an object that knows no array it is in at fixtures/reject/src/lib.rs:2098:11 +a pointer into an array of `(u8, u8)`, which JS keeps as an object that knows no array it is in at fixtures/reject/src/lib.rs:2099:30 +`offset_from` of pointers to `(u8, u8)`, which JS keeps as an object that knows no array it is in at fixtures/reject/src/lib.rs:2100:36 +`offset_from` of pointers to `()`, which has no bytes at fixtures/reject/src/lib.rs:2107:13 +a slice of `()`, which has no bytes, from a pointer at fixtures/reject/src/lib.rs:2107:39 +a cast from a pointer to `u32` to one to `[u32; 2]`, which reads the bytes of one type as another at fixtures/reject/src/lib.rs:2112:13 +a raw pointer to `[u32; 3]` in a variable assigned again while it may point there at fixtures/reject/src/lib.rs:2125:10 +a raw pointer to `[u32; 3]` in `Lanes`, which the crate may put another object in place of at fixtures/reject/src/lib.rs:2127:10 +`offset_from` between a pointer into a value in no array and one into a value in no array, which JS keeps in different arrays at fixtures/reject/src/lib.rs:2160:5 +`offset_from` between a pointer into a value in no array and one into a value in no array, which JS keeps in different arrays at fixtures/reject/src/lib.rs:2161:26 +`offset_from` between a pointer into an array of this body's own and one into an array of this body's own, which JS keeps in different arrays at fixtures/reject/src/lib.rs:2162:24 +`offset_from` between a pointer into an array of this body's own and one into an array of this body's own, which JS keeps in different arrays at fixtures/reject/src/lib.rs:2163:23 +`offset_from` between a pointer into a shared slice JS copies and one into an array of this body's own, which JS keeps in different arrays at fixtures/reject/src/lib.rs:2164:20 +`offset_from` between a pointer into a shared slice JS copies and one into a value in no array, which JS keeps in different arrays at fixtures/reject/src/lib.rs:2165:21 +a raw or mutable slice of a byte in no array of bytes at fixtures/reject/src/lib.rs:2171:12 +a raw or mutable slice of a byte in no array of bytes at fixtures/reject/src/lib.rs:2172:19 +a copy reaching past a shared slice JS copies, which JS keeps apart from what holds it in Rust at fixtures/reject/src/lib.rs:2183:3 +a pointer reaching past a shared slice JS copies, which JS keeps apart from what holds it in Rust at fixtures/reject/src/lib.rs:2185:18 +a slice reaching past a value in no array, which JS keeps apart from what holds it in Rust at fixtures/reject/src/lib.rs:2186:6 +a pointer reaching past a value in no array, which JS keeps apart from what holds it in Rust at fixtures/reject/src/lib.rs:2187:27 +a pointer reaching past a shared slice JS copies, which JS keeps apart from what holds it in Rust at fixtures/reject/src/lib.rs:2188:21 +a slice of one byte's place, which a byte slice can view only in an array of bytes at fixtures/reject/src/lib.rs:2195:2 +a slice or a cell of a mutable reference to `Reused` that names no place, which a whole write would replace only there at fixtures/reject/src/lib.rs:2201:2 +`Clone::clone_from` of `std::vec::Vec`, whose `clone_from` is its own, which is not supported yet at fixtures/reject/src/lib.rs:2206:4 +unsupported call to `std::mem::size_of_val::` at fixtures/reject/src/lib.rs:2211:2 +a raw pointer to `(u32, u32)` in a variable assigned again while it may point there at fixtures/reject/src/lib.rs:2217:10 +a raw pointer to `(u32, u32)` in a variable assigned again while it may point there at fixtures/reject/src/lib.rs:2225:10 +a raw pointer to `(u32, u32)` in a variable assigned again while it may point there at fixtures/reject/src/lib.rs:2233:10 +a slice or a cell of a mutable reference to `std::cell::LazyCell` that names no place, which a whole write would replace only there at fixtures/reject/src/lib.rs:2243:3 +an assignment through a reference to `std::sync::LazyLock` at fixtures/reject/src/lib.rs:2248:2 +a slice or a cell of a mutable reference to `std::thread::LocalKey` that names no place, which a whole write would replace only there at fixtures/reject/src/lib.rs:2254:2 +a byte of memory from `alloc`, which JS keeps as the values a cast of its pointer types it as at fixtures/reject/src/lib.rs:2266:3 +a cast from a pointer to `u8` to one to `u32`, which reads the bytes of one type as another at fixtures/reject/src/lib.rs:2267:15 +a cast from a pointer to `u8` to one to `Halves`, which reads the bytes of one type as another at fixtures/reject/src/lib.rs:2268:16 +a cast from a pointer to `u32` to one to `u8`, which reads the bytes of one type as another at fixtures/reject/src/lib.rs:2270:15 +unsupported call to `std::alloc::alloc_zeroed` at fixtures/reject/src/lib.rs:2295:13 +a cast from a pointer to `u8` to one to `u32`, which reads the bytes of one type as another at fixtures/reject/src/lib.rs:2295:12 +unsupported call to ` as std::cmp::PartialEq>::eq` at fixtures/reject/src/lib.rs:2301:25 +a constant of type `std::mem::ManuallyDrop` at fixtures/reject/src/lib.rs:2301:34 +unsupported call to ` as std::fmt::Debug>::fmt` at fixtures/reject/src/lib.rs:2301:11 +memory from `alloc` cast to pointers to `u32` and to `i32`, which reads the bytes of one type as another at fixtures/reject/src/lib.rs:2281:7 +memory from `alloc` cast to pointers to `i32` and to `u32`, which reads the bytes of one type as another at fixtures/reject/src/lib.rs:2282:11 +memory from `alloc` cast to pointers to `i32` and to `u32`, which reads the bytes of one type as another at fixtures/reject/src/lib.rs:2284:17 +memory from `alloc` cast to pointers to `u32` and to `i32`, which reads the bytes of one type as another at fixtures/reject/src/lib.rs:2285:21 +memory from `alloc` cast to pointers to `i32` and to `u32`, which reads the bytes of one type as another at fixtures/reject/src/lib.rs:2287:17 overriding `Iterator::fold`, which std's adaptors call in place of `next` or beside it at fixtures/reject/src/lib.rs:125:2 overriding `DoubleEndedIterator::nth_back`, which std's adaptors call in place of `next` or beside it at fixtures/reject/src/lib.rs:150:2 -a raw pointer to `std::cell::UnsafeCell<(u16, u16)>` in `Escaped`, which the crate may put another object in place of at fixtures/reject/src/lib.rs:1020:43 -a raw pointer to `std::cell::UnsafeCell<(u16, u16)>` in `Called`, which the crate may put another object in place of at fixtures/reject/src/lib.rs:1034:28 -a raw pointer to `(u16, u16)` in `Copied`, which the crate may put another object in place of at fixtures/reject/src/lib.rs:1124:31 -a raw pointer to `std::cell::UnsafeCell` in `InArray`, which the crate may put another object in place of at fixtures/reject/src/lib.rs:1250:9 -a raw pointer to `std::cell::UnsafeCell` in `InTuple`, which the crate may put another object in place of at fixtures/reject/src/lib.rs:1254:9 -a raw pointer to `std::cell::UnsafeCell` in `InNested`, which the crate may put another object in place of at fixtures/reject/src/lib.rs:1258:9 -a raw pointer to `std::cell::UnsafeCell` in `InPayload`, which the crate may put another object in place of at fixtures/reject/src/lib.rs:1262:9 -a raw pointer to `std::cell::UnsafeCell` in `InField`, which the crate may put another object in place of at fixtures/reject/src/lib.rs:1266:9 -a raw pointer to `std::cell::UnsafeCell` in `InGeneric`, which the crate may put another object in place of at fixtures/reject/src/lib.rs:1270:9 -a raw pointer to `std::cell::UnsafeCell` in `InWritten`, which the crate may put another object in place of at fixtures/reject/src/lib.rs:1274:9 -a reference to `std::option::Option>`, through which a raw pointer may be made, in a variable assigned again while that pointer may point there at fixtures/reject/src/lib.rs:2056:13 -a raw pointer to `(u8, u8)` in `([Cloned; 2], (u8, u8))`, which the crate may put another object in place of at fixtures/reject/src/lib.rs:2321:23 -a raw pointer to `(u8, u8)` in `(Dropped, (u8, u8))`, which the crate may put another object in place of at fixtures/reject/src/lib.rs:2321:23 -a raw pointer to `(u8, u8)` in `([Greatest; 2], (u8, u8))`, which the crate may put another object in place of at fixtures/reject/src/lib.rs:2377:13 -a raw pointer to `(u8, u8)` in `([Touched; 2], (u8, u8))`, which the crate may put another object in place of at fixtures/reject/src/lib.rs:2321:23 +a raw pointer to `std::cell::UnsafeCell<(u16, u16)>` in `Escaped`, which the crate may put another object in place of at fixtures/reject/src/lib.rs:1007:43 +a raw pointer to `std::cell::UnsafeCell<(u16, u16)>` in `Called`, which the crate may put another object in place of at fixtures/reject/src/lib.rs:1021:28 +a raw pointer to `(u16, u16)` in `Copied`, which the crate may put another object in place of at fixtures/reject/src/lib.rs:1111:31 +a raw pointer to `std::cell::UnsafeCell` in `InArray`, which the crate may put another object in place of at fixtures/reject/src/lib.rs:1237:9 +a raw pointer to `std::cell::UnsafeCell` in `InTuple`, which the crate may put another object in place of at fixtures/reject/src/lib.rs:1241:9 +a raw pointer to `std::cell::UnsafeCell` in `InNested`, which the crate may put another object in place of at fixtures/reject/src/lib.rs:1245:9 +a raw pointer to `std::cell::UnsafeCell` in `InPayload`, which the crate may put another object in place of at fixtures/reject/src/lib.rs:1249:9 +a raw pointer to `std::cell::UnsafeCell` in `InField`, which the crate may put another object in place of at fixtures/reject/src/lib.rs:1253:9 +a raw pointer to `std::cell::UnsafeCell` in `InGeneric`, which the crate may put another object in place of at fixtures/reject/src/lib.rs:1257:9 +a raw pointer to `std::cell::UnsafeCell` in `InWritten`, which the crate may put another object in place of at fixtures/reject/src/lib.rs:1261:9 +a reference to `std::option::Option>`, through which a raw pointer may be made, in a variable assigned again while that pointer may point there at fixtures/reject/src/lib.rs:2043:13 +a raw pointer to `(u8, u8)` in `([Cloned; 2], (u8, u8))`, which the crate may put another object in place of at fixtures/reject/src/lib.rs:2308:23 +a raw pointer to `(u8, u8)` in `(Dropped, (u8, u8))`, which the crate may put another object in place of at fixtures/reject/src/lib.rs:2308:23 +a raw pointer to `(u8, u8)` in `([Greatest; 2], (u8, u8))`, which the crate may put another object in place of at fixtures/reject/src/lib.rs:2364:13 +a raw pointer to `(u8, u8)` in `([Touched; 2], (u8, u8))`, which the crate may put another object in place of at fixtures/reject/src/lib.rs:2308:23 diff --git a/ts/fixtures/reject/src/lib.rs b/ts/fixtures/reject/src/lib.rs index b69a8f453..3c1b0d1f8 100644 --- a/ts/fixtures/reject/src/lib.rs +++ b/ts/fixtures/reject/src/lib.rs @@ -167,19 +167,6 @@ pub fn keyed(range: std::ops::Range) -> bool { /// A type of no bytes. pub struct Bare; -/// A `skip` of a zip std reads by index, which a zip by index drops a pair at a time. -pub fn skipped_zip(v: &[u8]) -> usize { - let pairs = v.iter().map(|&n| Noisy(n)).zip(v.iter().map(|&n| Noisy(!n))); - pairs.skip(1).zip(0..2).count() -} - -/// A zip collected in place, which std reads by index and drops with what its closure owns. -pub fn zip_in_place(v: Vec) -> Vec { - let n = Noisy(1); - let owned = v.into_iter().map(move |x| x ^ (&n).0); - owned.zip(0..2u8).map(|(x, y)| x ^ y).collect() -} - /// A pinned reference is its referent in JS: replacing it would change what it points at. pub fn replace_pinned_ref<'a>(dst: &mut std::pin::Pin<&'a mut Noisy>, src: std::pin::Pin<&'a mut Noisy>) { *dst = src; diff --git a/ts/fixtures/reject/ts.toml b/ts/fixtures/reject/ts.toml index 6f3febbf5..a0fda861c 100644 --- a/ts/fixtures/reject/ts.toml +++ b/ts/fixtures/reject/ts.toml @@ -23,8 +23,6 @@ roots = [ "keyed", "keyed_across", "place_bounds", - "skipped_zip", - "zip_in_place", "replace_pinned_ref", "copied_closure", "scanned_unit", diff --git a/ts/fixtures/task/expected/core/option.ts b/ts/fixtures/task/expected/core/option.ts index 792b983f1..32ce161ff 100644 --- a/ts/fixtures/task/expected/core/option.ts +++ b/ts/fixtures/task/expected/core/option.ts @@ -107,6 +107,41 @@ export function map$01pvlgn(self: [Guard.Guard, Guard.Guard] | undefined, f: (a0 return f(self); } +export function map$01vf10a(self: [Guard.Guard, Guard.Guard] | undefined, f: (a0: [Guard.Guard, Guard.Guard]) => rt.u32): rt.u32 | undefined { + if (self === undefined) { + return undefined; + } + return f(self); +} + +export function map$0uom32p(self: [Guard.Guard, rt.u32] | undefined, f: (a0: [Guard.Guard, rt.u32]) => [rt.u32, rt.u32]): [rt.u32, rt.u32] | undefined { + if (self === undefined) { + return undefined; + } + return f(self); +} + +export function map$04djm2e(self: [[Guard.Guard, Guard.Guard], rt.u32] | undefined, f: (a0: [[Guard.Guard, Guard.Guard], rt.u32]) => [rt.u32, rt.u32, rt.u32]): [rt.u32, rt.u32, rt.u32] | undefined { + if (self === undefined) { + return undefined; + } + return f(self); +} + +export function map$1uj27tb(self: [[[rt.usize, Guard.Guard], Guard.Guard], rt.u32] | undefined, f: (a0: [[[rt.usize, Guard.Guard], Guard.Guard], rt.u32]) => [rt.usize, rt.u32, rt.u32, rt.u32]): [rt.usize, rt.u32, rt.u32, rt.u32] | undefined { + if (self === undefined) { + return undefined; + } + return f(self); +} + +export function map$1sprpgt(self: [[rt.usize, [Guard.Guard, Guard.Guard]], rt.i32] | undefined, f: (a0: [[rt.usize, [Guard.Guard, Guard.Guard]], rt.i32]) => [rt.usize, rt.u32, rt.i32]): [rt.usize, rt.u32, rt.i32] | undefined { + if (self === undefined) { + return undefined; + } + return f(self); +} + export function map$14zg54s(self: [rt.usize, Guard.Guard] | undefined, f: (a0: [rt.usize, Guard.Guard]) => [rt.usize, rt.u32]): [rt.usize, rt.u32] | undefined { if (self === undefined) { return undefined; diff --git a/ts/fixtures/task/expected/drops.ts b/ts/fixtures/task/expected/drops.ts index d2c515860..e7edd0ce4 100644 --- a/ts/fixtures/task/expected/drops.ts +++ b/ts/fixtures/task/expected/drops.ts @@ -6,7 +6,9 @@ import { thenSome$0zvoczk } from "./core/bool.ts"; import { isSomeAnd$17cacqw, unwrapOr$0v6ziq2 as option_unwrapOr$0v6ziq2, unwrapOr$1tvry1i as option_unwrapOr$1tvry1i, map$0hegtde as option_map$0hegtde, map$0ccnsmq as option_map$0ccnsmq, map$0782hf5 as option_map$0782hf5, map$0lq7mno as option_map$0lq7mno, mapOr$1w10sgd as option_mapOr$1w10sgd, mapOr$0ey19f0 as option_mapOr$0ey19f0, okOr$1alhe7b as option_okOr$1alhe7b, filter$1vqc90z, orElse$02wco5t as option_orElse$02wco5t, zip$1rr0evn, clone$1sxxxkp as option_clone$1sxxxkp } from "./core/option.ts"; import { ok$0rngk0g, err$126l6wy, asRef$01pd5k9, mapOr$1hlk3iq as result_mapOr$1hlk3iq, mapOrElse$196aho3 as result_mapOrElse$196aho3, andThen$0r804hk as result_andThen$0r804hk, unwrapOr$0urixfm as result_unwrapOr$0urixfm } from "./core/result.ts"; import { scoped, discarded, iterated } from "./drops/closures.ts"; +import { flattened as flattened_flattened } from "./drops/flattened.ts"; import { folded as folds_folded, rfolded as folds_rfolded } from "./drops/folds.ts"; +import { indexed as indexed_indexed } from "./drops/indexed.ts"; import { inside as inside_inside } from "./drops/inside.ts"; import { looped, collected, drained, extended, compared as iters_compared } from "./drops/iters.ts"; import { run as lists_run } from "./drops/lists.ts"; @@ -1290,6 +1292,19 @@ export function inside(log: Log.Log, id: rt.u32, arg: rt.u8): void { inside_inside(log, id, arg); } +/** + * Run scenario `arg % 10` of what a `flatten` drops of inner iterators that hold items + * once they end. + */ +export function flattened(log: Log.Log, id: rt.u32, arg: rt.u8): void { + flattened_flattened(log, id, arg); +} + +/** Run scenario `arg % 9` of what std drops of a zip it reads by index. */ +export function indexed(log: Log.Log, id: rt.u32, arg: rt.u8): void { + indexed_indexed(log, id, arg); +} + /** * Run scenario `arg % 7` of where std drops a closure given to a consumer or an entry. * The last panics in a fold. diff --git a/ts/fixtures/task/expected/drops/flattened.ts b/ts/fixtures/task/expected/drops/flattened.ts new file mode 100644 index 000000000..94c8a1fbf --- /dev/null +++ b/ts/fixtures/task/expected/drops/flattened.ts @@ -0,0 +1,347 @@ +// Generated by rust2-ts. Do not edit. + +import * as rt from "../rt.ts"; +import { drop$Vec_model_Guard as lib_drop$Vec_model_Guard, drop$tuple2_usize_model_Guard as lib_drop$tuple2_usize_model_Guard } from "../lib.ts"; +import { thenSome$0zvoczk } from "../core/bool.ts"; +import { map$1raha9y as option_map$1raha9y, map$14zg54s as option_map$14zg54s } from "../core/option.ts"; +import * as Log from "../log.Log.ts"; +import * as Guard from "../model.Guard.ts"; + +/** Three `Vec`s of guards, of 3, 2, and 3, numbered from `n`. */ +export function nested(log: Log.Log, id: rt.u32, n: rt.u32): Guard.Guard[][] { + const guards: (a0: rt.u32, a1: rt.u32) => Guard.Guard[] = (from: rt.u32, to: rt.u32): Guard.Guard[] => { + return rt.iterToArray(rt.iterMap(new rt.Range(from, to), (k: rt.u32): Guard.Guard => { + return Guard.new(rt.u32Add(id, k), Log.clone$Clone(log)); + }), undefined, 8, true); + }; + const all: Guard.Guard[][] = []; + const _9: Guard.Guard[] = guards(n, rt.u32Add(n, 3)); + all.push(_9); + const _16: Guard.Guard[] = guards(rt.u32Add(n, 3), rt.u32Add(n, 5)); + all.push(_16); + const _25: Guard.Guard[] = guards(rt.u32Add(n, 5), rt.u32Add(n, 8)); + all.push(_25); + return all; +} + +/** A flatten of the first of each of `nested`'s from `n`, which logs each it makes. */ +export function firsts(log: Log.Log, id: rt.u32, n: rt.u32): rt.Iter { + const _5: rt.Iter = rt.iterSlice(nested(log, id, n), lib_drop$Vec_model_Guard); + const captured = id; + return rt.iterFlatten(rt.iterMap(_5, (v: Guard.Guard[]): rt.Iter => { + const part = rt.u32Sub(Guard.id(v[rt.idx(v, 0)]), captured); + const args2: rt.Fmt[] = [(f: rt.Formatter) => rt.u32Display(part, f)]; + Log.note(log, rt.fmtFormat(["inner ", args2[0]])); + return rt.iterTake(rt.iterSlice(v, rt.drop), 1, rt.drop); + }), undefined, true); +} + +/** Run scenario `arg % 10`. */ +export function flattened(log: Log.Log, id: rt.u32, arg: rt.u8): void { + const idOf: (a0: Guard.Guard | undefined) => rt.u32 | undefined = (g2: Guard.Guard | undefined): rt.u32 | undefined => { + return option_map$1raha9y(g2, (g3: Guard.Guard): rt.u32 => { + const _02: rt.u32 = rt.u32Sub(Guard.id(g3), id); + g3[Symbol.dispose](); + return _02; + }); + }; + const _6: rt.u8 = rt.u8Rem(arg, 10); + if (_6 === 0) { + const it: rt.Iter = firsts(log, id, 1); + const part62 = rt.iterToOption(it.next()); + const part63 = idOf(part62); + const args2: rt.Fmt[] = [(f: rt.Formatter) => rt.fmtOption(part63, f, rt.u32Debug)]; + Log.note(log, rt.fmtFormat(["next ", args2[0]])); + const part64 = rt.iterToOption(it.next()); + const part65 = idOf(part64); + const args4: rt.Fmt[] = [(f: rt.Formatter) => rt.fmtOption(part65, f, rt.u32Debug)]; + Log.note(log, rt.fmtFormat(["next ", args4[0]])); + rt.drop(it); + const iter: rt.Iter = firsts(log, id, 20); + while (true) { + const _44: Guard.Guard | rt.Done = iter.next(); + if (_44 === rt.DONE) { + break; + } + const g: Guard.Guard = _44; + const part66 = rt.u32Sub(Guard.id(g), id); + const args6: rt.Fmt[] = [(f: rt.Formatter) => rt.u32Display(part66, f)]; + Log.note(log, rt.fmtFormat(["for ", args6[0]])); + g[Symbol.dispose](); + } + rt.drop(iter); + } else if (_6 === 1) { + rt.iterForEach(firsts(log, id, 1), (g26: Guard.Guard): undefined => { + const part58 = rt.u32Sub(Guard.id(g26), id); + const args82: rt.Fmt[] = [(f: rt.Formatter) => rt.u32Display(part58, f)]; + Log.note(log, rt.fmtFormat(["each ", args82[0]])); + g26[Symbol.dispose](); + }, true); + const part59 = rt.ownedCount(firsts(log, id, 20), rt.drop); + const args8: rt.Fmt[] = [(f: rt.Formatter) => rt.usizeDisplay(part59, f)]; + Log.note(log, rt.fmtFormat(["count ", args8[0]])); + const part60 = rt.ownedLast(firsts(log, id, 40), rt.drop); + const part61 = idOf(part60); + const args10: rt.Fmt[] = [(f: rt.Formatter) => rt.fmtOption(part61, f, rt.u32Debug)]; + Log.note(log, rt.fmtFormat(["last ", args10[0]])); + } else if (_6 === 2) { + const it2: rt.Iter = firsts(log, id, 1); + const part51 = rt.iterFind(it2, (g22: Guard.Guard): boolean => { + return Guard.id(g22) === rt.u32Add(id, 4); + }, rt.drop); + const part52 = idOf(part51); + const args12: rt.Fmt[] = [(f: rt.Formatter) => rt.fmtOption(part52, f, rt.u32Debug)]; + Log.note(log, rt.fmtFormat(["find ", args12[0]])); + const part53 = rt.iterToOption(it2.next()); + const part54 = idOf(part53); + const args14: rt.Fmt[] = [(f: rt.Formatter) => rt.fmtOption(part54, f, rt.u32Debug)]; + Log.note(log, rt.fmtFormat(["then ", args14[0]])); + rt.drop(it2); + const it3: rt.Iter = firsts(log, id, 20); + const part55 = rt.iterAny(it3, (g23: Guard.Guard): boolean => { + const _025: boolean = Guard.id(g23) === rt.u32Add(id, 99); + g23[Symbol.dispose](); + return _025; + }); + const args16: rt.Fmt[] = [(f: rt.Formatter) => rt.fmtBool(part55, f)]; + Log.note(log, rt.fmtFormat(["any ", args16[0]])); + rt.drop(it3); + const _153: rt.Iter = firsts(log, id, 40); + const part56 = rt.iterAll(_153, (g24: Guard.Guard): boolean => { + const _026: boolean = Guard.id(g24) !== rt.u32Add(id, 43); + g24[Symbol.dispose](); + return _026; + }); + const args18: rt.Fmt[] = [(f: rt.Formatter) => rt.fmtBool(part56, f)]; + const _147: string = rt.fmtFormat(["all ", args18[0]]); + rt.drop(_153); + Log.note(log, _147); + const _168: rt.Iter = firsts(log, id, 60); + const part57 = rt.iterPosition(_168, (g25: Guard.Guard): boolean => { + const _027: boolean = Guard.id(g25) === rt.u32Add(id, 63); + g25[Symbol.dispose](); + return _027; + }); + const args20: rt.Fmt[] = [(f: rt.Formatter) => rt.fmtOption(part57, f, rt.usizeDebug)]; + const _162: string = rt.fmtFormat(["position ", args20[0]]); + rt.drop(_168); + Log.note(log, _162); + } else if (_6 === 3) { + const it4: rt.Iter = rt.iterFilter(firsts(log, id, 1), (g19: Guard.Guard): boolean => { + return Guard.id(g19) !== rt.u32Add(id, 1); + }, rt.drop); + const part43 = rt.iterToOption(it4.next()); + const part44 = idOf(part43); + const args22: rt.Fmt[] = [(f: rt.Formatter) => rt.fmtOption(part44, f, rt.u32Debug)]; + Log.note(log, rt.fmtFormat(["filter ", args22[0]])); + const part45 = rt.iterToOption(it4.next()); + const part46 = idOf(part45); + const args24: rt.Fmt[] = [(f: rt.Formatter) => rt.fmtOption(part46, f, rt.u32Debug)]; + Log.note(log, rt.fmtFormat(["filter ", args24[0]])); + rt.drop(it4); + const it5: rt.Iter = rt.iterFilterMap(firsts(log, id, 20), (g20: Guard.Guard): Guard.Guard | undefined => { + return thenSome$0zvoczk(Guard.id(g20) !== rt.u32Add(id, 20), g20); + }); + const part47 = rt.iterToOption(it5.next()); + const part48 = idOf(part47); + const args26: rt.Fmt[] = [(f: rt.Formatter) => rt.fmtOption(part48, f, rt.u32Debug)]; + Log.note(log, rt.fmtFormat(["filter_map ", args26[0]])); + rt.drop(it5); + const it6: rt.Iter = rt.iterSkipWhile(firsts(log, id, 40), (g21: Guard.Guard): boolean => { + return Guard.id(g21) < rt.u32Add(id, 44); + }, rt.drop); + const part49 = rt.iterToOption(it6.next()); + const part50 = idOf(part49); + const args28: rt.Fmt[] = [(f: rt.Formatter) => rt.fmtOption(part50, f, rt.u32Debug)]; + Log.note(log, rt.fmtFormat(["skip_while ", args28[0]])); + rt.drop(it6); + } else if (_6 === 4) { + const it7: rt.Iter = firsts(log, id, 1); + const part35 = rt.iterNth(it7, 1, rt.drop); + const part36 = idOf(part35); + const args30: rt.Fmt[] = [(f: rt.Formatter) => rt.fmtOption(part36, f, rt.u32Debug)]; + Log.note(log, rt.fmtFormat(["nth ", args30[0]])); + rt.drop(it7); + const it8: rt.Iter = rt.iterSkip(firsts(log, id, 20), 1, rt.drop); + const part37 = rt.iterToOption(it8.next()); + const part38 = idOf(part37); + const args32: rt.Fmt[] = [(f: rt.Formatter) => rt.fmtOption(part38, f, rt.u32Debug)]; + Log.note(log, rt.fmtFormat(["skip ", args32[0]])); + rt.drop(it8); + const it9: rt.Iter = rt.iterStepBy(firsts(log, id, 40), 2, rt.drop); + const part39 = rt.iterToOption(it9.next()); + const part40 = idOf(part39); + const args34: rt.Fmt[] = [(f: rt.Formatter) => rt.fmtOption(part40, f, rt.u32Debug)]; + Log.note(log, rt.fmtFormat(["step ", args34[0]])); + const part41 = rt.iterToOption(it9.next()); + const part42 = idOf(part41); + const args36: rt.Fmt[] = [(f: rt.Formatter) => rt.fmtOption(part42, f, rt.u32Debug)]; + Log.note(log, rt.fmtFormat(["step ", args36[0]])); + rt.drop(it9); + } else if (_6 === 5) { + const it10: rt.Iter = firsts(log, id, 1); + const part21 = rt.iterToOption(it10.nextBack()); + const part22 = idOf(part21); + const args38: rt.Fmt[] = [(f: rt.Formatter) => rt.fmtOption(part22, f, rt.u32Debug)]; + Log.note(log, rt.fmtFormat(["back ", args38[0]])); + const part23 = rt.iterToOption(it10.next()); + const part24 = idOf(part23); + const args40: rt.Fmt[] = [(f: rt.Formatter) => rt.fmtOption(part24, f, rt.u32Debug)]; + Log.note(log, rt.fmtFormat(["front ", args40[0]])); + rt.drop(it10); + const it11: rt.Iter = firsts(log, id, 20); + const part25 = rt.iterRfind(it11, (g16: Guard.Guard): boolean => { + return Guard.id(g16) === rt.u32Add(id, 20); + }, rt.drop); + const part26 = idOf(part25); + const args42: rt.Fmt[] = [(f: rt.Formatter) => rt.fmtOption(part26, f, rt.u32Debug)]; + Log.note(log, rt.fmtFormat(["rfind ", args42[0]])); + rt.drop(it11); + const it12: rt.Iter = rt.iterRev(firsts(log, id, 40)); + const part27 = rt.iterFind(it12, (g17: Guard.Guard): boolean => { + return Guard.id(g17) === rt.u32Add(id, 43); + }, rt.drop); + const part28 = idOf(part27); + const args44: rt.Fmt[] = [(f: rt.Formatter) => rt.fmtOption(part28, f, rt.u32Debug)]; + Log.note(log, rt.fmtFormat(["rev find ", args44[0]])); + const part29 = rt.iterToOption(it12.next()); + const part30 = idOf(part29); + const args46: rt.Fmt[] = [(f: rt.Formatter) => rt.fmtOption(part30, f, rt.u32Debug)]; + Log.note(log, rt.fmtFormat(["rev next ", args46[0]])); + rt.drop(it12); + const it13: rt.Iter = rt.iterFilter(rt.iterRev(firsts(log, id, 60)), (g18: Guard.Guard): boolean => { + return Guard.id(g18) !== rt.u32Add(id, 65); + }, rt.drop); + const part31 = rt.iterToOption(it13.next()); + const part32 = idOf(part31); + const args48: rt.Fmt[] = [(f: rt.Formatter) => rt.fmtOption(part32, f, rt.u32Debug)]; + Log.note(log, rt.fmtFormat(["rev filter ", args48[0]])); + rt.drop(it13); + const _439: Guard.Guard[][] = nested(log, id, 80); + const it14: rt.Iter = rt.iterTake(rt.iterSlice(rt.vecSwapRemove(_439, 0), rt.drop), 1, rt.drop); + rt.dropAll(_439, lib_drop$Vec_model_Guard); + const part33 = rt.iterRfind(it14, (_28: Guard.Guard): boolean => { + return true; + }, rt.drop); + const part34 = idOf(part33); + const args50: rt.Fmt[] = [(f: rt.Formatter) => rt.fmtOption(part34, f, rt.u32Debug)]; + Log.note(log, rt.fmtFormat(["take rfind ", args50[0]])); + rt.drop(it14); + } else if (_6 === 6) { + const it15: rt.Iter = rt.iterMap(firsts(log, id, 1), (g12: Guard.Guard): rt.u32 => { + const _012: rt.u32 = rt.u32Sub(Guard.id(g12), id); + g12[Symbol.dispose](); + return _012; + }); + const part16 = rt.iterFind(it15, (_2: rt.u32): boolean => { + return _2 === 4; + }); + const args52: rt.Fmt[] = [(f: rt.Formatter) => rt.fmtOption(part16, f, rt.u32Debug)]; + Log.note(log, rt.fmtFormat(["map find ", args52[0]])); + rt.drop(it15); + const it16: rt.Iter<[rt.usize, Guard.Guard]> = rt.iterEnumerate(firsts(log, id, 20)); + const part17 = option_map$14zg54s(rt.iterFind(it16, (_23: [rt.usize, Guard.Guard]): boolean => { + return _23[0] === 1; + }, lib_drop$tuple2_usize_model_Guard), (_24: [rt.usize, Guard.Guard]): [rt.usize, rt.u32] => { + const i: rt.usize = _24[0]; + const g13: Guard.Guard = _24[1]; + const _015: [rt.usize, rt.u32] = [i, rt.u32Sub(Guard.id(g13), id)]; + g13[Symbol.dispose](); + return _015; + }); + const args54: rt.Fmt[] = [(f: rt.Formatter) => rt.fmtOption(part17, f, (value: [rt.usize, rt.u32], f: rt.Formatter) => rt.fmtTuple([(f: rt.Formatter) => rt.usizeDebug(value[0], f), (f: rt.Formatter) => rt.u32Debug(value[1], f)], f))]; + Log.note(log, rt.fmtFormat(["enumerate ", args54[0]])); + rt.drop(it16); + const part18 = rt.iterFold(rt.iterTake(firsts(log, id, 40), 2, rt.drop), 0, (n3: rt.u32, g14: Guard.Guard): rt.u32 => { + const _016: rt.u32 = rt.u32Sub(rt.u32Add(n3, Guard.id(g14)), id); + g14[Symbol.dispose](); + return _016; + }, true); + const args56: rt.Fmt[] = [(f: rt.Formatter) => rt.u32Display(part18, f)]; + Log.note(log, rt.fmtFormat(["take ", args56[0]])); + const it17: rt.Iter = rt.iterChain(firsts(log, id, 60), firsts(log, id, 80)); + const part19 = rt.iterFind(it17, (g15: Guard.Guard): boolean => { + return Guard.id(g15) === rt.u32Add(id, 81); + }, rt.drop); + const part20 = idOf(part19); + const args58: rt.Fmt[] = [(f: rt.Formatter) => rt.fmtOption(part20, f, rt.u32Debug)]; + Log.note(log, rt.fmtFormat(["chain ", args58[0]])); + rt.drop(it17); + } else if (_6 === 7) { + const it18: rt.Iter = rt.iterFlatMap(rt.iterSlice(nested(log, id, 1), lib_drop$Vec_model_Guard), (v: Guard.Guard[]): rt.Iter => { + return rt.iterTake(rt.iterSlice(v, rt.drop), 1, rt.drop); + }, undefined, true); + const part9 = rt.iterFind(it18, (g9: Guard.Guard): boolean => { + return Guard.id(g9) === rt.u32Add(id, 4); + }, rt.drop); + const part10 = idOf(part9); + const args60: rt.Fmt[] = [(f: rt.Formatter) => rt.fmtOption(part10, f, rt.u32Debug)]; + Log.note(log, rt.fmtFormat(["flat_map ", args60[0]])); + const part11 = rt.iterToOption(it18.next()); + const part12 = idOf(part11); + const args62: rt.Fmt[] = [(f: rt.Formatter) => rt.fmtOption(part12, f, rt.u32Debug)]; + Log.note(log, rt.fmtFormat(["flat_map ", args62[0]])); + rt.drop(it18); + const it19: rt.Peekable = rt.iterPeekable(firsts(log, id, 20), rt.drop); + const part13 = option_map$1raha9y(rt.peekablePeek(it19), (g10: Guard.Guard): rt.u32 => { + return rt.u32Sub(Guard.id(g10), id); + }); + const args64: rt.Fmt[] = [(f: rt.Formatter) => rt.fmtOption(part13, f, rt.u32Debug)]; + Log.note(log, rt.fmtFormat(["peek ", args64[0]])); + const part14 = rt.iterFind(it19, (g11: Guard.Guard): boolean => { + return Guard.id(g11) === rt.u32Add(id, 23); + }, rt.drop); + const part15 = idOf(part14); + const args66: rt.Fmt[] = [(f: rt.Formatter) => rt.fmtOption(part15, f, rt.u32Debug)]; + Log.note(log, rt.fmtFormat(["peek find ", args66[0]])); + rt.drop(it19); + } else if (_6 === 8) { + const all: Guard.Guard[] = rt.iterToArray(firsts(log, id, 1), "next", 8); + const part5 = all.length; + const args68: rt.Fmt[] = [(f: rt.Formatter) => rt.usizeDisplay(part5, f)]; + Log.note(log, rt.fmtFormat(["collect ", args68[0]])); + rt.dropAll(all); + const part6 = rt.iterMaxByKey(firsts(log, id, 20), (g7: Guard.Guard): rt.u32 => { + return rt.u32Rem(Guard.id(g7), 3); + }, rt.lt, true, rt.drop); + const part7 = idOf(part6); + const args70: rt.Fmt[] = [(f: rt.Formatter) => rt.fmtOption(part7, f, rt.u32Debug)]; + Log.note(log, rt.fmtFormat(["max ", args70[0]])); + const part8 = rt.iterSum(rt.iterMap(firsts(log, id, 40), (g8: Guard.Guard): rt.u32 => { + const _07: rt.u32 = rt.u32Sub(Guard.id(g8), id); + g8[Symbol.dispose](); + return _07; + }), rt.u32Add, 0, true); + const args72: rt.Fmt[] = [(f: rt.Formatter) => rt.u32Display(part8, f)]; + Log.note(log, rt.fmtFormat(["sum ", args72[0]])); + } else { + const it20: rt.Iter = firsts(log, id, 1); + const part = rt.iterAny(it20, (g4: Guard.Guard): boolean => { + const _03: boolean = Guard.id(g4) === rt.u32Add(id, 1); + g4[Symbol.dispose](); + return _03; + }); + const args74: rt.Fmt[] = [(f: rt.Formatter) => rt.fmtBool(part, f)]; + Log.note(log, rt.fmtFormat(["any ", args74[0]])); + const part2 = rt.iterFold(it20, 0, (n: rt.u32, g5: Guard.Guard): rt.u32 => { + const _04: rt.u32 = rt.u32Sub(rt.u32Add(rt.u32Mul(n, 100), Guard.id(g5)), id); + g5[Symbol.dispose](); + return _04; + }, true); + const args76: rt.Fmt[] = [(f: rt.Formatter) => rt.u32Display(part2, f)]; + Log.note(log, rt.fmtFormat(["rest ", args76[0]])); + const it21: rt.Iter = firsts(log, id, 20); + const part3 = rt.iterAny(it21, (g6: Guard.Guard): boolean => { + const _05: boolean = Guard.id(g6) === rt.u32Add(id, 23); + g6[Symbol.dispose](); + return _05; + }); + const args78: rt.Fmt[] = [(f: rt.Formatter) => rt.fmtBool(part3, f)]; + Log.note(log, rt.fmtFormat(["any ", args78[0]])); + const part4 = rt.ownedCount(it21, rt.drop); + const args80: rt.Fmt[] = [(f: rt.Formatter) => rt.usizeDisplay(part4, f)]; + Log.note(log, rt.fmtFormat(["count ", args80[0]])); + } +} + +//# sourceMappingURL=flattened.ts.map diff --git a/ts/fixtures/task/expected/drops/folds.ts b/ts/fixtures/task/expected/drops/folds.ts index 7e659f31c..ac3afed07 100644 --- a/ts/fixtures/task/expected/drops/folds.ts +++ b/ts/fixtures/task/expected/drops/folds.ts @@ -1695,7 +1695,7 @@ export function zips(log: Log.Log, id: rt.u32, arg: rt.u8): void { Log.note(log, rt.fmtFormat(["len ", args6[0], " ", args6[1], " ", args6[2]])); } else if (arg === 3) { const zip: () => rt.Iter<[Guard.Guard, Guard.Guard]> = (): rt.Iter<[Guard.Guard, Guard.Guard]> => { - return rt.iterZip(rt.iterMap(rt.iterSlice([1, 2, 3]), made), rt.iterMap(rt.iterSlice([4, 5]), made), "len", rt.drop, rt.drop); + return rt.iterZip(rt.iterMap(rt.iterSlice([1, 2, 3]), made), rt.iterMap(rt.iterSlice([4, 5]), made), "index", rt.drop, rt.drop); }; const n3: rt.usize = rt.ownedCount(zip(), lib_drop$tuple2_model_Guard_model_Guard); const at: rt.usize | undefined = rt.iterPosition(zip(), (_227: [Guard.Guard, Guard.Guard]): boolean => { @@ -1710,7 +1710,7 @@ export function zips(log: Log.Log, id: rt.u32, arg: rt.u8): void { a2[Symbol.dispose](); return _016; }), rt.u32Add, 0); - const skipped: rt.usize = rt.ownedCount(rt.iterZip(rt.iterMap(rt.iterSkip(rt.iterSlice([1, 2, 3, 4]), 1), made), rt.iterMap(new rt.Range(5, 7), made), "len", rt.drop, rt.drop), lib_drop$tuple2_model_Guard_model_Guard); + const skipped: rt.usize = rt.ownedCount(rt.iterZip(rt.iterMap(rt.iterSkip(rt.iterSlice([1, 2, 3, 4]), 1), made), rt.iterMap(new rt.Range(5, 7), made), "index", rt.drop, rt.drop), lib_drop$tuple2_model_Guard_model_Guard); const _181: [Guard.Guard, Guard.Guard] = [guard(10), guard(11)]; const c: Guard.Guard = _181[0]; const d: Guard.Guard = _181[1]; diff --git a/ts/fixtures/task/expected/drops/indexed.ts b/ts/fixtures/task/expected/drops/indexed.ts new file mode 100644 index 000000000..323c16ad0 --- /dev/null +++ b/ts/fixtures/task/expected/drops/indexed.ts @@ -0,0 +1,351 @@ +// Generated by rust2-ts. Do not edit. + +import * as rt from "../rt.ts"; +import { drop$tuple2_model_Guard_model_Guard as lib_drop$tuple2_model_Guard_model_Guard, drop$tuple2_tuple2_model_Guard_model_Guard_i32 as lib_drop$tuple2_tuple2_model_Guard_model_Guard_i32, drop$tuple2_tuple2_model_Guard_model_Guard_u32 as lib_drop$tuple2_tuple2_model_Guard_model_Guard_u32, drop$tuple2_tuple2_tuple2_model_Guard_model_Guard_i32_i32 as lib_drop$tuple2_tuple2_tuple2_model_Guard_model_Guard_i32_i32, drop$tuple2_tuple2_usize_model_Guard_model_Guard as lib_drop$tuple2_tuple2_usize_model_Guard_model_Guard, drop$tuple2_tuple2_usize_tuple2_model_Guard_model_Guard_i32 as lib_drop$tuple2_tuple2_usize_tuple2_model_Guard_model_Guard_i32, drop$tuple2_usize_model_Guard as lib_drop$tuple2_usize_model_Guard, drop$tuple2_usize_tuple2_model_Guard_model_Guard as lib_drop$tuple2_usize_tuple2_model_Guard_model_Guard } from "../lib.ts"; +import { map$01pvlgn as option_map$01pvlgn, map$01vf10a as option_map$01vf10a, map$0uom32p as option_map$0uom32p, map$04djm2e as option_map$04djm2e, map$1uj27tb as option_map$1uj27tb, map$1sprpgt as option_map$1sprpgt } from "../core/option.ts"; +import * as Log from "../log.Log.ts"; +import * as Guard from "../model.Guard.ts"; + +/** Run scenario `arg % 9`. */ +export function indexed(log: Log.Log, id: rt.u32, arg: rt.u8): void { + let f!: rt.usize; + const guard: (a0: rt.u32) => Guard.Guard = (n9: rt.u32): Guard.Guard => { + return Guard.new(rt.u32Add(id, n9), Log.clone$Clone(log)); + }; + const made: (a0: rt.u32) => Guard.Guard = (n10: rt.u32): Guard.Guard => { + const args60: rt.Fmt[] = [(f: rt.Formatter) => rt.u32Display(n10, f)]; + Log.note(log, rt.fmtFormat(["make ", args60[0]])); + return guard(n10); + }; + const v: rt.u32[] = [1, 2, 3, 4]; + const w: rt.u32[] = [11, 12, 13, 14]; + const pairs: () => rt.Iter<[Guard.Guard, Guard.Guard]> = (): rt.Iter<[Guard.Guard, Guard.Guard]> => { + const _33: rt.Iter = rt.iterSlice(v); + const captured = made; + const _2: rt.Iter = rt.iterMap(_33, (_22: rt.u32): Guard.Guard => { + return captured(_22); + }); + const _7: rt.Iter = rt.iterSlice(w); + const captured2 = made; + return rt.iterZip(_2, rt.iterMap(_7, (_24: rt.u32): Guard.Guard => { + return captured2(_24); + }), [true, true], rt.drop, rt.drop); + }; + const ids: (a0: [[Guard.Guard, Guard.Guard], rt.u32] | undefined) => [rt.u32, rt.u32, rt.u32] | undefined = (p2: [[Guard.Guard, Guard.Guard], rt.u32] | undefined): [rt.u32, rt.u32, rt.u32] | undefined => { + return option_map$04djm2e(p2, (_27: [[Guard.Guard, Guard.Guard], rt.u32]): [rt.u32, rt.u32, rt.u32] => { + const a2: Guard.Guard = _27[0][0]; + const b2: Guard.Guard = _27[0][1]; + const n13: rt.u32 = _27[1]; + const _07: [rt.u32, rt.u32, rt.u32] = [rt.u32Sub(Guard.id(a2), id), rt.u32Sub(Guard.id(b2), id), n13]; + b2[Symbol.dispose](); + a2[Symbol.dispose](); + return _07; + }); + }; + const _16: rt.u8 = rt.u8Rem(arg, 9); + if (_16 === 0) { + const n: rt.usize = rt.ownedCount(rt.iterZip(rt.iterSkip(pairs(), 1, lib_drop$tuple2_model_Guard_model_Guard), new rt.Range(0, 2), [true, false], lib_drop$tuple2_model_Guard_model_Guard), lib_drop$tuple2_tuple2_model_Guard_model_Guard_i32); + const it: rt.Iter<[[Guard.Guard, Guard.Guard], rt.u32]> = rt.iterZip(rt.iterSkip(pairs(), 2, lib_drop$tuple2_model_Guard_model_Guard), new rt.Range(0, 5), [true, false], lib_drop$tuple2_model_Guard_model_Guard); + const part35 = rt.iterToOption(it.next()); + const _35: [rt.u32, rt.u32, rt.u32] | undefined = ids(part35); + const args2: rt.Fmt[] = [(f: rt.Formatter) => rt.usizeDisplay(n, f), (f: rt.Formatter) => rt.fmtOption(_35, f, (value: [rt.u32, rt.u32, rt.u32], f: rt.Formatter) => rt.fmtTuple([(f: rt.Formatter) => rt.u32Debug(value[0], f), (f: rt.Formatter) => rt.u32Debug(value[1], f), (f: rt.Formatter) => rt.u32Debug(value[2], f)], f))]; + Log.note(log, rt.fmtFormat(["count ", args2[0], " ", args2[1]])); + const part36 = rt.iterToOption(it.next()); + const part37 = ids(part36); + const args4: rt.Fmt[] = [(f: rt.Formatter) => rt.fmtOption(part37, f, (value: [rt.u32, rt.u32, rt.u32], f: rt.Formatter) => rt.fmtTuple([(f: rt.Formatter) => rt.u32Debug(value[0], f), (f: rt.Formatter) => rt.u32Debug(value[1], f), (f: rt.Formatter) => rt.u32Debug(value[2], f)], f))]; + Log.note(log, rt.fmtFormat(["next ", args4[0]])); + const part38 = rt.iterToOption(it.next()); + const part39 = ids(part38); + const args6: rt.Fmt[] = [(f: rt.Formatter) => rt.fmtOption(part39, f, (value: [rt.u32, rt.u32, rt.u32], f: rt.Formatter) => rt.fmtTuple([(f: rt.Formatter) => rt.u32Debug(value[0], f), (f: rt.Formatter) => rt.u32Debug(value[1], f), (f: rt.Formatter) => rt.u32Debug(value[2], f)], f))]; + Log.note(log, rt.fmtFormat(["past ", args6[0]])); + } else if (_16 === 1) { + const it2: rt.Iter<[[Guard.Guard, Guard.Guard], rt.u32]> = rt.iterZip(rt.iterSkip(pairs(), 1, lib_drop$tuple2_model_Guard_model_Guard), new rt.Range(0, 2), [true, false], lib_drop$tuple2_model_Guard_model_Guard); + const part23 = rt.iterToOption(it2.nextBack()); + const part24 = ids(part23); + const args8: rt.Fmt[] = [(f: rt.Formatter) => rt.fmtOption(part24, f, (value: [rt.u32, rt.u32, rt.u32], f: rt.Formatter) => rt.fmtTuple([(f: rt.Formatter) => rt.u32Debug(value[0], f), (f: rt.Formatter) => rt.u32Debug(value[1], f), (f: rt.Formatter) => rt.u32Debug(value[2], f)], f))]; + Log.note(log, rt.fmtFormat(["back ", args8[0]])); + const part25 = rt.iterToOption(it2.nextBack()); + const part26 = ids(part25); + const args10: rt.Fmt[] = [(f: rt.Formatter) => rt.fmtOption(part26, f, (value: [rt.u32, rt.u32, rt.u32], f: rt.Formatter) => rt.fmtTuple([(f: rt.Formatter) => rt.u32Debug(value[0], f), (f: rt.Formatter) => rt.u32Debug(value[1], f), (f: rt.Formatter) => rt.u32Debug(value[2], f)], f))]; + Log.note(log, rt.fmtFormat(["back ", args10[0]])); + const part27 = rt.iterToOption(it2.nextBack()); + const part28 = ids(part27); + const args12: rt.Fmt[] = [(f: rt.Formatter) => rt.fmtOption(part28, f, (value: [rt.u32, rt.u32, rt.u32], f: rt.Formatter) => rt.fmtTuple([(f: rt.Formatter) => rt.u32Debug(value[0], f), (f: rt.Formatter) => rt.u32Debug(value[1], f), (f: rt.Formatter) => rt.u32Debug(value[2], f)], f))]; + Log.note(log, rt.fmtFormat(["back ", args12[0]])); + const part29 = rt.iterNth(rt.iterZip(rt.iterSkip(pairs(), 1, lib_drop$tuple2_model_Guard_model_Guard), new rt.Range(0, 3), [true, false], lib_drop$tuple2_model_Guard_model_Guard), 1, lib_drop$tuple2_tuple2_model_Guard_model_Guard_u32); + const part30 = ids(part29); + const args14: rt.Fmt[] = [(f: rt.Formatter) => rt.fmtOption(part30, f, (value: [rt.u32, rt.u32, rt.u32], f: rt.Formatter) => rt.fmtTuple([(f: rt.Formatter) => rt.u32Debug(value[0], f), (f: rt.Formatter) => rt.u32Debug(value[1], f), (f: rt.Formatter) => rt.u32Debug(value[2], f)], f))]; + Log.note(log, rt.fmtFormat(["nth ", args14[0]])); + const it4: rt.Iter<[[Guard.Guard, Guard.Guard], rt.u32]> = rt.iterZip(rt.iterSkip(pairs(), 1, lib_drop$tuple2_model_Guard_model_Guard), new rt.Range(0, 3), [true, false], lib_drop$tuple2_model_Guard_model_Guard); + const part31 = rt.iterToOption(it4.next()); + const part32 = ids(part31); + const args16: rt.Fmt[] = [(f: rt.Formatter) => rt.fmtOption(part32, f, (value: [rt.u32, rt.u32, rt.u32], f: rt.Formatter) => rt.fmtTuple([(f: rt.Formatter) => rt.u32Debug(value[0], f), (f: rt.Formatter) => rt.u32Debug(value[1], f), (f: rt.Formatter) => rt.u32Debug(value[2], f)], f))]; + Log.note(log, rt.fmtFormat(["front ", args16[0]])); + const part33 = rt.iterToOption(it4.nextBack()); + const part34 = ids(part33); + const args18: rt.Fmt[] = [(f: rt.Formatter) => rt.fmtOption(part34, f, (value: [rt.u32, rt.u32, rt.u32], f: rt.Formatter) => rt.fmtTuple([(f: rt.Formatter) => rt.u32Debug(value[0], f), (f: rt.Formatter) => rt.u32Debug(value[1], f), (f: rt.Formatter) => rt.u32Debug(value[2], f)], f))]; + Log.note(log, rt.fmtFormat(["back ", args18[0]])); + } else if (_16 === 2) { + const part22 = option_map$01pvlgn(rt.iterToOption(rt.iterSkip(pairs(), 1, lib_drop$tuple2_model_Guard_model_Guard).next()), (_250: [Guard.Guard, Guard.Guard]): [rt.u32, rt.u32] => { + const a13: Guard.Guard = _250[0]; + const b10: Guard.Guard = _250[1]; + const _034: [rt.u32, rt.u32] = [rt.u32Sub(Guard.id(a13), id), rt.u32Sub(Guard.id(b10), id)]; + b10[Symbol.dispose](); + a13[Symbol.dispose](); + return _034; + }); + const args20: rt.Fmt[] = [(f: rt.Formatter) => rt.fmtOption(part22, f, (value: [rt.u32, rt.u32], f: rt.Formatter) => rt.fmtTuple([(f: rt.Formatter) => rt.u32Debug(value[0], f), (f: rt.Formatter) => rt.u32Debug(value[1], f)], f))]; + Log.note(log, rt.fmtFormat(["skip next ", args20[0]])); + const n2: rt.usize = rt.ownedCount(rt.iterSkip(pairs(), 2, lib_drop$tuple2_model_Guard_model_Guard), lib_drop$tuple2_model_Guard_model_Guard); + const last: [rt.u32, rt.u32] | undefined = option_map$01pvlgn(rt.ownedLast(rt.iterSkip(pairs(), 1, lib_drop$tuple2_model_Guard_model_Guard), lib_drop$tuple2_model_Guard_model_Guard), (_254: [Guard.Guard, Guard.Guard]): [rt.u32, rt.u32] => { + const a14: Guard.Guard = _254[0]; + const b11: Guard.Guard = _254[1]; + const _035: [rt.u32, rt.u32] = [rt.u32Sub(Guard.id(a14), id), rt.u32Sub(Guard.id(b11), id)]; + b11[Symbol.dispose](); + a14[Symbol.dispose](); + return _035; + }); + const args22: rt.Fmt[] = [(f: rt.Formatter) => rt.usizeDisplay(n2, f), (f: rt.Formatter) => rt.fmtOption(last, f, (value: [rt.u32, rt.u32], f: rt.Formatter) => rt.fmtTuple([(f: rt.Formatter) => rt.u32Debug(value[0], f), (f: rt.Formatter) => rt.u32Debug(value[1], f)], f))]; + Log.note(log, rt.fmtFormat(["skip count ", args22[0], " ", args22[1]])); + } else if (_16 === 3) { + const part19 = rt.iterFold(rt.iterTake(rt.iterSkip(pairs(), 1, lib_drop$tuple2_model_Guard_model_Guard), 2, lib_drop$tuple2_model_Guard_model_Guard, true), 0, (n32: rt.u32, _316: [Guard.Guard, Guard.Guard]): rt.u32 => { + const a8: Guard.Guard = _316[0]; + const b6: Guard.Guard = _316[1]; + const _029: rt.u32 = rt.u32Sub(rt.u32Add(rt.u32Add(rt.u32Mul(n32, 100), Guard.id(a8)), Guard.id(b6)), rt.u32Mul(2, id)); + b6[Symbol.dispose](); + a8[Symbol.dispose](); + return _029; + }); + const args24: rt.Fmt[] = [(f: rt.Formatter) => rt.u32Display(part19, f)]; + Log.note(log, rt.fmtFormat(["take fold ", args24[0]])); + rt.iterForEach(rt.iterTake(rt.iterSkip(pairs(), 2, lib_drop$tuple2_model_Guard_model_Guard), 5, lib_drop$tuple2_model_Guard_model_Guard, true), (_241: [Guard.Guard, Guard.Guard]): undefined => { + const a9: Guard.Guard = _241[0]; + const b7: Guard.Guard = _241[1]; + const _1017: rt.u32 = rt.u32Sub(Guard.id(a9), id); + const _1612: rt.u32 = rt.u32Sub(Guard.id(b7), id); + const args64: rt.Fmt[] = [(f: rt.Formatter) => rt.u32Display(_1017, f), (f: rt.Formatter) => rt.u32Display(_1612, f)]; + Log.note(log, rt.fmtFormat(["each ", args64[0], " ", args64[1]])); + b7[Symbol.dispose](); + a9[Symbol.dispose](); + }); + const part20 = option_map$01vf10a(rt.iterFind(rt.iterTake(rt.iterSkip(pairs(), 1, lib_drop$tuple2_model_Guard_model_Guard), 3, lib_drop$tuple2_model_Guard_model_Guard, true), (_247: [Guard.Guard, Guard.Guard]): boolean => { + return Guard.id(_247[0]) === rt.u32Add(id, 3); + }, lib_drop$tuple2_model_Guard_model_Guard), (_248: [Guard.Guard, Guard.Guard]): rt.u32 => { + const a10: Guard.Guard = _248[0]; + const _031: rt.u32 = rt.u32Sub(Guard.id(a10), id); + a10[Symbol.dispose](); + _248[1][Symbol.dispose](); + return _031; + }); + const args26: rt.Fmt[] = [(f: rt.Formatter) => rt.fmtOption(part20, f, rt.u32Debug)]; + Log.note(log, rt.fmtFormat(["take find ", args26[0]])); + const n4: rt.u32 = rt.iterFold(rt.iterTake(rt.iterSkip(pairs(), 4, lib_drop$tuple2_model_Guard_model_Guard), 1, lib_drop$tuple2_model_Guard_model_Guard, true), 0, (n33: rt.u32, _318: [Guard.Guard, Guard.Guard]): rt.u32 => { + const a11: Guard.Guard = _318[0]; + const b8: Guard.Guard = _318[1]; + const _032: rt.u32 = rt.u32Add(rt.u32Add(n33, Guard.id(a11)), Guard.id(b8)); + b8[Symbol.dispose](); + a11[Symbol.dispose](); + return _032; + }); + const m: rt.u32 = rt.iterFold(rt.iterTake(rt.iterSkip(pairs(), 3, lib_drop$tuple2_model_Guard_model_Guard), 2, lib_drop$tuple2_model_Guard_model_Guard, true), 0, (n34: rt.u32, _320: [Guard.Guard, Guard.Guard]): rt.u32 => { + const a12: Guard.Guard = _320[0]; + const b9: Guard.Guard = _320[1]; + const _033: rt.u32 = rt.u32Sub(rt.u32Add(rt.u32Add(rt.u32Mul(n34, 100), Guard.id(a12)), Guard.id(b9)), rt.u32Mul(2, id)); + b9[Symbol.dispose](); + a12[Symbol.dispose](); + return _033; + }); + const args28: rt.Fmt[] = [(f: rt.Formatter) => rt.u32Display(n4, f), (f: rt.Formatter) => rt.u32Display(m, f)]; + Log.note(log, rt.fmtFormat(["take past ", args28[0], " ", args28[1]])); + const part21 = rt.ownedCount(rt.iterZip(rt.iterSkip(pairs(), 1, lib_drop$tuple2_model_Guard_model_Guard), rt.iterSlice([0, 1]), "index", lib_drop$tuple2_model_Guard_model_Guard), lib_drop$tuple2_tuple2_model_Guard_model_Guard_u32); + const args30: rt.Fmt[] = [(f: rt.Formatter) => rt.usizeDisplay(part21, f)]; + Log.note(log, rt.fmtFormat(["vec count ", args30[0]])); + } else if (_16 === 4) { + const n6: rt.usize = rt.iterCount(rt.iterZip(rt.iterMap(rt.iterSkip(pairs(), 1, lib_drop$tuple2_model_Guard_model_Guard), (_237: [Guard.Guard, Guard.Guard]): rt.u32 => { + const a6: Guard.Guard = _237[0]; + const b5: Guard.Guard = _237[1]; + const _027: rt.u32 = rt.u32Sub(rt.u32Add(Guard.id(a6), Guard.id(b5)), rt.u32Mul(2, id)); + b5[Symbol.dispose](); + a6[Symbol.dispose](); + return _027; + }), new rt.Range(0, 2), [true, false])); + const e: [rt.usize, rt.u32, rt.i32] | undefined = option_map$1sprpgt(rt.ownedLast(rt.iterZip(rt.iterEnumerate(rt.iterSkip(pairs(), 1, lib_drop$tuple2_model_Guard_model_Guard)), new rt.Range(0, 2), [true, false], lib_drop$tuple2_usize_tuple2_model_Guard_model_Guard), lib_drop$tuple2_tuple2_usize_tuple2_model_Guard_model_Guard_i32), (_240: [[rt.usize, [Guard.Guard, Guard.Guard]], rt.i32]): [rt.usize, rt.u32, rt.i32] => { + const i2: rt.usize = _240[0][0]; + const a7: Guard.Guard = _240[0][1][0]; + const n31: rt.i32 = _240[1]; + const _028: [rt.usize, rt.u32, rt.i32] = [i2, rt.u32Sub(Guard.id(a7), id), n31]; + a7[Symbol.dispose](); + _240[0][1][1][Symbol.dispose](); + return _028; + }); + f = rt.ownedCount(rt.iterZip(rt.iterFuse(rt.iterSkip(pairs(), 1, lib_drop$tuple2_model_Guard_model_Guard)), new rt.Range(0, 1), [true, false], lib_drop$tuple2_model_Guard_model_Guard), lib_drop$tuple2_tuple2_model_Guard_model_Guard_i32); + const args32: rt.Fmt[] = [(f: rt.Formatter) => rt.usizeDisplay(n6, f), (f: rt.Formatter) => rt.fmtOption(e, f, (value: [rt.usize, rt.u32, rt.i32], f: rt.Formatter) => rt.fmtTuple([(f: rt.Formatter) => rt.usizeDebug(value[0], f), (f: rt.Formatter) => rt.u32Debug(value[1], f), (f: rt.Formatter) => rt.i32Debug(value[2], f)], f)), (f2: rt.Formatter) => rt.usizeDisplay(f, f2)]; + Log.note(log, rt.fmtFormat(["adapted ", args32[0], " ", args32[1], " ", args32[2]])); + } else if (_16 === 5) { + const n7: rt.usize = rt.ownedCount(rt.iterZip(rt.iterSkip(pairs(), 9, lib_drop$tuple2_model_Guard_model_Guard), new rt.Range(0, 2), [true, false], lib_drop$tuple2_model_Guard_model_Guard), lib_drop$tuple2_tuple2_model_Guard_model_Guard_i32); + const m2: rt.usize = rt.ownedCount(rt.iterZip(rt.iterSkip(pairs(), 0, lib_drop$tuple2_model_Guard_model_Guard), new rt.Range(0, 2), [true, false], lib_drop$tuple2_model_Guard_model_Guard), lib_drop$tuple2_tuple2_model_Guard_model_Guard_i32); + const o: rt.usize = rt.ownedCount(rt.iterZip(rt.iterSkip(rt.iterSkip(pairs(), 1, lib_drop$tuple2_model_Guard_model_Guard), 1, lib_drop$tuple2_model_Guard_model_Guard), new rt.Range(0, 2), [true, false], lib_drop$tuple2_model_Guard_model_Guard), lib_drop$tuple2_tuple2_model_Guard_model_Guard_i32); + const p: rt.usize = rt.ownedCount(rt.iterZip(rt.iterSkip(rt.iterZip(rt.iterSkip(pairs(), 1, lib_drop$tuple2_model_Guard_model_Guard), new rt.Range(0, 3), [true, false], lib_drop$tuple2_model_Guard_model_Guard), 1, lib_drop$tuple2_tuple2_model_Guard_model_Guard_i32), new rt.Range(0, 1), [true, false], lib_drop$tuple2_tuple2_model_Guard_model_Guard_i32), lib_drop$tuple2_tuple2_tuple2_model_Guard_model_Guard_i32_i32); + const args34: rt.Fmt[] = [(f: rt.Formatter) => rt.usizeDisplay(n7, f), (f: rt.Formatter) => rt.usizeDisplay(m2, f), (f: rt.Formatter) => rt.usizeDisplay(o, f), (f: rt.Formatter) => rt.usizeDisplay(p, f)]; + Log.note(log, rt.fmtFormat(["edges ", args34[0], " ", args34[1], " ", args34[2], " ", args34[3]])); + } else if (_16 === 6) { + const _398: rt.Iter = rt.iterSlice(v); + const captured14 = made; + const it6: rt.Iter<[Guard.Guard, rt.u32]> = rt.iterZip(rt.iterSkip(rt.iterMap(_398, (_218: rt.u32): Guard.Guard => { + return captured14(_218); + }), 1, rt.drop), new rt.Range(0, 2), [true, false], rt.drop); + const id1: (a0: [Guard.Guard, rt.u32] | undefined) => [rt.u32, rt.u32] | undefined = (p3: [Guard.Guard, rt.u32] | undefined): [rt.u32, rt.u32] | undefined => { + return option_map$0uom32p(p3, (_219: [Guard.Guard, rt.u32]): [rt.u32, rt.u32] => { + const a4: Guard.Guard = _219[0]; + const n23: rt.u32 = _219[1]; + const _019: [rt.u32, rt.u32] = [rt.u32Sub(Guard.id(a4), id), n23]; + a4[Symbol.dispose](); + return _019; + }); + }; + const part7 = rt.iterToOption(it6.nextBack()); + const part8 = id1(part7); + const args36: rt.Fmt[] = [(f: rt.Formatter) => rt.fmtOption(part8, f, (value: [rt.u32, rt.u32], f: rt.Formatter) => rt.fmtTuple([(f: rt.Formatter) => rt.u32Debug(value[0], f), (f: rt.Formatter) => rt.u32Debug(value[1], f)], f))]; + Log.note(log, rt.fmtFormat(["back ", args36[0]])); + const part9 = rt.iterToOption(it6.nextBack()); + const part10 = id1(part9); + const args38: rt.Fmt[] = [(f: rt.Formatter) => rt.fmtOption(part10, f, (value: [rt.u32, rt.u32], f: rt.Formatter) => rt.fmtTuple([(f: rt.Formatter) => rt.u32Debug(value[0], f), (f: rt.Formatter) => rt.u32Debug(value[1], f)], f))]; + Log.note(log, rt.fmtFormat(["back ", args38[0]])); + const part11 = rt.iterToOption(it6.nextBack()); + const part12 = id1(part11); + const args40: rt.Fmt[] = [(f: rt.Formatter) => rt.fmtOption(part12, f, (value: [rt.u32, rt.u32], f: rt.Formatter) => rt.fmtTuple([(f: rt.Formatter) => rt.u32Debug(value[0], f), (f: rt.Formatter) => rt.u32Debug(value[1], f)], f))]; + Log.note(log, rt.fmtFormat(["back ", args40[0]])); + const _453: rt.Iter = rt.iterSlice(v); + const captured15 = made; + const _452: rt.Iter = rt.iterMap(_453, (_223: rt.u32): Guard.Guard => { + return captured15(_223); + }); + const _458: rt.Iter = rt.iterSlice(rt.sliceRange(w, 0, 3)); + const captured16 = made; + const it7: rt.Iter<[[Guard.Guard, Guard.Guard], rt.u32]> = rt.iterZip(rt.iterZip(_452, rt.iterMap(_458, (_224: rt.u32): Guard.Guard => { + return captured16(_224); + }), [true, true], rt.drop, rt.drop), new rt.Range(0, 5), [true, false], lib_drop$tuple2_model_Guard_model_Guard); + const part13 = rt.iterToOption(it7.nextBack()); + const part14 = ids(part13); + const args42: rt.Fmt[] = [(f: rt.Formatter) => rt.fmtOption(part14, f, (value: [rt.u32, rt.u32, rt.u32], f: rt.Formatter) => rt.fmtTuple([(f: rt.Formatter) => rt.u32Debug(value[0], f), (f: rt.Formatter) => rt.u32Debug(value[1], f), (f: rt.Formatter) => rt.u32Debug(value[2], f)], f))]; + Log.note(log, rt.fmtFormat(["uneven ", args42[0]])); + const part15 = rt.iterToOption(it7.next()); + const part16 = ids(part15); + const args44: rt.Fmt[] = [(f: rt.Formatter) => rt.fmtOption(part16, f, (value: [rt.u32, rt.u32, rt.u32], f: rt.Formatter) => rt.fmtTuple([(f: rt.Formatter) => rt.u32Debug(value[0], f), (f: rt.Formatter) => rt.u32Debug(value[1], f), (f: rt.Formatter) => rt.u32Debug(value[2], f)], f))]; + Log.note(log, rt.fmtFormat(["uneven ", args44[0]])); + const _499: rt.Iter = rt.iterSlice(v); + const captured17 = made; + const _498: rt.Iter = rt.iterMap(_499, (_228: rt.u32): Guard.Guard => { + return captured17(_228); + }); + const _504: rt.Iter = rt.iterSlice(rt.sliceRange(w, 0, 2)); + const captured18 = made; + const part17 = rt.ownedCount(rt.iterRev(rt.iterZip(rt.iterZip(_498, rt.iterMap(_504, (_230: rt.u32): Guard.Guard => { + return captured18(_230); + }), [true, true], rt.drop, rt.drop), new rt.Range(0, 5), [true, false], lib_drop$tuple2_model_Guard_model_Guard)), lib_drop$tuple2_tuple2_model_Guard_model_Guard_u32); + const args46: rt.Fmt[] = [(f: rt.Formatter) => rt.usizeDisplay(part17, f)]; + Log.note(log, rt.fmtFormat(["uneven rev ", args46[0]])); + const _524: rt.Iter = rt.iterSlice(v); + const captured19 = made; + const _522: rt.Iter<[rt.usize, Guard.Guard]> = rt.iterEnumerate(rt.iterMap(_524, (_231: rt.u32): Guard.Guard => { + return captured19(_231); + })); + const _529: rt.Iter = rt.iterSlice(rt.sliceRange(w, 0, 3)); + const captured20 = made; + const part18 = option_map$1uj27tb(rt.iterToOption(rt.iterZip(rt.iterZip(_522, rt.iterMap(_529, (_235: rt.u32): Guard.Guard => { + return captured20(_235); + }), [true, true], lib_drop$tuple2_usize_model_Guard, rt.drop), new rt.Range(0, 5), [true, false], lib_drop$tuple2_tuple2_usize_model_Guard_model_Guard).nextBack()), (_236: [[[rt.usize, Guard.Guard], Guard.Guard], rt.u32]): [rt.usize, rt.u32, rt.u32, rt.u32] => { + const i: rt.usize = _236[0][0][0]; + const a5: Guard.Guard = _236[0][0][1]; + const b4: Guard.Guard = _236[0][1]; + const n30: rt.u32 = _236[1]; + const _026: [rt.usize, rt.u32, rt.u32, rt.u32] = [i, rt.u32Sub(Guard.id(a5), id), rt.u32Sub(Guard.id(b4), id), n30]; + b4[Symbol.dispose](); + a5[Symbol.dispose](); + return _026; + }); + const args48: rt.Fmt[] = [(f: rt.Formatter) => rt.fmtOption(part18, f, (value: [rt.usize, rt.u32, rt.u32, rt.u32], f: rt.Formatter) => rt.fmtTuple([(f: rt.Formatter) => rt.usizeDebug(value[0], f), (f: rt.Formatter) => rt.u32Debug(value[1], f), (f: rt.Formatter) => rt.u32Debug(value[2], f), (f: rt.Formatter) => rt.u32Debug(value[3], f)], f))]; + Log.note(log, rt.fmtFormat(["enumerated ", args48[0]])); + } else if (_16 === 7) { + const _552: [Guard.Guard, Guard.Guard] = [guard(20), guard(21)]; + const a: Guard.Guard = _552[0]; + const b: Guard.Guard = _552[1]; + const x: rt.u32 = rt.u32Sub(Guard.id(a), id); + const _569: rt.Iter = rt.iterSlice([1, 2, 3, 4]); + const captured6 = a; + const captured7 = id; + const captured8 = x; + const _567: rt.Iter<[rt.u32, rt.u32]> = rt.iterZip(rt.iterMap(_569, rt.closure((n19: rt.u32): rt.u32 => { + return rt.u32Sub(rt.u32Sub(rt.u32Add(n19, Guard.id(captured6)), captured7), captured8); + }, (): void => { + captured6[Symbol.dispose](); + })), new rt.Range(0, 2), "index"); + const captured9 = b; + const captured10 = id; + const captured11 = x; + const part5 = rt.iterToArray(rt.iterMap(_567, rt.closure((_216: [rt.u32, rt.u32]): rt.u32 => { + return rt.u32Sub(rt.u32Sub(rt.u32Sub(rt.u32Add(rt.u32Add(rt.u32Mul(_216[0], 10), _216[1]), Guard.id(captured9)), captured10), captured11), 1); + }, (): void => { + captured9[Symbol.dispose](); + })), "index", 4, true, 4); + const args50: rt.Fmt[] = [(f: rt.Formatter) => rt.fmtList(part5, f, rt.u32Debug)]; + Log.note(log, rt.fmtFormat(["in place ", args50[0]])); + const c: Guard.Guard = guard(22); + const _589: rt.Iter = rt.iterSlice([5, 6, 7]); + const _593: rt.Range = new rt.Range(0, 9); + const captured12 = c; + const captured13 = id; + const part6 = rt.iterToArray(rt.iterMap(rt.iterZip(_589, rt.iterMap(_593, rt.closure((k4: rt.u32): rt.u32 => { + return rt.u32Sub(rt.u32Sub(rt.u32Add(k4, Guard.id(captured12)), captured13), 22); + }, (): void => { + captured12[Symbol.dispose](); + })), "index"), (_217: [rt.u32, rt.u32]): rt.u32 => { + return rt.u32Add(_217[0], _217[1]); + }), "index", 4, true, 4); + const args52: rt.Fmt[] = [(f: rt.Formatter) => rt.fmtList(part6, f, rt.u32Debug)]; + Log.note(log, rt.fmtFormat(["in place ", args52[0]])); + } else { + const d: Guard.Guard = guard(23); + const _613: rt.Iter = rt.iterSlice([1, 2, 3, 4]); + const captured3 = d; + const captured4 = id; + const part2 = rt.iterToArray(rt.iterMap(rt.iterSkip(rt.iterZip(rt.iterMap(_613, rt.closure((n14: rt.u32): rt.u32 => { + const args62: rt.Fmt[] = [(f: rt.Formatter) => rt.u32Display(n14, f)]; + Log.note(log, rt.fmtFormat(["map ", args62[0]])); + const _156: rt.u32 = Guard.id(captured3); + return rt.u32Sub(rt.u32Sub(rt.u32Add(n14, _156), captured4), 23); + }, (): void => { + captured3[Symbol.dispose](); + })), new rt.Range(0, 3), "index"), 1), (_29: [rt.u32, rt.u32]): rt.u32 => { + return rt.u32Add(_29[0], _29[1]); + }), "index", 4, true, 4); + const args54: rt.Fmt[] = [(f: rt.Formatter) => rt.fmtList(part2, f, rt.u32Debug)]; + Log.note(log, rt.fmtFormat(["skipped ", args54[0]])); + const part3 = rt.iterToArray(rt.iterMap(rt.iterZip(rt.iterSlice([1, 2, 3]), rt.iterSkip(pairs(), 1, lib_drop$tuple2_model_Guard_model_Guard), "index", undefined, lib_drop$tuple2_model_Guard_model_Guard), (_211: [rt.u32, [Guard.Guard, Guard.Guard]]): rt.u32 => { + const n16: rt.u32 = _211[0]; + const a3: Guard.Guard = _211[1][0]; + const b3: Guard.Guard = _211[1][1]; + const _010: rt.u32 = rt.u32Sub(rt.u32Add(rt.u32Add(n16, Guard.id(a3)), Guard.id(b3)), rt.u32Mul(2, id)); + b3[Symbol.dispose](); + a3[Symbol.dispose](); + return _010; + }), "index", 4, true, 4); + const args56: rt.Fmt[] = [(f: rt.Formatter) => rt.fmtList(part3, f, rt.u32Debug)]; + Log.note(log, rt.fmtFormat(["beside ", args56[0]])); + const e2: Guard.Guard = guard(24); + const _657: rt.u32[] = []; + const _656: rt.Iter = rt.iterSlice(_657); + const captured5 = e2; + const part4 = rt.iterToArray(rt.iterMap(rt.iterZip(rt.iterMap(_656, rt.closure((n17: rt.u32): rt.u32 => { + return rt.u32Add(n17, Guard.id(captured5)); + }, (): void => { + captured5[Symbol.dispose](); + })), new rt.Range(0, 3), "index"), (_212: [rt.u32, rt.u32]): rt.u32 => { + return rt.u32Add(_212[0], _212[1]); + }), "index", 4, true, 4); + const args58: rt.Fmt[] = [(f: rt.Formatter) => rt.fmtList(part4, f, rt.u32Debug)]; + Log.note(log, rt.fmtFormat(["empty ", args58[0]])); + } +} + +//# sourceMappingURL=indexed.ts.map diff --git a/ts/fixtures/task/expected/lib.ts b/ts/fixtures/task/expected/lib.ts index d57f6717d..d2ce5914d 100644 --- a/ts/fixtures/task/expected/lib.ts +++ b/ts/fixtures/task/expected/lib.ts @@ -245,11 +245,32 @@ export function drop$tuple2_sync_Arc_str_sync_Arc_str(_1: [rt.Arc, rt.Ar _1[1][Symbol.dispose](); } +export function drop$tuple2_tuple2_model_Guard_model_Guard_i32(_1: [[Guard.Guard, Guard.Guard], rt.i32]): void { + drop$tuple2_model_Guard_model_Guard(_1[0]); +} + export function drop$tuple2_tuple2_model_Guard_model_Guard_model_Guard(_1: [[Guard.Guard, Guard.Guard], Guard.Guard]): void { drop$tuple2_model_Guard_model_Guard(_1[0]); _1[1][Symbol.dispose](); } +export function drop$tuple2_tuple2_model_Guard_model_Guard_u32(_1: [[Guard.Guard, Guard.Guard], rt.u32]): void { + drop$tuple2_model_Guard_model_Guard(_1[0]); +} + +export function drop$tuple2_tuple2_tuple2_model_Guard_model_Guard_i32_i32(_1: [[[Guard.Guard, Guard.Guard], rt.i32], rt.i32]): void { + drop$tuple2_tuple2_model_Guard_model_Guard_i32(_1[0]); +} + +export function drop$tuple2_tuple2_usize_model_Guard_model_Guard(_1: [[rt.usize, Guard.Guard], Guard.Guard]): void { + drop$tuple2_usize_model_Guard(_1[0]); + _1[1][Symbol.dispose](); +} + +export function drop$tuple2_tuple2_usize_tuple2_model_Guard_model_Guard_i32(_1: [[rt.usize, [Guard.Guard, Guard.Guard]], rt.i32]): void { + drop$tuple2_usize_tuple2_model_Guard_model_Guard(_1[0]); +} + export function drop$tuple2_u32_model_Guard(_1: [rt.u32, Guard.Guard]): void { _1[1][Symbol.dispose](); } @@ -258,6 +279,10 @@ export function drop$tuple2_usize_model_Guard(_1: [rt.usize, Guard.Guard]): void _1[1][Symbol.dispose](); } +export function drop$tuple2_usize_tuple2_model_Guard_model_Guard(_1: [rt.usize, [Guard.Guard, Guard.Guard]]): void { + drop$tuple2_model_Guard_model_Guard(_1[1]); +} + export function drop$tuple4_task_Waker_task_Waker_task_Waker_task_Waker(_1: [rt.Waker, rt.Waker, rt.Waker, rt.Waker]): void { _1[0][Symbol.dispose](); _1[1][Symbol.dispose](); diff --git a/ts/fixtures/task/src/drops.rs b/ts/fixtures/task/src/drops.rs index 972886355..e39261a14 100644 --- a/ts/fixtures/task/src/drops.rs +++ b/ts/fixtures/task/src/drops.rs @@ -23,7 +23,9 @@ macro_rules! list { } mod closures; +mod flattened; mod folds; +mod indexed; mod inside; mod iters; mod lists; @@ -735,6 +737,17 @@ pub fn inside(log: &Log, id: u32, arg: u8) { inside::inside(log, id, arg); } +/// Run scenario `arg % 10` of what a `flatten` drops of inner iterators that hold items +/// once they end. +pub fn flattened(log: &Log, id: u32, arg: u8) { + flattened::flattened(log, id, arg); +} + +/// Run scenario `arg % 9` of what std drops of a zip it reads by index. +pub fn indexed(log: &Log, id: u32, arg: u8) { + indexed::indexed(log, id, arg); +} + /// Run scenario `arg % 7` of where std drops a closure given to a consumer or an entry. /// The last panics in a fold. pub fn released(log: &Log, id: u32, arg: u8) { diff --git a/ts/fixtures/task/src/drops/flattened.rs b/ts/fixtures/task/src/drops/flattened.rs new file mode 100644 index 000000000..2de5f50c2 --- /dev/null +++ b/ts/fixtures/task/src/drops/flattened.rs @@ -0,0 +1,163 @@ +//! What a `flatten` or `flat_map` drops of inner iterators that still hold items once they +//! end, as a `take` of a `Vec`'s does: `next` drops each as it ends, and std's `try_fold` +//! keeps it until the next replaces it, or until the fold returns once its source ends. +//! Each adaptor and consumer that reads it by `try_fold` or `try_rfold` sees that. + +use crate::log::Log; +use crate::model::Guard; + +/// Three `Vec`s of guards, of 3, 2, and 3, numbered from `n`. +fn nested(log: &Log, id: u32, n: u32) -> Vec> { + let guards = |from: u32, to: u32| (from..to).map(|k| Guard::new(id + k, log.clone())).collect(); + let mut all = Vec::new(); + all.push(guards(n, n + 3)); + all.push(guards(n + 3, n + 5)); + all.push(guards(n + 5, n + 8)); + all +} + +/// A flatten of the first of each of `nested`'s from `n`, which logs each it makes. +fn firsts(log: &Log, id: u32, n: u32) -> impl DoubleEndedIterator + '_ { + nested(log, id, n) + .into_iter() + .map(move |v| { + log.note(format!("inner {}", v[0].id() - id)); + v.into_iter().take(1) + }) + .flatten() +} + +/// Run scenario `arg % 10`. +pub(super) fn flattened(log: &Log, id: u32, arg: u8) { + let id_of = |g: Option| g.map(|g| g.id() - id); + match arg % 10 { + 0 => { + // `next`, partly and then to the end. + let mut it = firsts(log, id, 1); + log.note(format!("next {:?}", id_of(it.next()))); + log.note(format!("next {:?}", id_of(it.next()))); + drop(it); + for g in firsts(log, id, 20) { + log.note(format!("for {}", g.id() - id)); + } + } + 1 => { + // Folds, which drop each inner iterator as its fold ends. + firsts(log, id, 1).for_each(|g| log.note(format!("each {}", g.id() - id))); + log.note(format!("count {}", firsts(log, id, 20).count())); + log.note(format!("last {:?}", id_of(firsts(log, id, 40).last()))); + } + 2 => { + // `try_fold`, which keeps the inner iterator it ended in until the next replaces it. + let mut it = firsts(log, id, 1); + log.note(format!("find {:?}", id_of(it.find(|g| g.id() == id + 4)))); + log.note(format!("then {:?}", id_of(it.next()))); + drop(it); + let mut it = firsts(log, id, 20); + log.note(format!("any {}", it.any(|g| g.id() == id + 99))); + drop(it); + log.note(format!("all {}", firsts(log, id, 40).all(|g| g.id() != id + 43))); + log.note(format!( + "position {:?}", + firsts(log, id, 60).position(|g| g.id() == id + 63) + )); + } + 3 => { + // Adaptors whose `next` is their source's `find`. + let mut it = firsts(log, id, 1).filter(|g| g.id() != id + 1); + log.note(format!("filter {:?}", id_of(it.next()))); + log.note(format!("filter {:?}", id_of(it.next()))); + drop(it); + let mut it = firsts(log, id, 20).filter_map(|g| (g.id() != id + 20).then_some(g)); + log.note(format!("filter_map {:?}", id_of(it.next()))); + drop(it); + let mut it = firsts(log, id, 40).skip_while(|g| g.id() < id + 44); + log.note(format!("skip_while {:?}", id_of(it.next()))); + drop(it); + } + 4 => { + // Skipping, by `advance_by`, which is `try_fold`'s. + let mut it = firsts(log, id, 1); + log.note(format!("nth {:?}", id_of(it.nth(1)))); + drop(it); + let mut it = firsts(log, id, 20).skip(1); + log.note(format!("skip {:?}", id_of(it.next()))); + drop(it); + let mut it = firsts(log, id, 40).step_by(2); + log.note(format!("step {:?}", id_of(it.next()))); + log.note(format!("step {:?}", id_of(it.next()))); + drop(it); + } + 5 => { + // From the back, by `next_back` and `try_rfold`. + let mut it = firsts(log, id, 1); + log.note(format!("back {:?}", id_of(it.next_back()))); + log.note(format!("front {:?}", id_of(it.next()))); + drop(it); + let mut it = firsts(log, id, 20); + log.note(format!("rfind {:?}", id_of(it.rfind(|g| g.id() == id + 20)))); + drop(it); + let mut it = firsts(log, id, 40).rev(); + log.note(format!("rev find {:?}", id_of(it.find(|g| g.id() == id + 43)))); + log.note(format!("rev next {:?}", id_of(it.next()))); + drop(it); + let mut it = firsts(log, id, 60).rev().filter(|g| g.id() != id + 65); + log.note(format!("rev filter {:?}", id_of(it.next()))); + drop(it); + // A `take`'s own `try_rfold`, which reads past what it holds beyond the limit by + // one `nth_back` short of `next_back`'s, and drops what that returns. + let mut it = nested(log, id, 80).swap_remove(0).into_iter().take(1); + log.note(format!("take rfind {:?}", id_of(it.rfind(|_| true)))); + } + 6 => { + // Adaptors whose `try_fold` is their source's. + let mut it = firsts(log, id, 1).map(|g| g.id() - id); + log.note(format!("map find {:?}", it.find(|&n| n == 4))); + drop(it); + let mut it = firsts(log, id, 20).enumerate(); + log.note(format!( + "enumerate {:?}", + it.find(|(i, _)| *i == 1).map(|(i, g)| (i, g.id() - id)) + )); + drop(it); + log.note(format!( + "take {}", + firsts(log, id, 40).take(2).fold(0, |n, g| n + g.id() - id) + )); + let mut it = firsts(log, id, 60).chain(firsts(log, id, 80)); + log.note(format!("chain {:?}", id_of(it.find(|g| g.id() == id + 81)))); + drop(it); + } + 7 => { + // A `flat_map` of the same, and a `peekable`. + let mut it = nested(log, id, 1).into_iter().flat_map(|v| v.into_iter().take(1)); + log.note(format!("flat_map {:?}", id_of(it.find(|g| g.id() == id + 4)))); + log.note(format!("flat_map {:?}", id_of(it.next()))); + drop(it); + let mut it = firsts(log, id, 20).peekable(); + log.note(format!("peek {:?}", it.peek().map(|g| g.id() - id))); + log.note(format!("peek find {:?}", id_of(it.find(|g| g.id() == id + 23)))); + drop(it); + } + 8 => { + // Collected, and reduced. + let all: Vec = firsts(log, id, 1).collect(); + log.note(format!("collect {}", all.len())); + drop(all); + log.note(format!( + "max {:?}", + id_of(firsts(log, id, 20).max_by_key(|g| g.id() % 3)) + )); + log.note(format!("sum {}", firsts(log, id, 40).map(|g| g.id() - id).sum::())); + } + _ => { + // A fold of its own after a `try_fold` left an inner iterator held. + let mut it = firsts(log, id, 1); + log.note(format!("any {}", it.any(|g| g.id() == id + 1))); + log.note(format!("rest {}", it.fold(0, |n, g| n * 100 + g.id() - id))); + let mut it = firsts(log, id, 20); + log.note(format!("any {}", it.any(|g| g.id() == id + 23))); + log.note(format!("count {}", it.count())); + } + } +} diff --git a/ts/fixtures/task/src/drops/indexed.rs b/ts/fixtures/task/src/drops/indexed.rs new file mode 100644 index 000000000..4dff51ed8 --- /dev/null +++ b/ts/fixtures/task/src/drops/indexed.rs @@ -0,0 +1,184 @@ +//! What std reads by index drops: a `skip` of a zip of two `TrustedRandomAccess` iterators, +//! which makes and drops each skipped pair whole where what wraps it reads it by index, and +//! a side at a time through the zip's `nth` where it reads by `next`; and a zip collected in +//! place, read by index and then dropped whole. + +use crate::log::Log; +use crate::model::Guard; + +/// Run scenario `arg % 9`. +pub(super) fn indexed(log: &Log, id: u32, arg: u8) { + let guard = |n: u32| Guard::new(id + n, log.clone()); + // A guard made by a side's closure, which says so, where std reads by index. + let made = |n: u32| { + log.note(format!("make {n}")); + guard(n) + }; + let v = [1u32, 2, 3, 4]; + let w = [11u32, 12, 13, 14]; + // A zip of guards std reads by index, each side's made as it reads it. + let pairs = || v.iter().map(move |&n| made(n)).zip(w.iter().map(move |&n| made(n))); + let ids = |p: Option<((Guard, Guard), u32)>| p.map(|((a, b), n)| (a.id() - id, b.id() - id, n)); + match arg % 9 { + 0 => { + // Read by index by a zip that wraps it, from the front: the skipped pair first. + let n = pairs().skip(1).zip(0..2).count(); + let mut it = pairs().skip(2).zip(0..5u32); + log.note(format!("count {n} {:?}", ids(it.next()))); + log.note(format!("next {:?}", ids(it.next()))); + log.note(format!("past {:?}", ids(it.next()))); + } + 1 => { + // From the back, where the last read is of index 0, and by `nth`. + let mut it = pairs().skip(1).zip(0..2u32); + log.note(format!("back {:?}", ids(it.next_back()))); + log.note(format!("back {:?}", ids(it.next_back()))); + log.note(format!("back {:?}", ids(it.next_back()))); + let mut it = pairs().skip(1).zip(0..3u32); + log.note(format!("nth {:?}", ids(it.nth(1)))); + let mut it = pairs().skip(1).zip(0..3u32); + log.note(format!("front {:?}", ids(it.next()))); + log.note(format!("back {:?}", ids(it.next_back()))); + } + 2 => { + // Read by `next`, through the zip's `nth`, a side at a time. + let mut it = pairs().skip(1); + let first = it.next().map(|(a, b)| (a.id() - id, b.id() - id)); + log.note(format!("skip next {first:?}")); + drop(it); + let n = pairs().skip(2).count(); + let last = pairs().skip(1).last().map(|(a, b)| (a.id() - id, b.id() - id)); + log.note(format!("skip count {n} {last:?}")); + } + 3 => { + // A `take` folds what it wraps by index. + let n = pairs() + .skip(1) + .take(2) + .fold(0, |n, (a, b)| n * 100 + a.id() + b.id() - 2 * id); + log.note(format!("take fold {n}")); + pairs() + .skip(2) + .take(5) + .for_each(|(a, b)| log.note(format!("each {} {}", a.id() - id, b.id() - id))); + let found = pairs() + .skip(1) + .take(3) + .find(|(a, _)| a.id() == id + 3) + .map(|(a, _)| a.id() - id); + log.note(format!("take find {found:?}")); + // Bounded by what is left of what it wraps, which reads nothing once a `skip` passes it. + let n = pairs().skip(4).take(1).fold(0, |n, (a, b)| n + a.id() + b.id()); + let m = pairs() + .skip(3) + .take(2) + .fold(0, |n, (a, b)| n * 100 + a.id() + b.id() - 2 * id); + log.note(format!("take past {n} {m}")); + // A zip of it and what is `TrustedRandomAccessNoCoerce` alone folds both by index. + let n = pairs().skip(1).zip(vec![0u32, 1].into_iter()).count(); + log.note(format!("vec count {n}")); + } + 4 => { + // Adaptors that read what they wrap by index as they are read. + let n = pairs().skip(1).map(|(a, b)| a.id() + b.id() - 2 * id).zip(0..2).count(); + let e = pairs() + .skip(1) + .enumerate() + .zip(0..2) + .last() + .map(|((i, (a, _)), n)| (i, a.id() - id, n)); + let f = pairs().skip(1).fuse().zip(0..1).count(); + log.note(format!("adapted {n} {e:?} {f}")); + } + 5 => { + // A `skip` past the end, of nothing, and nested. + let n = pairs().skip(9).zip(0..2).count(); + let m = pairs().skip(0).zip(0..2).count(); + let o = pairs().skip(1).skip(1).zip(0..2).count(); + let p = pairs().skip(1).zip(0..3).skip(1).zip(0..1).count(); + log.note(format!("edges {n} {m} {o} {p}")); + } + 6 => { + // Read by index from the back, untrimmed: a `skip` of what is no zip, which makes and + // drops its prefix as it reads index 0, and a zip of sides of unequal length. + let mut it = v.iter().map(move |&n| made(n)).skip(1).zip(0..2u32); + let id1 = |p: Option<(Guard, u32)>| p.map(|(a, n)| (a.id() - id, n)); + log.note(format!("back {:?}", id1(it.next_back()))); + log.note(format!("back {:?}", id1(it.next_back()))); + log.note(format!("back {:?}", id1(it.next_back()))); + let mut it = v + .iter() + .map(move |&n| made(n)) + .zip(w[..3].iter().map(move |&n| made(n))) + .zip(0..5u32); + log.note(format!("uneven {:?}", ids(it.next_back()))); + log.note(format!("uneven {:?}", ids(it.next()))); + let n = v + .iter() + .map(move |&n| made(n)) + .zip(w[..2].iter().map(move |&n| made(n))) + .zip(0..5u32) + .rev() + .count(); + log.note(format!("uneven rev {n}")); + let mut it = v + .iter() + .map(move |&n| made(n)) + .enumerate() + .zip(w[..3].iter().map(move |&n| made(n))) + .zip(0..5u32); + let last = it.next_back().map(|(((i, a), b), n)| (i, a.id() - id, b.id() - id, n)); + log.note(format!("enumerated {last:?}")); + } + 7 => { + // Collected in place by index, then dropped whole, inner closures before outer ones. + let (a, b) = (guard(20), guard(21)); + let x = (&a).id() - id; + let src: Vec = vec![1, 2, 3, 4]; + let out: Vec = src + .into_iter() + .map(move |n| n + (&a).id() - id - x) + .zip(0..2u32) + .map(move |(n, k)| n * 10 + k + (&b).id() - id - x - 1) + .collect(); + log.note(format!("in place {out:?}")); + let c = guard(22); + let out: Vec = vec![5u32, 6, 7] + .into_iter() + .zip((0..9u32).map(move |k| k + (&c).id() - id - 22)) + .map(|(n, k)| n + k) + .collect(); + log.note(format!("in place {out:?}")); + } + _ => { + // Collected in place, skipping by index first, and empty. + let d = guard(23); + let out: Vec = vec![1u32, 2, 3, 4] + .into_iter() + .map(move |n| { + log.note(format!("map {n}")); + n + (&d).id() - id - 23 + }) + .zip(0..3u32) + .skip(1) + .map(|(n, k)| n + k) + .collect(); + log.note(format!("skipped {out:?}")); + // A `skip` of a zip std reads by index beside the `Vec` it collects in place of. + let out: Vec = vec![1u32, 2, 3] + .into_iter() + .zip(pairs().skip(1)) + .map(|(n, (a, b))| n + a.id() + b.id() - 2 * id) + .collect(); + log.note(format!("beside {out:?}")); + let e = guard(24); + let out: Vec = Vec::::new() + .into_iter() + .map(move |n| n + (&e).id()) + .zip(0..3u32) + .map(|(n, k)| n + k) + .collect(); + log.note(format!("empty {out:?}")); + } + } +} diff --git a/ts/fixtures/task/src/harness.rs b/ts/fixtures/task/src/harness.rs index 68775a5cc..b1bd329b6 100644 --- a/ts/fixtures/task/src/harness.rs +++ b/ts/fixtures/task/src/harness.rs @@ -150,6 +150,12 @@ fn steps() -> Vec<(&'static str, Step)> { ("released", |log, exec, _, arg| { drops::released(log, 1000 * exec.len() as u32, arg) }), + ("flattened", |log, exec, _, arg| { + drops::flattened(log, 1000 * exec.len() as u32, arg) + }), + ("indexed", |log, exec, _, arg| { + drops::indexed(log, 1000 * exec.len() as u32, arg) + }), ("compared", |log, exec, _, arg| { drops::compared(log, 1000 * exec.len() as u32, arg) }), diff --git a/ts/fixtures/task/ts.toml b/ts/fixtures/task/ts.toml index 8be9b9011..ce19dd465 100644 --- a/ts/fixtures/task/ts.toml +++ b/ts/fixtures/task/ts.toml @@ -18,6 +18,8 @@ roots = [ "drops::folded", "drops::rfolded", "drops::inside", + "drops::flattened", + "drops::indexed", "drops::released", "drops::compared", "drops::lists", diff --git a/ts/runtime/rt/iter.ts b/ts/runtime/rt/iter.ts index af602ba18..3d7f8bd8d 100644 --- a/ts/runtime/rt/iter.ts +++ b/ts/runtime/rt/iter.ts @@ -159,6 +159,16 @@ export abstract class Iter implements Iterable { return this; } + /** + * What std reads it by where it reads it by index, by `__iterator_get_unchecked`, from + * the front and the back, and whose `advanceBackBy` passes items it never reads: itself, + * but for an adaptor that maps, skips, or zips what may have side effects. Only an + * iterator std reads by index is read so. + */ + indexed(): Iter { + return this; + } + /** `size_hint`, as std's of its kind gives it: `(0, None)` unless it knows better. */ sizeHint(): SizeHint { return [0, undefined]; @@ -288,6 +298,21 @@ export class Folded extends Iter { } } +/** An iterator as std reads it by index, whose `skip` passes `n` items from the back unread. */ +class Indexed extends Folded { + private readonly skip: (n: number) => void; + + constructor(front: () => T | Done, back: () => T | Done, skip: (n: number) => void) { + super(front, back); + this.skip = skip; + } + + override advanceBackBy(n: number): number { + this.skip(n); + return 0; + } +} + /** The item `next` returned, as an `Option`. */ export function iterToOption(item: T | Done): T | undefined; export function iterToOption(item: T | Done, none: None): T | None; @@ -706,11 +731,12 @@ export function iterChain(it: Iter, other: Iter): Iter { /** * How std's `Zip` reads its iterators, by the traits both implement: two * `TrustedRandomAccess` ones, as whether each may have side effects (`MAY_HAVE_SIDE_EFFECT`), - * which it reads by index up to the shorter length and past it only one that may; and - * `len` of two `TrustedLen` ones, whose `fold` reads as many pairs as its size hint's - * upper bound, where `next` reads the first once past a shorter second. + * which it reads by index up to the shorter length and past it only one that may; `len` + * of two `TrustedLen` ones, whose `fold` reads as many pairs as its size hint's upper + * bound, where `next` reads the first once past a shorter second; and `index` of two + * `TrustedRandomAccessNoCoerce` ones, whose `fold` reads as many by index. */ -export type Trusted = readonly [boolean, boolean] | "len"; +export type Trusted = readonly [boolean, boolean] | "len" | "index"; /** * `zip`, with `other` already made an iterator, as std does when it is called, read as @@ -718,7 +744,7 @@ export type Trusted = readonly [boolean, boolean] | "len"; * or `dropB`. */ export function iterZip(it: Iter, other: Iter, trusted?: Trusted, dropA?: Drop, dropB?: Drop): Iter<[T, U]> { - if (trusted === undefined || trusted === "len") return new ZipIter(it, other, trusted === "len", dropA, dropB); + if (trusted === undefined || typeof trusted === "string") return new ZipIter(it, other, trusted, dropA, dropB); return new TrustedZipIter(it, other, trusted, dropA, dropB); } @@ -732,9 +758,12 @@ export function iterSkip(it: Iter, n: number, drop?: Drop): Iter { return new SkipIter(it, n, drop); } -/** `Iterator::take`, dropping what `next_back` skips past its limit by `drop`. */ -export function iterTake(it: Iter, n: number, drop?: Drop): Iter { - return new TakeIter(it, n, drop); +/** + * `Iterator::take`, dropping what `next_back` skips past its limit by `drop`, whose `fold` + * reads its iterator by index if it `indexes`, a `TrustedRandomAccess` one. + */ +export function iterTake(it: Iter, n: number, drop?: Drop, indexes = false): Iter { + return new TakeIter(it, n, drop, indexes); } /** `Iterator::skip_while`, dropping what it skips by `drop`. */ @@ -826,10 +855,11 @@ export function iterFlatten(it: Iter, into?: (value: T) => Iter, fus /** * How a consumer takes an iterator by value, where std's may either way: by `next`, as - * std's does one it can't trust the length of, or by its own `fold`, which drops what it - * holds. Without either, it drops nothing, and std's folds it. + * std's does one it can't trust the length of, by its own `fold`, which drops what it + * holds, or by index, as std's `collect` in place reads a `TrustedRandomAccessNoCoerce` + * one, before dropping it whole. Without any, it drops nothing, and std's folds it. */ -export type Take = "next" | "fold"; +export type Take = "next" | "fold" | "index"; /** `it`, taken as `take` says: `f` of each item, and then it dropped. */ function each(it: Iter, f: (item: T) => void, take: Take | undefined): void { @@ -837,6 +867,13 @@ function each(it: Iter, f: (item: T) => void, take: Take | undefined): voi it.fold(undefined, (_, item) => f(item)); return; } + if (take === "index") { + const indexed = it.indexed(); + consumed(it, () => { + for (let n = it.len(); n > 0; n--) f(indexed.next() as T); + }); + return; + } consumed(it, () => { for (let item = it.next(); item !== DONE; item = it.next()) f(item); }); @@ -2093,6 +2130,23 @@ class MapIter extends Calling U> { return new MapIter(inner, this.f); } + /** std's: `f` of its iterator's item, which may have side effects, so never of one it passes. */ + override indexed(): Iter { + const inner = this.inner.indexed(); + const f = this.f; + return new Indexed( + () => { + const item = inner.next(); + return item === DONE ? DONE : f(item); + }, + () => { + const item = inner.nextBack(); + return item === DONE ? DONE : f(item); + }, + (n) => inner.advanceBackBy(n), + ); + } + /** Its iterator by `h.i`, then `f` by `h.f`, as each kind that maps does. */ override clone(h?: Clones): Iter { const kind = this.constructor as new (inner: Iter, f: (item: T) => U) => MapIter; @@ -2318,6 +2372,23 @@ class EnumerateIter extends Adaptor { return new Folded(front, back); } + /** std's: its iterator's, counted from where it is. */ + override indexed(): Iter<[number, T]> { + const inner = this.inner.indexed(); + if (inner === this.inner) return this; + return new Indexed( + () => { + const item = inner.next(); + return item === DONE ? DONE : [this.index++, item]; + }, + () => { + const item = inner.nextBack(); + return item === DONE ? DONE : [this.index + this.inner.len(), item]; + }, + (n) => inner.advanceBackBy(n), + ); + } + override fold(acc: A, g: (acc: A, item: [number, T]) => A, release?: () => void): A { let i = this.index; return this.inner.fold(acc, (acc, item) => g(acc, [i++, item]), release); @@ -2482,12 +2553,12 @@ class ChainIter extends Iter implements Disposable { class ZipIter extends Iter<[A, B]> implements Disposable { readonly a: Iter; readonly b: Iter; - /** Whether both are `TrustedLen`, so `fold` stops at its size hint. */ - private readonly bounded: boolean; + /** How `fold` reads it where it stops at its size hint: by `next` or by index. */ + private readonly bounded: "len" | "index" | undefined; protected readonly dropA: Drop | undefined; protected readonly dropB: Drop | undefined; - constructor(a: Iter, b: Iter, bounded: boolean, dropA?: Drop, dropB?: Drop) { + constructor(a: Iter, b: Iter, bounded?: "len" | "index", dropA?: Drop, dropB?: Drop) { super(); this.a = a; this.b = b; @@ -2500,9 +2571,28 @@ class ZipIter extends Iter<[A, B]> implements Disposable { return new ZipIter(this.a.clone(h?.i), this.b.clone(h?.o), this.bounded, this.dropA, this.dropB); } - /** std's `SpecFold` of two `TrustedLen` iterators, which `try_fold` doesn't share. */ + /** + * std's `SpecFold` of two `TrustedLen` iterators, or the `fold` of two + * `TrustedRandomAccessNoCoerce` ones, which `try_fold` doesn't share. + */ override folded(fold = false): Iter<[A, B]> { - return fold && this.bounded ? new ZipFold(this) : this; + if (!fold || this.bounded === undefined) return this; + return this.bounded === "len" ? new ZipFold(this, this.a, this.b) : new ZipFold(this, this.a.indexed(), this.b.indexed()); + } + + /** + * std's of two `TrustedRandomAccessNoCoerce` iterators: each side's item at its index. + * Only a zip of two `TrustedRandomAccess` ones reads by index from the back, of which + * neither side is this. + */ + override indexed(): Iter<[A, B]> { + if (this.bounded !== "index") return this; + const [a, b] = [this.a.indexed(), this.b.indexed()]; + if (a === this.a && b === this.b) return this; + return new Folded( + () => [a.next() as A, b.next() as B], + () => this.nextBack(), + ); } /** An item of `a` it read, dropped if `b` ends. */ @@ -2554,26 +2644,31 @@ class ZipIter extends Iter<[A, B]> implements Disposable { } /** - * A zip of two `TrustedLen` iterators as std's `fold` reads it: as many pairs as its size - * hint's upper bound when it starts, which `TrustedLen` promises each holds, and from the - * back by `next_back`, as `rfold` reads it. + * A zip as std's `fold` reads it where it stops at its size hint: as many pairs as its + * upper bound when it starts, which `TrustedLen` promises each holds, read from `a` and + * `b`, its sides or their views by index, and from the back by `next_back`, as `rfold` + * reads it. */ class ZipFold extends Iter<[A, B]> { private readonly zip: ZipIter; + private readonly a: Iter; + private readonly b: Iter; /** The pairs left, once it starts, or -1. */ private left = -1; - constructor(zip: ZipIter) { + constructor(zip: ZipIter, a: Iter, b: Iter) { super(); this.zip = zip; + this.a = a; + this.b = b; } next(): [A, B] | Done { if (this.left < 0) this.left = this.zip.sizeHint()[1] ?? Infinity; if (this.left === 0) return DONE; this.left--; - const a = this.zip.a.next(); - const b = this.zip.b.next(); + const a = this.a.next(); + const b = this.b.next(); if (a === DONE || b === DONE) panic("internal error: entered unreachable code"); return [a, b]; } @@ -2585,7 +2680,7 @@ class ZipFold extends Iter<[A, B]> { /** * std's `Zip` of two `TrustedRandomAccess` iterators, which counts the pairs it reads, and - * which `fold` reads as `next` does. It reads an item it never yields only from a side + * reads them by index, as `fold` does. It reads an item it never yields only from a side * that may have side effects, and skips the rest of a side that has none in one step. */ class TrustedZipIter extends ZipIter { @@ -2593,11 +2688,16 @@ class TrustedZipIter extends ZipIter { private end: number; /** Whether each side may have side effects. */ private readonly effects: readonly [boolean, boolean]; + /** Each side as it reads it by index. */ + private readonly ia: Iter; + private readonly ib: Iter; constructor(a: Iter, b: Iter, effects: readonly [boolean, boolean], dropA?: Drop, dropB?: Drop) { - super(a, b, false, dropA, dropB); + super(a, b, undefined, dropA, dropB); this.end = Math.min(a.len(), b.len()); this.effects = effects; + this.ia = a.indexed(); + this.ib = b.indexed(); } /** std's: its count of pairs read, with its iterators, which it reads by index as they are. */ @@ -2611,7 +2711,7 @@ class TrustedZipIter extends ZipIter { override next(): [A, B] | Done { if (this.index >= this.end) return DONE; this.index++; - return super.next(); + return [this.ia.next() as A, this.ib.next() as B]; } /** @@ -2624,18 +2724,20 @@ class TrustedZipIter extends ZipIter { if (!effectA) this.a.advanceBy(skip, this.dropA); if (!effectB) this.b.advanceBy(skip, this.dropB); if (!effectA && !effectB) this.index += skip; - else + else { + const { ia: a, ib: b } = this; for (let i = 0; i < skip; i++) { this.index++; if (effectA) { - const a = this.a.next(); - if (a !== DONE) this.dropA?.(a); + const item = a.next() as A; + this.dropA?.(item); } if (effectB) { - const b = this.b.next(); - if (b !== DONE) this.dropB?.(b); + const item = b.next() as B; + this.dropB?.(item); } } + } return this.next(); } @@ -2650,7 +2752,23 @@ class TrustedZipIter extends ZipIter { trim(this.a, this.a.len() - left, this.effects[0], this.dropA); trim(this.b, this.b.len() - left, this.effects[1], this.dropB); this.end--; - return super.nextBack(); + return [this.ia.nextBack() as A, this.ib.nextBack() as B]; + } + + /** std's: each side's item at its index, and none past the shorter side, from either end. */ + override indexed(): Iter<[A, B]> { + const { ia: a, ib: b } = this; + if (a === this.a && b === this.b) return this; + const back = (): [A, B] | Done => { + if (this.index >= this.end) return DONE; + const left = this.end - this.index; + a.advanceBackBy(this.a.len() - left); + b.advanceBackBy(this.b.len() - left); + this.end--; + return [a.nextBack() as A, b.nextBack() as B]; + }; + const skip = (n: number) => void (this.end -= n); + return new Indexed(() => this.next(), back, skip); } /** `advance_by`, by `next`, in one step where neither side has side effects. */ @@ -2817,9 +2935,9 @@ class SkipIter extends Adaptor { } /** - * std's: past what it skips by `nth`, one short of where `next` reads, then its iterator - * folded, and from the back, its iterator folded down to what it skips, by its length - * as the fold starts. + * std's: past what it skips by `nth`, one short of where `next` reads, as a zip's `nth` + * reads its last pair whole, then its iterator folded, and from the back, its iterator + * folded down to what it skips, by its length as the fold starts. */ override folded(fold = false): Iter { const inner = this.inner.folded(fold); @@ -2843,6 +2961,28 @@ class SkipIter extends Adaptor { return new Folded(front, back); } + /** + * std's: as it reads index 0, from either end, each item it skips made by index and + * dropped whole, where its iterator may have side effects. + */ + override indexed(): Iter { + const inner = this.inner.indexed(); + if (inner === this.inner) return this; + const first = (): T | Done => { + for (; this.n > 0; this.n--) { + const item = inner.next(); + if (item !== DONE) this.drop?.(item); + } + return inner.next(); + }; + const back = (): T | Done => { + const len = this.len(); + if (len === 0) return DONE; + return len === 1 ? first() : inner.nextBack(); + }; + return new Indexed(first, back, (n) => inner.advanceBackBy(Math.min(n, this.len()))); + } + /** std's: past what it skips by `nth`, and then its iterator's own. */ override fold(acc: A, f: (acc: A, item: T) => A, release?: () => void): A { if (this.n > 0) { @@ -2872,15 +3012,18 @@ class SkipIter extends Adaptor { class TakeIter extends Adaptor { n: number; private readonly drop: Drop | undefined; + /** Whether its iterator is `TrustedRandomAccess`, which its `fold` reads by index. */ + private readonly indexes: boolean; - constructor(inner: Iter, n: number, drop?: Drop) { + constructor(inner: Iter, n: number, drop?: Drop, indexes = false) { super(inner); this.n = n; this.drop = drop; + this.indexes = indexes; } override clone(h?: Clones): Iter { - return new TakeIter(this.inner.clone(h?.i), this.n, this.drop); + return new TakeIter(this.inner.clone(h?.i), this.n, this.drop, this.indexes); } override sizeHint(): SizeHint { @@ -2917,13 +3060,22 @@ class TakeIter extends Adaptor { /** * std's: its iterator folded, counting each item it reads against the limit, and from * the back, past what it holds beyond the limit by `nth_back` as the fold starts, - * folded without counting. + * folded without counting, where `next_back` reads past it by one `nth_back` of its own. + * Its `fold` reads a `TrustedRandomAccess` one by index from the front, no further than + * its size, which a `skip` past its end makes 0. */ - override folded(): Iter { + override folded(fold = false): Iter { const inner = this.inner.folded(); - const front = (): T | Done => { + if (!(fold && this.indexes)) return this.foldedBy(inner, inner); + this.n = Math.min(this.n, this.inner.len()); + return this.foldedBy(inner, this.inner.indexed()); + } + + /** Read from the front by `front`, and from the back by `inner`, its iterator folded. */ + private foldedBy(inner: Iter, front: Iter): Folded { + const next = (): T | Done => { if (this.n === 0) return DONE; - const item = inner.next(); + const item = front.next(); if (item !== DONE) this.n--; return item; }; @@ -2940,7 +3092,7 @@ class TakeIter extends Adaptor { } return ended ? DONE : inner.nextBack(); }; - return new Folded(front, back); + return new Folded(next, back); } /** std's: its iterator advanced from the back past the limit and `n` more, in one step. */ @@ -3442,6 +3594,17 @@ class FuseIter extends Iter implements Disposable { return new Folded(front, back); } + /** std's: its iterator's, which it never reads past its end. */ + override indexed(): Iter { + const inner = this.inner?.indexed(); + if (inner === this.inner) return this; + return new Indexed( + () => inner!.next(), + () => inner!.nextBack(), + (n) => inner!.advanceBackBy(n), + ); + } + override nthBack(n: number, drop?: Drop): T | Done { return this.inner === undefined ? DONE : this.clear(this.inner.nthBack(n, drop)); } diff --git a/ts/src/lower/iter.rs b/ts/src/lower/iter.rs index a6f8392c4..8f1904892 100644 --- a/ts/src/lower/iter.rs +++ b/ts/src/lower/iter.rs @@ -526,22 +526,13 @@ pub fn call<'tcx>( } // What each drops: an item it skips or rejects, or one it peeked. "filter" | "skip_while" | "take_while" | "peekable" | "skip" | "take" | "step_by" => { - // std reads such a `skip` by index where what wraps it does, making and dropping each - // skipped pair whole, and else by the zip's `nth`, a side at a time. - if name == "skip" - && b.t.drops(item) - && implements(b.t, self_ty, "TrustedRandomAccess") - && nth_zips(tcx, self_ty) - { - return Some(b.err( - span, - format!( - "a `skip` of `{self_ty}`, a zip std reads by index, of items that drop, which is not supported yet" - ), - )); - } let dropper = b.t.dropper(item, span); - method(&camel, tail(rest, vec![dropper])) + // std's `take` folds a `TrustedRandomAccess` iterator by index, as `next` does + // one that has no side effects. + let indexes = name == "take" + && implements(b.t, self_ty, "TrustedRandomAccess") + && may_have_side_effect(b.t, self_ty, span) != Some(false); + method(&camel, tail(rest, vec![dropper, Expr::lit(indexes.to_string())])) } "fuse" => { let fused = fused(b, self_ty, None); @@ -747,7 +738,6 @@ pub fn call<'tcx>( // `flat_map::`, of the source mapped by `F`, which drops as the source does. "flat_map" => { let inner = iter_of(b.t, targ(1)?)?; - flattens(b, inner, span); let into = into_fn(b, targ(1)?, span)?.unwrap_or_else(Expr::undefined); let fused = fused(b, self_ty, Some(targ(2)?)); let size = array_size(b, targ(1)?); @@ -756,7 +746,6 @@ pub fn call<'tcx>( } "flatten" => { let inner = iter_of(b.t, item)?; - flattens(b, inner, span); let into = into_fn(b, item, span)?.unwrap_or_else(Expr::undefined); let fused = fused(b, self_ty, None); let size = array_size(b, item); @@ -930,19 +919,6 @@ fn std_iter_path(tcx: ty::TyCtxt<'_>, ty: Ty<'_>) -> Option> { Some(library::std_path(tcx, adt.did())).filter(|p| !p.is_empty()) } -/// Whether `nth` of `ty`, an iterator, is that of a zip it wraps, through the adaptors -/// whose `nth` is their iterator's. -fn nth_zips(tcx: ty::TyCtxt<'_>, ty: Ty<'_>) -> bool { - let ty::Adt(adt, args) = ty.kind() else { - return false; - }; - match library::std_path(tcx, adt.did()).last().map(String::as_str) { - Some("Zip") => true, - Some("Enumerate" | "Fuse" | "Skip") => nth_zips(tcx, args.type_at(0)), - _ => false, - } -} - /// The function or `Iterator` method named for `ty`, one of std's iterators of zero-sized /// fields, as `from_fn` makes a `FromFn` and `map` a `Map`, and its generic arguments: what /// MIR reads as a constant, rather than from that call, makes it of its fields in order. @@ -1186,38 +1162,6 @@ pub(super) fn holds_closure(tcx: ty::TyCtxt<'_>, did: DefId) -> bool { ) } -/// Refuse a `flatten` or `flat_map` of `inner` iterators that drop and may hold what drops -/// once they end: std's `try_fold` drops each such one only as it reads the next, where -/// `next` drops it as it ends. What std's collections', `Option`'s, and `Result`'s -/// `into_iter` make holds nothing then. -fn flattens<'tcx>(b: &mut Body<'_, '_, 'tcx>, inner: Ty<'tcx>, span: Span) { - if !b.t.drops(inner) { - return; - } - let path = std_iter_path(b.t.tcx, inner).unwrap_or_default(); - let path: Vec<&str> = path.iter().map(String::as_str).collect(); - let empties = matches!( - path.as_slice(), - ["vec", "into_iter", "IntoIter"] - | ["array", "iter", "IntoIter"] - | ["option", "IntoIter"] - | ["result", "IntoIter"] - | ["iter", "sources", "once", "Once"] - | ["collections", "hash", "map", "IntoIter" | "IntoKeys" | "IntoValues"] - | ["collections", "hash", "set", "IntoIter"] - | ["collections", "btree", "map", "IntoIter" | "IntoKeys" | "IntoValues"] - | ["collections", "btree", "set", "IntoIter"] - | ["collections", "vec_deque", "into_iter", "IntoIter"] - | ["collections", "linked_list", "IntoIter"] - ); - if !empties { - b.t.err( - span, - format!("a `flatten` of `{inner}`, which drops what it may hold once it ends, which is not supported yet"), - ); - } -} - /// `rt.iterZip` of `a`, an iterator, and `other`, of type `other_ty`, into `zip`, the `Zip` /// of their iterators. fn zip<'tcx>( @@ -1244,9 +1188,9 @@ fn zip<'tcx>( /// `rt.Trusted`, how std's `Zip` of `a` and `b` reads them, by the traits it specializes /// on: by index if both are `TrustedRandomAccess`, as whether each may have side effects, -/// and folded by its size hint if both are `TrustedLen`, or `TrustedRandomAccessNoCoerce`, -/// whose `fold` reads by index as many pairs as their exact size hints, but whose `next` -/// reads as any other zip's does. +/// and folded by its size hint if both are `TrustedRandomAccessNoCoerce`, whose `fold` +/// reads by index as many pairs as their exact size hints, or `TrustedLen`, whose `fold` +/// reads by `next`. Their `next` reads as any other zip's does. fn zip_trusted<'tcx>(b: &mut Body<'_, '_, 'tcx>, a: Ty<'tcx>, other: Ty<'tcx>, span: Span) -> Expr { let both = |name: &str| implements(b.t, a, name) && implements(b.t, other, name); if both("TrustedRandomAccess") { @@ -1258,7 +1202,9 @@ fn zip_trusted<'tcx>(b: &mut Body<'_, '_, 'tcx>, a: Ty<'tcx>, other: Ty<'tcx>, s ), }); Expr::Array(effects.into()) - } else if both("TrustedLen") || both("TrustedRandomAccessNoCoerce") { + } else if both("TrustedRandomAccessNoCoerce") { + Expr::Str("index".into()) + } else if both("TrustedLen") { Expr::Str("len".into()) } else { Expr::undefined() @@ -1343,8 +1289,7 @@ fn collect<'tcx>( if let Some(elem) = elem { let v = match elem.kind() { ty::Uint(ty::UintTy::U8) => { - let (folds, by_index, src) = collect_folds(b, from, elem, span); - let take = iter_take(b, from, folds, span); + let (take, by_index, src) = collect_take(b, from, elem, span); Expr::rt( "iterToByteVec", tail( @@ -1519,7 +1464,7 @@ fn drops_iter<'tcx>(b: &mut Body<'_, '_, 'tcx>, ty: Ty<'tcx>, span: Span) -> boo } /// `rt.iterToArray` of `iter`, an iterator of type `from`, collected into a `Vec` as -/// `collect_folds` says std's reads it. It reserves as std's does for a `TrustedLen` +/// `collect_take` says std's reads it. It reserves as std's does for a `TrustedLen` /// iterator if `trusted`. pub(super) fn to_array<'tcx>( b: &mut Body<'_, '_, 'tcx>, @@ -1529,8 +1474,7 @@ pub(super) fn to_array<'tcx>( trusted: bool, span: Span, ) -> Expr { - let (folds, by_index, src) = collect_folds(b, from, elem, span); - let take = iter_take(b, from, folds, span); + let (take, by_index, src) = collect_take(b, from, elem, span); let size = size_of(b, elem, span); Expr::rt( "iterToArray", @@ -1547,37 +1491,31 @@ fn src_size(src: Option) -> Expr { src.map_or_else(Expr::undefined, |size| Expr::lit(size.to_string())) } -/// Whether std's `collect` of an iterator of type `from` into a `Vec` folds it, and -/// whether by index, reading no item past its length. In place of the `Vec` its items come -/// from, it reads a `TrustedRandomAccessNoCoerce` one by index and any other by `try_fold`, -/// then drops it whole, as reading by `next` and then dropping it does but for a zip, whose -/// `next` reads a side once past the other: that one folds, its length reserved as a -/// `TrustedLen` one's, and is refused if it holds values that drop, which its `fold` drops -/// as each fold ends. Elsewhere, it folds a `TrustedLen` one by its own `fold`, which drops -/// them first, and reads any other by `next`. Last, the size of the elements of the `Vec` -/// it writes in place of, if it does. -fn collect_folds<'tcx>( +/// How std's `collect` of an iterator of type `from` into a `Vec` takes it, as +/// `rt.Take`, and whether by index, reading no item past its length. In place of the `Vec` +/// its items come from, it reads a `TrustedRandomAccessNoCoerce` one by index and any other +/// by `try_fold`, then drops it whole, as reading by `next` and then dropping it does but +/// for a zip, whose `next` reads a side once past the other, its length reserved as a +/// `TrustedLen` one's. Elsewhere, it folds a `TrustedLen` one by its own `fold`, which +/// drops what it holds first, and reads any other by `next`. Last, the size of the elements +/// of the `Vec` it writes in place of, if it does. +fn collect_take<'tcx>( b: &mut Body<'_, '_, 'tcx>, from: Ty<'tcx>, elem: Ty<'tcx>, span: Span, -) -> (bool, bool, Option) { +) -> (Expr, bool, Option) { let Some(src) = in_place(b.t, from, elem) else { - return (implements(b.t, from, "TrustedLen"), false, None); + let folds = implements(b.t, from, "TrustedLen"); + return (iter_take(b, from, folds, span), false, None); }; let zips = from.walk().filter_map(|arg| arg.as_type()).any(|t| { matches!(t.kind(), ty::Adt(adt, _) if library::std_path(b.t.tcx, adt.did()).last().map(String::as_str) == Some("Zip")) }); - let by_index = zips && implements(b.t, from, "TrustedRandomAccessNoCoerce"); - if by_index && drops_iter(b, from, span) { - b.t.err( - span, - format!( - "a `collect` in place of `{from}`, a zip std reads by index, holding values that drop, which is not supported yet" - ), - ); + if zips && implements(b.t, from, "TrustedRandomAccessNoCoerce") { + return (Expr::Str("index".into()), true, Some(src)); } - (by_index, by_index, Some(src)) + (iter_take(b, from, false, span), false, Some(src)) } /// The size of the elements of the `Vec` std's `collect` of an iterator of type `iter` into diff --git a/ts/tests/task.ts b/ts/tests/task.ts index 6959edb1a..dbaa82c20 100644 --- a/ts/tests/task.ts +++ b/ts/tests/task.ts @@ -59,6 +59,8 @@ export interface Fixture { rfolded(log: Log, id: number, arg: number): void; inside(log: Log, id: number, arg: number): void; released(log: Log, id: number, arg: number): void; + flattened(log: Log, id: number, arg: number): void; + indexed(log: Log, id: number, arg: number): void; compared(log: Log, id: number, arg: number): void; lists(log: Log, id: number, arg: number): void; }; @@ -324,6 +326,8 @@ export const steps: [string, (r: Run, arg: number) => void][] = [ ], ["inside", (r, arg) => r.f.drops.inside(r.log, 1000 * r.exec.tasks.length, arg)], ["released", (r, arg) => r.f.drops.released(r.log, 1000 * r.exec.tasks.length, arg)], + ["flattened", (r, arg) => r.f.drops.flattened(r.log, 1000 * r.exec.tasks.length, arg)], + ["indexed", (r, arg) => r.f.drops.indexed(r.log, 1000 * r.exec.tasks.length, arg)], ["compared", (r, arg) => r.f.drops.compared(r.log, 1000 * r.exec.tasks.length, arg)], [ "wakers", @@ -430,6 +434,10 @@ export const cases: Uint8Array[] = [ ...[...Array.from({ length: 10 }, (_, arg) => arg), 19, 29].map((arg) => script(["inside", arg])), // Where std drops a closure given to a consumer or an entry. ...Array.from({ length: 7 }, (_, arg) => script(["released", arg])), + // What a `flatten` drops of inner iterators that hold items once they end. + ...Array.from({ length: 10 }, (_, arg) => script(["flattened", arg])), + // What std drops of a zip it reads by index. + ...Array.from({ length: 9 }, (_, arg) => script(["indexed", arg])), // What std's comparisons of iterators drop. ...Array.from({ length: 9 }, (_, arg) => script(["compared", arg])), // What a `LinkedList` drops, and when.