|
@@ -344,6 +344,19 @@ def __dict_in_node_cfg(original_def, a, b):
|
|
|
'is not',
|
|
|
original_def.insert_before(cfg_ir.Literal(None))))))
|
|
|
|
|
|
+def __dict_read_cfg(original_def, a, b):
|
|
|
+ # Original definition:
|
|
|
+ #
|
|
|
+ # def dict_read(a, b, **remainder):
|
|
|
+ # b_value, = yield [("RV", [b])]
|
|
|
+ # result, = yield [("RD", [a, b_value])]
|
|
|
+ # raise PrimitiveFinished(result)
|
|
|
+
|
|
|
+ original_def.redefine(
|
|
|
+ cfg_ir.create_read_dict_value(
|
|
|
+ a,
|
|
|
+ original_def.insert_before(cfg_ir.Read(b))))
|
|
|
+
|
|
|
MISC_CFG_INTRINSICS = {
|
|
|
# Reference equality
|
|
|
'element_eq' :
|
|
@@ -419,6 +432,7 @@ MISC_CFG_INTRINSICS = {
|
|
|
|
|
|
# Dictionary operations
|
|
|
'dict_len' : __read_nr_out_cfg,
|
|
|
+ 'dict_read' : __dict_read_cfg,
|
|
|
'dict_in' : __dict_in_cfg,
|
|
|
'dict_in_node' : __dict_in_node_cfg,
|
|
|
|