@@ -1739,8 +1739,7 @@ namespace {
1739
1739
}
1740
1740
1741
1741
static bool isMergeableValueKind (Expr *expr) {
1742
- return isa<CollectionExpr>(expr) ||
1743
- isa<StringLiteralExpr>(expr) || isa<IntegerLiteralExpr>(expr) ||
1742
+ return isa<StringLiteralExpr>(expr) || isa<IntegerLiteralExpr>(expr) ||
1744
1743
isa<FloatLiteralExpr>(expr);
1745
1744
}
1746
1745
@@ -1818,16 +1817,22 @@ namespace {
1818
1817
auto keyTyvar2 = tty2->getElementTypes ()[0 ]->
1819
1818
getAs<TypeVariableType>();
1820
1819
1821
- mergedKey = mergeRepresentativeEquivalenceClasses (CS,
1820
+ auto keyExpr1 = cast<TupleExpr>(element1)->getElements ()[0 ];
1821
+ auto keyExpr2 = cast<TupleExpr>(element2)->getElements ()[0 ];
1822
+
1823
+ if (keyExpr1->getKind () == keyExpr2->getKind () &&
1824
+ isMergeableValueKind (keyExpr1)) {
1825
+ mergedKey = mergeRepresentativeEquivalenceClasses (CS,
1822
1826
keyTyvar1, keyTyvar2);
1827
+ }
1823
1828
1824
1829
auto valueTyvar1 = tty1->getElementTypes ()[1 ]->
1825
1830
getAs<TypeVariableType>();
1826
1831
auto valueTyvar2 = tty2->getElementTypes ()[1 ]->
1827
1832
getAs<TypeVariableType>();
1828
1833
1829
- auto elemExpr1 = dyn_cast <TupleExpr>(element1)->getElements ()[1 ];
1830
- auto elemExpr2 = dyn_cast <TupleExpr>(element2)->getElements ()[1 ];
1834
+ auto elemExpr1 = cast <TupleExpr>(element1)->getElements ()[1 ];
1835
+ auto elemExpr2 = cast <TupleExpr>(element2)->getElements ()[1 ];
1831
1836
1832
1837
if (elemExpr1->getKind () == elemExpr2->getKind () &&
1833
1838
isMergeableValueKind (elemExpr1)) {
0 commit comments