@@ -1219,9 +1219,8 @@ void ConstraintSystem::recordOpenedTypes(
12191219 OpenedType* openedTypes
12201220 = Allocator.Allocate <OpenedType>(replacements.size ());
12211221 std::copy (replacements.begin (), replacements.end (), openedTypes);
1222- OpenedTypes.push_back ({ locatorPtr,
1223- llvm::makeArrayRef (openedTypes,
1224- replacements.size ()) });
1222+ OpenedTypes.insert (
1223+ {locatorPtr, llvm::makeArrayRef (openedTypes, replacements.size ())});
12251224}
12261225
12271226// / Determine how many levels of argument labels should be removed from the
@@ -1883,7 +1882,7 @@ ConstraintSystem::getTypeOfMemberReference(
18831882 }
18841883 } else if (baseObjTy->isExistentialType ()) {
18851884 auto openedArchetype = OpenedArchetypeType::get (baseObjTy);
1886- OpenedExistentialTypes.push_back (
1885+ OpenedExistentialTypes.insert (
18871886 {getConstraintLocator (locator), openedArchetype});
18881887 baseOpenedTy = openedArchetype;
18891888 }
@@ -5807,24 +5806,14 @@ getRequirementInfo(ConstraintSystem &cs, ConstraintLocator *reqLocator) {
58075806 auto newPath = path.drop_back (iter - path.rbegin () + 1 );
58085807 auto *baseLoc = cs.getConstraintLocator (reqLocator->getAnchor (), newPath);
58095808
5810- auto openedTypes = cs.getOpenedTypes ();
5811- auto substitutions = llvm::find_if (
5812- openedTypes,
5813- [&baseLoc](
5814- const std::pair<ConstraintLocator *, ArrayRef<OpenedType>> &entry) {
5815- return entry.first == baseLoc;
5816- });
5817-
5818- if (substitutions == openedTypes.end ())
5819- return None;
5820-
5809+ auto substitutions = cs.getOpenedTypes (baseLoc);
58215810 auto replacement =
5822- llvm::find_if (substitutions-> second , [&GP](const OpenedType &entry) {
5811+ llvm::find_if (substitutions, [&GP](const OpenedType &entry) {
58235812 auto *typeVar = entry.second ;
58245813 return typeVar->getImpl ().getGenericParameter () == GP;
58255814 });
58265815
5827- if (replacement == substitutions-> second .end ())
5816+ if (replacement == substitutions.end ())
58285817 return None;
58295818
58305819 auto *repr = cs.getRepresentative (replacement->second );
0 commit comments