Skip to content

Commit d067a31

Browse files
committed
Sema: Extract checkRequirementAccess() from checkGenericParamAccess()
1 parent 25a0e34 commit d067a31

File tree

1 file changed

+30
-25
lines changed

1 file changed

+30
-25
lines changed

lib/Sema/TypeCheckDecl.cpp

Lines changed: 30 additions & 25 deletions
Original file line numberDiff line numberDiff line change
@@ -1826,6 +1826,33 @@ static void highlightOffendingType(TypeChecker &TC, InFlightDiagnostic &diag,
18261826
}
18271827
}
18281828

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+
18291856
static void checkGenericParamAccess(TypeChecker &TC,
18301857
const GenericParamList *params,
18311858
const Decl *owner,
@@ -1869,31 +1896,9 @@ static void checkGenericParamAccess(TypeChecker &TC,
18691896
}
18701897
callbackACEK = ACEK::Requirement;
18711898

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);
18971902

18981903
if (minAccessScope.isPublic())
18991904
return;

0 commit comments

Comments
 (0)