Skip to content

Commit 1143648

Browse files
committed
[ConstraintSystem] Adjust ConformanceRequirement locator to carry ProtocolConformance
1 parent fc05d4a commit 1143648

File tree

2 files changed

+9
-6
lines changed

2 files changed

+9
-6
lines changed

include/swift/Sema/ConstraintLocator.h

Lines changed: 5 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -39,6 +39,7 @@ class TypeLoc;
3939
class VarDecl;
4040
class Pattern;
4141
class SourceManager;
42+
class ProtocolConformance;
4243

4344
namespace constraints {
4445

@@ -763,13 +764,13 @@ class LocatorPathElt::ArgumentAttribute final : public StoredIntegerElement<1> {
763764
};
764765

765766
class LocatorPathElt::ConformanceRequirement final
766-
: public StoredPointerElement<ProtocolDecl> {
767+
: public StoredPointerElement<ProtocolConformance> {
767768
public:
768-
ConformanceRequirement(ProtocolDecl *protocol)
769+
ConformanceRequirement(ProtocolConformance *conformance)
769770
: StoredPointerElement(PathElementKind::ConformanceRequirement,
770-
protocol) {}
771+
conformance) {}
771772

772-
ProtocolDecl *getRequirement() const { return getStoredPointer(); }
773+
ProtocolConformance *getConformance() const { return getStoredPointer(); }
773774

774775
static bool classof(const LocatorPathElt *elt) {
775776
return elt->getKind() == ConstraintLocator::ConformanceRequirement;

lib/Sema/ConstraintLocator.cpp

Lines changed: 4 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -18,6 +18,7 @@
1818
#include "swift/AST/Decl.h"
1919
#include "swift/AST/Expr.h"
2020
#include "swift/AST/Types.h"
21+
#include "swift/AST/ProtocolConformance.h"
2122
#include "swift/Sema/ConstraintLocator.h"
2223
#include "swift/Sema/ConstraintSystem.h"
2324
#include "llvm/ADT/StringExtras.h"
@@ -399,9 +400,10 @@ void ConstraintLocator::dump(SourceManager *sm, raw_ostream &out) const {
399400
}
400401

401402
case ConformanceRequirement: {
402-
auto reqElt = elt.castTo<LocatorPathElt::ConformanceRequirement>();
403+
auto *conformance =
404+
elt.castTo<LocatorPathElt::ConformanceRequirement>().getConformance();
403405
out << "conformance requirement (";
404-
reqElt.getRequirement()->dumpRef(out);
406+
conformance->getProtocol()->dumpRef(out);
405407
out << ")";
406408
break;
407409
}

0 commit comments

Comments
 (0)