aboutsummaryrefslogtreecommitdiffstats
path: root/lib/dialyzer/test/small_SUITE_data/src/relevant_record_warning.erl
blob: 3ff65458dfc74c36381e94e260ea29b9856f92fa (plain) (blame)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
%% Formerly confusing_record_warning.erl.
%% The warning output is relevant as of Erlang/OTP 17.1.
%% The original comment kept below.

%%---------------------------------------------------------------------
%% A user complained that dialyzer produces a weird warning for the
%% following program.  I explained to him that there is an implicit
%% assumption that when a record is typed one cannot have types of
%% the same size which are tagged by the record name whose elements
%% have different types than the ones declared in the record.
%%
%% But the warning from dialyzer was weird nonetheless:
%%    The pattern {'r', [_]} can never match the type any()
%% We should clearly give some less confusing warning in this case.
%%---------------------------------------------------------------------
-module(relevant_record_warning).

-export([test/1]).

-record(r, {field :: binary}).

test({r, [_]}) ->
  #r{field = <<42>>}.