aboutsummaryrefslogtreecommitdiffstats
path: root/erts/preloaded/src/erlang.erl
diff options
context:
space:
mode:
authorPatrik Nyblom <[email protected]>2012-01-27 12:06:14 +0100
committerPatrik Nyblom <[email protected]>2012-02-07 16:00:11 +0100
commitbd941f5020cd50b7532b55454795c2985c372e64 (patch)
treebbdb3ec251c958bb8035b1b026eed2bfb571e215 /erts/preloaded/src/erlang.erl
parent2fc37e356b8c17064ad39d0418b62edd28675e19 (diff)
downloadotp-bd941f5020cd50b7532b55454795c2985c372e64.tar.gz
otp-bd941f5020cd50b7532b55454795c2985c372e64.tar.bz2
otp-bd941f5020cd50b7532b55454795c2985c372e64.zip
Correct dializer errors in erlang.erl and others
New errors found when adding specs to erlang.erl and removing them from erl_bif_types are examined and corrected. Some errors was due to faulty specs, while others were actual errors in the code using BIF's.
Diffstat (limited to 'erts/preloaded/src/erlang.erl')
-rw-r--r--erts/preloaded/src/erlang.erl43
1 files changed, 33 insertions, 10 deletions
diff --git a/erts/preloaded/src/erlang.erl b/erts/preloaded/src/erlang.erl
index c64c2dbb4f..b1b2156ad5 100644
--- a/erts/preloaded/src/erlang.erl
+++ b/erts/preloaded/src/erlang.erl
@@ -92,7 +92,8 @@
-export([list_to_integer/1, list_to_pid/1, list_to_tuple/1, loaded/0]).
-export([localtime/0, make_ref/0, match_spec_test/3, md5/1, md5_final/1]).
-export([md5_init/0, md5_update/2, module_loaded/1, monitor/2]).
--export([monitor_node/2, monitor_node/3, nif_error/1, nif_error/2]).
+-export([monitor_node/2, monitor_node/3, nif_error/1, nif_error/2
+]).
-export([node/0, node/1, now/0, phash/2, phash2/1, phash2/2]).
-export([pid_to_list/1, port_close/1, port_command/2, port_command/3]).
-export([port_connect/2, port_control/3, port_get_data/1]).
@@ -118,7 +119,7 @@
make_tuple/2, make_tuple/3, nodes/1, open_port/2,
port_call/3, port_info/1, port_info/2, process_flag/2,
process_info/2, send/2, send/3, seq_trace_info/1,
- setelement/3,
+ setelement/3, spawn_opt/1,
statistics/1, subtract/2, system_flag/2,
term_to_binary/1, term_to_binary/2, tl/1, trace_pattern/2,
trace_pattern/3, tuple_to_list/1, system_info/1,
@@ -598,7 +599,7 @@ exit(_Reason) ->
% exit/2
-spec exit(Pid, Reason) -> true when
- Pid :: pid(),
+ Pid :: pid() | port(),
Reason :: term().
exit(_Pid, _Reason) ->
erlang:nif_error(undefined).
@@ -736,7 +737,7 @@ hash(_Term, _Range) ->
erlang:nif_error(undefined).
% hibernate/3
--spec erlang:hibernate(Module, Function, Args) -> none() when
+-spec erlang:hibernate(Module, Function, Args) -> no_return() when
Module :: module(),
Function :: atom(),
Args :: [term()].
@@ -1085,7 +1086,7 @@ process_flag(_Pid, _Flag, _Value) ->
% process_info/1
-spec process_info(Pid) -> Info when
Pid :: pid(),
- Info :: [InfoTuple],
+ Info :: [InfoTuple] | undefined,
InfoTuple :: process_info_result_item().
process_info(_Pid) ->
erlang:nif_error(undefined).
@@ -1285,7 +1286,7 @@ system_profile() ->
% system_profile/2
-spec erlang:system_profile(ProfilerPid, Options) -> ProfilerSettings when
- ProfilerPid :: pid() | port(),
+ ProfilerPid :: pid() | port() | undefined,
Options :: [ system_profile_option() ],
ProfilerSettings :: undefined | { pid() | port(), [ system_profile_option() ]}.
system_profile(_ProfilerPid, _Options) ->
@@ -1501,7 +1502,7 @@ is_tuple(_Term) ->
-spec load_module(Module, Binary) -> {module, Module} | {error, Reason} when
Module :: module(),
Binary :: binary(),
- Reason :: badfile | not_purged.
+ Reason :: badfile | not_purged | on_load.
load_module(_Module,_Binary) ->
erlang:nif_error(undefined).
@@ -1635,7 +1636,11 @@ port_info(_Result, _Item) ->
OldN :: 0..10000;
(sensitive, Boolean) -> OldBoolean when
Boolean :: boolean(),
- OldBoolean :: boolean().
+ OldBoolean :: boolean();
+ %% Deliberately not documented.
+ ({monitor_nodes, term()}, term()) -> term();
+ (monitor_nodes, term()) -> term().
+
process_flag(_Flag, _Value) ->
erlang:nif_error(undefined).
@@ -1771,6 +1776,19 @@ seq_trace_info(_What) ->
setelement(_Index, _Tuple1, _Value) ->
erlang:nif_error(undefined).
+-spec spawn_opt({Module, Function, Args, Options}) -> pid() | {pid(), reference()} when
+ Module :: module(),
+ Function :: atom(),
+ Args :: [term()],
+ Options :: [Option],
+ Option :: link | monitor | {priority, Level}
+ | {fullsweep_after, Number :: non_neg_integer()}
+ | {min_heap_size, Size :: non_neg_integer()}
+ | {min_bin_vheap_size, VSize :: non_neg_integer()},
+ Level :: low | normal | high.
+spawn_opt(_Tuple) ->
+ erlang:nif_error(undefined).
+
-spec statistics(context_switches) -> {ContextSwitches,0} when
ContextSwitches :: non_neg_integer();
(exact_reductions) -> {Total_Exact_Reductions,
@@ -1841,7 +1859,12 @@ subtract(_,_) ->
OldSchedulersOnline :: pos_integer();
(trace_control_word, TCW) -> OldTCW when
TCW :: non_neg_integer(),
- OldTCW :: non_neg_integer().
+ OldTCW :: non_neg_integer();
+ %% These are deliberately not documented
+ (internal_cpu_topology, term()) -> term();
+ (sequential_tracer, pid() | port() | false) -> pid() | port() | false;
+ (1,0) -> true.
+
system_flag(_Flag, _Value) ->
erlang:nif_error(undefined).
@@ -1866,7 +1889,7 @@ tl(_List) ->
-type trace_pattern_mfa() ::
{atom(),atom(),arity() | '_'} | on_load.
-type trace_match_spec() ::
- [{[term()],[term()],[term()]}].
+ [{[term()] | '_' ,[term()],[term()]}].
-spec erlang:trace_pattern(MFA, MatchSpec) -> non_neg_integer() when
MFA :: trace_pattern_mfa(),