diff options
author | Björn-Egil Dahlberg <[email protected]> | 2016-07-12 16:08:38 +0200 |
---|---|---|
committer | Björn-Egil Dahlberg <[email protected]> | 2016-07-12 16:08:38 +0200 |
commit | 8b83bc0b54b728cf9179ef3fa0e7610f99f7a6a4 (patch) | |
tree | d631f90daaea9237f5b7d467a5a5b7eb71639bc6 /lib | |
parent | 3b7a6ffddc819bf305353a593904cea9e932e7dc (diff) | |
download | otp-8b83bc0b54b728cf9179ef3fa0e7610f99f7a6a4.tar.gz otp-8b83bc0b54b728cf9179ef3fa0e7610f99f7a6a4.tar.bz2 otp-8b83bc0b54b728cf9179ef3fa0e7610f99f7a6a4.zip |
compiler: Test literal binary matching
The following regression was introduced in 19.0:
foo(bar, <<"x">>) -> 1;
foo(_, <<"x">>) -> 2;
foo(_, <<"y">>) -> 3;
foo(_, _) -> fail.
The call foo(bar,<<"y">>) would errorneous return 'fail' instead of 3.
A testcase in match_SUITE has been added to verify this.
Diffstat (limited to 'lib')
-rw-r--r-- | lib/compiler/test/match_SUITE.erl | 13 |
1 files changed, 11 insertions, 2 deletions
diff --git a/lib/compiler/test/match_SUITE.erl b/lib/compiler/test/match_SUITE.erl index 31402ac717..127679ba69 100644 --- a/lib/compiler/test/match_SUITE.erl +++ b/lib/compiler/test/match_SUITE.erl @@ -24,7 +24,7 @@ pmatch/1,mixed/1,aliases/1,non_matching_aliases/1, match_in_call/1,untuplify/1,shortcut_boolean/1,letify_guard/1, selectify/1,underscore/1,match_map/1,map_vars_used/1, - coverage/1,grab_bag/1]). + coverage/1,grab_bag/1,literal_binary/1]). -include_lib("common_test/include/ct.hrl"). @@ -40,7 +40,7 @@ groups() -> match_in_call,untuplify, shortcut_boolean,letify_guard,selectify, underscore,match_map,map_vars_used,coverage, - grab_bag]}]. + grab_bag,literal_binary]}]. init_per_suite(Config) -> @@ -574,6 +574,15 @@ grab_bag_remove_failure([{stretch,_,Mi}=Stretch | Specs], Unit, _MaxFailure) -> ok end. +%% Regression in 19.0, reported by Alexei Sholik +literal_binary(_Config) -> + 3 = literal_binary_match(bar,<<"y">>), + ok. + +literal_binary_match(bar, <<"x">>) -> 1; +literal_binary_match(_, <<"x">>) -> 2; +literal_binary_match(_, <<"y">>) -> 3; +literal_binary_match(_, _) -> fail. id(I) -> I. |