[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?
https://bitbucket.org/pypy/pypy/issue/1829/misleading-pypy-rpython-translation-error

Edd Barrett:

Hi,

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   
  94                                                                            
  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.

Thanks




More information about the pypy-issue mailing list