summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorkrasimir <krasimir@chalmers.se>2009-11-13 10:25:31 +0000
committerkrasimir <krasimir@chalmers.se>2009-11-13 10:25:31 +0000
commit36d025877bc94cfbe400935f306b11315527a0e8 (patch)
tree60bff8652b5f9ff351df6033e772f46c7e2c9691
parent94171908c07a7f85ff991f14867c6bc5e7f93258 (diff)
for 'lincat C = T' the typechecker should check that T is a valid type
-rw-r--r--src/GF/Compile/CheckGrammar.hs11
1 files changed, 6 insertions, 5 deletions
diff --git a/src/GF/Compile/CheckGrammar.hs b/src/GF/Compile/CheckGrammar.hs
index ed9c67927..f4765eb26 100644
--- a/src/GF/Compile/CheckGrammar.hs
+++ b/src/GF/Compile/CheckGrammar.hs
@@ -175,14 +175,15 @@ checkInfo ms (m,mo) c info = do
return (CncFun linty (Just trm') mpr)
CncCat (Just typ) mdef mpr -> chIn "linearization type of" $ do
- typ' <- computeLType gr [] typ
- mdef' <- case mdef of
+ (typ,_) <- checkLType gr [] typ typeType
+ typ <- computeLType gr [] typ
+ mdef <- case mdef of
Just def -> do
- (def',_) <- checkLType gr [] def (mkFunType [typeStr] typ)
- return $ Just def'
+ (def,_) <- checkLType gr [] def (mkFunType [typeStr] typ)
+ return $ Just def
_ -> return mdef
mpr <- checkPrintname gr mpr
- return (CncCat (Just typ') mdef' mpr)
+ return (CncCat (Just typ) mdef mpr)
ResOper pty pde -> chIn "operation" $ do
(pty', pde') <- case (pty,pde) of