Skip to content

Commit 47b6a76

Browse files
authored
Merge pull request #41255 from slavapestov/fix-gsb-crash-rdar88474300
GSB: Fix null pointer dereference in involvesNonSelfSubjectTypes() [5.6]
2 parents 95b2f80 + b5f3b9f commit 47b6a76

File tree

2 files changed

+16
-1
lines changed

2 files changed

+16
-1
lines changed

lib/AST/GenericSignatureBuilder.cpp

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -5834,7 +5834,7 @@ void GenericSignatureBuilder::checkIfRequirementCanBeDerived(
58345834
}
58355835

58365836
static bool involvesNonSelfSubjectTypes(const RequirementSource *source) {
5837-
while (source->kind != RequirementSource::RequirementSignatureSelf) {
5837+
while (source && source->kind != RequirementSource::RequirementSignatureSelf) {
58385838
if (source->isProtocolRequirement() &&
58395839
!source->getStoredType()->is<GenericTypeParamType>())
58405840
return true;

test/Generics/sr15792.swift

Lines changed: 15 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,15 @@
1+
// RUN: %target-typecheck-verify-swift %s
2+
3+
protocol Collection {
4+
associatedtype SubSequence: Collection
5+
}
6+
7+
protocol BidirectionalCollection: Collection where SubSequence: BidirectionalCollection {}
8+
9+
struct Slice<Base : Collection> : Collection {
10+
typealias SubSequence = Slice<Base>
11+
}
12+
13+
extension Slice: BidirectionalCollection where Base : BidirectionalCollection {}
14+
15+
protocol SlicedCollection: BidirectionalCollection where SubSequence == Slice<Self> {}

0 commit comments

Comments
 (0)