diff options
author | Björn-Egil Dahlberg <[email protected]> | 2015-04-30 17:36:35 +0200 |
---|---|---|
committer | Björn-Egil Dahlberg <[email protected]> | 2015-04-30 17:36:35 +0200 |
commit | e0693a525481ac2af86830a5ec82520b62c217da (patch) | |
tree | 41d4fe09f1cfb90201120fec5f5ac06076835298 /lib | |
parent | 147e8b9bd0b36315f0d8bd38e39c51d93cd9f509 (diff) | |
download | otp-e0693a525481ac2af86830a5ec82520b62c217da.tar.gz otp-e0693a525481ac2af86830a5ec82520b62c217da.tar.bz2 otp-e0693a525481ac2af86830a5ec82520b62c217da.zip |
dialyzer: Strengthen maps tests
Diffstat (limited to 'lib')
-rw-r--r-- | lib/dialyzer/test/small_SUITE_data/results/maps_sum | 4 | ||||
-rw-r--r-- | lib/dialyzer/test/small_SUITE_data/src/maps_sum.erl | 31 |
2 files changed, 35 insertions, 0 deletions
diff --git a/lib/dialyzer/test/small_SUITE_data/results/maps_sum b/lib/dialyzer/test/small_SUITE_data/results/maps_sum new file mode 100644 index 0000000000..a19c0bba96 --- /dev/null +++ b/lib/dialyzer/test/small_SUITE_data/results/maps_sum @@ -0,0 +1,4 @@ + +maps_sum.erl:15: Invalid type specification for function maps_sum:wrong1/1. The success typing is (#{}) -> any() +maps_sum.erl:26: Function wrong2/1 has no local return +maps_sum.erl:27: The call lists:foldl(fun((_,_,_) -> any()),0,Data::any()) will never return since it differs in the 1st argument from the success typing arguments: (fun((_,_) -> any()),any(),[any()]) diff --git a/lib/dialyzer/test/small_SUITE_data/src/maps_sum.erl b/lib/dialyzer/test/small_SUITE_data/src/maps_sum.erl new file mode 100644 index 0000000000..a73ac555c9 --- /dev/null +++ b/lib/dialyzer/test/small_SUITE_data/src/maps_sum.erl @@ -0,0 +1,31 @@ +-module(maps_sum). +-export([correct1/1, + wrong1/1, + wrong2/1]). + +-spec correct1(#{atom() => term()}) -> integer(). + +correct1(Data) -> + maps:fold(fun (_Key, Value, Acc) when is_integer(Value) -> + Acc + Value; + (_Key, _Value, Acc) -> + Acc + end, 0, Data). + +-spec wrong1([{atom(),term()}]) -> integer(). + +wrong1(Data) -> + maps:fold(fun (_Key, Value, Acc) when is_integer(Value) -> + Acc + Value; + (_Key, _Value, Acc) -> + Acc + end, 0, Data). + +-spec wrong2(#{atom() => term()}) -> integer(). + +wrong2(Data) -> + lists:foldl(fun (_Key, Value, Acc) when is_integer(Value) -> + Acc + Value; + (_Key, _Value, Acc) -> + Acc + end, 0, Data). |