aboutsummaryrefslogblamecommitdiffstats
path: root/lib/dialyzer/test/small_SUITE_data/src/maps1.erl
blob: 597358d16a037b0a23871ea058bf271492ecb74f (plain) (tree)






















                                                                            
                                                                             
















                                                               











                                                                    
%%
%% File:    maps1.erl
%% Author:  Björn-Egil Dahlberg
%% Created: 2014-01-17
%%

-module(maps1).

-compile([export_all]).


-export([recv/3, decode/1]).

%-record(can_pkt, {id, data :: binary(), timestamp}).

-type can_pkt() :: #{ id => term(), data => binary(), timestamp => term() }.
-type channel() :: atom() | pid() | {atom(),_}.

-spec recv(<<_:64,_:_*8>>, fun((can_pkt()) -> R), channel()) -> R.
recv(Packet, Fun, Chan) ->
  #{id := Can_id, data := Can_data} = P = decode(Packet),
  Fun(P).

-spec decode(<<_:64,_:_*8>>) -> #{id => <<_:11>>,timestamp => char(),_ => _}.
decode(<<_:12, Len:4, Timestamp:16, 0:3, Id:11/bitstring, 0:18,
	 Data:Len/binary, _/binary>>) ->
  #{id => Id, data => Data, timestamp => Timestamp}.



t1() ->
    #{bar=>fun t2/0}.

t2() -> ok.

-type map_state() :: #{ id => integer(), val => term() }.

-spec update(map_state(), term()) -> map_state().

update(#{ id := Id, val := Val } = M, X) when is_integer(Id) ->
    M#{ val := [Val,X] }.

t3() ->
    foo(#{greger => 3, #{arne=>anka} => 45}, 1).

foo(#{} = M, b) -> %% Error
    M#{alfa => 42, beta := 1337}.

t4() ->
    case #{} of
        #{} -> ok;
        Mod -> Mod:function(#{literal => map}, another_arg) %% Error
    end.