From 67decfcfbc4f78d1f6b08919968c7806dac2580b Mon Sep 17 00:00:00 2001 From: Ambrus Toth Date: Thu, 14 Aug 2025 19:41:59 +0200 Subject: [PATCH 1/3] Fix #72841 Bug https://github.com/swiftlang/swift/issues/72841 (cherry picked from commit 2634117edc405ce1a7cc2f0ad016ed8c5bbe2601) --- Sources/ArgumentParser/Parsing/CommandParser.swift | 7 +++++-- 1 file changed, 5 insertions(+), 2 deletions(-) diff --git a/Sources/ArgumentParser/Parsing/CommandParser.swift b/Sources/ArgumentParser/Parsing/CommandParser.swift index e4b42f44..2b1957be 100644 --- a/Sources/ArgumentParser/Parsing/CommandParser.swift +++ b/Sources/ArgumentParser/Parsing/CommandParser.swift @@ -345,6 +345,9 @@ struct AutodetectedGenerateCompletions: ParsableCommand { @Flag() var generateCompletionScript = false } +func swiftBug72841Unwrap(_ x: T) -> T { x } +func swiftBug72841Unwrap(_ x: T?) -> T { x! } + extension CommandParser { func checkForCompletionScriptRequest(_ split: inout SplitArguments) throws { // Pseudo-commands don't support `--generate-completion-script` flag @@ -363,14 +366,14 @@ extension CommandParser { throw CommandError( commandStack: commandStack, parserError: .completionScriptRequested( - shell: result.generateCompletionScript)) + shell: swiftBug72841Unwrap(result).generateCompletionScript)) } // Check for for `--generate-completion-script` without a value var autodetectedParser = CommandParser(AutodetectedGenerateCompletions.self) if let result = try? autodetectedParser.parseCurrent(&split) as? AutodetectedGenerateCompletions, - result.generateCompletionScript + swiftBug72841Unwrap(result).generateCompletionScript { throw CommandError( commandStack: commandStack, From 6c357bcfeff444f3d5fa3711bf495814648b8bdb Mon Sep 17 00:00:00 2001 From: Ambrus Toth Date: Thu, 14 Aug 2025 19:42:32 +0200 Subject: [PATCH 2/3] Remove questionable cmake commands (cherry picked from commit ec6de6b76437a2558f43eee670def20f03b82f5f) --- Sources/ArgumentParser/CMakeLists.txt | 6 ++---- Sources/ArgumentParserTestHelpers/CMakeLists.txt | 2 -- Sources/ArgumentParserToolInfo/CMakeLists.txt | 3 --- 3 files changed, 2 insertions(+), 9 deletions(-) diff --git a/Sources/ArgumentParser/CMakeLists.txt b/Sources/ArgumentParser/CMakeLists.txt index ea7d83f9..697ad8c3 100644 --- a/Sources/ArgumentParser/CMakeLists.txt +++ b/Sources/ArgumentParser/CMakeLists.txt @@ -54,11 +54,9 @@ add_library(ArgumentParser Validators/ParsableArgumentsValidation.swift Validators/PositionalArgumentsValidator.swift Validators/UniqueNamesValidator.swift) -# NOTE: workaround for CMake not setting up include flags yet -set_target_properties(ArgumentParser PROPERTIES - INTERFACE_INCLUDE_DIRECTORIES ${CMAKE_Swift_MODULE_DIRECTORY}) + target_compile_options(ArgumentParser PRIVATE - $<$:-enable-testing>) + $<$:-enable-testing> -enable-library-evolution) target_link_libraries(ArgumentParser PRIVATE ArgumentParserToolInfo) if(Foundation_FOUND) diff --git a/Sources/ArgumentParserTestHelpers/CMakeLists.txt b/Sources/ArgumentParserTestHelpers/CMakeLists.txt index 2af1eb83..bc317020 100644 --- a/Sources/ArgumentParserTestHelpers/CMakeLists.txt +++ b/Sources/ArgumentParserTestHelpers/CMakeLists.txt @@ -1,8 +1,6 @@ add_library(ArgumentParserTestHelpers StringHelpers.swift TestHelpers.swift) -set_target_properties(ArgumentParserTestHelpers PROPERTIES - INTERFACE_INCLUDE_DIRECTORIES ${CMAKE_Swift_MODULE_DIRECTORY}) target_link_libraries(ArgumentParserTestHelpers PUBLIC ArgumentParser ArgumentParserToolInfo) diff --git a/Sources/ArgumentParserToolInfo/CMakeLists.txt b/Sources/ArgumentParserToolInfo/CMakeLists.txt index b82adb71..cd707e53 100644 --- a/Sources/ArgumentParserToolInfo/CMakeLists.txt +++ b/Sources/ArgumentParserToolInfo/CMakeLists.txt @@ -1,8 +1,5 @@ add_library(ArgumentParserToolInfo STATIC ToolInfo.swift) -# NOTE: workaround for CMake not setting up include flags yet -set_target_properties(ArgumentParserToolInfo PROPERTIES - INTERFACE_INCLUDE_DIRECTORIES ${CMAKE_Swift_MODULE_DIRECTORY}) target_compile_options(ArgumentParserToolInfo PRIVATE $<$:-enable-testing>) From 30fb0e4744a19846fc4b65be778f96d1f6bc6d2b Mon Sep 17 00:00:00 2001 From: Ambrus Toth Date: Thu, 2 Oct 2025 19:46:20 +0200 Subject: [PATCH 3/3] remove explicit output/module directory settings --- CMakeLists.txt | 6 ------ 1 file changed, 6 deletions(-) diff --git a/CMakeLists.txt b/CMakeLists.txt index 12b618f3..ae2691cc 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -10,12 +10,6 @@ option(BUILD_SHARED_LIBS "Build shared libraries by default" YES) list(APPEND CMAKE_MODULE_PATH ${CMAKE_CURRENT_SOURCE_DIR}/cmake/modules) -set(CMAKE_ARCHIVE_OUTPUT_DIRECTORY ${CMAKE_BINARY_DIR}/lib) -set(CMAKE_LIBRARY_OUTPUT_DIRECTORY ${CMAKE_BINARY_DIR}/lib) -set(CMAKE_RUNTIME_OUTPUT_DIRECTORY ${CMAKE_BINARY_DIR}/bin) - -set(CMAKE_Swift_MODULE_DIRECTORY ${CMAKE_BINARY_DIR}/swift) - include(CTest) include(GNUInstallDirs)