dict_set_item_op = method_op( name='__setitem__', arg_types=[dict_rprimitive, object_rprimitive, object_rprimitive], result_type=bool_rprimitive, error_kind=ERR_FALSE, emit=simple_emit( '{dest} = PyDict_SetItem({args[0]}, {args[1]}, {args[2]}) >= 0;')) binary_op( op='in', arg_types=[object_rprimitive, dict_rprimitive], result_type=bool_rprimitive, error_kind=ERR_MAGIC, format_str='{dest} = {args[0]} in {args[1]} :: dict', emit=negative_int_emit('{dest} = PyDict_Contains({args[1]}, {args[0]});')) # NOTE: PyDict_Update is technically not equivalent to update, but the cases where it # differs (when the second argument has no keys) should never typecheck for us, so the # difference is irrelevant. dict_update_op = method_op( name='update', arg_types=[dict_rprimitive, object_rprimitive], result_type=bool_rprimitive, error_kind=ERR_FALSE, emit=simple_emit('{dest} = PyDict_Update({args[0]}, {args[1]}) != -1;')) new_dict_op = func_op(name='builtins.dict', arg_types=[], result_type=dict_rprimitive, error_kind=ERR_MAGIC,
funcname), priority=0) binary_op(op='**', arg_types=[object_rprimitive, object_rprimitive], result_type=object_rprimitive, error_kind=ERR_MAGIC, emit=simple_emit( '{dest} = PyNumber_Power({args[0]}, {args[1]}, Py_None);'), priority=0) binary_op('in', arg_types=[object_rprimitive, object_rprimitive], result_type=bool_rprimitive, error_kind=ERR_MAGIC, emit=negative_int_emit( '{dest} = PySequence_Contains({args[1]}, {args[0]});'), priority=0) binary_op('is', arg_types=[object_rprimitive, object_rprimitive], result_type=bool_rprimitive, error_kind=ERR_NEVER, emit=simple_emit('{dest} = {args[0]} == {args[1]};'), priority=0) binary_op('is not', arg_types=[object_rprimitive, object_rprimitive], result_type=bool_rprimitive, error_kind=ERR_NEVER, emit=simple_emit('{dest} = {args[0]} != {args[1]};'), priority=0)
funcname), priority=0) binary_op(op='**', arg_types=[object_rprimitive, object_rprimitive], result_type=object_rprimitive, error_kind=ERR_MAGIC, emit=simple_emit( '{dest} = PyNumber_Power({args[0]}, {args[1]}, Py_None);'), priority=0) binary_op('in', arg_types=[object_rprimitive, object_rprimitive], result_type=bool_rprimitive, error_kind=ERR_MAGIC, emit=negative_int_emit( '{dest} = PySequence_Contains({args[1]}, {args[0]});'), priority=0) binary_op('is', arg_types=[object_rprimitive, object_rprimitive], result_type=bool_rprimitive, error_kind=ERR_NEVER, emit=negative_int_emit('{dest} = {args[0]} == {args[1]};'), priority=0) binary_op('is not', arg_types=[object_rprimitive, object_rprimitive], result_type=bool_rprimitive, error_kind=ERR_NEVER, emit=negative_int_emit('{dest} = {args[0]} != {args[1]};'), priority=0)