summaryrefslogtreecommitdiff
path: root/lib/dialyzer/test/small_SUITE_data/src/not_guard_crash.erl
blob: 75bcffc2bc6ae2163fbea09eea8b58e15a53e0dc (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
%% From: Matthias Radestock <matthias@lshift.net>
%% Date: 19 August 2007
%%
%% when I run dialyzer on my code it throws the following error:
%%
%% Analysis failed with error report:
%%         {{case_clause,any},
%%          [{dialyzer_dataflow,bind_guard,5},
%%           {dialyzer_dataflow,bind_guard_case_clauses,6},
%%           {dialyzer_dataflow,bind_guard,5},
%%           {dialyzer_dataflow,bind_guard_case_clauses,6},
%%           {dialyzer_dataflow,bind_guard,5},
%%           {dialyzer_dataflow,bind_eqeq_guard_lit_other,6},
%%           {dialyzer_dataflow,bind_guard,...},
%%           {dialyzer_dataflow,...}]}
%%
%% This is happening with the R11B-5 version of dialyzer when
%% analyzing the attached file.
%%--------------------------------------------------------------------

-module(not_guard_crash).

-export([match_ticket/2]).

-record(ticket, {passive_flag, active_flag, write_flag, read_flag}).

%%--------------------------------------------------------------------

match_ticket(#ticket{passive_flag = PP,
                     active_flag  = PA,
                     write_flag   = PW,
                     read_flag    = PR},
             #ticket{passive_flag = TP,
                     active_flag  = TA,
                     write_flag   = TW,
                     read_flag    = TR}) ->
    if
        %% Matches if either we're not requesting passive access, or
        %% passive access is permitted, and ...
        (not(TP) orelse PP) andalso
        (not(TA) orelse PA) andalso
        (not(TW) orelse PW) andalso
        (not(TR) orelse PR) ->
            match;
        true ->
            no_match
    end.

%%--------------------------------------------------------------------