aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--lib/dialyzer/test/small_SUITE_data/src/bin_compr.erl16
1 files changed, 16 insertions, 0 deletions
diff --git a/lib/dialyzer/test/small_SUITE_data/src/bin_compr.erl b/lib/dialyzer/test/small_SUITE_data/src/bin_compr.erl
new file mode 100644
index 0000000000..8c2497ed21
--- /dev/null
+++ b/lib/dialyzer/test/small_SUITE_data/src/bin_compr.erl
@@ -0,0 +1,16 @@
+%%% -*- erlang-indent-level: 2 -*-
+%%%------------------------------------------------------------------------
+%%% File : bin_compr.erl
+%%% Purpose : Test case which crashes in dialyzer_dataflow:bind_bin_segs/5.
+%%%------------------------------------------------------------------------
+
+-module(bin_compr).
+
+-export([bc/1]).
+
+%% The binary comprehension below is stupid: it consumes the whole
+%% bitstr in one go and produces a [666] result provided Bits is a
+%% bitstr of at least 8 bits. Still, this is a valid Erlang program
+%% and dialyzer's analysis should not crash on it.
+bc(Bits) ->
+ [666 || <<_:8/integer, _/bits>> <= Bits].