aboutsummaryrefslogtreecommitdiff
path: root/backendC/CleanCompilerSources/backend.c
diff options
context:
space:
mode:
Diffstat (limited to 'backendC/CleanCompilerSources/backend.c')
-rw-r--r--backendC/CleanCompilerSources/backend.c26
1 files changed, 24 insertions, 2 deletions
diff --git a/backendC/CleanCompilerSources/backend.c b/backendC/CleanCompilerSources/backend.c
index 8a77f8f..bb09c6f 100644
--- a/backendC/CleanCompilerSources/backend.c
+++ b/backendC/CleanCompilerSources/backend.c
@@ -1334,6 +1334,7 @@ BEVarTypeNode (CleanString name)
node->type_node_arity = 0;
node->type_node_annotation = NoAnnot;
node->type_node_attribute = NoUniAttr;
+ node->type_for_all_vars = NULL;
return (node);
} /* BEVarTypeNode */
@@ -1351,6 +1352,7 @@ BENormalTypeNode (BESymbolP symbol, BETypeArgP args)
node->type_node_attribute = NoUniAttr;
node->type_node_symbol = symbol;
node->type_node_arguments = args;
+ node->type_for_all_vars = NULL;
return (node);
} /* BENormalTypeNode */
@@ -1431,6 +1433,15 @@ BEAnnotateTypeNode (BEAnnotation annotation, BETypeNodeP typeNode)
return (typeNode);
} /* BEAnnotateTypeNode */
+BETypeNodeP
+BEAddForAllTypeVariables (BETypeVarListP vars, BETypeNodeP type)
+{
+ Assert (type->type_for_all_vars == NULL);
+ type->type_for_all_vars = vars;
+
+ return (type);
+} /* BEAddForAllTypeVariables */
+
BETypeArgP
BENoTypeArgs (void)
{
@@ -2647,12 +2658,23 @@ BETypeVar (CleanString name)
} /* BETypeVar */
BETypeVarListP
-BETypeVars (BETypeVarP typeVar, BETypeVarListP typeVarList)
+BETypeVarListElem (BETypeVarP typeVar, BEAttribution attribute)
{
TypeVarList typeVarListElement;
typeVarListElement = ConvertAllocType (struct type_var_list);
- typeVarListElement->tvl_elem = typeVar;
+ typeVarListElement->tvl_elem = typeVar;
+ typeVarListElement->tvl_attribute = attribute;
+ typeVarListElement->tvl_next = NULL;
+
+ return (typeVarListElement);
+} /* BETypeVarListElem */
+
+BETypeVarListP
+BETypeVars (BETypeVarListP typeVarListElement, BETypeVarListP typeVarList)
+{
+ Assert (typeVarListElement->tvl_next == NULL);
+
typeVarListElement->tvl_next = typeVarList;
return (typeVarListElement);