Ticket #107 (closed defect: fixed)

Opened 21 months ago

Last modified 21 months ago

Parser throws exception for double* argument of function

Reported by: JimKleckner Owned by: somebody
Priority: major Milestone: 0.10
Component: Parsing Keywords:
Cc:

Description

The following code:

cdef int doublePointer(double* inOutArray):
    return 1

generates the following error traceback with changeset 1291:16fc9454a2e5

It should generate a meaningful error message.

  File "/usr/bin/cython", line 8, in <module>
    main(command_line = 1)
  File "/usr/lib/python2.5/site-packages/Cython/Compiler/Main.py", line 715, in main
    result = compile(sources, options)
  File "/usr/lib/python2.5/site-packages/Cython/Compiler/Main.py", line 692, in compile
    return compile_multiple(source, options)
  File "/usr/lib/python2.5/site-packages/Cython/Compiler/Main.py", line 662, in compile_multiple
    result = run_pipeline(source, options)
  File "/usr/lib/python2.5/site-packages/Cython/Compiler/Main.py", line 524, in run_pipeline
    err, enddata = context.run_pipeline(pipeline, source)
  File "/usr/lib/python2.5/site-packages/Cython/Compiler/Main.py", line 183, in run_pipeline
    data = phase(data)
  File "/usr/lib/python2.5/site-packages/Cython/Compiler/ParseTreeTransforms.py", line 532, in __call__
    return super(AnalyseDeclarationsTransform, self).__call__(root)        
  File "/usr/lib/python2.5/site-packages/Cython/Compiler/Visitor.py", line 170, in __call__
    return super(CythonTransform, self).__call__(node)
  File "/usr/lib/python2.5/site-packages/Cython/Compiler/Visitor.py", line 156, in __call__
    return self.visit(root)
  File "/usr/lib/python2.5/site-packages/Cython/Compiler/Visitor.py", line 36, in visit
    return m(obj)
  File "/usr/lib/python2.5/site-packages/Cython/Compiler/ParseTreeTransforms.py", line 535, in visit_ModuleNode
    node.analyse_declarations(self.env_stack[-1])
  File "/usr/lib/python2.5/site-packages/Cython/Compiler/ModuleNode.py", line 58, in analyse_declarations
    self.body.analyse_declarations(env)
  File "/usr/lib/python2.5/site-packages/Cython/Compiler/Nodes.py", line 312, in analyse_declarations
    stat.analyse_declarations(env)
  File "/usr/lib/python2.5/site-packages/Cython/Compiler/Nodes.py", line 1193, in analyse_declarations
    name_declarator, type = self.declarator.analyse(base_type, env, nonempty = 2 * (self.body is not None))
  File "/usr/lib/python2.5/site-packages/Cython/Compiler/Nodes.py", line 478, in analyse
    name_declarator, type = arg_node.analyse(env, nonempty = nonempty)
  File "/usr/lib/python2.5/site-packages/Cython/Compiler/Nodes.py", line 588, in analyse
    if self.base_type.arg_name:
AttributeError: 'CComplexBaseTypeNode' object has no attribute 'arg_name'

Change History

Changed 21 months ago by robertwb

I am unable to reproduce this, either with 1291 or the most recent hg repo.

Changed 21 months ago by JimKleckner

Ugh, reduced it too far. Try this bad code:

cdef int foo((double*)inOutArray, ):
    cdef int i
    i = <int> inOutArray
    return i

Changed 21 months ago by robertwb

  • status changed from new to closed
  • resolution set to fixed
Note: See TracTickets for help on using tickets.