summaryrefslogtreecommitdiff
path: root/lib/compiler/test/bs_bincomp_SUITE.erl
diff options
context:
space:
mode:
Diffstat (limited to 'lib/compiler/test/bs_bincomp_SUITE.erl')
-rw-r--r--lib/compiler/test/bs_bincomp_SUITE.erl30
1 files changed, 22 insertions, 8 deletions
diff --git a/lib/compiler/test/bs_bincomp_SUITE.erl b/lib/compiler/test/bs_bincomp_SUITE.erl
index 9ac261c805..0d129a4a48 100644
--- a/lib/compiler/test/bs_bincomp_SUITE.erl
+++ b/lib/compiler/test/bs_bincomp_SUITE.erl
@@ -101,26 +101,26 @@ extended_bit_aligned(Config) when is_list(Config) ->
mixed(Config) when is_list(Config) ->
cs_init(),
<<2,3,3,4,4,5,5,6>> =
- cs(<< <<(X+Y)>> || <<X>> <= <<1,2,3,4>>, <<Y>> <= <<1,2>> >>),
+ cs_default(<< <<(X+Y)>> || <<X>> <= <<1,2,3,4>>, <<Y>> <= <<1,2>> >>),
<<2,3,3,4,4,5,5,6>> =
- << <<(X+Y)>> || <<X>> <= <<1,2,3,4>>, Y <- [1,2] >>,
+ cs_default(<< <<(X+Y)>> || <<X>> <= <<1,2,3,4>>, Y <- [1,2] >>),
<<2,3,3,4,4,5,5,6>> =
- cs(<< <<(X+Y)>> || X <- [1,2,3,4], Y <- [1,2] >>),
+ cs_default(<< <<(X+Y)>> || X <- [1,2,3,4], Y <- [1,2] >>),
One = id([1,2,3,4]),
Two = id([1,2]),
<<2,3,3,4,4,5,5,6>> =
- cs(<< <<(X+Y)>> || X <- One, Y <- Two >>),
+ cs_default(<< <<(X+Y)>> || X <- One, Y <- Two >>),
[2,3,3,4,4,5,5,6] =
[(X+Y) || <<X>> <= <<1,2,3,4>>, <<Y>> <= <<1,2>>],
[2,3,3,4,4,5,5,6] =
[(X+Y) || <<X>> <= <<1,2,3,4>>, Y <- [1,2]],
<<2:3,3:3,3:3,4:3,4:3,5:3,5:3,6:3>> =
- cs(<< <<(X+Y):3>> || <<X:3>> <= <<1:3,2:3,3:3,4:3>>,
- <<Y:3>> <= <<1:3,2:3>> >>),
+ cs_default(<< <<(X+Y):3>> || <<X:3>> <= <<1:3,2:3,3:3,4:3>>,
+ <<Y:3>> <= <<1:3,2:3>> >>),
<<2:3,3:3,3:3,4:3,4:3,5:3,5:3,6:3>> =
- cs(<< <<(X+Y):3>> || <<X:3>> <= <<1:3,2:3,3:3,4:3>>, Y <- [1,2] >>),
+ cs_default(<< <<(X+Y):3>> || <<X:3>> <= <<1:3,2:3,3:3,4:3>>, Y <- [1,2] >>),
<<2:3,3:3,3:3,4:3,4:3,5:3,5:3,6:3>> =
- cs(<< <<(X+Y):3>> || X <- [1,2,3,4], Y <- [1,2] >>),
+ cs_default(<< <<(X+Y):3>> || X <- [1,2,3,4], Y <- [1,2] >>),
<<2:3,3:3,3:3,4:3,4:3,5:3,5:3,6:3>> =
cs_default(<< <<(X+Y):3>> || {X,Y} <- [{1,1},{1,2},{2,1},{2,2},
{3,1},{3,2},{4,1},{4,2}] >>),
@@ -128,8 +128,17 @@ mixed(Config) when is_list(Config) ->
[(X+Y) || <<X:3>> <= <<1:3,2:3,3:3,4:3>>, <<Y:3>> <= <<1:3,2:3>>],
[2,3,3,4,4,5,5,6] =
[(X+Y) || <<X:3>> <= <<1:3,2:3,3:3,4:3>>, {_,Y} <- [{a,1},{b,2}]],
+
+ %% OTP-16899: Nested binary comprehensions would fail to load.
+ <<0,1,0,2,0,3,99>> = mixed_nested([1,2,3]),
+
+ <<1>> = cs_default(<< <<X>> || L <- [[1]], X <- L >>),
+
cs_end().
+mixed_nested(L) ->
+ << << << << E:16 >> || E <- L >> || true >>/binary, 99:(id(8))>>.
+
filters(Config) when is_list(Config) ->
cs_init(),
<<"BDF">> =
@@ -200,6 +209,11 @@ nomatch(Config) when is_list(Config) ->
<<>> = << <<X:32>> || <<X:all/binary>> <= Bin >>,
<<>> = << <<X:32>> || <<X:bad/binary>> <= Bin >>,
+ <<>> = << <<"a">> || <<_:1/float>> <= Bin>>,
+
+ NaN = <<(-1):32>>,
+ <<>> = << <<"a">> || <<_:32/float>> <= NaN >>,
+
ok.
sizes(Config) when is_list(Config) ->