summaryrefslogtreecommitdiff
path: root/src/compiler/GF/Compile
diff options
context:
space:
mode:
authorhallgren <hallgren@chalmers.se>2015-06-23 12:58:14 +0000
committerhallgren <hallgren@chalmers.se>2015-06-23 12:58:14 +0000
commit22ba8d34ff00bde6aa83dc9bdcdd13de34799c08 (patch)
treeab5299500cccec4d7fe3ea56852327e4c8e059a3 /src/compiler/GF/Compile
parent984c09923ce5de629f111584f741b44c5e5eddd6 (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')
-rw-r--r--src/compiler/GF/Compile/ReadFiles.hs14
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
--------------------------------------------------------------------------------