on master help sign in
Move the region back one character on NumberBadDot errors
commit3e8e4571028a1df693c7d131a3823d60e967ed6c authorEvan Czaplicki <evancz@users.noreply.github.com> dateFri 3 May 2019, 17:05 (7 years ago) parentce0cbd4
1 file changed+8−5
compiler/src/Parse/Number.hs+8−5
compiler/src/Parse/Number.hs+8−5
@@ -121,7 +121,7 @@ chompInt !pos end !n =
121121 chompInt (plusPtr pos 1) end (10 * n + fromIntegral (word - 0x30 {-0-}))
122122
123123 else if word == 0x2E {-.-} then
124− chompFraction (plusPtr pos 1) end n
124+ chompFraction pos end n
125125
126126 else if word == 0x65 {-e-} || word == 0x45 {-E-} then
127127 chompExponent (plusPtr pos 1) end
@@ -139,11 +139,14 @@ chompInt !pos end !n =
139139
140140chompFraction :: Ptr Word8 -> Ptr Word8 -> Int -> Outcome
141141chompFraction pos end n =
142− if pos >= end then
142+ let
143+ !pos1 = plusPtr pos 1
144+ in
145+ if pos1 >= end then
143146 Err pos (E.NumberDot n)
144147
145− else if isDecimalDigit (P.unsafeIndex pos) then
146− chompFractionHelp (plusPtr pos 1) end
148+ else if isDecimalDigit (P.unsafeIndex pos1) then
149+ chompFractionHelp (plusPtr pos1 1) end
147150
148151 else
149152 Err pos (E.NumberDot n)
@@ -222,7 +225,7 @@ chompZero pos end =
222225 chompHexInt (plusPtr pos 1) end
223226
224227 else if word == 0x2E {-.-} then
225− chompFraction (plusPtr pos 1) end 0
228+ chompFraction pos end 0
226229
227230 else if isDecimalDigit word then
228231 Err pos E.NumberNoLeadingZero