From fa9111ecf7a8d7a2f49242bcbc3535db44b22ffa Mon Sep 17 00:00:00 2001 From: johnvg Date: Thu, 28 Feb 2002 14:03:07 +0000 Subject: 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 --- backend/backendconvert.icl | 23 +++++++++++------------ 1 file changed, 11 insertions(+), 12 deletions(-) (limited to 'backend') 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 _ _ -- cgit v1.2.3