diff options
author | johnvg | 2002-02-15 14:10:19 +0000 |
---|---|---|
committer | johnvg | 2002-02-15 14:10:19 +0000 |
commit | c7cb3ca0bbff6f990daf92dc4334eb849259ca17 (patch) | |
tree | aa63608bc860a6ee6d2eb29eaae868020f0ae00c | |
parent | work around for incorrect merging of cases (see source comment) (diff) |
allow record update nodes with more than 2 arguments
git-svn-id: https://svn.cs.ru.nl/repos/clean-compiler/trunk@1024 1f8540f1-abd5-4d5b-9d24-4c5ce8603e2d
-rw-r--r-- | backendC/CleanCompilerSources/backend.c | 27 |
1 files changed, 18 insertions, 9 deletions
diff --git a/backendC/CleanCompilerSources/backend.c b/backendC/CleanCompilerSources/backend.c index 1c979d1..6e30dcd 100644 --- a/backendC/CleanCompilerSources/backend.c +++ b/backendC/CleanCompilerSources/backend.c @@ -2027,8 +2027,11 @@ BEUpdateNode (BEArgP args) { NodeP node; SymbolP recordSymbol; + int n_args; + + n_args = CountArgs (args); - Assert (CountArgs (args) == 2); + Assert (n_args >= 2); Assert (args->arg_next->arg_node->node_kind == SelectorNode); Assert (args->arg_next->arg_node->node_arity == BESelector); @@ -2039,7 +2042,7 @@ BEUpdateNode (BEArgP args) node->node_annotation = NoAnnot; node->node_kind = UpdateNode; node->node_symbol = recordSymbol; - node->node_arity = 2; + node->node_arity = n_args; node->node_arguments = args; node->node_number=0; @@ -3190,6 +3193,10 @@ RemoveSpecialArrayFunctionsFromSymbolList (SymbolP *symbolH) } } /* RemoveSpecialArrayFunctionsFromSymbolList */ +#if 0 +File rules_file; +#endif +û int BEGenerateCode (CleanString outputFile) { @@ -3214,25 +3221,27 @@ BEGenerateCode (CleanString outputFile) #if 0 { - File f; - - f=fopen ("Rules","w"); - if (f){ + rules_file=fopen ("Rules","w"); + if (rules_file){ ImpRuleS *rule; for (rule=gBEState.be_icl.beicl_module->im_rules; rule!=NULL; rule=rule->rule_next){ - PrintImpRule (rule,4,f); + PrintImpRule (rule,4,rules_file); if (rule->rule_next!=NULL) - FPutC ('\n',f); + FPutC ('\n',rules_file); } - fclose (f); } } #endif CodeGeneration (gBEState.be_icl.beicl_module, outputFileName); +#if 0 + if (rules_file) + fclose (rules_file); +#endif + return (!CompilerError); } /* BEGenerateCode */ |