aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorBjörn Gustavsson <[email protected]>2014-11-28 14:38:38 +0100
committerBjörn Gustavsson <[email protected]>2015-01-12 11:40:28 +0100
commit2a343fda2c75f52bbf35b6d5ca9f3c97037c50b5 (patch)
treecfde8eb2db23200fcdbe1636f54463ddc5f28a07
parent76075cb862d629a9624ab4db98ff876e261fc796 (diff)
downloadotp-2a343fda2c75f52bbf35b6d5ca9f3c97037c50b5.tar.gz
otp-2a343fda2c75f52bbf35b6d5ca9f3c97037c50b5.tar.bz2
otp-2a343fda2c75f52bbf35b6d5ca9f3c97037c50b5.zip
Modernize error handling for instatiation of parameterized types
-rw-r--r--lib/asn1/src/asn1ct_check.erl6
-rw-r--r--lib/asn1/test/error_SUITE.erl15
2 files changed, 15 insertions, 6 deletions
diff --git a/lib/asn1/src/asn1ct_check.erl b/lib/asn1/src/asn1ct_check.erl
index e6e6fa73c1..e926312226 100644
--- a/lib/asn1/src/asn1ct_check.erl
+++ b/lib/asn1/src/asn1ct_check.erl
@@ -3154,8 +3154,8 @@ match_args(S,FA = [FormArg|Ft], AA = [ActArg|At], Acc) ->
end;
match_args(_S,[], [], Acc) ->
lists:reverse(Acc);
-match_args(_,_, _, _) ->
- throw({error,{asn1,{wrong_number_of_arguments}}}).
+match_args(S, _, _, _) ->
+ asn1_error(S, param_wrong_number_of_arguments).
%%%%%%%%%%%%%%%%%
%% categorize_arg(S,FormalArg,ActualArg) -> {FormalArg,CatgorizedActualArg}
@@ -5877,6 +5877,8 @@ format_error(multiple_uniqs) ->
"implementation limitation: only one UNIQUE field is allowed in CLASS";
format_error({namelist_redefinition,Name}) ->
io_lib:format("the name '~s' can not be redefined", [Name]);
+format_error(param_wrong_number_of_arguments) ->
+ "wrong number of arguments";
format_error(reversed_range) ->
"ranges must be given in increasing order";
format_error({syntax_duplicated_fields,Fields}) ->
diff --git a/lib/asn1/test/error_SUITE.erl b/lib/asn1/test/error_SUITE.erl
index eec0d1e195..e8f48b6187 100644
--- a/lib/asn1/test/error_SUITE.erl
+++ b/lib/asn1/test/error_SUITE.erl
@@ -459,12 +459,19 @@ parameterization(Config) ->
P = {M,
<<"Parameterization DEFINITIONS AUTOMATIC TAGS ::= BEGIN\n"
" NotUppercase{lowercase} ::= INTEGER (lowercase)\n"
+
+ " P{T1,T2} ::= SEQUENCE { a T1, b T2 }\n"
+ " S ::= P{OCTET STRING}\n"
+
"END\n">>},
{error,
- [{structured_error,{'Parameterization',2},asn1ct_check,
- {illegal_typereference,lowercase}}
- ]
- } = run(P, Config),
+ [{structured_error,{M,2},asn1ct_check,
+ {illegal_typereference,lowercase}},
+ {structured_error,
+ {M,4},
+ asn1ct_check,param_wrong_number_of_arguments}
+ ]
+ } = run(P, Config),
ok.
syntax(Config) ->