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

« back to all changes in this revision

Viewing changes to lib/dialyzer/test/small_tests_SUITE_data/src/trec.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
%% The current treatment of typed records leaves much to be desired.
 
3
%% These are not made up examples; I have cases like that the branch
 
4
%% of the HiPE compiler with types in records. I get very confusing
 
5
%% warnings which require a lot of effort to find their cause and why
 
6
%% a function has no local return.
 
7
%%
 
8
-module(trec).
 
9
-export([test/0, mk_foo_exp/2]).
 
10
 
 
11
-record(foo, {a :: integer(), b :: [atom()]}).
 
12
 
 
13
%%
 
14
%% For these functions we currently get the following warnings:
 
15
%%   1. Function test/0 has no local return
 
16
%%   2. The call trec:mk_foo_loc(42,any()) will fail since it differs
 
17
%%      in argument position 1 from the success typing arguments:
 
18
%%      ('undefined',atom())
 
19
%%   3. Function mk_foo_loc/2 has no local return
 
20
%%
 
21
%% Arguably, the second warning is not what most users have in mind
 
22
%% when they wrote the type declarations in the 'foo' record, so no
 
23
%% doubt they'll find it confusing. But note that it is also inconsistent!
 
24
%% How come there is a success typing for a function that has no local return? 
 
25
%%
 
26
test() ->
 
27
   mk_foo_loc(42, bar:f()).
 
28
 
 
29
mk_foo_loc(A, B) ->
 
30
    #foo{a = A, b = [A,B]}.
 
31
 
 
32
%%
 
33
%% For this function we currently get "has no local return" but we get
 
34
%% no reason; I want us to get a reason.
 
35
%%
 
36
mk_foo_exp(A, B) when is_integer(A) ->
 
37
    #foo{a = A, b = [A,B]}.