diff --git a/CodeGeneration/Package.swift b/CodeGeneration/Package.swift index b0e19b463be..b807683894b 100644 --- a/CodeGeneration/Package.swift +++ b/CodeGeneration/Package.swift @@ -11,7 +11,7 @@ let package = Package( .executable(name: "generate-swiftsyntax", targets: ["generate-swiftsyntax"]) ], dependencies: [ - .package(url: "https://github.com/apple/swift-syntax.git", revision: "39b3336c3f3bfcd4ddbcbf6a111d8814ffe542f3"), + .package(url: "https://github.com/apple/swift-syntax.git", revision: "94120e0cf9bf541e54fbc8512934daea23a9ad0c"), .package(url: "https://github.com/apple/swift-argument-parser.git", .upToNextMinor(from: "1.2.2")), ], targets: [ diff --git a/CodeGeneration/Sources/Utils/CodeGenerationFormat.swift b/CodeGeneration/Sources/Utils/CodeGenerationFormat.swift index 7dfa451b5d7..2130aa39c1f 100644 --- a/CodeGeneration/Sources/Utils/CodeGenerationFormat.swift +++ b/CodeGeneration/Sources/Utils/CodeGenerationFormat.swift @@ -66,7 +66,7 @@ public class CodeGenerationFormat: BasicFormat { public override func visit(_ node: MemberDeclListItemSyntax) -> MemberDeclListItemSyntax { let formatted = super.visit(node) - if node.indexInParent != 0 && !node.decl.is(EnumCaseDeclSyntax.self) { + if node != node.parent?.children(viewMode: .sourceAccurate).first?.as(MemberDeclListItemSyntax.self) && !node.decl.is(EnumCaseDeclSyntax.self) { return ensuringTwoLeadingNewlines(node: formatted) } else { return formatted @@ -92,10 +92,10 @@ public class CodeGenerationFormat: BasicFormat { } private func ensuringTwoLeadingNewlines(node: NodeType) -> NodeType { - if node.leadingTrivia?.first?.isNewline ?? false { - return node.with(\.leadingTrivia, indentedNewline + (node.leadingTrivia ?? [])) + if node.leadingTrivia.first?.isNewline ?? false { + return node.with(\.leadingTrivia, indentedNewline + node.leadingTrivia) } else { - return node.with(\.leadingTrivia, indentedNewline + indentedNewline + (node.leadingTrivia ?? [])) + return node.with(\.leadingTrivia, indentedNewline + indentedNewline + node.leadingTrivia) } } @@ -105,10 +105,10 @@ public class CodeGenerationFormat: BasicFormat { self.visit($0).as(SyntaxType.self)! } formattedChildren = formattedChildren.map { - if $0.leadingTrivia?.first?.isNewline == true { + if $0.leadingTrivia.first?.isNewline == true { return $0 } else { - return $0.with(\.leadingTrivia, indentedNewline + ($0.leadingTrivia ?? [])) + return $0.with(\.leadingTrivia, indentedNewline + $0.leadingTrivia) } } indentationLevel -= 1 diff --git a/CodeGeneration/Sources/generate-swiftsyntax/templates/swiftsyntax/RawSyntaxNodesFile.swift b/CodeGeneration/Sources/generate-swiftsyntax/templates/swiftsyntax/RawSyntaxNodesFile.swift index 1039fd01630..5de7af191fb 100644 --- a/CodeGeneration/Sources/generate-swiftsyntax/templates/swiftsyntax/RawSyntaxNodesFile.swift +++ b/CodeGeneration/Sources/generate-swiftsyntax/templates/swiftsyntax/RawSyntaxNodesFile.swift @@ -193,15 +193,15 @@ let rawSyntaxNodesFile = SourceFileSyntax(leadingTrivia: copyrightHeader) { let params = FunctionParameterListSyntax { for child in node.children { FunctionParameterSyntax( - firstName: child.isUnexpectedNodes ? .wildcardToken(trailingTrivia: .space) : nil, - secondName: .identifier(child.swiftName), + firstName: child.isUnexpectedNodes ? .wildcardToken(trailingTrivia: .space) : .identifier(child.swiftName), + secondName: child.isUnexpectedNodes ? .identifier(child.swiftName) : nil, colon: .colonToken(), type: child.rawParameterType, defaultArgument: child.isUnexpectedNodes ? child.defaultInitialization : nil ) } - FunctionParameterSyntax("arena: __shared SyntaxArena", for: .functionParameters) + FunctionParameterSyntax("arena: __shared SyntaxArena") } try InitializerDeclSyntax("public init(\(params))") { if !node.children.isEmpty { diff --git a/CodeGeneration/Sources/generate-swiftsyntax/templates/swiftsyntax/SyntaxNodeFile.swift b/CodeGeneration/Sources/generate-swiftsyntax/templates/swiftsyntax/SyntaxNodeFile.swift index d3927d654b7..07c4881c492 100644 --- a/CodeGeneration/Sources/generate-swiftsyntax/templates/swiftsyntax/SyntaxNodeFile.swift +++ b/CodeGeneration/Sources/generate-swiftsyntax/templates/swiftsyntax/SyntaxNodeFile.swift @@ -66,18 +66,20 @@ func syntaxNode(emitKind: String) -> SourceFileSyntax { ) try! InitializerDeclSyntax("\(node.generateInitializerDeclHeader(optionalBaseAsMissing: false))") { - let parameters = FunctionParameterListSyntax { + let parameters = ClosureParameterListSyntax { for child in node.children { - FunctionParameterSyntax(firstName: "\(raw: child.swiftName)") + ClosureParameterSyntax(firstName: .identifier(child.swiftName)) } } let closureSignature = ClosureSignatureSyntax( input: .input( - ParameterClauseSyntax { - FunctionParameterSyntax(firstName: .identifier("arena")) - FunctionParameterSyntax(firstName: .wildcardToken()) - } + ClosureParameterClauseSyntax( + parameterList: ClosureParameterListSyntax { + ClosureParameterSyntax(firstName: .identifier("arena")) + ClosureParameterSyntax(firstName: .wildcardToken()) + } + ) ) ) let layoutList = ArrayExprSyntax { @@ -384,13 +386,13 @@ fileprivate extension Node { } let params = FunctionParameterListSyntax { - FunctionParameterSyntax("leadingTrivia: Trivia? = nil", for: .functionParameters) + FunctionParameterSyntax("leadingTrivia: Trivia? = nil") for child in children { createFunctionParameterSyntax(for: child) } - FunctionParameterSyntax("trailingTrivia: Trivia? = nil", for: .functionParameters) + FunctionParameterSyntax("trailingTrivia: Trivia? = nil") .with(\.leadingTrivia, .newline) } diff --git a/CodeGeneration/Sources/generate-swiftsyntax/templates/swiftsyntaxbuilder/BuildableNodesFile.swift b/CodeGeneration/Sources/generate-swiftsyntax/templates/swiftsyntaxbuilder/BuildableNodesFile.swift index fd155fa7f65..e6eb669c31f 100644 --- a/CodeGeneration/Sources/generate-swiftsyntax/templates/swiftsyntaxbuilder/BuildableNodesFile.swift +++ b/CodeGeneration/Sources/generate-swiftsyntax/templates/swiftsyntaxbuilder/BuildableNodesFile.swift @@ -71,10 +71,7 @@ private func createConvenienceInitializer(node: Node) throws -> InitializerDeclS produceExpr = ExprSyntax("\(raw: child.swiftName)Builder()") } builderParameters.append( - FunctionParameterSyntax( - "@\(raw: builderInitializableType.resultBuilderBaseName) \(raw: child.swiftName)Builder: () throws-> \(raw: builderInitializableType.syntax)", - for: .functionParameters - ) + FunctionParameterSyntax("@\(raw: builderInitializableType.resultBuilderBaseName) \(raw: child.swiftName)Builder: () throws-> \(raw: builderInitializableType.syntax)") ) } else { produceExpr = convertFromSyntaxProtocolToSyntaxType(child: child) @@ -95,11 +92,11 @@ private func createConvenienceInitializer(node: Node) throws -> InitializerDeclS } let params = ParameterClauseSyntax { - FunctionParameterSyntax("leadingTrivia: Trivia? = nil", for: .functionParameters) + FunctionParameterSyntax("leadingTrivia: Trivia? = nil") for param in normalParameters + builderParameters { param } - FunctionParameterSyntax("trailingTrivia: Trivia? = nil", for: .functionParameters) + FunctionParameterSyntax("trailingTrivia: Trivia? = nil") } return try InitializerDeclSyntax( diff --git a/Sources/SwiftSyntax/generated/raw/RawSyntaxValidation.swift b/Sources/SwiftSyntax/generated/raw/RawSyntaxValidation.swift index 41f730a0d82..2d2e52426f9 100644 --- a/Sources/SwiftSyntax/generated/raw/RawSyntaxValidation.swift +++ b/Sources/SwiftSyntax/generated/raw/RawSyntaxValidation.swift @@ -34,19 +34,8 @@ func validateLayout(layout: RawSyntaxBuffer, as kind: SyntaxKind) { } enum ValidationError: CustomStringConvertible { case expectedNonNil(expectedKind: RawSyntaxNodeProtocol.Type, file: StaticString, line: UInt) - case kindMismatch( - expectedKind: RawSyntaxNodeProtocol.Type, - actualKind: SyntaxKind, - file: StaticString, - line: UInt - ) - case tokenMismatch( - expectedTokenChoices: [TokenChoice], - actualKind: RawTokenKind, - actualText: SyntaxText, - file: StaticString, - line: UInt - ) + case kindMismatch(expectedKind: RawSyntaxNodeProtocol.Type, actualKind: SyntaxKind, file: StaticString, line: UInt) + case tokenMismatch(expectedTokenChoices: [TokenChoice], actualKind: RawTokenKind, actualText: SyntaxText, file: StaticString, line: UInt) var description: String {