summaryrefslogtreecommitdiff
path: root/src/GF/Devel/CheckGrammar.hs
diff options
context:
space:
mode:
authoraarne <aarne@cs.chalmers.se>2008-03-09 12:17:42 +0000
committeraarne <aarne@cs.chalmers.se>2008-03-09 12:17:42 +0000
commita34eed5189ab21d08cecc7171815bb51f7ff18b9 (patch)
tree2bbfc4aa23e23cb56663c97b9270702606d3f69c /src/GF/Devel/CheckGrammar.hs
parentaa94e340980f715b8d20e6cbc60d989b5c59e6b5 (diff)
lincat can now be just Str
Diffstat (limited to 'src/GF/Devel/CheckGrammar.hs')
-rw-r--r--src/GF/Devel/CheckGrammar.hs7
1 files changed, 5 insertions, 2 deletions
diff --git a/src/GF/Devel/CheckGrammar.hs b/src/GF/Devel/CheckGrammar.hs
index 4ad308366..f0ec8318c 100644
--- a/src/GF/Devel/CheckGrammar.hs
+++ b/src/GF/Devel/CheckGrammar.hs
@@ -311,13 +311,15 @@ checkIfStrType st typ = case typ of
checkIfLinType :: SourceGrammar -> Type -> Check Type
checkIfLinType st typ0 = do
typ <- computeLType st typ0
+{- ---- should check that not fun type
case typ of
RecType r -> do
let (lins,ihs) = partition (isLinLabel .fst) r
--- checkErr $ checkUnique $ map fst r
mapM_ checkInh ihs
mapM_ checkLin lins
- _ -> prtFail "a linearization type must be a record type instead of" typ
+ _ -> prtFail "a linearization type cannot be" typ
+-}
return typ
where
@@ -1037,7 +1039,8 @@ linTypeOfType cnc m typ = do
val <- lookLin mc
let vars = mkRecType varLabel $ replicate n typeStr
symb = argIdent n cat i
- rec <- checkErr $ errIn ("extending" +++ prt vars +++ "with" +++ prt val) $
+ rec <- if n==0 then return val else
+ checkErr $ errIn ("extending" +++ prt vars +++ "with" +++ prt val) $
plusRecType vars val
return (symb,rec)
lookLin (_,c) = checks [ --- rather: update with defLinType ?