                     return .string(s)
                 }
                 throw DecodingError.malformedText
-            case "-", "0", "1", "2", "3", "4", "5", "6", "7", "8", "9":
+            case "-", "0"..."9":
                 return try parseNumber(first: c)
             case "a"..."z", "A"..."Z":
                 if let s = parseIdentifier(prefix: String(c), scalarGenerator: &scalarGenerator) {

        var s = String()
        while let c = scalarGenerator.next() {
            switch c {
            case "0", "1", "2", "3", "4", "5", "6", "7":
                s.append(String(c))
            default:
                scalarPushback = c


/// Parse the rest of an [extension_field_name] in the input, assuming the
/// initial "[" character has already been read (and is in the prefix)
/// This is also used in Any for the typeURL, so we include "/", "."
private func parseExtensionIdentifier(prefix: String, scalarGenerator: inout String.UnicodeScalarView.Generator) -> String? {
    var result = prefix
    if let c = scalarGenerator.next() {
