mirror of
https://github.com/GrammaticalFramework/gf-core.git
synced 2026-04-25 20:42:50 -06:00
support records as parameter types
This commit is contained in:
@@ -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.")
|
||||||
|
|||||||
Reference in New Issue
Block a user