diff --git a/CodeGeneration/Sources/SyntaxSupport/ExperimentalFeatures.swift b/CodeGeneration/Sources/SyntaxSupport/ExperimentalFeatures.swift index 70cd36c9a7d..2823bf6f3d0 100644 --- a/CodeGeneration/Sources/SyntaxSupport/ExperimentalFeatures.swift +++ b/CodeGeneration/Sources/SyntaxSupport/ExperimentalFeatures.swift @@ -21,7 +21,6 @@ public enum ExperimentalFeature: String, CaseIterable { case coroutineAccessors case keypathWithMethodMembers case oldOwnershipOperatorSpellings - case inlineArrayTypeSugar case defaultIsolationPerFile /// The name of the feature as it is written in the compiler's `Features.def` file. @@ -43,8 +42,6 @@ public enum ExperimentalFeature: String, CaseIterable { return "KeypathWithMethodMembers" case .oldOwnershipOperatorSpellings: return "OldOwnershipOperatorSpellings" - case .inlineArrayTypeSugar: - return "InlineArrayTypeSugar" case .defaultIsolationPerFile: return "DefaultIsolationPerFile" } @@ -69,8 +66,6 @@ public enum ExperimentalFeature: String, CaseIterable { return "keypaths with method members" case .oldOwnershipOperatorSpellings: return "`_move` and `_borrow` as ownership operators" - case .inlineArrayTypeSugar: - return "sugar type for InlineArray" case .defaultIsolationPerFile: return "set default actor isolation for a file" } diff --git a/CodeGeneration/Sources/SyntaxSupport/TypeNodes.swift b/CodeGeneration/Sources/SyntaxSupport/TypeNodes.swift index ab81dde2a2d..47835b97bb0 100644 --- a/CodeGeneration/Sources/SyntaxSupport/TypeNodes.swift +++ b/CodeGeneration/Sources/SyntaxSupport/TypeNodes.swift @@ -302,7 +302,6 @@ public let TYPE_NODES: [Node] = [ Node( kind: .inlineArrayType, base: .type, - experimentalFeature: .inlineArrayTypeSugar, nameForDiagnostics: "inline array type", documentation: "An inline array type `[3 of Int]`, sugar for `InlineArray<3, Int>`.", children: [ diff --git a/Sources/SwiftParser/Types.swift b/Sources/SwiftParser/Types.swift index 67ad666c5df..e6d24932f9f 100644 --- a/Sources/SwiftParser/Types.swift +++ b/Sources/SwiftParser/Types.swift @@ -646,8 +646,6 @@ extension Parser { unexpectedBeforeLSquare: RawUnexpectedNodesSyntax?, leftSquare: RawTokenSyntax ) -> RawTypeSyntax { - precondition(self.experimentalFeatures.contains(.inlineArrayTypeSugar)) - // We allow both values and types here and for the element type for // better recovery in cases where the user writes e.g '[Int of 3]'. let count = self.parseGenericArgumentType() @@ -875,10 +873,6 @@ extension Parser.Lookahead { /// Checks whether we can parse the start of an InlineArray type. This does /// not include the element type. mutating func canParseStartOfInlineArrayTypeBody() -> Bool { - guard self.experimentalFeatures.contains(.inlineArrayTypeSugar) else { - return false - } - // We must have at least '[ of', which cannot be any other // kind of expression or type. We specifically look for both types and // integers for better recovery in e.g cases where the user writes e.g @@ -907,7 +901,7 @@ extension Parser.Lookahead { mutating func canParseCollectionTypeBody() -> Bool { // Check to see if we have an InlineArray sugar type. - if self.experimentalFeatures.contains(.inlineArrayTypeSugar) { + do { var lookahead = self.lookahead() if lookahead.canParseInlineArrayTypeBody() { self = lookahead diff --git a/Sources/SwiftParser/generated/ExperimentalFeatures.swift b/Sources/SwiftParser/generated/ExperimentalFeatures.swift index c8c8c373856..35aac037436 100644 --- a/Sources/SwiftParser/generated/ExperimentalFeatures.swift +++ b/Sources/SwiftParser/generated/ExperimentalFeatures.swift @@ -49,11 +49,8 @@ extension Parser.ExperimentalFeatures { /// Whether to enable the parsing of `_move` and `_borrow` as ownership operators. public static let oldOwnershipOperatorSpellings = Self (rawValue: 1 << 7) - /// Whether to enable the parsing of sugar type for InlineArray. - public static let inlineArrayTypeSugar = Self (rawValue: 1 << 8) - /// Whether to enable the parsing of set default actor isolation for a file. - public static let defaultIsolationPerFile = Self (rawValue: 1 << 9) + public static let defaultIsolationPerFile = Self (rawValue: 1 << 8) /// Creates a new value representing the experimental feature with the /// given name, or returns nil if the name is not recognized. @@ -75,8 +72,6 @@ extension Parser.ExperimentalFeatures { self = .keypathWithMethodMembers case "OldOwnershipOperatorSpellings": self = .oldOwnershipOperatorSpellings - case "InlineArrayTypeSugar": - self = .inlineArrayTypeSugar case "DefaultIsolationPerFile": self = .defaultIsolationPerFile default: diff --git a/Sources/SwiftSyntax/Documentation.docc/generated/SwiftSyntax.md b/Sources/SwiftSyntax/Documentation.docc/generated/SwiftSyntax.md index ee9216345d3..3588f1a4c8c 100644 --- a/Sources/SwiftSyntax/Documentation.docc/generated/SwiftSyntax.md +++ b/Sources/SwiftSyntax/Documentation.docc/generated/SwiftSyntax.md @@ -183,6 +183,7 @@ allows Swift tools to parse, inspect, generate, and transform Swift source code. - - - +- - - - diff --git a/Sources/SwiftSyntax/generated/SyntaxAnyVisitor.swift b/Sources/SwiftSyntax/generated/SyntaxAnyVisitor.swift index 2c06e381fc6..58de9c4b8eb 100644 --- a/Sources/SwiftSyntax/generated/SyntaxAnyVisitor.swift +++ b/Sources/SwiftSyntax/generated/SyntaxAnyVisitor.swift @@ -1251,12 +1251,10 @@ open class SyntaxAnyVisitor: SyntaxVisitor { visitAnyPost(node._syntaxNode) } - @_spi(ExperimentalLanguageFeatures) override open func visit(_ node: InlineArrayTypeSyntax) -> SyntaxVisitorContinueKind { return visitAny(node._syntaxNode) } - @_spi(ExperimentalLanguageFeatures) override open func visitPost(_ node: InlineArrayTypeSyntax) { visitAnyPost(node._syntaxNode) } diff --git a/Sources/SwiftSyntax/generated/SyntaxBaseNodes.swift b/Sources/SwiftSyntax/generated/SyntaxBaseNodes.swift index 8102e59b2c3..d58c72e2e19 100644 --- a/Sources/SwiftSyntax/generated/SyntaxBaseNodes.swift +++ b/Sources/SwiftSyntax/generated/SyntaxBaseNodes.swift @@ -1369,6 +1369,7 @@ extension Syntax { /// - ``FunctionTypeSyntax`` /// - ``IdentifierTypeSyntax`` /// - ``ImplicitlyUnwrappedOptionalTypeSyntax`` +/// - ``InlineArrayTypeSyntax`` /// - ``MemberTypeSyntax`` /// - ``MetatypeTypeSyntax`` /// - ``MissingTypeSyntax`` diff --git a/Sources/SwiftSyntax/generated/SyntaxEnum.swift b/Sources/SwiftSyntax/generated/SyntaxEnum.swift index da712828311..58a83392947 100644 --- a/Sources/SwiftSyntax/generated/SyntaxEnum.swift +++ b/Sources/SwiftSyntax/generated/SyntaxEnum.swift @@ -169,7 +169,6 @@ public enum SyntaxEnum: Sendable { case inheritedType(InheritedTypeSyntax) case initializerClause(InitializerClauseSyntax) case initializerDecl(InitializerDeclSyntax) - @_spi(ExperimentalLanguageFeatures) case inlineArrayType(InlineArrayTypeSyntax) case integerLiteralExpr(IntegerLiteralExprSyntax) case isExpr(IsExprSyntax) @@ -1286,7 +1285,6 @@ public enum TypeSyntaxEnum { case functionType(FunctionTypeSyntax) case identifierType(IdentifierTypeSyntax) case implicitlyUnwrappedOptionalType(ImplicitlyUnwrappedOptionalTypeSyntax) - @_spi(ExperimentalLanguageFeatures) case inlineArrayType(InlineArrayTypeSyntax) case memberType(MemberTypeSyntax) case metatypeType(MetatypeTypeSyntax) diff --git a/Sources/SwiftSyntax/generated/SyntaxKind.swift b/Sources/SwiftSyntax/generated/SyntaxKind.swift index d2998e079f5..aee994e2266 100644 --- a/Sources/SwiftSyntax/generated/SyntaxKind.swift +++ b/Sources/SwiftSyntax/generated/SyntaxKind.swift @@ -169,7 +169,6 @@ public enum SyntaxKind: Sendable { case inheritedType case initializerClause case initializerDecl - @_spi(ExperimentalLanguageFeatures) case inlineArrayType case integerLiteralExpr case isExpr diff --git a/Sources/SwiftSyntax/generated/SyntaxRewriter.swift b/Sources/SwiftSyntax/generated/SyntaxRewriter.swift index bc976b3b244..d495940df71 100644 --- a/Sources/SwiftSyntax/generated/SyntaxRewriter.swift +++ b/Sources/SwiftSyntax/generated/SyntaxRewriter.swift @@ -1140,10 +1140,9 @@ open class SyntaxRewriter { return DeclSyntax(InitializerDeclSyntax(unsafeCasting: visitChildren(node._syntaxNode))) } - /// Visit a `InlineArrayTypeSyntax`. + /// Visit a ``InlineArrayTypeSyntax``. /// - Parameter node: the node that is being visited /// - Returns: the rewritten node - @_spi(ExperimentalLanguageFeatures) open func visit(_ node: InlineArrayTypeSyntax) -> TypeSyntax { return TypeSyntax(InlineArrayTypeSyntax(unsafeCasting: visitChildren(node._syntaxNode))) } diff --git a/Sources/SwiftSyntax/generated/SyntaxVisitor.swift b/Sources/SwiftSyntax/generated/SyntaxVisitor.swift index 9ed668dd140..a9cc0b93415 100644 --- a/Sources/SwiftSyntax/generated/SyntaxVisitor.swift +++ b/Sources/SwiftSyntax/generated/SyntaxVisitor.swift @@ -1821,17 +1821,15 @@ open class SyntaxVisitor { open func visitPost(_ node: InitializerDeclSyntax) { } - /// Visiting `InlineArrayTypeSyntax` specifically. + /// Visiting ``InlineArrayTypeSyntax`` specifically. /// - Parameter node: the node we are visiting. /// - Returns: how should we continue visiting. - @_spi(ExperimentalLanguageFeatures) open func visit(_ node: InlineArrayTypeSyntax) -> SyntaxVisitorContinueKind { return .visitChildren } - /// The function called after visiting `InlineArrayTypeSyntax` and its descendants. + /// The function called after visiting ``InlineArrayTypeSyntax`` and its descendants. /// - node: the node we just finished visiting. - @_spi(ExperimentalLanguageFeatures) open func visitPost(_ node: InlineArrayTypeSyntax) { } diff --git a/Sources/SwiftSyntax/generated/raw/RawSyntaxNodesGHI.swift b/Sources/SwiftSyntax/generated/raw/RawSyntaxNodesGHI.swift index dfe5fc4d0e6..d74ae1a0862 100644 --- a/Sources/SwiftSyntax/generated/raw/RawSyntaxNodesGHI.swift +++ b/Sources/SwiftSyntax/generated/raw/RawSyntaxNodesGHI.swift @@ -2343,7 +2343,6 @@ public struct RawInitializerDeclSyntax: RawDeclSyntaxNodeProtocol { } } -@_spi(ExperimentalLanguageFeatures) @_spi(RawSyntax) public struct RawInlineArrayTypeSyntax: RawTypeSyntaxNodeProtocol { @_spi(RawSyntax) diff --git a/Sources/SwiftSyntax/generated/syntaxNodes/SyntaxNodesGHI.swift b/Sources/SwiftSyntax/generated/syntaxNodes/SyntaxNodesGHI.swift index f8f54656bd3..d50c95b04c1 100644 --- a/Sources/SwiftSyntax/generated/syntaxNodes/SyntaxNodesGHI.swift +++ b/Sources/SwiftSyntax/generated/syntaxNodes/SyntaxNodesGHI.swift @@ -206,6 +206,8 @@ public struct GenericArgumentClauseSyntax: SyntaxProtocol, SyntaxHashable, _Leaf /// ### Contained in /// /// - ``GenericArgumentListSyntax`` +/// - ``InlineArrayTypeSyntax``.``InlineArrayTypeSyntax/count`` +/// - ``InlineArrayTypeSyntax``.``InlineArrayTypeSyntax/element`` public struct GenericArgumentSyntax: SyntaxProtocol, SyntaxHashable, _LeafSyntaxNodeProtocol { public enum Argument: SyntaxChildChoices, SyntaxHashable { case type(TypeSyntax) @@ -4374,8 +4376,6 @@ public struct InitializerDeclSyntax: DeclSyntaxProtocol, SyntaxHashable, _LeafDe /// An inline array type `[3 of Int]`, sugar for `InlineArray<3, Int>`. /// -/// - Note: Requires experimental feature `inlineArrayTypeSugar`. -/// /// ### Children /// /// - `leftSquare`: `[` @@ -4383,7 +4383,6 @@ public struct InitializerDeclSyntax: DeclSyntaxProtocol, SyntaxHashable, _LeafDe /// - `separator`: `of` /// - `element`: ``GenericArgumentSyntax`` /// - `rightSquare`: `]` -@_spi(ExperimentalLanguageFeatures) public struct InlineArrayTypeSyntax: TypeSyntaxProtocol, SyntaxHashable, _LeafTypeSyntaxNodeProtocol { public let _syntaxNode: Syntax diff --git a/Tests/SwiftParserTest/ExpressionTypeTests.swift b/Tests/SwiftParserTest/ExpressionTypeTests.swift index f9f6587dbe4..2c2f45b1ce0 100644 --- a/Tests/SwiftParserTest/ExpressionTypeTests.swift +++ b/Tests/SwiftParserTest/ExpressionTypeTests.swift @@ -138,7 +138,6 @@ final class ExpressionTypeTests: ParserTestCase { { ExprSyntax.parse(from: &$0) }, substructure: IdentifierTypeSyntax(name: .identifier("X")), substructureAfterMarker: "1️⃣", - experimentalFeatures: [.inlineArrayTypeSugar], line: line ) } diff --git a/Tests/SwiftParserTest/TypeTests.swift b/Tests/SwiftParserTest/TypeTests.swift index 4ab3316b6b7..362c8ebb404 100644 --- a/Tests/SwiftParserTest/TypeTests.swift +++ b/Tests/SwiftParserTest/TypeTests.swift @@ -775,10 +775,6 @@ final class TypeTests: ParserTestCase { } final class InlineArrayTypeTests: ParserTestCase { - override var experimentalFeatures: Parser.ExperimentalFeatures { - [.inlineArrayTypeSugar] - } - func testBasic() { assertParse( "[3 of Int]",