Skip to content

Commit 435db9b

Browse files
committed
Use RPITIT for Successors and Predecessors traits
Now with RPITIT instead of GAT!
1 parent e8d2221 commit 435db9b

8 files changed

Lines changed: 14 additions & 46 deletions

File tree

‎compiler/rustc_borrowck/src/constraints/graph.rs‎

Lines changed: 1 addition & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -223,9 +223,7 @@ impl<'s, 'tcx, D: ConstraintGraphDirection> graph::DirectedGraph for RegionGraph
223223
}
224224

225225
impl<'s,'tcx,D:ConstraintGraphDirection> graph::SuccessorsforRegionGraph<'s,'tcx,D>{
226-
typeSuccessors<'g> = Successors<'s,'tcx,D>whereSelf:'g;
227-
228-
fnsuccessors(&self,node:Self::Node) -> Self::Successors<'_>{
226+
fnsuccessors(&self,node:Self::Node) -> implIterator<Item = Self::Node>{
229227
self.outgoing_regions(node)
230228
}
231229
}

‎compiler/rustc_data_structures/src/graph/mod.rs‎

Lines changed: 2 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -25,19 +25,11 @@ pub trait StartNode: DirectedGraph {
2525
}
2626

2727
pubtraitSuccessors:DirectedGraph{
28-
typeSuccessors<'g>:Iterator<Item = Self::Node>
29-
where
30-
Self:'g;
31-
32-
fnsuccessors(&self,node:Self::Node) -> Self::Successors<'_>;
28+
fnsuccessors(&self,node:Self::Node) -> implIterator<Item = Self::Node>;
3329
}
3430

3531
pubtraitPredecessors:DirectedGraph{
36-
typePredecessors<'g>:Iterator<Item = Self::Node>
37-
where
38-
Self:'g;
39-
40-
fnpredecessors(&self,node:Self::Node) -> Self::Predecessors<'_>;
32+
fnpredecessors(&self,node:Self::Node) -> implIterator<Item = Self::Node>;
4133
}
4234

4335
/// Alias for [`DirectedGraph`] + [`StartNode`] + [`Predecessors`] + [`Successors`].

‎compiler/rustc_data_structures/src/graph/reference.rs‎

Lines changed: 2 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -15,17 +15,13 @@ impl<'graph, G: StartNode> StartNode for &'graph G {
1515
}
1616

1717
impl<'graph,G:Successors>Successorsfor&'graphG{
18-
typeSuccessors<'g> = G::Successors<'g>where'graph:'g;
19-
20-
fnsuccessors(&self,node:Self::Node) -> Self::Successors<'_>{
18+
fnsuccessors(&self,node:Self::Node) -> implIterator<Item = Self::Node>{
2119
(**self).successors(node)
2220
}
2321
}
2422

2523
impl<'graph,G:Predecessors>Predecessorsfor&'graphG{
26-
typePredecessors<'g> = G::Predecessors<'g>where'graph:'g;
27-
28-
fnpredecessors(&self,node:Self::Node) -> Self::Predecessors<'_>{
24+
fnpredecessors(&self,node:Self::Node) -> implIterator<Item = Self::Node>{
2925
(**self).predecessors(node)
3026
}
3127
}

‎compiler/rustc_data_structures/src/graph/scc/mod.rs‎

Lines changed: 1 addition & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -104,9 +104,7 @@ impl<N: Idx, S: Idx + Ord> NumEdges for Sccs<N, S> {
104104
}
105105

106106
impl<N:Idx,S:Idx + Ord>SuccessorsforSccs<N,S>{
107-
typeSuccessors<'g> = std::iter::Cloned<std::slice::Iter<'g,S>>;
108-
109-
fnsuccessors(&self,node:S) -> Self::Successors<'_>{
107+
fnsuccessors(&self,node:S) -> implIterator<Item = Self::Node>{
110108
self.successors(node).iter().cloned()
111109
}
112110
}

‎compiler/rustc_data_structures/src/graph/tests.rs‎

Lines changed: 2 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,5 @@
11
usecrate::fx::FxHashMap;
22
use std::cmp::max;
3-
use std::iter;
4-
use std::slice;
53

64
usesuper::*;
75

@@ -49,17 +47,13 @@ impl StartNode for TestGraph {
4947
}
5048

5149
implPredecessorsforTestGraph{
52-
typePredecessors<'g> = iter::Cloned<slice::Iter<'g,usize>>;
53-
54-
fnpredecessors(&self,node:usize) -> Self::Predecessors<'_>{
50+
fnpredecessors(&self,node:usize) -> implIterator<Item = Self::Node>{
5551
self.predecessors[&node].iter().cloned()
5652
}
5753
}
5854

5955
implSuccessorsforTestGraph{
60-
typeSuccessors<'g> = iter::Cloned<slice::Iter<'g,usize>>;
61-
62-
fnsuccessors(&self,node:usize) -> Self::Successors<'_>{
56+
fnsuccessors(&self,node:usize) -> implIterator<Item = Self::Node>{
6357
self.successors[&node].iter().cloned()
6458
}
6559
}

‎compiler/rustc_data_structures/src/graph/vec_graph/mod.rs‎

Lines changed: 1 addition & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -93,9 +93,7 @@ impl<N: Idx> NumEdges for VecGraph<N> {
9393
}
9494

9595
impl<N:Idx + Ord>SuccessorsforVecGraph<N>{
96-
typeSuccessors<'g> = std::iter::Cloned<std::slice::Iter<'g,N>>;
97-
98-
fnsuccessors(&self,node:N) -> Self::Successors<'_>{
96+
fnsuccessors(&self,node:N) -> implIterator<Item = Self::Node>{
9997
self.successors(node).iter().cloned()
10098
}
10199
}

‎compiler/rustc_middle/src/mir/basic_blocks.rs‎

Lines changed: 3 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,5 @@
11
usecrate::mir::traversal::Postorder;
2-
usecrate::mir::{BasicBlock,BasicBlockData,Successors,Terminator,TerminatorKind,START_BLOCK};
2+
usecrate::mir::{BasicBlock,BasicBlockData,Terminator,TerminatorKind,START_BLOCK};
33

44
use rustc_data_structures::fx::FxHashMap;
55
use rustc_data_structures::graph;
@@ -156,19 +156,15 @@ impl<'tcx> graph::StartNode for BasicBlocks<'tcx> {
156156
}
157157

158158
impl<'tcx> graph::SuccessorsforBasicBlocks<'tcx>{
159-
typeSuccessors<'b> = Successors<'b>where'tcx:'b;
160-
161159
#[inline]
162-
fnsuccessors(&self,node:Self::Node) -> Self::Successors<'_>{
160+
fnsuccessors(&self,node:Self::Node) -> implIterator<Item = Self::Node>{
163161
self.basic_blocks[node].terminator().successors()
164162
}
165163
}
166164

167165
impl<'tcx> graph::PredecessorsforBasicBlocks<'tcx>{
168-
typePredecessors<'b> = std::iter::Copied<std::slice::Iter<'b,BasicBlock>>where'tcx:'b;
169-
170166
#[inline]
171-
fnpredecessors(&self,node:Self::Node) -> Self::Predecessors<'_>{
167+
fnpredecessors(&self,node:Self::Node) -> implIterator<Item = Self::Node>{
172168
self.predecessors()[node].iter().copied()
173169
}
174170
}

‎compiler/rustc_mir_transform/src/coverage/graph.rs‎

Lines changed: 2 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -209,19 +209,15 @@ impl graph::StartNode for CoverageGraph {
209209
}
210210

211211
impl graph::SuccessorsforCoverageGraph{
212-
typeSuccessors<'g> = std::iter::Cloned<std::slice::Iter<'g,BasicCoverageBlock>>;
213-
214212
#[inline]
215-
fnsuccessors(&self,node:Self::Node) -> Self::Successors<'_>{
213+
fnsuccessors(&self,node:Self::Node) -> implIterator<Item = Self::Node>{
216214
self.successors[node].iter().cloned()
217215
}
218216
}
219217

220218
impl graph::PredecessorsforCoverageGraph{
221-
typePredecessors<'g> = std::iter::Copied<std::slice::Iter<'g,BasicCoverageBlock>>;
222-
223219
#[inline]
224-
fnpredecessors(&self,node:Self::Node) -> Self::Predecessors<'_>{
220+
fnpredecessors(&self,node:Self::Node) -> implIterator<Item = Self::Node>{
225221
self.predecessors[node].iter().copied()
226222
}
227223
}

0 commit comments

Comments
 (0)