in Sources/ArgumentParser/Parsing/SplitArguments.swift [492:526]
func coalescedExtraElements() -> [(InputOrigin, String)] {
let completeIndexes: [InputIndex] = elements
.compactMap {
guard case .complete = $0.index.subIndex else { return nil }
return $0.index.inputIndex
}
// Now return all elements that are either:
// 1) `.complete`
// 2) `.sub` but not in `completeIndexes`
let extraElements = elements.filter {
switch $0.index.subIndex {
case .complete:
return true
case .sub:
return !completeIndexes.contains($0.index.inputIndex)
}
}
return extraElements.map { element -> (InputOrigin, String) in
let input: String
switch element.index.subIndex {
case .complete:
input = originalInput[element.index.inputIndex.rawValue]
case .sub:
if case .option(let option) = element.value {
input = String(describing: option)
} else {
// Odd case. Fall back to entire input at that index:
input = originalInput[element.index.inputIndex.rawValue]
}
}
return (.init(argumentIndex: element.index), input)
}
}