diff options
author | Anders Svensson <anders@erlang.org> | 2014-05-29 15:07:43 +0200 |
---|---|---|
committer | Anders Svensson <anders@erlang.org> | 2014-05-29 15:07:43 +0200 |
commit | a1e335cb17908084bd508827d3c36f8ed26294dc (patch) | |
tree | d1c4714cc97fc951fc67e37505353199873ec826 /lib | |
parent | afb2293740a6c55d41561cc657d13694ca557021 (diff) | |
parent | e22d0c9c9d1bc18a68a8eefca6f87edde66c3d86 (diff) | |
download | otp-a1e335cb17908084bd508827d3c36f8ed26294dc.tar.gz otp-a1e335cb17908084bd508827d3c36f8ed26294dc.tar.bz2 otp-a1e335cb17908084bd508827d3c36f8ed26294dc.zip |
Merge branch 'anders/diameter/dictionaries/OTP-11958' into maint
* anders/diameter/dictionaries/OTP-11958:
Fix broken check for undefined AVPs in @codec and @custom_types
Add @codecs and @custom_types tests to compiler suite
Diffstat (limited to 'lib')
-rw-r--r-- | lib/diameter/src/compiler/diameter_dict_util.erl | 9 | ||||
-rw-r--r-- | lib/diameter/test/diameter_compiler_SUITE.erl | 15 |
2 files changed, 19 insertions, 5 deletions
diff --git a/lib/diameter/src/compiler/diameter_dict_util.erl b/lib/diameter/src/compiler/diameter_dict_util.erl index 136bba16cb..cf4741e563 100644 --- a/lib/diameter/src/compiler/diameter_dict_util.erl +++ b/lib/diameter/src/compiler/diameter_dict_util.erl @@ -731,8 +731,8 @@ no_messages_without_id(Dict) -> %% explode/4 %% -%% {avp_vendor_id, AvpName} -> [Lineno, Id::integer()] -%% {custom_types|codecs|inherits, AvpName} -> [Lineno, Mod::string()] +%% {avp_vendor_id, AvpName} -> [Lineno, Id::integer()] +%% {custom|inherits, AvpName} -> [Lineno, Mod::string()] explode({_, Line, AvpName}, Dict, {_, _, X} = T, K) -> true = K /= avp_vendor_id orelse is_uint32(T, [K]), @@ -1094,7 +1094,7 @@ explode_avps([{_, Line, Name} | Toks], Dict) -> Vid = avp_vendor_id(Flags, Name, Line, Dict), %% An AVP is uniquely defined by its AVP code and vendor id (if any). - %% Ensure there are no duplicate. + %% Ensure there are no duplicates. store_new({avp_types, {Code, Vid}}, [Line, Name], Dict, @@ -1302,8 +1302,7 @@ x({K, {Name, AvpName}}, [Line | _], Dict) %% Ditto. x({K, AvpName}, [Line | _], Dict) when K == avp_vendor_id; - K == custom_types; - K == codecs -> + K == custom -> true = avp_is_defined(AvpName, Dict, Line); %% Ensure that all local AVP's of type Grouped are also present in @grouped. diff --git a/lib/diameter/test/diameter_compiler_SUITE.erl b/lib/diameter/test/diameter_compiler_SUITE.erl index 08ffe5981d..20c9275808 100644 --- a/lib/diameter/test/diameter_compiler_SUITE.erl +++ b/lib/diameter/test/diameter_compiler_SUITE.erl @@ -317,6 +317,21 @@ {avp_not_defined, "CEA ::=", "<XXX> &"}, + {ok, + "@avp_types", + "@codecs tmod Session-Id &"}, + {ok, + "@avp_types", + "@custom_types tmod Session-Id &"}, + {avp_not_defined, + "@avp_types", + "@codecs tmod OctetString &"}, + {avp_not_defined, + "@avp_types", + "@custom_types tmod OctetString &"}, + {avp_already_defined, + "@avp_types", + "@codecs tmod Session-Id @custom_types tmod Session-Id &"}, {not_loaded, [{"@avp_types", "@inherits nomod XXX &"}, {"CEA ::=", "<XXX> &"}]}, |