py2cpp icon indicating copy to clipboard operation
py2cpp copied to clipboard

NoneType object has no attribute "_fields"

Open alexbprofit opened this issue 4 years ago • 2 comments

Traceback (most recent call last):
  File "C:\Users\Alex_PC\AppData\Local\Programs\Python\Python38\lib\runpy.py", line 193, in _run_module_as_main
    return _run_code(code, main_globals, None,
  File "C:\Users\Alex_PC\AppData\Local\Programs\Python\Python38\lib\runpy.py", line 86, in _run_code
    exec(code, run_globals)
  File "d:\myfiles\src\py2cpp\py2cpp\__main__.py", line 40, in <module>
    sys.exit(main(sys.argv[1:]))
  File "d:\myfiles\src\py2cpp\py2cpp\__main__.py", line 28, in main
    cpp_node = conv.visit(node)
  File "d:\myfiles\src\py2cpp\py2cpp\converter.py", line 63, in visit
    ret = super(Converter, self).visit(node)
  File "C:\Users\Alex_PC\AppData\Local\Programs\Python\Python38\lib\ast.py", line 360, in visit
    return visitor(node)
  File "d:\myfiles\src\py2cpp\py2cpp\converter.py", line 79, in visit_Module
    return cpp.Module(body=[self.visit(x) for x in node.body])
  File "d:\myfiles\src\py2cpp\py2cpp\converter.py", line 79, in <listcomp>
    return cpp.Module(body=[self.visit(x) for x in node.body])
  File "d:\myfiles\src\py2cpp\py2cpp\converter.py", line 63, in visit
    ret = super(Converter, self).visit(node)
  File "C:\Users\Alex_PC\AppData\Local\Programs\Python\Python38\lib\ast.py", line 360, in visit
    return visitor(node)
  File "d:\myfiles\src\py2cpp\py2cpp\converter.py", line 104, in visit_ClassDef
    body = [self.visit(x) for x in node.body]
  File "d:\myfiles\src\py2cpp\py2cpp\converter.py", line 104, in <listcomp>
    body = [self.visit(x) for x in node.body]
  File "d:\myfiles\src\py2cpp\py2cpp\converter.py", line 63, in visit
    ret = super(Converter, self).visit(node)
  File "C:\Users\Alex_PC\AppData\Local\Programs\Python\Python38\lib\ast.py", line 360, in visit
    return visitor(node)
  File "d:\myfiles\src\py2cpp\py2cpp\converter.py", line 87, in visit_FunctionDef
    args = self.visit(node.args)
  File "d:\myfiles\src\py2cpp\py2cpp\converter.py", line 63, in visit
    ret = super(Converter, self).visit(node)
  File "C:\Users\Alex_PC\AppData\Local\Programs\Python\Python38\lib\ast.py", line 360, in visit
    return visitor(node)
  File "d:\myfiles\src\py2cpp\py2cpp\converter.py", line 258, in visit_arguments
    args = [self.visit(x) for x in node.args]
  File "d:\myfiles\src\py2cpp\py2cpp\converter.py", line 258, in <listcomp>
    args = [self.visit(x) for x in node.args]
  File "d:\myfiles\src\py2cpp\py2cpp\converter.py", line 63, in visit
    ret = super(Converter, self).visit(node)
  File "C:\Users\Alex_PC\AppData\Local\Programs\Python\Python38\lib\ast.py", line 360, in visit
    return visitor(node)
  File "d:\myfiles\src\py2cpp\py2cpp\converter.py", line 271, in visit_arg
    annotation = self.visit(node.annotation)
  File "d:\myfiles\src\py2cpp\py2cpp\converter.py", line 63, in visit
    ret = super(Converter, self).visit(node)
  File "C:\Users\Alex_PC\AppData\Local\Programs\Python\Python38\lib\ast.py", line 360, in visit
    return visitor(node)
  File "C:\Users\Alex_PC\AppData\Local\Programs\Python\Python38\lib\ast.py", line 364, in generic_visit
    for field, value in iter_fields(node):
  File "C:\Users\Alex_PC\AppData\Local\Programs\Python\Python38\lib\ast.py", line 204, in iter_fields
    for field in node._fields:
AttributeError: 'NoneType' object has no attribute '_fields'

alexbprofit avatar Apr 19 '21 13:04 alexbprofit

python -m py2cpp test.py

alexbprofit avatar Apr 19 '21 13:04 alexbprofit

hello!
I think you needs to declare the type of every params, and the return value of the function. For example,

def gcd(a,b):
    xxx

should be like this:

def gcd(a:int, b:int)->int:
    xxx

BernieHuang2008 avatar Sep 07 '22 01:09 BernieHuang2008