diff options
| author | hallgren <hallgren@chalmers.se> | 2015-06-23 12:58:14 +0000 |
|---|---|---|
| committer | hallgren <hallgren@chalmers.se> | 2015-06-23 12:58:14 +0000 |
| commit | 22ba8d34ff00bde6aa83dc9bdcdd13de34799c08 (patch) | |
| tree | ab5299500cccec4d7fe3ea56852327e4c8e059a3 /src/compiler/GF/Compile/ReadFiles.hs | |
| parent | 984c09923ce5de629f111584f741b44c5e5eddd6 (diff) | |
Bump version of .gfo and .pgf files, improve error messages on version mismatch
Becacuse of the new special tokens added to the Symbol type, .gfo and .pgf
files produced with the current version of GF can not always be used with
older versions of GF and the PGF run-time system.
The PGF version number was increased from (2,0) to (2,1). GF can still
read version (2,0) and (1,0), so old PGF files continue to work.
The GFO version was increased from "GF03" to "GF04".
Diffstat (limited to 'src/compiler/GF/Compile/ReadFiles.hs')
| -rw-r--r-- | src/compiler/GF/Compile/ReadFiles.hs | 14 |
1 files changed, 7 insertions, 7 deletions
diff --git a/src/compiler/GF/Compile/ReadFiles.hs b/src/compiler/GF/Compile/ReadFiles.hs index 3182e192c..9396b3a2f 100644 --- a/src/compiler/GF/Compile/ReadFiles.hs +++ b/src/compiler/GF/Compile/ReadFiles.hs @@ -20,7 +20,7 @@ module GF.Compile.ReadFiles ( getAllFiles,ModName,ModEnv,importsOfModule, - findFile,gfImports,gfoImports, + findFile,gfImports,gfoImports,VersionTagged(..), parseSource,getOptionsFromFile,getPragmas) where import Prelude hiding (catch) @@ -32,7 +32,7 @@ import GF.Data.Operations import GF.Grammar.Lexer import GF.Grammar.Parser import GF.Grammar.Grammar -import GF.Grammar.Binary(decodeModuleHeader) +import GF.Grammar.Binary(VersionTagged(..),decodeModuleHeader) import System.IO(mkTextEncoding) import GF.Text.Coding(decodeUnicodeIO) @@ -107,10 +107,10 @@ getAllFiles opts ps env file = do case st of CSEnv -> return (st, (name, maybe [] snd mb_envmod)) CSRead -> do let gfo = if isGFO file then file else gf2gfo opts file - mb_imps <- gfoImports gfo - case mb_imps of - Just imps -> return (st,imps) - Nothing + t_imps <- gfoImports gfo + case t_imps of + Tagged imps -> return (st,imps) + WrongVersion | isGFO file -> raise (file ++ " is compiled with different GF version and I can't find the source file") | otherwise -> do imps <- gfImports opts file return (CSComp,imps) @@ -143,7 +143,7 @@ findFile gfoDir ps name = gfImports opts file = importsOfModule `fmap` parseModHeader opts file -gfoImports gfo = fmap importsOfModule `fmap` liftIO (decodeModuleHeader gfo) +gfoImports gfo = fmap importsOfModule `fmap` decodeModuleHeader gfo -------------------------------------------------------------------------------- |
