Skip to content

Commit fb0a75f

Browse files
committed
[AST] NFC: Introduce PatternBindingInitializer::create
1 parent 166d059 commit fb0a75f

File tree

4 files changed

+10
-10
lines changed

4 files changed

+10
-10
lines changed

include/swift/AST/Initializer.h

Lines changed: 5 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -84,13 +84,16 @@ class PatternBindingInitializer : public Initializer {
8484
SelfParam = nullptr;
8585
}
8686

87-
public:
8887
explicit PatternBindingInitializer(DeclContext *parent)
8988
: Initializer(InitializerKind::PatternBinding, parent),
9089
Binding(nullptr), SelfParam(nullptr) {
9190
SpareBits = 0;
9291
}
93-
92+
93+
public:
94+
static PatternBindingInitializer *create(DeclContext *parent) {
95+
return new (parent->getASTContext()) PatternBindingInitializer(parent);
96+
}
9497

9598
void setBinding(PatternBindingDecl *binding, unsigned bindingIndex) {
9699
setParent(binding->getDeclContext());

lib/AST/ASTBridging.cpp

Lines changed: 1 addition & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -343,8 +343,7 @@ bool BridgedDeclContext_isLocalContext(BridgedDeclContext cDeclContext) {
343343

344344
BridgedPatternBindingInitializer
345345
BridgedPatternBindingInitializer_create(BridgedDeclContext cDeclContext) {
346-
auto *dc = cDeclContext.unbridged();
347-
return new (dc->getASTContext()) PatternBindingInitializer(dc);
346+
return PatternBindingInitializer::create(cDeclContext.unbridged());
348347
}
349348

350349
BridgedDeclContext BridgedPatternBindingInitializer_asDeclContext(

lib/AST/Decl.cpp

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1931,7 +1931,7 @@ PatternBindingDecl::create(ASTContext &Ctx, SourceLoc StaticLoc,
19311931
// closures/decls present in the initialization expr. This currently should
19321932
// only affect implicit code though.
19331933
if (!initContext && !Parent->isLocalContext())
1934-
initContext = new (Ctx) PatternBindingInitializer(Parent);
1934+
initContext = PatternBindingInitializer::create(Parent);
19351935

19361936
if (initContext)
19371937
initContext->setBinding(PBD, idx);

lib/Parse/ParseDecl.cpp

Lines changed: 3 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -4173,10 +4173,8 @@ ParserResult<CustomAttr> Parser::parseCustomAttribute(
41734173
// initializers.
41744174
llvm::Optional<ParseFunctionBody> initParser;
41754175
if (!CurDeclContext->isLocalContext()) {
4176-
if (!initContext) {
4177-
initContext =
4178-
new (Context) PatternBindingInitializer(CurDeclContext);
4179-
}
4176+
if (!initContext)
4177+
initContext = PatternBindingInitializer::create(CurDeclContext);
41804178

41814179
initParser.emplace(*this, initContext);
41824180
}
@@ -8339,7 +8337,7 @@ Parser::parseDeclVar(ParseDeclOptions Flags,
83398337
// for the PBD we'll eventually create. This allows us to have reasonable
83408338
// DeclContexts for any closures that may live inside of initializers.
83418339
if (!CurDeclContext->isLocalContext() && !topLevelDecl && !initContext)
8342-
initContext = new (Context) PatternBindingInitializer(CurDeclContext);
8340+
initContext = PatternBindingInitializer::create(CurDeclContext);
83438341

83448342
// If we're using a local context (either a TopLevelCodeDecl or a
83458343
// PatternBindingContext) install it now so that CurDeclContext is set

0 commit comments

Comments
 (0)