[IUO] Add a locator for the result of a cast to an IUO type.

Not used yet, so NFC.
This commit is contained in:
Mark Lacey
2017-12-12 10:57:07 -08:00
parent 4dbf89b91a
commit a93cde18c2
2 changed files with 10 additions and 0 deletions

View File

@@ -78,6 +78,7 @@ void ConstraintLocator::Profile(llvm::FoldingSetNodeID &id, Expr *anchor,
case KeyPathComponent:
case ConditionalRequirement:
case TypeParameterRequirement:
case ImplicitlyUnwrappedCoercionResult:
if (unsigned numValues = numNumericValuesInPathElement(elt.getKind())) {
id.AddInteger(elt.getValue());
if (numValues > 1)
@@ -248,6 +249,10 @@ void ConstraintLocator::dump(SourceManager *sm, raw_ostream &out) {
case TypeParameterRequirement:
out << "type parameter requirement #" << llvm::utostr(elt.getValue());
break;
case ImplicitlyUnwrappedCoercionResult:
out << "implictly unwrapped coercion result";
break;
}
}

View File

@@ -127,6 +127,9 @@ public:
ConditionalRequirement,
/// A single requirement placed on the type parameters.
TypeParameterRequirement,
/// \brief A coercion to an Optional type that can potentially be
/// force-unwrapped to the underlying type.
ImplicitlyUnwrappedCoercionResult,
};
/// \brief Determine the number of numeric values used for the given path
@@ -159,6 +162,7 @@ public:
case Requirement:
case Witness:
case OpenedGeneric:
case ImplicitlyUnwrappedCoercionResult:
return 0;
case GenericArgument:
@@ -221,6 +225,7 @@ public:
case KeyPathComponent:
case ConditionalRequirement:
case TypeParameterRequirement:
case ImplicitlyUnwrappedCoercionResult:
return 0;
case FunctionArgument: