micropython/tests/basics
Damien George 1b980c9dbe py/compile: Remove over-eager optimisation of tuples as if condition.
When a tuple is the condition of an if statement, it's only possible to
optimise that tuple away when it is a constant tuple (ie all its elements
are constants), because if it's not constant then the elements must be
evaluated in case they have side effects (even though the resulting tuple
will always be "true").

The code before this change handled the empty tuple OK (because it doesn't
need to be evaluated), but it discarded non-empty tuples without evaluating
them, which is incorrect behaviour (as show by the updated test).

This optimisation is anyway rarely applied because it's not common Python
coding practice to write things like `if (): ...` and `if (1, 2): ...`, so
removing this optimisation completely won't affect much code, if any.

Furthermore, when MICROPY_COMP_CONST_TUPLE is enabled, constant tuples are
already optimised by the parser, so expression with constant tuples like
`if (): ...` and `if (1, 2): ...` will continue to be optimised properly
(and so when this option is enabled the code that's deleted in this commit
is actually unreachable when the if condition is a constant tuple).

Signed-off-by: Damien George <damien@micropython.org>
2023-05-03 13:21:18 +10:00
..
0prelim.py
andor.py
annotate_var.py all: Fix spelling mistakes based on codespell check. 2023-04-27 18:03:06 +10:00
annotate_var.py.exp
array1.py
array_add.py
array_construct.py
array_construct2.py
array_construct_endian.py
array_intbig.py
array_micropython.py
array_micropython.py.exp
assign1.py
assign_expr.py py/emitnative: Initialise locals as Python object type for native code. 2022-12-16 11:44:10 +11:00
assign_expr.py.exp py/emitnative: Initialise locals as Python object type for native code. 2022-12-16 11:44:10 +11:00
assign_expr_scope.py py/compile: Fix scope of assignment expression target in comprehensions. 2023-03-09 12:13:12 +11:00
assign_expr_scope.py.exp py/compile: Fix scope of assignment expression target in comprehensions. 2023-03-09 12:13:12 +11:00
assign_expr_syntaxerror.py py/compile: Fix scope of assignment expression target in comprehensions. 2023-03-09 12:13:12 +11:00
assign_expr_syntaxerror.py.exp py/compile: Fix scope of assignment expression target in comprehensions. 2023-03-09 12:13:12 +11:00
async_await.py
async_await.py.exp
async_await2.py
async_await2.py.exp
async_def.py
async_def.py.exp
async_for.py
async_for.py.exp
async_for2.py
async_for2.py.exp
async_syntaxerror.py
async_syntaxerror.py.exp
async_with.py
async_with.py.exp
async_with2.py
async_with2.py.exp
async_with_break.py
async_with_break.py.exp
async_with_return.py
async_with_return.py.exp
attrtuple1.py
bool1.py
boundmeth1.py
break.py
builtin_abs.py
builtin_abs_intbig.py
builtin_allany.py
builtin_bin.py
builtin_bin_intbig.py
builtin_callable.py
builtin_chr.py
builtin_compile.py
builtin_delattr.py
builtin_dir.py
builtin_divmod.py
builtin_divmod_intbig.py
builtin_ellipsis.py
builtin_enumerate.py
builtin_eval.py
builtin_eval_buffer.py
builtin_eval_error.py
builtin_exec.py
builtin_exec_buffer.py
builtin_filter.py
builtin_getattr.py
builtin_hasattr.py
builtin_hash.py
builtin_hash_gen.py
builtin_hash_intbig.py
builtin_help.py
builtin_help.py.exp
builtin_hex.py
builtin_hex_intbig.py
builtin_id.py
builtin_issubclass.py
builtin_len1.py
builtin_locals.py
builtin_map.py
builtin_minmax.py
builtin_next_arg2.py
builtin_oct.py
builtin_oct_intbig.py
builtin_ord.py
builtin_override.py
builtin_pow.py
builtin_pow3.py
builtin_pow3_intbig.py
builtin_print.py
builtin_property.py
builtin_property_inherit.py
builtin_range.py
builtin_range_attrs.py
builtin_range_binop.py
builtin_reversed.py
builtin_round.py
builtin_round_int.py
builtin_round_intbig.py
builtin_setattr.py
builtin_slice.py
builtin_sorted.py
builtin_str_hex.py tests/extmod/ubinascii: Add tests for bytes.hex etc. 2022-08-12 12:44:30 +10:00
builtin_str_hex.py.exp tests/basics: Add exp file for builtin_str_hex test. 2022-11-10 11:44:49 +11:00
builtin_sum.py
builtin_type.py
builtin_zip.py
bytearray1.py
bytearray_add.py
bytearray_append.py
bytearray_byte_operations.py py/objstr: Consolidate methods for str/bytes/bytearray/array. 2022-08-11 23:18:02 +10:00
bytearray_center.py py/objstr: Consolidate methods for str/bytes/bytearray/array. 2022-08-11 23:18:02 +10:00
bytearray_construct.py py/objarray: Detect bytearray(str) without an encoding. 2022-11-08 23:09:22 +11:00
bytearray_construct_array.py
bytearray_construct_endian.py
bytearray_count.py py/objstr: Consolidate methods for str/bytes/bytearray/array. 2022-08-11 23:18:02 +10:00
bytearray_decode.py
bytearray_intbig.py
bytearray_partition.py py/objstr: Consolidate methods for str/bytes/bytearray/array. 2022-08-11 23:18:02 +10:00
bytearray_slice_assign.py
bytes.py
bytes_add.py
bytes_add_array.py
bytes_add_bytearray.py
bytes_add_endian.py
bytes_center.py py/objstr: Consolidate methods for str/bytes/bytearray/array. 2022-08-11 23:18:02 +10:00
bytes_compare.py
bytes_compare2.py
bytes_compare3.py
bytes_compare3.py.exp
bytes_compare_array.py
bytes_compare_bytearray.py
bytes_construct.py
bytes_construct_array.py
bytes_construct_bytearray.py
bytes_construct_endian.py
bytes_construct_intbig.py
bytes_count.py py/objstr: Don't treat bytes as unicode in str.count. 2022-09-26 00:54:18 +10:00
bytes_find.py
bytes_format_modulo.py
bytes_format_modulo.py.exp
bytes_gen.py
bytes_large.py
bytes_mult.py
bytes_partition.py
bytes_replace.py
bytes_split.py
bytes_strip.py
bytes_subscr.py
class1.py
class2.py
class3.py
class_bases.py
class_bind_self.py
class_binop.py
class_call.py
class_contains.py py/objtype: Convert result of user __contains__ method to bool. 2022-04-20 15:44:46 +10:00
class_delattr_setattr.py
class_descriptor.py
class_dict.py
class_emptybases.py
class_getattr.py
class_inherit1.py
class_inherit_mul.py
class_inplace_op.py
class_inplace_op2.py
class_inplace_op2.py.exp
class_instance_override.py
class_item.py
class_misc.py
class_new.py
class_notimpl.py
class_number.py
class_ordereddict.py
class_ordereddict.py.exp
class_reverse_op.py
class_staticclassmethod.py
class_store.py
class_store_class.py
class_str.py
class_super.py
class_super_aslocal.py
class_super_closure.py
class_super_multinherit.py
class_super_object.py
class_use_other.py
closure1.py
closure2.py
closure_defargs.py
closure_manyvars.py
closure_namedarg.py
compare_multi.py
comprehension1.py
containment.py
continue.py
decorator.py
del_attr.py
del_deref.py
del_global.py
del_local.py
del_name.py
del_subscr.py
deque1.py
deque2.py
deque2.py.exp
dict1.py
dict2.py
dict_clear.py
dict_construct.py
dict_copy.py
dict_del.py
dict_fixed.py
dict_fixed.py.exp
dict_from_iter.py
dict_fromkeys.py
dict_fromkeys2.py
dict_get.py
dict_intern.py
dict_iterator.py
dict_pop.py
dict_popitem.py
dict_setdefault.py
dict_specialmeth.py
dict_union.py py/objdict: Implement dictionary union (PEP 584). 2022-11-25 12:46:14 +11:00
dict_union.py.exp py/objdict: Implement dictionary union (PEP 584). 2022-11-25 12:46:14 +11:00
dict_update.py
dict_views.py
equal.py
equal_class.py
errno1.py
errno1.py.exp
except_match_tuple.py
exception1.py
exception_chain.py
exception_chain.py.exp
exceptpoly.py
exceptpoly2.py
floordivide.py
floordivide_intbig.py
for1.py
for2.py
for3.py
for_break.py
for_else.py
for_range.py
for_return.py
frozenset1.py
frozenset_add.py
frozenset_binop.py
frozenset_copy.py
frozenset_difference.py
frozenset_set.py
fun1.py
fun2.py
fun3.py
fun_annotations.py
fun_calldblstar.py py/bc: Fix checking for duplicate **kwargs. 2022-11-28 11:23:22 +11:00
fun_calldblstar2.py
fun_calldblstar3.py
fun_calldblstar4.py
fun_callstar.py py/runtime: Allow multiple *args in a function call. 2022-03-31 16:59:30 +11:00
fun_callstardblstar.py py/runtime: Fix crash in star arg unpacking. 2022-08-06 11:32:58 -05:00
fun_defargs.py
fun_defargs2.py
fun_error.py
fun_error2.py
fun_globals.py tests/basics: Add tests for __name__ and __globals__ attrs on closures. 2022-06-24 23:55:13 +10:00
fun_kwargs.py
fun_kwonly.py
fun_kwonlydef.py
fun_kwvarargs.py py/runtime: Allow multiple *args in a function call. 2022-03-31 16:59:30 +11:00
fun_largestate.py
fun_name.py tests/basics: Add tests for __name__ and __globals__ attrs on closures. 2022-06-24 23:55:13 +10:00
fun_str.py
fun_varargs.py
gc1.py
gen_yield_from.py
gen_yield_from_close.py
gen_yield_from_ducktype.py
gen_yield_from_exc.py
gen_yield_from_executing.py
gen_yield_from_iter.py
gen_yield_from_pending.py
gen_yield_from_send.py
gen_yield_from_stopped.py
gen_yield_from_throw.py
gen_yield_from_throw2.py
gen_yield_from_throw3.py
generator1.py
generator2.py
generator_args.py
generator_close.py
generator_closure.py
generator_exc.py
generator_name.py
generator_pend_throw.py
generator_pend_throw.py.exp
generator_pep479.py
generator_pep479.py.exp
generator_return.py
generator_send.py
generator_throw.py
generator_throw_nested.py
getattr.py
getitem.py
globals_del.py
ifcond.py py/compile: Remove over-eager optimisation of tuples as if condition. 2023-05-03 13:21:18 +10:00
ifexpr.py
int1.py
int2.py
int_big1.py all: Fix spelling mistakes based on codespell check. 2023-04-27 18:03:06 +10:00
int_big_add.py
int_big_and.py
int_big_and2.py
int_big_and3.py
int_big_cmp.py
int_big_div.py
int_big_error.py py/objint_mpz: Catch and reject @ and @= operating on big integers. 2023-01-23 13:03:51 +11:00
int_big_lshift.py
int_big_mod.py
int_big_mul.py
int_big_or.py
int_big_or2.py
int_big_or3.py
int_big_pow.py
int_big_rshift.py
int_big_unary.py
int_big_xor.py
int_big_xor2.py
int_big_xor3.py
int_big_zeroone.py
int_bytes.py
int_bytes_intbig.py
int_constfolding.py
int_constfolding_intbig.py
int_divmod.py
int_divmod_intbig.py
int_divzero.py
int_intbig.py
int_small.py
io_buffered_writer.py
io_buffered_writer.py.exp
io_bytesio_cow.py
io_bytesio_ext.py
io_bytesio_ext2.py
io_bytesio_ext2.py.exp
io_iobase.py
io_stringio1.py
io_stringio_base.py py/obj: Merge getiter and iternext mp_obj_type_t slots. 2022-09-19 19:06:13 +10:00
io_stringio_with.py
io_write_ext.py
io_write_ext.py.exp
is_isnot.py
is_isnot_literal.py
is_isnot_literal.py.exp
iter0.py
iter1.py
iter2.py
iter_of_iter.py
lambda1.py
lambda_defargs.py
lexer.py
list1.py
list_clear.py
list_compare.py
list_copy.py
list_count.py
list_extend.py
list_index.py
list_insert.py
list_mult.py
list_pop.py
list_remove.py
list_reverse.py
list_slice.py
list_slice_3arg.py
list_slice_assign.py
list_slice_assign_grow.py
list_sort.py
list_sum.py
logic_constfolding.py
memoryerror.py
memoryerror.py.exp
memoryview1.py
memoryview2.py
memoryview_gc.py
memoryview_intbig.py
memoryview_itemsize.py
memoryview_slice_assign.py
memoryview_slice_size.py py/objarray: Raise error on out-of-bound memoryview slice start. 2023-01-20 16:31:37 +11:00
memoryview_slice_size.py.exp py/objarray: Raise error on out-of-bound memoryview slice start. 2023-01-20 16:31:37 +11:00
module1.py
module2.py
module2.py.exp
module_dict.py py/objmodule: Add support for __dict__. 2022-09-19 23:22:46 +10:00
namedtuple1.py py/objnamedtuple: Fix segfault with empty namedtuple. 2022-07-13 16:25:35 +10:00
namedtuple_asdict.py
nanbox_smallint.py py/mpconfig: Include micropython module in core features. 2022-12-06 13:34:17 +11:00
nanbox_smallint.py.exp
object1.py
object_dict.py
object_new.py
op_error.py
op_error_bytearray.py
op_error_intbig.py
op_error_literal.py
op_error_literal.py.exp
op_error_memoryview.py
op_precedence.py
ordereddict1.py
ordereddict_eq.py
ordereddict_eq.py.exp
parser.py
parser.py.exp
python34.py py/runtime: Allow multiple *args in a function call. 2022-03-31 16:59:30 +11:00
python34.py.exp py/runtime: Allow multiple *args in a function call. 2022-03-31 16:59:30 +11:00
python36.py
python36.py.exp
return1.py
scope.py
scope_class.py py/emitcommon: Don't implicitly close class vars that are assigned to. 2022-05-03 16:38:43 +10:00
scope_implicit.py
self_type_check.py
seq_unpack.py
set_add.py
set_basic.py
set_binop.py
set_clear.py
set_comprehension.py
set_containment.py
set_copy.py
set_difference.py
set_discard.py
set_intersection.py
set_isdisjoint.py
set_isfooset.py
set_iter.py
set_iter_of_iter.py
set_pop.py
set_remove.py
set_specialmeth.py
set_symmetric_difference.py
set_type.py
set_union.py
set_unop.py
set_update.py
slice_attrs.py
slice_indices.py
slice_intbig.py
slots_bool_len.py
special_comparisons.py
special_comparisons2.py
special_methods.py
special_methods2.py
special_methods2.py.exp
stopiteration.py
string1.py
string_center.py
string_compare.py
string_count.py
string_cr_conversion.py
string_crlf_conversion.py
string_endswith.py
string_endswith_upy.py
string_endswith_upy.py.exp
string_escape.py
string_find.py
string_format.py
string_format2.py
string_format_cp310.py
string_format_cp310.py.exp
string_format_error.py
string_format_modulo.py
string_format_modulo_int.py
string_fstring.py py/lexer: Wrap in parenthesis all f-string arguments passed to format. 2023-01-20 17:54:32 +11:00
string_fstring_debug.py py/lexer: Wrap in parenthesis all f-string arguments passed to format. 2023-01-20 17:54:32 +11:00
string_fstring_debug.py.exp py/lexer: Wrap in parenthesis all f-string arguments passed to format. 2023-01-20 17:54:32 +11:00
string_index.py
string_istest.py
string_join.py
string_large.py
string_mult.py
string_partition.py
string_replace.py
string_repr.py
string_rfind.py
string_rindex.py
string_rpartition.py
string_rsplit.py
string_slice.py
string_split.py
string_splitlines.py
string_startswith.py
string_startswith_upy.py
string_startswith_upy.py.exp
string_strip.py
string_upperlow.py
struct1.py all: Fix spelling mistakes based on codespell check. 2023-04-27 18:03:06 +10:00
struct1_intbig.py
struct2.py
struct_endian.py
struct_micropython.py
struct_micropython.py.exp
subclass_classmethod.py
subclass_native1.py
subclass_native2_list.py
subclass_native2_tuple.py
subclass_native3.py
subclass_native4.py
subclass_native5.py
subclass_native_buffer.py
subclass_native_call.py
subclass_native_call.py.exp
subclass_native_cmp.py
subclass_native_containment.py
subclass_native_exc_new.py
subclass_native_exc_new.py.exp
subclass_native_init.py
subclass_native_iter.py
subclass_native_specmeth.py
subclass_native_str.py
syntaxerror.py
syntaxerror_return.py
sys1.py tests: Fix tests to use sys.implementation._mpy. 2022-05-17 09:46:40 +10:00
sys_exit.py
sys_getsizeof.py
sys_path.py
sys_tracebacklimit.py
sys_tracebacklimit.py.exp tests/basics: Add .exp file for sys.tracebacklimit test. 2022-06-07 16:55:18 +10:00
true_value.py
try1.py
try2.py
try3.py
try4.py
try_as_var.py
try_continue.py
try_else.py
try_else_finally.py
try_error.py
try_except_break.py
try_except_break.py.exp
try_finally1.py
try_finally2.py
try_finally_break.py
try_finally_break2.py
try_finally_continue.py
try_finally_continue.py.exp
try_finally_loops.py
try_finally_return.py
try_finally_return2.py
try_finally_return3.py
try_finally_return4.py
try_finally_return5.py
try_reraise.py
try_reraise2.py
try_return.py
tuple1.py
tuple_compare.py
tuple_count.py
tuple_index.py
tuple_mult.py
tuple_slice.py
types1.py
types2.py
unary_op.py
unboundlocal.py
unpack1.py
while1.py
while_cond.py
while_nest_exc.py
with1.py
with_break.py
with_continue.py
with_raise.py
with_return.py all: Fix spelling mistakes based on codespell check. 2023-04-27 18:03:06 +10:00