diff --git a/CodeGeneration/Sources/SyntaxSupport/ExprNodes.swift b/CodeGeneration/Sources/SyntaxSupport/ExprNodes.swift index bbe76f8e776..1d75123631e 100644 --- a/CodeGeneration/Sources/SyntaxSupport/ExprNodes.swift +++ b/CodeGeneration/Sources/SyntaxSupport/ExprNodes.swift @@ -214,9 +214,8 @@ public let EXPR_NODES: [Node] = [ ), Node( - kind: .canImportExpr, + kind: ._canImportExpr, base: .expr, - deprecationMessage: "'canImport' directives are now represented as a `FunctionCallExpr`", nameForDiagnostics: "'canImport' expression", children: [ Child( @@ -233,7 +232,7 @@ public let EXPR_NODES: [Node] = [ ), Child( name: "versionInfo", - kind: .node(kind: .canImportVersionInfo), + kind: .node(kind: ._canImportVersionInfo), isOptional: true ), Child( @@ -244,9 +243,8 @@ public let EXPR_NODES: [Node] = [ ), Node( - kind: .canImportVersionInfo, + kind: ._canImportVersionInfo, base: .expr, - deprecationMessage: "'canImport' directives are now represented as a `FunctionCallExpr`", nameForDiagnostics: nil, children: [ Child( diff --git a/CodeGeneration/Sources/SyntaxSupport/KeywordSpec.swift b/CodeGeneration/Sources/SyntaxSupport/KeywordSpec.swift index eaff61fad2f..d66fc645917 100644 --- a/CodeGeneration/Sources/SyntaxSupport/KeywordSpec.swift +++ b/CodeGeneration/Sources/SyntaxSupport/KeywordSpec.swift @@ -43,8 +43,17 @@ public struct KeywordSpec { /// /// This is typically used to mark APIs as SPI when the keyword is part of an experimental language feature. public var apiAttributes: AttributeListSyntax { - guard isExperimental else { return "" } - return AttributeListSyntax("@_spi(ExperimentalLanguageFeatures)").with(\.trailingTrivia, .newline) + let attrList = AttributeListSyntax { + if isExperimental { + let experimentalSPI: AttributeListSyntax = """ + #if compiler(>=5.8) + @_spi(ExperimentalLanguageFeatures) + #endif + """ + experimentalSPI.with(\.trailingTrivia, .newline) + } + } + return attrList.with(\.trailingTrivia, attrList.isEmpty ? [] : .newline) } /// Initializes a new `KeywordSpec` instance. diff --git a/CodeGeneration/Sources/SyntaxSupport/Node.swift b/CodeGeneration/Sources/SyntaxSupport/Node.swift index ee3b3f5adfe..9c6dd5aa47d 100644 --- a/CodeGeneration/Sources/SyntaxSupport/Node.swift +++ b/CodeGeneration/Sources/SyntaxSupport/Node.swift @@ -40,9 +40,6 @@ public class Node { /// The kind of node’s supertype. This kind must have `isBase == true` public let base: SyntaxNodeKind - /// If this syntax node has been deprecated, a message that describes the deprecation. - public let deprecationMessage: String? - /// The experimental feature the node is part of, or `nil` if this isn't /// for an experimental feature. public let experimentalFeature: ExperimentalFeature? @@ -109,9 +106,6 @@ public class Node { """ experimentalSPI.with(\.trailingTrivia, .newline) } - if let deprecationMessage { - "@available(*, deprecated, message: \(literal: deprecationMessage))" - } if forRaw { "@_spi(RawSyntax)" } @@ -133,7 +127,6 @@ public class Node { init( kind: SyntaxNodeKind, base: SyntaxNodeKind, - deprecationMessage: String? = nil, experimentalFeature: ExperimentalFeature? = nil, nameForDiagnostics: String?, documentation: String? = nil, @@ -146,7 +139,6 @@ public class Node { self.kind = kind self.base = base - self.deprecationMessage = deprecationMessage self.experimentalFeature = experimentalFeature self.nameForDiagnostics = nameForDiagnostics self.documentation = SwiftSyntax.Trivia.docCommentTrivia(from: documentation) @@ -241,7 +233,11 @@ public class Node { // This will repeat the syntax type before and after the dot, which is // a little unfortunate, but it's the only way I found to get docc to // generate a fully-qualified type + member. - return " - \($0.node.doccLink).``\($0.node.syntaxType)/\(childName)``" + if $0.node.isAvailableInDocc { + return " - \($0.node.doccLink).``\($0.node.syntaxType)/\(childName)``" + } else { + return " - \($0.node.doccLink).`\($0.node.syntaxType)/\(childName)`" + } } else { return " - \($0.node.doccLink)" } @@ -265,7 +261,7 @@ public class Node { let list = SYNTAX_NODES - .filter { $0.base == self.kind && !$0.isExperimental } + .filter { $0.base == self.kind && !$0.isExperimental && !$0.kind.isDeprecated } .map { "- \($0.kind.doccLink)" } .joined(separator: "\n") @@ -288,7 +284,6 @@ public class Node { init( kind: SyntaxNodeKind, base: SyntaxNodeKind, - deprecationMessage: String? = nil, experimentalFeature: ExperimentalFeature? = nil, nameForDiagnostics: String?, documentation: String? = nil, @@ -298,7 +293,6 @@ public class Node { self.kind = kind precondition(base == .syntaxCollection) self.base = base - self.deprecationMessage = deprecationMessage self.experimentalFeature = experimentalFeature self.nameForDiagnostics = nameForDiagnostics self.documentation = SwiftSyntax.Trivia.docCommentTrivia(from: documentation) diff --git a/CodeGeneration/Sources/SyntaxSupport/String+Extensions.swift b/CodeGeneration/Sources/SyntaxSupport/String+Extensions.swift index 93884aa0e35..32d7b32809a 100644 --- a/CodeGeneration/Sources/SyntaxSupport/String+Extensions.swift +++ b/CodeGeneration/Sources/SyntaxSupport/String+Extensions.swift @@ -11,8 +11,18 @@ //===----------------------------------------------------------------------===// public extension StringProtocol { - var withFirstCharacterLowercased: String { prefix(1).lowercased() + dropFirst() } - var withFirstCharacterUppercased: String { prefix(1).uppercased() + dropFirst() } + var withFirstCharacterLowercased: String { + guard first?.isLetter ?? false else { + return String(first!) + dropFirst().withFirstCharacterLowercased + } + return prefix(1).lowercased() + dropFirst() + } + var withFirstCharacterUppercased: String { + guard first?.isLetter ?? false else { + return String(first!) + dropFirst().withFirstCharacterUppercased + } + return prefix(1).uppercased() + dropFirst() + } var backtickedIfNeeded: String { if Keyword.allCases.map(\.spec).contains(where: { $0.name == self && ($0.isLexerClassified || $0.name == "Type" || $0.name == "Protocol") @@ -23,3 +33,12 @@ public extension StringProtocol { } } } + +extension String { + public var droppingLeadingUnderscores: String { + if first == "_" { + return String(self.dropFirst()) + } + return self + } +} diff --git a/CodeGeneration/Sources/SyntaxSupport/SyntaxNodeKind.swift b/CodeGeneration/Sources/SyntaxSupport/SyntaxNodeKind.swift index 5ea26147675..3c460095a91 100644 --- a/CodeGeneration/Sources/SyntaxSupport/SyntaxNodeKind.swift +++ b/CodeGeneration/Sources/SyntaxSupport/SyntaxNodeKind.swift @@ -20,6 +20,8 @@ import SwiftSyntaxBuilder public enum SyntaxNodeKind: String, CaseIterable { // Please keep this list sorted alphabetically + case _canImportExpr + case _canImportVersionInfo case accessorBlock case accessorDecl case accessorDeclList @@ -47,8 +49,6 @@ public enum SyntaxNodeKind: String, CaseIterable { case booleanLiteralExpr case borrowExpr case breakStmt - case canImportExpr - case canImportVersionInfo case catchClause case catchClauseList case catchItem @@ -355,14 +355,25 @@ public enum SyntaxNodeKind: String, CaseIterable { } } + /// Whether the node is public API and not underscored/deprecated and can thus be referenced in docc links. + public var isAvailableInDocc: Bool { + if let node = SYNTAX_NODE_MAP[self], node.isExperimental { + return false + } else if isDeprecated { + return false + } else { + return true + } + } + /// If this node is non-experimental a docc link wrapped in two backticks. /// /// For experimental nodes, the node's type name in code font. public var doccLink: String { - if let node = SYNTAX_NODE_MAP[self], node.isExperimental { - return "`\(syntaxType)`" - } else { + if isAvailableInDocc { return "``\(syntaxType)``" + } else { + return "`\(syntaxType)`" } } @@ -405,6 +416,8 @@ public enum SyntaxNodeKind: String, CaseIterable { /// deprecated. public var deprecatedRawValue: String? { switch self { + case ._canImportExpr: return "canImportExpr" + case ._canImportVersionInfo: return "canImportVersionInfo" case .accessorDeclList: return "accessorList" case .accessorParameters: return "accessorParameter" case .associatedTypeDecl: return "associatedtypeDecl" @@ -475,4 +488,24 @@ public enum SyntaxNodeKind: String, CaseIterable { default: return nil } } + + public var deprecationMessage: String? { + switch self { + case ._canImportExpr: return "'canImport' directives are now represented as a `FunctionCallExpr`" + case ._canImportVersionInfo: return "'canImport' directives are now represented as a `FunctionCallExpr`" + default: return nil + } + } + + public var isDeprecated: Bool { + return rawValue.first == "_" + } + + var deprecationAttribute: AttributeSyntax? { + if let deprecationMessage = deprecationMessage { + AttributeSyntax("@available(*, deprecated, message: \(literal: deprecationMessage)") + } else { + AttributeSyntax(#"@available(*, deprecated, renamed: "\#(syntaxType)")"#) + } + } } diff --git a/CodeGeneration/Sources/SyntaxSupport/SyntaxNodes.swift b/CodeGeneration/Sources/SyntaxSupport/SyntaxNodes.swift index f06a97fa329..3987c07cbfc 100644 --- a/CodeGeneration/Sources/SyntaxSupport/SyntaxNodes.swift +++ b/CodeGeneration/Sources/SyntaxSupport/SyntaxNodes.swift @@ -10,8 +10,8 @@ // //===----------------------------------------------------------------------===// -public let SYNTAX_NODES: [Node] = - (COMMON_NODES +private let unsortedSyntaxNodes: [Node] = + COMMON_NODES + EXPR_NODES + DECL_NODES + ATTRIBUTE_NODES @@ -19,7 +19,15 @@ public let SYNTAX_NODES: [Node] = + GENERIC_NODES + TYPE_NODES + PATTERN_NODES - + AVAILABILITY_NODES).sorted { $0.kind.syntaxType.description < $1.kind.syntaxType.description } + + AVAILABILITY_NODES + +public let SYNTAX_NODES: [Node] = + unsortedSyntaxNodes + .sorted { (lhs: Node, rhs: Node) -> Bool in + let lhsSortKey = lhs.kind.syntaxType.description.droppingLeadingUnderscores + let rhsSortKey = rhs.kind.syntaxType.description.droppingLeadingUnderscores + return lhsSortKey < rhsSortKey + } /// A lookup table of nodes indexed by their kind. public let SYNTAX_NODE_MAP: [SyntaxNodeKind: Node] = Dictionary( diff --git a/CodeGeneration/Sources/generate-swift-syntax/templates/swiftsyntax/RawSyntaxNodesFile.swift b/CodeGeneration/Sources/generate-swift-syntax/templates/swiftsyntax/RawSyntaxNodesFile.swift index 18f72a77a4a..60d9aeb0c52 100644 --- a/CodeGeneration/Sources/generate-swift-syntax/templates/swiftsyntax/RawSyntaxNodesFile.swift +++ b/CodeGeneration/Sources/generate-swift-syntax/templates/swiftsyntax/RawSyntaxNodesFile.swift @@ -42,7 +42,10 @@ fileprivate extension Node { func rawSyntaxNodesFile(nodesStartingWith: [Character]) -> SourceFileSyntax { return SourceFileSyntax(leadingTrivia: copyrightHeader) { for node in SYNTAX_NODES - where node.kind.isBase && nodesStartingWith.contains(node.kind.syntaxType.description.first!) { + where node.kind.isBase + && nodesStartingWith.contains(node.kind.syntaxType.description.droppingLeadingUnderscores.first!) + && !node.kind.isDeprecated + { DeclSyntax( """ \(node.apiAttributes(forRaw: true))\ @@ -51,7 +54,8 @@ func rawSyntaxNodesFile(nodesStartingWith: [Character]) -> SourceFileSyntax { ) } - for node in SYNTAX_NODES where nodesStartingWith.contains(node.kind.syntaxType.description.first!) { + for node in SYNTAX_NODES + where nodesStartingWith.contains(node.kind.syntaxType.description.droppingLeadingUnderscores.first!) { try! StructDeclSyntax( """ \(node.apiAttributes(forRaw: true))\ diff --git a/CodeGeneration/Sources/generate-swift-syntax/templates/swiftsyntax/RenamedSyntaxNodesFile.swift b/CodeGeneration/Sources/generate-swift-syntax/templates/swiftsyntax/RenamedSyntaxNodesFile.swift index ff1edd72331..02c1f9ce1b7 100644 --- a/CodeGeneration/Sources/generate-swift-syntax/templates/swiftsyntax/RenamedSyntaxNodesFile.swift +++ b/CodeGeneration/Sources/generate-swift-syntax/templates/swiftsyntax/RenamedSyntaxNodesFile.swift @@ -15,12 +15,19 @@ import SwiftSyntaxBuilder import SyntaxSupport import Utils +func deprecationAttribute(for syntaxKind: SyntaxNodeKind) -> AttributeSyntax { + if let deprecationMessage = syntaxKind.deprecationMessage { + return AttributeSyntax("@available(*, deprecated, message: \(literal: deprecationMessage))") + } + return AttributeSyntax(#"@available(*, deprecated, renamed: "\#(syntaxKind.syntaxType)")"#) +} + let renamedSyntaxNodesFile = SourceFileSyntax(leadingTrivia: copyrightHeader) { for syntaxKind in SyntaxNodeKind.allCases.sorted(by: { $0.deprecatedRawValue ?? "" < $1.deprecatedRawValue ?? "" }) { if let deprecatedName = syntaxKind.deprecatedRawValue { DeclSyntax( """ - @available(*, deprecated, renamed: "\(syntaxKind.syntaxType)") + \(deprecationAttribute(for: syntaxKind)) public typealias \(raw: deprecatedName.withFirstCharacterUppercased)Syntax = \(syntaxKind.syntaxType) """ ) @@ -33,6 +40,7 @@ let renamedSyntaxNodesFile = SourceFileSyntax(leadingTrivia: copyrightHeader) { if let deprecatedName = syntaxKind.deprecatedRawValue { DeclSyntax( """ + \(deprecationAttribute(for: syntaxKind)) static var \(raw: deprecatedName): Self { return .\(syntaxKind.varOrCaseName) } diff --git a/CodeGeneration/Sources/generate-swift-syntax/templates/swiftsyntax/SwiftSyntaxDoccIndex.swift b/CodeGeneration/Sources/generate-swift-syntax/templates/swiftsyntax/SwiftSyntaxDoccIndex.swift index 69c4282b85f..d81e1b11ca3 100644 --- a/CodeGeneration/Sources/generate-swift-syntax/templates/swiftsyntax/SwiftSyntaxDoccIndex.swift +++ b/CodeGeneration/Sources/generate-swift-syntax/templates/swiftsyntax/SwiftSyntaxDoccIndex.swift @@ -39,7 +39,7 @@ let nodesSections: String = { let baseTypes = ["\(baseKind.syntaxType)", "\(baseKind.syntaxType)Protocol", "Missing\(baseKind.syntaxType)"] let leafTypes = SYNTAX_NODES - .filter({ $0.base == baseKind && !$0.kind.isMissing && !$0.isExperimental }) + .filter({ $0.base == baseKind && !$0.kind.isMissing && !$0.isExperimental && !$0.kind.isDeprecated }) .map(\.kind.syntaxType.description) addSection(heading: heading, types: baseTypes + leafTypes) } @@ -56,7 +56,7 @@ let nodesSections: String = { } return [node.kind.syntaxType.description] + node.elementChoices - .filter { SYNTAX_NODE_MAP[$0] != nil && !SYNTAX_NODE_MAP[$0]!.isExperimental } + .filter { SYNTAX_NODE_MAP[$0] != nil && !SYNTAX_NODE_MAP[$0]!.isExperimental && !$0.isDeprecated } .map(\.syntaxType.description) .filter { !handledSyntaxTypes.contains($0) } }) @@ -64,14 +64,16 @@ let nodesSections: String = { addSection( heading: "Attributes", - types: ATTRIBUTE_NODES.filter({ !$0.isExperimental }).map(\.kind.syntaxType.description).sorted() + types: ATTRIBUTE_NODES.filter({ !$0.isExperimental && !$0.kind.isDeprecated }).map(\.kind.syntaxType.description) + .sorted() ) addSection( heading: "Miscellaneous Syntax", - types: SYNTAX_NODES.filter({ !$0.isExperimental }).map(\.kind.syntaxType.description).filter({ - !handledSyntaxTypes.contains($0) - }) + types: SYNTAX_NODES.filter({ !$0.isExperimental && !$0.kind.isDeprecated }).map(\.kind.syntaxType.description) + .filter({ + !handledSyntaxTypes.contains($0) + }) ) addSection(heading: "Traits", types: TRAITS.map { "\($0.protocolName)" }) diff --git a/CodeGeneration/Sources/generate-swift-syntax/templates/swiftsyntax/SyntaxNodesFile.swift b/CodeGeneration/Sources/generate-swift-syntax/templates/swiftsyntax/SyntaxNodesFile.swift index ca435890dbb..f983a49ed9f 100644 --- a/CodeGeneration/Sources/generate-swift-syntax/templates/swiftsyntax/SyntaxNodesFile.swift +++ b/CodeGeneration/Sources/generate-swift-syntax/templates/swiftsyntax/SyntaxNodesFile.swift @@ -22,7 +22,7 @@ import Utils func syntaxNode(nodesStartingWith: [Character]) -> SourceFileSyntax { SourceFileSyntax(leadingTrivia: copyrightHeader) { for node in SYNTAX_NODES.compactMap(\.layoutNode) - where nodesStartingWith.contains(node.kind.syntaxType.description.first!) { + where nodesStartingWith.contains(node.kind.syntaxType.description.droppingLeadingUnderscores.first!) { // We are actually handling this node now try! StructDeclSyntax( """ diff --git a/CodeGeneration/Tests/ValidateSyntaxNodes/ValidateSyntaxNodes.swift b/CodeGeneration/Tests/ValidateSyntaxNodes/ValidateSyntaxNodes.swift index 0decc847b3a..93046782bf3 100644 --- a/CodeGeneration/Tests/ValidateSyntaxNodes/ValidateSyntaxNodes.swift +++ b/CodeGeneration/Tests/ValidateSyntaxNodes/ValidateSyntaxNodes.swift @@ -136,7 +136,7 @@ class ValidateSyntaxNodes: XCTestCase { failures, expectedFailures: [ ValidationFailure( - node: .canImportVersionInfo, + node: ._canImportVersionInfo, message: "has base kind 'ExprSyntax' but type name doesn’t have 'ExprSyntax' suffix" ), ValidationFailure( @@ -535,7 +535,7 @@ class ValidateSyntaxNodes: XCTestCase { expectedFailures: [ ValidationFailure(node: .accessorParameters, message: "could conform to trait 'NamedDecl' but does not"), ValidationFailure(node: .availabilityCondition, message: "could conform to trait 'Parenthesized' but does not"), - ValidationFailure(node: .canImportExpr, message: "could conform to trait 'Parenthesized' but does not"), + ValidationFailure(node: ._canImportExpr, message: "could conform to trait 'Parenthesized' but does not"), ValidationFailure( node: .differentiabilityArguments, message: "could conform to trait 'Parenthesized' but does not" diff --git a/Sources/SwiftBasicFormat/BasicFormat.swift b/Sources/SwiftBasicFormat/BasicFormat.swift index b1449e05650..e94bae99910 100644 --- a/Sources/SwiftBasicFormat/BasicFormat.swift +++ b/Sources/SwiftBasicFormat/BasicFormat.swift @@ -148,7 +148,7 @@ open class BasicFormat: SyntaxRewriter { return true case .ifConfigClauseList: return true - case .memberDeclList: + case .memberBlockItemList: return true case .switchCaseList: return true diff --git a/Sources/SwiftParser/Declarations.swift b/Sources/SwiftParser/Declarations.swift index 7900150be3a..a0888744ac4 100644 --- a/Sources/SwiftParser/Declarations.swift +++ b/Sources/SwiftParser/Declarations.swift @@ -711,7 +711,7 @@ extension Parser { extension Parser { mutating func parseMemberBlockItem() -> RawMemberBlockItemSyntax? { let startToken = self.currentToken - if let syntax = self.loadCurrentSyntaxNodeFromCache(for: .memberDeclListItem) { + if let syntax = self.loadCurrentSyntaxNodeFromCache(for: .memberBlockItem) { self.registerNodeForIncrementalParse(node: syntax.raw, startToken: startToken) return RawMemberBlockItemSyntax(syntax.raw) } diff --git a/Sources/SwiftParser/generated/Parser+TokenSpecSet.swift b/Sources/SwiftParser/generated/Parser+TokenSpecSet.swift index 2667d7dd55f..952b584e300 100644 --- a/Sources/SwiftParser/generated/Parser+TokenSpecSet.swift +++ b/Sources/SwiftParser/generated/Parser+TokenSpecSet.swift @@ -404,7 +404,7 @@ extension BooleanLiteralExprSyntax { } } -extension CanImportVersionInfoSyntax { +extension _CanImportVersionInfoSyntax { @_spi(Diagnostics) public enum LabelOptions: TokenSpecSet { case _version @@ -802,11 +802,15 @@ extension DeclModifierSyntax { case `private` case `public` case reasync + #if compiler(>=5.8) @_spi(ExperimentalLanguageFeatures) + #endif case _resultDependsOnSelf case required case `static` + #if compiler(>=5.8) @_spi(ExperimentalLanguageFeatures) + #endif case transferring case unowned case weak @@ -2907,11 +2911,17 @@ extension OptionalBindingConditionSyntax { case `let` case `var` case `inout` + #if compiler(>=5.8) @_spi(ExperimentalLanguageFeatures) + #endif case _mutating + #if compiler(>=5.8) @_spi(ExperimentalLanguageFeatures) + #endif case _borrowing + #if compiler(>=5.8) @_spi(ExperimentalLanguageFeatures) + #endif case _consuming init?(lexeme: Lexer.Lexeme, experimentalFeatures: Parser.ExperimentalFeatures) { @@ -3332,9 +3342,13 @@ extension SimpleTypeSpecifierSyntax { case _const case borrowing case consuming + #if compiler(>=5.8) @_spi(ExperimentalLanguageFeatures) + #endif case transferring + #if compiler(>=5.8) @_spi(ExperimentalLanguageFeatures) + #endif case _resultDependsOn init?(lexeme: Lexer.Lexeme, experimentalFeatures: Parser.ExperimentalFeatures) { @@ -3879,11 +3893,17 @@ extension ValueBindingPatternSyntax { case `let` case `var` case `inout` + #if compiler(>=5.8) @_spi(ExperimentalLanguageFeatures) + #endif case _mutating + #if compiler(>=5.8) @_spi(ExperimentalLanguageFeatures) + #endif case _borrowing + #if compiler(>=5.8) @_spi(ExperimentalLanguageFeatures) + #endif case _consuming init?(lexeme: Lexer.Lexeme, experimentalFeatures: Parser.ExperimentalFeatures) { @@ -3970,11 +3990,17 @@ extension VariableDeclSyntax { case `let` case `var` case `inout` + #if compiler(>=5.8) @_spi(ExperimentalLanguageFeatures) + #endif case _mutating + #if compiler(>=5.8) @_spi(ExperimentalLanguageFeatures) + #endif case _borrowing + #if compiler(>=5.8) @_spi(ExperimentalLanguageFeatures) + #endif case _consuming init?(lexeme: Lexer.Lexeme, experimentalFeatures: Parser.ExperimentalFeatures) { diff --git a/Sources/SwiftParserDiagnostics/generated/SyntaxKindNameForDiagnostics.swift b/Sources/SwiftParserDiagnostics/generated/SyntaxKindNameForDiagnostics.swift index 8b2ccf9935c..4ecbb908412 100644 --- a/Sources/SwiftParserDiagnostics/generated/SyntaxKindNameForDiagnostics.swift +++ b/Sources/SwiftParserDiagnostics/generated/SyntaxKindNameForDiagnostics.swift @@ -61,7 +61,7 @@ extension SyntaxKind { return "'_borrow' expression" case .breakStmt: return "'break' statement" - case .canImportExpr: + case ._canImportExpr: return "'canImport' expression" case .catchClauseList: return "'catch' clause" diff --git a/Sources/SwiftSyntax/Documentation.docc/generated/SwiftSyntax.md b/Sources/SwiftSyntax/Documentation.docc/generated/SwiftSyntax.md index 3ffec83b129..b43846641b6 100644 --- a/Sources/SwiftSyntax/Documentation.docc/generated/SwiftSyntax.md +++ b/Sources/SwiftSyntax/Documentation.docc/generated/SwiftSyntax.md @@ -102,8 +102,6 @@ These articles are intended for developers wishing to contribute to SwiftSyntax - - - -- -- - - - diff --git a/Sources/SwiftSyntax/Syntax.swift b/Sources/SwiftSyntax/Syntax.swift index 5763510ab8b..e4aee94a2b7 100644 --- a/Sources/SwiftSyntax/Syntax.swift +++ b/Sources/SwiftSyntax/Syntax.swift @@ -16,7 +16,11 @@ public struct Syntax: SyntaxProtocol, SyntaxHashable { /// We need a heap indirection to store a syntax node's parent. We could use an indirect enum here but explicitly /// modelling it using a class allows us to re-use these heap-allocated objects in `SyntaxVisitor`. - final class Info: Sendable { + /// + /// - Note: `@unchecked Sendable` because `info` is mutable. In Swift 6 and above the variable can be declared as + /// `nonisolated(unsafe)` but that attribute doesn't exist in previous Swift versions and a checked Sendable + /// conformance generates a warning. + final class Info: @unchecked Sendable { // For root node. struct Root: Sendable { private var arena: RetainedSyntaxArena @@ -46,7 +50,11 @@ public struct Syntax: SyntaxProtocol, SyntaxHashable { /// - Important: Must only be set to `nil` when `Syntax.Info` is used in a memory recycling pool /// (eg. in `SyntaxVisitor`). In that case the `Syntax.Info` is considered garbage memory that can be re-used /// later. `info` needs to be set to a real value when `Syntax.Info` is recycled from the memory recycling pool. + #if compiler(>=6.0) + nonisolated(unsafe) var info: InfoImpl! + #else var info: InfoImpl! + #endif } /// Reference to the node's parent or, if this node is the root of a tree, a reference to the `SyntaxArena` to keep diff --git a/Sources/SwiftSyntax/generated/ChildNameForKeyPath.swift b/Sources/SwiftSyntax/generated/ChildNameForKeyPath.swift index adec42bc2ca..b328be7cf7d 100644 --- a/Sources/SwiftSyntax/generated/ChildNameForKeyPath.swift +++ b/Sources/SwiftSyntax/generated/ChildNameForKeyPath.swift @@ -351,45 +351,45 @@ public func childName(_ keyPath: AnyKeyPath) -> String? { return "label" case \BreakStmtSyntax.unexpectedAfterLabel: return "unexpectedAfterLabel" - case \CanImportExprSyntax.unexpectedBeforeCanImportKeyword: + case \_CanImportExprSyntax.unexpectedBeforeCanImportKeyword: return "unexpectedBeforeCanImportKeyword" - case \CanImportExprSyntax.canImportKeyword: + case \_CanImportExprSyntax.canImportKeyword: return "canImportKeyword" - case \CanImportExprSyntax.unexpectedBetweenCanImportKeywordAndLeftParen: + case \_CanImportExprSyntax.unexpectedBetweenCanImportKeywordAndLeftParen: return "unexpectedBetweenCanImportKeywordAndLeftParen" - case \CanImportExprSyntax.leftParen: + case \_CanImportExprSyntax.leftParen: return "leftParen" - case \CanImportExprSyntax.unexpectedBetweenLeftParenAndImportPath: + case \_CanImportExprSyntax.unexpectedBetweenLeftParenAndImportPath: return "unexpectedBetweenLeftParenAndImportPath" - case \CanImportExprSyntax.importPath: + case \_CanImportExprSyntax.importPath: return "importPath" - case \CanImportExprSyntax.unexpectedBetweenImportPathAndVersionInfo: + case \_CanImportExprSyntax.unexpectedBetweenImportPathAndVersionInfo: return "unexpectedBetweenImportPathAndVersionInfo" - case \CanImportExprSyntax.versionInfo: + case \_CanImportExprSyntax.versionInfo: return "versionInfo" - case \CanImportExprSyntax.unexpectedBetweenVersionInfoAndRightParen: + case \_CanImportExprSyntax.unexpectedBetweenVersionInfoAndRightParen: return "unexpectedBetweenVersionInfoAndRightParen" - case \CanImportExprSyntax.rightParen: + case \_CanImportExprSyntax.rightParen: return "rightParen" - case \CanImportExprSyntax.unexpectedAfterRightParen: + case \_CanImportExprSyntax.unexpectedAfterRightParen: return "unexpectedAfterRightParen" - case \CanImportVersionInfoSyntax.unexpectedBeforeComma: + case \_CanImportVersionInfoSyntax.unexpectedBeforeComma: return "unexpectedBeforeComma" - case \CanImportVersionInfoSyntax.comma: + case \_CanImportVersionInfoSyntax.comma: return "comma" - case \CanImportVersionInfoSyntax.unexpectedBetweenCommaAndLabel: + case \_CanImportVersionInfoSyntax.unexpectedBetweenCommaAndLabel: return "unexpectedBetweenCommaAndLabel" - case \CanImportVersionInfoSyntax.label: + case \_CanImportVersionInfoSyntax.label: return "label" - case \CanImportVersionInfoSyntax.unexpectedBetweenLabelAndColon: + case \_CanImportVersionInfoSyntax.unexpectedBetweenLabelAndColon: return "unexpectedBetweenLabelAndColon" - case \CanImportVersionInfoSyntax.colon: + case \_CanImportVersionInfoSyntax.colon: return "colon" - case \CanImportVersionInfoSyntax.unexpectedBetweenColonAndVersion: + case \_CanImportVersionInfoSyntax.unexpectedBetweenColonAndVersion: return "unexpectedBetweenColonAndVersion" - case \CanImportVersionInfoSyntax.version: + case \_CanImportVersionInfoSyntax.version: return "version" - case \CanImportVersionInfoSyntax.unexpectedAfterVersion: + case \_CanImportVersionInfoSyntax.unexpectedAfterVersion: return "unexpectedAfterVersion" case \CatchClauseSyntax.unexpectedBeforeCatchKeyword: return "unexpectedBeforeCatchKeyword" diff --git a/Sources/SwiftSyntax/generated/Keyword.swift b/Sources/SwiftSyntax/generated/Keyword.swift index d38e92e96f6..29a0460c2e7 100644 --- a/Sources/SwiftSyntax/generated/Keyword.swift +++ b/Sources/SwiftSyntax/generated/Keyword.swift @@ -20,14 +20,18 @@ public enum Keyword: UInt8, Hashable, Sendable { case _alignment case _backDeploy case _borrow + #if compiler(>=5.8) @_spi(ExperimentalLanguageFeatures) + #endif case _borrowing case _BridgeObject case _cdecl case _Class case _compilerInitialized case _const + #if compiler(>=5.8) @_spi(ExperimentalLanguageFeatures) + #endif case _consuming case _documentation case _dynamicReplacement @@ -39,7 +43,9 @@ public enum Keyword: UInt8, Hashable, Sendable { case _local case _modify case _move + #if compiler(>=5.8) @_spi(ExperimentalLanguageFeatures) + #endif case _mutating case _NativeClass case _NativeRefCountedObject @@ -104,7 +110,9 @@ public enum Keyword: UInt8, Hashable, Sendable { case `default` case `defer` case `deinit` + #if compiler(>=5.8) @_spi(ExperimentalLanguageFeatures) + #endif case dependsOn case deprecated case derivative @@ -187,9 +195,13 @@ public enum Keyword: UInt8, Hashable, Sendable { case renamed case `repeat` case required + #if compiler(>=5.8) @_spi(ExperimentalLanguageFeatures) + #endif case _resultDependsOn + #if compiler(>=5.8) @_spi(ExperimentalLanguageFeatures) + #endif case _resultDependsOnSelf case `rethrows` case retroactive @@ -197,7 +209,9 @@ public enum Keyword: UInt8, Hashable, Sendable { case reverse case right case safe + #if compiler(>=5.8) @_spi(ExperimentalLanguageFeatures) + #endif case scoped case `self` case `Self` @@ -217,7 +231,9 @@ public enum Keyword: UInt8, Hashable, Sendable { case then case `throw` case `throws` + #if compiler(>=5.8) @_spi(ExperimentalLanguageFeatures) + #endif case transferring case transpose case `true` diff --git a/Sources/SwiftSyntax/generated/RenamedChildrenCompatibility.swift b/Sources/SwiftSyntax/generated/RenamedChildrenCompatibility.swift index 8046f48d3a2..c798061a9e6 100644 --- a/Sources/SwiftSyntax/generated/RenamedChildrenCompatibility.swift +++ b/Sources/SwiftSyntax/generated/RenamedChildrenCompatibility.swift @@ -1025,7 +1025,7 @@ extension BooleanLiteralExprSyntax { } } -extension CanImportVersionInfoSyntax { +extension _CanImportVersionInfoSyntax { @available(*, deprecated, renamed: "unexpectedBetweenColonAndVersion") public var unexpectedBetweenColonAndVersionTuple: UnexpectedNodesSyntax? { get { @@ -1056,7 +1056,7 @@ extension CanImportVersionInfoSyntax { } } - @available(*, deprecated, renamed: "CanImportVersionInfoSyntax(leadingTrivia:_:comma:_:label:_:colon:_:version:_:trailingTrivia:)") + @available(*, deprecated, renamed: "_CanImportVersionInfoSyntax(leadingTrivia:_:comma:_:label:_:colon:_:version:_:trailingTrivia:)") @_disfavoredOverload public init( leadingTrivia: Trivia? = nil, diff --git a/Sources/SwiftSyntax/generated/RenamedNodesCompatibility.swift b/Sources/SwiftSyntax/generated/RenamedNodesCompatibility.swift index 9fc7d663ee4..5af3045b1ed 100644 --- a/Sources/SwiftSyntax/generated/RenamedNodesCompatibility.swift +++ b/Sources/SwiftSyntax/generated/RenamedNodesCompatibility.swift @@ -45,6 +45,12 @@ public typealias AvailabilityVersionRestrictionListEntrySyntax = PlatformVersion @available(*, deprecated, renamed: "BackDeployedAttributeArgumentsSyntax") public typealias BackDeployedAttributeSpecListSyntax = BackDeployedAttributeArgumentsSyntax +@available(*, deprecated, message: "'canImport' directives are now represented as a `FunctionCallExpr`") +public typealias CanImportExprSyntax = _CanImportExprSyntax + +@available(*, deprecated, message: "'canImport' directives are now represented as a `FunctionCallExpr`") +public typealias CanImportVersionInfoSyntax = _CanImportVersionInfoSyntax + @available(*, deprecated, renamed: "SwitchCaseItemSyntax") public typealias CaseItemSyntax = SwitchCaseItemSyntax @@ -214,270 +220,347 @@ public typealias YieldExprListElementSyntax = YieldedExpressionSyntax public typealias YieldListSyntax = YieldedExpressionsClauseSyntax public extension SyntaxKind { + @available(*, deprecated, renamed: "ImportPathComponentListSyntax") static var accessPath: Self { return .importPathComponentList } + @available(*, deprecated, renamed: "ImportPathComponentSyntax") static var accessPathComponent: Self { return .importPathComponent } + @available(*, deprecated, renamed: "AccessorDeclListSyntax") static var accessorList: Self { return .accessorDeclList } + @available(*, deprecated, renamed: "AccessorParametersSyntax") static var accessorParameter: Self { return .accessorParameters } + @available(*, deprecated, renamed: "AssociatedTypeDeclSyntax") static var associatedtypeDecl: Self { return .associatedTypeDecl } + @available(*, deprecated, renamed: "SpecializeAvailabilityArgumentSyntax") static var availabilityEntry: Self { return .specializeAvailabilityArgument } + @available(*, deprecated, renamed: "AvailabilityArgumentListSyntax") static var availabilitySpecList: Self { return .availabilityArgumentList } + @available(*, deprecated, renamed: "PlatformVersionSyntax") static var availabilityVersionRestriction: Self { return .platformVersion } + @available(*, deprecated, renamed: "PlatformVersionItemListSyntax") static var availabilityVersionRestrictionList: Self { return .platformVersionItemList } + @available(*, deprecated, renamed: "PlatformVersionItemSyntax") static var availabilityVersionRestrictionListEntry: Self { return .platformVersionItem } + @available(*, deprecated, renamed: "BackDeployedAttributeArgumentsSyntax") static var backDeployedAttributeSpecList: Self { return .backDeployedAttributeArguments } + @available(*, deprecated, message: "'canImport' directives are now represented as a `FunctionCallExpr`") + static var canImportExpr: Self { + return ._canImportExpr + } + + @available(*, deprecated, message: "'canImport' directives are now represented as a `FunctionCallExpr`") + static var canImportVersionInfo: Self { + return ._canImportVersionInfo + } + + @available(*, deprecated, renamed: "SwitchCaseItemSyntax") static var caseItem: Self { return .switchCaseItem } + @available(*, deprecated, renamed: "SwitchCaseItemListSyntax") static var caseItemList: Self { return .switchCaseItemList } + @available(*, deprecated, renamed: "ClosureCaptureSyntax") static var closureCaptureItem: Self { return .closureCapture } + @available(*, deprecated, renamed: "ClosureCaptureListSyntax") static var closureCaptureItemList: Self { return .closureCaptureList } + @available(*, deprecated, renamed: "ClosureCaptureSpecifierSyntax") static var closureCaptureItemSpecifier: Self { return .closureCaptureSpecifier } + @available(*, deprecated, renamed: "ClosureCaptureClauseSyntax") static var closureCaptureSignature: Self { return .closureCaptureClause } + @available(*, deprecated, renamed: "ClosureShorthandParameterSyntax") static var closureParam: Self { return .closureShorthandParameter } + @available(*, deprecated, renamed: "ClosureShorthandParameterListSyntax") static var closureParamList: Self { return .closureShorthandParameterList } + @available(*, deprecated, renamed: "SomeOrAnyTypeSyntax") static var constrainedSugarType: Self { return .someOrAnyType } + @available(*, deprecated, renamed: "DeinitializerEffectSpecifiersSyntax") static var deinitEffectSpecifiers: Self { return .deinitializerEffectSpecifiers } + @available(*, deprecated, renamed: "DerivativeAttributeArgumentsSyntax") static var derivativeRegistrationAttributeArguments: Self { return .derivativeAttributeArguments } + @available(*, deprecated, renamed: "DesignatedTypeSyntax") static var designatedTypeElement: Self { return .designatedType } + @available(*, deprecated, renamed: "DifferentiabilityArgumentSyntax") static var differentiabilityParam: Self { return .differentiabilityArgument } + @available(*, deprecated, renamed: "DifferentiabilityArgumentListSyntax") static var differentiabilityParamList: Self { return .differentiabilityArgumentList } + @available(*, deprecated, renamed: "DifferentiabilityArgumentsSyntax") static var differentiabilityParams: Self { return .differentiabilityArguments } + @available(*, deprecated, renamed: "DifferentiabilityWithRespectToArgumentSyntax") static var differentiabilityParamsClause: Self { return .differentiabilityWithRespectToArgument } + @available(*, deprecated, renamed: "DocumentationAttributeArgumentListSyntax") static var documentationAttributeArguments: Self { return .documentationAttributeArgumentList } + @available(*, deprecated, renamed: "DynamicReplacementAttributeArgumentsSyntax") static var dynamicReplacementArguments: Self { return .dynamicReplacementAttributeArguments } + @available(*, deprecated, renamed: "EffectsAttributeArgumentListSyntax") static var effectsArguments: Self { return .effectsAttributeArgumentList } + @available(*, deprecated, renamed: "EnumCaseParameterClauseSyntax") static var enumCaseAssociatedValue: Self { return .enumCaseParameterClause } + @available(*, deprecated, renamed: "FallThroughStmtSyntax") static var fallthroughStmt: Self { return .fallThroughStmt } + @available(*, deprecated, renamed: "ForStmtSyntax") static var forInStmt: Self { return .forStmt } + @available(*, deprecated, renamed: "ForceUnwrapExprSyntax") static var forcedValueExpr: Self { return .forceUnwrapExpr } + @available(*, deprecated, renamed: "DeclReferenceExprSyntax") static var identifierExpr: Self { return .declReferenceExpr } + @available(*, deprecated, renamed: "LabeledSpecializeArgumentSyntax") static var labeledSpecializeEntry: Self { return .labeledSpecializeArgument } + @available(*, deprecated, renamed: "MemberBlockSyntax") static var memberDeclBlock: Self { return .memberBlock } + @available(*, deprecated, renamed: "MemberBlockItemListSyntax") static var memberDeclList: Self { return .memberBlockItemList } + @available(*, deprecated, renamed: "MemberBlockItemSyntax") static var memberDeclListItem: Self { return .memberBlockItem } + @available(*, deprecated, renamed: "MemberTypeSyntax") static var memberTypeIdentifier: Self { return .memberType } + @available(*, deprecated, renamed: "DeclModifierListSyntax") static var modifierList: Self { return .declModifierList } + @available(*, deprecated, renamed: "ConsumeExprSyntax") static var moveExpr: Self { return .consumeExpr } + @available(*, deprecated, renamed: "ObjCSelectorPieceListSyntax") static var objCSelector: Self { return .objCSelectorPieceList } + @available(*, deprecated, renamed: "OriginallyDefinedInAttributeArgumentsSyntax") static var originallyDefinedInArguments: Self { return .originallyDefinedInAttributeArguments } + @available(*, deprecated, renamed: "PackElementTypeSyntax") static var packReferenceType: Self { return .packElementType } + @available(*, deprecated, renamed: "FunctionParameterClauseSyntax") static var parameterClause: Self { return .functionParameterClause } + @available(*, deprecated, renamed: "PostfixOperatorExprSyntax") static var postfixUnaryExpr: Self { return .postfixOperatorExpr } + @available(*, deprecated, renamed: "PoundSourceLocationArgumentsSyntax") static var poundSourceLocationArgs: Self { return .poundSourceLocationArguments } + @available(*, deprecated, renamed: "PrecedenceGroupNameSyntax") static var precedenceGroupNameElement: Self { return .precedenceGroupName } + @available(*, deprecated, renamed: "RepeatStmtSyntax") static var repeatWhileStmt: Self { return .repeatStmt } + @available(*, deprecated, renamed: "IdentifierTypeSyntax") static var simpleTypeIdentifier: Self { return .identifierType } + @available(*, deprecated, renamed: "SpecializeAttributeArgumentListSyntax") static var specializeAttributeSpecList: Self { return .specializeAttributeArgumentList } + @available(*, deprecated, renamed: "GenericSpecializationExprSyntax") static var specializeExpr: Self { return .genericSpecializationExpr } + @available(*, deprecated, renamed: "StringLiteralSegmentListSyntax") static var stringLiteralSegments: Self { return .stringLiteralSegmentList } + @available(*, deprecated, renamed: "SubscriptCallExprSyntax") static var subscriptExpr: Self { return .subscriptCallExpr } + @available(*, deprecated, renamed: "SuperExprSyntax") static var superRefExpr: Self { return .superExpr } + @available(*, deprecated, renamed: "SpecializeTargetFunctionArgumentSyntax") static var targetFunctionEntry: Self { return .specializeTargetFunctionArgument } + @available(*, deprecated, renamed: "LabeledExprSyntax") static var tupleExprElement: Self { return .labeledExpr } + @available(*, deprecated, renamed: "LabeledExprListSyntax") static var tupleExprElementList: Self { return .labeledExprList } + @available(*, deprecated, renamed: "InheritanceClauseSyntax") static var typeInheritanceClause: Self { return .inheritanceClause } + @available(*, deprecated, renamed: "SimpleTypeSpecifierSyntax") static var typeSpecifier: Self { return .simpleTypeSpecifier } + @available(*, deprecated, renamed: "TypeAliasDeclSyntax") static var typealiasDecl: Self { return .typeAliasDecl } + @available(*, deprecated, renamed: "UnavailableFromAsyncAttributeArgumentsSyntax") static var unavailableFromAsyncArguments: Self { return .unavailableFromAsyncAttributeArguments } + @available(*, deprecated, renamed: "PatternExprSyntax") static var unresolvedPatternExpr: Self { return .patternExpr } + @available(*, deprecated, renamed: "YieldedExpressionListSyntax") static var yieldExprList: Self { return .yieldedExpressionList } + @available(*, deprecated, renamed: "YieldedExpressionSyntax") static var yieldExprListElement: Self { return .yieldedExpression } + @available(*, deprecated, renamed: "YieldedExpressionsClauseSyntax") static var yieldList: Self { return .yieldedExpressionsClause } diff --git a/Sources/SwiftSyntax/generated/SyntaxAnyVisitor.swift b/Sources/SwiftSyntax/generated/SyntaxAnyVisitor.swift index 83bef83ebef..694fee15c35 100644 --- a/Sources/SwiftSyntax/generated/SyntaxAnyVisitor.swift +++ b/Sources/SwiftSyntax/generated/SyntaxAnyVisitor.swift @@ -272,23 +272,19 @@ open class SyntaxAnyVisitor: SyntaxVisitor { visitAnyPost(node._syntaxNode) } - @available(*, deprecated, message: "'canImport' directives are now represented as a `FunctionCallExpr`") - override open func visit(_ node: CanImportExprSyntax) -> SyntaxVisitorContinueKind { + override open func visit(_ node: _CanImportExprSyntax) -> SyntaxVisitorContinueKind { return visitAny(node._syntaxNode) } - @available(*, deprecated, message: "'canImport' directives are now represented as a `FunctionCallExpr`") - override open func visitPost(_ node: CanImportExprSyntax) { + override open func visitPost(_ node: _CanImportExprSyntax) { visitAnyPost(node._syntaxNode) } - @available(*, deprecated, message: "'canImport' directives are now represented as a `FunctionCallExpr`") - override open func visit(_ node: CanImportVersionInfoSyntax) -> SyntaxVisitorContinueKind { + override open func visit(_ node: _CanImportVersionInfoSyntax) -> SyntaxVisitorContinueKind { return visitAny(node._syntaxNode) } - @available(*, deprecated, message: "'canImport' directives are now represented as a `FunctionCallExpr`") - override open func visitPost(_ node: CanImportVersionInfoSyntax) { + override open func visitPost(_ node: _CanImportVersionInfoSyntax) { visitAnyPost(node._syntaxNode) } diff --git a/Sources/SwiftSyntax/generated/SyntaxBaseNodes.swift b/Sources/SwiftSyntax/generated/SyntaxBaseNodes.swift index e5cd0600dc2..2c85459a2f5 100644 --- a/Sources/SwiftSyntax/generated/SyntaxBaseNodes.swift +++ b/Sources/SwiftSyntax/generated/SyntaxBaseNodes.swift @@ -464,8 +464,6 @@ public extension Syntax { /// - ``BinaryOperatorExprSyntax`` /// - ``BooleanLiteralExprSyntax`` /// - ``BorrowExprSyntax`` -/// - ``CanImportExprSyntax`` -/// - ``CanImportVersionInfoSyntax`` /// - ``ClosureExprSyntax`` /// - ``ConsumeExprSyntax`` /// - ``CopyExprSyntax`` @@ -544,7 +542,7 @@ public struct ExprSyntax: ExprSyntaxProtocol, SyntaxHashable { public init?(_ node: some SyntaxProtocol) { switch node.raw.kind { - case .arrayExpr, .arrowExpr, .asExpr, .assignmentExpr, .awaitExpr, .binaryOperatorExpr, .booleanLiteralExpr, .borrowExpr, .canImportExpr, .canImportVersionInfo, .closureExpr, .consumeExpr, .copyExpr, .declReferenceExpr, .dictionaryExpr, .discardAssignmentExpr, .doExpr, .editorPlaceholderExpr, .floatLiteralExpr, .forceUnwrapExpr, .functionCallExpr, .genericSpecializationExpr, .ifExpr, .inOutExpr, .infixOperatorExpr, .integerLiteralExpr, .isExpr, .keyPathExpr, .macroExpansionExpr, .memberAccessExpr, .missingExpr, .nilLiteralExpr, .optionalChainingExpr, .packElementExpr, .packExpansionExpr, .patternExpr, .postfixIfConfigExpr, .postfixOperatorExpr, .prefixOperatorExpr, .regexLiteralExpr, .sequenceExpr, .simpleStringLiteralExpr, .stringLiteralExpr, .subscriptCallExpr, .superExpr, .switchExpr, .ternaryExpr, .tryExpr, .tupleExpr, .typeExpr, .unresolvedAsExpr, .unresolvedIsExpr, .unresolvedTernaryExpr: + case .arrayExpr, .arrowExpr, .asExpr, .assignmentExpr, .awaitExpr, .binaryOperatorExpr, .booleanLiteralExpr, .borrowExpr, ._canImportExpr, ._canImportVersionInfo, .closureExpr, .consumeExpr, .copyExpr, .declReferenceExpr, .dictionaryExpr, .discardAssignmentExpr, .doExpr, .editorPlaceholderExpr, .floatLiteralExpr, .forceUnwrapExpr, .functionCallExpr, .genericSpecializationExpr, .ifExpr, .inOutExpr, .infixOperatorExpr, .integerLiteralExpr, .isExpr, .keyPathExpr, .macroExpansionExpr, .memberAccessExpr, .missingExpr, .nilLiteralExpr, .optionalChainingExpr, .packElementExpr, .packExpansionExpr, .patternExpr, .postfixIfConfigExpr, .postfixOperatorExpr, .prefixOperatorExpr, .regexLiteralExpr, .sequenceExpr, .simpleStringLiteralExpr, .stringLiteralExpr, .subscriptCallExpr, .superExpr, .switchExpr, .ternaryExpr, .tryExpr, .tupleExpr, .typeExpr, .unresolvedAsExpr, .unresolvedIsExpr, .unresolvedTernaryExpr: self._syntaxNode = node._syntaxNode default: return nil @@ -577,8 +575,8 @@ public struct ExprSyntax: ExprSyntaxProtocol, SyntaxHashable { .node(BinaryOperatorExprSyntax.self), .node(BooleanLiteralExprSyntax.self), .node(BorrowExprSyntax.self), - .node(CanImportExprSyntax.self), - .node(CanImportVersionInfoSyntax.self), + .node(_CanImportExprSyntax.self), + .node(_CanImportVersionInfoSyntax.self), .node(ClosureExprSyntax.self), .node(ConsumeExprSyntax.self), .node(CopyExprSyntax.self), @@ -1546,8 +1544,8 @@ extension Syntax { .node(BooleanLiteralExprSyntax.self), .node(BorrowExprSyntax.self), .node(BreakStmtSyntax.self), - .node(CanImportExprSyntax.self), - .node(CanImportVersionInfoSyntax.self), + .node(_CanImportExprSyntax.self), + .node(_CanImportVersionInfoSyntax.self), .node(CatchClauseListSyntax.self), .node(CatchClauseSyntax.self), .node(CatchItemListSyntax.self), diff --git a/Sources/SwiftSyntax/generated/SyntaxEnum.swift b/Sources/SwiftSyntax/generated/SyntaxEnum.swift index 0654f834647..5b339fbac50 100644 --- a/Sources/SwiftSyntax/generated/SyntaxEnum.swift +++ b/Sources/SwiftSyntax/generated/SyntaxEnum.swift @@ -42,10 +42,8 @@ public enum SyntaxEnum: Sendable { case booleanLiteralExpr(BooleanLiteralExprSyntax) case borrowExpr(BorrowExprSyntax) case breakStmt(BreakStmtSyntax) - @available(*, deprecated, message: "'canImport' directives are now represented as a `FunctionCallExpr`") - case canImportExpr(CanImportExprSyntax) - @available(*, deprecated, message: "'canImport' directives are now represented as a `FunctionCallExpr`") - case canImportVersionInfo(CanImportVersionInfoSyntax) + case _canImportExpr(_CanImportExprSyntax) + case _canImportVersionInfo(_CanImportVersionInfoSyntax) case catchClauseList(CatchClauseListSyntax) case catchClause(CatchClauseSyntax) case catchItemList(CatchItemListSyntax) @@ -377,10 +375,10 @@ public extension Syntax { return .borrowExpr(BorrowExprSyntax(self)!) case .breakStmt: return .breakStmt(BreakStmtSyntax(self)!) - case .canImportExpr: - return .canImportExpr(CanImportExprSyntax(self)!) - case .canImportVersionInfo: - return .canImportVersionInfo(CanImportVersionInfoSyntax(self)!) + case ._canImportExpr: + return ._canImportExpr(_CanImportExprSyntax(self)!) + case ._canImportVersionInfo: + return ._canImportVersionInfo(_CanImportVersionInfoSyntax(self)!) case .catchClauseList: return .catchClauseList(CatchClauseListSyntax(self)!) case .catchClause: @@ -989,10 +987,8 @@ public enum ExprSyntaxEnum { case binaryOperatorExpr(BinaryOperatorExprSyntax) case booleanLiteralExpr(BooleanLiteralExprSyntax) case borrowExpr(BorrowExprSyntax) - @available(*, deprecated, message: "'canImport' directives are now represented as a `FunctionCallExpr`") - case canImportExpr(CanImportExprSyntax) - @available(*, deprecated, message: "'canImport' directives are now represented as a `FunctionCallExpr`") - case canImportVersionInfo(CanImportVersionInfoSyntax) + case _canImportExpr(_CanImportExprSyntax) + case _canImportVersionInfo(_CanImportVersionInfoSyntax) case closureExpr(ClosureExprSyntax) case consumeExpr(ConsumeExprSyntax) case copyExpr(CopyExprSyntax) @@ -1061,10 +1057,10 @@ public extension ExprSyntax { return .booleanLiteralExpr(BooleanLiteralExprSyntax(self)!) case .borrowExpr: return .borrowExpr(BorrowExprSyntax(self)!) - case .canImportExpr: - return .canImportExpr(CanImportExprSyntax(self)!) - case .canImportVersionInfo: - return .canImportVersionInfo(CanImportVersionInfoSyntax(self)!) + case ._canImportExpr: + return ._canImportExpr(_CanImportExprSyntax(self)!) + case ._canImportVersionInfo: + return ._canImportVersionInfo(_CanImportVersionInfoSyntax(self)!) case .closureExpr: return .closureExpr(ClosureExprSyntax(self)!) case .consumeExpr: diff --git a/Sources/SwiftSyntax/generated/SyntaxKind.swift b/Sources/SwiftSyntax/generated/SyntaxKind.swift index 05829bf445b..b8e5d120a01 100644 --- a/Sources/SwiftSyntax/generated/SyntaxKind.swift +++ b/Sources/SwiftSyntax/generated/SyntaxKind.swift @@ -42,10 +42,8 @@ public enum SyntaxKind: Sendable { case booleanLiteralExpr case borrowExpr case breakStmt - @available(*, deprecated, message: "'canImport' directives are now represented as a `FunctionCallExpr`") - case canImportExpr - @available(*, deprecated, message: "'canImport' directives are now represented as a `FunctionCallExpr`") - case canImportVersionInfo + case _canImportExpr + case _canImportVersionInfo case catchClauseList case catchClause case catchItemList @@ -502,10 +500,10 @@ public enum SyntaxKind: Sendable { return BorrowExprSyntax.self case .breakStmt: return BreakStmtSyntax.self - case .canImportExpr: - return CanImportExprSyntax.self - case .canImportVersionInfo: - return CanImportVersionInfoSyntax.self + case ._canImportExpr: + return _CanImportExprSyntax.self + case ._canImportVersionInfo: + return _CanImportVersionInfoSyntax.self case .catchClauseList: return CatchClauseListSyntax.self case .catchClause: diff --git a/Sources/SwiftSyntax/generated/SyntaxRewriter.swift b/Sources/SwiftSyntax/generated/SyntaxRewriter.swift index 7a2bb82f013..85941d4a076 100644 --- a/Sources/SwiftSyntax/generated/SyntaxRewriter.swift +++ b/Sources/SwiftSyntax/generated/SyntaxRewriter.swift @@ -269,19 +269,17 @@ open class SyntaxRewriter { return StmtSyntax(visitChildren(node)) } - /// Visit a ``CanImportExprSyntax``. + /// Visit a `_CanImportExprSyntax`. /// - Parameter node: the node that is being visited /// - Returns: the rewritten node - @available(*, deprecated, message: "'canImport' directives are now represented as a `FunctionCallExpr`") - open func visit(_ node: CanImportExprSyntax) -> ExprSyntax { + open func visit(_ node: _CanImportExprSyntax) -> ExprSyntax { return ExprSyntax(visitChildren(node)) } - /// Visit a ``CanImportVersionInfoSyntax``. + /// Visit a `_CanImportVersionInfoSyntax`. /// - Parameter node: the node that is being visited /// - Returns: the rewritten node - @available(*, deprecated, message: "'canImport' directives are now represented as a `FunctionCallExpr`") - open func visit(_ node: CanImportVersionInfoSyntax) -> ExprSyntax { + open func visit(_ node: _CanImportVersionInfoSyntax) -> ExprSyntax { return ExprSyntax(visitChildren(node)) } @@ -2270,13 +2268,13 @@ open class SyntaxRewriter { return { self.visitImpl($0, BreakStmtSyntax.self, self.visit) } - case .canImportExpr: + case ._canImportExpr: return { - self.visitImpl($0, CanImportExprSyntax.self, self.visit) + self.visitImpl($0, _CanImportExprSyntax.self, self.visit) } - case .canImportVersionInfo: + case ._canImportVersionInfo: return { - self.visitImpl($0, CanImportVersionInfoSyntax.self, self.visit) + self.visitImpl($0, _CanImportVersionInfoSyntax.self, self.visit) } case .catchClauseList: return { @@ -3358,10 +3356,10 @@ open class SyntaxRewriter { return visitImpl(node, BorrowExprSyntax.self, visit) case .breakStmt: return visitImpl(node, BreakStmtSyntax.self, visit) - case .canImportExpr: - return visitImpl(node, CanImportExprSyntax.self, visit) - case .canImportVersionInfo: - return visitImpl(node, CanImportVersionInfoSyntax.self, visit) + case ._canImportExpr: + return visitImpl(node, _CanImportExprSyntax.self, visit) + case ._canImportVersionInfo: + return visitImpl(node, _CanImportVersionInfoSyntax.self, visit) case .catchClauseList: return visitImpl(node, CatchClauseListSyntax.self, visit) case .catchClause: diff --git a/Sources/SwiftSyntax/generated/SyntaxVisitor.swift b/Sources/SwiftSyntax/generated/SyntaxVisitor.swift index 4468b10c27b..f0fe0479292 100644 --- a/Sources/SwiftSyntax/generated/SyntaxVisitor.swift +++ b/Sources/SwiftSyntax/generated/SyntaxVisitor.swift @@ -377,32 +377,28 @@ open class SyntaxVisitor { open func visitPost(_ node: BreakStmtSyntax) { } - /// Visiting ``CanImportExprSyntax`` specifically. + /// Visiting `_CanImportExprSyntax` specifically. /// - Parameter node: the node we are visiting. /// - Returns: how should we continue visiting. - @available(*, deprecated, message: "'canImport' directives are now represented as a `FunctionCallExpr`") - open func visit(_ node: CanImportExprSyntax) -> SyntaxVisitorContinueKind { + open func visit(_ node: _CanImportExprSyntax) -> SyntaxVisitorContinueKind { return .visitChildren } - /// The function called after visiting ``CanImportExprSyntax`` and its descendants. + /// The function called after visiting `_CanImportExprSyntax` and its descendants. /// - node: the node we just finished visiting. - @available(*, deprecated, message: "'canImport' directives are now represented as a `FunctionCallExpr`") - open func visitPost(_ node: CanImportExprSyntax) { + open func visitPost(_ node: _CanImportExprSyntax) { } - /// Visiting ``CanImportVersionInfoSyntax`` specifically. + /// Visiting `_CanImportVersionInfoSyntax` specifically. /// - Parameter node: the node we are visiting. /// - Returns: how should we continue visiting. - @available(*, deprecated, message: "'canImport' directives are now represented as a `FunctionCallExpr`") - open func visit(_ node: CanImportVersionInfoSyntax) -> SyntaxVisitorContinueKind { + open func visit(_ node: _CanImportVersionInfoSyntax) -> SyntaxVisitorContinueKind { return .visitChildren } - /// The function called after visiting ``CanImportVersionInfoSyntax`` and its descendants. + /// The function called after visiting `_CanImportVersionInfoSyntax` and its descendants. /// - node: the node we just finished visiting. - @available(*, deprecated, message: "'canImport' directives are now represented as a `FunctionCallExpr`") - open func visitPost(_ node: CanImportVersionInfoSyntax) { + open func visitPost(_ node: _CanImportVersionInfoSyntax) { } /// Visiting ``CatchClauseListSyntax`` specifically. @@ -3662,13 +3658,13 @@ open class SyntaxVisitor { return { self.visitImpl(&$0, BreakStmtSyntax.self, self.visit, self.visitPost) } - case .canImportExpr: + case ._canImportExpr: return { - self.visitImpl(&$0, CanImportExprSyntax.self, self.visit, self.visitPost) + self.visitImpl(&$0, _CanImportExprSyntax.self, self.visit, self.visitPost) } - case .canImportVersionInfo: + case ._canImportVersionInfo: return { - self.visitImpl(&$0, CanImportVersionInfoSyntax.self, self.visit, self.visitPost) + self.visitImpl(&$0, _CanImportVersionInfoSyntax.self, self.visit, self.visitPost) } case .catchClauseList: return { @@ -4754,10 +4750,10 @@ open class SyntaxVisitor { visitImpl(&node, BorrowExprSyntax.self, visit, visitPost) case .breakStmt: visitImpl(&node, BreakStmtSyntax.self, visit, visitPost) - case .canImportExpr: - visitImpl(&node, CanImportExprSyntax.self, visit, visitPost) - case .canImportVersionInfo: - visitImpl(&node, CanImportVersionInfoSyntax.self, visit, visitPost) + case ._canImportExpr: + visitImpl(&node, _CanImportExprSyntax.self, visit, visitPost) + case ._canImportVersionInfo: + visitImpl(&node, _CanImportVersionInfoSyntax.self, visit, visitPost) case .catchClauseList: visitImpl(&node, CatchClauseListSyntax.self, visit, visitPost) case .catchClause: diff --git a/Sources/SwiftSyntax/generated/raw/RawSyntaxNodesC.swift b/Sources/SwiftSyntax/generated/raw/RawSyntaxNodesC.swift index 0f4a38e0889..ba466a6adff 100644 --- a/Sources/SwiftSyntax/generated/raw/RawSyntaxNodesC.swift +++ b/Sources/SwiftSyntax/generated/raw/RawSyntaxNodesC.swift @@ -12,15 +12,15 @@ // //===----------------------------------------------------------------------===// -@available(*, deprecated, message: "'canImport' directives are now represented as a `FunctionCallExpr`") @_spi(RawSyntax) -public struct RawCanImportExprSyntax: RawExprSyntaxNodeProtocol { +@_spi(RawSyntax) +public struct Raw_CanImportExprSyntax: RawExprSyntaxNodeProtocol { @_spi(RawSyntax) public var layoutView: RawSyntaxLayoutView { return raw.layoutView! } public static func isKindOf(_ raw: RawSyntax) -> Bool { - return raw.kind == .canImportExpr + return raw.kind == ._canImportExpr } public var raw: RawSyntax @@ -49,14 +49,14 @@ public struct RawCanImportExprSyntax: RawExprSyntaxNodeProtocol { _ unexpectedBetweenLeftParenAndImportPath: RawUnexpectedNodesSyntax? = nil, importPath: RawTokenSyntax, _ unexpectedBetweenImportPathAndVersionInfo: RawUnexpectedNodesSyntax? = nil, - versionInfo: RawCanImportVersionInfoSyntax?, + versionInfo: Raw_CanImportVersionInfoSyntax?, _ unexpectedBetweenVersionInfoAndRightParen: RawUnexpectedNodesSyntax? = nil, rightParen: RawTokenSyntax, _ unexpectedAfterRightParen: RawUnexpectedNodesSyntax? = nil, arena: __shared SyntaxArena ) { let raw = RawSyntax.makeLayout( - kind: .canImportExpr, uninitializedCount: 11, arena: arena) { layout in + kind: ._canImportExpr, uninitializedCount: 11, arena: arena) { layout in layout.initialize(repeating: nil) layout[0] = unexpectedBeforeCanImportKeyword?.raw layout[1] = canImportKeyword.raw @@ -101,8 +101,8 @@ public struct RawCanImportExprSyntax: RawExprSyntaxNodeProtocol { layoutView.children[6].map(RawUnexpectedNodesSyntax.init(raw:)) } - public var versionInfo: RawCanImportVersionInfoSyntax? { - layoutView.children[7].map(RawCanImportVersionInfoSyntax.init(raw:)) + public var versionInfo: Raw_CanImportVersionInfoSyntax? { + layoutView.children[7].map(Raw_CanImportVersionInfoSyntax.init(raw:)) } public var unexpectedBetweenVersionInfoAndRightParen: RawUnexpectedNodesSyntax? { @@ -118,15 +118,15 @@ public struct RawCanImportExprSyntax: RawExprSyntaxNodeProtocol { } } -@available(*, deprecated, message: "'canImport' directives are now represented as a `FunctionCallExpr`") @_spi(RawSyntax) -public struct RawCanImportVersionInfoSyntax: RawExprSyntaxNodeProtocol { +@_spi(RawSyntax) +public struct Raw_CanImportVersionInfoSyntax: RawExprSyntaxNodeProtocol { @_spi(RawSyntax) public var layoutView: RawSyntaxLayoutView { return raw.layoutView! } public static func isKindOf(_ raw: RawSyntax) -> Bool { - return raw.kind == .canImportVersionInfo + return raw.kind == ._canImportVersionInfo } public var raw: RawSyntax @@ -160,7 +160,7 @@ public struct RawCanImportVersionInfoSyntax: RawExprSyntaxNodeProtocol { arena: __shared SyntaxArena ) { let raw = RawSyntax.makeLayout( - kind: .canImportVersionInfo, uninitializedCount: 9, arena: arena) { layout in + kind: ._canImportVersionInfo, uninitializedCount: 9, arena: arena) { layout in layout.initialize(repeating: nil) layout[0] = unexpectedBeforeComma?.raw layout[1] = comma.raw diff --git a/Sources/SwiftSyntax/generated/raw/RawSyntaxNodesEF.swift b/Sources/SwiftSyntax/generated/raw/RawSyntaxNodesEF.swift index 3b65d5be404..0ac329a0a14 100644 --- a/Sources/SwiftSyntax/generated/raw/RawSyntaxNodesEF.swift +++ b/Sources/SwiftSyntax/generated/raw/RawSyntaxNodesEF.swift @@ -988,7 +988,7 @@ public struct RawExprSyntax: RawExprSyntaxNodeProtocol { public static func isKindOf(_ raw: RawSyntax) -> Bool { switch raw.kind { - case .arrayExpr, .arrowExpr, .asExpr, .assignmentExpr, .awaitExpr, .binaryOperatorExpr, .booleanLiteralExpr, .borrowExpr, .canImportExpr, .canImportVersionInfo, .closureExpr, .consumeExpr, .copyExpr, .declReferenceExpr, .dictionaryExpr, .discardAssignmentExpr, .doExpr, .editorPlaceholderExpr, .floatLiteralExpr, .forceUnwrapExpr, .functionCallExpr, .genericSpecializationExpr, .ifExpr, .inOutExpr, .infixOperatorExpr, .integerLiteralExpr, .isExpr, .keyPathExpr, .macroExpansionExpr, .memberAccessExpr, .missingExpr, .nilLiteralExpr, .optionalChainingExpr, .packElementExpr, .packExpansionExpr, .patternExpr, .postfixIfConfigExpr, .postfixOperatorExpr, .prefixOperatorExpr, .regexLiteralExpr, .sequenceExpr, .simpleStringLiteralExpr, .stringLiteralExpr, .subscriptCallExpr, .superExpr, .switchExpr, .ternaryExpr, .tryExpr, .tupleExpr, .typeExpr, .unresolvedAsExpr, .unresolvedIsExpr, .unresolvedTernaryExpr: + case .arrayExpr, .arrowExpr, .asExpr, .assignmentExpr, .awaitExpr, .binaryOperatorExpr, .booleanLiteralExpr, .borrowExpr, ._canImportExpr, ._canImportVersionInfo, .closureExpr, .consumeExpr, .copyExpr, .declReferenceExpr, .dictionaryExpr, .discardAssignmentExpr, .doExpr, .editorPlaceholderExpr, .floatLiteralExpr, .forceUnwrapExpr, .functionCallExpr, .genericSpecializationExpr, .ifExpr, .inOutExpr, .infixOperatorExpr, .integerLiteralExpr, .isExpr, .keyPathExpr, .macroExpansionExpr, .memberAccessExpr, .missingExpr, .nilLiteralExpr, .optionalChainingExpr, .packElementExpr, .packExpansionExpr, .patternExpr, .postfixIfConfigExpr, .postfixOperatorExpr, .prefixOperatorExpr, .regexLiteralExpr, .sequenceExpr, .simpleStringLiteralExpr, .stringLiteralExpr, .subscriptCallExpr, .superExpr, .switchExpr, .ternaryExpr, .tryExpr, .tupleExpr, .typeExpr, .unresolvedAsExpr, .unresolvedIsExpr, .unresolvedTernaryExpr: return true default: return false diff --git a/Sources/SwiftSyntax/generated/raw/RawSyntaxValidation.swift b/Sources/SwiftSyntax/generated/raw/RawSyntaxValidation.swift index 31ef04df6dd..208750e3257 100644 --- a/Sources/SwiftSyntax/generated/raw/RawSyntaxValidation.swift +++ b/Sources/SwiftSyntax/generated/raw/RawSyntaxValidation.swift @@ -464,7 +464,7 @@ func validateLayout(layout: RawSyntaxBuffer, as kind: SyntaxKind) { assertNoError(kind, 2, verify(layout[2], as: RawUnexpectedNodesSyntax?.self)) assertNoError(kind, 3, verify(layout[3], as: RawTokenSyntax?.self, tokenChoices: [.tokenKind(.identifier)])) assertNoError(kind, 4, verify(layout[4], as: RawUnexpectedNodesSyntax?.self)) - case .canImportExpr: + case ._canImportExpr: assert(layout.count == 11) assertNoError(kind, 0, verify(layout[0], as: RawUnexpectedNodesSyntax?.self)) assertNoError(kind, 1, verify(layout[1], as: RawTokenSyntax.self, tokenChoices: [.keyword("canImport")])) @@ -473,11 +473,11 @@ func validateLayout(layout: RawSyntaxBuffer, as kind: SyntaxKind) { assertNoError(kind, 4, verify(layout[4], as: RawUnexpectedNodesSyntax?.self)) assertNoError(kind, 5, verify(layout[5], as: RawTokenSyntax.self, tokenChoices: [.tokenKind(.identifier)])) assertNoError(kind, 6, verify(layout[6], as: RawUnexpectedNodesSyntax?.self)) - assertNoError(kind, 7, verify(layout[7], as: RawCanImportVersionInfoSyntax?.self)) + assertNoError(kind, 7, verify(layout[7], as: Raw_CanImportVersionInfoSyntax?.self)) assertNoError(kind, 8, verify(layout[8], as: RawUnexpectedNodesSyntax?.self)) assertNoError(kind, 9, verify(layout[9], as: RawTokenSyntax.self, tokenChoices: [.tokenKind(.rightParen)])) assertNoError(kind, 10, verify(layout[10], as: RawUnexpectedNodesSyntax?.self)) - case .canImportVersionInfo: + case ._canImportVersionInfo: assert(layout.count == 9) assertNoError(kind, 0, verify(layout[0], as: RawUnexpectedNodesSyntax?.self)) assertNoError(kind, 1, verify(layout[1], as: RawTokenSyntax.self, tokenChoices: [.tokenKind(.comma)])) diff --git a/Sources/SwiftSyntax/generated/syntaxNodes/SyntaxNodesC.swift b/Sources/SwiftSyntax/generated/syntaxNodes/SyntaxNodesC.swift index 7f0b314579f..20b99357a90 100644 --- a/Sources/SwiftSyntax/generated/syntaxNodes/SyntaxNodesC.swift +++ b/Sources/SwiftSyntax/generated/syntaxNodes/SyntaxNodesC.swift @@ -12,21 +12,20 @@ // //===----------------------------------------------------------------------===// -// MARK: - CanImportExprSyntax +// MARK: - _CanImportExprSyntax /// ### Children /// /// - `canImportKeyword`: `canImport` /// - `leftParen`: `(` /// - `importPath`: `` -/// - `versionInfo`: ``CanImportVersionInfoSyntax``? +/// - `versionInfo`: `_CanImportVersionInfoSyntax`? /// - `rightParen`: `)` -@available(*, deprecated, message: "'canImport' directives are now represented as a `FunctionCallExpr`") -public struct CanImportExprSyntax: ExprSyntaxProtocol, SyntaxHashable, _LeafExprSyntaxNodeProtocol { +public struct _CanImportExprSyntax: ExprSyntaxProtocol, SyntaxHashable, _LeafExprSyntaxNodeProtocol { public let _syntaxNode: Syntax public init?(_ node: some SyntaxProtocol) { - guard node.raw.kind == .canImportExpr else { + guard node.raw.kind == ._canImportExpr else { return nil } self._syntaxNode = node._syntaxNode @@ -44,7 +43,7 @@ public struct CanImportExprSyntax: ExprSyntaxProtocol, SyntaxHashable, _LeafExpr _ unexpectedBetweenLeftParenAndImportPath: UnexpectedNodesSyntax? = nil, importPath: TokenSyntax, _ unexpectedBetweenImportPathAndVersionInfo: UnexpectedNodesSyntax? = nil, - versionInfo: CanImportVersionInfoSyntax? = nil, + versionInfo: _CanImportVersionInfoSyntax? = nil, _ unexpectedBetweenVersionInfoAndRightParen: UnexpectedNodesSyntax? = nil, rightParen: TokenSyntax = .rightParenToken(), _ unexpectedAfterRightParen: UnexpectedNodesSyntax? = nil, @@ -80,7 +79,7 @@ public struct CanImportExprSyntax: ExprSyntaxProtocol, SyntaxHashable, _LeafExpr unexpectedAfterRightParen?.raw ] let raw = RawSyntax.makeLayout( - kind: SyntaxKind.canImportExpr, + kind: SyntaxKind._canImportExpr, from: layout, arena: arena, leadingTrivia: leadingTrivia, @@ -96,7 +95,7 @@ public struct CanImportExprSyntax: ExprSyntaxProtocol, SyntaxHashable, _LeafExpr return Syntax(self).child(at: 0)?.cast(UnexpectedNodesSyntax.self) } set(value) { - self = Syntax(self).replacingChild(at: 0, with: Syntax(value), arena: SyntaxArena()).cast(CanImportExprSyntax.self) + self = Syntax(self).replacingChild(at: 0, with: Syntax(value), arena: SyntaxArena()).cast(_CanImportExprSyntax.self) } } @@ -108,7 +107,7 @@ public struct CanImportExprSyntax: ExprSyntaxProtocol, SyntaxHashable, _LeafExpr return Syntax(self).child(at: 1)!.cast(TokenSyntax.self) } set(value) { - self = Syntax(self).replacingChild(at: 1, with: Syntax(value), arena: SyntaxArena()).cast(CanImportExprSyntax.self) + self = Syntax(self).replacingChild(at: 1, with: Syntax(value), arena: SyntaxArena()).cast(_CanImportExprSyntax.self) } } @@ -117,7 +116,7 @@ public struct CanImportExprSyntax: ExprSyntaxProtocol, SyntaxHashable, _LeafExpr return Syntax(self).child(at: 2)?.cast(UnexpectedNodesSyntax.self) } set(value) { - self = Syntax(self).replacingChild(at: 2, with: Syntax(value), arena: SyntaxArena()).cast(CanImportExprSyntax.self) + self = Syntax(self).replacingChild(at: 2, with: Syntax(value), arena: SyntaxArena()).cast(_CanImportExprSyntax.self) } } @@ -129,7 +128,7 @@ public struct CanImportExprSyntax: ExprSyntaxProtocol, SyntaxHashable, _LeafExpr return Syntax(self).child(at: 3)!.cast(TokenSyntax.self) } set(value) { - self = Syntax(self).replacingChild(at: 3, with: Syntax(value), arena: SyntaxArena()).cast(CanImportExprSyntax.self) + self = Syntax(self).replacingChild(at: 3, with: Syntax(value), arena: SyntaxArena()).cast(_CanImportExprSyntax.self) } } @@ -138,7 +137,7 @@ public struct CanImportExprSyntax: ExprSyntaxProtocol, SyntaxHashable, _LeafExpr return Syntax(self).child(at: 4)?.cast(UnexpectedNodesSyntax.self) } set(value) { - self = Syntax(self).replacingChild(at: 4, with: Syntax(value), arena: SyntaxArena()).cast(CanImportExprSyntax.self) + self = Syntax(self).replacingChild(at: 4, with: Syntax(value), arena: SyntaxArena()).cast(_CanImportExprSyntax.self) } } @@ -150,7 +149,7 @@ public struct CanImportExprSyntax: ExprSyntaxProtocol, SyntaxHashable, _LeafExpr return Syntax(self).child(at: 5)!.cast(TokenSyntax.self) } set(value) { - self = Syntax(self).replacingChild(at: 5, with: Syntax(value), arena: SyntaxArena()).cast(CanImportExprSyntax.self) + self = Syntax(self).replacingChild(at: 5, with: Syntax(value), arena: SyntaxArena()).cast(_CanImportExprSyntax.self) } } @@ -159,16 +158,16 @@ public struct CanImportExprSyntax: ExprSyntaxProtocol, SyntaxHashable, _LeafExpr return Syntax(self).child(at: 6)?.cast(UnexpectedNodesSyntax.self) } set(value) { - self = Syntax(self).replacingChild(at: 6, with: Syntax(value), arena: SyntaxArena()).cast(CanImportExprSyntax.self) + self = Syntax(self).replacingChild(at: 6, with: Syntax(value), arena: SyntaxArena()).cast(_CanImportExprSyntax.self) } } - public var versionInfo: CanImportVersionInfoSyntax? { + public var versionInfo: _CanImportVersionInfoSyntax? { get { - return Syntax(self).child(at: 7)?.cast(CanImportVersionInfoSyntax.self) + return Syntax(self).child(at: 7)?.cast(_CanImportVersionInfoSyntax.self) } set(value) { - self = Syntax(self).replacingChild(at: 7, with: Syntax(value), arena: SyntaxArena()).cast(CanImportExprSyntax.self) + self = Syntax(self).replacingChild(at: 7, with: Syntax(value), arena: SyntaxArena()).cast(_CanImportExprSyntax.self) } } @@ -177,7 +176,7 @@ public struct CanImportExprSyntax: ExprSyntaxProtocol, SyntaxHashable, _LeafExpr return Syntax(self).child(at: 8)?.cast(UnexpectedNodesSyntax.self) } set(value) { - self = Syntax(self).replacingChild(at: 8, with: Syntax(value), arena: SyntaxArena()).cast(CanImportExprSyntax.self) + self = Syntax(self).replacingChild(at: 8, with: Syntax(value), arena: SyntaxArena()).cast(_CanImportExprSyntax.self) } } @@ -189,7 +188,7 @@ public struct CanImportExprSyntax: ExprSyntaxProtocol, SyntaxHashable, _LeafExpr return Syntax(self).child(at: 9)!.cast(TokenSyntax.self) } set(value) { - self = Syntax(self).replacingChild(at: 9, with: Syntax(value), arena: SyntaxArena()).cast(CanImportExprSyntax.self) + self = Syntax(self).replacingChild(at: 9, with: Syntax(value), arena: SyntaxArena()).cast(_CanImportExprSyntax.self) } } @@ -198,7 +197,7 @@ public struct CanImportExprSyntax: ExprSyntaxProtocol, SyntaxHashable, _LeafExpr return Syntax(self).child(at: 10)?.cast(UnexpectedNodesSyntax.self) } set(value) { - self = Syntax(self).replacingChild(at: 10, with: Syntax(value), arena: SyntaxArena()).cast(CanImportExprSyntax.self) + self = Syntax(self).replacingChild(at: 10, with: Syntax(value), arena: SyntaxArena()).cast(_CanImportExprSyntax.self) } } @@ -219,7 +218,7 @@ public struct CanImportExprSyntax: ExprSyntaxProtocol, SyntaxHashable, _LeafExpr } } -// MARK: - CanImportVersionInfoSyntax +// MARK: - _CanImportVersionInfoSyntax /// ### Children /// @@ -230,13 +229,12 @@ public struct CanImportExprSyntax: ExprSyntaxProtocol, SyntaxHashable, _LeafExpr /// /// ### Contained in /// -/// - ``CanImportExprSyntax``.``CanImportExprSyntax/versionInfo`` -@available(*, deprecated, message: "'canImport' directives are now represented as a `FunctionCallExpr`") -public struct CanImportVersionInfoSyntax: ExprSyntaxProtocol, SyntaxHashable, _LeafExprSyntaxNodeProtocol { +/// - `_CanImportExprSyntax`.`_CanImportExprSyntax/versionInfo` +public struct _CanImportVersionInfoSyntax: ExprSyntaxProtocol, SyntaxHashable, _LeafExprSyntaxNodeProtocol { public let _syntaxNode: Syntax public init?(_ node: some SyntaxProtocol) { - guard node.raw.kind == .canImportVersionInfo else { + guard node.raw.kind == ._canImportVersionInfo else { return nil } self._syntaxNode = node._syntaxNode @@ -284,7 +282,7 @@ public struct CanImportVersionInfoSyntax: ExprSyntaxProtocol, SyntaxHashable, _L unexpectedAfterVersion?.raw ] let raw = RawSyntax.makeLayout( - kind: SyntaxKind.canImportVersionInfo, + kind: SyntaxKind._canImportVersionInfo, from: layout, arena: arena, leadingTrivia: leadingTrivia, @@ -300,7 +298,7 @@ public struct CanImportVersionInfoSyntax: ExprSyntaxProtocol, SyntaxHashable, _L return Syntax(self).child(at: 0)?.cast(UnexpectedNodesSyntax.self) } set(value) { - self = Syntax(self).replacingChild(at: 0, with: Syntax(value), arena: SyntaxArena()).cast(CanImportVersionInfoSyntax.self) + self = Syntax(self).replacingChild(at: 0, with: Syntax(value), arena: SyntaxArena()).cast(_CanImportVersionInfoSyntax.self) } } @@ -312,7 +310,7 @@ public struct CanImportVersionInfoSyntax: ExprSyntaxProtocol, SyntaxHashable, _L return Syntax(self).child(at: 1)!.cast(TokenSyntax.self) } set(value) { - self = Syntax(self).replacingChild(at: 1, with: Syntax(value), arena: SyntaxArena()).cast(CanImportVersionInfoSyntax.self) + self = Syntax(self).replacingChild(at: 1, with: Syntax(value), arena: SyntaxArena()).cast(_CanImportVersionInfoSyntax.self) } } @@ -321,7 +319,7 @@ public struct CanImportVersionInfoSyntax: ExprSyntaxProtocol, SyntaxHashable, _L return Syntax(self).child(at: 2)?.cast(UnexpectedNodesSyntax.self) } set(value) { - self = Syntax(self).replacingChild(at: 2, with: Syntax(value), arena: SyntaxArena()).cast(CanImportVersionInfoSyntax.self) + self = Syntax(self).replacingChild(at: 2, with: Syntax(value), arena: SyntaxArena()).cast(_CanImportVersionInfoSyntax.self) } } @@ -335,7 +333,7 @@ public struct CanImportVersionInfoSyntax: ExprSyntaxProtocol, SyntaxHashable, _L return Syntax(self).child(at: 3)!.cast(TokenSyntax.self) } set(value) { - self = Syntax(self).replacingChild(at: 3, with: Syntax(value), arena: SyntaxArena()).cast(CanImportVersionInfoSyntax.self) + self = Syntax(self).replacingChild(at: 3, with: Syntax(value), arena: SyntaxArena()).cast(_CanImportVersionInfoSyntax.self) } } @@ -344,7 +342,7 @@ public struct CanImportVersionInfoSyntax: ExprSyntaxProtocol, SyntaxHashable, _L return Syntax(self).child(at: 4)?.cast(UnexpectedNodesSyntax.self) } set(value) { - self = Syntax(self).replacingChild(at: 4, with: Syntax(value), arena: SyntaxArena()).cast(CanImportVersionInfoSyntax.self) + self = Syntax(self).replacingChild(at: 4, with: Syntax(value), arena: SyntaxArena()).cast(_CanImportVersionInfoSyntax.self) } } @@ -356,7 +354,7 @@ public struct CanImportVersionInfoSyntax: ExprSyntaxProtocol, SyntaxHashable, _L return Syntax(self).child(at: 5)!.cast(TokenSyntax.self) } set(value) { - self = Syntax(self).replacingChild(at: 5, with: Syntax(value), arena: SyntaxArena()).cast(CanImportVersionInfoSyntax.self) + self = Syntax(self).replacingChild(at: 5, with: Syntax(value), arena: SyntaxArena()).cast(_CanImportVersionInfoSyntax.self) } } @@ -365,7 +363,7 @@ public struct CanImportVersionInfoSyntax: ExprSyntaxProtocol, SyntaxHashable, _L return Syntax(self).child(at: 6)?.cast(UnexpectedNodesSyntax.self) } set(value) { - self = Syntax(self).replacingChild(at: 6, with: Syntax(value), arena: SyntaxArena()).cast(CanImportVersionInfoSyntax.self) + self = Syntax(self).replacingChild(at: 6, with: Syntax(value), arena: SyntaxArena()).cast(_CanImportVersionInfoSyntax.self) } } @@ -374,7 +372,7 @@ public struct CanImportVersionInfoSyntax: ExprSyntaxProtocol, SyntaxHashable, _L return Syntax(self).child(at: 7)!.cast(VersionTupleSyntax.self) } set(value) { - self = Syntax(self).replacingChild(at: 7, with: Syntax(value), arena: SyntaxArena()).cast(CanImportVersionInfoSyntax.self) + self = Syntax(self).replacingChild(at: 7, with: Syntax(value), arena: SyntaxArena()).cast(_CanImportVersionInfoSyntax.self) } } @@ -383,7 +381,7 @@ public struct CanImportVersionInfoSyntax: ExprSyntaxProtocol, SyntaxHashable, _L return Syntax(self).child(at: 8)?.cast(UnexpectedNodesSyntax.self) } set(value) { - self = Syntax(self).replacingChild(at: 8, with: Syntax(value), arena: SyntaxArena()).cast(CanImportVersionInfoSyntax.self) + self = Syntax(self).replacingChild(at: 8, with: Syntax(value), arena: SyntaxArena()).cast(_CanImportVersionInfoSyntax.self) } } diff --git a/Sources/SwiftSyntax/generated/syntaxNodes/SyntaxNodesTUVWXYZ.swift b/Sources/SwiftSyntax/generated/syntaxNodes/SyntaxNodesTUVWXYZ.swift index e9e1eb7a67a..dbe1704d601 100644 --- a/Sources/SwiftSyntax/generated/syntaxNodes/SyntaxNodesTUVWXYZ.swift +++ b/Sources/SwiftSyntax/generated/syntaxNodes/SyntaxNodesTUVWXYZ.swift @@ -3796,7 +3796,7 @@ public struct VersionComponentSyntax: SyntaxProtocol, SyntaxHashable, _LeafSynta /// ### Contained in /// /// - ``AvailabilityLabeledArgumentSyntax``.``AvailabilityLabeledArgumentSyntax/value`` -/// - ``CanImportVersionInfoSyntax``.``CanImportVersionInfoSyntax/version`` +/// - `_CanImportVersionInfoSyntax`.`_CanImportVersionInfoSyntax/version` /// - ``PlatformVersionSyntax``.``PlatformVersionSyntax/version`` public struct VersionTupleSyntax: SyntaxProtocol, SyntaxHashable, _LeafSyntaxNodeProtocol { public let _syntaxNode: Syntax diff --git a/Tests/SwiftParserTest/IncrementalParsingTests.swift b/Tests/SwiftParserTest/IncrementalParsingTests.swift index 679ace162d3..8bda2652e4e 100644 --- a/Tests/SwiftParserTest/IncrementalParsingTests.swift +++ b/Tests/SwiftParserTest/IncrementalParsingTests.swift @@ -23,7 +23,7 @@ class IncrementalParsingTests: ParserTestCase { struct A⏩️⏸️A⏪️ { func f() { """, reusedNodes: [ - ReusedNodeSpec("func f() {", kind: .memberDeclListItem) + ReusedNodeSpec("func f() {", kind: .memberBlockItem) ] ) } @@ -191,10 +191,10 @@ class IncrementalParsingTests: ParserTestCase { } """, reusedNodes: [ - ReusedNodeSpec("let a: Int", kind: .memberDeclListItem), - ReusedNodeSpec("let b: Int", kind: .memberDeclListItem), - ReusedNodeSpec("let c: Int", kind: .memberDeclListItem), - ReusedNodeSpec("let g: Int", kind: .memberDeclListItem), + ReusedNodeSpec("let a: Int", kind: .memberBlockItem), + ReusedNodeSpec("let b: Int", kind: .memberBlockItem), + ReusedNodeSpec("let c: Int", kind: .memberBlockItem), + ReusedNodeSpec("let g: Int", kind: .memberBlockItem), ] ) }