From 282338dc9bac9964a383c9a0727373176496c321 Mon Sep 17 00:00:00 2001 From: Stuart Montgomery Date: Wed, 12 Mar 2025 10:39:22 -0500 Subject: [PATCH] Enable upcoming feature 'MemberImportVisibility' and fix issues it reveals --- Package.swift | 2 ++ Sources/Testing/ABI/ABI.Record+Streaming.swift | 2 ++ Sources/TestingMacros/ConditionMacro.swift | 1 + Sources/TestingMacros/PragmaMacro.swift | 2 ++ Sources/TestingMacros/SuiteDeclarationMacro.swift | 2 ++ .../Support/Additions/MacroExpansionContextAdditions.swift | 1 + .../Support/Additions/TokenSyntaxAdditions.swift | 1 + Sources/TestingMacros/Support/Argument.swift | 1 + Sources/TestingMacros/Support/AttributeDiscovery.swift | 1 + Sources/TestingMacros/Support/AvailabilityGuards.swift | 1 + Sources/TestingMacros/Support/CommentParsing.swift | 1 + .../TestingMacros/Support/ConditionArgumentParsing.swift | 1 + .../Support/DiagnosticMessage+Diagnosing.swift | 2 ++ Sources/TestingMacros/Support/DiagnosticMessage.swift | 2 ++ Sources/TestingMacros/Support/SourceCodeCapturing.swift | 2 ++ .../TestingMacros/Support/SourceLocationGeneration.swift | 1 + Sources/TestingMacros/Support/TestContentGeneration.swift | 1 + Sources/TestingMacros/TagMacro.swift | 1 + Sources/TestingMacros/TestDeclarationMacro.swift | 2 ++ Tests/TestingMacrosTests/PragmaMacroTests.swift | 2 ++ Tests/TestingMacrosTests/TestDeclarationMacroTests.swift | 1 + Tests/TestingMacrosTests/TestSupport/Parse.swift | 1 + Tests/TestingTests/AttachmentTests.swift | 6 ++++-- 23 files changed, 35 insertions(+), 2 deletions(-) diff --git a/Package.swift b/Package.swift index e2257af1a..3a66ef039 100644 --- a/Package.swift +++ b/Package.swift @@ -202,6 +202,8 @@ extension Array where Element == PackageDescription.SwiftSetting { .enableExperimentalFeature("AccessLevelOnImport"), .enableUpcomingFeature("InternalImportsByDefault"), + .enableUpcomingFeature("MemberImportVisibility"), + // This setting is enabled in the package, but not in the toolchain build // (via CMake). Enabling it is dependent on acceptance of the @section // proposal via Swift Evolution. diff --git a/Sources/Testing/ABI/ABI.Record+Streaming.swift b/Sources/Testing/ABI/ABI.Record+Streaming.swift index 4c26b44ad..7b86cb438 100644 --- a/Sources/Testing/ABI/ABI.Record+Streaming.swift +++ b/Sources/Testing/ABI/ABI.Record+Streaming.swift @@ -9,6 +9,8 @@ // #if canImport(Foundation) && (!SWT_NO_FILE_IO || !SWT_NO_ABI_ENTRY_POINT) +private import Foundation + extension ABI.Version { /// Post-process encoded JSON and write it to a file. /// diff --git a/Sources/TestingMacros/ConditionMacro.swift b/Sources/TestingMacros/ConditionMacro.swift index b7a1526c1..616e9abbc 100644 --- a/Sources/TestingMacros/ConditionMacro.swift +++ b/Sources/TestingMacros/ConditionMacro.swift @@ -9,6 +9,7 @@ // public import SwiftSyntax +import SwiftSyntaxBuilder public import SwiftSyntaxMacros #if !hasFeature(SymbolLinkageMarkers) && SWT_NO_LEGACY_TEST_DISCOVERY diff --git a/Sources/TestingMacros/PragmaMacro.swift b/Sources/TestingMacros/PragmaMacro.swift index 783440764..b34325e87 100644 --- a/Sources/TestingMacros/PragmaMacro.swift +++ b/Sources/TestingMacros/PragmaMacro.swift @@ -8,6 +8,8 @@ // See https://swift.org/CONTRIBUTORS.txt for Swift project authors // +import SwiftDiagnostics +import SwiftParser public import SwiftSyntax public import SwiftSyntaxMacros diff --git a/Sources/TestingMacros/SuiteDeclarationMacro.swift b/Sources/TestingMacros/SuiteDeclarationMacro.swift index 791d08b82..8cfe5e902 100644 --- a/Sources/TestingMacros/SuiteDeclarationMacro.swift +++ b/Sources/TestingMacros/SuiteDeclarationMacro.swift @@ -8,7 +8,9 @@ // See https://swift.org/CONTRIBUTORS.txt for Swift project authors // +import SwiftDiagnostics public import SwiftSyntax +import SwiftSyntaxBuilder public import SwiftSyntaxMacros #if !hasFeature(SymbolLinkageMarkers) && SWT_NO_LEGACY_TEST_DISCOVERY diff --git a/Sources/TestingMacros/Support/Additions/MacroExpansionContextAdditions.swift b/Sources/TestingMacros/Support/Additions/MacroExpansionContextAdditions.swift index 8bcf2522a..3b31caf72 100644 --- a/Sources/TestingMacros/Support/Additions/MacroExpansionContextAdditions.swift +++ b/Sources/TestingMacros/Support/Additions/MacroExpansionContextAdditions.swift @@ -9,6 +9,7 @@ // import SwiftSyntax +import SwiftSyntaxBuilder import SwiftSyntaxMacros import SwiftDiagnostics diff --git a/Sources/TestingMacros/Support/Additions/TokenSyntaxAdditions.swift b/Sources/TestingMacros/Support/Additions/TokenSyntaxAdditions.swift index 2be9977d5..447a18dee 100644 --- a/Sources/TestingMacros/Support/Additions/TokenSyntaxAdditions.swift +++ b/Sources/TestingMacros/Support/Additions/TokenSyntaxAdditions.swift @@ -8,6 +8,7 @@ // See https://swift.org/CONTRIBUTORS.txt for Swift project authors // +import SwiftParser import SwiftSyntax extension TokenSyntax { diff --git a/Sources/TestingMacros/Support/Argument.swift b/Sources/TestingMacros/Support/Argument.swift index 44eeeabe7..e81e58cf7 100644 --- a/Sources/TestingMacros/Support/Argument.swift +++ b/Sources/TestingMacros/Support/Argument.swift @@ -9,6 +9,7 @@ // import SwiftSyntax +import SwiftSyntaxBuilder /// A type describing an argument to a function, closure, etc. /// diff --git a/Sources/TestingMacros/Support/AttributeDiscovery.swift b/Sources/TestingMacros/Support/AttributeDiscovery.swift index 84d96cf84..a61989aef 100644 --- a/Sources/TestingMacros/Support/AttributeDiscovery.swift +++ b/Sources/TestingMacros/Support/AttributeDiscovery.swift @@ -9,6 +9,7 @@ // import SwiftSyntax +import SwiftSyntaxBuilder import SwiftSyntaxMacros /// A syntax rewriter that removes leading `Self.` tokens from member access diff --git a/Sources/TestingMacros/Support/AvailabilityGuards.swift b/Sources/TestingMacros/Support/AvailabilityGuards.swift index a61be5772..e9f4ba762 100644 --- a/Sources/TestingMacros/Support/AvailabilityGuards.swift +++ b/Sources/TestingMacros/Support/AvailabilityGuards.swift @@ -9,6 +9,7 @@ // import SwiftSyntax +import SwiftSyntaxBuilder import SwiftSyntaxMacros /// A structure describing a single platform/version pair from an `@available()` diff --git a/Sources/TestingMacros/Support/CommentParsing.swift b/Sources/TestingMacros/Support/CommentParsing.swift index 1c16c10b8..fbfc27609 100644 --- a/Sources/TestingMacros/Support/CommentParsing.swift +++ b/Sources/TestingMacros/Support/CommentParsing.swift @@ -9,6 +9,7 @@ // import SwiftSyntax +import SwiftSyntaxBuilder /// Find a common whitespace prefix among all lines in a string and trim it. /// diff --git a/Sources/TestingMacros/Support/ConditionArgumentParsing.swift b/Sources/TestingMacros/Support/ConditionArgumentParsing.swift index 30f0cd430..edf9a23c3 100644 --- a/Sources/TestingMacros/Support/ConditionArgumentParsing.swift +++ b/Sources/TestingMacros/Support/ConditionArgumentParsing.swift @@ -9,6 +9,7 @@ // import SwiftSyntax +import SwiftSyntaxBuilder import SwiftSyntaxMacros /// The result of parsing the condition argument passed to `#expect()` or diff --git a/Sources/TestingMacros/Support/DiagnosticMessage+Diagnosing.swift b/Sources/TestingMacros/Support/DiagnosticMessage+Diagnosing.swift index e6682dc8f..bec994f82 100644 --- a/Sources/TestingMacros/Support/DiagnosticMessage+Diagnosing.swift +++ b/Sources/TestingMacros/Support/DiagnosticMessage+Diagnosing.swift @@ -9,7 +9,9 @@ // import SwiftDiagnostics +import SwiftParser import SwiftSyntax +import SwiftSyntaxBuilder import SwiftSyntaxMacros extension AttributeInfo { diff --git a/Sources/TestingMacros/Support/DiagnosticMessage.swift b/Sources/TestingMacros/Support/DiagnosticMessage.swift index a474d2801..e49cfa497 100644 --- a/Sources/TestingMacros/Support/DiagnosticMessage.swift +++ b/Sources/TestingMacros/Support/DiagnosticMessage.swift @@ -9,7 +9,9 @@ // import SwiftDiagnostics +import SwiftParser import SwiftSyntax +import SwiftSyntaxBuilder import SwiftSyntaxMacros import SwiftSyntaxMacroExpansion diff --git a/Sources/TestingMacros/Support/SourceCodeCapturing.swift b/Sources/TestingMacros/Support/SourceCodeCapturing.swift index 9fd687e8f..3e18e4713 100644 --- a/Sources/TestingMacros/Support/SourceCodeCapturing.swift +++ b/Sources/TestingMacros/Support/SourceCodeCapturing.swift @@ -8,7 +8,9 @@ // See https://swift.org/CONTRIBUTORS.txt for Swift project authors // +import SwiftParser import SwiftSyntax +import SwiftSyntaxBuilder /// Get a swift-syntax expression initializing an instance of `__Expression` /// from an arbitrary syntax node. diff --git a/Sources/TestingMacros/Support/SourceLocationGeneration.swift b/Sources/TestingMacros/Support/SourceLocationGeneration.swift index c93b0d9f0..1adf96b78 100644 --- a/Sources/TestingMacros/Support/SourceLocationGeneration.swift +++ b/Sources/TestingMacros/Support/SourceLocationGeneration.swift @@ -9,6 +9,7 @@ // import SwiftSyntax +import SwiftSyntaxBuilder import SwiftSyntaxMacros /// Get an expression initializing an instance of ``SourceLocation`` from an diff --git a/Sources/TestingMacros/Support/TestContentGeneration.swift b/Sources/TestingMacros/Support/TestContentGeneration.swift index 391a468b1..a8a5d28a2 100644 --- a/Sources/TestingMacros/Support/TestContentGeneration.swift +++ b/Sources/TestingMacros/Support/TestContentGeneration.swift @@ -9,6 +9,7 @@ // import SwiftSyntax +import SwiftSyntaxBuilder import SwiftSyntaxMacros /// An enumeration representing the different kinds of test content known to the diff --git a/Sources/TestingMacros/TagMacro.swift b/Sources/TestingMacros/TagMacro.swift index b94149c09..624f812cd 100644 --- a/Sources/TestingMacros/TagMacro.swift +++ b/Sources/TestingMacros/TagMacro.swift @@ -9,6 +9,7 @@ // public import SwiftSyntax +import SwiftSyntaxBuilder public import SwiftSyntaxMacros /// A type describing the expansion of the `@Tag` attribute macro. diff --git a/Sources/TestingMacros/TestDeclarationMacro.swift b/Sources/TestingMacros/TestDeclarationMacro.swift index c94769d21..1503081f0 100644 --- a/Sources/TestingMacros/TestDeclarationMacro.swift +++ b/Sources/TestingMacros/TestDeclarationMacro.swift @@ -8,7 +8,9 @@ // See https://swift.org/CONTRIBUTORS.txt for Swift project authors // +import SwiftDiagnostics public import SwiftSyntax +import SwiftSyntaxBuilder public import SwiftSyntaxMacros #if !hasFeature(SymbolLinkageMarkers) && SWT_NO_LEGACY_TEST_DISCOVERY diff --git a/Tests/TestingMacrosTests/PragmaMacroTests.swift b/Tests/TestingMacrosTests/PragmaMacroTests.swift index 0d430c036..bba101754 100644 --- a/Tests/TestingMacrosTests/PragmaMacroTests.swift +++ b/Tests/TestingMacrosTests/PragmaMacroTests.swift @@ -11,8 +11,10 @@ import Testing @testable import TestingMacros +import SwiftDiagnostics import SwiftParser import SwiftSyntax +import SwiftSyntaxBuilder @Suite("PragmaMacro Tests") struct PragmaMacroTests { diff --git a/Tests/TestingMacrosTests/TestDeclarationMacroTests.swift b/Tests/TestingMacrosTests/TestDeclarationMacroTests.swift index b0028c438..13ae3d180 100644 --- a/Tests/TestingMacrosTests/TestDeclarationMacroTests.swift +++ b/Tests/TestingMacrosTests/TestDeclarationMacroTests.swift @@ -11,6 +11,7 @@ import Testing @testable import TestingMacros +import SwiftBasicFormat import SwiftDiagnostics import SwiftParser import SwiftSyntax diff --git a/Tests/TestingMacrosTests/TestSupport/Parse.swift b/Tests/TestingMacrosTests/TestSupport/Parse.swift index ecff8de58..2b30df42e 100644 --- a/Tests/TestingMacrosTests/TestSupport/Parse.swift +++ b/Tests/TestingMacrosTests/TestSupport/Parse.swift @@ -10,6 +10,7 @@ @testable import TestingMacros +import SwiftBasicFormat import SwiftDiagnostics import SwiftOperators import SwiftParser diff --git a/Tests/TestingTests/AttachmentTests.swift b/Tests/TestingTests/AttachmentTests.swift index 0a220552a..5a36fd4b6 100644 --- a/Tests/TestingTests/AttachmentTests.swift +++ b/Tests/TestingTests/AttachmentTests.swift @@ -91,7 +91,8 @@ struct AttachmentTests { // Write the attachment to disk, then read it back. let filePath = try attachment.write(toFileInDirectoryAtPath: temporaryDirectory(), appending: suffixes.next()!) createdFilePaths.append(filePath) - let fileName = try #require(filePath.split { $0 == "/" || $0 == #"\"# }.last) + let filePathComponents = filePath.split { $0 == "/" || $0 == #"\"# } + let fileName = try #require(filePathComponents.last) if i == 0 { #expect(fileName == baseFileName) } else { @@ -118,7 +119,8 @@ struct AttachmentTests { defer { remove(filePath) } - let fileName = try #require(filePath.split { $0 == "/" || $0 == #"\"# }.last) + let filePathComponents = filePath.split { $0 == "/" || $0 == #"\"# } + let fileName = try #require(filePathComponents.last) #expect(fileName == "loremipsum-\(suffix).tgz.gif.jpeg.html") try compare(attachableValue, toContentsOfFileAtPath: filePath) }