Skip to content

Commit e657dc0

Browse files
authored
Merge pull request #537 from CodaFi/aligned-alloc
Add Layout Requirements To AST
2 parents 407ceeb + f05a033 commit e657dc0

File tree

14 files changed

+624
-2
lines changed

14 files changed

+624
-2
lines changed

Sources/SwiftSyntax/gyb_generated/Misc.swift

Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1285,6 +1285,12 @@ extension SyntaxNode {
12851285
return SameTypeRequirementSyntax(asSyntaxData)
12861286
}
12871287

1288+
public var isLayoutRequirement: Bool { return raw.kind == .layoutRequirement }
1289+
public var asLayoutRequirement: LayoutRequirementSyntax? {
1290+
guard isLayoutRequirement else { return nil }
1291+
return LayoutRequirementSyntax(asSyntaxData)
1292+
}
1293+
12881294
public var isGenericParameterList: Bool { return raw.kind == .genericParameterList }
12891295
public var asGenericParameterList: GenericParameterListSyntax? {
12901296
guard isGenericParameterList else { return nil }
@@ -1989,6 +1995,8 @@ extension Syntax {
19891995
return node
19901996
case .sameTypeRequirement(let node):
19911997
return node
1998+
case .layoutRequirement(let node):
1999+
return node
19922000
case .genericParameterList(let node):
19932001
return node
19942002
case .genericParameter(let node):

Sources/SwiftSyntax/gyb_generated/SyntaxAnyVisitor.swift

Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1541,6 +1541,13 @@ open class SyntaxAnyVisitor: SyntaxVisitor {
15411541
override open func visitPost(_ node: SameTypeRequirementSyntax) {
15421542
visitAnyPost(node._syntaxNode)
15431543
}
1544+
override open func visit(_ node: LayoutRequirementSyntax) -> SyntaxVisitorContinueKind {
1545+
return visitAny(node._syntaxNode)
1546+
}
1547+
1548+
override open func visitPost(_ node: LayoutRequirementSyntax) {
1549+
visitAnyPost(node._syntaxNode)
1550+
}
15441551
override open func visit(_ node: GenericParameterListSyntax) -> SyntaxVisitorContinueKind {
15451552
return visitAny(node._syntaxNode)
15461553
}

Sources/SwiftSyntax/gyb_generated/SyntaxBuilders.swift

Lines changed: 79 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -9227,6 +9227,85 @@ extension SameTypeRequirementSyntax {
92279227
}
92289228
}
92299229

9230+
public struct LayoutRequirementSyntaxBuilder {
9231+
private var layout =
9232+
Array<RawSyntax?>(repeating: nil, count: 8)
9233+
9234+
internal init() {}
9235+
9236+
public mutating func useTypeIdentifier(_ node: TypeSyntax) {
9237+
let idx = LayoutRequirementSyntax.Cursor.typeIdentifier.rawValue
9238+
layout[idx] = node.raw
9239+
}
9240+
9241+
public mutating func useColon(_ node: TokenSyntax) {
9242+
let idx = LayoutRequirementSyntax.Cursor.colon.rawValue
9243+
layout[idx] = node.raw
9244+
}
9245+
9246+
public mutating func useLayoutConstraint(_ node: TokenSyntax) {
9247+
let idx = LayoutRequirementSyntax.Cursor.layoutConstraint.rawValue
9248+
layout[idx] = node.raw
9249+
}
9250+
9251+
public mutating func useLeftParen(_ node: TokenSyntax) {
9252+
let idx = LayoutRequirementSyntax.Cursor.leftParen.rawValue
9253+
layout[idx] = node.raw
9254+
}
9255+
9256+
public mutating func useSize(_ node: TokenSyntax) {
9257+
let idx = LayoutRequirementSyntax.Cursor.size.rawValue
9258+
layout[idx] = node.raw
9259+
}
9260+
9261+
public mutating func useComma(_ node: TokenSyntax) {
9262+
let idx = LayoutRequirementSyntax.Cursor.comma.rawValue
9263+
layout[idx] = node.raw
9264+
}
9265+
9266+
public mutating func useAlignment(_ node: TokenSyntax) {
9267+
let idx = LayoutRequirementSyntax.Cursor.alignment.rawValue
9268+
layout[idx] = node.raw
9269+
}
9270+
9271+
public mutating func useRightParen(_ node: TokenSyntax) {
9272+
let idx = LayoutRequirementSyntax.Cursor.rightParen.rawValue
9273+
layout[idx] = node.raw
9274+
}
9275+
9276+
internal mutating func buildData() -> SyntaxData {
9277+
if (layout[0] == nil) {
9278+
layout[0] = RawSyntax.missing(SyntaxKind.missingType)
9279+
}
9280+
if (layout[1] == nil) {
9281+
layout[1] = RawSyntax.missingToken(TokenKind.colon)
9282+
}
9283+
if (layout[2] == nil) {
9284+
layout[2] = RawSyntax.missingToken(TokenKind.identifier(""))
9285+
}
9286+
9287+
return .forRoot(RawSyntax.createAndCalcLength(kind: .layoutRequirement,
9288+
layout: layout, presence: .present))
9289+
}
9290+
}
9291+
9292+
extension LayoutRequirementSyntax {
9293+
/// Creates a `LayoutRequirementSyntax` using the provided build function.
9294+
/// - Parameter:
9295+
/// - build: A closure that will be invoked in order to initialize
9296+
/// the fields of the syntax node.
9297+
/// This closure is passed a `LayoutRequirementSyntaxBuilder` which you can use to
9298+
/// incrementally build the structure of the node.
9299+
/// - Returns: A `LayoutRequirementSyntax` with all the fields populated in the builder
9300+
/// closure.
9301+
public init(_ build: (inout LayoutRequirementSyntaxBuilder) -> Void) {
9302+
var builder = LayoutRequirementSyntaxBuilder()
9303+
build(&builder)
9304+
let data = builder.buildData()
9305+
self.init(data)
9306+
}
9307+
}
9308+
92309309
public struct GenericParameterSyntaxBuilder {
92319310
private var layout =
92329311
Array<RawSyntax?>(repeating: nil, count: 5)

Sources/SwiftSyntax/gyb_generated/SyntaxEnum.swift

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -227,6 +227,7 @@ public enum SyntaxEnum {
227227
case genericRequirementList(GenericRequirementListSyntax)
228228
case genericRequirement(GenericRequirementSyntax)
229229
case sameTypeRequirement(SameTypeRequirementSyntax)
230+
case layoutRequirement(LayoutRequirementSyntax)
230231
case genericParameterList(GenericParameterListSyntax)
231232
case genericParameter(GenericParameterSyntax)
232233
case primaryAssociatedTypeList(PrimaryAssociatedTypeListSyntax)
@@ -703,6 +704,8 @@ public extension Syntax {
703704
return .genericRequirement(GenericRequirementSyntax(self)!)
704705
case .sameTypeRequirement:
705706
return .sameTypeRequirement(SameTypeRequirementSyntax(self)!)
707+
case .layoutRequirement:
708+
return .layoutRequirement(LayoutRequirementSyntax(self)!)
706709
case .genericParameterList:
707710
return .genericParameterList(GenericParameterListSyntax(self)!)
708711
case .genericParameter:

Sources/SwiftSyntax/gyb_generated/SyntaxFactory.swift

Lines changed: 31 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -4195,6 +4195,37 @@ public enum SyntaxFactory {
41954195
], length: .zero, presence: presence))
41964196
return SameTypeRequirementSyntax(data)
41974197
}
4198+
public static func makeLayoutRequirement(typeIdentifier: TypeSyntax, colon: TokenSyntax, layoutConstraint: TokenSyntax, leftParen: TokenSyntax?, size: TokenSyntax?, comma: TokenSyntax?, alignment: TokenSyntax?, rightParen: TokenSyntax?) -> LayoutRequirementSyntax {
4199+
let layout: [RawSyntax?] = [
4200+
typeIdentifier.raw,
4201+
colon.raw,
4202+
layoutConstraint.raw,
4203+
leftParen?.raw,
4204+
size?.raw,
4205+
comma?.raw,
4206+
alignment?.raw,
4207+
rightParen?.raw,
4208+
]
4209+
let raw = RawSyntax.createAndCalcLength(kind: SyntaxKind.layoutRequirement,
4210+
layout: layout, presence: SourcePresence.present)
4211+
let data = SyntaxData.forRoot(raw)
4212+
return LayoutRequirementSyntax(data)
4213+
}
4214+
4215+
public static func makeBlankLayoutRequirement(presence: SourcePresence = .present) -> LayoutRequirementSyntax {
4216+
let data = SyntaxData.forRoot(RawSyntax.create(kind: .layoutRequirement,
4217+
layout: [
4218+
RawSyntax.missing(SyntaxKind.missingType),
4219+
RawSyntax.missingToken(TokenKind.colon),
4220+
RawSyntax.missingToken(TokenKind.identifier("")),
4221+
nil,
4222+
nil,
4223+
nil,
4224+
nil,
4225+
nil,
4226+
], length: .zero, presence: presence))
4227+
return LayoutRequirementSyntax(data)
4228+
}
41984229
public static func makeGenericParameterList(
41994230
_ elements: [GenericParameterSyntax]) -> GenericParameterListSyntax {
42004231
let raw = RawSyntax.createAndCalcLength(kind: SyntaxKind.genericParameterList,

Sources/SwiftSyntax/gyb_generated/SyntaxKind.swift

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -227,6 +227,7 @@ internal enum SyntaxKind: CSyntaxKind {
227227
case genericRequirementList = 194
228228
case genericRequirement = 232
229229
case sameTypeRequirement = 149
230+
case layoutRequirement = 164
230231
case genericParameterList = 195
231232
case genericParameter = 150
232233
case primaryAssociatedTypeList = 254

Sources/SwiftSyntax/gyb_generated/SyntaxRewriter.swift

Lines changed: 21 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1500,6 +1500,13 @@ open class SyntaxRewriter {
15001500
return Syntax(visitChildren(node))
15011501
}
15021502

1503+
/// Visit a `LayoutRequirementSyntax`.
1504+
/// - Parameter node: the node that is being visited
1505+
/// - Returns: the rewritten node
1506+
open func visit(_ node: LayoutRequirementSyntax) -> Syntax {
1507+
return Syntax(visitChildren(node))
1508+
}
1509+
15031510
/// Visit a `GenericParameterListSyntax`.
15041511
/// - Parameter node: the node that is being visited
15051512
/// - Returns: the rewritten node
@@ -4009,6 +4016,16 @@ open class SyntaxRewriter {
40094016
return visit(node)
40104017
}
40114018

4019+
/// Implementation detail of visit(_:). Do not call directly.
4020+
private func visitImplLayoutRequirementSyntax(_ data: SyntaxData) -> Syntax {
4021+
let node = LayoutRequirementSyntax(data)
4022+
// Accessing _syntaxNode directly is faster than calling Syntax(node)
4023+
visitPre(node._syntaxNode)
4024+
defer { visitPost(node._syntaxNode) }
4025+
if let newNode = visitAny(node._syntaxNode) { return newNode }
4026+
return visit(node)
4027+
}
4028+
40124029
/// Implementation detail of visit(_:). Do not call directly.
40134030
private func visitImplGenericParameterListSyntax(_ data: SyntaxData) -> Syntax {
40144031
let node = GenericParameterListSyntax(data)
@@ -4923,6 +4940,8 @@ open class SyntaxRewriter {
49234940
return visitImplGenericRequirementSyntax
49244941
case .sameTypeRequirement:
49254942
return visitImplSameTypeRequirementSyntax
4943+
case .layoutRequirement:
4944+
return visitImplLayoutRequirementSyntax
49264945
case .genericParameterList:
49274946
return visitImplGenericParameterListSyntax
49284947
case .genericParameter:
@@ -5448,6 +5467,8 @@ open class SyntaxRewriter {
54485467
return visitImplGenericRequirementSyntax(data)
54495468
case .sameTypeRequirement:
54505469
return visitImplSameTypeRequirementSyntax(data)
5470+
case .layoutRequirement:
5471+
return visitImplLayoutRequirementSyntax(data)
54515472
case .genericParameterList:
54525473
return visitImplGenericParameterListSyntax(data)
54535474
case .genericParameter:

Sources/SwiftSyntax/gyb_generated/SyntaxVisitor.swift

Lines changed: 23 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -2151,6 +2151,16 @@ open class SyntaxVisitor {
21512151
/// The function called after visiting `SameTypeRequirementSyntax` and its descendents.
21522152
/// - node: the node we just finished visiting.
21532153
open func visitPost(_ node: SameTypeRequirementSyntax) {}
2154+
/// Visiting `LayoutRequirementSyntax` specifically.
2155+
/// - Parameter node: the node we are visiting.
2156+
/// - Returns: how should we continue visiting.
2157+
open func visit(_ node: LayoutRequirementSyntax) -> SyntaxVisitorContinueKind {
2158+
return .visitChildren
2159+
}
2160+
2161+
/// The function called after visiting `LayoutRequirementSyntax` and its descendents.
2162+
/// - node: the node we just finished visiting.
2163+
open func visitPost(_ node: LayoutRequirementSyntax) {}
21542164
/// Visiting `GenericParameterListSyntax` specifically.
21552165
/// - Parameter node: the node we are visiting.
21562166
/// - Returns: how should we continue visiting.
@@ -4990,6 +5000,17 @@ open class SyntaxVisitor {
49905000
visitPost(node)
49915001
}
49925002

5003+
/// Implementation detail of doVisit(_:_:). Do not call directly.
5004+
private func visitImplLayoutRequirementSyntax(_ data: SyntaxData) {
5005+
let node = LayoutRequirementSyntax(data)
5006+
let needsChildren = (visit(node) == .visitChildren)
5007+
// Avoid calling into visitChildren if possible.
5008+
if needsChildren && node.raw.numberOfChildren > 0 {
5009+
visitChildren(node)
5010+
}
5011+
visitPost(node)
5012+
}
5013+
49935014
/// Implementation detail of doVisit(_:_:). Do not call directly.
49945015
private func visitImplGenericParameterListSyntax(_ data: SyntaxData) {
49955016
let node = GenericParameterListSyntax(data)
@@ -5916,6 +5937,8 @@ open class SyntaxVisitor {
59165937
visitImplGenericRequirementSyntax(data)
59175938
case .sameTypeRequirement:
59185939
visitImplSameTypeRequirementSyntax(data)
5940+
case .layoutRequirement:
5941+
visitImplLayoutRequirementSyntax(data)
59195942
case .genericParameterList:
59205943
visitImplGenericParameterListSyntax(data)
59215944
case .genericParameter:

0 commit comments

Comments
 (0)