@@ -611,10 +611,11 @@ GenericSignatureErrors RewriteSystem::getErrors() const {
611
611
if (!isInMinimizationDomain (rule.getLHS ().getRootProtocol ()))
612
612
continue ;
613
613
614
- if (!rule.isRedundant () &&
615
- !rule.isProtocolTypeAliasRule () &&
616
- rule.containsNameSymbols ())
617
- result |= GenericSignatureErrorFlags::HasInvalidRequirements;
614
+ if (!rule.isRedundant ()) {
615
+ if (!rule.isProtocolTypeAliasRule () &&
616
+ rule.containsNameSymbols ())
617
+ result |= GenericSignatureErrorFlags::HasInvalidRequirements;
618
+ }
618
619
619
620
if (rule.isRecursive ())
620
621
result |= GenericSignatureErrorFlags::HasInvalidRequirements;
@@ -624,12 +625,9 @@ GenericSignatureErrors RewriteSystem::getErrors() const {
624
625
if (property->getKind () == Symbol::Kind::ConcreteConformance)
625
626
result |= GenericSignatureErrorFlags::HasConcreteConformances;
626
627
627
- if (property->hasSubstitutions ()) {
628
- for (auto t : property->getSubstitutions ()) {
629
- if (t.containsNameSymbols ())
630
- result |= GenericSignatureErrorFlags::HasInvalidRequirements;
631
- }
632
- }
628
+ if (property->hasSubstitutions () &&
629
+ property->containsNameSymbols ())
630
+ result |= GenericSignatureErrorFlags::HasInvalidRequirements;
633
631
}
634
632
}
635
633
}
@@ -661,10 +659,20 @@ RewriteSystem::getMinimizedProtocolRules() const {
661
659
if (!isInMinimizationDomain (proto))
662
660
continue ;
663
661
664
- if (rule.isProtocolTypeAliasRule ())
662
+ if (rule.isProtocolTypeAliasRule ()) {
663
+ if (auto property = rule.isPropertyRule ()) {
664
+ if (property->containsNameSymbols ())
665
+ continue ;
666
+ } else if (rule.getRHS ().containsNameSymbols ()) {
667
+ continue ;
668
+ }
665
669
rules[proto].TypeAliases .push_back (ruleID);
666
- else if (!rule.containsNameSymbols ())
670
+ } else {
671
+ if (rule.containsNameSymbols ())
672
+ continue ;
673
+
667
674
rules[proto].Requirements .push_back (ruleID);
675
+ }
668
676
}
669
677
670
678
return rules;
0 commit comments