diff --git a/CodeGeneration/Sources/generate-swift-syntax/templates/swiftparser/TokenSpecStaticMembersFile.swift b/CodeGeneration/Sources/generate-swift-syntax/templates/swiftparser/TokenSpecStaticMembersFile.swift index 9d3272d4ee8..7f763e38ade 100644 --- a/CodeGeneration/Sources/generate-swift-syntax/templates/swiftparser/TokenSpecStaticMembersFile.swift +++ b/CodeGeneration/Sources/generate-swift-syntax/templates/swiftparser/TokenSpecStaticMembersFile.swift @@ -16,7 +16,15 @@ import SyntaxSupport import Utils let tokenSpecStaticMembersFile = SourceFileSyntax(leadingTrivia: copyrightHeader) { - DeclSyntax("@_spi(RawSyntax) import SwiftSyntax") + DeclSyntax( + """ + #if swift(>=6) + @_spi(RawSyntax) internal import SwiftSyntax + #else + @_spi(RawSyntax) import SwiftSyntax + #endif + """ + ) try! ExtensionDeclSyntax("extension TokenSpec") { for tokenSpec in Token.allCases.map(\.spec) where tokenSpec.kind != .keyword { diff --git a/CodeGeneration/Sources/generate-swift-syntax/templates/swiftparserdiagnostics/ChildNameForDiagnosticsFile.swift b/CodeGeneration/Sources/generate-swift-syntax/templates/swiftparserdiagnostics/ChildNameForDiagnosticsFile.swift index a3732d1d3c9..2f51321e589 100644 --- a/CodeGeneration/Sources/generate-swift-syntax/templates/swiftparserdiagnostics/ChildNameForDiagnosticsFile.swift +++ b/CodeGeneration/Sources/generate-swift-syntax/templates/swiftparserdiagnostics/ChildNameForDiagnosticsFile.swift @@ -16,7 +16,15 @@ import SyntaxSupport import Utils let childNameForDiagnosticFile = SourceFileSyntax(leadingTrivia: copyrightHeader) { - DeclSyntax("@_spi(ExperimentalLanguageFeatures) import SwiftSyntax") + DeclSyntax( + """ + #if swift(>=6) + @_spi(ExperimentalLanguageFeatures) internal import SwiftSyntax + #else + @_spi(ExperimentalLanguageFeatures) import SwiftSyntax + #endif + """ + ) try! FunctionDeclSyntax( "private func childNameForDiagnostics(_ keyPath: AnyKeyPath) -> String?" diff --git a/CodeGeneration/Sources/generate-swift-syntax/templates/swiftparserdiagnostics/SyntaxKindNameForDiagnosticsFile.swift b/CodeGeneration/Sources/generate-swift-syntax/templates/swiftparserdiagnostics/SyntaxKindNameForDiagnosticsFile.swift index 53a6b67bdf1..34957cf11ab 100644 --- a/CodeGeneration/Sources/generate-swift-syntax/templates/swiftparserdiagnostics/SyntaxKindNameForDiagnosticsFile.swift +++ b/CodeGeneration/Sources/generate-swift-syntax/templates/swiftparserdiagnostics/SyntaxKindNameForDiagnosticsFile.swift @@ -16,7 +16,15 @@ import SyntaxSupport import Utils let syntaxKindNameForDiagnosticFile = SourceFileSyntax(leadingTrivia: copyrightHeader) { - DeclSyntax("@_spi(ExperimentalLanguageFeatures) import SwiftSyntax") + DeclSyntax( + """ + #if swift(>=6) + @_spi(ExperimentalLanguageFeatures) internal import SwiftSyntax + #else + @_spi(ExperimentalLanguageFeatures) import SwiftSyntax + #endif + """ + ) try! ExtensionDeclSyntax("extension SyntaxKind") { try VariableDeclSyntax("var nameForDiagnostics: String?") { diff --git a/CodeGeneration/Sources/generate-swift-syntax/templates/swiftparserdiagnostics/TokenNameForDiagnosticsFile.swift b/CodeGeneration/Sources/generate-swift-syntax/templates/swiftparserdiagnostics/TokenNameForDiagnosticsFile.swift index 37ac41b8422..62c1c9e3973 100644 --- a/CodeGeneration/Sources/generate-swift-syntax/templates/swiftparserdiagnostics/TokenNameForDiagnosticsFile.swift +++ b/CodeGeneration/Sources/generate-swift-syntax/templates/swiftparserdiagnostics/TokenNameForDiagnosticsFile.swift @@ -16,7 +16,15 @@ import SyntaxSupport import Utils let tokenNameForDiagnosticFile = SourceFileSyntax(leadingTrivia: copyrightHeader) { - DeclSyntax("@_spi(RawSyntax) import SwiftSyntax") + DeclSyntax( + """ + #if swift(>=6) + @_spi(RawSyntax) internal import SwiftSyntax + #else + @_spi(RawSyntax) import SwiftSyntax + #endif + """ + ) try! ExtensionDeclSyntax("extension TokenKind") { try! VariableDeclSyntax("var nameForDiagnostics: String") { diff --git a/CodeGeneration/Sources/generate-swift-syntax/templates/swiftsyntaxbuilder/SyntaxExpressibleByStringInterpolationConformancesFile.swift b/CodeGeneration/Sources/generate-swift-syntax/templates/swiftsyntaxbuilder/SyntaxExpressibleByStringInterpolationConformancesFile.swift index b7a63319ad6..d6c237bbca9 100644 --- a/CodeGeneration/Sources/generate-swift-syntax/templates/swiftsyntaxbuilder/SyntaxExpressibleByStringInterpolationConformancesFile.swift +++ b/CodeGeneration/Sources/generate-swift-syntax/templates/swiftsyntaxbuilder/SyntaxExpressibleByStringInterpolationConformancesFile.swift @@ -16,7 +16,15 @@ import SyntaxSupport import Utils let syntaxExpressibleByStringInterpolationConformancesFile = SourceFileSyntax(leadingTrivia: copyrightHeader) { - DeclSyntax("import SwiftSyntax") + DeclSyntax( + """ + #if swift(>=6) + internal import SwiftSyntax + #else + import SwiftSyntax + #endif + """ + ) let typesExpressibleByStringInterpolation = SYNTAX_NODES diff --git a/Package.swift b/Package.swift index 64ae21f08c5..e997c3acef4 100644 --- a/Package.swift +++ b/Package.swift @@ -297,7 +297,13 @@ let package = Package( dependencies: ["_InstructionCounter", "_SwiftSyntaxTestSupport", "SwiftIDEUtils", "SwiftParser", "SwiftSyntax"], exclude: ["Inputs"] ), - ] + ], + // Disable Swift 6 mode when the `SWIFTSYNTAX_DISABLE_SWIFT_6_MODE` environment variable is set. This works around the following + // issue: The self-hosted SwiftPM job has Xcode 15.3 (Swift 5.10) installed and builds a Swift 6 SwiftPM from source. + // It then tries to build itself as a fat binary using the just-built Swift 6 SwiftPM, which uses xcbuild from Xcode + // as the build system. But the xcbuild in the installed Xcode is too old and doesn't know about Swift 6 mode, so it + // fails with: SWIFT_VERSION '6' is unsupported, supported versions are: 4.0, 4.2, 5.0 (rdar://126952308) + swiftLanguageVersions: hasEnvironmentVariable("SWIFTSYNTAX_DISABLE_SWIFT_6_MODE") ? [.v5] : [.v5, .version("6")] ) // This is a fake target that depends on all targets in the package. diff --git a/Sources/SwiftCompilerPluginMessageHandling/Diagnostics.swift b/Sources/SwiftCompilerPluginMessageHandling/Diagnostics.swift index 2b0ab4874d2..027ec68838b 100644 --- a/Sources/SwiftCompilerPluginMessageHandling/Diagnostics.swift +++ b/Sources/SwiftCompilerPluginMessageHandling/Diagnostics.swift @@ -10,8 +10,13 @@ // //===----------------------------------------------------------------------===// +#if swift(>=6) +internal import SwiftDiagnostics +internal import SwiftSyntax +#else import SwiftDiagnostics import SwiftSyntax +#endif /// Errors in macro handing. enum MacroExpansionError { diff --git a/Sources/SwiftCompilerPluginMessageHandling/JSON/JSONEncoding.swift b/Sources/SwiftCompilerPluginMessageHandling/JSON/JSONEncoding.swift index 411e8665d6b..319f9384b45 100644 --- a/Sources/SwiftCompilerPluginMessageHandling/JSON/JSONEncoding.swift +++ b/Sources/SwiftCompilerPluginMessageHandling/JSON/JSONEncoding.swift @@ -17,7 +17,7 @@ func encodeToJSON(value: some Encodable) throws -> [UInt8] { } /// Intermediate representation for serializing JSON structure. -private class JSONReference { +private final class JSONReference { enum Backing { case null case trueKeyword @@ -60,9 +60,17 @@ private class JSONReference { backing = .array(arr) } + #if swift(>=6) + // nonisolated(unsafe) is fine for these properties because they represent primitives + // that are never modified. + nonisolated(unsafe) static let null: JSONReference = .init(backing: .null) + nonisolated(unsafe) static let trueKeyword: JSONReference = .init(backing: .trueKeyword) + nonisolated(unsafe) static let falseKeyword: JSONReference = .init(backing: .falseKeyword) + #else static let null: JSONReference = .init(backing: .null) static let trueKeyword: JSONReference = .init(backing: .trueKeyword) static let falseKeyword: JSONReference = .init(backing: .falseKeyword) + #endif @inline(__always) static func newArray() -> JSONReference { diff --git a/Sources/SwiftCompilerPluginMessageHandling/Macros.swift b/Sources/SwiftCompilerPluginMessageHandling/Macros.swift index 7f07fe1278c..584081873ba 100644 --- a/Sources/SwiftCompilerPluginMessageHandling/Macros.swift +++ b/Sources/SwiftCompilerPluginMessageHandling/Macros.swift @@ -10,12 +10,21 @@ // //===----------------------------------------------------------------------===// +#if swift(>=6) +internal import SwiftBasicFormat +internal import SwiftDiagnostics +internal import SwiftOperators +internal import SwiftSyntax +@_spi(MacroExpansion) @_spi(ExperimentalLanguageFeature) internal import SwiftSyntaxMacroExpansion +@_spi(ExperimentalLanguageFeature) internal import SwiftSyntaxMacros +#else import SwiftBasicFormat import SwiftDiagnostics import SwiftOperators import SwiftSyntax @_spi(MacroExpansion) @_spi(ExperimentalLanguageFeature) import SwiftSyntaxMacroExpansion @_spi(ExperimentalLanguageFeature) import SwiftSyntaxMacros +#endif extension CompilerPluginMessageHandler { /// Get concrete macro type from a pair of module name and type name. diff --git a/Sources/SwiftCompilerPluginMessageHandling/PluginMacroExpansionContext.swift b/Sources/SwiftCompilerPluginMessageHandling/PluginMacroExpansionContext.swift index 02ea6d3c43e..2606d823c7f 100644 --- a/Sources/SwiftCompilerPluginMessageHandling/PluginMacroExpansionContext.swift +++ b/Sources/SwiftCompilerPluginMessageHandling/PluginMacroExpansionContext.swift @@ -10,11 +10,19 @@ // //===----------------------------------------------------------------------===// +#if swift(>=6) +internal import SwiftDiagnostics +internal import SwiftOperators +internal import SwiftParser +internal import SwiftSyntax +internal import SwiftSyntaxMacros +#else import SwiftDiagnostics import SwiftOperators import SwiftParser import SwiftSyntax import SwiftSyntaxMacros +#endif /// Manages known source code combined with their filename/fileID. This can be /// used to get line/column from a syntax node in the managed source code. diff --git a/Sources/SwiftIDEUtils/SyntaxClassification.swift b/Sources/SwiftIDEUtils/SyntaxClassification.swift index fd66e58e41b..2295f6f479d 100644 --- a/Sources/SwiftIDEUtils/SyntaxClassification.swift +++ b/Sources/SwiftIDEUtils/SyntaxClassification.swift @@ -10,7 +10,11 @@ // //===----------------------------------------------------------------------===// +#if swift(>=6) +@_spi(RawSyntax) internal import SwiftSyntax +#else @_spi(RawSyntax) import SwiftSyntax +#endif public enum SyntaxClassification: Sendable { /// An attribute starting with an `@`. diff --git a/Sources/SwiftIDEUtils/Utils.swift b/Sources/SwiftIDEUtils/Utils.swift index 2bba57c7934..85125f7fcef 100644 --- a/Sources/SwiftIDEUtils/Utils.swift +++ b/Sources/SwiftIDEUtils/Utils.swift @@ -10,7 +10,11 @@ // //===----------------------------------------------------------------------===// +#if swift(>=6) +internal import SwiftSyntax +#else import SwiftSyntax +#endif extension Range { /// Shift the range `utf8Offset` bytes to the right, ie. add `utf8Offset` to the upper and lower bound. diff --git a/Sources/SwiftOperators/OperatorError+Diagnostics.swift b/Sources/SwiftOperators/OperatorError+Diagnostics.swift index 5360ba5a87b..efedd4e9844 100644 --- a/Sources/SwiftOperators/OperatorError+Diagnostics.swift +++ b/Sources/SwiftOperators/OperatorError+Diagnostics.swift @@ -12,8 +12,8 @@ #if swift(>=6) public import SwiftDiagnostics -import SwiftParser -import SwiftSyntax +internal import SwiftParser +internal import SwiftSyntax #else import SwiftDiagnostics import SwiftParser diff --git a/Sources/SwiftOperators/OperatorTable+Defaults.swift b/Sources/SwiftOperators/OperatorTable+Defaults.swift index 6c9cdce5401..2e10d4dcddc 100644 --- a/Sources/SwiftOperators/OperatorTable+Defaults.swift +++ b/Sources/SwiftOperators/OperatorTable+Defaults.swift @@ -10,7 +10,11 @@ // //===----------------------------------------------------------------------===// +#if swift(>=6) +internal import SwiftSyntax +#else import SwiftSyntax +#endif /// Prefabricated operator precedence graphs. extension OperatorTable { diff --git a/Sources/SwiftOperators/OperatorTable.swift b/Sources/SwiftOperators/OperatorTable.swift index 6691bc59855..e80f6803bd3 100644 --- a/Sources/SwiftOperators/OperatorTable.swift +++ b/Sources/SwiftOperators/OperatorTable.swift @@ -10,7 +10,11 @@ // //===----------------------------------------------------------------------===// +#if swift(>=6) +internal import SwiftSyntax +#else import SwiftSyntax +#endif /// Maintains and validates information about all operators in a Swift program. /// diff --git a/Sources/SwiftOperators/PrecedenceGraph.swift b/Sources/SwiftOperators/PrecedenceGraph.swift index 10be03b312e..9598a1dcd2d 100644 --- a/Sources/SwiftOperators/PrecedenceGraph.swift +++ b/Sources/SwiftOperators/PrecedenceGraph.swift @@ -10,7 +10,11 @@ // //===----------------------------------------------------------------------===// +#if swift(>=6) +internal import SwiftSyntax +#else import SwiftSyntax +#endif /// Describes the relative precedence of two groups. enum Precedence: Sendable { diff --git a/Sources/SwiftParser/Attributes.swift b/Sources/SwiftParser/Attributes.swift index 0d79d678a03..b528f8273ae 100644 --- a/Sources/SwiftParser/Attributes.swift +++ b/Sources/SwiftParser/Attributes.swift @@ -10,7 +10,11 @@ // //===----------------------------------------------------------------------===// +#if swift(>=6) +@_spi(RawSyntax) internal import SwiftSyntax +#else @_spi(RawSyntax) import SwiftSyntax +#endif extension Parser { mutating func parseAttributeList() -> RawAttributeListSyntax { diff --git a/Sources/SwiftParser/Availability.swift b/Sources/SwiftParser/Availability.swift index 2358d5e4107..377900082ec 100644 --- a/Sources/SwiftParser/Availability.swift +++ b/Sources/SwiftParser/Availability.swift @@ -10,7 +10,11 @@ // //===----------------------------------------------------------------------===// +#if swift(>=6) +@_spi(RawSyntax) internal import SwiftSyntax +#else @_spi(RawSyntax) import SwiftSyntax +#endif extension Parser { /// Parse a list of availability arguments. diff --git a/Sources/SwiftParser/Declarations.swift b/Sources/SwiftParser/Declarations.swift index a0888744ac4..e8ede5981d4 100644 --- a/Sources/SwiftParser/Declarations.swift +++ b/Sources/SwiftParser/Declarations.swift @@ -10,7 +10,11 @@ // //===----------------------------------------------------------------------===// +#if swift(>=6) +@_spi(RawSyntax) internal import SwiftSyntax +#else @_spi(RawSyntax) import SwiftSyntax +#endif extension DeclarationModifier { var canHaveParenthesizedArgument: Bool { diff --git a/Sources/SwiftParser/Directives.swift b/Sources/SwiftParser/Directives.swift index 381c8260a4a..e26520d1a07 100644 --- a/Sources/SwiftParser/Directives.swift +++ b/Sources/SwiftParser/Directives.swift @@ -10,7 +10,11 @@ // //===----------------------------------------------------------------------===// +#if swift(>=6) +@_spi(RawSyntax) internal import SwiftSyntax +#else @_spi(RawSyntax) import SwiftSyntax +#endif extension Parser { private enum IfConfigContinuationClauseStartKeyword: TokenSpecSet { diff --git a/Sources/SwiftParser/ExpressionInterpretedAsVersionTuple.swift b/Sources/SwiftParser/ExpressionInterpretedAsVersionTuple.swift index af1d5c5dc87..91d94b7215c 100644 --- a/Sources/SwiftParser/ExpressionInterpretedAsVersionTuple.swift +++ b/Sources/SwiftParser/ExpressionInterpretedAsVersionTuple.swift @@ -10,7 +10,11 @@ // //===----------------------------------------------------------------------===// +#if swift(>=6) +@_spi(RawSyntax) public import SwiftSyntax +#else @_spi(RawSyntax) import SwiftSyntax +#endif extension ExprSyntax { /// Parse the source code of this node as a `VersionTupleSyntax`. diff --git a/Sources/SwiftParser/Expressions.swift b/Sources/SwiftParser/Expressions.swift index 06cc3f8dc13..cf31d394bcf 100644 --- a/Sources/SwiftParser/Expressions.swift +++ b/Sources/SwiftParser/Expressions.swift @@ -10,7 +10,11 @@ // //===----------------------------------------------------------------------===// +#if swift(>=6) +@_spi(RawSyntax) internal import SwiftSyntax +#else @_spi(RawSyntax) import SwiftSyntax +#endif extension TokenConsumer { mutating func atStartOfExpression() -> Bool { diff --git a/Sources/SwiftParser/IsValidIdentifier.swift b/Sources/SwiftParser/IsValidIdentifier.swift index 6e734bd0fda..d8305c86643 100644 --- a/Sources/SwiftParser/IsValidIdentifier.swift +++ b/Sources/SwiftParser/IsValidIdentifier.swift @@ -10,7 +10,11 @@ // //===----------------------------------------------------------------------===// +#if swift(>=6) +@_spi(RawSyntax) internal import SwiftSyntax +#else @_spi(RawSyntax) import SwiftSyntax +#endif /// Context in which to check if a name can be used as an identifier. /// diff --git a/Sources/SwiftParser/Lexer/Cursor.swift b/Sources/SwiftParser/Lexer/Cursor.swift index 302447b00d7..4c2372fb886 100644 --- a/Sources/SwiftParser/Lexer/Cursor.swift +++ b/Sources/SwiftParser/Lexer/Cursor.swift @@ -10,7 +10,11 @@ // //===----------------------------------------------------------------------===// +#if swift(>=6) +@_spi(RawSyntax) @_spi(BumpPtrAllocator) internal import SwiftSyntax +#else @_spi(RawSyntax) @_spi(BumpPtrAllocator) import SwiftSyntax +#endif extension SyntaxText { fileprivate func containsPlaceholderEnd() -> Bool { diff --git a/Sources/SwiftParser/Lexer/LexemeSequence.swift b/Sources/SwiftParser/Lexer/LexemeSequence.swift index 1d5b9eb2a2c..59e47831e36 100644 --- a/Sources/SwiftParser/Lexer/LexemeSequence.swift +++ b/Sources/SwiftParser/Lexer/LexemeSequence.swift @@ -10,7 +10,11 @@ // //===----------------------------------------------------------------------===// +#if swift(>=6) +@_spi(RawSyntax) @_spi(BumpPtrAllocator) internal import SwiftSyntax +#else @_spi(RawSyntax) @_spi(BumpPtrAllocator) import SwiftSyntax +#endif extension Lexer { /// A sequence of ``Lexer/Lexeme`` tokens starting from a ``Lexer/Cursor`` diff --git a/Sources/SwiftParser/Lexer/RegexLiteralLexer.swift b/Sources/SwiftParser/Lexer/RegexLiteralLexer.swift index b97bc09b5f7..e6ffe512ef9 100644 --- a/Sources/SwiftParser/Lexer/RegexLiteralLexer.swift +++ b/Sources/SwiftParser/Lexer/RegexLiteralLexer.swift @@ -10,7 +10,11 @@ // //===----------------------------------------------------------------------===// +#if swift(>=6) +@_spi(RawSyntax) @_spi(BumpPtrAllocator) internal import SwiftSyntax +#else @_spi(RawSyntax) @_spi(BumpPtrAllocator) import SwiftSyntax +#endif /// A separate lexer specifically for regex literals. fileprivate struct RegexLiteralLexer { diff --git a/Sources/SwiftParser/Lookahead.swift b/Sources/SwiftParser/Lookahead.swift index ba9bdae2bbd..ac4edd483c9 100644 --- a/Sources/SwiftParser/Lookahead.swift +++ b/Sources/SwiftParser/Lookahead.swift @@ -10,7 +10,11 @@ // //===----------------------------------------------------------------------===// +#if swift(>=6) +@_spi(RawSyntax) internal import SwiftSyntax +#else @_spi(RawSyntax) import SwiftSyntax +#endif extension Parser { /// Token lookahead for the parser. diff --git a/Sources/SwiftParser/LoopProgressCondition.swift b/Sources/SwiftParser/LoopProgressCondition.swift index 8c0d8334860..1a145655772 100644 --- a/Sources/SwiftParser/LoopProgressCondition.swift +++ b/Sources/SwiftParser/LoopProgressCondition.swift @@ -10,7 +10,11 @@ // //===----------------------------------------------------------------------===// +#if swift(>=6) +@_spi(RawSyntax) internal import SwiftSyntax +#else @_spi(RawSyntax) import SwiftSyntax +#endif /// A type that can be used to make sure that a loop in the parser makes process. /// diff --git a/Sources/SwiftParser/Modifiers.swift b/Sources/SwiftParser/Modifiers.swift index da6a423e9b3..9f29fae0b5a 100644 --- a/Sources/SwiftParser/Modifiers.swift +++ b/Sources/SwiftParser/Modifiers.swift @@ -10,7 +10,11 @@ // //===----------------------------------------------------------------------===// +#if swift(>=6) +@_spi(RawSyntax) internal import SwiftSyntax +#else @_spi(RawSyntax) import SwiftSyntax +#endif extension Parser { mutating func parseDeclModifierList() -> RawDeclModifierListSyntax { diff --git a/Sources/SwiftParser/Names.swift b/Sources/SwiftParser/Names.swift index ddd6a175e75..d33e203ef00 100644 --- a/Sources/SwiftParser/Names.swift +++ b/Sources/SwiftParser/Names.swift @@ -10,7 +10,11 @@ // //===----------------------------------------------------------------------===// +#if swift(>=6) +@_spi(RawSyntax) internal import SwiftSyntax +#else @_spi(RawSyntax) import SwiftSyntax +#endif extension Parser { mutating func parseAnyIdentifier() -> RawTokenSyntax { diff --git a/Sources/SwiftParser/Nominals.swift b/Sources/SwiftParser/Nominals.swift index b48dffc946a..0e16e857fd8 100644 --- a/Sources/SwiftParser/Nominals.swift +++ b/Sources/SwiftParser/Nominals.swift @@ -10,7 +10,11 @@ // //===----------------------------------------------------------------------===// +#if swift(>=6) +@_spi(RawSyntax) internal import SwiftSyntax +#else @_spi(RawSyntax) import SwiftSyntax +#endif protocol NominalTypeDeclarationTrait { associatedtype PrimaryOrGenerics diff --git a/Sources/SwiftParser/Parameters.swift b/Sources/SwiftParser/Parameters.swift index 9d5b8cd1b81..1b7add9845a 100644 --- a/Sources/SwiftParser/Parameters.swift +++ b/Sources/SwiftParser/Parameters.swift @@ -10,7 +10,11 @@ // //===----------------------------------------------------------------------===// +#if swift(>=6) +@_spi(RawSyntax) internal import SwiftSyntax +#else @_spi(RawSyntax) import SwiftSyntax +#endif // MARK: - Traits diff --git a/Sources/SwiftParser/Patterns.swift b/Sources/SwiftParser/Patterns.swift index e871f79857d..a2639950fad 100644 --- a/Sources/SwiftParser/Patterns.swift +++ b/Sources/SwiftParser/Patterns.swift @@ -10,7 +10,11 @@ // //===----------------------------------------------------------------------===// +#if swift(>=6) +@_spi(RawSyntax) @_spi(ExperimentalLanguageFeatures) internal import SwiftSyntax +#else @_spi(RawSyntax) @_spi(ExperimentalLanguageFeatures) import SwiftSyntax +#endif extension Parser { /// Parse a pattern. diff --git a/Sources/SwiftParser/README.md b/Sources/SwiftParser/README.md index 2818fc65fdf..8f66368771c 100644 --- a/Sources/SwiftParser/README.md +++ b/Sources/SwiftParser/README.md @@ -8,7 +8,11 @@ The easiest way to parse Swift source code is to call the `Parser.parse` method, ```swift import SwiftParser +#if swift(>=6) +internal import SwiftSyntax +#else import SwiftSyntax +#endif let sourceText = """ diff --git a/Sources/SwiftParser/Recovery.swift b/Sources/SwiftParser/Recovery.swift index 18071c4727f..df0c32ae130 100644 --- a/Sources/SwiftParser/Recovery.swift +++ b/Sources/SwiftParser/Recovery.swift @@ -10,7 +10,11 @@ // //===----------------------------------------------------------------------===// +#if swift(>=6) +@_spi(RawSyntax) internal import SwiftSyntax +#else @_spi(RawSyntax) import SwiftSyntax +#endif // MARK: Lookahead diff --git a/Sources/SwiftParser/Statements.swift b/Sources/SwiftParser/Statements.swift index aa1e22d0e3f..e4e94645f68 100644 --- a/Sources/SwiftParser/Statements.swift +++ b/Sources/SwiftParser/Statements.swift @@ -10,7 +10,11 @@ // //===----------------------------------------------------------------------===// +#if swift(>=6) +@_spi(RawSyntax) @_spi(ExperimentalLanguageFeatures) internal import SwiftSyntax +#else @_spi(RawSyntax) @_spi(ExperimentalLanguageFeatures) import SwiftSyntax +#endif extension TokenConsumer { /// Returns `true` if the current token represents the start of a statement diff --git a/Sources/SwiftParser/StringLiterals.swift b/Sources/SwiftParser/StringLiterals.swift index 7533f5a87f3..95c7c975fd2 100644 --- a/Sources/SwiftParser/StringLiterals.swift +++ b/Sources/SwiftParser/StringLiterals.swift @@ -10,7 +10,11 @@ // //===----------------------------------------------------------------------===// +#if swift(>=6) +@_spi(RawSyntax) internal import SwiftSyntax +#else @_spi(RawSyntax) import SwiftSyntax +#endif // MARK: - Check multiline string literal indentation diff --git a/Sources/SwiftParser/SwiftParser.docc/SwiftParser.md b/Sources/SwiftParser/SwiftParser.docc/SwiftParser.md index cb411c5297b..b1346bb0618 100644 --- a/Sources/SwiftParser/SwiftParser.docc/SwiftParser.md +++ b/Sources/SwiftParser/SwiftParser.docc/SwiftParser.md @@ -12,7 +12,11 @@ The easiest way to parse Swift source code is to call the `Parser.parse` method, ```swift import SwiftParser +#if swift(>=6) +internal import SwiftSyntax +#else import SwiftSyntax +#endif let sourceText = """ diff --git a/Sources/SwiftParser/SwiftParserCompatibility.swift b/Sources/SwiftParser/SwiftParserCompatibility.swift index ece5ea6c445..5dfc982fdfc 100644 --- a/Sources/SwiftParser/SwiftParserCompatibility.swift +++ b/Sources/SwiftParser/SwiftParserCompatibility.swift @@ -10,7 +10,11 @@ // //===----------------------------------------------------------------------===// +#if swift(>=6) +internal import SwiftSyntax +#else import SwiftSyntax +#endif // This file provides compatibility aliases to keep dependents of SwiftSyntax building. // All users of the declarations in this file should transition away from them ASAP. diff --git a/Sources/SwiftParser/SyntaxUtils.swift b/Sources/SwiftParser/SyntaxUtils.swift index 5566dcd6d8b..01bf1e7b141 100644 --- a/Sources/SwiftParser/SyntaxUtils.swift +++ b/Sources/SwiftParser/SyntaxUtils.swift @@ -10,7 +10,11 @@ // //===----------------------------------------------------------------------===// +#if swift(>=6) +@_spi(RawSyntax) internal import SwiftSyntax +#else @_spi(RawSyntax) import SwiftSyntax +#endif // MARK: - Unexpected nodes diff --git a/Sources/SwiftParser/TokenConsumer.swift b/Sources/SwiftParser/TokenConsumer.swift index 8d63c51c915..f7ee632ba59 100644 --- a/Sources/SwiftParser/TokenConsumer.swift +++ b/Sources/SwiftParser/TokenConsumer.swift @@ -10,7 +10,11 @@ // //===----------------------------------------------------------------------===// +#if swift(>=6) +@_spi(RawSyntax) internal import SwiftSyntax +#else @_spi(RawSyntax) import SwiftSyntax +#endif /// A type that consumes instances of ``TokenSyntax``. protocol TokenConsumer { diff --git a/Sources/SwiftParser/TokenPrecedence.swift b/Sources/SwiftParser/TokenPrecedence.swift index f61d51c1902..e60f5657790 100644 --- a/Sources/SwiftParser/TokenPrecedence.swift +++ b/Sources/SwiftParser/TokenPrecedence.swift @@ -10,7 +10,11 @@ // //===----------------------------------------------------------------------===// +#if swift(>=6) +@_spi(RawSyntax) @_spi(ExperimentalLanguageFeatures) internal import SwiftSyntax +#else @_spi(RawSyntax) @_spi(ExperimentalLanguageFeatures) import SwiftSyntax +#endif /// Describes how distinctive a token is for parser recovery. /// diff --git a/Sources/SwiftParser/TokenSpec.swift b/Sources/SwiftParser/TokenSpec.swift index 04765fe8dee..8f96d124282 100644 --- a/Sources/SwiftParser/TokenSpec.swift +++ b/Sources/SwiftParser/TokenSpec.swift @@ -49,7 +49,7 @@ struct PrepareForKeywordMatch { /// matching against and is thus able to rule out one of the branches in /// `matches(rawTokenKind:text:)` based on the matched kind. @_spi(AlternateTokenIntrospection) -public struct TokenSpec { +public struct TokenSpec: Sendable { /// The kind we expect the token that we want to consume to have. /// This can be a keyword, in which case the ``TokenSpec`` will also match an /// identifier with the same text as the keyword and remap it to that keyword diff --git a/Sources/SwiftParser/TokenSpecSet.swift b/Sources/SwiftParser/TokenSpecSet.swift index ca7aa553a73..2dd8034cb11 100644 --- a/Sources/SwiftParser/TokenSpecSet.swift +++ b/Sources/SwiftParser/TokenSpecSet.swift @@ -11,7 +11,7 @@ //===----------------------------------------------------------------------===// #if swift(>=6) -@_spi(RawSyntax) @_spi(ExperimentalLanguageFeatures) public import SwiftSyntax +@_spi(RawSyntax) @_spi(ExperimentalLanguageFeatures) internal import SwiftSyntax #else @_spi(RawSyntax) @_spi(ExperimentalLanguageFeatures) import SwiftSyntax #endif diff --git a/Sources/SwiftParser/TopLevel.swift b/Sources/SwiftParser/TopLevel.swift index 92b12a8181e..330f1fbfc27 100644 --- a/Sources/SwiftParser/TopLevel.swift +++ b/Sources/SwiftParser/TopLevel.swift @@ -10,7 +10,11 @@ // //===----------------------------------------------------------------------===// +#if swift(>=6) +@_spi(RawSyntax) internal import SwiftSyntax +#else @_spi(RawSyntax) import SwiftSyntax +#endif extension Parser { /// Consumes and returns all remaining tokens in the source file. diff --git a/Sources/SwiftParser/Types.swift b/Sources/SwiftParser/Types.swift index 3e07e16a628..c995ca2a725 100644 --- a/Sources/SwiftParser/Types.swift +++ b/Sources/SwiftParser/Types.swift @@ -10,7 +10,11 @@ // //===----------------------------------------------------------------------===// +#if swift(>=6) +@_spi(RawSyntax) @_spi(ExperimentalLanguageFeatures) internal import SwiftSyntax +#else @_spi(RawSyntax) @_spi(ExperimentalLanguageFeatures) import SwiftSyntax +#endif extension Parser { /// Parse a type. diff --git a/Sources/SwiftParser/generated/TokenSpecStaticMembers.swift b/Sources/SwiftParser/generated/TokenSpecStaticMembers.swift index 7f0f81a9ba7..a495ca75d2a 100644 --- a/Sources/SwiftParser/generated/TokenSpecStaticMembers.swift +++ b/Sources/SwiftParser/generated/TokenSpecStaticMembers.swift @@ -12,7 +12,11 @@ // //===----------------------------------------------------------------------===// +#if swift(>=6) +@_spi(RawSyntax) internal import SwiftSyntax +#else @_spi(RawSyntax) import SwiftSyntax +#endif extension TokenSpec { static var arrow: TokenSpec { diff --git a/Sources/SwiftParserDiagnostics/DiagnosticExtensions.swift b/Sources/SwiftParserDiagnostics/DiagnosticExtensions.swift index 60bf45cf59c..42128ddd58d 100644 --- a/Sources/SwiftParserDiagnostics/DiagnosticExtensions.swift +++ b/Sources/SwiftParserDiagnostics/DiagnosticExtensions.swift @@ -10,9 +10,15 @@ // //===----------------------------------------------------------------------===// +#if swift(>=6) +internal import SwiftBasicFormat +internal import SwiftDiagnostics +@_spi(RawSyntax) internal import SwiftSyntax +#else import SwiftBasicFormat import SwiftDiagnostics @_spi(RawSyntax) import SwiftSyntax +#endif extension FixIt { /// A more complex set of changes that affects multiple syntax nodes and thus diff --git a/Sources/SwiftParserDiagnostics/LexerDiagnosticMessages.swift b/Sources/SwiftParserDiagnostics/LexerDiagnosticMessages.swift index f667d537119..20fcc3a4d12 100644 --- a/Sources/SwiftParserDiagnostics/LexerDiagnosticMessages.swift +++ b/Sources/SwiftParserDiagnostics/LexerDiagnosticMessages.swift @@ -12,7 +12,7 @@ #if swift(>=6) public import SwiftDiagnostics -@_spi(Diagnostics) import SwiftParser +@_spi(Diagnostics) internal import SwiftParser @_spi(RawSyntax) public import SwiftSyntax #else import SwiftDiagnostics diff --git a/Sources/SwiftParserDiagnostics/MissingNodesError.swift b/Sources/SwiftParserDiagnostics/MissingNodesError.swift index 53c4a474dae..29651d250fe 100644 --- a/Sources/SwiftParserDiagnostics/MissingNodesError.swift +++ b/Sources/SwiftParserDiagnostics/MissingNodesError.swift @@ -11,8 +11,8 @@ //===----------------------------------------------------------------------===// #if swift(>=6) -import SwiftBasicFormat -import SwiftDiagnostics +internal import SwiftBasicFormat +internal import SwiftDiagnostics @_spi(RawSyntax) public import SwiftSyntax #else import SwiftBasicFormat diff --git a/Sources/SwiftParserDiagnostics/MissingTokenError.swift b/Sources/SwiftParserDiagnostics/MissingTokenError.swift index 40161fefd63..dde8049f7f6 100644 --- a/Sources/SwiftParserDiagnostics/MissingTokenError.swift +++ b/Sources/SwiftParserDiagnostics/MissingTokenError.swift @@ -10,9 +10,15 @@ // //===----------------------------------------------------------------------===// +#if swift(>=6) +internal import SwiftDiagnostics +@_spi(Diagnostics) internal import SwiftParser +@_spi(RawSyntax) internal import SwiftSyntax +#else import SwiftDiagnostics @_spi(Diagnostics) import SwiftParser @_spi(RawSyntax) import SwiftSyntax +#endif extension ParseDiagnosticsGenerator { func handleMissingToken(_ missingToken: TokenSyntax) { diff --git a/Sources/SwiftParserDiagnostics/MultiLineStringLiteralDiagnosticsGenerator.swift b/Sources/SwiftParserDiagnostics/MultiLineStringLiteralDiagnosticsGenerator.swift index 7498ae7f671..055e9760008 100644 --- a/Sources/SwiftParserDiagnostics/MultiLineStringLiteralDiagnosticsGenerator.swift +++ b/Sources/SwiftParserDiagnostics/MultiLineStringLiteralDiagnosticsGenerator.swift @@ -10,8 +10,13 @@ // //===----------------------------------------------------------------------===// +#if swift(>=6) +internal import SwiftDiagnostics +@_spi(RawSyntax) internal import SwiftSyntax +#else import SwiftDiagnostics @_spi(RawSyntax) import SwiftSyntax +#endif /// A diagnostic that `MultiLineStringLiteralIndentationDiagnosticsGenerator` is building. /// As indentation errors are found on more lines, this diagnostic is modified diff --git a/Sources/SwiftParserDiagnostics/ParseDiagnosticsGenerator.swift b/Sources/SwiftParserDiagnostics/ParseDiagnosticsGenerator.swift index 92576ab39a4..7a20dc8845e 100644 --- a/Sources/SwiftParserDiagnostics/ParseDiagnosticsGenerator.swift +++ b/Sources/SwiftParserDiagnostics/ParseDiagnosticsGenerator.swift @@ -12,7 +12,7 @@ #if swift(>=6) public import SwiftDiagnostics -@_spi(Diagnostics) import SwiftParser +@_spi(Diagnostics) internal import SwiftParser @_spi(ExperimentalLanguageFeatures) public import SwiftSyntax #else import SwiftDiagnostics diff --git a/Sources/SwiftParserDiagnostics/ParserDiagnosticMessages.swift b/Sources/SwiftParserDiagnostics/ParserDiagnosticMessages.swift index 5968c9843c2..d89d4fbd968 100644 --- a/Sources/SwiftParserDiagnostics/ParserDiagnosticMessages.swift +++ b/Sources/SwiftParserDiagnostics/ParserDiagnosticMessages.swift @@ -12,7 +12,7 @@ #if swift(>=6) public import SwiftDiagnostics -@_spi(Diagnostics) import SwiftParser +@_spi(Diagnostics) internal import SwiftParser @_spi(RawSyntax) public import SwiftSyntax #else import SwiftDiagnostics diff --git a/Sources/SwiftParserDiagnostics/PresenceUtils.swift b/Sources/SwiftParserDiagnostics/PresenceUtils.swift index bab06afe40c..524f2c8f50f 100644 --- a/Sources/SwiftParserDiagnostics/PresenceUtils.swift +++ b/Sources/SwiftParserDiagnostics/PresenceUtils.swift @@ -10,9 +10,13 @@ // //===----------------------------------------------------------------------===// +#if swift(>=6) +internal import SwiftBasicFormat +@_spi(RawSyntax) internal import SwiftSyntax +#else import SwiftBasicFormat @_spi(RawSyntax) import SwiftSyntax - +#endif /// Walks a tree and checks whether the tree contained any present tokens. class PresentNodeChecker: SyntaxAnyVisitor { var hasPresentToken: Bool = false diff --git a/Sources/SwiftParserDiagnostics/SyntaxExtensions.swift b/Sources/SwiftParserDiagnostics/SyntaxExtensions.swift index 8d59d387138..38ee98bbe30 100644 --- a/Sources/SwiftParserDiagnostics/SyntaxExtensions.swift +++ b/Sources/SwiftParserDiagnostics/SyntaxExtensions.swift @@ -10,9 +10,15 @@ // //===----------------------------------------------------------------------===// +#if swift(>=6) +internal import SwiftBasicFormat +@_spi(Diagnostics) internal import SwiftParser +@_spi(RawSyntax) @_spi(ExperimentalLanguageFeatures) internal import SwiftSyntax +#else import SwiftBasicFormat @_spi(Diagnostics) import SwiftParser @_spi(RawSyntax) @_spi(ExperimentalLanguageFeatures) import SwiftSyntax +#endif extension UnexpectedNodesSyntax { func presentTokens(satisfying isIncluded: (TokenSyntax) -> Bool) -> [TokenSyntax] { diff --git a/Sources/SwiftParserDiagnostics/generated/ChildNameForDiagnostics.swift b/Sources/SwiftParserDiagnostics/generated/ChildNameForDiagnostics.swift index 56066b8547f..36983cf5462 100644 --- a/Sources/SwiftParserDiagnostics/generated/ChildNameForDiagnostics.swift +++ b/Sources/SwiftParserDiagnostics/generated/ChildNameForDiagnostics.swift @@ -12,7 +12,11 @@ // //===----------------------------------------------------------------------===// +#if swift(>=6) +@_spi(ExperimentalLanguageFeatures) internal import SwiftSyntax +#else @_spi(ExperimentalLanguageFeatures) import SwiftSyntax +#endif private func childNameForDiagnostics(_ keyPath: AnyKeyPath) -> String? { switch keyPath { diff --git a/Sources/SwiftParserDiagnostics/generated/SyntaxKindNameForDiagnostics.swift b/Sources/SwiftParserDiagnostics/generated/SyntaxKindNameForDiagnostics.swift index 4ecbb908412..4006f445c54 100644 --- a/Sources/SwiftParserDiagnostics/generated/SyntaxKindNameForDiagnostics.swift +++ b/Sources/SwiftParserDiagnostics/generated/SyntaxKindNameForDiagnostics.swift @@ -12,7 +12,11 @@ // //===----------------------------------------------------------------------===// +#if swift(>=6) +@_spi(ExperimentalLanguageFeatures) internal import SwiftSyntax +#else @_spi(ExperimentalLanguageFeatures) import SwiftSyntax +#endif extension SyntaxKind { var nameForDiagnostics: String? { diff --git a/Sources/SwiftParserDiagnostics/generated/TokenNameForDiagnostics.swift b/Sources/SwiftParserDiagnostics/generated/TokenNameForDiagnostics.swift index 24357b732db..a760feca88b 100644 --- a/Sources/SwiftParserDiagnostics/generated/TokenNameForDiagnostics.swift +++ b/Sources/SwiftParserDiagnostics/generated/TokenNameForDiagnostics.swift @@ -12,7 +12,11 @@ // //===----------------------------------------------------------------------===// +#if swift(>=6) +@_spi(RawSyntax) internal import SwiftSyntax +#else @_spi(RawSyntax) import SwiftSyntax +#endif extension TokenKind { var nameForDiagnostics: String { diff --git a/Sources/SwiftSyntaxBuilder/ConvenienceInitializers.swift b/Sources/SwiftSyntaxBuilder/ConvenienceInitializers.swift index 90c51e4a926..a4d306bfdb6 100644 --- a/Sources/SwiftSyntaxBuilder/ConvenienceInitializers.swift +++ b/Sources/SwiftSyntaxBuilder/ConvenienceInitializers.swift @@ -11,7 +11,7 @@ //===----------------------------------------------------------------------===// #if swift(>=6) -@_spi(RawSyntax) import SwiftParser +@_spi(RawSyntax) internal import SwiftParser @_spi(RawSyntax) public import SwiftSyntax #else @_spi(RawSyntax) import SwiftParser diff --git a/Sources/SwiftSyntaxBuilder/SwiftSyntaxBuilderCompatibility.swift b/Sources/SwiftSyntaxBuilder/SwiftSyntaxBuilderCompatibility.swift index e0c673e8706..c1b29002829 100644 --- a/Sources/SwiftSyntaxBuilder/SwiftSyntaxBuilderCompatibility.swift +++ b/Sources/SwiftSyntaxBuilder/SwiftSyntaxBuilderCompatibility.swift @@ -13,7 +13,11 @@ // This file provides compatibility aliases to keep dependents of SwiftSyntaxBuilder building. // All users of the declarations in this file should transition away from them ASAP. +#if swift(>=6) +internal import SwiftSyntax +#else import SwiftSyntax +#endif @available(*, deprecated, renamed: "ImportPathComponentListBuilder") public typealias AccessPathBuilder = ImportPathComponentListBuilder diff --git a/Sources/SwiftSyntaxBuilder/Syntax+StringInterpolation.swift b/Sources/SwiftSyntaxBuilder/Syntax+StringInterpolation.swift index 39848d2257f..72c3338cbfb 100644 --- a/Sources/SwiftSyntaxBuilder/Syntax+StringInterpolation.swift +++ b/Sources/SwiftSyntaxBuilder/Syntax+StringInterpolation.swift @@ -12,8 +12,8 @@ #if swift(>=6) public import SwiftBasicFormat -import SwiftDiagnostics -@_spi(RawSyntax) @_spi(Testing) import SwiftParser +internal import SwiftDiagnostics +@_spi(RawSyntax) @_spi(Testing) internal import SwiftParser @_spi(RawSyntax) public import SwiftSyntax #else import SwiftBasicFormat diff --git a/Sources/SwiftSyntaxBuilder/SyntaxParsable+ExpressibleByStringInterpolation.swift b/Sources/SwiftSyntaxBuilder/SyntaxParsable+ExpressibleByStringInterpolation.swift index 506c2247f79..f87f7e324ec 100644 --- a/Sources/SwiftSyntaxBuilder/SyntaxParsable+ExpressibleByStringInterpolation.swift +++ b/Sources/SwiftSyntaxBuilder/SyntaxParsable+ExpressibleByStringInterpolation.swift @@ -11,10 +11,10 @@ //===----------------------------------------------------------------------===// #if swift(>=6) -import SwiftDiagnostics +internal import SwiftDiagnostics public import SwiftParser -import SwiftParserDiagnostics -import SwiftSyntax +internal import SwiftParserDiagnostics +internal import SwiftSyntax #else import SwiftDiagnostics import SwiftParser diff --git a/Sources/SwiftSyntaxBuilder/ValidatingSyntaxNodes.swift b/Sources/SwiftSyntaxBuilder/ValidatingSyntaxNodes.swift index 010331b3ba5..73f0923c3ac 100644 --- a/Sources/SwiftSyntaxBuilder/ValidatingSyntaxNodes.swift +++ b/Sources/SwiftSyntaxBuilder/ValidatingSyntaxNodes.swift @@ -11,8 +11,8 @@ //===----------------------------------------------------------------------===// #if swift(>=6) -import SwiftDiagnostics -import SwiftParserDiagnostics +internal import SwiftDiagnostics +internal import SwiftParserDiagnostics public import SwiftSyntax #else import SwiftDiagnostics diff --git a/Sources/SwiftSyntaxBuilder/WithTrailingCommaSyntax+EnsuringTrailingComma.swift b/Sources/SwiftSyntaxBuilder/WithTrailingCommaSyntax+EnsuringTrailingComma.swift index f5c0c2de9fc..9080ecc5960 100644 --- a/Sources/SwiftSyntaxBuilder/WithTrailingCommaSyntax+EnsuringTrailingComma.swift +++ b/Sources/SwiftSyntaxBuilder/WithTrailingCommaSyntax+EnsuringTrailingComma.swift @@ -10,7 +10,11 @@ // //===----------------------------------------------------------------------===// +#if swift(>=6) +internal import SwiftSyntax +#else import SwiftSyntax +#endif extension WithTrailingCommaSyntax { func ensuringTrailingComma() -> Self { diff --git a/Sources/SwiftSyntaxBuilder/generated/SyntaxExpressibleByStringInterpolationConformances.swift b/Sources/SwiftSyntaxBuilder/generated/SyntaxExpressibleByStringInterpolationConformances.swift index 9930629cd4f..c999b3f2f8f 100644 --- a/Sources/SwiftSyntaxBuilder/generated/SyntaxExpressibleByStringInterpolationConformances.swift +++ b/Sources/SwiftSyntaxBuilder/generated/SyntaxExpressibleByStringInterpolationConformances.swift @@ -12,7 +12,11 @@ // //===----------------------------------------------------------------------===// +#if swift(>=6) +internal import SwiftSyntax +#else import SwiftSyntax +#endif extension AccessorBlockSyntax: SyntaxExpressibleByStringInterpolation {} diff --git a/Sources/SwiftSyntaxMacroExpansion/BasicMacroExpansionContext.swift b/Sources/SwiftSyntaxMacroExpansion/BasicMacroExpansionContext.swift index 1cd2fc00f65..4701332d1fb 100644 --- a/Sources/SwiftSyntaxMacroExpansion/BasicMacroExpansionContext.swift +++ b/Sources/SwiftSyntaxMacroExpansion/BasicMacroExpansionContext.swift @@ -12,7 +12,7 @@ #if swift(>=6) public import SwiftDiagnostics -import SwiftOperators +internal import SwiftOperators public import SwiftSyntax public import SwiftSyntaxMacros #else diff --git a/Sources/SwiftSyntaxMacroExpansion/IndentationUtils.swift b/Sources/SwiftSyntaxMacroExpansion/IndentationUtils.swift index f3794d7ebe9..6ab1294d5b7 100644 --- a/Sources/SwiftSyntaxMacroExpansion/IndentationUtils.swift +++ b/Sources/SwiftSyntaxMacroExpansion/IndentationUtils.swift @@ -10,7 +10,11 @@ // //===----------------------------------------------------------------------===// +#if swift(>=6) +internal import SwiftSyntax +#else import SwiftSyntax +#endif // MARK: SyntaxProtocol.indentationOfFirstLine diff --git a/Sources/SwiftSyntaxMacroExpansion/MacroArgument.swift b/Sources/SwiftSyntaxMacroExpansion/MacroArgument.swift index 68500c20675..855c3e831ab 100644 --- a/Sources/SwiftSyntaxMacroExpansion/MacroArgument.swift +++ b/Sources/SwiftSyntaxMacroExpansion/MacroArgument.swift @@ -11,7 +11,7 @@ //===----------------------------------------------------------------------===// #if swift(>=6) -import SwiftDiagnostics +internal import SwiftDiagnostics public import SwiftSyntax #else import SwiftDiagnostics diff --git a/Sources/SwiftSyntaxMacroExpansion/MacroReplacement.swift b/Sources/SwiftSyntaxMacroExpansion/MacroReplacement.swift index a1ee7070e0d..23961c8ec5c 100644 --- a/Sources/SwiftSyntaxMacroExpansion/MacroReplacement.swift +++ b/Sources/SwiftSyntaxMacroExpansion/MacroReplacement.swift @@ -11,9 +11,9 @@ //===----------------------------------------------------------------------===// #if swift(>=6) -import SwiftDiagnostics +internal import SwiftDiagnostics public import SwiftSyntax -import SwiftSyntaxBuilder +internal import SwiftSyntaxBuilder #else import SwiftDiagnostics import SwiftSyntax diff --git a/Sources/SwiftSyntaxMacroExpansion/MacroSystem.swift b/Sources/SwiftSyntaxMacroExpansion/MacroSystem.swift index 7c5aaf9ea09..1c539aeb296 100644 --- a/Sources/SwiftSyntaxMacroExpansion/MacroSystem.swift +++ b/Sources/SwiftSyntaxMacroExpansion/MacroSystem.swift @@ -11,11 +11,11 @@ //===----------------------------------------------------------------------===// #if swift(>=6) -import SwiftDiagnostics -import SwiftOperators -@_spi(MacroExpansion) import SwiftParser +internal import SwiftDiagnostics +internal import SwiftOperators +@_spi(MacroExpansion) internal import SwiftParser public import SwiftSyntax -import SwiftSyntaxBuilder +internal import SwiftSyntaxBuilder @_spi(MacroExpansion) @_spi(ExperimentalLanguageFeature) public import SwiftSyntaxMacros #else import SwiftDiagnostics diff --git a/Sources/SwiftSyntaxMacrosTestSupport/Assertions.swift b/Sources/SwiftSyntaxMacrosTestSupport/Assertions.swift index b7366e21e0f..a107165c32b 100644 --- a/Sources/SwiftSyntaxMacrosTestSupport/Assertions.swift +++ b/Sources/SwiftSyntaxMacrosTestSupport/Assertions.swift @@ -63,7 +63,7 @@ public struct NoteSpec { message: String, line: Int, column: Int, - originatorFile: StaticString = #file, + originatorFile: StaticString = #filePath, originatorLine: UInt = #line ) { self.message = message diff --git a/Sources/_SwiftSyntaxTestSupport/SyntaxProtocol+Initializer.swift b/Sources/_SwiftSyntaxTestSupport/SyntaxProtocol+Initializer.swift index 1e3955b74ee..670d90c8eac 100644 --- a/Sources/_SwiftSyntaxTestSupport/SyntaxProtocol+Initializer.swift +++ b/Sources/_SwiftSyntaxTestSupport/SyntaxProtocol+Initializer.swift @@ -11,10 +11,10 @@ //===----------------------------------------------------------------------===// #if swift(>=6) -import SwiftBasicFormat -@_spi(Testing) import SwiftParser +internal import SwiftBasicFormat +@_spi(Testing) internal import SwiftParser @_spi(RawSyntax) public import SwiftSyntax -import SwiftSyntaxBuilder +internal import SwiftSyntaxBuilder #else import SwiftBasicFormat @_spi(Testing) import SwiftParser diff --git a/SwiftSyntaxDevUtils/Sources/swift-syntax-dev-utils/common/Paths.swift b/SwiftSyntaxDevUtils/Sources/swift-syntax-dev-utils/common/Paths.swift index 907d24dc033..36d6d198cc6 100644 --- a/SwiftSyntaxDevUtils/Sources/swift-syntax-dev-utils/common/Paths.swift +++ b/SwiftSyntaxDevUtils/Sources/swift-syntax-dev-utils/common/Paths.swift @@ -14,7 +14,7 @@ import Foundation enum Paths { static var packageDir: URL { - URL(fileURLWithPath: #file) + URL(fileURLWithPath: #filePath) .deletingLastPathComponent() .deletingLastPathComponent() .deletingLastPathComponent() diff --git a/Tests/PerformanceTest/InstructionsCountAssertion.swift b/Tests/PerformanceTest/InstructionsCountAssertion.swift index b14d15c14f5..250addfc71e 100644 --- a/Tests/PerformanceTest/InstructionsCountAssertion.swift +++ b/Tests/PerformanceTest/InstructionsCountAssertion.swift @@ -17,7 +17,7 @@ fileprivate var baselineURL: URL { if let baselineFile = ProcessInfo.processInfo.environment["BASELINE_FILE"] { return URL(fileURLWithPath: baselineFile) } else { - return URL(fileURLWithPath: #file) + return URL(fileURLWithPath: #filePath) .deletingLastPathComponent() .appendingPathComponent("baselines.json") } diff --git a/Tests/PerformanceTest/ParsingPerformanceTests.swift b/Tests/PerformanceTest/ParsingPerformanceTests.swift index 45a469828a1..3eff949de25 100644 --- a/Tests/PerformanceTest/ParsingPerformanceTests.swift +++ b/Tests/PerformanceTest/ParsingPerformanceTests.swift @@ -18,7 +18,7 @@ import _SwiftSyntaxTestSupport class ParsingPerformanceTests: XCTestCase { var inputFile: URL { - return URL(fileURLWithPath: #file) + return URL(fileURLWithPath: #filePath) .deletingLastPathComponent() .appendingPathComponent("Inputs") .appendingPathComponent("MinimalCollections.swift.input") diff --git a/Tests/PerformanceTest/SyntaxClassifierPerformanceTests.swift b/Tests/PerformanceTest/SyntaxClassifierPerformanceTests.swift index 78a1237de06..daa474ff25f 100644 --- a/Tests/PerformanceTest/SyntaxClassifierPerformanceTests.swift +++ b/Tests/PerformanceTest/SyntaxClassifierPerformanceTests.swift @@ -19,7 +19,7 @@ import _SwiftSyntaxTestSupport class SyntaxClassifierPerformanceTests: XCTestCase { var inputFile: URL { - return URL(fileURLWithPath: #file) + return URL(fileURLWithPath: #filePath) .deletingLastPathComponent() .appendingPathComponent("Inputs") .appendingPathComponent("MinimalCollections.swift.input") diff --git a/Tests/PerformanceTest/VisitorPerformanceTests.swift b/Tests/PerformanceTest/VisitorPerformanceTests.swift index 6dfbde5303f..71adefa173f 100644 --- a/Tests/PerformanceTest/VisitorPerformanceTests.swift +++ b/Tests/PerformanceTest/VisitorPerformanceTests.swift @@ -18,7 +18,7 @@ import _SwiftSyntaxTestSupport class VisitorPerformanceTests: XCTestCase { var inputFile: URL { - return URL(fileURLWithPath: #file) + return URL(fileURLWithPath: #filePath) .deletingLastPathComponent() .appendingPathComponent("Inputs") .appendingPathComponent("MinimalCollections.swift.input") diff --git a/Tests/SwiftParserTest/ParserTests.swift b/Tests/SwiftParserTest/ParserTests.swift index f22e1dcad68..f451890d3db 100644 --- a/Tests/SwiftParserTest/ParserTests.swift +++ b/Tests/SwiftParserTest/ParserTests.swift @@ -61,7 +61,8 @@ class ParserTests: ParserTestCase { checkDiagnostics: Bool, shouldExclude: @Sendable (URL) -> Bool = { _ in false } ) { - let fileURLs = FileManager.default + // nonisolated(unsafe) because [URL] is not marked Sendable on Linux. + let _fileURLs = FileManager.default .enumerator(at: path, includingPropertiesForKeys: nil)! .compactMap({ $0 as? URL }) .filter { @@ -69,6 +70,11 @@ class ParserTests: ParserTestCase { || $0.pathExtension == "sil" || $0.pathExtension == "swiftinterface" } + #if swift(>=6.0) + nonisolated(unsafe) let fileURLs = _fileURLs + #else + let fileURLs = _fileURLs + #endif print("\(name) - processing \(fileURLs.count) source files") DispatchQueue.concurrentPerform(iterations: fileURLs.count) { fileURLIndex in @@ -85,7 +91,7 @@ class ParserTests: ParserTestCase { } } - let packageDir = URL(fileURLWithPath: #file) + let packageDir = URL(fileURLWithPath: #filePath) .deletingLastPathComponent() .deletingLastPathComponent() .deletingLastPathComponent() diff --git a/Tests/SwiftParserTest/SequentialToConcurrentEditTranslationTests.swift b/Tests/SwiftParserTest/SequentialToConcurrentEditTranslationTests.swift index 4bc26e1406b..1a45c2ac39c 100644 --- a/Tests/SwiftParserTest/SequentialToConcurrentEditTranslationTests.swift +++ b/Tests/SwiftParserTest/SequentialToConcurrentEditTranslationTests.swift @@ -37,7 +37,7 @@ func verifySequentialToConcurrentTranslation( _ sequential: [IncrementalEdit], _ expectedConcurrent: [IncrementalEdit], testString: String = longString, - file: StaticString = #file, + file: StaticString = #filePath, line: UInt = #line ) { let concurrent = ConcurrentEdits(fromSequential: sequential) diff --git a/Tests/SwiftSyntaxMacroExpansionTest/LexicalContextTests.swift b/Tests/SwiftSyntaxMacroExpansionTest/LexicalContextTests.swift index 8a844347107..533a2a4d19f 100644 --- a/Tests/SwiftSyntaxMacroExpansionTest/LexicalContextTests.swift +++ b/Tests/SwiftSyntaxMacroExpansionTest/LexicalContextTests.swift @@ -200,8 +200,8 @@ struct AllLexicalContextsMacro: DeclarationMacro { } } -public struct LexicalContextDescriptionMacro: ExpressionMacro { - public static func expansion( +struct LexicalContextDescriptionMacro: ExpressionMacro { + static func expansion( of node: some FreestandingMacroExpansionSyntax, in context: some MacroExpansionContext ) throws -> ExprSyntax {