static void revertDependentTypeLoc(TypeLoc &tl) { // If there's no type representation, there's nothing to revert. if (!tl.getTypeRepr()) return; // Don't revert an error type; we've already complained. if (tl.wasValidated() && tl.isError()) return; // Make sure we validate the type again. tl.setType(Type()); }
bool IndexSwiftASTWalker::passRelatedType(const TypeLoc &Ty) { if (IdentTypeRepr *T = dyn_cast_or_null<IdentTypeRepr>(Ty.getTypeRepr())) { auto Comps = T->getComponentRange(); if (auto NTD = dyn_cast_or_null<NominalTypeDecl>( Comps.back()->getBoundDecl())) { if (!passRelated(NTD, Comps.back()->getIdLoc())) return false; } return true; } if (Ty.getType()) { if (auto nominal = dyn_cast_or_null<NominalTypeDecl>( Ty.getType()->getDirectlyReferencedTypeDecl())) if (!passRelated(nominal, Ty.getLoc())) return false; } return true; }