aboutsummaryrefslogtreecommitdiffstats
path: root/lib/dialyzer/test/small_SUITE_data/src/inf_loop2.erl
blob: 6ac29116a5e019910d30033ab6b6b9417a8ae938 (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
%%---------------------------------------------------------------------
%% Module that went into an infinite loop when trying to assign types.
%%
%% What was happening is that for functions which are in an SCC but all
%% return none(), a second chance was given to them by the analysis to
%% see whether they return none() because they are involved in an loop
%% (presumably server-related) and could be assigned the type unit()
%% instead. The problem is that when the really return none() for some
%% other reason (an error such in this case) then we will again find
%% none() and try again for unit(), thereby entering an infinite loop.
%% The issue was resolved on May 17th by adding an appropriate boolean
%% parameter to dialyzer_typesig:solve_scc() function.
%%---------------------------------------------------------------------
-module(inf_loop2).

-export([test/0]).

test() ->
  lists:reverse(gazonk),
  loop().

loop() ->
  test().