Skip to content

Commit 75df1f9

Browse files
authored
Merge branch 'main' into t/main/pin_gha_workflows_to_a_specific_version
2 parents 7c999a3 + edbe114 commit 75df1f9

File tree

2 files changed

+24
-0
lines changed

2 files changed

+24
-0
lines changed

Sources/ArgumentParser/Parsable Types/ExpressibleByArgument.swift

Lines changed: 11 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -122,6 +122,17 @@ extension LosslessStringConvertible where Self: ExpressibleByArgument {
122122
}
123123
}
124124

125+
extension LosslessStringConvertible
126+
where
127+
Self: ExpressibleByArgument & RawRepresentable,
128+
RawValue: ExpressibleByArgument
129+
{
130+
// Ambiguity breaker
131+
public init?(argument: String) {
132+
self.init(argument)
133+
}
134+
}
135+
125136
extension Int: ExpressibleByArgument {}
126137
extension Int8: ExpressibleByArgument {}
127138
extension Int16: ExpressibleByArgument {}

Tests/ArgumentParserEndToEndTests/RawRepresentableEndToEndTests.swift

Lines changed: 13 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -48,3 +48,16 @@ extension RawRepresentableEndToEndTests {
4848
XCTAssertThrowsError(try Bar.parse(["--identifier", "123.456"]))
4949
}
5050
}
51+
52+
struct LogLevel: RawRepresentable, CustomStringConvertible {
53+
var rawValue: String
54+
var description: String { rawValue }
55+
}
56+
57+
extension LogLevel: LosslessStringConvertible {
58+
init(_ description: String) {
59+
self.rawValue = description
60+
}
61+
}
62+
63+
extension LogLevel: ExpressibleByArgument {}

0 commit comments

Comments
 (0)