Skip to content

Commit fe8fd91

Browse files
committed
[AST] NFC: Fold PackConformance::isInvalid into ProtocolConformanceRef::isInvalid
Instead of making callers responsible for that (like in other cases), let's fold the code check `isInvalid` to make mistakes less likely.
1 parent 658f0ea commit fe8fd91

File tree

4 files changed

+13
-11
lines changed

4 files changed

+13
-11
lines changed

include/swift/AST/ProtocolConformanceRef.h

Lines changed: 1 addition & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -89,9 +89,7 @@ class ProtocolConformanceRef {
8989
static ProtocolConformanceRef forMissingOrInvalid(
9090
Type type, ProtocolDecl *proto);
9191

92-
bool isInvalid() const {
93-
return !Union;
94-
}
92+
bool isInvalid() const;
9593

9694
explicit operator bool() const { return !isInvalid(); }
9795

lib/AST/Module.cpp

Lines changed: 2 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -1827,11 +1827,8 @@ static ProtocolConformanceRef getPackTypeConformance(
18271827
patternConformances.push_back(patternConformance);
18281828
}
18291829

1830-
auto *conformance = PackConformance::get(type, protocol, patternConformances);
1831-
if (conformance->isInvalid())
1832-
return ProtocolConformanceRef::forInvalid();
1833-
1834-
return ProtocolConformanceRef(conformance);
1830+
return ProtocolConformanceRef(
1831+
PackConformance::get(type, protocol, patternConformances));
18351832
}
18361833

18371834
ProtocolConformanceRef

lib/AST/PackConformance.cpp

Lines changed: 0 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -249,9 +249,6 @@ PackConformance::subst(InFlightSubstitution &IFS) const {
249249

250250
auto substConformance = PackConformance::get(substConformingType, Protocol,
251251
expander.substConformances);
252-
if (substConformance->isInvalid())
253-
return ProtocolConformanceRef::forInvalid();
254-
255252
return ProtocolConformanceRef(substConformance);
256253
}
257254

lib/AST/ProtocolConformanceRef.cpp

Lines changed: 10 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -42,6 +42,16 @@ ProtocolConformanceRef::ProtocolConformanceRef(ProtocolDecl *protocol,
4242
}
4343
}
4444

45+
bool ProtocolConformanceRef::isInvalid() const {
46+
if (!Union)
47+
return true;
48+
49+
if (auto pack = Union.dyn_cast<PackConformance *>())
50+
return pack->isInvalid();
51+
52+
return false;
53+
}
54+
4555
ProtocolDecl *ProtocolConformanceRef::getRequirement() const {
4656
assert(!isInvalid());
4757

0 commit comments

Comments
 (0)