aboutsummaryrefslogtreecommitdiffstats
path: root/lib/dialyzer/test/small_SUITE_data/src/contract3.erl
blob: a6ce91882ed6d9e1560b6e9aa0ea56f13f15f22e (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
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
%%%-------------------------------------------------------------------
%%% File    : contract3.erl
%%% Author  : Tobias Lindahl <[email protected]>
%%% Description : Check overloaded domains
%%%
%%% Created :  2 Nov 2007 by Tobias Lindahl <[email protected]>
%%%-------------------------------------------------------------------
-module(contract3).

-export([t/3]).

t(X, Y, Z) ->
  t1(X),
  t2(X, Y),
  t3(X, Y, Z).

-spec t1(atom()|integer()) -> integer();
        (atom()|list()) -> atom().

t1(X) ->
  f(X).

-spec t2(atom(), integer()) -> integer();
        (atom(), list()) -> atom().

t2(X, Y) ->
  g(X, Y).

-spec t3(atom(), integer(), list()) -> integer();
        (X, integer(), list()) -> X.

t3(X, Y, Z) ->
  X.

%% dummy functions below

f(X) -> X.

g(X, Y) when is_atom(X), is_integer(Y) -> Y;
g(X, Y) when is_atom(X), is_list(Y) -> X.