diff options
author | johnvg | 2002-02-28 14:03:07 +0000 |
---|---|---|
committer | johnvg | 2002-02-28 14:03:07 +0000 |
commit | fa9111ecf7a8d7a2f49242bcbc3535db44b22ffa (patch) | |
tree | 55fa0b1d97ac8bc3a8eb6948a4d4e4a60d7b2009 /backend/backendconvert.icl | |
parent | fix bug in computing the conversion table for macros that appear (diff) |
convert record updates of multiple records into one update node
git-svn-id: https://svn.cs.ru.nl/repos/clean-compiler/trunk@1033 1f8540f1-abd5-4d5b-9d24-4c5ce8603e2d
Diffstat (limited to 'backend/backendconvert.icl')
-rw-r--r-- | backend/backendconvert.icl | 23 |
1 files changed, 11 insertions, 12 deletions
diff --git a/backend/backendconvert.icl b/backend/backendconvert.icl index 6921312..a0fc460 100644 --- a/backend/backendconvert.icl +++ b/backend/backendconvert.icl @@ -1858,19 +1858,18 @@ where addKinds _ [] = [] convertExpr (RecordUpdate _ expr updates) - = foldl (convertUpdate) (convertExpr expr) updates + = beUpdateNode (beArgs (convertExpr expr) (convertUpdates updates)) where - convertUpdate expr {bind_src=NoBind _} - = expr - convertUpdate expr {bind_src, bind_dst=bind_dst=:{glob_module, glob_object={fs_index}}} - = beUpdateNode - (beArgs - expr - (beArgs - (beSelectorNode BESelector (beFieldSymbol fs_index glob_module) - (beArgs (convertExpr bind_src) - beNoArgs)) - beNoArgs)) + convertUpdates [] + = beNoArgs + convertUpdates [{bind_src=NoBind _}:updates] + = convertUpdates updates + convertUpdates [{bind_src, bind_dst=bind_dst=:{glob_module, glob_object={fs_index}}}:updates] + = (beArgs + (beSelectorNode BESelector (beFieldSymbol fs_index glob_module) + (beArgs (convertExpr bind_src) + beNoArgs)) + (convertUpdates updates)) convertExpr (Update expr1 [singleSelection] expr2) = case singleSelection of RecordSelection _ _ |