summaryrefslogtreecommitdiff
path: root/src/compiler/GF/Compile
diff options
context:
space:
mode:
Diffstat (limited to 'src/compiler/GF/Compile')
-rw-r--r--src/compiler/GF/Compile/TypeCheck/Concrete.hs4
-rw-r--r--src/compiler/GF/Compile/TypeCheck/RConcrete.hs4
2 files changed, 8 insertions, 0 deletions
diff --git a/src/compiler/GF/Compile/TypeCheck/Concrete.hs b/src/compiler/GF/Compile/TypeCheck/Concrete.hs
index 89aaeb1fb..2afff7c6a 100644
--- a/src/compiler/GF/Compile/TypeCheck/Concrete.hs
+++ b/src/compiler/GF/Compile/TypeCheck/Concrete.hs
@@ -436,6 +436,10 @@ checkLType gr g trm typ0 = do
case typ of
Table arg1 val ->
do arg' <- checkEqLType gr g arg0 arg1 trm
+ vs1 <- allParamValues gr arg1
+ if length vs1 == length vs
+ then return ()
+ else checkError $ text "wrong number of values in table" <+> ppTerm Unqualified 0 trm
vs' <- map fst `fmap` sequence [checkLType gr g v val|v<-vs]
return (V arg' vs',typ)
diff --git a/src/compiler/GF/Compile/TypeCheck/RConcrete.hs b/src/compiler/GF/Compile/TypeCheck/RConcrete.hs
index ca8d789c1..67ff26115 100644
--- a/src/compiler/GF/Compile/TypeCheck/RConcrete.hs
+++ b/src/compiler/GF/Compile/TypeCheck/RConcrete.hs
@@ -468,6 +468,10 @@ checkLType gr g trm typ0 = do
case typ of
Table arg1 val ->
do arg' <- checkEqLType gr g arg0 arg1 trm
+ vs1 <- allParamValues gr arg1
+ if length vs1 == length vs
+ then return ()
+ else checkError $ "wrong number of values in table" <+> ppTerm Unqualified 0 trm
vs' <- map fst `fmap` sequence [checkLType gr g v val|v<-vs]
return (V arg' vs',typ)