From a5045390974b5efd913f3568a35fc607ee3fc1ee Mon Sep 17 00:00:00 2001 From: Zaiming Shi Date: Tue, 10 Nov 2020 16:38:01 +0100 Subject: [PATCH] fix(emqx_rule_registry): Dialyzer warning --- apps/emqx_rule_engine/src/emqx_rule_metrics.erl | 2 +- apps/emqx_rule_engine/src/emqx_rule_registry.erl | 11 ++++++++--- 2 files changed, 9 insertions(+), 4 deletions(-) diff --git a/apps/emqx_rule_engine/src/emqx_rule_metrics.erl b/apps/emqx_rule_engine/src/emqx_rule_metrics.erl index c24954f94..48058eed2 100644 --- a/apps/emqx_rule_engine/src/emqx_rule_metrics.erl +++ b/apps/emqx_rule_engine/src/emqx_rule_metrics.erl @@ -99,7 +99,7 @@ -record(state, { metric_ids = sets:new(), - rule_speeds :: #{rule_id() => #rule_speed{}}, + rule_speeds :: undefined | #{rule_id() => #rule_speed{}}, overall_rule_speed :: #rule_speed{} }). diff --git a/apps/emqx_rule_engine/src/emqx_rule_registry.erl b/apps/emqx_rule_engine/src/emqx_rule_registry.erl index 9681f8daa..395e13eff 100644 --- a/apps/emqx_rule_engine/src/emqx_rule_registry.erl +++ b/apps/emqx_rule_engine/src/emqx_rule_registry.erl @@ -166,6 +166,10 @@ start_link() -> get_rules() -> get_all_records(?RULE_TAB). +%% TODO: emqx_rule_utils:can_topic_match_oneof(Topic::any(), For::atom()) +%% will never return since it differs in the 2nd argument from the success +%% typing arguments: (any(), [binary() | ['' | '#' | '+' | binary()]]) +-dialyzer([{nowarn_function, get_rules_for/1}]). -spec(get_rules_for(Topic :: binary()) -> list(emqx_rule_engine:rule())). get_rules_for(Topic) -> [Rule || Rule = #rule{for = For} <- get_rules(), @@ -329,9 +333,10 @@ remove_resource_params(ResId) -> %% @private delete_resource(ResId) -> - [[ResId =:= ResId1 andalso throw({dependency_exists, {rule, Id}}) - || #action_instance{args = #{<<"$resource">> := ResId1}} <- Actions] - || #rule{id = Id, actions = Actions} <- get_rules()], + %% TODO, change to foreache:s + _ = [[ResId =:= ResId1 andalso throw({dependency_exists, {rule, Id}}) + || #action_instance{args = #{<<"$resource">> := ResId1}} <- Actions] + || #rule{id = Id, actions = Actions} <- get_rules()], mnesia:delete(?RES_TAB, ResId, write). %% @private