aboutsummaryrefslogtreecommitdiffstats
path: root/lib/compiler/test/beam_validator_SUITE_data/map_field_lists.S
diff options
context:
space:
mode:
authorBjörn Gustavsson <[email protected]>2015-02-17 11:16:44 +0100
committerBjörn Gustavsson <[email protected]>2015-02-18 13:04:21 +0100
commitd52142f95858fc2ea461e9b2b52c5835e39886d8 (patch)
tree34ca31d35e67f406819f541a21fce73ef16b040a /lib/compiler/test/beam_validator_SUITE_data/map_field_lists.S
parentb2eec25db0bca618853b163ea34c4f9f4ef7f3f1 (diff)
downloadotp-d52142f95858fc2ea461e9b2b52c5835e39886d8.tar.gz
otp-d52142f95858fc2ea461e9b2b52c5835e39886d8.tar.bz2
otp-d52142f95858fc2ea461e9b2b52c5835e39886d8.zip
beam_validator: Tighten and simplify map validation code
The assert_strict_literal_termorder/1 function is used to validate the get_map_elements and has_map_fields instructions. In neither case is it useful to allow an empty lists of fields, so we should no longer allow an empty list. The mmap/2 function is cute, but it is used in only one place, so it is much simpler to write a special-purpose function to extract the keys from the list of map pairs.
Diffstat (limited to 'lib/compiler/test/beam_validator_SUITE_data/map_field_lists.S')
-rw-r--r--lib/compiler/test/beam_validator_SUITE_data/map_field_lists.S29
1 files changed, 29 insertions, 0 deletions
diff --git a/lib/compiler/test/beam_validator_SUITE_data/map_field_lists.S b/lib/compiler/test/beam_validator_SUITE_data/map_field_lists.S
new file mode 100644
index 0000000000..9af68c82d4
--- /dev/null
+++ b/lib/compiler/test/beam_validator_SUITE_data/map_field_lists.S
@@ -0,0 +1,29 @@
+{module, map_field_lists}. %% version = 0
+
+{exports, [{x,1},{y,1}]}.
+
+{attributes, []}.
+
+{labels, 5}.
+
+
+{function, x, 1, 2}.
+ {label,1}.
+ {line,[{location,"map_field_lists.erl",4}]}.
+ {func_info,{atom,map_field_lists},{atom,x},1}.
+ {label,2}.
+ {test,is_map,{f,1},[{x,0}]}.
+ {test,has_map_fields,{f,1},{x,0},{list,[{atom,z},{atom,a}]}}.
+ {move,{atom,ok},{x,0}}.
+ return.
+
+
+{function, y, 1, 4}.
+ {label,3}.
+ {line,[{location,"map_field_lists.erl",7}]}.
+ {func_info,{atom,map_field_lists},{atom,y},1}.
+ {label,4}.
+ {test,is_map,{f,3},[{x,0}]}.
+ {test,has_map_fields,{f,3},{x,0},{list,[]}}.
+ {move,{atom,ok},{x,0}}.
+ return.