Skip to content

Commit 3e76ea7

Browse files
committed
Add the "cascading" bit to Reference
We'll be able to delete this once we cut over to private dependencies
1 parent d5d3ff9 commit 3e76ea7

File tree

2 files changed

+29
-20
lines changed

2 files changed

+29
-20
lines changed

include/swift/AST/EvaluatorDependencies.h

Lines changed: 15 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -123,38 +123,41 @@ struct DependencyCollector {
123123

124124
NominalTypeDecl *subject;
125125
DeclBaseName name;
126+
bool cascades;
126127

127128
private:
128-
Reference(Kind kind, NominalTypeDecl *subject, DeclBaseName name)
129-
: kind(kind), subject(subject), name(name) {}
129+
Reference(Kind kind, NominalTypeDecl *subject, DeclBaseName name,
130+
bool cascades)
131+
: kind(kind), subject(subject), name(name), cascades(cascades) {}
130132

131133
public:
132134
static Reference empty() {
133135
return {Kind::Empty, llvm::DenseMapInfo<NominalTypeDecl *>::getEmptyKey(),
134-
llvm::DenseMapInfo<DeclBaseName>::getEmptyKey()};
136+
llvm::DenseMapInfo<DeclBaseName>::getEmptyKey(), false};
135137
}
136138

137139
static Reference tombstone() {
138140
return {Kind::Tombstone,
139141
llvm::DenseMapInfo<NominalTypeDecl *>::getTombstoneKey(),
140-
llvm::DenseMapInfo<DeclBaseName>::getTombstoneKey()};
142+
llvm::DenseMapInfo<DeclBaseName>::getTombstoneKey(), false};
141143
}
142144

143145
public:
144-
static Reference usedMember(NominalTypeDecl *subject, DeclBaseName name) {
145-
return {Kind::UsedMember, subject, name};
146+
static Reference usedMember(NominalTypeDecl *subject, DeclBaseName name,
147+
bool cascades) {
148+
return {Kind::UsedMember, subject, name, cascades};
146149
}
147150

148-
static Reference potentialMember(NominalTypeDecl *subject) {
149-
return {Kind::PotentialMember, subject, DeclBaseName()};
151+
static Reference potentialMember(NominalTypeDecl *subject, bool cascades) {
152+
return {Kind::PotentialMember, subject, DeclBaseName(), cascades};
150153
}
151154

152-
static Reference topLevel(DeclBaseName name) {
153-
return {Kind::TopLevel, nullptr, name};
155+
static Reference topLevel(DeclBaseName name, bool cascades) {
156+
return {Kind::TopLevel, nullptr, name, cascades};
154157
}
155158

156-
static Reference dynamic(DeclBaseName name) {
157-
return {Kind::Dynamic, nullptr, name};
159+
static Reference dynamic(DeclBaseName name, bool cascades) {
160+
return {Kind::Dynamic, nullptr, name, cascades};
158161
}
159162

160163
public:

lib/AST/Evaluator.cpp

Lines changed: 14 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -409,34 +409,40 @@ void evaluator::DependencyCollector::addUsedMember(NominalTypeDecl *subject,
409409
DeclBaseName name) {
410410
if (parent.mode ==
411411
DependencyRecorder::Mode::ExperimentalPrivateDependencies) {
412-
scratch.insert(Reference::usedMember(subject, name));
412+
scratch.insert(
413+
Reference::usedMember(subject, name, parent.isActiveSourceCascading()));
413414
}
414-
return parent.realize(Reference::usedMember(subject, name));
415+
return parent.realize(
416+
Reference::usedMember(subject, name, parent.isActiveSourceCascading()));
415417
}
416418

417419
void evaluator::DependencyCollector::addPotentialMember(
418420
NominalTypeDecl *subject) {
419421
if (parent.mode ==
420422
DependencyRecorder::Mode::ExperimentalPrivateDependencies) {
421-
scratch.insert(Reference::potentialMember(subject));
423+
scratch.insert(
424+
Reference::potentialMember(subject, parent.isActiveSourceCascading()));
422425
}
423-
return parent.realize(Reference::potentialMember(subject));
426+
return parent.realize(
427+
Reference::potentialMember(subject, parent.isActiveSourceCascading()));
424428
}
425429

426430
void evaluator::DependencyCollector::addTopLevelName(DeclBaseName name) {
427431
if (parent.mode ==
428432
DependencyRecorder::Mode::ExperimentalPrivateDependencies) {
429-
scratch.insert(Reference::topLevel(name));
433+
scratch.insert(Reference::topLevel(name, parent.isActiveSourceCascading()));
430434
}
431-
return parent.realize(Reference::topLevel(name));
435+
return parent.realize(
436+
Reference::topLevel(name, parent.isActiveSourceCascading()));
432437
}
433438

434439
void evaluator::DependencyCollector::addDynamicLookupName(DeclBaseName name) {
435440
if (parent.mode ==
436441
DependencyRecorder::Mode::ExperimentalPrivateDependencies) {
437-
scratch.insert(Reference::dynamic(name));
442+
scratch.insert(Reference::dynamic(name, parent.isActiveSourceCascading()));
438443
}
439-
return parent.realize(Reference::dynamic(name));
444+
return parent.realize(
445+
Reference::dynamic(name, parent.isActiveSourceCascading()));
440446
}
441447

442448
void evaluator::DependencyRecorder::record(

0 commit comments

Comments
 (0)