From f5dad6938cd2f560e9e18e5fcae31fc97ff10568 Mon Sep 17 00:00:00 2001 From: Nick Lockwood Date: Mon, 14 Jul 2025 09:00:38 +0100 Subject: [PATCH] Fix `preferFileMacro` case-sensitivity bug --- Sources/OptionDescriptor.swift | 4 ++-- Tests/OptionDescriptorTests.swift | 6 ++++++ 2 files changed, 8 insertions(+), 2 deletions(-) diff --git a/Sources/OptionDescriptor.swift b/Sources/OptionDescriptor.swift index a959c1e8..7349bf4f 100644 --- a/Sources/OptionDescriptor.swift +++ b/Sources/OptionDescriptor.swift @@ -101,9 +101,9 @@ class OptionDescriptor { type = .binary(true: trueValues, false: falseValues) toOptions = { value, options in switch value.lowercased() { - case let value where trueValues.contains(value): + case let value where trueValues.contains(where: { value == $0.lowercased() }): options[keyPath: keyPath] = true - case let value where falseValues.contains(value): + case let value where falseValues.contains(where: { value == $0.lowercased() }): options[keyPath: keyPath] = false default: throw FormatError.options("") diff --git a/Tests/OptionDescriptorTests.swift b/Tests/OptionDescriptorTests.swift index a5a1b7c5..07719a38 100644 --- a/Tests/OptionDescriptorTests.swift +++ b/Tests/OptionDescriptorTests.swift @@ -349,4 +349,10 @@ class OptionDescriptorTests: XCTestCase { let options2 = FormatOptions(selfRequired: ["baz", "bar", "foo"]) XCTAssertEqual(options1.description, options2.description) } + + func testFileMacroCase() { + let argument = "#fileID" + var options: FormatOptions = .default + XCTAssertNoThrow(try Descriptors.preferFileMacro.toOptions(argument, &options)) + } }