Thank you!
So we are just ignoring ConverisonPair and rediscovering conversion logic in the SILGen, right? Shall I remove KeyConversion and ValueConversion from CollectionUpcastConversionExpr?
/// Creates a function that converts one value to another.
/// The conversion has to be something we can do with an implicit conversion,
/// so basically a subtype relationship.
ManagedValue SILGenFunction::createValueConversionFunction(
What about @preconcurrency conversions? That are not valid implicit conversions. Maybe they could be if @preconcurrency attribute is part of the function type.