@@ -101,7 +101,7 @@ string =
101 !pos1 = plusPtr pos 1
101 !pos1 = plusPtr pos 1
103 if isDoubleQuote pos1 end && isDoubleQuote (plusPtr pos 2) end then
103 if isDoubleQuote pos1 end && isDoubleQuote (plusPtr pos 2) end then
104− multiString (plusPtr pos 3) end row (col + 3) (plusPtr pos 3) mempty
104+ multiString (plusPtr pos 3) end row (col + 3) (plusPtr pos 3) row col mempty
106 singleString pos1 end row (col + 1) pos1 mempty
106 singleString pos1 end row (col + 1) pos1 mempty
@@ -198,10 +198,10 @@ singleString pos end row col initialPos revChunks =
198-- MULTI STRINGS
198-- MULTI STRINGS
201−multiString :: Ptr Word8 -> Ptr Word8 -> Word16 -> Word16 -> Ptr Word8 -> [Utf8.Chunk] -> StringResult
201+multiString :: Ptr Word8 -> Ptr Word8 -> Word16 -> Word16 -> Ptr Word8 -> Word16 -> Word16 -> [Utf8.Chunk] -> StringResult
202−multiString pos end row col initialPos revChunks =
202+multiString pos end row col initialPos sr sc revChunks =
203 if pos >= end then
203 if pos >= end then
204− Err row col E.StringEnd_Multi
204+ Err row col (E.StringEnd_Multi sr sc)
207 let !word = P.unsafeIndex pos in
207 let !word = P.unsafeIndex pos in
@@ -211,38 +211,38 @@ multiString pos end row col initialPos revChunks =
212 else if word == 0x27 {- ' -} then
212 else if word == 0x27 {- ' -} then
213 let !pos1 = plusPtr pos 1 in
213 let !pos1 = plusPtr pos 1 in
214− multiString pos1 end row (col + 1) pos1 $
214+ multiString pos1 end row (col + 1) pos1 sr sc $
215 addEscape singleQuote initialPos pos revChunks
215 addEscape singleQuote initialPos pos revChunks
217 else if word == 0x0A {- \n -} then
217 else if word == 0x0A {- \n -} then
218 let !pos1 = plusPtr pos 1 in
218 let !pos1 = plusPtr pos 1 in
219− multiString pos1 end (row + 1) 1 pos1 $
219+ multiString pos1 end (row + 1) 1 pos1 sr sc $
220 addEscape newline initialPos pos revChunks
220 addEscape newline initialPos pos revChunks
222 else if word == 0x0D {- \r -} then
222 else if word == 0x0D {- \r -} then
223 let !pos1 = plusPtr pos 1 in
223 let !pos1 = plusPtr pos 1 in
224− multiString pos1 end row col pos1 $
224+ multiString pos1 end row col pos1 sr sc $
225 addEscape carriageReturn initialPos pos revChunks
225 addEscape carriageReturn initialPos pos revChunks
227 else if word == 0x5C {- \ -} then
227 else if word == 0x5C {- \ -} then
228 case eatEscape (plusPtr pos 1) end col of
228 case eatEscape (plusPtr pos 1) end col of
229 EscapeNormal ->
229 EscapeNormal ->
230− multiString (plusPtr pos 2) end row (col + 2) initialPos revChunks
230+ multiString (plusPtr pos 2) end row (col + 2) initialPos sr sc revChunks
232 EscapeUnicode delta code ->
232 EscapeUnicode delta code ->
233 let !newPos = plusPtr pos delta in
233 let !newPos = plusPtr pos delta in
234− multiString newPos end row (col + fromIntegral delta) newPos $
234+ multiString newPos end row (col + fromIntegral delta) newPos sr sc $
235 addEscape (Utf8.CodePoint code) initialPos pos revChunks
235 addEscape (Utf8.CodePoint code) initialPos pos revChunks
237 EscapeProblem x ->
237 EscapeProblem x ->
238 Err row col x
238 Err row col x
240 EscapeEndOfFile ->
240 EscapeEndOfFile ->
241− Err row (col + 1) E.StringEnd_Multi
241+ Err row (col + 1) (E.StringEnd_Multi sr sc)
244 let !newPos = plusPtr pos (P.getCharWidth pos end word) in
244 let !newPos = plusPtr pos (P.getCharWidth pos end word) in
245− multiString newPos end row (col + 1) initialPos revChunks
245+ multiString newPos end row (col + 1) initialPos sr sc revChunks
@@ -276,7 +276,7 @@ eatEscape pos end startCol =
276eatUnicode :: Ptr Word8 -> Ptr Word8 -> Word16 -> Escape
276eatUnicode :: Ptr Word8 -> Ptr Word8 -> Word16 -> Escape
277eatUnicode pos end startCol =
277eatUnicode pos end startCol =
278 if pos >= end || P.unsafeIndex pos /= 0x7B {- { -} then
278 if pos >= end || P.unsafeIndex pos /= 0x7B {- { -} then
279− EscapeProblem $ E.BadUnicodeStart startCol (startCol + 1)
279+ EscapeProblem $ E.BadUnicodeFormat startCol (startCol + 1)
282 !digitPos = plusPtr pos 1
282 !digitPos = plusPtr pos 1
@@ -284,16 +284,16 @@ eatUnicode pos end startCol =
284 !numDigits = minusPtr newPos digitPos
284 !numDigits = minusPtr newPos digitPos
286 if newPos >= end || P.unsafeIndex newPos /= 0x7D {- } -} then
286 if newPos >= end || P.unsafeIndex newPos /= 0x7D {- } -} then
287− EscapeProblem $ E.BadUnicodeEnd startCol $
287+ EscapeProblem $ E.BadUnicodeFormat startCol $
288 startCol + fromIntegral (minusPtr newPos pos)
288 startCol + fromIntegral (minusPtr newPos pos)
290 else if code < 0 || 0x10FFFF < code then
290 else if code < 0 || 0x10FFFF < code then
291− EscapeProblem $ E.BadUnicodeRange startCol $
291+ EscapeProblem $ E.BadUnicodeCode startCol $
292 startCol + fromIntegral (minusPtr newPos pos) + 1
292 startCol + fromIntegral (minusPtr newPos pos) + 1
294 else if numDigits < 4 || 6 < numDigits then
294 else if numDigits < 4 || 6 < numDigits then
295 EscapeProblem $
295 EscapeProblem $
296− E.BadUnicodeFormat
296+ E.BadUnicodeLength
298 (startCol + fromIntegral (minusPtr newPos pos) + 1)
298 (startCol + fromIntegral (minusPtr newPos pos) + 1)
299 numDigits
299 numDigits