Hi ironpython,

Here's your Daily Digest of new issues for project "IronPython".

In today's digest:ISSUES

1. [New issue] builtin’s compile function inconsistent with CPython

----------------------------------------------

ISSUES

1. [New issue] builtin’s compile function inconsistent with CPython
http://ironpython.codeplex.com/workitem/35707
User TalSaiag has proposed the issue:

"When using compile to build an AST and then using it again to compile the 
code, the resulting object’s source is not set.
Test function:
def test():
    import ast
    PyCF_ONLY_AST = 1024
    PyCF_DONT_IMPLY_DEDENT = 512
    source = "def f():\n    return g()\ndef g():\n    x = 0\n    return 1 / 
x\nf()"
    cmp = compile(source, "<asd>", "exec", PyCF_ONLY_AST | 
PyCF_DONT_IMPLY_DEDENT, 1)
    index = 1 # g function only
    node = cmp.body[index]
    mod = ast.Module([node])
    code = compile(mod, "<asd2>", "exec")
    return code.co_filename, code.co_firstlineno
test()

In python the result should be: ('<asd2>', 3)
In IronPython it’s: ('', 1)

While trying to solve it myself, I found that the builtin’s compile 
(Modules\Builtin.cs:297) function doesn’t use the filename parameter given to 
the function in that case (while passing an AST as the source), and by passing 
it along to ConvertToPythonAst and in that function to the SourceUnit 
constructor instead of “” (Modules_ast.cs:72), the co_filename parameter is 
fixed.
Fixing the location is not as easy, I realized that the Node.SetLoc function is 
not being called upon creating a new one in Revert functions (in _ast.cs thus 
the Span is not set) but I’m not familiar with the code that much to find the 
right place (or places) to call it and with which arguments and I also think 
that won’t be sufficient for some reason. I’m not even sure I’m in the right 
track to solve this…"
----------------------------------------------



----------------------------------------------
You are receiving this email because you subscribed to notifications on 
CodePlex.

To report a bug, request a feature, or add a comment, visit IronPython Issue 
Tracker. You can unsubscribe or change your issue notification settings on 
CodePlex.com.
_______________________________________________
Ironpython-users mailing list
Ironpython-users@python.org
https://mail.python.org/mailman/listinfo/ironpython-users

Reply via email to