From d44fe70eda258764a4ca7707059a5eb8fd25cf58 Mon Sep 17 00:00:00 2001 From: Thales Macedo Garitezi <16166434+thalesmg@users.noreply.github.com> Date: Thu, 17 Apr 2025 14:08:29 -0300 Subject: [PATCH] feat(computed fields): add option to avoid computing computed fields Part of https://github.com/emqx/emqx/pull/15039#discussion_r2049277150 --- src/hocon_tconf.erl | 2 ++ test/hocon_tconf_tests.erl | 20 ++++++++++++++++++++ 2 files changed, 22 insertions(+) diff --git a/src/hocon_tconf.erl b/src/hocon_tconf.erl index 3e7dc10..27c3791 100644 --- a/src/hocon_tconf.erl +++ b/src/hocon_tconf.erl @@ -524,6 +524,8 @@ map_one_field_non_hidden(FieldType, FieldSchema, FieldValue0, Opts) -> maybe_computed(_FieldSchema, CheckedValue, #{make_serializable := true}) -> CheckedValue; +maybe_computed(_FieldSchema, CheckedValue, #{computed_fields := false}) -> + CheckedValue; maybe_computed(FieldSchema, #{} = CheckedValue, #{format := map} = Opts) -> case field_schema(FieldSchema, computed) of Fn when is_function(Fn, 2) -> diff --git a/test/hocon_tconf_tests.erl b/test/hocon_tconf_tests.erl index fa89028..39310d6 100644 --- a/test/hocon_tconf_tests.erl +++ b/test/hocon_tconf_tests.erl @@ -2783,4 +2783,24 @@ computed_fields_test() -> Res4 = #{} = hocon_tconf:check_plain(Sc, RichmapData, #{format => richmap}), AssertNoComputed(Res4), + %% Option to not compute computed fields. + Res5 = hocon_tconf:check_plain(Sc, Data, #{computed_fields => false}), + ?assertEqual( + #{ + <<"root">> => + #{ + <<"bar">> => 123, + <<"baz">> => + #{ + <<"quux">> => 666 + }, + <<"bag">> => + #{ + <<"key">> => <<"value">> + } + } + }, + Res5 + ), + ok.