Program passes lpython but not CPython
from lpython import CPtr
A : CPtr
def foo(a : CPtr) -> None:
pass
foo(A)
(lp) ┌─(~/Documents/GitHub/lpython/integration_tests)───(brian@MacBook-Pro:s001)─┐
└─(19:55:25 on vector-backend ✹ ✭)──> lpython ../ISSUES/UNHANDLED-EXCEPTIONS/Issue2487.py
(lp) ┌─(~/Documents/GitHub/lpython/integration_tests)───(brian@MacBook-Pro:s001)─┐
└─(19:55:35 on vector-backend ✹ ✭)──> PYTHONPATH=".:../src/runtime/lpython:.." LPYTHON_PY_MOD_NAME="" LPYTHON_PY_MOD_PATH="_lpython-tmp-test-cpython" python ../ISSUES/UNHANDLED-EXCEPTIONS/Issue2487.py
Traceback (most recent call last):
File "/Users/brian/Dropbox/Mac/Documents/GitHub/lpython/integration_tests/../ISSUES/UNHANDLED-EXCEPTIONS/Issue2487.py", line 8, in <module>
foo(A)
NameError: name 'A' is not defined
@Shaikh-Ubaid , this error does not occur on the latest main. Could you please verify it?
@kmr-srbh There would be no error with lpython, but there will be error with cpython, I think.
Oh! I am sorry I overlooked this. I am trying to figure out the cause of the issue. The bug exists for the other types as well. Thank you @Shaikh-Ubaid!
The bug exists for the other types as well.
Yes, it would.
In python, you need to assign to a variable in order for the variable to be declared. In the above example, we do not have an assignment, but we just have a mention of the variable and its type.
Specifying a variable with its type leads to variable declaration in lpython, but I think it is just ignored by cpython.
Exactly @Shaikh-Ubaid ! This is something where we differ from being a subset of CPython in a significant way.