diff options
Diffstat (limited to 'backendC/CleanCompilerSources/backend.c')
-rw-r--r-- | backendC/CleanCompilerSources/backend.c | 26 |
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); |