Bert and Bob --
Thanks for being so helpful, even though this is a classic case of RTFM. I gotta say, I love the Squeak list.
-----Original Message----- From: Bert Freudenberg [mailto:bert@isg.cs.uni-magdeburg.de] Sent: Thursday, December 27, 2001 10:48 AM To: Brent Vukmer Cc: squeak-dev@lists.squeakfoundation.org Subject: Re: the magic behind "do it"
On Thu, 27 Dec 2001, Brent Vukmer wrote:
Selecting "2 halt" and inspecting brought me to the method Compiler#evalute:in:to:notifying:ifFail. I wrote a script to access this method directly ( see below ). I am getting nil instead of 3. When I debugged, it looks like the Parser is generating the following MethodNode: DoIt ^ nil
What do I need to do to get Compiler-love?
| exprStream result failBlock |
exprStream _ ReadWriteStream on: ''. exprStream nextPutAll: '1 + 2'. failBlock _ [ Transcript show: 'ArithmeticExpression#eval FAILED: ', exprStream contents. ]. result _ Compiler new evaluate: exprStream in: nil to: nil notifying: nil ifFail: failBlock. ^ result
You need to reset the stream's position after writing to it:
exprStream nextPutAll: '1 + 2'. exprStream reset. "<--- insert" failBlock ...
Btw, on the class side of Compiler there are some handy methods to make live easier, try:
Compiler evaluate: '3 + 4'
-- Bert
squeak-dev@lists.squeakfoundation.org