Skip to content

Commit 5b2fefd

Browse files
committed
Work around runtime issue introduced in 0.4.3 (#342)
* Add dummy property as workaround for #338 The addition of _hiddenFromHelp to OptionGroup in 0.4.3 triggered a Swift IRGen issue. Adding this dummy variable works around the issue in at least some cases. * Don't include _hiddenFromHelp props in other property wrappers This resolves another crashing issue described in rdar://80796582, where defining an OptionGroup that isn't used results in a runtime segfault when compiled in release mode.
1 parent 986d191 commit 5b2fefd

File tree

5 files changed

+11
-6
lines changed

5 files changed

+11
-6
lines changed

Sources/ArgumentParser/Parsable Properties/Argument.swift

Lines changed: 1 addition & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -27,8 +27,7 @@ public struct Argument<Value>:
2727
Decodable, ParsedWrapper
2828
{
2929
internal var _parsedValue: Parsed<Value>
30-
internal var _hiddenFromHelp: Bool = false
31-
30+
3231
internal init(_parsedValue: Parsed<Value>) {
3332
self._parsedValue = _parsedValue
3433
}

Sources/ArgumentParser/Parsable Properties/Flag.swift

Lines changed: 1 addition & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -39,8 +39,7 @@
3939
@propertyWrapper
4040
public struct Flag<Value>: Decodable, ParsedWrapper {
4141
internal var _parsedValue: Parsed<Value>
42-
internal var _hiddenFromHelp: Bool = false
43-
42+
4443
internal init(_parsedValue: Parsed<Value>) {
4544
self._parsedValue = _parsedValue
4645
}

Sources/ArgumentParser/Parsable Properties/Option.swift

Lines changed: 1 addition & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -29,8 +29,7 @@
2929
@propertyWrapper
3030
public struct Option<Value>: Decodable, ParsedWrapper {
3131
internal var _parsedValue: Parsed<Value>
32-
internal var _hiddenFromHelp: Bool = false
33-
32+
3433
internal init(_parsedValue: Parsed<Value>) {
3534
self._parsedValue = _parsedValue
3635
}

Sources/ArgumentParser/Parsable Properties/OptionGroup.swift

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -33,6 +33,10 @@ public struct OptionGroup<Value: ParsableArguments>: Decodable, ParsedWrapper {
3333
internal var _parsedValue: Parsed<Value>
3434
internal var _hiddenFromHelp: Bool = false
3535

36+
// FIXME: Adding this property works around the crasher described in
37+
// https://github.com/apple/swift-argument-parser/issues/338
38+
internal var _dummy: Bool = false
39+
3640
internal init(_parsedValue: Parsed<Value>) {
3741
self._parsedValue = _parsedValue
3842
}

Sources/ArgumentParser/Parsable Types/ParsableArguments.swift

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -233,6 +233,10 @@ protocol ArgumentSetProvider {
233233
var _hiddenFromHelp: Bool { get }
234234
}
235235

236+
extension ArgumentSetProvider {
237+
var _hiddenFromHelp: Bool { false }
238+
}
239+
236240
extension ArgumentSet {
237241
init(_ type: ParsableArguments.Type, creatingHelp: Bool = false) {
238242

0 commit comments

Comments
 (0)