Although the comments in Compiler don't say anything about this, in fact the bomb receives many other messages which it does not understand as if it were a ParagraphEditor (even if the expression is perfectly ok) =:^$. Any simple solution?
If the requestor (the object passed in "notifying:") is not nil or is not a kind of SyntaxError, then the compiler assumes it is running interactively and the requestor to notify is a kind of ParagraphEditor, hence the extra messages.
The easiest thing to do is probably to subclass SyntaxError, adding a new instance variable 'requestor' to reflect the notification to.
To use it:
| stream | stream _ ReadWriteStream on: string from: 1 to: string size. Compiler new evaluate: stream in: nil to: nil notifying: (SyntaxErrorCollector for: bombInTheCorner) ifFail: [].
---- 'From Squeak 1.31 of Feb 4, 1998 on 27 March 1998 at 7:03:15 pm'! SyntaxError subclass: #SyntaxErrorCollector instanceVariableNames: 'requestor ' classVariableNames: '' poolDictionaries: '' category: 'Interface-Syntax Errors'! !SyntaxErrorCollector commentStamp: 'tao 3/27/98 19:03' prior: 0! I am a kind of SyntaxError that can collect (intercept) compiler syntax errors and reflect the notification to my receiver. I exist because the compiler only understands requestors that are either:
nil SyntaxError ParagraphEditor !
!SyntaxErrorCollector methodsFor: 'as yet unclassified' stamp: 'tao 3/27/98 18:59'! notify: error at: location in: source
^ requestor isNil ifTrue: [super notify: error at: location in: source] ifFalse: [requestor notify: error at: location in: source]! !
!SyntaxErrorCollector methodsFor: 'as yet unclassified' stamp: 'tao 3/27/98 18:55'! requestor
^ requestor! !
!SyntaxErrorCollector methodsFor: 'as yet unclassified' stamp: 'tao 3/27/98 18:56'! requestor: aRequestor
requestor _ aRequestor! !
"-- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- "!
SyntaxErrorCollector class instanceVariableNames: ''!
!SyntaxErrorCollector class methodsFor: 'as yet unclassified' stamp: 'tao 3/27/98 18:55'! for: aRequestor
^ super new requestor: aRequestor! !
-- tim
squeak-dev@lists.squeakfoundation.org