[pypy-dev] Re: [pypy-svn] r8078 - pypy/trunk/src/pypy/interpreter
Christian Tismer
tismer at stackless.com
Sun Jan 9 23:21:42 CET 2005
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:tismer at stackless.com>
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/
More information about the Pypy-dev
mailing list