on master help sign in
Fix some offset problems when parsing GLSL
38fdd8aEvan Czaplicki
compiler/src/Parse/Shader.hs+4−4
@@ -58,14 +58,14 @@ parseBlock =
58 then
58 then
59 let
59 let
60 (# status, newPos, newRow, newCol #) =
60 (# status, newPos, newRow, newCol #) =
61− eatShader pos6 end row col
61+ eatShader pos6 end row (col + 6)
62 in
62 in
63 case status of
63 case status of
64 Good ->
64 Good ->
65 let
65 let
66− !block = Utf8.fromPtr pos newPos
66+ !block = Utf8.fromPtr pos6 newPos
67 !source = Utf8.toChars block
67 !source = Utf8.toChars block
68− !newState = P.State (plusPtr newPos 2) end indent newRow newCol
68+ !newState = P.State (plusPtr newPos 2) end indent newRow (newCol + 2)
69 in
69 in
70 cok source newState
70 cok source newState
71
71
@@ -89,7 +89,7 @@ eatShader pos end row col =
89 else
89 else
90 let !word = P.unsafeIndex pos in
90 let !word = P.unsafeIndex pos in
91 if word == 0x007C {- | -} && P.isWord (plusPtr pos 1) end 0x5D {- ] -} then
91 if word == 0x007C {- | -} && P.isWord (plusPtr pos 1) end 0x5D {- ] -} then
92− (# Good, pos, row, col + 2 #)
92+ (# Good, pos, row, col #)
93
93
94 else if word == 0x0A {- \n -} then
94 else if word == 0x0A {- \n -} then
95 eatShader (plusPtr pos 1) end (row + 1) 1
95 eatShader (plusPtr pos 1) end (row + 1) 1