             case Literal.zero:
                 return decodeNumberLeadingZero(loc, sign: .Positive)
 
-            case Literal.one
-            ,    Literal.two
-            ,    Literal.three
-            ,    Literal.four
-            ,    Literal.five
-            ,    Literal.six
-            ,    Literal.seven
-            ,    Literal.eight
-            ,    Literal.nine:
+            case Literal.one...Literal.nine:
                 return decodeNumberPreDecimalDigits(loc, sign: .Positive)
 
             case Literal.n:

            return makeParseError("unexpected end of data while parsing number at position \(start)")
        }
        switch input[loc] {
        case Literal.zero
        ,    Literal.one
        ,    Literal.two
        ,    Literal.three
        ,    Literal.four
        ,    Literal.five
        ,    Literal.six
        ,    Literal.seven
        ,    Literal.eight
        ,    Literal.nine:
            return decodeNumberExponentDigits(start, sign: sign, value: value, expSign: expSign)

        default:

        case Literal.zero:
            return decodeNumberLeadingZero(start, sign: .Negative)

        case Literal.one...Literal.nine:
            return decodeNumberPreDecimalDigits(start, sign: .Negative)

        default:
