Skip to content

Commit 3aa3325

Browse files
committed
Sema: Sink DiscriminatorFinder down into DebuggerTestingTransform
1 parent 6e5958f commit 3aa3325

File tree

3 files changed

+29
-33
lines changed

3 files changed

+29
-33
lines changed

lib/Sema/CodeSynthesis.cpp

Lines changed: 0 additions & 19 deletions
Original file line numberDiff line numberDiff line change
@@ -1414,22 +1414,3 @@ void swift::addFixedLayoutAttr(NominalTypeDecl *nominal) {
14141414
// Add `@_fixed_layout` to the nominal.
14151415
nominal->getAttrs().add(new (C) FixedLayoutAttr(/*Implicit*/ true));
14161416
}
1417-
1418-
Expr *DiscriminatorFinder::walkToExprPost(Expr *E) {
1419-
auto *ACE = dyn_cast<AbstractClosureExpr>(E);
1420-
if (!ACE)
1421-
return E;
1422-
1423-
unsigned Discriminator = ACE->getDiscriminator();
1424-
assert(Discriminator != AbstractClosureExpr::InvalidDiscriminator &&
1425-
"Existing closures should have valid discriminators");
1426-
if (Discriminator >= NextDiscriminator)
1427-
NextDiscriminator = Discriminator + 1;
1428-
return E;
1429-
}
1430-
1431-
unsigned DiscriminatorFinder::getNextDiscriminator() {
1432-
if (NextDiscriminator == AbstractClosureExpr::InvalidDiscriminator)
1433-
llvm::report_fatal_error("Out of valid closure discriminators");
1434-
return NextDiscriminator++;
1435-
}

lib/Sema/CodeSynthesis.h

Lines changed: 0 additions & 14 deletions
Original file line numberDiff line numberDiff line change
@@ -76,20 +76,6 @@ bool hasLetStoredPropertyWithInitialValue(NominalTypeDecl *nominal);
7676
/// Add `@_fixed_layout` attribute to the nominal type, if possible.
7777
void addFixedLayoutAttr(NominalTypeDecl *nominal);
7878

79-
/// Find available closure discriminators.
80-
///
81-
/// The parser typically takes care of assigning unique discriminators to
82-
/// closures, but the parser is unavailable during semantic analysis.
83-
class DiscriminatorFinder : public ASTWalker {
84-
unsigned NextDiscriminator = 0;
85-
86-
public:
87-
Expr *walkToExprPost(Expr *E) override;
88-
89-
// Get the next available closure discriminator.
90-
unsigned getNextDiscriminator();
91-
};
92-
9379
} // end namespace swift
9480

9581
#endif

lib/Sema/DebuggerTestingTransform.cpp

Lines changed: 29 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -34,6 +34,35 @@ using namespace swift;
3434

3535
namespace {
3636

37+
/// Find available closure discriminators.
38+
///
39+
/// The parser typically takes care of assigning unique discriminators to
40+
/// closures, but the parser is unavailable during semantic analysis.
41+
class DiscriminatorFinder : public ASTWalker {
42+
unsigned NextDiscriminator = 0;
43+
44+
public:
45+
Expr *walkToExprPost(Expr *E) override {
46+
auto *ACE = dyn_cast<AbstractClosureExpr>(E);
47+
if (!ACE)
48+
return E;
49+
50+
unsigned Discriminator = ACE->getDiscriminator();
51+
assert(Discriminator != AbstractClosureExpr::InvalidDiscriminator &&
52+
"Existing closures should have valid discriminators");
53+
if (Discriminator >= NextDiscriminator)
54+
NextDiscriminator = Discriminator + 1;
55+
return E;
56+
}
57+
58+
// Get the next available closure discriminator.
59+
unsigned getNextDiscriminator() {
60+
if (NextDiscriminator == AbstractClosureExpr::InvalidDiscriminator)
61+
llvm::report_fatal_error("Out of valid closure discriminators");
62+
return NextDiscriminator++;
63+
}
64+
};
65+
3766
/// Instrument decls with sanity-checks which the debugger can evaluate.
3867
class DebuggerTestingTransform : public ASTWalker {
3968
ASTContext &Ctx;

0 commit comments

Comments
 (0)