@@ -169,6 +169,7 @@ extension ${Self}: LosslessStringConvertible {
169
169
self.init(Substring(text))
170
170
} else {
171
171
self = 0.0
172
+ #if hasFeature(TypedThrows)
172
173
let success = _withUnprotectedUnsafeMutablePointer(to: &self) { p -> Bool in
173
174
text.withCString { chars -> Bool in
174
175
switch chars[0] {
@@ -184,6 +185,23 @@ extension ${Self}: LosslessStringConvertible {
184
185
return endPtr != nil && endPtr![0] == 0
185
186
}
186
187
}
188
+ #else
189
+ let success = __abi_se0413_withUnsafeMutablePointer(to: &self) { p -> Bool in
190
+ text.withCString { chars -> Bool in
191
+ switch chars[0] {
192
+ case 9, 10, 11, 12, 13, 32:
193
+ return false // Reject leading whitespace
194
+ case 0:
195
+ return false // Reject empty string
196
+ default:
197
+ break
198
+ }
199
+ let endPtr = _swift_stdlib_strto${cFuncSuffix2[bits]}_clocale(chars, p)
200
+ // Succeed only if endPtr points to end of C string
201
+ return endPtr != nil && endPtr![0] == 0
202
+ }
203
+ }
204
+ #endif
187
205
if !success {
188
206
return nil
189
207
}
@@ -198,6 +216,7 @@ extension ${Self}: LosslessStringConvertible {
198
216
@available(SwiftStdlib 5.3, *)
199
217
public init?(_ text: Substring) {
200
218
self = 0.0
219
+ #if hasFeature(TypedThrows)
201
220
let success = _withUnprotectedUnsafeMutablePointer(to: &self) { p -> Bool in
202
221
text.withCString { chars -> Bool in
203
222
switch chars[0] {
@@ -213,6 +232,23 @@ extension ${Self}: LosslessStringConvertible {
213
232
return endPtr != nil && endPtr![0] == 0
214
233
}
215
234
}
235
+ #else
236
+ let success = __abi_se0413_withUnsafeMutablePointer(to: &self) { p -> Bool in
237
+ text.withCString { chars -> Bool in
238
+ switch chars[0] {
239
+ case 9, 10, 11, 12, 13, 32:
240
+ return false // Reject leading whitespace
241
+ case 0:
242
+ return false // Reject empty string
243
+ default:
244
+ break
245
+ }
246
+ let endPtr = _swift_stdlib_strto${cFuncSuffix2[bits]}_clocale(chars, p)
247
+ // Succeed only if endPtr points to end of C string
248
+ return endPtr != nil && endPtr![0] == 0
249
+ }
250
+ }
251
+ #endif
216
252
if !success {
217
253
return nil
218
254
}
0 commit comments