~ubuntu-branches/ubuntu/trusty/erlang/trusty

« back to all changes in this revision

Viewing changes to lib/dialyzer/test/small_tests_SUITE_data/src/overloaded1.erl

  • Committer: Bazaar Package Importer
  • Author(s): Clint Byrum
  • Date: 2011-05-05 15:48:43 UTC
  • mfrom: (3.5.13 sid)
  • Revision ID: james.westby@ubuntu.com-20110505154843-0om6ekzg6m7ugj27
Tags: 1:14.b.2-dfsg-3ubuntu1
* Merge from debian unstable.  Remaining changes:
  - Drop libwxgtk2.8-dev build dependency. Wx isn't in main, and not
    supposed to.
  - Drop erlang-wx binary.
  - Drop erlang-wx dependency from -megaco, -common-test, and -reltool, they
    do not really need wx. Also drop it from -debugger; the GUI needs wx,
    but it apparently has CLI bits as well, and is also needed by -megaco,
    so let's keep the package for now.
  - debian/patches/series: Do what I meant, and enable build-options.patch
    instead.
* Additional changes:
  - Drop erlang-wx from -et
* Dropped Changes:
  - patches/pcre-crash.patch: CVE-2008-2371: outer level option with
    alternatives caused crash. (Applied Upstream)
  - fix for ssl certificate verification in newSSL: 
    ssl_cacertfile_fix.patch (Applied Upstream)
  - debian/patches/series: Enable native.patch again, to get stripped beam
    files and reduce the package size again. (build-options is what
    actually accomplished this)
  - Remove build-options.patch on advice from upstream and because it caused
    odd build failures.

Show diffs side-by-side

added added

removed removed

Lines of Context:
 
1
%%-----------------------------------------------------------------------------
 
2
%% Test that tests overloaded contratcs.
 
3
%% In December 2008 it works as far as intersection types are concerned (test1)
 
4
%% However, it does NOT work as far as type variables are concerned (test2)
 
5
%%-----------------------------------------------------------------------------
 
6
-module(overloaded1).
 
7
-export([test1/0, test2/0, foo/2]).
 
8
 
 
9
test1() ->
 
10
  {ok, gazonk} = foo({a,b,1}, atom_to_list(gazonk)),
 
11
  ok.
 
12
 
 
13
test2() ->
 
14
  {ok, gazonk} = foo(baz, []),
 
15
  ok.
 
16
 
 
17
-type mod() :: atom().
 
18
 
 
19
-spec foo(ATM, list()) -> {'ok', ATM} | {'error', _} when is_subtype(ATM, mod())
 
20
       ; (MFA, list()) -> {'ok', MFA} | {'error', _} when is_subtype(MFA, mfa()).
 
21
 
 
22
foo(F, _) when is_atom(F) ->
 
23
  case atom_to_list(F) of
 
24
      [42|_] -> {ok, F};
 
25
      _Other -> {error, mod:bar(F)}
 
26
  end;
 
27
foo({M,F,A}, _) ->
 
28
  case A =:= 0 of
 
29
    false -> {ok, {M,F,A}};
 
30
    true -> {error, M}
 
31
  end.