@@ -1739,8 +1739,7 @@ namespace {
17391739 }
17401740
17411741 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) ||
17441743 isa<FloatLiteralExpr>(expr);
17451744 }
17461745
@@ -1818,16 +1817,22 @@ namespace {
18181817 auto keyTyvar2 = tty2->getElementTypes ()[0 ]->
18191818 getAs<TypeVariableType>();
18201819
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,
18221826 keyTyvar1, keyTyvar2);
1827+ }
18231828
18241829 auto valueTyvar1 = tty1->getElementTypes ()[1 ]->
18251830 getAs<TypeVariableType>();
18261831 auto valueTyvar2 = tty2->getElementTypes ()[1 ]->
18271832 getAs<TypeVariableType>();
18281833
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 ];
18311836
18321837 if (elemExpr1->getKind () == elemExpr2->getKind () &&
18331838 isMergeableValueKind (elemExpr1)) {
0 commit comments