Lines Matching refs:Unexpanded
26 // Visitor that collects unexpanded parameter packs
30 /// \brief A class that collects unexpanded parameter packs.
37 SmallVectorImpl<UnexpandedParameterPack> &Unexpanded;
43 SmallVectorImpl<UnexpandedParameterPack> &Unexpanded)
44 : Unexpanded(Unexpanded), InLambda(false) { }
49 // Recording occurrences of (unexpanded) parameter packs.
55 Unexpanded.push_back(std::make_pair(TL.getTypePtr(), TL.getNameLoc()));
66 Unexpanded.push_back(std::make_pair(T, SourceLocation()));
75 Unexpanded.push_back(std::make_pair(E->getDecl(), E->getLocation()));
86 Unexpanded.push_back(std::make_pair(TTP, SourceLocation()));
108 // Pruning the search for unexpanded parameter packs.
112 /// do not contain unexpanded parameter packs.
122 /// unexpanded parameter packs.
131 /// that do not contain unexpanded parameter packs.
142 /// they cannot contain unexpanded parameter packs.
166 /// \brief Note whether we're traversing a lambda containing an unexpanded
167 /// parameter pack. In this case, the unexpanded pack can occur anywhere,
169 /// lambda, we don't propagate the 'contains unexpanded parameter pack' bit
188 Unexpanded.push_back(std::make_pair(VD, I->getLocation()));
200 /// \brief Diagnose all of the unexpanded parameter packs in the given
205 ArrayRef<UnexpandedParameterPack> Unexpanded) {
206 if (Unexpanded.empty())
209 // If we are within a lambda expression, that lambda contains an unexpanded
211 // FIXME: Store 'Unexpanded' on the lambda so we don't need to recompute it
225 for (unsigned I = 0, N = Unexpanded.size(); I != N; ++I) {
228 = Unexpanded[I].first.dyn_cast<const TemplateTypeParmType *>())
231 Name = Unexpanded[I].first.get<NamedDecl *>()->getIdentifier();
236 if (Unexpanded[I].second.isValid())
237 Locations.push_back(Unexpanded[I].second);
264 SmallVector<UnexpandedParameterPack, 2> Unexpanded;
265 CollectUnexpandedParameterPacksVisitor(Unexpanded).TraverseTypeLoc(
267 assert(!Unexpanded.empty() && "Unable to find unexpanded parameter packs");
268 return DiagnoseUnexpandedParameterPacks(Loc, UPPC, Unexpanded);
279 SmallVector<UnexpandedParameterPack, 2> Unexpanded;
280 CollectUnexpandedParameterPacksVisitor(Unexpanded).TraverseStmt(E);
281 assert(!Unexpanded.empty() && "Unable to find unexpanded parameter packs");
282 return DiagnoseUnexpandedParameterPacks(E->getLocStart(), UPPC, Unexpanded);
294 SmallVector<UnexpandedParameterPack, 2> Unexpanded;
295 CollectUnexpandedParameterPacksVisitor(Unexpanded)
297 assert(!Unexpanded.empty() && "Unable to find unexpanded parameter packs");
299 UPPC, Unexpanded);
330 SmallVector<UnexpandedParameterPack, 2> Unexpanded;
331 CollectUnexpandedParameterPacksVisitor(Unexpanded)
333 assert(!Unexpanded.empty() && "Unable to find unexpanded parameter packs");
334 return DiagnoseUnexpandedParameterPacks(NameInfo.getLoc(), UPPC, Unexpanded);
344 SmallVector<UnexpandedParameterPack, 2> Unexpanded;
345 CollectUnexpandedParameterPacksVisitor(Unexpanded)
347 assert(!Unexpanded.empty() && "Unable to find unexpanded parameter packs");
348 return DiagnoseUnexpandedParameterPacks(Loc, UPPC, Unexpanded);
357 SmallVector<UnexpandedParameterPack, 2> Unexpanded;
358 CollectUnexpandedParameterPacksVisitor(Unexpanded)
360 assert(!Unexpanded.empty() && "Unable to find unexpanded parameter packs");
361 return DiagnoseUnexpandedParameterPacks(Arg.getLocation(), UPPC, Unexpanded);
365 SmallVectorImpl<UnexpandedParameterPack> &Unexpanded) {
366 CollectUnexpandedParameterPacksVisitor(Unexpanded)
371 SmallVectorImpl<UnexpandedParameterPack> &Unexpanded) {
372 CollectUnexpandedParameterPacksVisitor(Unexpanded)
377 SmallVectorImpl<UnexpandedParameterPack> &Unexpanded) {
378 CollectUnexpandedParameterPacksVisitor(Unexpanded).TraverseType(T);
382 SmallVectorImpl<UnexpandedParameterPack> &Unexpanded) {
383 CollectUnexpandedParameterPacksVisitor(Unexpanded).TraverseTypeLoc(TL);
387 SmallVectorImpl<UnexpandedParameterPack> &Unexpanded) {
393 CollectUnexpandedParameterPacksVisitor(Unexpanded)
398 SmallVectorImpl<UnexpandedParameterPack> &Unexpanded) {
399 CollectUnexpandedParameterPacksVisitor(Unexpanded)
531 ArrayRef<UnexpandedParameterPack> Unexpanded,
539 for (ArrayRef<UnexpandedParameterPack>::iterator i = Unexpanded.begin(),
540 end = Unexpanded.end();
640 SmallVector<UnexpandedParameterPack, 2> Unexpanded;
641 CollectUnexpandedParameterPacksVisitor(Unexpanded).TraverseType(Pattern);
644 for (unsigned I = 0, N = Unexpanded.size(); I != N; ++I) {
650 = Unexpanded[I].first.dyn_cast<const TemplateTypeParmType *>()) {
654 NamedDecl *ND = Unexpanded[I].first.get<NamedDecl *>();
661 Unexpanded[I].first.get<NamedDecl *>());
663 // The pattern refers to an unexpanded pack. We're not ready to expand