on master help sign in
Binary encode versions differently to account for 0.19.0
e408569Evan Czaplicki
compiler/src/Elm/Version.hs+7−8
@@ -16,7 +16,7 @@ module Elm.Version
16
16
17
17
18import Prelude hiding (max)
18import Prelude hiding (max)
19−import Control.Monad (liftM, liftM3)
19+import Control.Monad (liftM3)
20import Data.Binary (Binary, get, put, getWord8, putWord8)
20import Data.Binary (Binary, get, put, getWord8, putWord8)
21import qualified Data.Utf8 as Utf8
21import qualified Data.Utf8 as Utf8
22import qualified Data.Version as Version
22import qualified Data.Version as Version
@@ -147,21 +147,20 @@ encode version =
147instance Binary Version where
147instance Binary Version where
148 get =
148 get =
149 do word <- getWord8
149 do word <- getWord8
150− if word == 0
150+ if word == 255
151 then liftM3 Version get get get
151 then liftM3 Version get get get
152 else
152 else
153− do minor <- liftM fromIntegral getWord8
153+ do minor <- getWord8
154− patch <- liftM fromIntegral getWord8
154+ patch <- getWord8
155− return (Version (fromIntegral word) minor patch)
155+ return (Version (fromIntegral word) (fromIntegral minor) (fromIntegral patch))
156
156
157 put (Version major minor patch) =
157 put (Version major minor patch) =
158− if major < 256 && minor < 256 && patch < 256 then
158+ if major < 255 && minor < 256 && patch < 256 then
159 do putWord8 (fromIntegral major)
159 do putWord8 (fromIntegral major)
160 putWord8 (fromIntegral minor)
160 putWord8 (fromIntegral minor)
161 putWord8 (fromIntegral patch)
161 putWord8 (fromIntegral patch)
162 else
162 else
163− do putWord8 0
163+ do putWord8 255
164 put major
164 put major
165 put minor
165 put minor
166 put patch
166 put patch
167−