Skip to content

Commit 2fcf124

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 f2f3c19 commit 2fcf124

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
@@ -96,7 +96,7 @@ extension ASTGenVisitor {
9696
underlyingType: self.generate(type: node.initializer.value),
9797
genericWhereClause: self.generate(genericWhereClause: node.genericWhereClause)
9898
)
99-
decl.asDecl.attrs = attrs.attributes
99+
attrs.attach(to: decl.asDecl)
100100
return decl
101101
}
102102

@@ -118,7 +118,7 @@ extension ASTGenVisitor {
118118
end: node.memberBlock.rightBrace
119119
)
120120
)
121-
decl.asDecl.attrs = attrs.attributes
121+
attrs.attach(to: decl.asDecl)
122122

123123
self.withDeclContext(decl.asDeclContext) {
124124
decl.setParsedMembers(self.generate(memberBlockItemList: node.memberBlock.members))
@@ -145,7 +145,7 @@ extension ASTGenVisitor {
145145
end: node.memberBlock.rightBrace
146146
)
147147
)
148-
decl.asDecl.attrs = attrs.attributes
148+
attrs.attach(to: decl.asDecl)
149149

150150
self.withDeclContext(decl.asDeclContext) {
151151
decl.setParsedMembers(self.generate(memberBlockItemList: node.memberBlock.members))
@@ -173,7 +173,7 @@ extension ASTGenVisitor {
173173
),
174174
isActor: false
175175
)
176-
decl.asDecl.attrs = attrs.attributes
176+
attrs.attach(to: decl.asDecl)
177177

178178
self.withDeclContext(decl.asDeclContext) {
179179
decl.setParsedMembers(self.generate(memberBlockItemList: node.memberBlock.members))
@@ -201,7 +201,7 @@ extension ASTGenVisitor {
201201
),
202202
isActor: true
203203
)
204-
decl.asDecl.attrs = attrs.attributes
204+
attrs.attach(to: decl.asDecl)
205205

206206
self.withDeclContext(decl.asDeclContext) {
207207
decl.setParsedMembers(self.generate(memberBlockItemList: node.memberBlock.members))
@@ -231,7 +231,7 @@ extension ASTGenVisitor {
231231
end: node.memberBlock.rightBrace
232232
)
233233
)
234-
decl.asDecl.attrs = attrs.attributes
234+
attrs.attach(to: decl.asDecl)
235235

236236
self.withDeclContext(decl.asDeclContext) {
237237
decl.setParsedMembers(self.generate(memberBlockItemList: node.memberBlock.members))
@@ -254,7 +254,7 @@ extension ASTGenVisitor {
254254
defaultType: self.generate(type: node.initializer?.value),
255255
genericWhereClause: self.generate(genericWhereClause: node.genericWhereClause)
256256
)
257-
decl.asDecl.attrs = attrs.attributes
257+
attrs.attach(to: decl.asDecl)
258258
return decl
259259
}
260260
}
@@ -276,7 +276,7 @@ extension ASTGenVisitor {
276276
end: node.memberBlock.rightBrace
277277
)
278278
)
279-
decl.asDecl.attrs = attrs.attributes
279+
attrs.attach(to: decl.asDecl)
280280

281281
self.withDeclContext(decl.asDeclContext) {
282282
decl.setParsedMembers(self.generate(memberBlockItemList: node.memberBlock.members))
@@ -309,7 +309,7 @@ extension ASTGenVisitor {
309309
// All attributes goes to each element.
310310
let elements = node.elements.lazy.map({ elem -> BridgedEnumElementDecl in
311311
let elemDecl = self.generate(enumCaseElement: elem)
312-
elemDecl.asDecl.attrs = attrs.attributes
312+
attrs.attach(to: elemDecl.asDecl)
313313
return elemDecl
314314
})
315315
return .createParsed(
@@ -536,7 +536,7 @@ extension ASTGenVisitor {
536536
arrowLoc: self.generateSourceLoc(node.returnClause.arrow),
537537
returnType: self.generate(type: node.returnClause.type)
538538
)
539-
subscriptDecl.asDecl.attrs = attrs.attributes
539+
attrs.attach(to: subscriptDecl.asDecl)
540540

541541
if let accessors = node.accessorBlock {
542542
let storage = subscriptDecl.asAbstractStorageDecl
@@ -570,7 +570,7 @@ extension ASTGenVisitor {
570570
returnType: self.generate(type: node.signature.returnClause?.type),
571571
genericWhereClause: self.generate(genericWhereClause: node.genericWhereClause)
572572
)
573-
decl.asDecl.attrs = attrs.attributes
573+
attrs.attach(to: decl.asDecl)
574574

575575
if let body = node.body {
576576
self.withDeclContext(decl.asDeclContext) {
@@ -597,7 +597,7 @@ extension ASTGenVisitor {
597597
thrownType: self.generate(type: node.signature.effectSpecifiers?.thrownError),
598598
genericWhereClause: self.generate(genericWhereClause: node.genericWhereClause)
599599
)
600-
decl.asDecl.attrs = attrs.attributes
600+
attrs.attach(to: decl.asDecl)
601601

602602
if let body = node.body {
603603
self.withDeclContext(decl.asDeclContext) {
@@ -616,7 +616,7 @@ extension ASTGenVisitor {
616616
declContext: self.declContext,
617617
deinitKeywordLoc: self.generateSourceLoc(node.deinitKeyword)
618618
)
619-
decl.asDecl.attrs = attrs.attributes
619+
attrs.attach(to: decl.asDecl)
620620

621621
if let body = node.body {
622622
self.withDeclContext(decl.asDeclContext) {
@@ -783,7 +783,7 @@ extension ASTGenVisitor {
783783
lowerThanNames: self.generate(precedenceGroupNameList: body.lowerThanRelation?.precedenceGroups),
784784
rightBraceLoc: self.generateSourceLoc(node.rightBrace)
785785
)
786-
decl.asDecl.attrs = attrs.attributes
786+
attrs.attach(to: decl.asDecl)
787787
return decl
788788
}
789789
}
@@ -830,7 +830,7 @@ extension ASTGenVisitor {
830830
self.generateLocatedIdentifier($0.name)
831831
}.bridgedArray(in: self)
832832
)
833-
decl.asDecl.attrs = attrs.attributes
833+
attrs.attach(to: decl.asDecl)
834834
return decl
835835
}
836836
}

0 commit comments

Comments
 (0)