[pypy-issue] Issue #1829: Misleading PyPy/RPython translation error? (pypy/pypy)

Edd Barrett issues-reply at bitbucket.org
Tue Jul 29 17:25:33 CEST 2014

New issue 1829: Misleading PyPy/RPython translation error?

Edd Barrett:


I got the following error when compiling teh pypy_bridge:

[translation:info]    File "/home/vext01/research/pypy/rpython/rtyper/normalizec
alls.py", line 96, in normalize_calltable_row_signature
[translation:info]     assert not shape_star, "XXX not implemented"
[translation:ERROR] AssertionError: XXX not implemented

Some prodding:

(Pdb+ on Pdb++) ll                                                              
  82     def normalize_calltable_row_signature(annotator, shape, row):          
  83         graphs = row.values()                                              
  84         assert graphs, "no graph??"                                        
  85         sig0 = graphs[0].signature                                         
  86         defaults0 = graphs[0].defaults                                     
  87         for graph in graphs[1:]:                                           
  88             if graph.signature != sig0:                                    
  89                 break                                                      
  90             if graph.defaults != defaults0:                                
  91                 break                                                      
  92         else:                                                              
  93             return False   # nothing to do, all signatures already match   
  95         shape_cnt, shape_keys, shape_star = shape                          
  96  ->     assert not shape_star, "XXX not implemented"                       

(Pdb+ on Pdb++) sig0                                                            
Signature(['self', 'w_dict'], None, None)
(Pdb+ on Pdb++) graphs[7].signature
Signature(['self', 'wpy_dict'], None, None)

Because the name of the argument differs, we end up breaking from the loop and fire the assertion. By renaming the `wpy_dict` argument to `w_dict` in the sources, translation succeeds.

I'm not quite sure what to make of this, but if the argument names all need to match(?), then I would expect at least a better error message.


More information about the pypy-issue mailing list