@@ -2760,4 +2760,27 @@ computed_fields_test() ->
2760
2760
? assertEqual (0 , counters :get (Counter , 2 )),
2761
2761
% % Bag is called
2762
2762
? assertEqual (1 , counters :get (Counter , 3 )),
2763
+
2764
+ % % Computed values shouldn't show up in raw configurations to be serialized.
2765
+ AssertNoComputed = fun
2766
+ Rec (M ) when is_map (M ) ->
2767
+ case is_map_key (? COMPUTED , M ) of
2768
+ true ->
2769
+ error ({should_not_have_computed , M });
2770
+ false ->
2771
+ maps :foreach (fun (_K , V ) -> Rec (V ) end , M )
2772
+ end ;
2773
+ Rec (Xs ) when is_list (Xs ) ->
2774
+ lists :foreach (Rec , Xs );
2775
+ Rec (_X ) ->
2776
+ ok
2777
+ end ,
2778
+ Res3 = #{} = hocon_tconf :check_plain (Sc , Data , #{make_serializable => true }),
2779
+ AssertNoComputed (Res3 ),
2780
+ % % Computed values shouldn't show up when handling rich maps
2781
+ BinaryHocon = hocon_pp :do (Data , #{}),
2782
+ {ok , RichmapData } = hocon :binary (BinaryHocon , #{format => richmap }),
2783
+ Res4 = #{} = hocon_tconf :check_plain (Sc , RichmapData , #{format => richmap }),
2784
+ AssertNoComputed (Res4 ),
2785
+
2763
2786
ok .
0 commit comments