From 45537dc582a4fe44a3407e97acb0e1e391fdcd6d Mon Sep 17 00:00:00 2001 From: Stavros Aronis Date: Sun, 20 Mar 2011 23:43:53 +0200 Subject: Suppress some warnings about generation of non-returning funs No warnings are emitted for funs that are non-returning when the function that generates them has a contract that specifies that it will return such a non-returning fun. The actual bug, reported by Tuncer Ayaz and simplified by Maria Christakis is included in Dialyzer's tests. --- .../test/small_SUITE_data/src/rebar_no_return.erl | 19 +++++++++++++++++++ 1 file changed, 19 insertions(+) create mode 100644 lib/dialyzer/test/small_SUITE_data/src/rebar_no_return.erl (limited to 'lib/dialyzer/test/small_SUITE_data/src/rebar_no_return.erl') diff --git a/lib/dialyzer/test/small_SUITE_data/src/rebar_no_return.erl b/lib/dialyzer/test/small_SUITE_data/src/rebar_no_return.erl new file mode 100644 index 0000000000..d3b504ae04 --- /dev/null +++ b/lib/dialyzer/test/small_SUITE_data/src/rebar_no_return.erl @@ -0,0 +1,19 @@ +-module(rebar_no_return). + +-export([t/0]). + +-spec t() -> no_return(). +t() -> + F = log_and_halt("baz"), + F("foo", 123). + +-spec log_and_halt(string()) -> fun((string(),integer()) -> no_return()). +log_and_halt(Msg) -> + fun(_, _) -> + abort(Msg) + end. + +-spec abort(string()) -> no_return(). +abort(Msg) -> + io:format("~s~n", [Msg]), + halt(1). -- cgit v1.2.3