@@ -692,12 +692,12 @@ bool swift::rewriting::diagnoseRequirementErrors(
692
692
693
693
switch (error.kind ) {
694
694
case RequirementError::Kind::InvalidTypeRequirement: {
695
+ if (error.requirement .hasError ())
696
+ break ;
697
+
695
698
Type subjectType = error.requirement .getFirstType ();
696
699
Type constraint = error.requirement .getSecondType ();
697
700
698
- if (subjectType->hasError () || constraint->hasError ())
699
- break ;
700
-
701
701
ctx.Diags .diagnose (loc, diag::requires_conformance_nonprotocol,
702
702
subjectType, constraint);
703
703
diagnosedError = true ;
@@ -726,10 +726,11 @@ bool swift::rewriting::diagnoseRequirementErrors(
726
726
}
727
727
728
728
case RequirementError::Kind::InvalidRequirementSubject: {
729
- auto subjectType = error.requirement .getFirstType ();
730
- if (subjectType->hasError ())
729
+ if (error.requirement .hasError ())
731
730
break ;
732
731
732
+ auto subjectType = error.requirement .getFirstType ();
733
+
733
734
ctx.Diags .diagnose (loc, diag::requires_not_suitable_archetype,
734
735
subjectType);
735
736
diagnosedError = true ;
@@ -740,24 +741,16 @@ bool swift::rewriting::diagnoseRequirementErrors(
740
741
auto requirement = error.requirement ;
741
742
auto conflict = error.conflictingRequirement ;
742
743
743
- if (requirement.getFirstType ()->hasError () ||
744
- (requirement.getKind () != RequirementKind::Layout &&
745
- requirement.getSecondType ()->hasError ())) {
746
- // Don't emit a cascading error.
744
+ if (requirement.hasError ())
747
745
break ;
748
- }
749
746
750
747
if (!conflict) {
751
748
ctx.Diags .diagnose (loc, diag::requires_same_concrete_type,
752
749
requirement.getFirstType (),
753
750
requirement.getSecondType ());
754
751
} else {
755
- if (conflict->getFirstType ()->hasError () ||
756
- (conflict->getKind () != RequirementKind::Layout &&
757
- conflict->getSecondType ()->hasError ())) {
758
- // Don't emit a cascading error.
752
+ if (conflict->hasError ())
759
753
break ;
760
- }
761
754
762
755
auto options = PrintOptions::forDiagnosticArguments ();
763
756
std::string requirements;
@@ -778,12 +771,8 @@ bool swift::rewriting::diagnoseRequirementErrors(
778
771
779
772
case RequirementError::Kind::RedundantRequirement: {
780
773
auto requirement = error.requirement ;
781
- if (requirement.getFirstType ()->hasError () ||
782
- (requirement.getKind () != RequirementKind::Layout &&
783
- requirement.getSecondType ()->hasError ())) {
784
- // Don't emit a cascading error.
774
+ if (requirement.hasError ())
785
775
break ;
786
- }
787
776
788
777
switch (requirement.getKind ()) {
789
778
case RequirementKind::SameType:
0 commit comments