-
Notifications
You must be signed in to change notification settings - Fork 81
Open
Description
I think the deprecation messages for FromUnicodeScalarView
might reference an unimplemented conversion?
swift-parsing/Sources/Parsing/Internal/Deprecations.swift
Lines 808 to 850 in f949081
@available(*, deprecated, message: "Use 'From(.unicodeScalars)' instead.") | |
public struct FromUnicodeScalarView<Input, UnicodeScalarsParser: Parser>: Parser | |
where UnicodeScalarsParser.Input == Substring.UnicodeScalarView { | |
public let unicodeScalarsParser: UnicodeScalarsParser | |
public let toUnicodeScalars: (Input) -> Substring.UnicodeScalarView | |
public let fromUnicodeScalars: (Substring.UnicodeScalarView) -> Input | |
@inlinable | |
public func parse(_ input: inout Input) rethrows -> UnicodeScalarsParser.Output { | |
var unicodeScalars = self.toUnicodeScalars(input) | |
defer { input = self.fromUnicodeScalars(unicodeScalars) } | |
return try self.unicodeScalarsParser.parse(&unicodeScalars) | |
} | |
} | |
@available(*, deprecated, message: "Use 'From(.unicodeScalars)' instead.") | |
extension FromUnicodeScalarView where Input == ArraySlice<UInt8> { | |
@inlinable | |
public init(@ParserBuilder<Substring.UnicodeScalarView> _ build: () -> UnicodeScalarsParser) { | |
self.unicodeScalarsParser = build() | |
self.toUnicodeScalars = { Substring(decoding: $0, as: UTF8.self).unicodeScalars } | |
self.fromUnicodeScalars = { ArraySlice(Substring($0).utf8) } | |
} | |
} | |
@available(*, deprecated, message: "Use 'From(.unicodeScalars)' instead.") | |
extension FromUnicodeScalarView where Input == Substring { | |
@inlinable | |
public init(@ParserBuilder<Substring.UnicodeScalarView> _ build: () -> UnicodeScalarsParser) { | |
self.unicodeScalarsParser = build() | |
self.toUnicodeScalars = \.unicodeScalars | |
self.fromUnicodeScalars = Substring.init | |
} | |
} | |
@available(*, deprecated, message: "Use 'From(.unicodeScalars)' instead.") | |
extension FromUnicodeScalarView where Input == Substring.UTF8View { | |
@inlinable | |
public init(@ParserBuilder<Substring.UnicodeScalarView> _ build: () -> UnicodeScalarsParser) { | |
self.unicodeScalarsParser = build() | |
self.toUnicodeScalars = { Substring($0).unicodeScalars } | |
self.fromUnicodeScalars = { Substring($0).utf8 } | |
} |
This compiles with the deprecation warning:
let foo: some Parser<Substring.UTF8View, Void> = FromUnicodeScalarView { // ⚠️ 'FromUnicodeScalarView' is deprecated: Use 'From(.unicodeScalars)' instead.
Peek {
Prefix(1, while: CharacterSet.alphanumerics.contains)
}
}
But the suggested replacement does not:
let bar: some Parser<Substring.UTF8View, Void> = From(.unicodeScalars) { // 🛑 Type 'Conversion' has no member 'unicodeScalars'
Peek {
Prefix(1, while: CharacterSet.alphanumerics.contains)
}
}
Would be happy to be told I'm holding it wrong! Feel free to close/convert to discussion if so. Thanks for the incredible library.
Metadata
Metadata
Assignees
Labels
No labels