@@ -169,6 +169,7 @@ extension ${Self}: LosslessStringConvertible {
169169 self.init(Substring(text))
170170 } else {
171171 self = 0.0
172+ #if hasFeature(TypedThrows)
172173 let success = _withUnprotectedUnsafeMutablePointer(to: &self) { p -> Bool in
173174 text.withCString { chars -> Bool in
174175 switch chars[0] {
@@ -184,6 +185,23 @@ extension ${Self}: LosslessStringConvertible {
184185 return endPtr != nil && endPtr![0] == 0
185186 }
186187 }
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
187205 if !success {
188206 return nil
189207 }
@@ -198,6 +216,7 @@ extension ${Self}: LosslessStringConvertible {
198216 @available(SwiftStdlib 5.3, *)
199217 public init?(_ text: Substring) {
200218 self = 0.0
219+ #if hasFeature(TypedThrows)
201220 let success = _withUnprotectedUnsafeMutablePointer(to: &self) { p -> Bool in
202221 text.withCString { chars -> Bool in
203222 switch chars[0] {
@@ -213,6 +232,23 @@ extension ${Self}: LosslessStringConvertible {
213232 return endPtr != nil && endPtr![0] == 0
214233 }
215234 }
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
216252 if !success {
217253 return nil
218254 }
0 commit comments