diff options
| author | krasimir <krasimir@chalmers.se> | 2009-11-13 10:25:31 +0000 |
|---|---|---|
| committer | krasimir <krasimir@chalmers.se> | 2009-11-13 10:25:31 +0000 |
| commit | 36d025877bc94cfbe400935f306b11315527a0e8 (patch) | |
| tree | 60bff8652b5f9ff351df6033e772f46c7e2c9691 /src/GF | |
| parent | 94171908c07a7f85ff991f14867c6bc5e7f93258 (diff) | |
for 'lincat C = T' the typechecker should check that T is a valid type
Diffstat (limited to 'src/GF')
| -rw-r--r-- | src/GF/Compile/CheckGrammar.hs | 11 |
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 |
