@@ -127,10 +127,9 @@ class PreservedAnalyses {
127
127
return PA;
128
128
}
129
129
130
- // / Mark an analysis as preserved.
131
- template <typename AnalysisT> PreservedAnalyses &preserve () {
132
- preserve (AnalysisT::ID ());
133
- return *this ;
130
+ // / Mark analyses as preserved.
131
+ template <typename ... AnalysisTs> PreservedAnalyses &preserve () {
132
+ return preserve (AnalysisTs::ID ()...);
134
133
}
135
134
136
135
// / Given an analysis's ID, mark the analysis as preserved, adding it
@@ -146,10 +145,15 @@ class PreservedAnalyses {
146
145
return *this ;
147
146
}
148
147
149
- // / Mark an analysis set as preserved.
150
- template <typename AnalysisSetT> PreservedAnalyses &preserveSet () {
151
- preserveSet (AnalysisSetT::ID ());
152
- return *this ;
148
+ // / Mark analyses as preserved using IDs.
149
+ template <typename ... AnalysisKeyPtrs>
150
+ PreservedAnalyses &preserve (AnalysisKeyPtrs... IDs) {
151
+ return (preserve (IDs), ..., *this );
152
+ }
153
+
154
+ // / Mark analysis sets as preserved.
155
+ template <typename ... AnalysisSetTs> PreservedAnalyses &preserveSet () {
156
+ return preserveSet (AnalysisSetTs::ID ()...);
153
157
}
154
158
155
159
// / Mark an analysis set as preserved using its ID.
@@ -160,16 +164,21 @@ class PreservedAnalyses {
160
164
return *this ;
161
165
}
162
166
163
- // / Mark an analysis as abandoned.
167
+ // / Mark analysis sets as preserved using IDs.
168
+ template <typename ... AnalysisSetKeyPtrs>
169
+ PreservedAnalyses &preserveSet (AnalysisSetKeyPtrs... IDs) {
170
+ return (preserveSet (IDs), ..., *this );
171
+ }
172
+
173
+ // / Mark an analyses as abandoned.
164
174
// /
165
175
// / An abandoned analysis is not preserved, even if it is nominally covered
166
176
// / by some other set or was previously explicitly marked as preserved.
167
177
// /
168
178
// / Note that you can only abandon a specific analysis, not a *set* of
169
179
// / analyses.
170
- template <typename AnalysisT> PreservedAnalyses &abandon () {
171
- abandon (AnalysisT::ID ());
172
- return *this ;
180
+ template <typename ... AnalysisTs> PreservedAnalyses &abandon () {
181
+ return abandon (AnalysisTs::ID ()...);
173
182
}
174
183
175
184
// / Mark an analysis as abandoned using its ID.
@@ -185,6 +194,12 @@ class PreservedAnalyses {
185
194
return *this ;
186
195
}
187
196
197
+ // / Mark analyses as abandoned using IDs.
198
+ template <typename ... AnalysisKeyPtrs>
199
+ PreservedAnalyses &abandon (AnalysisKeyPtrs... IDs) {
200
+ return (abandon (IDs), ..., *this );
201
+ }
202
+
188
203
// / Intersect this set with another in place.
189
204
// /
190
205
// / This is a mutating operation on this preserved set, removing all
0 commit comments