support records as parameter types

This commit is contained in:
krangelov
2021-12-21 11:16:01 +01:00
parent 5811720d3a
commit 13b6d51d43

View File

@@ -105,7 +105,7 @@ type2metaTerm gr d ms r rs (RecType lbls) =
(ms,r) lbls (ms,r) lbls
in (ms',r',R ass) in (ms',r',R ass)
type2metaTerm gr d ms r rs (Table p q) = 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 (ms',r',t) = type2metaTerm gr d ms r ((r'-r,(pv,p)):rs) q
count = case allParamValues gr p of count = case allParamValues gr p of
Ok ts -> length ts Ok ts -> length ts
@@ -224,10 +224,8 @@ param2int (VMeta tnk _ _) ty = do
tnk_st <- getRef tnk tnk_st <- getRef tnk
case tnk_st of case tnk_st of
Evaluated v -> param2int v ty Evaluated v -> param2int v ty
Narrowing j ty -> case valTypeCnc ty of Narrowing j ty -> do ts <- getAllParamValues ty
QC q -> do (_,ResParam _ (Just (_,cnt))) <- getInfo q return (0,[(1,j-1)],length ts)
return (0,[(1,j-1)],cnt)
App q (EInt cnt) -> return (0,[(1,j-1)],fromIntegral cnt)
param2int v ty = do t <- value2term [] v param2int v ty = do t <- value2term [] v
evalError ("the parameter:" <+> ppTerm Unqualified 0 t $$ evalError ("the parameter:" <+> ppTerm Unqualified 0 t $$
"cannot be evaluated at compile time.") "cannot be evaluated at compile time.")