File 2405-Break-apart-function-with-6-arguments.patch of Package erlang

From 3ca2800ee4ff086eec7fe51b5316cda4779414af Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?Bj=C3=B6rn=20Gustavsson?= <bjorn@erlang.org>
Date: Fri, 13 Jan 2017 15:14:28 +0100
Subject: [PATCH 05/14] Break apart function with 6 arguments

As a preparation for future changes, simplify
gen_dec_constructed_imm_2/6 by breaking it apart to two
functions.
---
 lib/asn1/src/asn1ct_constructed_per.erl | 53 ++++++++++++++++-----------------
 1 file changed, 26 insertions(+), 27 deletions(-)

diff --git a/lib/asn1/src/asn1ct_constructed_per.erl b/lib/asn1/src/asn1ct_constructed_per.erl
index a34b25182..a3a0d4c3c 100644
--- a/lib/asn1/src/asn1ct_constructed_per.erl
+++ b/lib/asn1/src/asn1ct_constructed_per.erl
@@ -306,34 +306,33 @@ gen_dec_constructed_imm(Erule, Typename, #type{}=D) ->
     {DecObjInf,_,_} = ObjSetInfo,
     EmitComp = gen_dec_components_call(Erule, Typename, CompList,
 				       DecObjInf, Ext, length(Optionals)),
-    EmitRest = fun({AccTerm,AccBytes}) ->
-		       gen_dec_constructed_imm_2(Erule, Typename,
-						 CompList,
-						 ObjSetInfo,
-						 AccTerm, AccBytes)
-	       end,
-    [EmitExt,EmitOpt|EmitComp++[{safe,EmitRest}]].
+    EmitObjSets = gen_dec_objsets_fun(Erule, ObjSetInfo),
+    EmitPack = fun(_) ->
+                       gen_dec_pack(Typename, CompList)
+               end,
+    RestGroup = {group,[{safe,EmitObjSets},{safe,EmitPack}]},
+    [EmitExt,EmitOpt|EmitComp++[RestGroup]].
+
+gen_dec_objsets_fun(Erule, ObjSetInfo) ->
+    fun({AccTerm,AccBytes}) ->
+            {_,_UniqueFName,ValueIndex} = ObjSetInfo,
+            case {AccTerm,AccBytes} of
+                {[],[]} ->
+                    ok;
+                {_,[]} ->
+                    ok;
+                {[{ObjSet,LeadingAttr,Term}],ListOfOpenTypes} ->
+                    ValueMatch = value_match(ValueIndex, Term),
+                    _ = [begin
+                             gen_dec_open_type(Erule, ValueMatch, ObjSet,
+                                               LeadingAttr, T),
+                             emit([com,nl])
+                         end || T <- ListOfOpenTypes],
+                    ok
+            end
+    end.
 
-gen_dec_constructed_imm_2(Erule, Typename, CompList,
-			  ObjSetInfo, AccTerm, AccBytes) ->
-    {_,_UniqueFName,ValueIndex} = ObjSetInfo,
-    case {AccTerm,AccBytes} of
-	{[],[]} ->
-	    ok;
-	{_,[]} ->
-	    ok;
-	{[{ObjSet,LeadingAttr,Term}],ListOfOpenTypes} ->
-	    ValueMatch = value_match(ValueIndex, Term),
-	    _ = [begin
-		     gen_dec_open_type(Erule, ValueMatch, ObjSet,
-				       LeadingAttr, T),
-		     emit([com,nl])
-		 end || T <- ListOfOpenTypes],
-	    ok
-    end,
-    %% we don't return named lists any more   Cnames = mkcnamelist(CompList), 
-    demit({"Result = "}), %dbg
-    %% return value as record
+gen_dec_pack(Typename, CompList) ->
     RecordName = record_name(Typename),
     case Typename of
 	['EXTERNAL'] ->
-- 
2.11.1

openSUSE Build Service is sponsored by