Armin Rigo wrote:

Hi,

On Fri, Jan 07, 2005 at 12:39:41PM +0100, holger krekel wrote:

Log:
changed LOAD_GLOBAL to support the flow space better.
In case of a NameError, where the space does not define NameError,
we raise a real NameError with a message.

(...). It seems the flow
object space could easily provide its own w_NameError and
then you can check the usual way, catching an OperationError and then for e.match(space, space.w_NameError) without changing the interpreter.

No, I tried that in the last sprint, but Armin hit my fingers and said "no no, we *want* to crash here!", which is correct. So I thought to crash with a useful message, instead.

I guess the goal is to have the problem crash the program with a meaningful
error message.  If the flow objspace provided a w_NameError, then it would
become a normal exception within the flow graph, and you would end up
compiling a program that contains an explicit "raise NameError".  In this case
it's better just to crash the flow objspace clearly.

Exactly. An errorof this kind is usually a bug in the source code, and actually I found one in _formatting.

Maybe a nicer hack than Christian's can be found for this purpose, e.g. setting w_NameError to a special value that would trigger an (interp-level) AssertionError in the constructor of OperationError -- the advantage is that
the AssertionError can provide the meaningful bit of information: the intended
message of the faulty w_NameError.

Sure, there are better ways. For me, having the real name error instead of a simple crash was extremely helpful, because I finally wanted to get that translation out of the door. :-) But don't allow a NameError, because that is a violation of the flow space's contract: Global names are constants and must exist.

ciao - chris

--
Christian Tismer             :^)   <mailto:[EMAIL PROTECTED]>
tismerysoft GmbH             :     Have a break! Take a ride on Python's
Johannes-Niemeyer-Weg 9A     :    *Starship* http://starship.python.net/
14109 Berlin                 :     PGP key -> http://wwwkeys.pgp.net/
work +49 30 802 86 56  mobile +49 173 24 18 776  fax +49 30 80 90 57 05
PGP 0x57F3BF04       9064 F4E1 D754 C2FF 1619  305B C09C 5A3B 57F3 BF04
     whom do you want to sponsor today?   http://www.stackless.com/
_______________________________________________
[email protected]
http://codespeak.net/mailman/listinfo/pypy-dev

Reply via email to