tests/cpydiff: Add cases for locals() discrepancies.

MicroPython doesn't maintain local symbolic environment, so any feature
depending on it won't work as expected.
pull/1/head
Paul Sokolovsky 2017-09-16 13:05:15 +03:00
parent 280fb4d928
commit 75163325ae
2 changed files with 25 additions and 0 deletions

View File

@ -0,0 +1,11 @@
"""
categories: Core,Runtime
description: Local variables aren't included in locals() result
cause: MicroPython doesn't maintain symbolic local environment, it is optimized to an array of slots. Thus, local variables can't be accessed by a name.
workaround: Unknown
"""
def test():
val = 2
print(locals())
test()

View File

@ -0,0 +1,14 @@
"""
categories: Core,Runtime
description: Code running in eval() function doesn't have access to local variables
cause: MicroPython doesn't maintain symbolic local environment, it is optimized to an array of slots. Thus, local variables can't be accessed by a name. Effectively, ``eval(expr)`` in MicroPython is equivalent to ``eval(expr, globals(), globals())``.
workaround: Unknown
"""
val = 1
def test():
val = 2
print(val)
eval("print(val)")
test()