diff --git a/lib/asn1/src/asn1ct_check.erl b/lib/asn1/src/asn1ct_check.erl index 8b7144b5f993..f1e8a1912895 100644 --- a/lib/asn1/src/asn1ct_check.erl +++ b/lib/asn1/src/asn1ct_check.erl @@ -3559,6 +3559,20 @@ range_union_1([]) -> finish_constraints(Cs) -> finish_constraints_1(Cs, fun smart_collapse/1). +finish_constraints_1([{element_set,{'SizeConstraint', + {element_set,Root,none}}, + {set,[]}=Set}|T], + Collapse) -> + %% Rewrite: + %% + %% (SIZE (Lower..Upper), ...) + %% + %% to: + %% + %% (SIZE (Lower..Upper, ...)) + + C = {element_set,{'SizeConstraint',{element_set,Root,Set}},none}, + finish_constraints_1([C|T], Collapse); finish_constraints_1([{element_set,{Tag,{element_set,_,_}=Set0},none}|T], Collapse0) -> Collapse = collapse_fun(Tag), diff --git a/lib/asn1/test/asn1_SUITE_data/ConstraintEquivalence.asn1 b/lib/asn1/test/asn1_SUITE_data/ConstraintEquivalence.asn1 index 648275dd6657..291734e231db 100644 --- a/lib/asn1/test/asn1_SUITE_data/ConstraintEquivalence.asn1 +++ b/lib/asn1/test/asn1_SUITE_data/ConstraintEquivalence.asn1 @@ -106,6 +106,8 @@ BEGIN ExtConstrainedStringX04 ::= IA5String (SIZE (1|2), ..., SIZE (1|2|3|4|5)) ExtConstrainedStringX05 ::= IA5String (SIZE (1|2, ...), ..., SIZE (1|2|3|4|5, ...)) + -- The following syntax is not recommended, but should work. + ExtConstrainedStringX06 ::= IA5String (SIZE (1..2), ...) integer4 INTEGER ::= 4 integer11 INTEGER ::= 11