aboutsummaryrefslogtreecommitdiffstats
path: root/lib/compiler/test
diff options
context:
space:
mode:
authorBjörn-Egil Dahlberg <[email protected]>2014-03-25 18:37:56 +0100
committerBjörn-Egil Dahlberg <[email protected]>2014-03-25 19:07:48 +0100
commit71df02b2ead5c68eb9c4dff00d91a1d0e94659fe (patch)
tree617c084408a29cf65b3be6ae9536ebd7288c960a /lib/compiler/test
parent9e01993aac2cc35c77e5e246ed6e160c3485a456 (diff)
downloadotp-71df02b2ead5c68eb9c4dff00d91a1d0e94659fe.tar.gz
otp-71df02b2ead5c68eb9c4dff00d91a1d0e94659fe.tar.bz2
otp-71df02b2ead5c68eb9c4dff00d91a1d0e94659fe.zip
compiler: Throw 'nomatch' on matching with bad binary keys
Even if a binary key is written as a literal the compiler may choose to make an expression. Emit a warning in those cases and saying the case will not match. This is a limitation in current implementation.
Diffstat (limited to 'lib/compiler/test')
-rw-r--r--lib/compiler/test/warnings_SUITE.erl16
1 files changed, 15 insertions, 1 deletions
diff --git a/lib/compiler/test/warnings_SUITE.erl b/lib/compiler/test/warnings_SUITE.erl
index e8ec48df14..ad4ad91f74 100644
--- a/lib/compiler/test/warnings_SUITE.erl
+++ b/lib/compiler/test/warnings_SUITE.erl
@@ -600,7 +600,21 @@ maps(Config) when is_list(Config) ->
ok.
">>,
[],
- {warnings,[{3,v3_core,bad_map}]}}],
+ {warnings,[{3,v3_core,bad_map}]}},
+ {bad_map_literal_key,
+ <<"
+ t() ->
+ V = id(1),
+ M = id(#{ <<$h,$i>> => V }),
+ V = case M of
+ #{ <<0:257>> := Val } -> Val;
+ #{ <<$h,$i>> := Val } -> Val
+ end,
+ ok.
+ id(I) -> I.
+ ">>,
+ [],
+ {warnings,[{6,v3_core,nomatch}]}}],
run(Config, Ts),
ok.