@@ -102,16 +102,14 @@ using AssociativityCacheType =
102
102
struct OverrideSignatureKey {
103
103
GenericSignature baseMethodSig;
104
104
GenericSignature derivedMethodSig;
105
- Type superclassTy, subclassTy ;
105
+ Decl *subclassDecl ;
106
106
107
107
OverrideSignatureKey (GenericSignature baseMethodSignature,
108
108
GenericSignature derivedMethodSignature,
109
- Type superclassType,
110
- Type subclassType)
109
+ Decl *subclassDecl)
111
110
: baseMethodSig(baseMethodSignature),
112
111
derivedMethodSig (derivedMethodSignature),
113
- superclassTy(superclassType),
114
- subclassTy(subclassType) {}
112
+ subclassDecl(subclassDecl) {}
115
113
};
116
114
117
115
namespace llvm {
@@ -123,31 +121,27 @@ template <> struct DenseMapInfo<OverrideSignatureKey> {
123
121
const OverrideSignatureKey rhs) {
124
122
return lhs.baseMethodSig .getPointer () == rhs.baseMethodSig .getPointer () &&
125
123
lhs.derivedMethodSig .getPointer () == rhs.derivedMethodSig .getPointer () &&
126
- lhs.superclassTy .getPointer () == rhs.superclassTy .getPointer () &&
127
- lhs.subclassTy .getPointer () == rhs.subclassTy .getPointer ();
124
+ lhs.subclassDecl == rhs.subclassDecl ;
128
125
}
129
126
130
127
static inline OverrideSignatureKey getEmptyKey () {
131
128
return OverrideSignatureKey (DenseMapInfo<GenericSignature>::getEmptyKey (),
132
129
DenseMapInfo<GenericSignature>::getEmptyKey (),
133
- DenseMapInfo<Type>::getEmptyKey (),
134
- DenseMapInfo<Type>::getEmptyKey ());
130
+ DenseMapInfo<Decl *>::getEmptyKey ());
135
131
}
136
132
137
133
static inline OverrideSignatureKey getTombstoneKey () {
138
134
return OverrideSignatureKey (
139
135
DenseMapInfo<GenericSignature>::getTombstoneKey (),
140
136
DenseMapInfo<GenericSignature>::getTombstoneKey (),
141
- DenseMapInfo<Type>::getTombstoneKey (),
142
- DenseMapInfo<Type>::getTombstoneKey ());
137
+ DenseMapInfo<Decl *>::getTombstoneKey ());
143
138
}
144
139
145
140
static unsigned getHashValue (const OverrideSignatureKey &Val) {
146
141
return hash_combine (
147
142
DenseMapInfo<GenericSignature>::getHashValue (Val.baseMethodSig ),
148
143
DenseMapInfo<GenericSignature>::getHashValue (Val.derivedMethodSig ),
149
- DenseMapInfo<Type>::getHashValue (Val.superclassTy ),
150
- DenseMapInfo<Type>::getHashValue (Val.subclassTy ));
144
+ DenseMapInfo<Decl *>::getHashValue (Val.subclassDecl ));
151
145
}
152
146
};
153
147
} // namespace llvm
@@ -4500,8 +4494,7 @@ ASTContext::getOverrideGenericSignature(const ValueDecl *base,
4500
4494
4501
4495
auto key = OverrideSignatureKey (baseGenericSig,
4502
4496
derivedGenericSig,
4503
- derivedClass->getSuperclass (),
4504
- derivedClass->getDeclaredInterfaceType ());
4497
+ derivedClass);
4505
4498
4506
4499
if (getImpl ().overrideSigCache .find (key) !=
4507
4500
getImpl ().overrideSigCache .end ()) {
0 commit comments