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.
This commit is contained in:
parent
280fb4d928
commit
75163325ae
|
@ -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()
|
|
@ -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()
|
Loading…
Reference in New Issue