@@ -1826,6 +1826,33 @@ static void highlightOffendingType(TypeChecker &TC, InFlightDiagnostic &diag,
1826
1826
}
1827
1827
}
1828
1828
1829
+ static void checkRequirementAccess (TypeChecker &TC,
1830
+ ArrayRef<RequirementRepr> requirements,
1831
+ const DeclContext *useDC,
1832
+ AccessScope accessScope,
1833
+ llvm::function_ref<CheckTypeAccessCallback> diagnose) {
1834
+ for (auto &requirement : requirements) {
1835
+ switch (requirement.getKind ()) {
1836
+ case RequirementReprKind::TypeConstraint:
1837
+ checkTypeAccessImpl (TC, requirement.getSubjectLoc (),
1838
+ accessScope, useDC, diagnose);
1839
+ checkTypeAccessImpl (TC, requirement.getConstraintLoc (),
1840
+ accessScope, useDC, diagnose);
1841
+ break ;
1842
+ case RequirementReprKind::LayoutConstraint:
1843
+ checkTypeAccessImpl (TC, requirement.getSubjectLoc (),
1844
+ accessScope, useDC, diagnose);
1845
+ break ;
1846
+ case RequirementReprKind::SameType:
1847
+ checkTypeAccessImpl (TC, requirement.getFirstTypeLoc (),
1848
+ accessScope, useDC, diagnose);
1849
+ checkTypeAccessImpl (TC, requirement.getSecondTypeLoc (),
1850
+ accessScope, useDC, diagnose);
1851
+ break ;
1852
+ }
1853
+ }
1854
+ }
1855
+
1829
1856
static void checkGenericParamAccess (TypeChecker &TC,
1830
1857
const GenericParamList *params,
1831
1858
const Decl *owner,
@@ -1869,31 +1896,9 @@ static void checkGenericParamAccess(TypeChecker &TC,
1869
1896
}
1870
1897
callbackACEK = ACEK::Requirement;
1871
1898
1872
- for (auto &requirement : params->getRequirements ()) {
1873
- switch (requirement.getKind ()) {
1874
- case RequirementReprKind::TypeConstraint:
1875
- checkTypeAccessImpl (TC, requirement.getSubjectLoc (),
1876
- accessScope, owner->getDeclContext (),
1877
- callback);
1878
- checkTypeAccessImpl (TC, requirement.getConstraintLoc (),
1879
- accessScope, owner->getDeclContext (),
1880
- callback);
1881
- break ;
1882
- case RequirementReprKind::LayoutConstraint:
1883
- checkTypeAccessImpl (TC, requirement.getSubjectLoc (),
1884
- accessScope, owner->getDeclContext (),
1885
- callback);
1886
- break ;
1887
- case RequirementReprKind::SameType:
1888
- checkTypeAccessImpl (TC, requirement.getFirstTypeLoc (),
1889
- accessScope, owner->getDeclContext (),
1890
- callback);
1891
- checkTypeAccessImpl (TC, requirement.getSecondTypeLoc (),
1892
- accessScope, owner->getDeclContext (),
1893
- callback);
1894
- break ;
1895
- }
1896
- }
1899
+ checkRequirementAccess (TC, params->getRequirements (),
1900
+ owner->getDeclContext (), accessScope,
1901
+ callback);
1897
1902
1898
1903
if (minAccessScope.isPublic ())
1899
1904
return ;
0 commit comments