aboutsummaryrefslogtreecommitdiffstats
path: root/lib/asn1/src/asn1ct_constructed_per.erl
diff options
context:
space:
mode:
authorBjörn Gustavsson <[email protected]>2013-06-27 14:49:12 +0200
committerBjörn Gustavsson <[email protected]>2013-08-30 10:13:16 +0200
commit9033435e5b8051608c7e867051c1a8e6b946d2a9 (patch)
tree788ee5070999eb5d67b4c370175b71be2bc74d05 /lib/asn1/src/asn1ct_constructed_per.erl
parentbf13576de7f8a3cd56a268e3bf9cdf6535ea2334 (diff)
downloadotp-9033435e5b8051608c7e867051c1a8e6b946d2a9.tar.gz
otp-9033435e5b8051608c7e867051c1a8e6b946d2a9.tar.bz2
otp-9033435e5b8051608c7e867051c1a8e6b946d2a9.zip
Remove broken support for multiple UNIQUE
According to the ASN.1 standard, having multiple UNIQUE in class is allowed. For example: C ::= CLASS { &id1 INTEGER UNIQUE, &id2 INTEGER UNIQUE } In practice, no one uses multiple UNIQUE. The ASN.1 compiler will crash if a class with multiple UNIQUE is used, but the backends have half-hearted support for multiple UNIQUE in that they generate helper functions similar to: getenc_OBJECT_SET(id1, 42) -> fun enc_XXX/3; ... Since we have no plans to implement support for multiple UNIQUE (no one seems to have missed it), simplify the helper functions like this: getenc_OBJECT_SET(42) -> fun enc_XXX/3; ...
Diffstat (limited to 'lib/asn1/src/asn1ct_constructed_per.erl')
-rw-r--r--lib/asn1/src/asn1ct_constructed_per.erl11
1 files changed, 5 insertions, 6 deletions
diff --git a/lib/asn1/src/asn1ct_constructed_per.erl b/lib/asn1/src/asn1ct_constructed_per.erl
index 463de965d7..77e46a2798 100644
--- a/lib/asn1/src/asn1ct_constructed_per.erl
+++ b/lib/asn1/src/asn1ct_constructed_per.erl
@@ -130,8 +130,7 @@ gen_encode_constructed(Erule,Typename,D) when is_record(D,type) ->
ValueMatch = value_match(ValueIndex, El),
emit([ObjectEncode," =",nl,
" ",{asis,Module},":'getenc_",ObjSetName,"'(",
- {asis,UniqueFieldName},", ",nl,
- " ",ValueMatch,"),",nl]),
+ ValueMatch,"),",nl]),
{AttrN,ObjectEncode};
false ->
false
@@ -340,7 +339,7 @@ gen_dec_constructed_imm(Erule, Typename, #type{}=D) ->
gen_dec_constructed_imm_2(Typename, CompList,
ObjSetInfo, AccTerm, AccBytes) ->
- {_,UniqueFName,ValueIndex} = ObjSetInfo,
+ {_,_UniqueFName,ValueIndex} = ObjSetInfo,
case {AccTerm,AccBytes} of
{[],[]} ->
ok;
@@ -352,7 +351,7 @@ gen_dec_constructed_imm_2(Typename, CompList,
{ObjSetMod,ObjSetName} = ObjSet,
emit([DecObj," =",nl,
" ",{asis,ObjSetMod},":'getdec_",ObjSetName,"'(",
- {asis,UniqueFName},", ",ValueMatch,"),",nl]),
+ ValueMatch,"),",nl]),
gen_dec_listofopentypes(DecObj,ListOfOpenTypes,false)
end,
%% we don't return named lists any more Cnames = mkcnamelist(CompList),
@@ -1392,14 +1391,14 @@ gen_dec_line_special(Erule, Atype, TopType, Comp, DecInfObj) ->
gen_dec_line_dec_inf(Comp, DecInfObj) ->
#'ComponentType'{name=Cname} = Comp,
case DecInfObj of
- {Cname,{_,OSet,UniqueFName,ValIndex}} ->
+ {Cname,{_,OSet,_UniqueFName,ValIndex}} ->
Term = asn1ct_gen:mk_var(asn1ct_name:curr(term)),
ValueMatch = value_match(ValIndex,Term),
{ObjSetMod,ObjSetName} = OSet,
emit([",",nl,
"ObjFun = ",{asis,ObjSetMod},
":'getdec_",ObjSetName,"'(",
- {asis,UniqueFName},", ",ValueMatch,")"]);
+ ValueMatch,")"]);
_ ->
ok
end.