diff --git a/quest/m3/README.md b/quest/m3/README.md index 4c9209903..792c89bb2 100644 --- a/quest/m3/README.md +++ b/quest/m3/README.md @@ -18,6 +18,7 @@ generic std gap is planned here even when moq never calls it. - [Unsafe code the translator can model](/quest/m3/ts-unsafe.md) - a dependency using only `unsafe` the translator can model translates from source - [The capacity of a BytesMut](/quest/m3/ts-bytes-capacity.md) - `BytesMut::capacity` and what reads it translate with `bytes`' values - [Trait objects](/quest/m3/ts-dyn.md) - `dyn Error` and `dyn Iterator` translate, so a consumer neither rewrites nor binds them +- [A trait object in a struct's last field](/quest/m3/ts-dyn-tail.md) - `Rc>` and the like translate, the last field as the object - [bytes' Chain as a Buf object](/quest/m3/ts-buf-chain.md) - `Chain::copy_to_bytes` across both halves translates, and with it a `Chain` as a `dyn Buf` - [A Buf object's size](/quest/m3/ts-dyn-buf-size.md) - a `dyn Buf` object holds only the methods some call dispatches to - [by_ref of a mutable reference to an iterator](/quest/m3/ts-by-ref-place.md) - `Iterator::by_ref` of a `&mut I` in a local translates diff --git a/quest/m3/ts-dyn-tail.md b/quest/m3/ts-dyn-tail.md new file mode 100644 index 000000000..7de0b0277 --- /dev/null +++ b/quest/m3/ts-dyn-tail.md @@ -0,0 +1,19 @@ +# [M] A trait object in a struct's last field + +## Goal + +[rust2-ts](/ts/README.md) translates a pointer to a struct whose last field unsizes to a +trait object, such as `Rc>`, `Arc>`, or the crate's +own `&Tail`, with Rust's dispatch, borrow checks, and drop order, proven by a +differential test against native Rust. + +## Plan + +Found writing the `Rc`, `Weak`, and `Pin` trait objects on 2026-11-02: these fail as "a +coercion to `Rc>`, which is not supported yet", and the reject fixture +keeps `tail_read`. `Rc>` is the common shared, mutable object in Rust. + +One shape: the struct's other fields stay as they are, and the last one is the object a box of +its value would be, so a `RefCell`'s and a `Mutex`'s guards lend the object. + +Public API: the translator's output. diff --git a/ts/README.md b/ts/README.md index 98ec9b600..1c6f6b2d5 100644 --- a/ts/README.md +++ b/ts/README.md @@ -122,7 +122,7 @@ crate translation reaches is refused, and so are two versions of one crate it re | `Layout`, `alloc::alloc` | `rt.Layout`: `{ size, align }`, never changed once made, checked as std's constructors check it; `alloc` gives an `rt.Block` of its bytes, which a cast of its pointer to `*mut T` the body shows came from `alloc` or `realloc` makes a JS array of `T`s, values JS copies, as an `rt.AtIndex` of its first; a cast back to `*mut u8` only as what `dealloc` or `realloc` takes, which free the array or copy it into a new one; its bytes, read, written, or cast to any other type, are refused, and fail at run time through a pointer from elsewhere | | closure | an arrow function, with `[Symbol.dispose]` if it owns a value that drops, and what makes its clone if a clone can't be itself | | `fn` pointer, function item as a value | the function, as a closure is typed: a `()` result is `undefined`, where a declared function returns `void` | -| `&dyn Trait`, `&mut dyn Trait`, `Box`, `Arc` | an object with the trait's methods, its supertraits' included: `shape.area$Shape()`; behind an `Arc`, an `rt.ArcDyn` sharing the count of the `Arc` it was made from | +| `&dyn Trait`, `&mut dyn Trait`, `Box`, `Arc`, `Rc`, `Weak`, `Pin

` of one | an object with the trait's methods, its supertraits' included: `shape.area$Shape()`; behind an `Arc` or an `Rc`, an `rt.ArcDyn` sharing the count of the `Arc` it was made from | | `dyn Any` | an instance of the class its value's type was wrapped in, which a downcast checks for: `a instanceof Any.of$dyns_Square ? a.v : undefined` | | `dyn Fn`, `dyn FnMut`, `dyn FnOnce` | the closure or function it was made of: `(a0: rt.u8) => rt.u32` | | constant | its value, inlined as Rust inlines it, so each use of one holding a cell is a cell of its own; one with no value tree, or holding a cell, read from the memory rustc evaluated | @@ -450,7 +450,7 @@ as its fold ends, before what it wraps, as std's does. A `Vec`'s `drain` leaves what precedes its range until it drops, then drops what it still holds and moves the tail back, so one never dropped, as `mem::forget` leaves it, leaks the rest, as std's does. -A trait object of the crate's own trait, a dependency's, or `bytes`' `Buf`, behind `&`, `&mut`, `Box`, or `Arc`, is an object with +A trait object of the crate's own trait, a dependency's, or `bytes`' `Buf`, behind `&`, `&mut`, `Box`, `Arc`, `Rc`, or a `Pin` of one, is an object with a method for each function a call can dispatch to, its supertraits' included, named for its trait as an impl's function is and taking what follows `self`: `shape.area$Shape()`. The trait's module exports its type, `Shape.Shape` from `dyns.Shape.ts`, which a TS @@ -462,14 +462,19 @@ same object. A `Box` drops what it holds through its `[Symbol.dispose a TS caller's object may leave out. An `Arc` unsized to an `Arc`, or to an `Arc`, is an `rt.ArcDyn`: the object a box of its value would be, and the `Arc` it was made from, whose one count both sides' clones and drops change, and the -last of which drops the value. `Arc::ptr_eq` compares the `Arc`s. A `dyn Buf`'s object -holds no `chunks_vectored`, whose `IoSlice` has no JS value, so a call of it fails. +last of which drops the value. `Arc::ptr_eq` compares the `Arc`s. An `Rc` is an `Arc`, +and a `Pin` the pointer it holds. A `Weak` unsized to a `Weak` keeps the +`Arc` and makes the `rt.ArcDyn` as it upgrades, since the value of `new_cyclic`'s +`Weak` is not there yet as it unsizes. `Arc::from` or `Rc::from` of a box is an `rt.Arc` +of what the box is, which drops it with the last clone. A `dyn Buf`'s object holds no +`chunks_vectored`, whose `IoSlice` has no JS value, so a call of it fails. A `dyn Any` is such an object with no methods, whose class `is`, `downcast_ref`, -`downcast_mut`, and `Box`'s and `Arc`'s `downcast` check for: `a instanceof Any.of$dyns_Square ? +`downcast_mut`, and `Box`'s, `Arc`'s, and `Rc`'s `downcast` check for: `a instanceof Any.of$dyns_Square ? a.v : undefined`. A `&mut` one of a value JS copies is the class holding its `rt.Place`, or the class itself behind a `Box`, as a `&mut dyn Trait`'s is, and `Arc::downcast` gives -back the `Arc` the object was made from. +back the `Arc` the object was made from, or, of one made from a box, an `rt.ArcDyn` of +the value sharing its count. A `dyn Fn`, `dyn FnMut`, or `dyn FnOnce` is the closure or function it was made of, which a call calls as it does the closure, and which a box drops as it does the closure. One @@ -480,7 +485,7 @@ or a mapped crate's trait other than `dyn Debug` and `dyn Display` behind `&`, ` `Box`, `Arc`, or `Rc`, `dyn Future`, `dyn Any`, `dyn Buf`, and the function traits, of a generic trait or one with an associated type, of a byte array, or behind any other pointer, such -as a `Weak` or a struct's last field, is refused, and so are an upcast to `dyn Any` and +as a struct's last field, is refused, and so are an upcast to `dyn Any` and `Any::type_id`. An `async fn` returns a future without running anything: an instance of a class of its @@ -858,7 +863,7 @@ they need. Byte reinterpretation, pointer addresses, pointer arithmetic on a value JS keeps as an object (other than wrapping arithmetic on a null or dangling pointer), memory from `alloc` other than an array of values JS copies, and unions whose fields overlap in different types ([unsafe](/quest/m3/ts-unsafe.md)), and trait objects other than `dyn Debug`, `dyn Display`, `dyn Future`, `dyn Any`, `dyn Fn*`, `dyn Buf`, and the translated crates' traits' -behind `&`, `&mut`, `Box`, or `Arc` ([trait objects](/quest/m3/ts-dyn.md)), fail translation. Until they translate, an item that needs one, such as a `dyn Error`, binds to +behind `&`, `&mut`, `Box`, `Arc`, `Rc`, `Weak`, or `Pin` ([trait objects](/quest/m3/ts-dyn.md)), fail translation. Until they translate, an item that needs one, such as a `dyn Error`, binds to hand-written TS ([bindings](#bindings)). These fail translation: `f16` and `f128`, a `Poll` of a `Poll` of a `Poll`, a future whose output can be pending, an instance of a generic type whose field is a `Poll` of a type parameter that can be pending, a closure that owns a value diff --git a/ts/fixtures/lang/expected/core/any.Any.ts b/ts/fixtures/lang/expected/core/any.Any.ts index 1641c4302..9fb0450a3 100644 --- a/ts/fixtures/lang/expected/core/any.Any.ts +++ b/ts/fixtures/lang/expected/core/any.Any.ts @@ -1,6 +1,7 @@ // Generated by rust2-ts. Do not edit. import * as rt from "../rt.ts"; +import type * as dyns_Noisy from "../dyns.Noisy.ts"; import type * as Square from "../dyns.Square.ts"; import type * as Tri from "../dyns.Tri.ts"; import type * as fmt_Fault from "../fmt.Fault.ts"; @@ -15,6 +16,18 @@ export class of$Option_u8 { } } +export class of$dyns_Noisy { + v: dyns_Noisy.Noisy; + + constructor(v: dyns_Noisy.Noisy) { + this.v = v; + } + + [Symbol.dispose](): void { + this.v[Symbol.dispose](); + } +} + export class of$dyns_Square { v: Square.Square; diff --git a/ts/fixtures/lang/expected/core/option.ts b/ts/fixtures/lang/expected/core/option.ts index 065930542..46466e45c 100644 --- a/ts/fixtures/lang/expected/core/option.ts +++ b/ts/fixtures/lang/expected/core/option.ts @@ -293,6 +293,13 @@ export function map$1j8xzu6(self: rt.u8 | undefined | rt.None, f: (a0: rt.u8 | u return undefined; } +export function map$1i542n2(self: rt.Arc | undefined, f: (a0: rt.Arc) => rt.u32): rt.u32 | undefined { + if (self === undefined) { + return undefined; + } + return f(self); +} + export function map$1mp7tga(self: rt.i64[] | undefined, f: (a0: rt.i64[]) => rt.usize): rt.usize | undefined { if (self === undefined) { return undefined; @@ -715,7 +722,7 @@ export function map$155qrdr(self: rt.Arc | undefined, f: (a0 return f(self); } -export function map$1i542n2(self: rt.Arc | undefined, f: (a0: rt.Arc) => rt.u32): rt.u32 | undefined { +export function map$0j05j69(self: rt.Arc | undefined, f: (a0: rt.Arc) => rt.u32): rt.u32 | undefined { if (self === undefined) { return undefined; } diff --git a/ts/fixtures/lang/expected/core/result.ts b/ts/fixtures/lang/expected/core/result.ts index 1009403ba..3d34e4825 100644 --- a/ts/fixtures/lang/expected/core/result.ts +++ b/ts/fixtures/lang/expected/core/result.ts @@ -1,7 +1,7 @@ // Generated by rust2-ts. Do not edit. import * as rt from "../rt.ts"; -import { drop$Result_sync_MutexGuard_locks_Tally_sync_TryLockError_sync_MutexGuard_locks_Tally, drop$Result_sync_RwLockReadGuard_locks_Tally_sync_TryLockError_sync_RwLockReadGuard_locks_Tally, drop$Result_tuple2_usize_u8_sync_Arc_dyn_Any_marker_Sync_marker_Send } from "../lib.ts"; +import { drop$Result_sync_Arc_u32_sync_Arc_dyn_Any_marker_Sync_marker_Send, drop$Result_sync_MutexGuard_locks_Tally_sync_TryLockError_sync_MutexGuard_locks_Tally, drop$Result_sync_RwLockReadGuard_locks_Tally_sync_TryLockError_sync_RwLockReadGuard_locks_Tally, drop$Result_tuple2_usize_u8_sync_Arc_dyn_Any_marker_Sync_marker_Send } from "../lib.ts"; import { eq$09knsz6 as string_eq$09knsz6 } from "../alloc/string.ts"; import * as ByRef from "../collections.ByRef.ts"; import * as ByVal from "../collections.ByVal.ts"; @@ -447,6 +447,20 @@ export function ok$04yj0hm(self: rt.Result): rt.ByteSlic return undefined; } +export function ok$00p9ap8(self: rt.Result, rt.Arc>): rt.Arc | undefined { + let _0!: rt.Arc | undefined; + if (self.ok) { + _0 = self.value; + } else { + _0 = undefined; + } + if (!self.ok) { + drop$Result_sync_Arc_u32_sync_Arc_dyn_Any_marker_Sync_marker_Send(self); + return _0; + } + return _0; +} + export function ok$0lceojf(self: rt.Result<[rt.usize, rt.u8], rt.Arc>): [rt.usize, rt.u8] | undefined { let _0!: [rt.usize, rt.u8] | undefined; if (self.ok) { diff --git a/ts/fixtures/lang/expected/dyns.Looped.ts b/ts/fixtures/lang/expected/dyns.Looped.ts new file mode 100644 index 000000000..43b89b6a9 --- /dev/null +++ b/ts/fixtures/lang/expected/dyns.Looped.ts @@ -0,0 +1,50 @@ +// Generated by rust2-ts. Do not edit. + +import * as rt from "./rt.ts"; +import type * as dyns_Shape from "./dyns.Shape.ts"; + +/** Provided, and overridden by one impl. */ +export function sides$dyns_Shape(_self: Looped): rt.u8 { + return 4; +} + +export function intoArea$dyns_Shape(self: Looped): rt.u32 { + const _0: rt.u32 = rt.u32WrappingAdd(area$dyns_Shape(self), 1); + self[Symbol.dispose](); + return _0; +} + +/** Over early-bound lifetimes, which its signature takes as arguments too. */ +export function larger$dyns_Shape(self: Looped, other: rt.u32): rt.u32 { + return rt.max(area$dyns_Shape(self), other); +} + +/** Writes through a `&mut` to a number, which is an `rt.Place`. */ +export function tally$dyns_Shape(self: Looped, sum: rt.Place): void { + sum.v = rt.u32WrappingAdd(sum.v, area$dyns_Shape(self)); +} + +/** A shape holding a `Weak` of itself as a trait object, made inside `Rc::new_cyclic`. */ +export class Looped { + side: rt.u8; + me: rt.Weak; + + constructor(side: rt.u8, me: rt.Weak) { + this.side = side; + this.me = me; + } + + [Symbol.dispose](): void { + this.me[Symbol.dispose](); + } +} + +export function area$dyns_Shape(self: Looped): rt.u32 { + return rt.u32Add(self.side as rt.u32, 1); +} + +export function grow$dyns_Shape(self: Looped, by: rt.u8): void { + self.side = rt.u8WrappingAdd(self.side, by); +} + +//# sourceMappingURL=dyns.Looped.ts.map diff --git a/ts/fixtures/lang/expected/dyns.Noisy.ts b/ts/fixtures/lang/expected/dyns.Noisy.ts new file mode 100644 index 000000000..f75b059fb --- /dev/null +++ b/ts/fixtures/lang/expected/dyns.Noisy.ts @@ -0,0 +1,56 @@ +// Generated by rust2-ts. Do not edit. + +import * as rt from "./rt.ts"; + +/** Provided, and overridden by one impl. */ +export function sides$dyns_Shape(_self: Noisy): rt.u8 { + return 4; +} + +export function intoArea$dyns_Shape(self: Noisy): rt.u32 { + const _0: rt.u32 = rt.u32WrappingAdd(area$dyns_Shape(self), 1); + self[Symbol.dispose](); + return _0; +} + +/** Over early-bound lifetimes, which its signature takes as arguments too. */ +export function larger$dyns_Shape(self: Noisy, other: rt.u32): rt.u32 { + return rt.max(area$dyns_Shape(self), other); +} + +/** Writes through a `&mut` to a number, which is an `rt.Place`. */ +export function tally$dyns_Shape(self: Noisy, sum: rt.Place): void { + sum.v = rt.u32WrappingAdd(sum.v, area$dyns_Shape(self)); +} + +/** A shape that notes its id in a log as it drops. */ +export class Noisy { + _0: rt.u8; + _1: rt.Arc>; + + constructor(_0: rt.u8, _1: rt.Arc>) { + this._0 = _0; + this._1 = _1; + } + + [Symbol.dispose](): void { + drop$ops_Drop(this); + this._1[Symbol.dispose](); + } +} + +export function area$dyns_Shape(self: Noisy): rt.u32 { + return self._0 as rt.u32; +} + +export function grow$dyns_Shape(self: Noisy, by: rt.u8): void { + self._0 = rt.u8WrappingAdd(self._0, by); +} + +export function drop$ops_Drop(self: Noisy): void { + const _5: rt.RefCell = rt.refCellBorrowMut(self._1.value); + rt.byteVecPush(_5.value, self._0); + rt.refMutRelease(_5); +} + +//# sourceMappingURL=dyns.Noisy.ts.map diff --git a/ts/fixtures/lang/expected/dyns.Shape.ts b/ts/fixtures/lang/expected/dyns.Shape.ts index 5b85ac0f8..ea0792c61 100644 --- a/ts/fixtures/lang/expected/dyns.Shape.ts +++ b/ts/fixtures/lang/expected/dyns.Shape.ts @@ -3,6 +3,8 @@ import * as rt from "./rt.ts"; import { sides$dyns_Shape_u32, intoArea$dyns_Shape_u32, larger$dyns_Shape_u32, tally$dyns_Shape_u32 as dyns_tally$dyns_Shape_u32, area$dyns_Shape_u32, grow$dyns_Shape_u32 } from "./dyns.ts"; import * as Hits from "./dyns.Hits.ts"; +import * as Looped from "./dyns.Looped.ts"; +import * as dyns_Noisy from "./dyns.Noisy.ts"; import * as Square from "./dyns.Square.ts"; import * as Tri from "./dyns.Tri.ts"; @@ -41,6 +43,78 @@ export class of$dyns_Hits { } } +export class of$dyns_Looped { + v: Looped.Looped; + + constructor(v: Looped.Looped) { + this.v = v; + } + + [Symbol.dispose](): void { + this.v[Symbol.dispose](); + } + + area$Shape(): rt.u32 { + return Looped.area$dyns_Shape(this.v); + } + + grow$Shape(a: rt.u8): void { + return Looped.grow$dyns_Shape(this.v, a); + } + + intoArea$Shape(): rt.u32 { + return Looped.intoArea$dyns_Shape(this.v); + } + + larger$Shape(a: rt.u32): rt.u32 { + return Looped.larger$dyns_Shape(this.v, a); + } + + sides$Shape(): rt.u8 { + return Looped.sides$dyns_Shape(this.v); + } + + tally$Shape(a: rt.Place): void { + return Looped.tally$dyns_Shape(this.v, a); + } +} + +export class of$dyns_Noisy { + v: dyns_Noisy.Noisy; + + constructor(v: dyns_Noisy.Noisy) { + this.v = v; + } + + [Symbol.dispose](): void { + this.v[Symbol.dispose](); + } + + area$Shape(): rt.u32 { + return dyns_Noisy.area$dyns_Shape(this.v); + } + + grow$Shape(a: rt.u8): void { + return dyns_Noisy.grow$dyns_Shape(this.v, a); + } + + intoArea$Shape(): rt.u32 { + return dyns_Noisy.intoArea$dyns_Shape(this.v); + } + + larger$Shape(a: rt.u32): rt.u32 { + return dyns_Noisy.larger$dyns_Shape(this.v, a); + } + + sides$Shape(): rt.u8 { + return dyns_Noisy.sides$dyns_Shape(this.v); + } + + tally$Shape(a: rt.Place): void { + return dyns_Noisy.tally$dyns_Shape(this.v, a); + } +} + export class of$dyns_Square { v: Square.Square; diff --git a/ts/fixtures/lang/expected/dyns.ts b/ts/fixtures/lang/expected/dyns.ts index 8d043d1ba..989a185a8 100644 --- a/ts/fixtures/lang/expected/dyns.ts +++ b/ts/fixtures/lang/expected/dyns.ts @@ -1,13 +1,16 @@ // Generated by rust2-ts. Do not edit. import * as rt from "./rt.ts"; +import { drop$Result_Rc_dyns_Noisy_Rc_dyn_Any, drop$Result_Rc_dyns_Square_Rc_dyn_Any, drop$Result_Rc_dyns_Tri_Rc_dyn_Any } from "./lib.ts"; import * as Any from "./core/any.Any.ts"; -import { unwrapOr$1iemzn8 as option_unwrapOr$1iemzn8, unwrapOr$0r2bmpr as option_unwrapOr$0r2bmpr, map$1i542n2 as option_map$1i542n2, mapOr$06rr3sb as option_mapOr$06rr3sb } from "./core/option.ts"; -import { ok$0lceojf, map$0zzqmaz as result_map$0zzqmaz } from "./core/result.ts"; +import { unwrapOr$1iemzn8 as option_unwrapOr$1iemzn8, unwrapOr$0r2bmpr as option_unwrapOr$0r2bmpr, map$1i542n2 as option_map$1i542n2, map$0j05j69 as option_map$0j05j69, mapOr$06rr3sb as option_mapOr$06rr3sb } from "./core/option.ts"; +import { ok$00p9ap8, ok$0lceojf, map$0zzqmaz as result_map$0zzqmaz } from "./core/result.ts"; import * as dyns_Erased from "./dyns.Erased.ts"; import type * as Hits from "./dyns.Hits.ts"; import * as Hook from "./dyns.Hook.ts"; +import * as Looped from "./dyns.Looped.ts"; import * as dyns_Named from "./dyns.Named.ts"; +import * as dyns_Noisy from "./dyns.Noisy.ts"; import * as dyns_Shape from "./dyns.Shape.ts"; import * as Shown from "./dyns.Shown.ts"; import * as Square from "./dyns.Square.ts"; @@ -527,11 +530,11 @@ export function anys(dataData: Uint8Array, dataStart: number, dataLen: number, o const part6 = hold.strong; const args28: rt.Fmt[] = [(f: rt.Formatter) => rt.usizeDisplay(part6, f)]; fmt_put(out, rt.fmtFormat([args28[0], " "])); - const _381: rt.Result, rt.Arc> = rt.arcDowncast(hold, Any.of$u8); + const _381: rt.Result, rt.Arc> = rt.arcDowncast(hold, Any.of$u8, (object) => object.v); if (_381.ok) { rt.panic("internal error: entered unreachable code"); } else { - const part7 = ok$0lceojf(result_map$0zzqmaz(rt.arcDowncast(_381.error, Any.of$tuple2_u8_u8), (t: rt.Arc<[rt.u8, rt.u8]>): [rt.usize, rt.u8] => { + const part7 = ok$0lceojf(result_map$0zzqmaz(rt.arcDowncast(_381.error, Any.of$tuple2_u8_u8, (object) => object.v), (t: rt.Arc<[rt.u8, rt.u8]>): [rt.usize, rt.u8] => { const _02: [rt.usize, rt.u8] = [t.strong, t.value[0]]; t[Symbol.dispose](); return _02; @@ -666,4 +669,285 @@ export function fns(data: rt.ByteSlice, out: rt.ByteVec): void { } } +/** + * Trait objects behind the rest of the pointers std coerces to one: an `Rc`, a `Weak` of + * an `Rc` or an `Arc`, a `Pin`, and an `Rc` or an `Arc` made from a box of one. Counts, + * upgrades, `downcast`, and what drops when. + */ +export function pointers(dataData: Uint8Array, dataStart: number, dataLen: number, out: rt.ByteVec): void { + let f!: rt.Arc<(a0: rt.u8) => rt.u8>; + let _595: boolean = false; + if (dataLen >= 2) { + const log: rt.Arc> = new rt.Arc(new rt.RefCell(new rt.ByteVec())); + const sq: rt.Arc = new rt.Arc({ side: dataData[dataStart] as rt.u16 }); + const weak2: rt.Weak = rt.weakDyn(new rt.Weak(sq), (arc: rt.Arc): rt.Arc => { + return new rt.ArcDyn(arc, new dyns_Shape.of$dyns_Square(arc.value)); + }); + const _19: rt.Arc = rt.arcClone(sq); + const named: rt.Arc = new rt.ArcDyn(_19, new dyns_Named.of$dyns_Square(_19.value)); + const shape: rt.Arc = rt.arcClone(named); + const other: rt.Weak = new rt.Weak(shape); + const _34: string = named.value.label$Named(); + const _38: rt.u32 = shape.value.area$Shape(); + const _42: rt.usize = sq.strong; + const _45: rt.usize = weak2.arc.strong; + const _48: rt.usize = rt.weakWeakCount(weak2); + const _51: boolean = rt.arcPtrEq(weak2.arc, other.arc); + const args2: rt.Fmt[] = [(f: rt.Formatter) => rt.fmtPad(f, _34), (f: rt.Formatter) => rt.u32Display(_38, f), (f: rt.Formatter) => rt.usizeDisplay(_42, f), (f: rt.Formatter) => rt.usizeDisplay(_45, f), (f: rt.Formatter) => rt.usizeDisplay(_48, f), (f: rt.Formatter) => rt.fmtBool(_51, f)]; + fmt_put(out, rt.fmtFormat([args2[0], " ", args2[1], " ", args2[2], " ", args2[3], " ", args2[4], " ", args2[5], " "])); + const again: rt.Weak = rt.weakClone(weak2); + sq[Symbol.dispose](); + named[Symbol.dispose](); + const _75: rt.u32 | undefined = option_map$1i542n2(rt.weakUpgrade(again), (s: rt.Arc): rt.u32 => { + const _0: rt.u32 = s.value.area$Shape(); + s[Symbol.dispose](); + return _0; + }); + const _79: rt.usize = shape.strong; + const args4: rt.Fmt[] = [(f: rt.Formatter) => rt.fmtOption(_75, f, rt.u32Debug), (f: rt.Formatter) => rt.usizeDisplay(_79, f)]; + fmt_put(out, rt.fmtFormat([args4[0], " ", args4[1], " "])); + shape[Symbol.dispose](); + const _97: rt.Arc | undefined = rt.weakUpgrade(weak2); + const _95: boolean = _97 === undefined; + const _102: rt.Arc | undefined = rt.weakUpgrade(again); + const _100: boolean = _102 === undefined; + const _105: rt.usize = weak2.arc.strong; + const args6: rt.Fmt[] = [(f: rt.Formatter) => rt.fmtBool(_95, f), (f: rt.Formatter) => rt.fmtBool(_100, f), (f: rt.Formatter) => rt.usizeDisplay(_105, f)]; + const _91: string = rt.fmtFormat([args6[0], " ", args6[1], " ", args6[2], " "]); + rt.drop(_102); + rt.drop(_97); + fmt_put(out, _91); + const noisy: rt.Arc = new rt.Arc(new dyns_Noisy.Noisy(dataData[dataStart + 1], rt.arcClone(log))); + const weak4: rt.Weak = rt.weakDyn(new rt.Weak(noisy), (arc2: rt.Arc): rt.Arc => { + return new rt.ArcDyn(arc2, new dyns_Shape.of$dyns_Noisy(arc2.value)); + }); + const part = option_map$1i542n2(rt.weakUpgrade(weak4), (s2: rt.Arc): rt.u32 => { + const _02: rt.u32 = s2.value.area$Shape(); + s2[Symbol.dispose](); + return _02; + }); + const args8: rt.Fmt[] = [(f: rt.Formatter) => rt.fmtOption(part, f, rt.u32Debug)]; + fmt_put(out, rt.fmtFormat([args8[0], " "])); + noisy[Symbol.dispose](); + const _147: rt.Arc | undefined = rt.weakUpgrade(weak4); + const _145: boolean = _147 === undefined; + const _150: rt.RefCell = rt.refCellBorrow(log.value); + const args10: rt.Fmt[] = [(f: rt.Formatter) => rt.fmtBool(_145, f), (f: rt.Formatter) => rt.fmtList(rt.byteVecView(_150.value), f, rt.u8Debug)]; + const _141: string = rt.fmtFormat([args10[0], " ", args10[1], " "]); + rt.refRelease(_150); + rt.drop(_147); + fmt_put(out, _141); + const looped: rt.Arc = rt.arcNewCyclic((me: rt.Weak): Looped.Looped => { + return new Looped.Looped(dataData[dataStart], rt.weakDyn(rt.weakClone(me), (arc3: rt.Arc): rt.Arc => { + return new rt.ArcDyn(arc3, new dyns_Shape.of$dyns_Looped(arc3.value)); + })); + }); + const _168: rt.u32 | undefined = option_map$1i542n2(rt.weakUpgrade(looped.value.me), (s3: rt.Arc): rt.u32 => { + const _04: rt.u32 = s3.value.area$Shape(); + s3[Symbol.dispose](); + return _04; + }); + const _174: rt.usize = looped.strong; + const _177: rt.usize = looped.weak; + const args12: rt.Fmt[] = [(f: rt.Formatter) => rt.fmtOption(_168, f, rt.u32Debug), (f: rt.Formatter) => rt.usizeDisplay(_174, f), (f: rt.Formatter) => rt.usizeDisplay(_177, f)]; + fmt_put(out, rt.fmtFormat([args12[0], " ", args12[1], " ", args12[2], " "])); + const pinned: dyns_Shape.Shape = new dyns_Shape.of$dyns_Noisy(new dyns_Noisy.Noisy(rt.u8WrappingAdd(dataData[dataStart], 1), rt.arcClone(log))); + let n: rt.u32 = dataData[dataStart + 1] as rt.u32; + const borrowed2: dyns_Shape.Shape = new dyns_Shape.ofPlace$u32(rt.place(() => n, (value) => n = value)); + const _205: rt.u32 = pinned.area$Shape(); + const _209: rt.u8 = pinned.sides$Shape(); + const _213: rt.u32 = borrowed2.area$Shape(); + const args14: rt.Fmt[] = [(f: rt.Formatter) => rt.u32Display(_205, f), (f: rt.Formatter) => rt.u8Display(_209, f), (f: rt.Formatter) => rt.u32Display(_213, f)]; + fmt_put(out, rt.fmtFormat([args14[0], " ", args14[1], " ", args14[2], " "])); + rt.drop(pinned); + const _230: rt.RefCell = rt.refCellBorrow(log.value); + const args16: rt.Fmt[] = [(f: rt.Formatter) => rt.fmtList(rt.byteVecView(_230.value), f, rt.u8Debug)]; + const _226: string = rt.fmtFormat([args16[0], " "]); + rt.refRelease(_230); + fmt_put(out, _226); + const boxes: dyns_Shape.Shape[] = rt.iterToArray(rt.iterMap(rt.iterSlice(rt.byteSliceView(new rt.ByteSlice(dataData, dataStart + 2, dataLen - 2))), (_2: rt.u8): dyns_Shape.Shape => { + const x2: rt.u8 = _2; + const _43: rt.u8 = rt.u8Rem(x2, 3); + if (_43 === 0) { + return new dyns_Shape.of$dyns_Noisy(new dyns_Noisy.Noisy(x2, rt.arcClone(log))); + } + if (_43 === 1) { + return new dyns_Shape.of$u32(x2 as rt.u32); + } + return new dyns_Shape.of$dyns_Tri({ tag: "Tall", _0: x2 } as Tri.Tri); + }), undefined, 8, true); + const rcs: rt.Arc[] = []; + const arcs: rt.Arc[] = []; + const iter: rt.Iter<[rt.usize, dyns_Shape.Shape]> = rt.iterEnumerate(rt.iterSlice(boxes, rt.drop)); + while (true) { + const _249: [rt.usize, dyns_Shape.Shape] | rt.Done = iter.next(); + if (_249 === rt.DONE) { + break; + } + const i: rt.usize = _249[0]; + const boxed: dyns_Shape.Shape = _249[1]; + if (rt.usizeRem(i, 2) === 0) { + const _257: rt.Arc = new rt.Arc(boxed); + rcs.push(_257); + } else { + const _259: rt.Arc = new rt.Arc(boxed); + arcs.push(_259); + } + } + rt.drop(iter); + const kept: rt.Arc[] = rt.iterToArray(rt.iterMap(rt.iterStepBy(rt.iterSlice(rcs), 2), (a0: rt.Arc): rt.Arc => { + return rt.arcClone(a0); + }), undefined, 8, true); + const part2 = rt.iterToArray(rt.iterChain(rt.iterMap(rt.iterSlice(rcs), (s4: rt.Arc): rt.u32 => { + return s4.value.area$Shape(); + }), rt.iterMap(rt.iterSlice(arcs), (s5: rt.Arc): rt.u32 => { + return s5.value.area$Shape(); + })), undefined, 4, true); + const args18: rt.Fmt[] = [(f: rt.Formatter) => rt.fmtList(part2, f, rt.u32Debug)]; + fmt_put(out, rt.fmtFormat([args18[0], " "])); + const _291: rt.RefCell = rt.refCellBorrowMut(log.value); + rt.byteVecClear(_291.value); + rt.refMutRelease(_291); + rt.dropAll(arcs); + const _304: rt.RefCell = rt.refCellBorrow(log.value); + const args20: rt.Fmt[] = [(f: rt.Formatter) => rt.fmtList(rt.byteVecView(_304.value), f, rt.u8Debug)]; + const _300: string = rt.fmtFormat([args20[0], " "]); + rt.refRelease(_304); + fmt_put(out, _300); + rt.dropAll(rcs); + const _321: rt.RefCell = rt.refCellBorrow(log.value); + const args22: rt.Fmt[] = [(f: rt.Formatter) => rt.fmtList(rt.byteVecView(_321.value), f, rt.u8Debug)]; + const _317: string = rt.fmtFormat([args22[0], " "]); + rt.refRelease(_321); + fmt_put(out, _317); + rt.dropAll(kept); + const _337: rt.RefCell = rt.refCellBorrow(log.value); + const args24: rt.Fmt[] = [(f: rt.Formatter) => rt.fmtList(rt.byteVecView(_337.value), f, rt.u8Debug)]; + const _333: string = rt.fmtFormat([args24[0], " "]); + rt.refRelease(_337); + fmt_put(out, _333); + const _345: rt.Arc = new rt.Arc({ side: dataData[dataStart + 1] as rt.u16 }); + const any: rt.Arc = new rt.ArcDyn(_345, new Any.of$dyns_Square(_345.value)); + const _351: rt.Result, rt.Arc> = rt.arcDowncast(rt.arcClone(any), Any.of$dyns_Tri, (object) => object.v); + const wrong: boolean = !_351.ok; + drop$Result_Rc_dyns_Tri_Rc_dyn_Any(_351); + const _355: rt.Result, rt.Arc> = rt.arcDowncast(any, Any.of$dyns_Square, (object) => object.v); + if (_355.ok) { + const sq2: rt.Arc = _355.value; + const _365: Square.Square = sq2.value; + const _368: rt.usize = sq2.strong; + const _372: rt.Fmt = (f: rt.Formatter) => rt.fmtBool(wrong, f); + const arg = _365.side; + const args26: rt.Fmt[] = [_372, (f: rt.Formatter) => rt.u16Display(arg, f), (f: rt.Formatter) => rt.usizeDisplay(_368, f)]; + fmt_put(out, rt.fmtFormat([args26[0], " ", args26[1], " ", args26[2], " "])); + sq2[Symbol.dispose](); + } else { + fmt_put(out, "none "); + } + if (!_355.ok) { + drop$Result_Rc_dyns_Square_Rc_dyn_Any(_355); + } + const any2: rt.Arc = new rt.Arc(new Any.of$dyns_Noisy(new dyns_Noisy.Noisy(rt.u8WrappingAdd(dataData[dataStart + 1], 1), rt.arcClone(log)))); + const held: rt.Arc = rt.arcClone(any2); + _595 = true; + b5: { + const _388: [rt.Result, rt.Arc>, rt.Result, rt.Arc>] = [rt.arcDowncast(rt.arcClone(any2), Any.of$dyns_Noisy, (object) => object.v), rt.arcDowncast(rt.arcClone(held), Any.of$dyns_Noisy, (object) => object.v)]; + if (_388[0].ok) { + if (_388[1].ok) { + const x: rt.Arc = (_388[0] as { ok: true; value: rt.Arc }).value; + const y: rt.Arc = (_388[1] as { ok: true; value: rt.Arc }).value; + const _403: rt.Arc = rt.arcClone(x); + const _402: rt.Arc = new rt.ArcDyn(_403, new Any.of$dyns_Noisy(_403.value)); + const _406: rt.Arc = rt.arcClone(y); + const _401: [rt.Arc, rt.Arc] = [_402, new rt.ArcDyn(_406, new Any.of$dyns_Noisy(_406.value))]; + const ex: rt.Arc = _402; + const ey: rt.Arc = _401[1]; + const _416: boolean = x === y; + const _420: boolean = rt.arcPtrEq(ex, ey); + const _424: boolean = rt.arcPtrEq(ex, held); + const _428: rt.usize = x.strong; + const args28: rt.Fmt[] = [(f: rt.Formatter) => rt.fmtBool(_416, f), (f: rt.Formatter) => rt.fmtBool(_420, f), (f: rt.Formatter) => rt.fmtBool(_424, f), (f: rt.Formatter) => rt.usizeDisplay(_428, f)]; + fmt_put(out, rt.fmtFormat([args28[0], " ", args28[1], " ", args28[2], " ", args28[3], " "])); + ey[Symbol.dispose](); + ex[Symbol.dispose](); + y[Symbol.dispose](); + x[Symbol.dispose](); + break b5; + } + } + if (_388[0].ok) { + (_388[0] as { ok: true; value: rt.Arc }).value[Symbol.dispose](); + } else { + drop$Result_Rc_dyns_Noisy_Rc_dyn_Any(_388[0]); + } + if (_388[1].ok) { + (_388[1] as { ok: true; value: rt.Arc }).value[Symbol.dispose](); + } else { + drop$Result_Rc_dyns_Noisy_Rc_dyn_Any(_388[1]); + } + } + const _440: rt.RefCell = rt.refCellBorrowMut(log.value); + rt.byteVecClear(_440.value); + rt.refMutRelease(_440); + const _444: rt.Result, rt.Arc> = rt.arcDowncast(any2, Any.of$dyns_Noisy, (object) => object.v); + if (_444.ok) { + const n2: rt.Arc = _444.value; + const _455: dyns_Noisy.Noisy = n2.value; + const _458: rt.usize = n2.strong; + const arg2 = _455._0; + const args30: rt.Fmt[] = [(f: rt.Formatter) => rt.u8Display(arg2, f), (f: rt.Formatter) => rt.usizeDisplay(_458, f)]; + fmt_put(out, rt.fmtFormat([args30[0], " ", args30[1], " "])); + _595 = false; + held[Symbol.dispose](); + const _475: rt.usize = n2.strong; + const _478: rt.RefCell = rt.refCellBorrow(log.value); + const args32: rt.Fmt[] = [(f: rt.Formatter) => rt.usizeDisplay(_475, f), (f: rt.Formatter) => rt.fmtList(rt.byteVecView(_478.value), f, rt.u8Debug)]; + const _471: string = rt.fmtFormat([args32[0], " ", args32[1], " "]); + rt.refRelease(_478); + fmt_put(out, _471); + n2[Symbol.dispose](); + } else { + fmt_put(out, "none "); + } + if (!_444.ok) { + drop$Result_Rc_dyns_Noisy_Rc_dyn_Any(_444); + } + const _495: rt.RefCell = rt.refCellBorrow(log.value); + const args34: rt.Fmt[] = [(f: rt.Formatter) => rt.fmtList(rt.byteVecView(_495.value), f, rt.u8Debug)]; + const _491: string = rt.fmtFormat([args34[0], " "]); + rt.refRelease(_495); + fmt_put(out, _491); + const part3 = option_map$0j05j69(ok$00p9ap8(rt.arcDowncast(new rt.Arc(new Any.of$u32(dataData[dataStart] as rt.u32)), Any.of$u32, (object) => object.v)), (n3: rt.Arc): rt.u32 => { + const _08: rt.u32 = n3.value; + n3[Symbol.dispose](); + return _08; + }); + const args36: rt.Fmt[] = [(f: rt.Formatter) => rt.fmtOption(part3, f, rt.u32Debug)]; + fmt_put(out, rt.fmtFormat([args36[0], " "])); + const _523: rt.Arc<(a0: rt.u8) => rt.u8> = new rt.Arc((x3: rt.u8): rt.u8 => { + return rt.u8WrappingAdd(x3, dataData[dataStart]); + }); + f = new rt.ArcDyn(_523, _523.value); + const g: rt.Arc<(a0: rt.u8) => rt.u8> = new rt.Arc((x4: rt.u8): rt.u8 => { + return x4 ^ dataData[dataStart + 1]; + }); + const _537: rt.u8 = f.value(dataData[dataStart + 1]); + const _543: rt.u8 = g.value(dataData[dataStart]); + const args38: rt.Fmt[] = [(f: rt.Formatter) => rt.u8Display(_537, f), (f: rt.Formatter) => rt.u8Display(_543, f)]; + fmt_put(out, rt.fmtFormat([args38[0], " ", args38[1]])); + g[Symbol.dispose](); + f[Symbol.dispose](); + if (_595) { + held[Symbol.dispose](); + } + _595 = false; + looped[Symbol.dispose](); + weak4[Symbol.dispose](); + again[Symbol.dispose](); + other[Symbol.dispose](); + weak2[Symbol.dispose](); + log[Symbol.dispose](); + } +} + //# sourceMappingURL=dyns.ts.map diff --git a/ts/fixtures/lang/expected/harness.ts b/ts/fixtures/lang/expected/harness.ts index d7835dabe..8291aa789 100644 --- a/ts/fixtures/lang/expected/harness.ts +++ b/ts/fixtures/lang/expected/harness.ts @@ -22,7 +22,7 @@ import { cows, slices as cows_slices, bytes as cows_bytes } from "./cows.ts"; import { cycles } from "./cycles.ts"; import { defaults as defaults_defaults } from "./defaults.ts"; import { durations } from "./durations.ts"; -import { dyns, shared as dyns_shared, anys, fns } from "./dyns.ts"; +import { dyns, shared as dyns_shared, anys, fns, pointers } from "./dyns.ts"; import { edits as edits_edits, bytes as edits_bytes } from "./edits.ts"; import { vecs as elements_vecs, arrays as elements_arrays, segments as elements_segments, inline, edges as elements_edges, rawSlices, emptyParts } from "./elements.ts"; import { eqs } from "./errors.ts"; @@ -319,6 +319,8 @@ export function cases(): [string, (a0: rt.u8, a1: rt.ByteSlice, a2: rt.ByteVec) sorts(a0162, a1162.data, a1162.start, a1162.length, a2162); }] as [string, (a0: rt.u8, a1: rt.ByteSlice, a2: rt.ByteVec) => undefined], ["sorts::disorders", disorders as (a0: rt.u8, a1: rt.ByteSlice, a2: rt.ByteVec) => undefined] as [string, (a0: rt.u8, a1: rt.ByteSlice, a2: rt.ByteVec) => undefined], ["sorts::btrees", (a0164: rt.u8, a1164: rt.ByteSlice, a2164: rt.ByteVec): undefined => { sorts_btrees(a0164, a1164.data, a1164.start, a1164.length, a2164); + }] as [string, (a0: rt.u8, a1: rt.ByteSlice, a2: rt.ByteVec) => undefined], ["dyns::pointers", (_2212: rt.u8, data112: rt.ByteSlice, out113: rt.ByteVec): undefined => { + pointers(data112.data, data112.start, data112.length, out113); }] as [string, (a0: rt.u8, a1: rt.ByteSlice, a2: rt.ByteVec) => undefined]]; } diff --git a/ts/fixtures/lang/expected/lib.ts b/ts/fixtures/lang/expected/lib.ts index b749452f5..0a418097b 100644 --- a/ts/fixtures/lang/expected/lib.ts +++ b/ts/fixtures/lang/expected/lib.ts @@ -16,6 +16,9 @@ import type * as counts_Noisy from "./counts.Noisy.ts"; import type * as RcReleasing from "./counts.RcReleasing.ts"; import type * as RcShared from "./counts.RcShared.ts"; import type * as durations_Window from "./durations.Window.ts"; +import type * as dyns_Noisy from "./dyns.Noisy.ts"; +import type * as Square from "./dyns.Square.ts"; +import type * as Tri from "./dyns.Tri.ts"; import * as Inline from "./elements.Inline.ts"; import type * as Couple from "./fields.Couple.ts"; import type * as Either from "./generics.Either.ts"; @@ -923,6 +926,30 @@ export function drop$Option_cell_Ref_borrows_Tagged(_1: rt.RefCell, rt.Arc>): void { + if (_1.ok) { + _1.value[Symbol.dispose](); + } else { + _1.error[Symbol.dispose](); + } +} + +export function drop$Result_Rc_dyns_Square_Rc_dyn_Any(_1: rt.Result, rt.Arc>): void { + if (_1.ok) { + _1.value[Symbol.dispose](); + } else { + _1.error[Symbol.dispose](); + } +} + +export function drop$Result_Rc_dyns_Tri_Rc_dyn_Any(_1: rt.Result, rt.Arc>): void { + if (_1.ok) { + _1.value[Symbol.dispose](); + } else { + _1.error[Symbol.dispose](); + } +} + export function drop$Result_Result_sync_MappedMutexGuard_u64_sync_MappedMutexGuard_u64_sync_MutexGuard_locks_Tally(_1: rt.Result, rt.Mutex>, rt.Mutex>): void { if (_1.ok) { drop$Result_sync_MappedMutexGuard_u64_sync_MappedMutexGuard_u64(_1.value); @@ -1053,6 +1080,14 @@ export function drop$Result_results_Logged_results_Logged(_1: rt.Result, rt.Arc>): void { + if (_1.ok) { + _1.value[Symbol.dispose](); + } else { + _1.error[Symbol.dispose](); + } +} + export function drop$Result_sync_MappedMutexGuard_u64_sync_MappedMutexGuard_u64(_1: rt.Result, rt.Mutex>): void { if (_1.ok) { rt.mutexUnlock(_1.value); diff --git a/ts/fixtures/lang/src/dyns.rs b/ts/fixtures/lang/src/dyns.rs index 7c710f946..90bdc4817 100644 --- a/ts/fixtures/lang/src/dyns.rs +++ b/ts/fixtures/lang/src/dyns.rs @@ -4,10 +4,14 @@ //! them, `self: Box`, and an upcast to the supertrait. Behind an `Arc`, the object //! shares the count of the `Arc` it was made from. A `dyn Any` downcasts to the type it //! was made of, borrowed, boxed, or shared. A `dyn Fn*` of a closure, a function, or a -//! function pointer calls it, changing what it captured, borrowed, boxed, or shared. +//! function pointer calls it, changing what it captured, borrowed, boxed, or shared. An +//! `Rc`, a `Weak`, a `Pin`, and an `Rc` or an `Arc` made from a box hold one too. use std::any::Any; +use std::cell::RefCell; use std::fmt::{self, Debug}; +use std::pin::Pin; +use std::rc::{self, Rc}; use std::sync::atomic::{AtomicU32, Ordering}; use std::sync::{Arc, Weak}; @@ -526,3 +530,196 @@ pub fn fns(data: &[u8], out: &mut Vec) { &format!("{} {} {}", shared(a), other(b), Arc::strong_count(&other)), ); } + +/// A shape that notes its id in a log as it drops. +struct Noisy(u8, Rc>>); + +impl Shape for Noisy { + fn area(&self) -> u32 { + u32::from(self.0) + } + fn grow(&mut self, by: u8) { + self.0 = self.0.wrapping_add(by); + } +} + +impl Drop for Noisy { + fn drop(&mut self) { + self.1.borrow_mut().push(self.0); + } +} + +/// A shape holding a `Weak` of itself as a trait object, made inside `Rc::new_cyclic`. +struct Looped { + side: u8, + me: rc::Weak, +} + +impl Shape for Looped { + fn area(&self) -> u32 { + u32::from(self.side) + 1 + } + fn grow(&mut self, by: u8) { + self.side = self.side.wrapping_add(by); + } +} + +/// Trait objects behind the rest of the pointers std coerces to one: an `Rc`, a `Weak` of +/// an `Rc` or an `Arc`, a `Pin`, and an `Rc` or an `Arc` made from a box of one. Counts, +/// upgrades, `downcast`, and what drops when. +pub fn pointers(data: &[u8], out: &mut Vec) { + let [a, b, rest @ ..] = data else { + return; + }; + let log = Rc::new(RefCell::new(Vec::new())); + + // An `Rc` of each, an upcast, and a `Weak` unsized from one of the value's own type. + let sq = Rc::new(Square { side: u16::from(*a) }); + let weak: rc::Weak = Rc::downgrade(&sq); + let weak: rc::Weak = weak; + let named: Rc = sq.clone(); + let shape: Rc = named.clone(); + let other = Rc::downgrade(&shape); + put( + out, + &format!( + "{} {} {} {} {} {} ", + named.label(), + shape.area(), + Rc::strong_count(&sq), + rc::Weak::strong_count(&weak), + rc::Weak::weak_count(&weak), + rc::Weak::ptr_eq(&weak, &other), + ), + ); + let again = weak.clone(); + drop(sq); + drop(named); + put( + out, + &format!("{:?} {} ", again.upgrade().map(|s| s.area()), Rc::strong_count(&shape)), + ); + drop(shape); + put( + out, + &format!( + "{} {} {} ", + weak.upgrade().is_none(), + again.upgrade().is_none(), + rc::Weak::strong_count(&weak) + ), + ); + + // Of an `Arc`, whose value drops with the last strong one while a `Weak` stays. + let noisy = Arc::new(Noisy(*b, log.clone())); + let weak: Weak = Arc::downgrade(&noisy); + let weak: Weak = weak; + put(out, &format!("{:?} ", weak.upgrade().map(|s| s.area()))); + drop(noisy); + put(out, &format!("{:?} {:?} ", weak.upgrade().is_none(), log.borrow())); + + // One coerced inside `new_cyclic`, before the value it points at is there. + let looped = Rc::new_cyclic(|me: &rc::Weak| Looped { + side: *a, + me: me.clone(), + }); + put( + out, + &format!( + "{:?} {} {} ", + looped.me.upgrade().map(|s| s.area()), + Rc::strong_count(&looped), + Rc::weak_count(&looped), + ), + ); + + // Pinned: through a box, which drops what it holds, and through a `&mut`. + { + let pinned: Pin> = Box::pin(Noisy(a.wrapping_add(1), log.clone())); + let mut n = u32::from(*b); + let borrowed: Pin<&mut u32> = Pin::new(&mut n); + let borrowed: Pin<&mut dyn Shape> = borrowed; + put( + out, + &format!("{} {} {} ", pinned.area(), pinned.sides(), borrowed.area()), + ); + } + put(out, &format!("{:?} ", log.borrow())); + + // From a box of one: an `Rc` or an `Arc` that drops it with the last clone. + let boxes: Vec> = rest + .iter() + .map(|&x| match x % 3 { + 0 => Box::new(Noisy(x, log.clone())) as Box, + 1 => Box::new(u32::from(x)), + _ => Box::new(Tri::Tall(x)), + }) + .collect(); + let mut rcs: Vec> = Vec::new(); + let mut arcs: Vec> = Vec::new(); + for (i, boxed) in boxes.into_iter().enumerate() { + match i % 2 { + 0 => rcs.push(Rc::from(boxed)), + _ => arcs.push(boxed.into()), + } + } + let kept: Vec> = rcs.iter().step_by(2).cloned().collect(); + let areas: Vec = rcs + .iter() + .map(|s| s.area()) + .chain(arcs.iter().map(|s| s.area())) + .collect(); + put(out, &format!("{areas:?} ")); + log.borrow_mut().clear(); + drop(arcs); + put(out, &format!("{:?} ", log.borrow())); + drop(rcs); + put(out, &format!("{:?} ", log.borrow())); + drop(kept); + put(out, &format!("{:?} ", log.borrow())); + + // `Rc::downcast`, of one made from the value's own `Rc`, and of one made from a box, + // which shares its count with what it gives back. + let any: Rc = Rc::new(Square { side: u16::from(*b) }); + let wrong = any.clone().downcast::().is_err(); + match any.downcast::() { + Ok(sq) => put(out, &format!("{wrong} {} {} ", sq.side, Rc::strong_count(&sq))), + Err(_) => put(out, "none "), + } + let boxed: Box = Box::new(Noisy(b.wrapping_add(1), log.clone())); + let any: Rc = Rc::from(boxed); + let held = any.clone(); + // Two downcasts of one, and each erased again, are still the one allocation. + if let (Ok(x), Ok(y)) = (any.clone().downcast::(), held.clone().downcast::()) { + let (ex, ey): (Rc, Rc) = (x.clone(), y.clone()); + put( + out, + &format!( + "{} {} {} {} ", + Rc::ptr_eq(&x, &y), + Rc::ptr_eq(&ex, &ey), + Rc::ptr_eq(&ex, &held), + Rc::strong_count(&x), + ), + ); + } + log.borrow_mut().clear(); + match any.downcast::() { + Ok(n) => { + put(out, &format!("{} {} ", n.0, Rc::strong_count(&n))); + drop(held); + put(out, &format!("{} {:?} ", Rc::strong_count(&n), log.borrow())); + } + Err(_) => put(out, "none "), + } + put(out, &format!("{:?} ", log.borrow())); + let boxed: Box = Box::new(u32::from(*a)); + let shared: Arc = boxed.into(); + put(out, &format!("{:?} ", shared.downcast::().ok().map(|n| *n))); + + // Functions, shared by an `Rc` and from a box. + let f: Rc u8> = Rc::new(move |x| x.wrapping_add(*a)); + let boxed: Box u8> = Box::new(move |x| x ^ *b); + let g: Arc u8> = Arc::from(boxed); + put(out, &format!("{} {}", f(*b), g(*a))); +} diff --git a/ts/fixtures/lang/src/harness.rs b/ts/fixtures/lang/src/harness.rs index 6070870c8..68ddd8d3a 100644 --- a/ts/fixtures/lang/src/harness.rs +++ b/ts/fixtures/lang/src/harness.rs @@ -307,6 +307,7 @@ fn cases() -> Vec<(&'static str, Case)> { ("sorts::sorts", sorts::sorts), ("sorts::disorders", sorts::disorders), ("sorts::btrees", sorts::btrees), + ("dyns::pointers", |_, data, out| dyns::pointers(data, out)), ] } diff --git a/ts/fixtures/reject/census.md b/ts/fixtures/reject/census.md index dbbf55d3b..e45621cbc 100644 --- a/ts/fixtures/reject/census.md +++ b/ts/fixtures/reject/census.md @@ -8,96 +8,96 @@ | Count | Construct | First | | ---: | --- | --- | -| 50 | a raw pointer to `_` in `_`, which the crate may put another object in place of | fixtures/reject/src/lib.rs:586:10 | -| 23 | a raw pointer to `_` in a variable assigned again while it may point there | fixtures/reject/src/lib.rs:594:10 | +| 50 | a raw pointer to `_` in `_`, which the crate may put another object in place of | fixtures/reject/src/lib.rs:585:10 | +| 23 | a raw pointer to `_` in a variable assigned again while it may point there | fixtures/reject/src/lib.rs:593:10 | | 20 | unsupported call to `_` | fixtures/reject/src/lib.rs:160: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:1315: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:1633: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:533:27 | -| 5 | `_` with a mutable reference to a value JS copies, which its mapping would copy | fixtures/reject/src/lib.rs:1213: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:657: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:2324:7 | +| 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:1314: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:1632: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:532:27 | +| 5 | `_` with a mutable reference to a value JS copies, which its mapping would copy | fixtures/reject/src/lib.rs:1212: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:656: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:2323:7 | | 4 | a variant of `_`, which is not supported: either is the same JS string | fixtures/reject/src/lib.rs:309: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:546: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:1688:3 | +| 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:545: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:1687:3 | | 3 | a copy of a closure that changes what it captured | fixtures/reject/src/lib.rs:224: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:2244: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:1691:56 | +| 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:2243: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:1690: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:442: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:2203: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:2205:24 | -| 2 | a coercion to `_`, which is not supported yet | fixtures/reject/src/lib.rs:433:40 | -| 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:2228:18 | -| 2 | a raw or mutable slice of a byte in no array of bytes | fixtures/reject/src/lib.rs:2214:12 | -| 2 | a raw pointer to a place of `()`, which has no address of its own | fixtures/reject/src/lib.rs:706:15 | +| 2 | `_`, a trait object of the generic trait `_`, which is not supported yet | fixtures/reject/src/lib.rs:435: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:2202: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:2204: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:2227:18 | +| 2 | a raw or mutable slice of a byte in no array of bytes | fixtures/reject/src/lib.rs:2213:12 | +| 2 | a raw pointer to a place of `()`, which has no address of its own | fixtures/reject/src/lib.rs:705:15 | | 2 | an iterator of the crate implementing `_`, which is not supported yet | fixtures/reject/src/lib.rs:145:1 | -| 2 | comparing pointers to `_`, each a place JS makes of its own | fixtures/reject/src/lib.rs:574:2 | +| 2 | an upcast from `_` to `_`, which is not supported yet | fixtures/reject/src/lib.rs:503:32 | +| 2 | comparing pointers to `_`, each a place JS makes of its own | fixtures/reject/src/lib.rs:573: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:304:4 | | 2 | unsupported type `_` from another crate | fixtures/reject/src/lib.rs:416:32 | -| 1 | `Buf::copy_to_bytes` of `_`, a value JS copies, which is not supported | fixtures/reject/src/lib.rs:739:2 | +| 1 | `Buf::copy_to_bytes` of `_`, a value JS copies, which is not supported | fixtures/reject/src/lib.rs:738: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:372: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:367: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:352:2 | -| 1 | `Extend` of `_` by `_`, whose `_` of `_` is not supported yet | fixtures/reject/src/lib.rs:1250:31 | +| 1 | `Extend` of `_` by `_`, whose `_` of `_` is not supported yet | fixtures/reject/src/lib.rs:1249: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:480:2 | +| 1 | `_` is not supported: its field `_` is `_`, typed `_`, whose `Pending` would be `rt.OuterPending` as `_` | fixtures/reject/src/lib.rs:473:2 | | 1 | `_` of `_` by `_`, which is not supported yet | fixtures/reject/src/lib.rs:253:6 | -| 1 | `_` of `_`, which is not supported yet | fixtures/reject/src/lib.rs:516:4 | +| 1 | `_` of `_`, which is not supported yet | fixtures/reject/src/lib.rs:515: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:361:6 | -| 1 | `clone_from` of `_`, whose items' `clone_from` is their own, which is not supported yet | fixtures/reject/src/lib.rs:2096:4 | -| 1 | `collect` of `_`, which sorts by `_`'s own `Ord`, of entries that drop, which is not supported yet | fixtures/reject/src/lib.rs:933:22 | +| 1 | `clone_from` of `_`, whose items' `clone_from` is their own, which is not supported yet | fixtures/reject/src/lib.rs:2095:4 | +| 1 | `collect` of `_`, which sorts by `_`'s own `Ord`, of entries that drop, which is not supported yet | fixtures/reject/src/lib.rs:932: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:2208: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:2207:20 | -| 1 | `offset_from` of pointers to `()`, which has no bytes | fixtures/reject/src/lib.rs:2150: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:2143:36 | +| 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:2207: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:2206:20 | +| 1 | `offset_from` of pointers to `()`, which has no bytes | fixtures/reject/src/lib.rs:2149: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:2142: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:209: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:202:8 | | 1 | a cast from `_` to `_` | fixtures/reject/src/lib.rs:68:2 | | 1 | a coercion to `_` | fixtures/reject/src/lib.rs:276:2 | -| 1 | a constant of type `_` | fixtures/reject/src/lib.rs:2344:34 | -| 1 | a constant of type `_`, a pointer into memory translation can't name | fixtures/reject/src/lib.rs:756: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:2226:3 | -| 1 | a dangling pointer to `_`, a value of no bytes made of more than structs and tuples | fixtures/reject/src/lib.rs:715:11 | +| 1 | a coercion to `_`, which is not supported yet | fixtures/reject/src/lib.rs:462:30 | +| 1 | a constant of type `_` | fixtures/reject/src/lib.rs:2343:34 | +| 1 | a constant of type `_`, a pointer into memory translation can't name | fixtures/reject/src/lib.rs:755: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:2225:3 | +| 1 | a dangling pointer to `_`, a value of no bytes made of more than structs and tuples | fixtures/reject/src/lib.rs:714: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:2130:10 | +| 1 | a mapped guard of `_`, which JS can't write in place | fixtures/reject/src/lib.rs:2129:10 | | 1 | a mutable reference into a `Result`'s payload, passed on or kept | fixtures/reject/src/lib.rs:340: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:2137: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:2142: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:2230:27 | -| 1 | a pointer's address, which JS has no counterpart of | fixtures/reject/src/lib.rs:538:17 | +| 1 | a pointer into `_`, which JS keeps as an object that knows no array it is in | fixtures/reject/src/lib.rs:2136: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:2141: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:2229:27 | +| 1 | a pointer's address, which JS has no counterpart of | fixtures/reject/src/lib.rs:537: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:555: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:1342:11 | +| 1 | a raw pointer to `_` behind a reference, which is the object and not where it is kept | fixtures/reject/src/lib.rs:554: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:1341: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:2141:11 | -| 1 | a slice of `()`, which has no bytes, from a pointer | fixtures/reject/src/lib.rs:2150: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:2238: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:2229:6 | -| 1 | a trait object of `_`, which is not supported yet | fixtures/reject/src/lib.rs:459:26 | -| 1 | an upcast from `_` to `_`, which is not supported yet | fixtures/reject/src/lib.rs:510:32 | +| 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:2140:11 | +| 1 | a slice of `()`, which has no bytes, from a pointer | fixtures/reject/src/lib.rs:2149: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:2237: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:2228:6 | +| 1 | a trait object of `_`, which is not supported yet | fixtures/reject/src/lib.rs:452:26 | | 1 | arithmetic on `_` | fixtures/reject/src/lib.rs:8:2 | -| 1 | comparing `_` | fixtures/reject/src/lib.rs:1690:41 | +| 1 | comparing `_` | fixtures/reject/src/lib.rs:1689:41 | | 1 | comparing `_` as a key, which is not supported yet | fixtures/reject/src/lib.rs:235:75 | -| 1 | comparing pointers to `_` in an atomic, which JS has no address of | fixtures/reject/src/lib.rs:755:15 | -| 1 | comparing pointers to `_`, which has no bytes and so no address of its own | fixtures/reject/src/lib.rs:706:70 | -| 1 | const generic types are not supported: `_` | fixtures/reject/src/lib.rs:2075:1 | +| 1 | comparing pointers to `_` in an atomic, which JS has no address of | fixtures/reject/src/lib.rs:754:15 | +| 1 | comparing pointers to `_`, which has no bytes and so no address of its own | fixtures/reject/src/lib.rs:705:70 | +| 1 | const generic types are not supported: `_` | fixtures/reject/src/lib.rs:2074:1 | | 1 | constructing `_` | fixtures/reject/src/lib.rs:327:53 | | 1 | hashing `_` as a key, which is not supported yet | fixtures/reject/src/lib.rs:235:75 | -| 1 | hashing `_` by its address, which JS has no counterpart of | fixtures/reject/src/lib.rs:1694:5 | +| 1 | hashing `_` by its address, which JS has no counterpart of | fixtures/reject/src/lib.rs:1693:5 | | 1 | hashing `_` through `_`'s own `Hash::hash_slice`, which is not supported yet | fixtures/reject/src/lib.rs:295:16 | -| 1 | union `_`, whose fields overlap in `_` and `f64`, which JS keeps apart | fixtures/reject/src/lib.rs:560:1 | +| 1 | union `_`, whose fields overlap in `_` and `f64`, which JS keeps apart | fixtures/reject/src/lib.rs:559:1 | ## By API @@ -105,167 +105,166 @@ The type or module each refused type or path belongs to. | Count | API | First | | ---: | --- | --- | -| 39 | `std::cell::UnsafeCell` | fixtures/reject/src/lib.rs:665:15 | -| 27 | `(u32, u32)` | fixtures/reject/src/lib.rs:586:10 | -| 15 | `u32` | fixtures/reject/src/lib.rs:533:27 | -| 11 | `(u8, u8)` | fixtures/reject/src/lib.rs:1250:31 | -| 9 | `[u8; 4]` | fixtures/reject/src/lib.rs:459:26 | +| 39 | `std::cell::UnsafeCell` | fixtures/reject/src/lib.rs:664:15 | +| 27 | `(u32, u32)` | fixtures/reject/src/lib.rs:585:10 | +| 15 | `u32` | fixtures/reject/src/lib.rs:532:27 | +| 11 | `(u8, u8)` | fixtures/reject/src/lib.rs:1249:31 | +| 9 | `[u8; 4]` | fixtures/reject/src/lib.rs:452:26 | | 8 | `u8` | fixtures/reject/src/lib.rs:253:6 | | 6 | `f16` | fixtures/reject/src/lib.rs:7:14 | | 6 | `std::borrow::Cow` | fixtures/reject/src/lib.rs:309:2 | -| 5 | `Gap` | fixtures/reject/src/lib.rs:886:10 | +| 5 | `Gap` | fixtures/reject/src/lib.rs:885:10 | | 5 | `Option` | fixtures/reject/src/lib.rs:16:15 | -| 5 | `i32` | fixtures/reject/src/lib.rs:2324:7 | +| 5 | `i32` | fixtures/reject/src/lib.rs:2323:7 | | 4 | `Iterator` | fixtures/reject/src/lib.rs:37:4 | | 4 | `std::pin::Pin` | fixtures/reject/src/lib.rs:91:2 | | 4 | `std::str` | fixtures/reject/src/lib.rs:417:4 | -| 3 | `Mid` | fixtures/reject/src/lib.rs:1333:34 | -| 3 | `Outer` | fixtures/reject/src/lib.rs:1333:34 | +| 3 | `Mid` | fixtures/reject/src/lib.rs:1332:34 | +| 3 | `Outer` | fixtures/reject/src/lib.rs:1332:34 | | 3 | `Reused` | fixtures/reject/src/lib.rs:21:4 | -| 3 | `std::mem::ManuallyDrop` | fixtures/reject/src/lib.rs:2344:2 | +| 3 | `dyn std::any::Any` | fixtures/reject/src/lib.rs:503:32 | +| 3 | `std::mem::ManuallyDrop` | fixtures/reject/src/lib.rs:2343:2 | | 3 | `std::vec::Vec` | fixtures/reject/src/lib.rs:295:16 | | 3 | `{closure}` | fixtures/reject/src/lib.rs:304:4 | -| 2 | `(u16, u16)` | fixtures/reject/src/lib.rs:1154:31 | +| 2 | `(u16, u16)` | fixtures/reject/src/lib.rs:1153:31 | | 2 | `Counted` | fixtures/reject/src/lib.rs:367:2 | -| 2 | `InArray` | fixtures/reject/src/lib.rs:1280:9 | -| 2 | `InPayload` | fixtures/reject/src/lib.rs:1292:9 | -| 2 | `InTuple` | fixtures/reject/src/lib.rs:1284:9 | -| 2 | `InWritten` | fixtures/reject/src/lib.rs:1304:9 | -| 2 | `Inside` | fixtures/reject/src/lib.rs:1823:20 | +| 2 | `InArray` | fixtures/reject/src/lib.rs:1279:9 | +| 2 | `InPayload` | fixtures/reject/src/lib.rs:1291:9 | +| 2 | `InTuple` | fixtures/reject/src/lib.rs:1283:9 | +| 2 | `InWritten` | fixtures/reject/src/lib.rs:1303:9 | +| 2 | `Inside` | fixtures/reject/src/lib.rs:1822:20 | | 2 | `Poll` | fixtures/reject/src/lib.rs:72:20 | -| 2 | `Scaled` | fixtures/reject/src/lib.rs:442:23 | -| 2 | `[u32; 3]` | fixtures/reject/src/lib.rs:2168:10 | -| 2 | `[u8; 2]` | fixtures/reject/src/lib.rs:1704:37 | -| 2 | `[u8; 3]` | fixtures/reject/src/lib.rs:1704:15 | -| 2 | `dyn Scaled` | fixtures/reject/src/lib.rs:442:23 | -| 2 | `dyn std::any::Any` | fixtures/reject/src/lib.rs:510:32 | +| 2 | `Scaled` | fixtures/reject/src/lib.rs:435:23 | +| 2 | `[u32; 3]` | fixtures/reject/src/lib.rs:2167:10 | +| 2 | `[u8; 2]` | fixtures/reject/src/lib.rs:1703:37 | +| 2 | `[u8; 3]` | fixtures/reject/src/lib.rs:1703:15 | +| 2 | `dyn Keyed` | fixtures/reject/src/lib.rs:503:32 | +| 2 | `dyn Scaled` | fixtures/reject/src/lib.rs:435: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:516:2 | +| 2 | `std::any::TypeId` | fixtures/reject/src/lib.rs:515:2 | | 2 | `std::collections::BTreeSet` | fixtures/reject/src/lib.rs:235:75 | -| 2 | `std::collections::LinkedList` | fixtures/reject/src/lib.rs:2095:4 | -| 2 | `std::mem::MaybeUninit` | fixtures/reject/src/lib.rs:900:19 | +| 2 | `std::collections::LinkedList` | fixtures/reject/src/lib.rs:2094:4 | +| 2 | `std::mem::MaybeUninit` | fixtures/reject/src/lib.rs:899:19 | | 2 | `std::ops::Range` | fixtures/reject/src/lib.rs:160:8 | | 2 | `std::option::Option` | fixtures/reject/src/lib.rs:347:2 | | 2 | `std::sync::Arc` | fixtures/reject/src/lib.rs:276:2 | | 2 | `std::sync::MutexGuard` | fixtures/reject/src/lib.rs:83:2 | | 2 | `std::vec::IntoIter` | fixtures/reject/src/lib.rs:412:17 | -| 1 | `(Dropped, (u8, u8))` | fixtures/reject/src/lib.rs:2389:2 | -| 1 | `([Cloned; 2], (u8, u8))` | fixtures/reject/src/lib.rs:2373:2 | -| 1 | `([Greatest; 2], (u8, u8))` | fixtures/reject/src/lib.rs:2407:13 | -| 1 | `([Touched; 2], (u8, u8))` | fixtures/reject/src/lib.rs:2438:2 | -| 1 | `(std::vec::Vec, Tens)` | fixtures/reject/src/lib.rs:1250:31 | -| 1 | `(u16, ByKeyReplace)` | fixtures/reject/src/lib.rs:1599:55 | -| 1 | `(u16, ByKeySet)` | fixtures/reject/src/lib.rs:1591:51 | -| 1 | `(u16, ByKeyTake)` | fixtures/reject/src/lib.rs:1606:52 | -| 1 | `(u16, ByRefReplace)` | fixtures/reject/src/lib.rs:1575:32 | -| 1 | `(u16, ByRefTake)` | fixtures/reject/src/lib.rs:1583:32 | -| 1 | `(u16, InTuple)` | fixtures/reject/src/lib.rs:1324:33 | -| 1 | `*const [u8; 4]` | fixtures/reject/src/lib.rs:1694:5 | -| 1 | `*mut [u8; 4]` | fixtures/reject/src/lib.rs:1690:41 | -| 1 | `Aliased` | fixtures/reject/src/lib.rs:1098:29 | -| 1 | `Assigned` | fixtures/reject/src/lib.rs:1990:20 | +| 1 | `(Dropped, (u8, u8))` | fixtures/reject/src/lib.rs:2388:2 | +| 1 | `([Cloned; 2], (u8, u8))` | fixtures/reject/src/lib.rs:2372:2 | +| 1 | `([Greatest; 2], (u8, u8))` | fixtures/reject/src/lib.rs:2406:13 | +| 1 | `([Touched; 2], (u8, u8))` | fixtures/reject/src/lib.rs:2437:2 | +| 1 | `(std::vec::Vec, Tens)` | fixtures/reject/src/lib.rs:1249:31 | +| 1 | `(u16, ByKeyReplace)` | fixtures/reject/src/lib.rs:1598:55 | +| 1 | `(u16, ByKeySet)` | fixtures/reject/src/lib.rs:1590:51 | +| 1 | `(u16, ByKeyTake)` | fixtures/reject/src/lib.rs:1605:52 | +| 1 | `(u16, ByRefReplace)` | fixtures/reject/src/lib.rs:1574:32 | +| 1 | `(u16, ByRefTake)` | fixtures/reject/src/lib.rs:1582:32 | +| 1 | `(u16, InTuple)` | fixtures/reject/src/lib.rs:1323:33 | +| 1 | `*const [u8; 4]` | fixtures/reject/src/lib.rs:1693:5 | +| 1 | `*mut [u8; 4]` | fixtures/reject/src/lib.rs:1689:41 | +| 1 | `Aliased` | fixtures/reject/src/lib.rs:1097:29 | +| 1 | `Assigned` | fixtures/reject/src/lib.rs:1989:20 | | 1 | `Batched` | fixtures/reject/src/lib.rs:295:16 | -| 1 | `Behind` | fixtures/reject/src/lib.rs:1729:22 | -| 1 | `Bits` | fixtures/reject/src/lib.rs:560:1 | -| 1 | `Blank` | fixtures/reject/src/lib.rs:739:2 | -| 1 | `Block` | fixtures/reject/src/lib.rs:2075:1 | -| 1 | `ByBox` | fixtures/reject/src/lib.rs:1482:35 | -| 1 | `ByClosure` | fixtures/reject/src/lib.rs:1497:35 | -| 1 | `ByExchanged` | fixtures/reject/src/lib.rs:1543:30 | -| 1 | `ByInstance` | fixtures/reject/src/lib.rs:1523:35 | -| 1 | `ByKeyReplace` | fixtures/reject/src/lib.rs:1599:55 | -| 1 | `ByKeySet` | fixtures/reject/src/lib.rs:1591:51 | -| 1 | `ByKeyTake` | fixtures/reject/src/lib.rs:1606:52 | -| 1 | `ByObject` | fixtures/reject/src/lib.rs:1510:35 | -| 1 | `ByRead` | fixtures/reject/src/lib.rs:1433:35 | -| 1 | `ByRefReplace` | fixtures/reject/src/lib.rs:1575:32 | -| 1 | `ByRefTake` | fixtures/reject/src/lib.rs:1583:32 | -| 1 | `ByReplace` | fixtures/reject/src/lib.rs:1471:35 | -| 1 | `BySwap` | fixtures/reject/src/lib.rs:1459:35 | -| 1 | `BySwapped` | fixtures/reject/src/lib.rs:1532:76 | -| 1 | `ByWrite` | fixtures/reject/src/lib.rs:1446:35 | +| 1 | `Behind` | fixtures/reject/src/lib.rs:1728:22 | +| 1 | `Bits` | fixtures/reject/src/lib.rs:559:1 | +| 1 | `Blank` | fixtures/reject/src/lib.rs:738:2 | +| 1 | `Block` | fixtures/reject/src/lib.rs:2074:1 | +| 1 | `ByBox` | fixtures/reject/src/lib.rs:1481:35 | +| 1 | `ByClosure` | fixtures/reject/src/lib.rs:1496:35 | +| 1 | `ByExchanged` | fixtures/reject/src/lib.rs:1542:30 | +| 1 | `ByInstance` | fixtures/reject/src/lib.rs:1522:35 | +| 1 | `ByKeyReplace` | fixtures/reject/src/lib.rs:1598:55 | +| 1 | `ByKeySet` | fixtures/reject/src/lib.rs:1590:51 | +| 1 | `ByKeyTake` | fixtures/reject/src/lib.rs:1605:52 | +| 1 | `ByObject` | fixtures/reject/src/lib.rs:1509:35 | +| 1 | `ByRead` | fixtures/reject/src/lib.rs:1432:35 | +| 1 | `ByRefReplace` | fixtures/reject/src/lib.rs:1574:32 | +| 1 | `ByRefTake` | fixtures/reject/src/lib.rs:1582:32 | +| 1 | `ByReplace` | fixtures/reject/src/lib.rs:1470:35 | +| 1 | `BySwap` | fixtures/reject/src/lib.rs:1458:35 | +| 1 | `BySwapped` | fixtures/reject/src/lib.rs:1531:76 | +| 1 | `ByWrite` | fixtures/reject/src/lib.rs:1445:35 | | 1 | `BytesMut` | fixtures/reject/src/lib.rs:361:6 | -| 1 | `Called` | fixtures/reject/src/lib.rs:1064:28 | -| 1 | `Chosen` | fixtures/reject/src/lib.rs:1884:17 | -| 1 | `Clone` | fixtures/reject/src/lib.rs:2249:4 | -| 1 | `Closed` | fixtures/reject/src/lib.rs:2056:15 | -| 1 | `Compared` | fixtures/reject/src/lib.rs:1851:22 | -| 1 | `Copied` | fixtures/reject/src/lib.rs:1154:31 | -| 1 | `Deep` | fixtures/reject/src/lib.rs:1765:18 | -| 1 | `Deeper` | fixtures/reject/src/lib.rs:2016:22 | +| 1 | `Called` | fixtures/reject/src/lib.rs:1063:28 | +| 1 | `Chosen` | fixtures/reject/src/lib.rs:1883:17 | +| 1 | `Clone` | fixtures/reject/src/lib.rs:2248:4 | +| 1 | `Closed` | fixtures/reject/src/lib.rs:2055:15 | +| 1 | `Compared` | fixtures/reject/src/lib.rs:1850:22 | +| 1 | `Copied` | fixtures/reject/src/lib.rs:1153:31 | +| 1 | `Deep` | fixtures/reject/src/lib.rs:1764:18 | +| 1 | `Deeper` | fixtures/reject/src/lib.rs:2015:22 | | 1 | `DoubleEndedIterator` | fixtures/reject/src/lib.rs:145:1 | -| 1 | `Dynamic` | fixtures/reject/src/lib.rs:2040:20 | -| 1 | `Enclosing` | fixtures/reject/src/lib.rs:1868:22 | -| 1 | `Escaped` | fixtures/reject/src/lib.rs:1050:43 | +| 1 | `Dynamic` | fixtures/reject/src/lib.rs:2039:20 | +| 1 | `Enclosing` | fixtures/reject/src/lib.rs:1867:22 | +| 1 | `Escaped` | fixtures/reject/src/lib.rs:1049:43 | | 1 | `FusedIterator` | fixtures/reject/src/lib.rs:193:1 | -| 1 | `Fused` | fixtures/reject/src/lib.rs:706:70 | -| 1 | `Halves` | fixtures/reject/src/lib.rs:2311:16 | +| 1 | `Fused` | fixtures/reject/src/lib.rs:705:70 | +| 1 | `Halves` | fixtures/reject/src/lib.rs:2310:16 | | 1 | `HashMap` | fixtures/reject/src/lib.rs:253:6 | -| 1 | `Hits` | fixtures/reject/src/lib.rs:698:21 | -| 1 | `InField` | fixtures/reject/src/lib.rs:1296:9 | -| 1 | `InGeneric` | fixtures/reject/src/lib.rs:1300:9 | -| 1 | `InNested` | fixtures/reject/src/lib.rs:1288:9 | -| 1 | `Lane` | fixtures/reject/src/lib.rs:850:19 | -| 1 | `Lanes` | fixtures/reject/src/lib.rs:2170:10 | -| 1 | `Loaded` | fixtures/reject/src/lib.rs:1120:29 | -| 1 | `Looped` | fixtures/reject/src/lib.rs:1088:26 | -| 1 | `Mapped` | fixtures/reject/src/lib.rs:1165:39 | +| 1 | `Hits` | fixtures/reject/src/lib.rs:697:21 | +| 1 | `InField` | fixtures/reject/src/lib.rs:1295:9 | +| 1 | `InGeneric` | fixtures/reject/src/lib.rs:1299:9 | +| 1 | `InNested` | fixtures/reject/src/lib.rs:1287:9 | +| 1 | `Lane` | fixtures/reject/src/lib.rs:849:19 | +| 1 | `Lanes` | fixtures/reject/src/lib.rs:2169:10 | +| 1 | `Loaded` | fixtures/reject/src/lib.rs:1119:29 | +| 1 | `Looped` | fixtures/reject/src/lib.rs:1087:26 | +| 1 | `Mapped` | fixtures/reject/src/lib.rs:1164:39 | | 1 | `Maybe` | fixtures/reject/src/lib.rs:31:2 | -| 1 | `Onced` | fixtures/reject/src/lib.rs:1211:46 | -| 1 | `Only` | fixtures/reject/src/lib.rs:715:11 | -| 1 | `Parked` | fixtures/reject/src/lib.rs:2115:20 | -| 1 | `Parking` | fixtures/reject/src/lib.rs:2115:20 | -| 1 | `Plain` | fixtures/reject/src/lib.rs:804:10 | -| 1 | `Pushed` | fixtures/reject/src/lib.rs:1226:22 | -| 1 | `Repeated` | fixtures/reject/src/lib.rs:1199:18 | -| 1 | `Replaced` | fixtures/reject/src/lib.rs:1935:20 | -| 1 | `Rewritten` | fixtures/reject/src/lib.rs:1108:47 | -| 1 | `Shared` | fixtures/reject/src/lib.rs:1806:20 | +| 1 | `Onced` | fixtures/reject/src/lib.rs:1210:46 | +| 1 | `Only` | fixtures/reject/src/lib.rs:714:11 | +| 1 | `Parked` | fixtures/reject/src/lib.rs:2114:20 | +| 1 | `Parking` | fixtures/reject/src/lib.rs:2114:20 | +| 1 | `Plain` | fixtures/reject/src/lib.rs:803:10 | +| 1 | `Pushed` | fixtures/reject/src/lib.rs:1225:22 | +| 1 | `Repeated` | fixtures/reject/src/lib.rs:1198:18 | +| 1 | `Replaced` | fixtures/reject/src/lib.rs:1934:20 | +| 1 | `Rewritten` | fixtures/reject/src/lib.rs:1107:47 | +| 1 | `Shared` | fixtures/reject/src/lib.rs:1805:20 | | 1 | `Sink` | fixtures/reject/src/lib.rs:55:10 | -| 1 | `Slotted` | fixtures/reject/src/lib.rs:1787:21 | -| 1 | `Span2` | fixtures/reject/src/lib.rs:586:10 | -| 1 | `String` | fixtures/reject/src/lib.rs:762:4 | -| 1 | `Swapped` | fixtures/reject/src/lib.rs:1953:20 | +| 1 | `Slotted` | fixtures/reject/src/lib.rs:1786:21 | +| 1 | `Span2` | fixtures/reject/src/lib.rs:585:10 | +| 1 | `String` | fixtures/reject/src/lib.rs:761:4 | +| 1 | `Swapped` | fixtures/reject/src/lib.rs:1952:20 | | 1 | `T \| undefined` | fixtures/reject/src/lib.rs:31:2 | -| 1 | `Tail` | fixtures/reject/src/lib.rs:469:30 | -| 1 | `Taken` | fixtures/reject/src/lib.rs:1971:20 | -| 1 | `Target` | fixtures/reject/src/lib.rs:1647:10 | -| 1 | `Tens` | fixtures/reject/src/lib.rs:1250:31 | -| 1 | `Track` | fixtures/reject/src/lib.rs:830:19 | -| 1 | `Unboxed` | fixtures/reject/src/lib.rs:1744:16 | -| 1 | `Waiting` | fixtures/reject/src/lib.rs:480:2 | -| 1 | `Window` | fixtures/reject/src/lib.rs:647:2 | -| 1 | `Wrapped` | fixtures/reject/src/lib.rs:1912:21 | -| 1 | `[InArray; 2]` | fixtures/reject/src/lib.rs:1315:33 | -| 1 | `[InWritten; 1]` | fixtures/reject/src/lib.rs:1376:35 | -| 1 | `[std::cell::UnsafeCell; 2]` | fixtures/reject/src/lib.rs:2069:20 | -| 1 | `[u32; 2]` | fixtures/reject/src/lib.rs:2155:13 | -| 1 | `dyn Keyed` | fixtures/reject/src/lib.rs:510:32 | -| 1 | `poll` | fixtures/reject/src/lib.rs:480:2 | -| 1 | `rt.Poll` | fixtures/reject/src/lib.rs:480:2 | -| 1 | `std::any::Any` | fixtures/reject/src/lib.rs:516:4 | -| 1 | `std::cell::Cell` | fixtures/reject/src/lib.rs:933:22 | -| 1 | `std::cell::LazyCell` | fixtures/reject/src/lib.rs:2286:3 | -| 1 | `std::collections::BTreeMap` | fixtures/reject/src/lib.rs:933:22 | +| 1 | `Tail` | fixtures/reject/src/lib.rs:462:30 | +| 1 | `Taken` | fixtures/reject/src/lib.rs:1970:20 | +| 1 | `Target` | fixtures/reject/src/lib.rs:1646:10 | +| 1 | `Tens` | fixtures/reject/src/lib.rs:1249:31 | +| 1 | `Track` | fixtures/reject/src/lib.rs:829:19 | +| 1 | `Unboxed` | fixtures/reject/src/lib.rs:1743:16 | +| 1 | `Waiting` | fixtures/reject/src/lib.rs:473:2 | +| 1 | `Window` | fixtures/reject/src/lib.rs:646:2 | +| 1 | `Wrapped` | fixtures/reject/src/lib.rs:1911:21 | +| 1 | `[InArray; 2]` | fixtures/reject/src/lib.rs:1314:33 | +| 1 | `[InWritten; 1]` | fixtures/reject/src/lib.rs:1375:35 | +| 1 | `[std::cell::UnsafeCell; 2]` | fixtures/reject/src/lib.rs:2068:20 | +| 1 | `[u32; 2]` | fixtures/reject/src/lib.rs:2154:13 | +| 1 | `poll` | fixtures/reject/src/lib.rs:473:2 | +| 1 | `rt.Poll` | fixtures/reject/src/lib.rs:473:2 | +| 1 | `std::any::Any` | fixtures/reject/src/lib.rs:515:4 | +| 1 | `std::cell::Cell` | fixtures/reject/src/lib.rs:932:22 | +| 1 | `std::cell::LazyCell` | fixtures/reject/src/lib.rs:2285:3 | +| 1 | `std::collections::BTreeMap` | fixtures/reject/src/lib.rs:932:22 | | 1 | `std::collections::HashMap` | fixtures/reject/src/lib.rs:253:6 | -| 1 | `std::default::Default` | fixtures/reject/src/lib.rs:2097:2 | +| 1 | `std::default::Default` | fixtures/reject/src/lib.rs:2096:2 | | 1 | `std::iter::Map` | fixtures/reject/src/lib.rs:209:40 | | 1 | `std::iter::Zip` | fixtures/reject/src/lib.rs:202:8 | -| 1 | `std::iter` | fixtures/reject/src/lib.rs:1213:22 | -| 1 | `std::mem` | fixtures/reject/src/lib.rs:2254:2 | +| 1 | `std::iter` | fixtures/reject/src/lib.rs:1212:22 | +| 1 | `std::mem` | fixtures/reject/src/lib.rs:2253:2 | | 1 | `std::net::AddrParseError` | fixtures/reject/src/lib.rs:416:32 | | 1 | `std::net::Ipv4Addr` | fixtures/reject/src/lib.rs:416:32 | -| 1 | `std::num` | fixtures/reject/src/lib.rs:1255:4 | -| 1 | `std::ops::RangeFrom` | fixtures/reject/src/lib.rs:962:32 | -| 1 | `std::ops::RangeTo` | fixtures/reject/src/lib.rs:962:11 | -| 1 | `std::ptr` | fixtures/reject/src/lib.rs:1690:14 | -| 1 | `std::slice::IterMut` | fixtures/reject/src/lib.rs:744:15 | -| 1 | `std::std` | fixtures/reject/src/lib.rs:2338:13 | -| 1 | `std::sync::LazyLock` | fixtures/reject/src/lib.rs:2291:2 | -| 1 | `std::sync::Weak` | fixtures/reject/src/lib.rs:433:40 | +| 1 | `std::num` | fixtures/reject/src/lib.rs:1254:4 | +| 1 | `std::ops::RangeFrom` | fixtures/reject/src/lib.rs:961:32 | +| 1 | `std::ops::RangeTo` | fixtures/reject/src/lib.rs:961:11 | +| 1 | `std::ptr` | fixtures/reject/src/lib.rs:1689:14 | +| 1 | `std::slice::IterMut` | fixtures/reject/src/lib.rs:743:15 | +| 1 | `std::std` | fixtures/reject/src/lib.rs:2337:13 | +| 1 | `std::sync::LazyLock` | fixtures/reject/src/lib.rs:2290:2 | | 1 | `std::task::Poll` | fixtures/reject/src/lib.rs:77:34 | -| 1 | `std::thread::LocalKey` | fixtures/reject/src/lib.rs:2297:2 | +| 1 | `std::thread::LocalKey` | fixtures/reject/src/lib.rs:2296:2 | | 1 | `str` | fixtures/reject/src/lib.rs:304:4 | | 1 | `u64` | fixtures/reject/src/lib.rs:68:2 | | 1 | `value` | fixtures/reject/src/lib.rs:31:2 | @@ -274,189 +273,188 @@ 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:594:10 | +| 17 | a raw pointer to `_` in a variable assigned again while it may point there | `(u32, u32)` | fixtures/reject/src/lib.rs:593:10 | | 4 | a variant of `_`, which is not supported: either is the same JS string | `std::borrow::Cow` | fixtures/reject/src/lib.rs:309: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:886: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:1333: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:2325:11 | +| 3 | a raw pointer to `_` in `_`, which the crate may put another object in place of | `(u32, u32)`, `Gap` | fixtures/reject/src/lib.rs:885: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:1332: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:2324: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:442: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:533: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:2310: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:1688: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:900:19 | -| 2 | a raw pointer to `_` in a variable assigned again while it may point there | `[u8; 4]` | fixtures/reject/src/lib.rs:1711:26 | -| 2 | a raw pointer to `_` in a variable assigned again while it may point there | `std::cell::UnsafeCell` | fixtures/reject/src/lib.rs:674: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:1704: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:1704: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:1823: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:1711:26 | +| 2 | `_`, a trait object of the generic trait `_`, which is not supported yet | `dyn Scaled`, `Scaled` | fixtures/reject/src/lib.rs:435: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:532: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:2309: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:1687: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:899:19 | +| 2 | a raw pointer to `_` in a variable assigned again while it may point there | `[u8; 4]` | fixtures/reject/src/lib.rs:1710:26 | +| 2 | a raw pointer to `_` in a variable assigned again while it may point there | `std::cell::UnsafeCell` | fixtures/reject/src/lib.rs:673: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:1703: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:1703: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:1822: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:1710: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:1691:56 | -| 2 | comparing pointers to `_`, each a place JS makes of its own | `u32` | fixtures/reject/src/lib.rs:574: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:2324: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:1690:56 | +| 2 | an upcast from `_` to `_`, which is not supported yet | `dyn Keyed`, `dyn std::any::Any` | fixtures/reject/src/lib.rs:503:32 | +| 2 | comparing pointers to `_`, each a place JS makes of its own | `u32` | fixtures/reject/src/lib.rs:573: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:2323: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:412:17 | -| 1 | `Buf::copy_to_bytes` of `_`, a value JS copies, which is not supported | `Blank` | fixtures/reject/src/lib.rs:739:2 | +| 1 | `Buf::copy_to_bytes` of `_`, a value JS copies, which is not supported | `Blank` | fixtures/reject/src/lib.rs:738: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:372: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:367: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:352:2 | -| 1 | `Extend` of `_` by `_`, whose `_` of `_` is not supported yet | `(std::vec::Vec, Tens)`, `(u8, u8)`, `Tens`, `u8` | fixtures/reject/src/lib.rs:1250:31 | +| 1 | `Extend` of `_` by `_`, whose `_` of `_` is not supported yet | `(std::vec::Vec, Tens)`, `(u8, u8)`, `Tens`, `u8` | fixtures/reject/src/lib.rs:1249: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:480: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:473:2 | | 1 | `_` of `_` by `_`, which is not supported yet | `HashMap::contains_key`, `std::collections::HashMap`, `u8` | fixtures/reject/src/lib.rs:253:6 | -| 1 | `_` of `_`, which is not supported yet | `std::any::Any::type_id`, `dyn std::any::Any` | fixtures/reject/src/lib.rs:516: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:2249:4 | +| 1 | `_` of `_`, which is not supported yet | `std::any::Any::type_id`, `dyn std::any::Any` | fixtures/reject/src/lib.rs:515: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:2248:4 | | 1 | `_` of `_`, whose `clone_from` is its own, which is not supported yet | `slice::clone_from_slice`, `Reused` | fixtures/reject/src/lib.rs:271: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:2095: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:2097:2 | -| 1 | `_` with a mutable reference to a value JS copies, which its mapping would copy | `std::iter::once` | fixtures/reject/src/lib.rs:1213: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:1620: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:1615:13 | +| 1 | `_` with a mutable reference to a value JS copies, which its mapping would copy | `std::collections::LinkedList::retain` | fixtures/reject/src/lib.rs:2094: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:2096:2 | +| 1 | `_` with a mutable reference to a value JS copies, which its mapping would copy | `std::iter::once` | fixtures/reject/src/lib.rs:1212: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:1619: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:1614: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:361: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:2096: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:933:22 | +| 1 | `clone_from` of `_`, whose items' `clone_from` is their own, which is not supported yet | `std::collections::LinkedList` | fixtures/reject/src/lib.rs:2095: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:932: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:2143:36 | +| 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:2142: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:209: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:202:8 | | 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:2155: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:2311:16 | +| 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:2154: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:2310:16 | | 1 | a coercion to `_` | `std::sync::Arc` | fixtures/reject/src/lib.rs:276:2 | -| 1 | a coercion to `_`, which is not supported yet | `&Tail` | fixtures/reject/src/lib.rs:469:30 | -| 1 | a coercion to `_`, which is not supported yet | `std::sync::Weak` | fixtures/reject/src/lib.rs:433:40 | -| 1 | a constant of type `_` | `std::mem::ManuallyDrop` | fixtures/reject/src/lib.rs:2344:34 | -| 1 | a constant of type `_`, a pointer into memory translation can't name | `&u32` | fixtures/reject/src/lib.rs:756: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:2140:3 | -| 1 | a dangling pointer to `_`, a value of no bytes made of more than structs and tuples | `Only` | fixtures/reject/src/lib.rs:715:11 | +| 1 | a coercion to `_`, which is not supported yet | `&Tail` | fixtures/reject/src/lib.rs:462:30 | +| 1 | a constant of type `_` | `std::mem::ManuallyDrop` | fixtures/reject/src/lib.rs:2343:34 | +| 1 | a constant of type `_`, a pointer into memory translation can't name | `&u32` | fixtures/reject/src/lib.rs:755: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:2139:3 | +| 1 | a dangling pointer to `_`, a value of no bytes made of more than structs and tuples | `Only` | fixtures/reject/src/lib.rs:714: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:2130: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:2137: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:2142: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:555: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:1154: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:1226: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:850: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:804: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:586: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:830: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:647: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:665: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:2389: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:2373: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:2407: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:2438: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:1599: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:1591: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:1606: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:1575: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:1583: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:2170: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:1098: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:1482: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:1497: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:1543: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:1523: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:1510: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:1433: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:1471: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:1459: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:1532: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:1446: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:1064: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:1050: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:698: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:1280: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:1296: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:1300: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:1288: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:1292: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:1284: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:1304: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:1120: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:1088: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:1165: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:1211: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:1199: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:1108:47 | -| 1 | a raw pointer to `_` in a variable assigned again while it may point there | `Target` | fixtures/reject/src/lib.rs:1647:10 | -| 1 | a raw pointer to `_` in a variable assigned again while it may point there | `[u32; 3]` | fixtures/reject/src/lib.rs:2168: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:657: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:1315: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:1324: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:1376: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:2115: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:1990: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:2056: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:2016: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:2040: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:1935: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:1953: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:1971: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:2069: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:1342: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:1729: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:1884: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:1851: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:1765: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:1868: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:1806: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:1787: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:1744: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:1912: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:1633: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:2086:13 | +| 1 | a mapped guard of `_`, which JS can't write in place | `{closure}` | fixtures/reject/src/lib.rs:2129: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:2136: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:2141: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:554: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:1153: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:1225: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:849: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:803: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:585: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:829: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:646: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:664: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:2388: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:2372: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:2406: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:2437: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:1598: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:1590: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:1605: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:1574: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:1582: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:2169: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:1097: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:1481: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:1496: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:1542: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:1522: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:1509: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:1432: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:1470: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:1458: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:1531: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:1445: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:1063: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:1049: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:697: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:1279: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:1295: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:1299: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:1287: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:1291: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:1283: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:1303: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:1119: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:1087: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:1164: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:1210: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:1198: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:1107:47 | +| 1 | a raw pointer to `_` in a variable assigned again while it may point there | `Target` | fixtures/reject/src/lib.rs:1646:10 | +| 1 | a raw pointer to `_` in a variable assigned again while it may point there | `[u32; 3]` | fixtures/reject/src/lib.rs:2167: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:656: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:1314: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:1323: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:1375: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:2114: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:1989: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:2055: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:2015: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:2039: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:1934: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:1952: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:1970: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:2068: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:1341: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:1728: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:1883: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:1850: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:1764: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:1867: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:1805: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:1786: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:1743: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:1911: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:1632: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:2085: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:2141: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:2244: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:2286: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:2297:2 | -| 1 | a trait object of `_`, which is not supported yet | `[u8; 4]` | fixtures/reject/src/lib.rs:459:26 | -| 1 | an assignment through a reference to `_` | `std::sync::LazyLock` | fixtures/reject/src/lib.rs:2291: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:2140: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:2243: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:2285: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:2296:2 | +| 1 | a trait object of `_`, which is not supported yet | `[u8; 4]` | fixtures/reject/src/lib.rs:452:26 | +| 1 | an assignment through a reference to `_` | `std::sync::LazyLock` | fixtures/reject/src/lib.rs:2290:2 | | 1 | an assignment through a reference to `_` | `std::sync::MutexGuard` | fixtures/reject/src/lib.rs:83:2 | | 1 | an iterator of the crate implementing `_`, which is not supported yet | `DoubleEndedIterator` | fixtures/reject/src/lib.rs:145:1 | | 1 | an iterator of the crate implementing `_`, which is not supported yet | `FusedIterator` | fixtures/reject/src/lib.rs:193:1 | -| 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:2139:13 | -| 1 | an upcast from `_` to `_`, which is not supported yet | `dyn Keyed`, `dyn std::any::Any` | fixtures/reject/src/lib.rs:510:32 | +| 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:2138:13 | | 1 | arithmetic on `_` | `f16` | fixtures/reject/src/lib.rs:8:2 | -| 1 | comparing `_` | `*mut [u8; 4]` | fixtures/reject/src/lib.rs:1690:41 | +| 1 | comparing `_` | `*mut [u8; 4]` | fixtures/reject/src/lib.rs:1689:41 | | 1 | comparing `_` as a key, which is not supported yet | `std::collections::BTreeSet` | fixtures/reject/src/lib.rs:235:75 | -| 1 | comparing pointers to `_` in an atomic, which JS has no address of | `u32` | fixtures/reject/src/lib.rs:755:15 | -| 1 | comparing pointers to `_`, which has no bytes and so no address of its own | `Fused` | fixtures/reject/src/lib.rs:706:70 | -| 1 | const generic types are not supported: `_` | `Block` | fixtures/reject/src/lib.rs:2075:1 | +| 1 | comparing pointers to `_` in an atomic, which JS has no address of | `u32` | fixtures/reject/src/lib.rs:754:15 | +| 1 | comparing pointers to `_`, which has no bytes and so no address of its own | `Fused` | fixtures/reject/src/lib.rs:705:70 | +| 1 | const generic types are not supported: `_` | `Block` | fixtures/reject/src/lib.rs:2074:1 | | 1 | constructing `_` | `std::borrow::Cow` | fixtures/reject/src/lib.rs:327:53 | | 1 | hashing `_` as a key, which is not supported yet | `std::collections::BTreeSet` | fixtures/reject/src/lib.rs:235:75 | -| 1 | hashing `_` by its address, which JS has no counterpart of | `*const [u8; 4]` | fixtures/reject/src/lib.rs:1694:5 | +| 1 | hashing `_` by its address, which JS has no counterpart of | `*const [u8; 4]` | fixtures/reject/src/lib.rs:1693:5 | | 1 | hashing `_` through `_`'s own `Hash::hash_slice`, which is not supported yet | `std::vec::Vec`, `Batched` | fixtures/reject/src/lib.rs:295:16 | | 1 | overriding `_`, which std's adaptors call in place of `next` or beside it | `Iterator::fold` | fixtures/reject/src/lib.rs:125:2 | | 1 | overriding `_`, which std's adaptors call in place of `next` or beside it | `Iterator::size_hint` | fixtures/reject/src/lib.rs:173:2 | -| 1 | passing `_`, which drops, to `_`, which is not supported yet | `{closure}`, `String::retain` | fixtures/reject/src/lib.rs:762:4 | +| 1 | passing `_`, which drops, to `_`, which is not supported yet | `{closure}`, `String::retain` | fixtures/reject/src/lib.rs:761:4 | | 1 | passing `_`, which drops, to `_`, which is not supported yet | `{closure}`, `str::contains` | fixtures/reject/src/lib.rs:304: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:560:1 | -| 1 | unsupported call to `_` | `::eq` | fixtures/reject/src/lib.rs:516:2 | -| 1 | unsupported call to `_` | `::eq` | fixtures/reject/src/lib.rs:2344:25 | -| 1 | unsupported call to `_` | `::fmt` | fixtures/reject/src/lib.rs:2344:2 | -| 1 | unsupported call to `_` | `::contains` | fixtures/reject/src/lib.rs:962:32 | +| 1 | union `_`, whose fields overlap in `_` and `f64`, which JS keeps apart | `Bits`, `u32` | fixtures/reject/src/lib.rs:559:1 | +| 1 | unsupported call to `_` | `::eq` | fixtures/reject/src/lib.rs:515:2 | +| 1 | unsupported call to `_` | `::eq` | fixtures/reject/src/lib.rs:2343:25 | +| 1 | unsupported call to `_` | `::fmt` | fixtures/reject/src/lib.rs:2343:2 | +| 1 | unsupported call to `_` | `::contains` | fixtures/reject/src/lib.rs:961:32 | | 1 | unsupported call to `_` | `::eq` | fixtures/reject/src/lib.rs:347:2 | -| 1 | unsupported call to `_` | `::is_sorted` | fixtures/reject/src/lib.rs:744:15 | +| 1 | unsupported call to `_` | `::is_sorted` | fixtures/reject/src/lib.rs:743:15 | | 1 | unsupported call to `_` | `::hash` | fixtures/reject/src/lib.rs:286:10 | -| 1 | unsupported call to `_` | `std::any::TypeId::of` | fixtures/reject/src/lib.rs:516:17 | +| 1 | unsupported call to `_` | `std::any::TypeId::of` | fixtures/reject/src/lib.rs:515:17 | | 1 | unsupported call to `_` | `std::borrow::Cow::is_borrowed` | fixtures/reject/src/lib.rs:321:2 | -| 1 | unsupported call to `_` | `std::mem::size_of_val` | fixtures/reject/src/lib.rs:2254:2 | -| 1 | unsupported call to `_` | `std::num::is_ascii_octdigit` | fixtures/reject/src/lib.rs:1255:4 | +| 1 | unsupported call to `_` | `std::mem::size_of_val` | fixtures/reject/src/lib.rs:2253:2 | +| 1 | unsupported call to `_` | `std::num::is_ascii_octdigit` | fixtures/reject/src/lib.rs:1254:4 | | 1 | unsupported call to `_` | `std::ops::Range::contains` | fixtures/reject/src/lib.rs:160:8 | -| 1 | unsupported call to `_` | `std::ops::Range::is_empty` | fixtures/reject/src/lib.rs:967:9 | -| 1 | unsupported call to `_` | `std::ops::RangeTo::contains` | fixtures/reject/src/lib.rs:962:11 | -| 1 | unsupported call to `_` | `std::ptr::addr_eq` | fixtures/reject/src/lib.rs:1690:14 | -| 1 | unsupported call to `_` | `std::std::alloc_zeroed` | fixtures/reject/src/lib.rs:2338:13 | -| 1 | unsupported call to `_` | `std::str::as_bytes_mut` | fixtures/reject/src/lib.rs:1614:13 | +| 1 | unsupported call to `_` | `std::ops::Range::is_empty` | fixtures/reject/src/lib.rs:966:9 | +| 1 | unsupported call to `_` | `std::ops::RangeTo::contains` | fixtures/reject/src/lib.rs:961:11 | +| 1 | unsupported call to `_` | `std::ptr::addr_eq` | fixtures/reject/src/lib.rs:1689:14 | +| 1 | unsupported call to `_` | `std::std::alloc_zeroed` | fixtures/reject/src/lib.rs:2337:13 | +| 1 | unsupported call to `_` | `std::str::as_bytes_mut` | fixtures/reject/src/lib.rs:1613:13 | | 1 | unsupported call to `_` | `std::str::parse` | fixtures/reject/src/lib.rs:417:4 | | 1 | unsupported type `_` from another crate | `std::net::AddrParseError` | fixtures/reject/src/lib.rs:416:32 | | 1 | unsupported type `_` from another crate | `std::net::Ipv4Addr` | fixtures/reject/src/lib.rs:416:32 | @@ -465,84 +463,84 @@ The type or module each refused type or path belongs to.

a raw pointer to `_` in `_`, which the crate may put another object in place of (50) -- fixtures/reject/src/lib.rs:586:10: a raw pointer to `(u32, u32)` in `Span2`, which the crate may put another object in place of -- fixtures/reject/src/lib.rs:647:2: a raw pointer to `(u32, u32)` in `Window`, which the crate may put another object in place of -- fixtures/reject/src/lib.rs:665: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:698: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:804:10: a raw pointer to `(u32, u32)` in `Plain`, which the crate may put another object in place of -- fixtures/reject/src/lib.rs:830:19: a raw pointer to `(u32, u32)` in `Track`, which the crate may put another object in place of -- fixtures/reject/src/lib.rs:850:19: a raw pointer to `(u32, u32)` in `Lane`, which the crate may put another object in place of +- fixtures/reject/src/lib.rs:585:10: a raw pointer to `(u32, u32)` in `Span2`, which the crate may put another object in place of +- fixtures/reject/src/lib.rs:646:2: a raw pointer to `(u32, u32)` in `Window`, which the crate may put another object in place of +- fixtures/reject/src/lib.rs:664: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:697: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:803:10: a raw pointer to `(u32, u32)` in `Plain`, which the crate may put another object in place of +- fixtures/reject/src/lib.rs:829:19: a raw pointer to `(u32, u32)` in `Track`, which the crate may put another object in place of +- fixtures/reject/src/lib.rs:849:19: a raw pointer to `(u32, u32)` in `Lane`, which the crate may put another object in place of +- fixtures/reject/src/lib.rs:885:10: a raw pointer to `(u32, u32)` in `Gap`, which the crate may put another object in place of - fixtures/reject/src/lib.rs:886:10: a raw pointer to `(u32, u32)` in `Gap`, which the crate may put another object in place of -- fixtures/reject/src/lib.rs:887:10: a raw pointer to `(u32, u32)` in `Gap`, which the crate may put another object in place of -- fixtures/reject/src/lib.rs:888:58: a raw pointer to `(u32, u32)` in `Gap`, which the crate may put another object in place of +- fixtures/reject/src/lib.rs:887:58: a raw pointer to `(u32, u32)` in `Gap`, which the crate may put another object in place of +- fixtures/reject/src/lib.rs:899: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:900: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:901: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:1050: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:1064: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:1088: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:1098: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:1108: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:1120: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:1154:31: a raw pointer to `(u16, u16)` in `Copied`, which the crate may put another object in place of -- fixtures/reject/src/lib.rs:1165: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:1199: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:1211: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:1226:22: a raw pointer to `(u16, u16)` in `Pushed`, which the crate may put another object in place of -- fixtures/reject/src/lib.rs:1280: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:1284: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:1288: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:1292: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:1296: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:1300: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:1304: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:1433: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:1446: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:1459: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:1471: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:1482: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:1497: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:1510: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:1523: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:1532: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:1543: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:1575:32: a raw pointer to `ByRefReplace` in `(u16, ByRefReplace)`, which the crate may put another object in place of -- fixtures/reject/src/lib.rs:1583:32: a raw pointer to `ByRefTake` in `(u16, ByRefTake)`, which the crate may put another object in place of -- fixtures/reject/src/lib.rs:1591:51: a raw pointer to `ByKeySet` in `(u16, ByKeySet)`, which the crate may put another object in place of -- fixtures/reject/src/lib.rs:1599:55: a raw pointer to `ByKeyReplace` in `(u16, ByKeyReplace)`, which the crate may put another object in place of -- fixtures/reject/src/lib.rs:1606:52: a raw pointer to `ByKeyTake` in `(u16, ByKeyTake)`, which the crate may put another object in place of -- fixtures/reject/src/lib.rs:2170:10: a raw pointer to `[u32; 3]` in `Lanes`, which the crate may put another object in place of -- fixtures/reject/src/lib.rs:2373: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:2389: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:2407: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:2438: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:1049: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:1063: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:1087: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:1097: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:1107: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:1119: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:1153:31: a raw pointer to `(u16, u16)` in `Copied`, which the crate may put another object in place of +- fixtures/reject/src/lib.rs:1164: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:1198: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:1210: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:1225:22: a raw pointer to `(u16, u16)` in `Pushed`, which the crate may put another object in place of +- fixtures/reject/src/lib.rs:1279: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:1283: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:1287: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:1291: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:1295: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:1299: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:1303: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:1432: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:1445: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:1458: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:1470: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:1481: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:1496: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:1509: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:1522: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:1531: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:1542: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:1574:32: a raw pointer to `ByRefReplace` in `(u16, ByRefReplace)`, which the crate may put another object in place of +- fixtures/reject/src/lib.rs:1582:32: a raw pointer to `ByRefTake` in `(u16, ByRefTake)`, which the crate may put another object in place of +- fixtures/reject/src/lib.rs:1590:51: a raw pointer to `ByKeySet` in `(u16, ByKeySet)`, which the crate may put another object in place of +- fixtures/reject/src/lib.rs:1598:55: a raw pointer to `ByKeyReplace` in `(u16, ByKeyReplace)`, which the crate may put another object in place of +- fixtures/reject/src/lib.rs:1605:52: a raw pointer to `ByKeyTake` in `(u16, ByKeyTake)`, which the crate may put another object in place of +- fixtures/reject/src/lib.rs:2169:10: a raw pointer to `[u32; 3]` in `Lanes`, which the crate may put another object in place of +- fixtures/reject/src/lib.rs:2372: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:2388: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:2406: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:2437: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:594:10: a raw pointer to `(u32, u32)` in a variable assigned again while it may point there -- fixtures/reject/src/lib.rs:602:10: a raw pointer to `(u32, u32)` in a variable assigned again while it may point there -- fixtures/reject/src/lib.rs:611:10: a raw pointer to `(u32, u32)` in a variable assigned again while it may point there -- fixtures/reject/src/lib.rs:619:10: a raw pointer to `(u32, u32)` in a variable assigned again while it may point there -- fixtures/reject/src/lib.rs:628:10: a raw pointer to `(u32, u32)` in a variable assigned again while it may point there -- fixtures/reject/src/lib.rs:636:10: a raw pointer to `(u32, u32)` in a variable assigned again while it may point there -- fixtures/reject/src/lib.rs:674:15: a raw pointer to `std::cell::UnsafeCell` in a variable assigned again while it may point there -- fixtures/reject/src/lib.rs:687:15: a raw pointer to `std::cell::UnsafeCell` in a variable assigned again while it may point there -- fixtures/reject/src/lib.rs:979:26: a raw pointer to `(u32, u32)` in a variable assigned again while it may point there -- fixtures/reject/src/lib.rs:992:22: a raw pointer to `(u32, u32)` in a variable assigned again while it may point there -- fixtures/reject/src/lib.rs:1002:12: a raw pointer to `(u32, u32)` in a variable assigned again while it may point there -- fixtures/reject/src/lib.rs:1011:10: a raw pointer to `(u32, u32)` in a variable assigned again while it may point there -- fixtures/reject/src/lib.rs:1021:17: a raw pointer to `(u32, u32)` in a variable assigned again while it may point there -- fixtures/reject/src/lib.rs:1026:10: a raw pointer to `(u32, u32)` in a variable assigned again while it may point there -- fixtures/reject/src/lib.rs:1647:10: a raw pointer to `Target` in a variable assigned again while it may point there -- fixtures/reject/src/lib.rs:1660:10: a raw pointer to `(u32, u32)` in a variable assigned again while it may point there -- fixtures/reject/src/lib.rs:1675:10: a raw pointer to `(u32, u32)` in a variable assigned again while it may point there -- fixtures/reject/src/lib.rs:1711:26: a raw pointer to `[u8; 4]` in a variable assigned again while it may point there -- fixtures/reject/src/lib.rs:1712:10: a raw pointer to `[u8; 4]` in a variable assigned again while it may point there -- fixtures/reject/src/lib.rs:2168:10: a raw pointer to `[u32; 3]` in a variable assigned again while it may point there -- fixtures/reject/src/lib.rs:2260:10: a raw pointer to `(u32, u32)` in a variable assigned again while it may point there -- fixtures/reject/src/lib.rs:2268:10: a raw pointer to `(u32, u32)` in a variable assigned again while it may point there -- fixtures/reject/src/lib.rs:2276: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:601:10: a raw pointer to `(u32, u32)` in a variable assigned again while it may point there +- fixtures/reject/src/lib.rs:610:10: a raw pointer to `(u32, u32)` in a variable assigned again while it may point there +- fixtures/reject/src/lib.rs:618:10: a raw pointer to `(u32, u32)` in a variable assigned again while it may point there +- fixtures/reject/src/lib.rs:627:10: a raw pointer to `(u32, u32)` in a variable assigned again while it may point there +- fixtures/reject/src/lib.rs:635:10: a raw pointer to `(u32, u32)` in a variable assigned again while it may point there +- fixtures/reject/src/lib.rs:673:15: a raw pointer to `std::cell::UnsafeCell` in a variable assigned again while it may point there +- fixtures/reject/src/lib.rs:686:15: a raw pointer to `std::cell::UnsafeCell` in a variable assigned again while it may point there +- fixtures/reject/src/lib.rs:978:26: a raw pointer to `(u32, u32)` in a variable assigned again while it may point there +- fixtures/reject/src/lib.rs:991:22: a raw pointer to `(u32, u32)` in a variable assigned again while it may point there +- fixtures/reject/src/lib.rs:1001:12: a raw pointer to `(u32, u32)` in a variable assigned again while it may point there +- fixtures/reject/src/lib.rs:1010:10: a raw pointer to `(u32, u32)` in a variable assigned again while it may point there +- fixtures/reject/src/lib.rs:1020:17: a raw pointer to `(u32, u32)` in a variable assigned again while it may point there +- fixtures/reject/src/lib.rs:1025:10: a raw pointer to `(u32, u32)` in a variable assigned again while it may point there +- fixtures/reject/src/lib.rs:1646:10: a raw pointer to `Target` in a variable assigned again while it may point there +- fixtures/reject/src/lib.rs:1659:10: a raw pointer to `(u32, u32)` in a variable assigned again while it may point there +- fixtures/reject/src/lib.rs:1674:10: a raw pointer to `(u32, u32)` in a variable assigned again while it may point there +- fixtures/reject/src/lib.rs:1710:26: a raw pointer to `[u8; 4]` in a variable assigned again while it may point there +- fixtures/reject/src/lib.rs:1711:10: a raw pointer to `[u8; 4]` in a variable assigned again while it may point there +- fixtures/reject/src/lib.rs:2167:10: a raw pointer to `[u32; 3]` in a variable assigned again while it may point there +- fixtures/reject/src/lib.rs:2259:10: a raw pointer to `(u32, u32)` in a variable assigned again while it may point there +- fixtures/reject/src/lib.rs:2267:10: a raw pointer to `(u32, u32)` in a variable assigned again while it may point there +- fixtures/reject/src/lib.rs:2275:10: a raw pointer to `(u32, u32)` in a variable assigned again while it may point there
@@ -555,100 +553,100 @@ The type or module each refused type or path belongs to. - fixtures/reject/src/lib.rs:412:17: unsupported call to ` as std::iter::Iterator>::sum::` - fixtures/reject/src/lib.rs:412:38: unsupported call to ` as std::iter::Iterator>::sum::` - fixtures/reject/src/lib.rs:417:4: unsupported call to `core::str::::parse::` -- fixtures/reject/src/lib.rs:516:2: unsupported call to `::eq` -- fixtures/reject/src/lib.rs:516:17: unsupported call to `std::any::TypeId::of::` -- fixtures/reject/src/lib.rs:744:15: unsupported call to ` as std::iter::Iterator>::is_sorted` -- fixtures/reject/src/lib.rs:962:11: unsupported call to `std::ops::RangeTo::::contains::` -- fixtures/reject/src/lib.rs:962:32: unsupported call to ` as std::ops::RangeBounds>::contains::` -- fixtures/reject/src/lib.rs:967:9: unsupported call to `std::ops::Range::<&mut u8>::is_empty` -- fixtures/reject/src/lib.rs:1255:4: unsupported call to `core::num::::is_ascii_octdigit` -- fixtures/reject/src/lib.rs:1614:13: unsupported call to `core::str::::as_bytes_mut` -- fixtures/reject/src/lib.rs:1690:14: unsupported call to `std::ptr::addr_eq::<[u8; 4], [u8; 4]>` -- fixtures/reject/src/lib.rs:2254:2: unsupported call to `std::mem::size_of_val::` -- fixtures/reject/src/lib.rs:2338:13: unsupported call to `std::alloc::alloc_zeroed` -- fixtures/reject/src/lib.rs:2344:2: unsupported call to ` as std::fmt::Debug>::fmt` -- fixtures/reject/src/lib.rs:2344:25: unsupported call to ` as std::cmp::PartialEq>::eq` +- fixtures/reject/src/lib.rs:515:2: unsupported call to `::eq` +- fixtures/reject/src/lib.rs:515:17: unsupported call to `std::any::TypeId::of::` +- fixtures/reject/src/lib.rs:743:15: unsupported call to ` as std::iter::Iterator>::is_sorted` +- fixtures/reject/src/lib.rs:961:11: unsupported call to `std::ops::RangeTo::::contains::` +- fixtures/reject/src/lib.rs:961:32: unsupported call to ` as std::ops::RangeBounds>::contains::` +- fixtures/reject/src/lib.rs:966:9: unsupported call to `std::ops::Range::<&mut u8>::is_empty` +- fixtures/reject/src/lib.rs:1254:4: unsupported call to `core::num::::is_ascii_octdigit` +- fixtures/reject/src/lib.rs:1613:13: unsupported call to `core::str::::as_bytes_mut` +- fixtures/reject/src/lib.rs:1689:14: unsupported call to `std::ptr::addr_eq::<[u8; 4], [u8; 4]>` +- fixtures/reject/src/lib.rs:2253:2: unsupported call to `std::mem::size_of_val::` +- fixtures/reject/src/lib.rs:2337:13: unsupported call to `std::alloc::alloc_zeroed` +- fixtures/reject/src/lib.rs:2343:2: unsupported call to ` as std::fmt::Debug>::fmt` +- fixtures/reject/src/lib.rs:2343: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:1315: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:1324: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:1333: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:1354: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:1367: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:1376: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:1935: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:1953: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:1971: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:1990: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:2016: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:2040: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:2056: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:2069: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:2115: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:1314: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:1323: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:1332: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:1353: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:1366: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:1375: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:1934: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:1952: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:1970: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:1989: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:2015: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:2039: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:2055: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:2068: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:2114: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:1633: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:1711: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:1729: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:1744: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:1765: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:1787: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:1806: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:1823: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:1836: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:1851: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:1868: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:1884: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:1897: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:1912: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:2086: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:1632: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:1710: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:1728: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:1743: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:1764: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:1786: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:1805: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:1822: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:1835: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:1850: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:1867: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:1883: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:1896: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:1911: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:2085: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:533: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:2155: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:2310: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:2311: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:2313: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:2338: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:532: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:2154: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:2309: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:2310: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:2312: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:2337: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:1213:22: `std::iter::once` with a mutable reference to a value JS copies, which its mapping would copy -- fixtures/reject/src/lib.rs:1615: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:1620: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:2095:4: `std::collections::LinkedList::::retain` with a mutable reference to a value JS copies, which its mapping would copy -- fixtures/reject/src/lib.rs:2097:2: `std::default::Default::default` with a mutable reference to a value JS copies, which its mapping would copy +- fixtures/reject/src/lib.rs:1212:22: `std::iter::once` with a mutable reference to a value JS copies, which its mapping would copy +- fixtures/reject/src/lib.rs:1614: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:1619: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:2094:4: `std::collections::LinkedList::::retain` with a mutable reference to a value JS copies, which its mapping would copy +- fixtures/reject/src/lib.rs:2096: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:657: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:1704: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:1704: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:1704: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:1704: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:656: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:1703: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:1703: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:1703: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:1703: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:2324: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:2325: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:2327: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:2328: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:2330: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:2323: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:2324: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:2326: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:2327: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:2329:17: memory from `alloc` cast to pointers to `i32` and to `u32`, which reads the bytes of one type as another
@@ -666,7 +664,7 @@ 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:214:2: an assignment through a reference to `std::pin::Pin<&mut Noisy>` -- fixtures/reject/src/lib.rs:2291:2: an assignment through a reference to `std::sync::LazyLock` +- fixtures/reject/src/lib.rs:2290:2: an assignment through a reference to `std::sync::LazyLock` @@ -674,47 +672,47 @@ The type or module each refused type or path belongs to. - 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:271:4: `slice::clone_from_slice` of `Reused`, whose `clone_from` is its own, which is not supported yet -- fixtures/reject/src/lib.rs:2249:4: `Clone::clone_from` of `std::vec::Vec`, whose `clone_from` is its own, which is not supported yet +- fixtures/reject/src/lib.rs:2248: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:546: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:547: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:2309: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:545: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:546: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:2308: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:1687: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:1688: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:1689: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:2140: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:2139: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:224:14: a copy of a closure that changes what it captured -- fixtures/reject/src/lib.rs:492:14: a copy of a closure that changes what it captured -- fixtures/reject/src/lib.rs:493:14: a copy of a closure that changes what it captured +- fixtures/reject/src/lib.rs:485:14: a copy of a closure that changes what it captured +- fixtures/reject/src/lib.rs:486: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:2244: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:2286: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:2297: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:2243: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:2285: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:2296: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:1691: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:1691: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:2139: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:1690: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:1690: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:2138:13: an offset of a pointer to `(u8, u8)`, which JS keeps as an object that knows no array it is in
@@ -757,50 +755,43 @@ 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:442:23: `dyn Scaled`, a trait object of the generic trait `Scaled`, which is not supported yet -- fixtures/reject/src/lib.rs:443:4: `dyn Scaled`, a trait object of the generic trait `Scaled`, which is not supported yet +- fixtures/reject/src/lib.rs:435:23: `dyn Scaled`, a trait object of the generic trait `Scaled`, which is not supported yet +- fixtures/reject/src/lib.rs:436: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:2203: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:2204: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:2202: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:2203: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:2205: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:2206: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 coercion to `_`, which is not supported yet (2) - -- fixtures/reject/src/lib.rs:433:40: a coercion to `std::sync::Weak`, which is not supported yet -- fixtures/reject/src/lib.rs:469:30: a coercion to `&Tail`, which is not supported yet +- fixtures/reject/src/lib.rs:2204: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:2205: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:2228: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:2231: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:2227: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:2230: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:2214:12: a raw or mutable slice of a byte in no array of bytes -- fixtures/reject/src/lib.rs:2215:19: a raw or mutable slice of a byte in no array of bytes +- fixtures/reject/src/lib.rs:2213:12: a raw or mutable slice of a byte in no array of bytes +- fixtures/reject/src/lib.rs:2214: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:706:15: a raw pointer to a place of `()`, which has no address of its own -- fixtures/reject/src/lib.rs:706:29: a raw pointer to a place of `()`, which has no address of its own +- fixtures/reject/src/lib.rs:705:15: a raw pointer to a place of `()`, which has no address of its own +- fixtures/reject/src/lib.rs:705:29: a raw pointer to a place of `()`, which has no address of its own
@@ -811,10 +802,17 @@ The type or module each refused type or path belongs to. +
an upcast from `_` to `_`, which is not supported yet (2) + +- fixtures/reject/src/lib.rs:503:32: an upcast from `dyn Keyed` to `dyn std::any::Any`, which is not supported yet +- fixtures/reject/src/lib.rs:509: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:574:2: comparing pointers to `u32`, each a place JS makes of its own -- fixtures/reject/src/lib.rs:2123:2: comparing pointers to `u32`, each a place JS makes of its own +- fixtures/reject/src/lib.rs:573:2: comparing pointers to `u32`, each a place JS makes of its own +- fixtures/reject/src/lib.rs:2122:2: comparing pointers to `u32`, each a place JS makes of its own
@@ -828,7 +826,7 @@ 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:304:4: passing `{closure@fixtures/reject/src/lib.rs:304:13: 304:27}`, which drops, to `str::contains`, which is not supported yet -- fixtures/reject/src/lib.rs:762:4: passing `{closure@fixtures/reject/src/lib.rs:762:11: 762:19}`, which drops, to `String::retain`, which is not supported yet +- fixtures/reject/src/lib.rs:761:4: passing `{closure@fixtures/reject/src/lib.rs:761:11: 761:19}`, which drops, to `String::retain`, which is not supported yet
@@ -841,7 +839,7 @@ The type or module each refused type or path belongs to.
`Buf::copy_to_bytes` of `_`, a value JS copies, which is not supported (1) -- fixtures/reject/src/lib.rs:739:2: `Buf::copy_to_bytes` of `Blank`, a value JS copies, which is not supported +- fixtures/reject/src/lib.rs:738:2: `Buf::copy_to_bytes` of `Blank`, a value JS copies, which is not supported
@@ -865,7 +863,7 @@ The type or module each refused type or path belongs to.
`Extend` of `_` by `_`, whose `_` of `_` is not supported yet (1) -- fixtures/reject/src/lib.rs:1250:31: `Extend` of `(std::vec::Vec, Tens)` by `(u8, u8)`, whose `Tens` of `u8` is not supported yet +- fixtures/reject/src/lib.rs:1249:31: `Extend` of `(std::vec::Vec, Tens)` by `(u8, u8)`, whose `Tens` of `u8` is not supported yet
@@ -889,7 +887,7 @@ 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:480: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:473:2: `Waiting>` is not supported: its field `poll` is `Poll`, typed `rt.Poll`, whose `Pending` would be `rt.OuterPending` as `Poll>`
@@ -901,7 +899,7 @@ The type or module each refused type or path belongs to.
`_` of `_`, which is not supported yet (1) -- fixtures/reject/src/lib.rs:516:4: `std::any::Any::type_id` of `dyn std::any::Any`, which is not supported yet +- fixtures/reject/src/lib.rs:515:4: `std::any::Any::type_id` of `dyn std::any::Any`, which is not supported yet
@@ -913,13 +911,13 @@ The type or module each refused type or path belongs to.
`clone_from` of `_`, whose items' `clone_from` is their own, which is not supported yet (1) -- fixtures/reject/src/lib.rs:2096:4: `clone_from` of `std::collections::LinkedList`, whose items' `clone_from` is their own, which is not supported yet +- fixtures/reject/src/lib.rs:2095: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:933: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:932: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
@@ -931,25 +929,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:2208: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:2207: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:2207: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:2206: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:2150:13: `offset_from` of pointers to `()`, which has no bytes +- fixtures/reject/src/lib.rs:2149: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:2143:36: `offset_from` of pointers to `(u8, u8)`, which JS keeps as an object that knows no array it is in +- fixtures/reject/src/lib.rs:2142:36: `offset_from` of pointers to `(u8, u8)`, which JS keeps as an object that knows no array it is in
@@ -977,27 +975,33 @@ The type or module each refused type or path belongs to. +
a coercion to `_`, which is not supported yet (1) + +- fixtures/reject/src/lib.rs:462:30: a coercion to `&Tail`, which is not supported yet + +
+
a constant of type `_` (1) -- fixtures/reject/src/lib.rs:2344:34: a constant of type `std::mem::ManuallyDrop` +- fixtures/reject/src/lib.rs:2343: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:756:3: a constant of type `&u32`, a pointer into memory translation can't name +- fixtures/reject/src/lib.rs:755: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:2226: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:2225: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:715:11: a dangling pointer to `Only`, a value of no bytes made of more than structs and tuples +- fixtures/reject/src/lib.rs:714:11: a dangling pointer to `Only`, a value of no bytes made of more than structs and tuples
@@ -1009,7 +1013,7 @@ 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:2130:10: a mapped guard of `{closure@fixtures/reject/src/lib.rs:2129:38: 2129:50}`, which JS can't write in place +- fixtures/reject/src/lib.rs:2129:10: a mapped guard of `{closure@fixtures/reject/src/lib.rs:2128:38: 2128:50}`, which JS can't write in place
@@ -1027,25 +1031,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:2137:12: a pointer into `(u8, u8)`, which JS keeps as an object that knows no array it is in +- fixtures/reject/src/lib.rs:2136: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:2142: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:2141: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:2230: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:2229: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:538:17: a pointer's address, which JS has no counterpart of +- fixtures/reject/src/lib.rs:537:17: a pointer's address, which JS has no counterpart of
@@ -1057,13 +1061,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:555: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:554: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:1342: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:1341: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
@@ -1075,37 +1079,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:2141: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:2140: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:2150:39: a slice of `()`, which has no bytes, from a pointer +- fixtures/reject/src/lib.rs:2149: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:2238: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:2237: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:2229: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:2228: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:459:26: a trait object of `[u8; 4]`, which is not supported yet - -
- -
an upcast from `_` to `_`, which is not supported yet (1) - -- fixtures/reject/src/lib.rs:510:32: an upcast from `dyn Keyed` to `dyn std::any::Any`, which is not supported yet +- fixtures/reject/src/lib.rs:452:26: a trait object of `[u8; 4]`, which is not supported yet
@@ -1117,7 +1115,7 @@ The type or module each refused type or path belongs to.
comparing `_` (1) -- fixtures/reject/src/lib.rs:1690:41: comparing `*mut [u8; 4]` +- fixtures/reject/src/lib.rs:1689:41: comparing `*mut [u8; 4]`
@@ -1129,19 +1127,19 @@ The type or module each refused type or path belongs to.
comparing pointers to `_` in an atomic, which JS has no address of (1) -- fixtures/reject/src/lib.rs:755:15: comparing pointers to `u32` in an atomic, which JS has no address of +- fixtures/reject/src/lib.rs:754: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:706:70: comparing pointers to `Fused`, which has no bytes and so no address of its own +- fixtures/reject/src/lib.rs:705:70: comparing pointers to `Fused`, which has no bytes and so no address of its own
const generic types are not supported: `_` (1) -- fixtures/reject/src/lib.rs:2075:1: const generic types are not supported: `Block` +- fixtures/reject/src/lib.rs:2074:1: const generic types are not supported: `Block`
@@ -1159,7 +1157,7 @@ The type or module each refused type or path belongs to.
hashing `_` by its address, which JS has no counterpart of (1) -- fixtures/reject/src/lib.rs:1694:5: hashing `*const [u8; 4]` by its address, which JS has no counterpart of +- fixtures/reject/src/lib.rs:1693:5: hashing `*const [u8; 4]` by its address, which JS has no counterpart of
@@ -1171,6 +1169,6 @@ The type or module each refused type or path belongs to.
union `_`, whose fields overlap in `_` and `f64`, which JS keeps apart (1) -- fixtures/reject/src/lib.rs:560:1: union `Bits`, whose fields overlap in `u32` and `f64`, which JS keeps apart +- fixtures/reject/src/lib.rs:559: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 45463891d..6b9e83384 100644 --- a/ts/fixtures/reject/expected.txt +++ b/ts/fixtures/reject/expected.txt @@ -25,9 +25,9 @@ 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:160:8 -unsupported call to `std::ops::RangeTo::::contains::` at fixtures/reject/src/lib.rs:962:11 -unsupported call to ` as std::ops::RangeBounds>::contains::` at fixtures/reject/src/lib.rs:962:32 -unsupported call to `std::ops::Range::<&mut u8>::is_empty` at fixtures/reject/src/lib.rs:967:9 +unsupported call to `std::ops::RangeTo::::contains::` at fixtures/reject/src/lib.rs:961:11 +unsupported call to ` as std::ops::RangeBounds>::contains::` at fixtures/reject/src/lib.rs:961:32 +unsupported call to `std::ops::Range::<&mut u8>::is_empty` at fixtures/reject/src/lib.rs:966:9 a `skip` of `std::iter::Zip, {closure@fixtures/reject/src/lib.rs:201:27: 201:31}>, std::iter::Map, {closure@fixtures/reject/src/lib.rs:201:59: 201:63}>>`, a zip std reads by index, of items that drop, which is not supported yet at fixtures/reject/src/lib.rs:202:8 a `collect` in place of `std::iter::Map, {closure@fixtures/reject/src/lib.rs:208:32: 208:40}>, std::ops::Range>, {closure@fixtures/reject/src/lib.rs:209:24: 209:32}>`, a zip std reads by index, holding values that drop, which is not supported yet at fixtures/reject/src/lib.rs:209:40 an assignment through a reference to `std::pin::Pin<&mut Noisy>` at fixtures/reject/src/lib.rs:214:2 @@ -57,206 +57,206 @@ unsupported call to ` as std::cmp::PartialEq>::eq` unsupported call to `core::str::::parse::` at fixtures/reject/src/lib.rs:417:4 unsupported type `std::net::Ipv4Addr` from another crate at fixtures/reject/src/lib.rs:416:32 unsupported type `std::net::AddrParseError` from another crate at fixtures/reject/src/lib.rs:416:32 -a coercion to `std::sync::Weak`, which is not supported yet at fixtures/reject/src/lib.rs:433:40 -`dyn Scaled`, a trait object of the generic trait `Scaled`, which is not supported yet at fixtures/reject/src/lib.rs:442:23 -`dyn Scaled`, a trait object of the generic trait `Scaled`, which is not supported yet at fixtures/reject/src/lib.rs:443:4 -a trait object of `[u8; 4]`, which is not supported yet at fixtures/reject/src/lib.rs:459:26 -a coercion to `&Tail`, which is not supported yet at fixtures/reject/src/lib.rs:469: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:480:2 -a copy of a closure that changes what it captured at fixtures/reject/src/lib.rs:492:14 -a copy of a closure that changes what it captured at fixtures/reject/src/lib.rs:493:14 -an upcast from `dyn Keyed` to `dyn std::any::Any`, which is not supported yet at fixtures/reject/src/lib.rs:510:32 -`std::any::Any::type_id` of `dyn std::any::Any`, which is not supported yet at fixtures/reject/src/lib.rs:516:4 -unsupported call to `std::any::TypeId::of::` at fixtures/reject/src/lib.rs:516:17 -unsupported call to `::eq` at fixtures/reject/src/lib.rs:516: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:533:27 -a pointer's address, which JS has no counterpart of at fixtures/reject/src/lib.rs:538: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:546: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:547: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:555:10 -union `Bits`, whose fields overlap in `u32` and `f64`, which JS keeps apart at fixtures/reject/src/lib.rs:566:10 -comparing pointers to `u32`, each a place JS makes of its own at fixtures/reject/src/lib.rs:574:2 -comparing pointers to `u32`, each a place JS makes of its own at fixtures/reject/src/lib.rs:2123: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:586:10 -a raw pointer to `(u32, u32)` in a variable assigned again while it may point there at fixtures/reject/src/lib.rs:594:10 -a raw pointer to `(u32, u32)` in a variable assigned again while it may point there at fixtures/reject/src/lib.rs:602:10 -a raw pointer to `(u32, u32)` in a variable assigned again while it may point there at fixtures/reject/src/lib.rs:611:10 -a raw pointer to `(u32, u32)` in a variable assigned again while it may point there at fixtures/reject/src/lib.rs:619:10 -a raw pointer to `(u32, u32)` in a variable assigned again while it may point there at fixtures/reject/src/lib.rs:628:10 -a raw pointer to `(u32, u32)` in a variable assigned again while it may point there at fixtures/reject/src/lib.rs:636: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:1633:18 -a raw pointer to `Target` in a variable assigned again while it may point there at fixtures/reject/src/lib.rs:1647:10 -a raw pointer to `(u32, u32)` in a variable assigned again while it may point there at fixtures/reject/src/lib.rs:1660:10 -a raw pointer to `(u32, u32)` in a variable assigned again while it may point there at fixtures/reject/src/lib.rs:1675: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:1729: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:1744: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:1765: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:1787: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:1806: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:1823: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:1836: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:1912: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:1935: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:1953: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:1971: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:1990: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:2016: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:2040: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:2056: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:2069: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:1851: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:1868: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:1884: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:1897:19 -a raw pointer to `(u32, u32)` in a variable assigned again while it may point there at fixtures/reject/src/lib.rs:979:26 -a raw pointer to `(u32, u32)` in a variable assigned again while it may point there at fixtures/reject/src/lib.rs:992:22 -a raw pointer to `(u32, u32)` in a variable assigned again while it may point there at fixtures/reject/src/lib.rs:1002:12 -a raw pointer to `(u32, u32)` in a variable assigned again while it may point there at fixtures/reject/src/lib.rs:1011:10 -a raw pointer to `(u32, u32)` in a variable assigned again while it may point there at fixtures/reject/src/lib.rs:1021:17 -a raw pointer to `(u32, u32)` in a variable assigned again while it may point there at fixtures/reject/src/lib.rs:1026: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:647: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:657: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:665:15 -a raw pointer to `std::cell::UnsafeCell` in a variable assigned again while it may point there at fixtures/reject/src/lib.rs:674:15 -a raw pointer to `std::cell::UnsafeCell` in a variable assigned again while it may point there at fixtures/reject/src/lib.rs:687: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:698:21 -a raw pointer to a place of `()`, which has no address of its own at fixtures/reject/src/lib.rs:706:15 -a raw pointer to a place of `()`, which has no address of its own at fixtures/reject/src/lib.rs:706:29 -comparing pointers to `Fused`, which has no bytes and so no address of its own at fixtures/reject/src/lib.rs:706:70 -a dangling pointer to `Only`, a value of no bytes made of more than structs and tuples at fixtures/reject/src/lib.rs:715:11 -`Buf::copy_to_bytes` of `Blank`, a value JS copies, which is not supported at fixtures/reject/src/lib.rs:739:2 -unsupported call to ` as std::iter::Iterator>::is_sorted` at fixtures/reject/src/lib.rs:744:15 -comparing pointers to `u32` in an atomic, which JS has no address of at fixtures/reject/src/lib.rs:755:15 -a constant of type `&u32`, a pointer into memory translation can't name at fixtures/reject/src/lib.rs:756:3 -passing `{closure@fixtures/reject/src/lib.rs:762:11: 762:19}`, which drops, to `String::retain`, which is not supported yet at fixtures/reject/src/lib.rs:762: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:804: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:830: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:850:19 +`dyn Scaled`, a trait object of the generic trait `Scaled`, which is not supported yet at fixtures/reject/src/lib.rs:435:23 +`dyn Scaled`, a trait object of the generic trait `Scaled`, which is not supported yet at fixtures/reject/src/lib.rs:436:4 +a trait object of `[u8; 4]`, which is not supported yet at fixtures/reject/src/lib.rs:452:26 +a coercion to `&Tail`, which is not supported yet at fixtures/reject/src/lib.rs:462: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:473:2 +a copy of a closure that changes what it captured at fixtures/reject/src/lib.rs:485:14 +a copy of a closure that changes what it captured at fixtures/reject/src/lib.rs:486:14 +an upcast from `dyn Keyed` to `dyn std::any::Any`, which is not supported yet at fixtures/reject/src/lib.rs:503:32 +an upcast from `dyn Keyed` to `dyn std::any::Any`, which is not supported yet at fixtures/reject/src/lib.rs:509:46 +`std::any::Any::type_id` of `dyn std::any::Any`, which is not supported yet at fixtures/reject/src/lib.rs:515:4 +unsupported call to `std::any::TypeId::of::` at fixtures/reject/src/lib.rs:515:17 +unsupported call to `::eq` at fixtures/reject/src/lib.rs:515: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:532:27 +a pointer's address, which JS has no counterpart of at fixtures/reject/src/lib.rs:537: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:545: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:546: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:554:10 +union `Bits`, whose fields overlap in `u32` and `f64`, which JS keeps apart at fixtures/reject/src/lib.rs:565:10 +comparing pointers to `u32`, each a place JS makes of its own at fixtures/reject/src/lib.rs:573:2 +comparing pointers to `u32`, each a place JS makes of its own at fixtures/reject/src/lib.rs:2122: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: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 raw pointer to `(u32, u32)` in a variable assigned again while it may point there at fixtures/reject/src/lib.rs:601:10 +a raw pointer to `(u32, u32)` in a variable assigned again while it may point there at fixtures/reject/src/lib.rs:610:10 +a raw pointer to `(u32, u32)` in a variable assigned again while it may point there at fixtures/reject/src/lib.rs:618:10 +a raw pointer to `(u32, u32)` in a variable assigned again while it may point there at fixtures/reject/src/lib.rs:627:10 +a raw pointer to `(u32, u32)` in a variable assigned again while it may point there at fixtures/reject/src/lib.rs:635: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:1632:18 +a raw pointer to `Target` in a variable assigned again while it may point there at fixtures/reject/src/lib.rs:1646:10 +a raw pointer to `(u32, u32)` in a variable assigned again while it may point there at fixtures/reject/src/lib.rs:1659:10 +a raw pointer to `(u32, u32)` in a variable assigned again while it may point there at fixtures/reject/src/lib.rs:1674: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:1728: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:1743: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:1764: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:1786: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:1805: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:1822: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:1835: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:1911: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:1934: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:1952: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:1970: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:1989: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:2015: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:2039: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:2055: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:2068: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:1850: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:1867: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:1883: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:1896:19 +a raw pointer to `(u32, u32)` in a variable assigned again while it may point there at fixtures/reject/src/lib.rs:978:26 +a raw pointer to `(u32, u32)` in a variable assigned again while it may point there at fixtures/reject/src/lib.rs:991:22 +a raw pointer to `(u32, u32)` in a variable assigned again while it may point there at fixtures/reject/src/lib.rs:1001:12 +a raw pointer to `(u32, u32)` in a variable assigned again while it may point there at fixtures/reject/src/lib.rs:1010:10 +a raw pointer to `(u32, u32)` in a variable assigned again while it may point there at fixtures/reject/src/lib.rs:1020:17 +a raw pointer to `(u32, u32)` in a variable assigned again while it may point there at fixtures/reject/src/lib.rs:1025: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:646: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:656: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:664:15 +a raw pointer to `std::cell::UnsafeCell` in a variable assigned again while it may point there at fixtures/reject/src/lib.rs:673:15 +a raw pointer to `std::cell::UnsafeCell` in a variable assigned again while it may point there at fixtures/reject/src/lib.rs:686: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:697:21 +a raw pointer to a place of `()`, which has no address of its own at fixtures/reject/src/lib.rs:705:15 +a raw pointer to a place of `()`, which has no address of its own at fixtures/reject/src/lib.rs:705:29 +comparing pointers to `Fused`, which has no bytes and so no address of its own at fixtures/reject/src/lib.rs:705:70 +a dangling pointer to `Only`, a value of no bytes made of more than structs and tuples at fixtures/reject/src/lib.rs:714:11 +`Buf::copy_to_bytes` of `Blank`, a value JS copies, which is not supported at fixtures/reject/src/lib.rs:738:2 +unsupported call to ` as std::iter::Iterator>::is_sorted` at fixtures/reject/src/lib.rs:743:15 +comparing pointers to `u32` in an atomic, which JS has no address of at fixtures/reject/src/lib.rs:754:15 +a constant of type `&u32`, a pointer into memory translation can't name at fixtures/reject/src/lib.rs:755:3 +passing `{closure@fixtures/reject/src/lib.rs:761:11: 761:19}`, which drops, to `String::retain`, which is not supported yet at fixtures/reject/src/lib.rs:761: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:803: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:829: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:849: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:885: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:886: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:887: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:888:58 +a raw pointer to `(u32, u32)` in `Gap`, which the crate may put another object in place of at fixtures/reject/src/lib.rs:887: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:899: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:900: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:901: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:933: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:1088: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:1098: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:1108: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:1120: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:1165: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:1199: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:1211:46 -`std::iter::once` with a mutable reference to a value JS copies, which its mapping would copy at fixtures/reject/src/lib.rs:1213: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:1226:22 -`Extend` of `(std::vec::Vec, Tens)` by `(u8, u8)`, whose `Tens` of `u8` is not supported yet at fixtures/reject/src/lib.rs:1250:31 -unsupported call to `core::num::::is_ascii_octdigit` at fixtures/reject/src/lib.rs:1255: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:1315: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: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:1333: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:1342: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:1354: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:1367: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:1376: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:1433: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:1446: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:1459: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:1471: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:1482: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:1497: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:1510: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:1523: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:1532: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:1543: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:1575: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:1583: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:1591: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:1599: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:1606:52 -unsupported call to `core::str::::as_bytes_mut` at fixtures/reject/src/lib.rs:1614: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:1615: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:1620:20 +`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:932: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:1087: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:1097: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:1107: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:1119: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:1164: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:1198: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:1210:46 +`std::iter::once` with a mutable reference to a value JS copies, which its mapping would copy at fixtures/reject/src/lib.rs:1212: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:1225:22 +`Extend` of `(std::vec::Vec, Tens)` by `(u8, u8)`, whose `Tens` of `u8` is not supported yet at fixtures/reject/src/lib.rs:1249:31 +unsupported call to `core::num::::is_ascii_octdigit` at fixtures/reject/src/lib.rs:1254: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:1314: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:1323: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:1332: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:1341: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:1353: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:1366: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:1375: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:1432: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:1445: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:1458: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:1470: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:1481: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:1496: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:1509: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:1522: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:1531: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:1542: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:1574: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:1582: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:1590: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:1598: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:1605:52 +unsupported call to `core::str::::as_bytes_mut` at fixtures/reject/src/lib.rs:1613: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:1614: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:1619: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:1687: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:1688: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:1689:3 -unsupported call to `std::ptr::addr_eq::<[u8; 4], [u8; 4]>` at fixtures/reject/src/lib.rs:1690:14 -comparing `*mut [u8; 4]` at fixtures/reject/src/lib.rs:1690: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:1691: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:1691:73 -hashing `*const [u8; 4]` by its address, which JS has no counterpart of at fixtures/reject/src/lib.rs:1694: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:1704: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:1704: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:1704: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:1704: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:1711:26 -a raw pointer to `[u8; 4]` in a variable assigned again while it may point there at fixtures/reject/src/lib.rs:1711:26 -a raw pointer to `[u8; 4]` in a variable assigned again while it may point there at fixtures/reject/src/lib.rs:1712:10 -const generic types are not supported: `Block` at fixtures/reject/src/lib.rs:2079: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:2095: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:2096: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:2097:2 -a mapped guard of `{closure@fixtures/reject/src/lib.rs:2129:38: 2129:50}`, which JS can't write in place at fixtures/reject/src/lib.rs:2130: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:2137: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:2139: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:2140: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:2141: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:2142: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:2143:36 -`offset_from` of pointers to `()`, which has no bytes at fixtures/reject/src/lib.rs:2150:13 -a slice of `()`, which has no bytes, from a pointer at fixtures/reject/src/lib.rs:2150: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:2155:13 -a raw pointer to `[u32; 3]` in a variable assigned again while it may point there at fixtures/reject/src/lib.rs:2168: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:2170: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:2203: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:2204: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:2205: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:2206: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:2207: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:2208:21 -a raw or mutable slice of a byte in no array of bytes at fixtures/reject/src/lib.rs:2214:12 -a raw or mutable slice of a byte in no array of bytes at fixtures/reject/src/lib.rs:2215: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:2226: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:2228: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:2229: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:2230: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:2231: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:2238: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:2244: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:2249:4 -unsupported call to `std::mem::size_of_val::` at fixtures/reject/src/lib.rs:2254:2 -a raw pointer to `(u32, u32)` in a variable assigned again while it may point there at fixtures/reject/src/lib.rs:2260:10 -a raw pointer to `(u32, u32)` in a variable assigned again while it may point there at fixtures/reject/src/lib.rs:2268:10 -a raw pointer to `(u32, u32)` in a variable assigned again while it may point there at fixtures/reject/src/lib.rs:2276: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:2286:3 -an assignment through a reference to `std::sync::LazyLock` at fixtures/reject/src/lib.rs:2291: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:2297: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:2309: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:2310: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:2311: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:2313:15 -unsupported call to `std::alloc::alloc_zeroed` at fixtures/reject/src/lib.rs:2338: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:2338:12 -unsupported call to ` as std::cmp::PartialEq>::eq` at fixtures/reject/src/lib.rs:2344:25 -a constant of type `std::mem::ManuallyDrop` at fixtures/reject/src/lib.rs:2344:34 -unsupported call to ` as std::fmt::Debug>::fmt` at fixtures/reject/src/lib.rs:2344: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:2324: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:2325: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:2327: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:2328: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:2330:17 +unsupported call to `std::ptr::addr_eq::<[u8; 4], [u8; 4]>` at fixtures/reject/src/lib.rs:1689:14 +comparing `*mut [u8; 4]` at fixtures/reject/src/lib.rs:1689: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:1690: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:1690:73 +hashing `*const [u8; 4]` by its address, which JS has no counterpart of at fixtures/reject/src/lib.rs:1693: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:1703: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:1703: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:1703: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:1703: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:1710:26 +a raw pointer to `[u8; 4]` in a variable assigned again while it may point there at fixtures/reject/src/lib.rs:1710:26 +a raw pointer to `[u8; 4]` in a variable assigned again while it may point there at fixtures/reject/src/lib.rs:1711:10 +const generic types are not supported: `Block` at fixtures/reject/src/lib.rs:2078: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:2094: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:2095: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:2096:2 +a mapped guard of `{closure@fixtures/reject/src/lib.rs:2128:38: 2128:50}`, which JS can't write in place at fixtures/reject/src/lib.rs:2129: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:2136: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:2138: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:2139: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:2140: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:2141: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:2142:36 +`offset_from` of pointers to `()`, which has no bytes at fixtures/reject/src/lib.rs:2149:13 +a slice of `()`, which has no bytes, from a pointer at fixtures/reject/src/lib.rs:2149: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:2154:13 +a raw pointer to `[u32; 3]` in a variable assigned again while it may point there at fixtures/reject/src/lib.rs:2167: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:2169: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:2202: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:2203: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:2204: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:2205: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:2206: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:2207:21 +a raw or mutable slice of a byte in no array of bytes at fixtures/reject/src/lib.rs:2213:12 +a raw or mutable slice of a byte in no array of bytes at fixtures/reject/src/lib.rs:2214: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:2225: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:2227: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:2228: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:2229: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:2230: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:2237: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:2243: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:2248:4 +unsupported call to `std::mem::size_of_val::` at fixtures/reject/src/lib.rs:2253:2 +a raw pointer to `(u32, u32)` in a variable assigned again while it may point there at fixtures/reject/src/lib.rs:2259:10 +a raw pointer to `(u32, u32)` in a variable assigned again while it may point there at fixtures/reject/src/lib.rs:2267:10 +a raw pointer to `(u32, u32)` in a variable assigned again while it may point there at fixtures/reject/src/lib.rs:2275: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:2285:3 +an assignment through a reference to `std::sync::LazyLock` at fixtures/reject/src/lib.rs:2290: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:2296: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:2308: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:2309: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:2310: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:2312:15 +unsupported call to `std::alloc::alloc_zeroed` at fixtures/reject/src/lib.rs:2337: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:2337:12 +unsupported call to ` as std::cmp::PartialEq>::eq` at fixtures/reject/src/lib.rs:2343:25 +a constant of type `std::mem::ManuallyDrop` at fixtures/reject/src/lib.rs:2343:34 +unsupported call to ` as std::fmt::Debug>::fmt` at fixtures/reject/src/lib.rs:2343: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:2323: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:2324: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:2326: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:2327: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:2329:17 overriding `Iterator::fold`, which std's adaptors call in place of `next` or beside it at fixtures/reject/src/lib.rs:125:2 an iterator of the crate implementing `DoubleEndedIterator`, which is not supported yet at fixtures/reject/src/lib.rs:145:1 overriding `Iterator::size_hint`, which std's adaptors call in place of `next` or beside it at fixtures/reject/src/lib.rs:173:2 an iterator of the crate implementing `FusedIterator`, which is not supported yet at fixtures/reject/src/lib.rs:193:1 -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:1050: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:1064: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:1154: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:1280: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:1284: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:1288: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:1292: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:1296: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:1300: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:1304: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:2086: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:2351: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:2351: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:2407: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:2351: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:1049: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:1063: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:1153: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:1279: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:1283: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:1287: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:1291: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:1295: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:1299: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:1303: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:2085: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:2350: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:2350: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:2406: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:2350:23 diff --git a/ts/fixtures/reject/src/lib.rs b/ts/fixtures/reject/src/lib.rs index e36ccae09..6d46ed5c4 100644 --- a/ts/fixtures/reject/src/lib.rs +++ b/ts/fixtures/reject/src/lib.rs @@ -427,13 +427,6 @@ impl Reading for u8 { } } -/// A `Weak` of a trait object, which would need an object made of a value that may be -/// gone. -pub fn weak_object(n: std::sync::Weak) -> Option { - let r: std::sync::Weak = n; - r.upgrade().map(|r| r.read()) -} - pub trait Scaled { fn scale(&self, by: T) -> T; } @@ -511,6 +504,12 @@ pub fn any_upcast(k: &dyn Keyed) -> bool { any.is::() } +/// The same upcast of a `Weak`. +pub fn weak_any_upcast(k: std::rc::Weak) -> bool { + let any: std::rc::Weak = k; + any.upgrade().is_some_and(|a| a.is::()) +} + /// A `TypeId`, which no value stands for yet. pub fn any_type_id(a: &dyn std::any::Any) -> bool { a.type_id() == std::any::TypeId::of::() diff --git a/ts/fixtures/reject/ts.toml b/ts/fixtures/reject/ts.toml index d8ea740fd..7f8058002 100644 --- a/ts/fixtures/reject/ts.toml +++ b/ts/fixtures/reject/ts.toml @@ -49,7 +49,6 @@ roots = [ "bytes_mut_put", "bytes_mut_put_through", "addr_parsed", - "weak_object", "generic_object", "first_of", "tail_read", @@ -57,6 +56,7 @@ roots = [ "generic_pending", "rebound_reference", "any_upcast", + "weak_any_upcast", "any_type_id", "reinterpreted", "addressed", diff --git a/ts/fixtures/task/expected/drops/objects.ts b/ts/fixtures/task/expected/drops/objects.ts index b605107bd..b352bf48c 100644 --- a/ts/fixtures/task/expected/drops/objects.ts +++ b/ts/fixtures/task/expected/drops/objects.ts @@ -222,7 +222,7 @@ export function anys(log: Log.Log, id: rt.u32): void { Log.note(log, rt.fmtFormat(["clones ", args8[0]])); const a: rt.Arc = clones[0]; const b: rt.Arc = clones[1]; - const typed: rt.Arc<[Guard.Guard, Guard.Guard]> | undefined = ok$02syyam(rt.arcDowncast(a, Any.of$tuple2_model_Guard_model_Guard)); + const typed: rt.Arc<[Guard.Guard, Guard.Guard]> | undefined = ok$02syyam(rt.arcDowncast(a, Any.of$tuple2_model_Guard_model_Guard, (object) => object.v)); const part4 = option_map$06e51ml(typed, (t: rt.Arc<[Guard.Guard, Guard.Guard]>): [rt.u32, rt.usize] => { return [Guard.id(t.value[0]), t.strong] as [rt.u32, rt.usize]; }); diff --git a/ts/runtime/rt/task.ts b/ts/runtime/rt/task.ts index 990759d3b..b7f160aee 100644 --- a/ts/runtime/rt/task.ts +++ b/ts/runtime/rt/task.ts @@ -162,12 +162,30 @@ export function arcPtrEq(l: Arc, r: Arc): boolean { } function arcRoot(arc: Arc): Arc { - return arc instanceof ArcDyn ? arc.arc : arc; + while (arc instanceof ArcDyn) arc = arc.arc; + return arc; } -/** `Arc::downcast` of an `Arc`: the `Arc` it was made from, if its object is a `class`. */ -export function arcDowncast(arc: Arc, class_: abstract new (...args: never[]) => unknown): Result, Arc> { - return arc instanceof ArcDyn && arc.value instanceof class_ ? Ok(arc.arc as Arc) : Err(arc); +/** The `Arc` each `Arc::downcast` of an `Arc` made from a box gives, which is one allocation. */ +const downcasts = new WeakMap, Arc>(); + +/** + * `Arc::downcast` of an `Arc`, if its object is a `class`: the `Arc` it was made + * from, or one of what the object holds, by `held`, sharing the count of one made from a box. + */ +export function arcDowncast( + arc: Arc, + class_: abstract new (...args: never[]) => C, + held: (object: C) => T, +): Result, Arc> { + if (!(arc.value instanceof class_)) return Err(arc); + if (arc instanceof ArcDyn) return Ok(arc.arc as Arc); + let typed = downcasts.get(arc) as Arc | undefined; + if (typed === undefined) { + typed = new ArcDyn(arc, held(arc.value)); + downcasts.set(arc, typed); + } + return Ok(typed); } /** @@ -270,12 +288,18 @@ export function arcNewCyclic(f: (weak: Weak) => T): Arc { return arc; } -/** `Weak`, of `arc`, or else dangling, counted in `arc` until it drops. */ +/** + * `Weak`, of `arc`, or else dangling, counted in `arc` until it drops. One unsized to a + * `Weak` keeps the `Arc` it was made from, which `view` makes an `Arc` + * of as it upgrades, since `Arc::new_cyclic`'s value may not be there yet. + */ export class Weak implements Disposable { - readonly arc: Arc; + readonly arc: Arc; + readonly view: ((arc: Arc) => Arc) | undefined; - constructor(arc: Arc = DANGLING) { + constructor(arc: Arc = DANGLING, view?: (arc: Arc) => Arc) { this.arc = arc; + this.view = view; arc.weak++; } @@ -284,14 +308,23 @@ export class Weak implements Disposable { } } +/** `weak`, a `Weak`, unsized to a `Weak` of what `view` makes of its `Arc`. */ +export function weakDyn(weak: Weak, view: (arc: Arc) => Arc): Weak { + const dyn = new Weak(weak.arc as Arc, view as (arc: Arc) => Arc); + weak.arc.weak--; + return dyn; +} + /** `Weak::upgrade`: a new `Arc`, or `undefined` once none is left. */ export function weakUpgrade(weak: Weak): Arc | undefined { - return weak.arc.strong > 0 ? arcClone(weak.arc) : undefined; + if (weak.arc.strong === 0) return undefined; + const arc = arcClone(weak.arc as Arc); + return weak.view === undefined ? arc : weak.view(arc); } /** `Weak::clone`. */ export function weakClone(weak: Weak): Weak { - return new Weak(weak.arc); + return new Weak(weak.arc as Arc, weak.view); } /** `Weak::weak_count`: its `Arc`'s, or 0 once no strong one is left, as for a dangling one. */ diff --git a/ts/src/lower/dynamic.rs b/ts/src/lower/dynamic.rs index f78e14b66..2c0a6d026 100644 --- a/ts/src/lower/dynamic.rs +++ b/ts/src/lower/dynamic.rs @@ -516,8 +516,8 @@ impl<'tcx> Body<'_, '_, 'tcx> { } } -/// A call of `dyn Any`'s `is`, `downcast_ref`, or `downcast_mut`, or of `Box`'s or `Arc`'s -/// `downcast`, each of which checks for the class a coercion wrapped a value of its type +/// A call of `dyn Any`'s `is`, `downcast_ref`, or `downcast_mut`, or of `Box`'s, `Arc`'s, or +/// `Rc`'s `downcast`, each of which checks for the class a coercion wrapped a value of its type /// in, or its arguments back if it is none of these. pub fn call<'tcx>( b: &mut Body<'_, '_, 'tcx>, @@ -530,7 +530,7 @@ pub fn call<'tcx>( let tcx = b.t.tcx; if !matches!( (owner, name), - ("dyn Any", "is" | "downcast_ref" | "downcast_mut") | ("Box" | "Arc", "downcast") + ("dyn Any", "is" | "downcast_ref" | "downcast_mut") | ("Box" | "Arc" | "Rc", "downcast") ) { return Err(args); } @@ -583,7 +583,14 @@ pub fn call<'tcx>( Box::new(Expr::result(false, o.clone())), ), // The `Arc` the object was made from, whose count the object shares. - _ => Expr::rt("arcDowncast", vec![o, Expr::Sym(value.sym)]), + _ => { + let held = crate::ts::Param { + name: "object".into(), + ty: None, + }; + let held = Expr::Lambda(vec![held], Box::new(Expr::ident("object").field(value.v))); + Expr::rt("arcDowncast", vec![o, Expr::Sym(value.sym), held]) + } }; Ok(Some(e)) } diff --git a/ts/src/lower/library.rs b/ts/src/lower/library.rs index 1135ae9fa..4a0ab4100 100644 --- a/ts/src/lower/library.rs +++ b/ts/src/lower/library.rs @@ -1438,6 +1438,16 @@ fn mapping<'tcx>( { return Some(boxed_vec(b, value, elem, span)); } + // An `Arc` or an `Rc` of what a box holds, its trait object included, which it + // drops with the last one. A box of a byte array holds a `Uint8Array` of its own. + if b.t.std_of(to) == Some(Std::Arc) + && let ty::Adt(adt, args) = from.kind() + && Std::of(tcx, adt.did()) == Some(Std::Box) + && (args.type_at(0).is_trait() || args.type_at(0).is_sized(tcx, b.t.typing_env())) + && !super::byte_array(args.type_at(0)) + { + return Some(Expr::New(Box::new(Expr::Rt("Arc".into())), vec![value])); + } // A heap's `Vec` is its elements. if let ty::Adt(adt, args) = from.kind() && Std::of(tcx, adt.did()) == Some(Std::BinaryHeap) diff --git a/ts/src/lower/mir/rvalue.rs b/ts/src/lower/mir/rvalue.rs index bf8a612be..579a0d2d0 100644 --- a/ts/src/lower/mir/rvalue.rs +++ b/ts/src/lower/mir/rvalue.rs @@ -339,6 +339,11 @@ impl<'m, 'b, 'a, 'tcx> Fx<'m, 'b, 'a, 'tcx> { fn cast(&mut self, kind: CastKind, op: &Operand<'tcx>, to: Ty<'tcx>, span: Span, out: &mut Vec) -> Expr { let tcx = self.tcx; let from = op.ty(&self.mir.local_decls, tcx); + // A `Pin` is the pointer it holds, which unsizes as it does. + let (from, to) = match kind { + CastKind::PointerCoercion(PointerCoercion::Unsize, _) => unpinned(tcx, from, to), + _ => (from, to), + }; match kind { CastKind::IntToInt | CastKind::IntToFloat | CastKind::FloatToInt | CastKind::FloatToFloat => { let value = self.operand(op, span, out); @@ -358,6 +363,10 @@ impl<'m, 'b, 'a, 'tcx> Fx<'m, 'b, 'a, 'tcx> { let value = self.operand(op, span, out); self.arc_object(value, pointee, object, span, out) } + PointerCoercion::Unsize if let Some((pointee, object)) = weak_object(tcx, from, to) => { + let value = self.operand(op, span, out); + self.weak_object(value, pointee, object, span, out) + } // A future, as the `rt.Future` a `dyn Future` is. PointerCoercion::Unsize if unsized_to(from, to).is_some_and(|part| self.b.t.dyn_future(part).is_some()) => @@ -457,6 +466,32 @@ impl<'m, 'b, 'a, 'tcx> Fx<'m, 'b, 'a, 'tcx> { } } + /// `weak`, a `Weak` of `pointee` unsized to one of the trait object `object`: `rt.weakDyn` + /// of it, which makes the `Arc` an upgrade gives as `arc_object` does, or the same `Weak` + /// upcast, which `arc_object` checks. + fn weak_object( + &mut self, + weak: Expr, + pointee: Ty<'tcx>, + object: Ty<'tcx>, + span: Span, + out: &mut Vec, + ) -> Expr { + if pointee.is_trait() { + return self.arc_object(weak, pointee, object, span, out); + } + let name = self.b.fresh("arc"); + let mut body = Vec::new(); + let arc = self.arc_object(Expr::ident(name.clone()), pointee, object, span, &mut body); + body.push(StmtKind::Return(Some(arc)).at(None)); + let param = crate::ts::Param { + name, + ty: Some(crate::ts::Type::Rt("Arc", vec![self.b.t.ty(pointee, span)])), + }; + let ret = crate::ts::Type::Rt("Arc", vec![self.b.t.ty(object, span)]); + Expr::rt("weakDyn", vec![weak, Expr::Arrow(vec![param], ret, body)]) + } + /// A discriminant as its number, of a whole `next` result if `next`. fn discriminant(&mut self, scrut: Expr, ty: Ty<'tcx>, next: bool, span: Span, out: &mut Vec) -> Expr { match ty.kind() { @@ -1025,6 +1060,25 @@ fn arc_object<'tcx>(tcx: TyCtxt<'tcx>, from: Ty<'tcx>, to: Ty<'tcx>) -> Option<( (Std::of(tcx, adt.did()) == Some(Std::Arc) && object.is_trait()).then(|| (from_args.type_at(0), object)) } +/// What a `Weak` unsized to a `Weak` of a trait object points at, and that object. +fn weak_object<'tcx>(tcx: TyCtxt<'tcx>, from: Ty<'tcx>, to: Ty<'tcx>) -> Option<(Ty<'tcx>, Ty<'tcx>)> { + let (ty::Adt(adt, from_args), ty::Adt(_, to_args)) = (from.kind(), to.kind()) else { + return None; + }; + let object = to_args.type_at(0); + (Std::of(tcx, adt.did()) == Some(Std::Weak) && object.is_trait()).then(|| (from_args.type_at(0), object)) +} + +/// `from` and `to`, each the pointer the `Pin` it is holds, if both are pins. +fn unpinned<'tcx>(tcx: TyCtxt<'tcx>, from: Ty<'tcx>, to: Ty<'tcx>) -> (Ty<'tcx>, Ty<'tcx>) { + match (from.kind(), to.kind()) { + (ty::Adt(a, a_args), ty::Adt(b, b_args)) if a.did() == b.did() && Std::of(tcx, a.did()) == Some(Std::Pin) => { + (a_args.type_at(0), b_args.type_at(0)) + } + _ => (from, to), + } +} + /// Whether evaluating `rvalue` can do or throw anything. pub fn effect<'tcx>(rvalue: &Rvalue<'tcx>, fx: &Fx<'_, '_, '_, 'tcx>) -> bool { match rvalue {