Skip to content

Commit 5ad617c

Browse files
committed
[NFC] [ASTGen] Refactor attribute attachment
Create a method that is used to attach attributes to a decl instead of assigning them directly. This is a convenient place to add logic which processes attributes after the decl they’re attached to has been converted to AST.
1 parent 04a66e8 commit 5ad617c

File tree

2 files changed

+19
-15
lines changed

2 files changed

+19
-15
lines changed

lib/ASTGen/Sources/ASTGen/DeclAttrs.swift

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -22,6 +22,10 @@ extension ASTGenVisitor {
2222
var attributes: BridgedDeclAttributes
2323
var staticSpelling: BridgedStaticSpelling
2424
var staticLoc: BridgedSourceLoc
25+
26+
func attach(to decl: BridgedDecl) {
27+
decl.attrs = attributes
28+
}
2529
}
2630

2731
func generateDeclAttributes(_ node: some WithAttributesSyntax & WithModifiersSyntax, allowStatic: Bool) -> DeclAttributesResult {

lib/ASTGen/Sources/ASTGen/Decls.swift

Lines changed: 15 additions & 15 deletions
Original file line numberDiff line numberDiff line change
@@ -92,7 +92,7 @@ extension ASTGenVisitor {
9292
underlyingType: self.generate(type: node.initializer.value),
9393
genericWhereClause: self.generate(genericWhereClause: node.genericWhereClause)
9494
)
95-
decl.asDecl.attrs = attrs.attributes
95+
attrs.attach(to: decl.asDecl)
9696
return decl
9797
}
9898

@@ -114,7 +114,7 @@ extension ASTGenVisitor {
114114
end: node.memberBlock.rightBrace
115115
)
116116
)
117-
decl.asDecl.attrs = attrs.attributes
117+
attrs.attach(to: decl.asDecl)
118118

119119
self.withDeclContext(decl.asDeclContext) {
120120
decl.setParsedMembers(self.generate(memberBlockItemList: node.memberBlock.members))
@@ -141,7 +141,7 @@ extension ASTGenVisitor {
141141
end: node.memberBlock.rightBrace
142142
)
143143
)
144-
decl.asDecl.attrs = attrs.attributes
144+
attrs.attach(to: decl.asDecl)
145145

146146
self.withDeclContext(decl.asDeclContext) {
147147
decl.setParsedMembers(self.generate(memberBlockItemList: node.memberBlock.members))
@@ -169,7 +169,7 @@ extension ASTGenVisitor {
169169
),
170170
isActor: false
171171
)
172-
decl.asDecl.attrs = attrs.attributes
172+
attrs.attach(to: decl.asDecl)
173173

174174
self.withDeclContext(decl.asDeclContext) {
175175
decl.setParsedMembers(self.generate(memberBlockItemList: node.memberBlock.members))
@@ -197,7 +197,7 @@ extension ASTGenVisitor {
197197
),
198198
isActor: true
199199
)
200-
decl.asDecl.attrs = attrs.attributes
200+
attrs.attach(to: decl.asDecl)
201201

202202
self.withDeclContext(decl.asDeclContext) {
203203
decl.setParsedMembers(self.generate(memberBlockItemList: node.memberBlock.members))
@@ -227,7 +227,7 @@ extension ASTGenVisitor {
227227
end: node.memberBlock.rightBrace
228228
)
229229
)
230-
decl.asDecl.attrs = attrs.attributes
230+
attrs.attach(to: decl.asDecl)
231231

232232
self.withDeclContext(decl.asDeclContext) {
233233
decl.setParsedMembers(self.generate(memberBlockItemList: node.memberBlock.members))
@@ -250,7 +250,7 @@ extension ASTGenVisitor {
250250
defaultType: self.generate(type: node.initializer?.value),
251251
genericWhereClause: self.generate(genericWhereClause: node.genericWhereClause)
252252
)
253-
decl.asDecl.attrs = attrs.attributes
253+
attrs.attach(to: decl.asDecl)
254254
return decl
255255
}
256256
}
@@ -272,7 +272,7 @@ extension ASTGenVisitor {
272272
end: node.memberBlock.rightBrace
273273
)
274274
)
275-
decl.asDecl.attrs = attrs.attributes
275+
attrs.attach(to: decl.asDecl)
276276

277277
self.withDeclContext(decl.asDeclContext) {
278278
decl.setParsedMembers(self.generate(memberBlockItemList: node.memberBlock.members))
@@ -305,7 +305,7 @@ extension ASTGenVisitor {
305305
// All attributes goes to each element.
306306
let elements = node.elements.lazy.map({ elem -> BridgedEnumElementDecl in
307307
let elemDecl = self.generate(enumCaseElement: elem)
308-
elemDecl.asDecl.attrs = attrs.attributes
308+
attrs.attach(to: elemDecl.asDecl)
309309
return elemDecl
310310
})
311311
return .createParsed(
@@ -528,7 +528,7 @@ extension ASTGenVisitor {
528528
arrowLoc: self.generateSourceLoc(node.returnClause.arrow),
529529
returnType: self.generate(type: node.returnClause.type)
530530
)
531-
subscriptDecl.asDecl.attrs = attrs.attributes
531+
attrs.attach(to: subscriptDecl.asDecl)
532532

533533
if let accessors = node.accessorBlock {
534534
let storage = subscriptDecl.asAbstractStorageDecl
@@ -562,7 +562,7 @@ extension ASTGenVisitor {
562562
returnType: self.generate(type: node.signature.returnClause?.type),
563563
genericWhereClause: self.generate(genericWhereClause: node.genericWhereClause)
564564
)
565-
decl.asDecl.attrs = attrs.attributes
565+
attrs.attach(to: decl.asDecl)
566566

567567
if let body = node.body {
568568
self.withDeclContext(decl.asDeclContext) {
@@ -589,7 +589,7 @@ extension ASTGenVisitor {
589589
thrownType: self.generate(type: node.signature.effectSpecifiers?.thrownError),
590590
genericWhereClause: self.generate(genericWhereClause: node.genericWhereClause)
591591
)
592-
decl.asDecl.attrs = attrs.attributes
592+
attrs.attach(to: decl.asDecl)
593593

594594
if let body = node.body {
595595
self.withDeclContext(decl.asDeclContext) {
@@ -608,7 +608,7 @@ extension ASTGenVisitor {
608608
declContext: self.declContext,
609609
deinitKeywordLoc: self.generateSourceLoc(node.deinitKeyword)
610610
)
611-
decl.asDecl.attrs = attrs.attributes
611+
attrs.attach(to: decl.asDecl)
612612

613613
if let body = node.body {
614614
self.withDeclContext(decl.asDeclContext) {
@@ -771,7 +771,7 @@ extension ASTGenVisitor {
771771
lowerThanNames: self.generate(precedenceGroupNameList: body.lowerThanRelation?.precedenceGroups),
772772
rightBraceLoc: self.generateSourceLoc(node.rightBrace)
773773
)
774-
decl.asDecl.attrs = attrs.attributes
774+
attrs.attach(to: decl.asDecl)
775775
return decl
776776
}
777777
}
@@ -818,7 +818,7 @@ extension ASTGenVisitor {
818818
self.generateLocatedIdentifier($0.name)
819819
}.bridgedArray(in: self)
820820
)
821-
decl.asDecl.attrs = attrs.attributes
821+
attrs.attach(to: decl.asDecl)
822822
return decl
823823
}
824824
}

0 commit comments

Comments
 (0)