From 1617bcba3aa50c2eec984035b22c90870a3eb27a Mon Sep 17 00:00:00 2001 From: Roman <2621122+RoBo-Inc@users.noreply.github.com> Date: Sun, 4 Feb 2024 16:17:21 +0700 Subject: [PATCH] Fix "escaped newline symbol" bug --- .../Sources/SyntaxSupport/Utils.swift | 28 ++++--------------- .../swiftsyntax/SyntaxBaseNodesFile.swift | 2 +- .../swiftsyntax/SyntaxCollectionsFile.swift | 2 +- .../swiftsyntax/SyntaxNodesFile.swift | 6 ++-- .../swiftsyntax/SyntaxTraitsFile.swift | 8 ++---- .../ResultBuildersFile.swift | 1 - .../SwiftSyntax/generated/SyntaxTraits.swift | 12 -------- 7 files changed, 14 insertions(+), 45 deletions(-) diff --git a/CodeGeneration/Sources/SyntaxSupport/Utils.swift b/CodeGeneration/Sources/SyntaxSupport/Utils.swift index c979d60d3db..ed2091ff7e3 100644 --- a/CodeGeneration/Sources/SyntaxSupport/Utils.swift +++ b/CodeGeneration/Sources/SyntaxSupport/Utils.swift @@ -42,35 +42,19 @@ public func lowercaseFirstWord(name: String) -> String { extension SwiftSyntax.Trivia { /// Make a new trivia from a (possibly multi-line) string, prepending `///` /// to each line and creating a `.docLineComment` trivia piece for each line. - public static func docCommentTrivia(from string: String?) -> SwiftSyntax.Trivia { - guard let string else { - return [] - } - - let lines = string.split(separator: "\n", omittingEmptySubsequences: false) - let pieces = lines.enumerated().map { (index, line) in - var line = line - if index != lines.count - 1 { - line = "\(line)\n" - } - return SwiftSyntax.TriviaPiece.docLineComment("/// \(line)") - } - return SwiftSyntax.Trivia(pieces: pieces) + public static func docCommentTrivia(from string: String?) -> Self { + guard let string else { return [] } + let lines = string.split(separator: "\n", omittingEmptySubsequences: false).map { "/// \($0)" } + return .init(pieces: lines.flatMap { [.docLineComment($0), .newlines(1)] }) } /// Make a new trivia by joining together ``SwiftSyntax/TriviaPiece``s from `joining`, /// and gluing them together with pieces from `separator`. public init( joining items: [SwiftSyntax.Trivia], - separator: SwiftSyntax.Trivia = SwiftSyntax.Trivia(pieces: [TriviaPiece.newlines(1), TriviaPiece.docLineComment("///"), TriviaPiece.newlines(1)]) + separator: SwiftSyntax.Trivia = .init(pieces: [.docLineComment("///"), .newlines(1)]) ) { - - self.init( - pieces: - items - .filter { !$0.isEmpty } - .joined(separator: separator) - ) + self.init(pieces: items.filter { !$0.isEmpty }.joined(separator: separator)) } } diff --git a/CodeGeneration/Sources/generate-swift-syntax/templates/swiftsyntax/SyntaxBaseNodesFile.swift b/CodeGeneration/Sources/generate-swift-syntax/templates/swiftsyntax/SyntaxBaseNodesFile.swift index f3dcccb9005..534cbc2e883 100644 --- a/CodeGeneration/Sources/generate-swift-syntax/templates/swiftsyntax/SyntaxBaseNodesFile.swift +++ b/CodeGeneration/Sources/generate-swift-syntax/templates/swiftsyntax/SyntaxBaseNodesFile.swift @@ -173,7 +173,7 @@ let syntaxBaseNodesFile = SourceFileSyntax(leadingTrivia: copyrightHeader) { try! StructDeclSyntax( """ - \(documentation) + \(documentation)\ \(node.apiAttributes())\ public struct \(node.kind.syntaxType): \(node.kind.protocolType), SyntaxHashable """ diff --git a/CodeGeneration/Sources/generate-swift-syntax/templates/swiftsyntax/SyntaxCollectionsFile.swift b/CodeGeneration/Sources/generate-swift-syntax/templates/swiftsyntax/SyntaxCollectionsFile.swift index f724f058486..8609fac7d56 100644 --- a/CodeGeneration/Sources/generate-swift-syntax/templates/swiftsyntax/SyntaxCollectionsFile.swift +++ b/CodeGeneration/Sources/generate-swift-syntax/templates/swiftsyntax/SyntaxCollectionsFile.swift @@ -26,7 +26,7 @@ let syntaxCollectionsFile = SourceFileSyntax(leadingTrivia: copyrightHeader) { try! StructDeclSyntax( """ - \(documentation) + \(documentation)\ \(node.node.apiAttributes())\ public struct \(node.kind.syntaxType): SyntaxCollection, SyntaxHashable """ diff --git a/CodeGeneration/Sources/generate-swift-syntax/templates/swiftsyntax/SyntaxNodesFile.swift b/CodeGeneration/Sources/generate-swift-syntax/templates/swiftsyntax/SyntaxNodesFile.swift index f766af47ec3..b9cb1c69a59 100644 --- a/CodeGeneration/Sources/generate-swift-syntax/templates/swiftsyntax/SyntaxNodesFile.swift +++ b/CodeGeneration/Sources/generate-swift-syntax/templates/swiftsyntax/SyntaxNodesFile.swift @@ -27,7 +27,7 @@ func syntaxNode(nodesStartingWith: [Character]) -> SourceFileSyntax { """ // MARK: - \(node.kind.syntaxType) - \(SwiftSyntax.Trivia(joining: [node.documentation, node.experimentalDocNote, node.grammar, node.containedIn])) + \(SwiftSyntax.Trivia(joining: [node.documentation, node.experimentalDocNote, node.grammar, node.containedIn]))\ \(node.node.apiAttributes())\ public struct \(node.kind.syntaxType): \(node.baseType.syntaxBaseName)Protocol, SyntaxHashable, \(node.base.leafProtocolType) """ @@ -55,7 +55,7 @@ func syntaxNode(nodesStartingWith: [Character]) -> SourceFileSyntax { try! InitializerDeclSyntax( """ - \(node.generateInitializerDocComment()) + \(node.generateInitializerDocComment())\ \(node.generateInitializerDeclHeader()) """ ) { @@ -137,7 +137,7 @@ func syntaxNode(nodesStartingWith: [Character]) -> SourceFileSyntax { try! VariableDeclSyntax( """ - \(child.documentation) + \(child.documentation)\ \(child.apiAttributes)public var \(child.varOrCaseName.backtickedIfNeeded): \(type) """ ) { diff --git a/CodeGeneration/Sources/generate-swift-syntax/templates/swiftsyntax/SyntaxTraitsFile.swift b/CodeGeneration/Sources/generate-swift-syntax/templates/swiftsyntax/SyntaxTraitsFile.swift index 4626e52b40f..87f2f3bcaae 100644 --- a/CodeGeneration/Sources/generate-swift-syntax/templates/swiftsyntax/SyntaxTraitsFile.swift +++ b/CodeGeneration/Sources/generate-swift-syntax/templates/swiftsyntax/SyntaxTraitsFile.swift @@ -21,11 +21,9 @@ let syntaxTraitsFile = SourceFileSyntax(leadingTrivia: copyrightHeader) { """ // MARK: - \(trait.protocolName) - \(trait.documentation) + \(trait.documentation)\ public protocol \(trait.protocolName): SyntaxProtocol\(raw: - trait.baseKind != nil - ? ", \(trait.baseKind!.protocolType)" - : "" + trait.baseKind == nil ? "" : ", \(trait.baseKind!.protocolType)" ) """ ) { @@ -34,7 +32,7 @@ let syntaxTraitsFile = SourceFileSyntax(leadingTrivia: copyrightHeader) { DeclSyntax( """ - \(child.documentation) + \(child.documentation)\ \(child.apiAttributes)var \(child.varOrCaseName): \(child.syntaxNodeKind.syntaxType)\(raw: questionMark) { get set } """ ) diff --git a/CodeGeneration/Sources/generate-swift-syntax/templates/swiftsyntaxbuilder/ResultBuildersFile.swift b/CodeGeneration/Sources/generate-swift-syntax/templates/swiftsyntaxbuilder/ResultBuildersFile.swift index bccc195f5b6..3d2f20c34a3 100644 --- a/CodeGeneration/Sources/generate-swift-syntax/templates/swiftsyntaxbuilder/ResultBuildersFile.swift +++ b/CodeGeneration/Sources/generate-swift-syntax/templates/swiftsyntaxbuilder/ResultBuildersFile.swift @@ -23,7 +23,6 @@ let resultBuildersFile = SourceFileSyntax(leadingTrivia: copyrightHeader) { try! StructDeclSyntax( """ - // MARK: - \(type.resultBuilderType) @resultBuilder diff --git a/Sources/SwiftSyntax/generated/SyntaxTraits.swift b/Sources/SwiftSyntax/generated/SyntaxTraits.swift index eeab6536f13..141fb95c423 100644 --- a/Sources/SwiftSyntax/generated/SyntaxTraits.swift +++ b/Sources/SwiftSyntax/generated/SyntaxTraits.swift @@ -14,7 +14,6 @@ // MARK: - BracedSyntax - public protocol BracedSyntax: SyntaxProtocol { /// ### Tokens /// @@ -62,7 +61,6 @@ public extension SyntaxProtocol { // MARK: - DeclGroupSyntax - public protocol DeclGroupSyntax: SyntaxProtocol, DeclSyntaxProtocol { var attributes: AttributeListSyntax { get @@ -120,7 +118,6 @@ public extension SyntaxProtocol { // MARK: - EffectSpecifiersSyntax - public protocol EffectSpecifiersSyntax: SyntaxProtocol { var unexpectedBeforeAsyncSpecifier: UnexpectedNodesSyntax? { get @@ -182,7 +179,6 @@ public extension SyntaxProtocol { // MARK: - FreestandingMacroExpansionSyntax - public protocol FreestandingMacroExpansionSyntax: SyntaxProtocol { /// ### Tokens /// @@ -266,7 +262,6 @@ public extension SyntaxProtocol { // MARK: - NamedDeclSyntax - public protocol NamedDeclSyntax: SyntaxProtocol { /// ### Tokens /// @@ -350,7 +345,6 @@ public extension SyntaxProtocol { // MARK: - ParenthesizedSyntax - public protocol ParenthesizedSyntax: SyntaxProtocol { /// ### Tokens /// @@ -398,7 +392,6 @@ public extension SyntaxProtocol { // MARK: - WithAttributesSyntax - public protocol WithAttributesSyntax: SyntaxProtocol { var attributes: AttributeListSyntax { get @@ -435,7 +428,6 @@ public extension SyntaxProtocol { // MARK: - WithCodeBlockSyntax - public protocol WithCodeBlockSyntax: SyntaxProtocol { var body: CodeBlockSyntax { get @@ -518,7 +510,6 @@ public extension SyntaxProtocol { // MARK: - WithModifiersSyntax - public protocol WithModifiersSyntax: SyntaxProtocol { var modifiers: DeclModifierListSyntax { get @@ -555,7 +546,6 @@ public extension SyntaxProtocol { // MARK: - WithOptionalCodeBlockSyntax - public protocol WithOptionalCodeBlockSyntax: SyntaxProtocol { var body: CodeBlockSyntax? { get @@ -592,7 +582,6 @@ public extension SyntaxProtocol { // MARK: - WithStatementsSyntax - public protocol WithStatementsSyntax: SyntaxProtocol { var statements: CodeBlockItemListSyntax { get @@ -629,7 +618,6 @@ public extension SyntaxProtocol { // MARK: - WithTrailingCommaSyntax - public protocol WithTrailingCommaSyntax: SyntaxProtocol { /// ### Tokens ///