.
authorMart Lubbers <mart@martlubbers.net>
Sun, 6 Sep 2020 17:29:44 +0000 (19:29 +0200)
committerMart Lubbers <mart@martlubbers.net>
Sun, 6 Sep 2020 17:29:44 +0000 (19:29 +0200)
gengen/Data/GenType.dcl
gengen/Data/GenType.icl
gengen/Data/GenType/CParser.icl

index c77320e..dfcfe96 100644 (file)
@@ -73,8 +73,8 @@ typeGenType :: Type -> [GenType]
 /**
  * Return the kind of the type
  */
-:: Kind = KStar | KArrow Kind Kind
-genTypeKind :: Type -> Kind
+:: Kind = KStar | (KArrow) infixr 1 Kind Kind
+genTypeKind :: GenType -> Kind
 
 /**
  * Predicate whether the outer type is a builtin type
index 37f6df5..f218c93 100644 (file)
@@ -277,8 +277,8 @@ typeGenType (TyObject _ fs) = [c.gcd_type\\(c, _)<-fs]
 genTypeKind :: GenType -> Kind
 genTypeKind (GenTypeCons _) = KStar
 genTypeKind (GenTypeVar _) = KStar
-genTypeKind (GenTypeArrow l r) = undef
-genTypeKind (GenTypeApp l r) = undef
+genTypeKind (GenTypeArrow l r) = genTypeKind l KArrow genTypeKind r
+genTypeKind (GenTypeApp l r) = genTypeKind l KArrow genTypeKind r
 
 instance isBuiltin String
 where
index 7f1556d..1776e28 100644 (file)
@@ -113,7 +113,9 @@ where
        parsedefs = foldr (\t c->parsedef t [";\n":c]) [] o flatten
 
        parsedef :: Type [String] -> [String]
-       parsedef t c = ctypename t [" *", parsefun t, "(uint8_t (*get)()",pd t, ")":c]
+       parsedef t c
+               # (pt, _) = trace_stdout (parsefun t, map genTypeKind $ typeGenType t)
+               = ctypename t [" *", /*parsefun */pt, "(uint8_t (*get)()",pd t, ")":c]
        where
                pd (TyBasic s) = ""
                pd (TyUList _ _) = ", void *parse_0(uint8_t (*get)())"