diff options
author | Hans Bolinder <[email protected]> | 2014-02-24 08:43:22 +0100 |
---|---|---|
committer | Hans Bolinder <[email protected]> | 2014-02-24 08:43:22 +0100 |
commit | f4bafbfdc7183b4297b96c884a61545000eb7fbd (patch) | |
tree | 66e0bb64e5b3153bdd62823b56fef43b60a590ee /lib/dialyzer/test | |
parent | 502b13aaf568e351bc30e44d0e14c063cbf5fc5a (diff) | |
download | otp-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.erl | 7 |
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. |