From 13b6d51d43db821babee4e54533a3037c4232f4e Mon Sep 17 00:00:00 2001 From: krangelov Date: Tue, 21 Dec 2021 11:16:01 +0100 Subject: [PATCH] support records as parameter types --- src/compiler/GF/Compile/GeneratePMCFG.hs | 8 +++----- 1 file changed, 3 insertions(+), 5 deletions(-) diff --git a/src/compiler/GF/Compile/GeneratePMCFG.hs b/src/compiler/GF/Compile/GeneratePMCFG.hs index 9d2c70ddd..1e083d742 100644 --- a/src/compiler/GF/Compile/GeneratePMCFG.hs +++ b/src/compiler/GF/Compile/GeneratePMCFG.hs @@ -105,7 +105,7 @@ type2metaTerm gr d ms r rs (RecType lbls) = (ms,r) lbls in (ms',r',R ass) type2metaTerm gr d ms r rs (Table p q) = - let pv = identS ('p':show (length rs)) + let pv = varX (length rs+1) (ms',r',t) = type2metaTerm gr d ms r ((r'-r,(pv,p)):rs) q count = case allParamValues gr p of Ok ts -> length ts @@ -224,10 +224,8 @@ param2int (VMeta tnk _ _) ty = do tnk_st <- getRef tnk case tnk_st of Evaluated v -> param2int v ty - Narrowing j ty -> case valTypeCnc ty of - QC q -> do (_,ResParam _ (Just (_,cnt))) <- getInfo q - return (0,[(1,j-1)],cnt) - App q (EInt cnt) -> return (0,[(1,j-1)],fromIntegral cnt) + Narrowing j ty -> do ts <- getAllParamValues ty + return (0,[(1,j-1)],length ts) param2int v ty = do t <- value2term [] v evalError ("the parameter:" <+> ppTerm Unqualified 0 t $$ "cannot be evaluated at compile time.")