Skip to content

Commit 00e6ae1

Browse files
committed
consolidate func & subscript signature validation
1 parent 1060d1a commit 00e6ae1

File tree

4 files changed

+129
-299
lines changed

4 files changed

+129
-299
lines changed

lib/Sema/TypeCheckDecl.cpp

Lines changed: 4 additions & 13 deletions
Original file line numberDiff line numberDiff line change
@@ -3939,16 +3939,7 @@ void TypeChecker::validateDecl(ValueDecl *D) {
39393939
}
39403940
}
39413941

3942-
// If we have generic parameters, check the generic signature now.
3943-
if (FD->getGenericParams() || !isa<AccessorDecl>(FD)) {
3944-
validateGenericFuncSignature(FD);
3945-
} else {
3946-
// We've inherited all of the type information already.
3947-
FD->setGenericEnvironment(
3948-
FD->getDeclContext()->getGenericEnvironmentOfContext());
3949-
3950-
FD->computeType();
3951-
}
3942+
validateGenericFuncOrSubscriptSignature(FD, FD, FD);
39523943

39533944
if (!isa<AccessorDecl>(FD) || cast<AccessorDecl>(FD)->isGetter()) {
39543945
auto *TyR = getTypeLocForFunctionResult(FD).getTypeRepr();
@@ -4079,7 +4070,7 @@ void TypeChecker::validateDecl(ValueDecl *D) {
40794070
}
40804071
}
40814072

4082-
validateGenericFuncSignature(CD);
4073+
validateGenericFuncOrSubscriptSignature(CD, CD, CD);
40834074

40844075
// We want the constructor to be available for name lookup as soon
40854076
// as it has a valid interface type.
@@ -4103,7 +4094,7 @@ void TypeChecker::validateDecl(ValueDecl *D) {
41034094

41044095
checkDeclAttributesEarly(DD);
41054096

4106-
validateGenericFuncSignature(DD);
4097+
validateGenericFuncOrSubscriptSignature(DD, DD, DD);
41074098

41084099
DD->setSignatureIsValidated();
41094100

@@ -4116,7 +4107,7 @@ void TypeChecker::validateDecl(ValueDecl *D) {
41164107

41174108
DeclValidationRAII IBV(SD);
41184109

4119-
validateGenericSubscriptSignature(SD);
4110+
validateGenericFuncOrSubscriptSignature(SD, SD, SD);
41204111

41214112
SD->setSignatureIsValidated();
41224113

0 commit comments

Comments
 (0)