aboutsummaryrefslogtreecommitdiffstats
path: root/lib/dialyzer/test
diff options
context:
space:
mode:
authorHans Bolinder <[email protected]>2014-02-24 08:43:22 +0100
committerHans Bolinder <[email protected]>2014-02-24 08:43:22 +0100
commitf4bafbfdc7183b4297b96c884a61545000eb7fbd (patch)
tree66e0bb64e5b3153bdd62823b56fef43b60a590ee /lib/dialyzer/test
parent502b13aaf568e351bc30e44d0e14c063cbf5fc5a (diff)
downloadotp-f4bafbfdc7183b4297b96c884a61545000eb7fbd.tar.gz
otp-f4bafbfdc7183b4297b96c884a61545000eb7fbd.tar.bz2
otp-f4bafbfdc7183b4297b96c884a61545000eb7fbd.zip
FIx handling of 'on_load' attribute
[pull request from Kostis Sagonas] The handling of functions appearing in an 'on_load' attribute was wrong. Instead of considering the functions specified in these attributes as escaping from the module and performing a full analysis starting from them, the code just bypassed this analysis and only suppressed unused warning messages for these functions. This worked for most of the cases but resulted in functions (directly or indirectly) called by 'on_load' functions being reported as not called by the module. Such a case existed in the code of the 'crypto' application. To solve these issues the initialization code for functions escaping from the module was changed and the test for the on_load functionality was appropriately extended.
Diffstat (limited to 'lib/dialyzer/test')
-rw-r--r--lib/dialyzer/test/small_SUITE_data/src/on_load.erl7
1 files changed, 6 insertions, 1 deletions
diff --git a/lib/dialyzer/test/small_SUITE_data/src/on_load.erl b/lib/dialyzer/test/small_SUITE_data/src/on_load.erl
index 16533a9caa..7242ac2016 100644
--- a/lib/dialyzer/test/small_SUITE_data/src/on_load.erl
+++ b/lib/dialyzer/test/small_SUITE_data/src/on_load.erl
@@ -1,4 +1,6 @@
%%% This is to ensure that "on_load" functions are never reported as unused.
+%%% In addition, all functions called by a function in an on_load attribute
+%%% should be considered as called by an entry point of the module.
-module(on_load).
@@ -8,4 +10,7 @@
foo() -> ok.
-bar() -> ok.
+bar() -> gazonk(17).
+
+gazonk(N) when N < 42 -> gazonk(N+1);
+gazonk(42) -> ok.