`QueryStackFrame<I>` is a generic type, and the `I` parameter leaks out to many other related types. However, it only has two instantiations in practice: - `QueryStackFrame<QueryStackFrameExtra>` - `QueryStackFrame<QueryStackDeferred<'tcx>>` And most of the places that currently use `QueryStackFrame<I>` are actually specific to one of the instantiations. This commit removes the unneeded genericity. The following types are only ever used with `QueryStackDeferred<'tcx>`: - QueryMap - QueryJobInfo - QueryJob - QueryWaiter - QueryLatchInfo - QueryLatch - QueryState - QueryResult and their `<I>` parameter is changed to `<'tcx>`. Also, the `QueryContext::QueryInfo` associated type is removed. `CycleError<I>` and `QueryInfo<I>` are still generic over type, because they are used with both instantiations. This required also adding a `<'tcx>` parameter to the traits `QueryDispatcher` and `QueryContext`, which is annoying but I can't see how to avoid it. |
||
|---|---|---|
| .. | ||
| src | ||
| Cargo.toml | ||
| messages.ftl | ||
| README.md | ||
For more information about how rustc works, see the rustc dev guide.