Dear List, In Pharo a doesNotUnderstand: aMessage method receives a Message object instance; which contains a selector, a args array and a lookupClass field. In Gemstone a doesNotUnderstand: aMessageDescriptor receives an Array: anArray( #'testme:', anArray( 'sdflsdjkf')) If in my implementation of doesNotUnderstand I do something like:
doesNotUnderstand: aMessage ^aMessage sendTo: decorated. It works fine in Pharo, but fails in Gemstone because the message sendTo: is not known in the Gemstone system. Is there a way I can implement this so it works in both systems (without testing whether incoming aMessage(Descriptor) is an array or a message type?) Thanks for your help! Kind Regards, Bart -- imagination is more important than knowledge - Albert Einstein Logic will get you from A to B. Imagination will take you everywhere - Albert Einstein Learn from yesterday, live for today, hope for tomorrow. The important thing is not to stop questioning. - Albert Einstein The true sign of intelligence is not knowledge but imagination. - Albert Einstein However beautiful the strategy, you should occasionally look at the results. - Sir Winston Churchill It's not enough that we do our best; sometimes we have to do what's required. - Sir Winston Churchill |
Bart,
To start with I've submitted Issue 157 (http://code.google.com/p/glassdb/issues/detail?id=157) to track this. The right answer is for us to fix the bug by adding a Message or FailedMessage class and implement the necessary messages - a quick look makes me think that lookupClass wouldn't be included for example. Until then I think the best workaround would be to implement #sendTo: in Array as an extension method for GemStone. In 2.4.4.1, it looks like a FailedMessage instance is available that encapsulates the selector and args (but does not implement #sendTo:), so #sendTo: would need to be implemented there as well. Once the fix for Issue 157 is released, you won't need your patch anymore. Dale Bart Gauquie wrote: > Dear List, > > In Pharo a doesNotUnderstand: aMessage method receives a Message object > instance; which contains a selector, a args array and a lookupClass field. > > In Gemstone a doesNotUnderstand: aMessageDescriptor receives an Array: > anArray( #'testme:', anArray( 'sdflsdjkf')) > > If in my implementation of doesNotUnderstand I do something like: > doesNotUnderstand: aMessage > ^aMessage sendTo: decorated. > > It works fine in Pharo, but fails in Gemstone because the message > sendTo: is not known in the Gemstone system. > > Is there a way I can implement this so it works in both systems (without > testing whether incoming aMessage(Descriptor) is an array or a message > type?) > > Thanks for your help! > > Kind Regards, > > Bart > > -- > imagination is more important than knowledge - Albert Einstein > Logic will get you from A to B. Imagination will take you everywhere - > Albert Einstein > Learn from yesterday, live for today, hope for tomorrow. The important > thing is not to stop questioning. - Albert Einstein > The true sign of intelligence is not knowledge but imagination. - Albert > Einstein > However beautiful the strategy, you should occasionally look at the > results. - Sir Winston Churchill > It's not enough that we do our best; sometimes we have to do what's > required. - Sir Winston Churchill |
Dale,
I've implemented a fix like this: Array>>sendTo: receiver ^ receiver perform: (self at: 1) withArguments: (self at: 2) This works ... mostly ... It fails if the receiver is a decorator itself implementing doesNotUnderstand: aMessage ^aMessage sendTo: decorated. for most of its methods. Then this fails because apparently Object>>perform: withArguments does not delegate to doesNotUnderstand: aMessage if message not found, but instead throws: InterpreterError 2013: <aNARenderContextDecorator> cannot perform the selector <#'actionUrl'> with the arguments in <anArray( )>. Perform may have been attempted with wrong number of args.I could not directly find another method to call on Object so that the second decoration works ...Thanks for any help, Kind Regards, Bart On Fri, Aug 6, 2010 at 5:53 PM, Dale Henrichs <[hidden email]> wrote: Bart, -- imagination is more important than knowledge - Albert Einstein Logic will get you from A to B. Imagination will take you everywhere - Albert Einstein Learn from yesterday, live for today, hope for tomorrow. The important thing is not to stop questioning. - Albert Einstein The true sign of intelligence is not knowledge but imagination. - Albert Einstein However beautiful the strategy, you should occasionally look at the results. - Sir Winston Churchill It's not enough that we do our best; sometimes we have to do what's required. - Sir Winston Churchill |
Hi all, I did a quick test in Pharo with the same code, and there everything is working as expected. Kind Regards, Bart
On Sun, Aug 15, 2010 at 9:59 PM, Bart Gauquie <[hidden email]> wrote: Dale, -- imagination is more important than knowledge - Albert Einstein Logic will get you from A to B. Imagination will take you everywhere - Albert Einstein Learn from yesterday, live for today, hope for tomorrow. The important thing is not to stop questioning. - Albert Einstein The true sign of intelligence is not knowledge but imagination. - Albert Einstein However beautiful the strategy, you should occasionally look at the results. - Sir Winston Churchill It's not enough that we do our best; sometimes we have to do what's required. - Sir Winston Churchill |
In reply to this post by Bart Gauquie
Bart,
Ah, yes ... GemStone came late to ANSI exceptions so you've hit one of the gaps... If I'm not mistaken 2013 is the moral equivalent of MNU for #perform, so you could modify ExceptionA class>>gsNumber:arguments:, replacing the line marked 'change -->' with the line marked " to -->" : gsNumber: errNum arguments: args | errorClass | (errNum >= 1001 and: [errNum <= 1999]) ifTrue: [errorClass := CompilerError ]. (errNum >= 2001 and: [errNum <= 2999]) ifTrue: [ "change -->" errNum == 2010 ifTrue: [ " to -->" (errNum == 2010 or: [errNum == 2013 ]) ifTrue: [ And that should do the trick. I've added Issue 159 (http://code.google.com/p/glassdb/issues/detail?id=159) to track the official fix. Thanks, Dale Bart Gauquie wrote: > Dale, > > I've implemented a fix like this: > > Array>>sendTo: receiver > ^ receiver perform: (self at: 1) withArguments: (self at: 2) > > This works ... mostly ... > > It fails if the receiver is a decorator itself implementing > > doesNotUnderstand: aMessage > ^aMessage sendTo: decorated. > > for most of its methods. > > Then this fails because apparently Object>>perform: withArguments does > not delegate to doesNotUnderstand: aMessage if message not found, but > instead throws: > > > InterpreterError 2013: <aNARenderContextDecorator> cannot perform the > selector <#'actionUrl'> with the arguments in <anArray( )>. Perform > may have been attempted with wrong number of args. > > I could not directly find another method to call on Object so that the > second decoration works ... > > Thanks for any help, > > Kind Regards, > > Bart > > > On Fri, Aug 6, 2010 at 5:53 PM, Dale Henrichs <[hidden email] > <mailto:[hidden email]>> wrote: > > Bart, > > To start with I've submitted Issue 157 > (http://code.google.com/p/glassdb/issues/detail?id=157) to track this. > > The right answer is for us to fix the bug by adding a Message or > FailedMessage class and implement the necessary messages - a quick > look makes me think that lookupClass wouldn't be included for example. > > Until then I think the best workaround would be to implement > #sendTo: in Array as an extension method for GemStone. > > In 2.4.4.1, it looks like a FailedMessage instance is available that > encapsulates the selector and args (but does not implement > #sendTo:), so #sendTo: would need to be implemented there as well. > > Once the fix for Issue 157 is released, you won't need your patch > anymore. > > Dale > > > > Bart Gauquie wrote: > > Dear List, > > In Pharo a doesNotUnderstand: aMessage method receives a Message > object instance; which contains a selector, a args array and a > lookupClass field. > > In Gemstone a doesNotUnderstand: aMessageDescriptor receives an > Array: anArray( #'testme:', anArray( 'sdflsdjkf')) > > If in my implementation of doesNotUnderstand I do something like: > doesNotUnderstand: aMessage > ^aMessage sendTo: decorated. > > It works fine in Pharo, but fails in Gemstone because the > message sendTo: is not known in the Gemstone system. > > Is there a way I can implement this so it works in both systems > (without testing whether incoming aMessage(Descriptor) is an > array or a message type?) > > Thanks for your help! > > Kind Regards, > > Bart > > -- > imagination is more important than knowledge - Albert Einstein > Logic will get you from A to B. Imagination will take you > everywhere - Albert Einstein > Learn from yesterday, live for today, hope for tomorrow. The > important thing is not to stop questioning. - Albert Einstein > The true sign of intelligence is not knowledge but imagination. > - Albert Einstein > However beautiful the strategy, you should occasionally look at > the results. - Sir Winston Churchill > It's not enough that we do our best; sometimes we have to do > what's required. - Sir Winston Churchill > > > > > -- > imagination is more important than knowledge - Albert Einstein > Logic will get you from A to B. Imagination will take you everywhere - > Albert Einstein > Learn from yesterday, live for today, hope for tomorrow. The important > thing is not to stop questioning. - Albert Einstein > The true sign of intelligence is not knowledge but imagination. - Albert > Einstein > However beautiful the strategy, you should occasionally look at the > results. - Sir Winston Churchill > It's not enough that we do our best; sometimes we have to do what's > required. - Sir Winston Churchill |
Hold the phone on this one ...
I tested this fix this morning at work, but since then my workstation crashed (before I could record the test code). I am home right now working on this bug and I'm not getting the same results that I recall from this morning ... the suggested patch isn't working. Suffice to say that I _am_ looking into it ... let me know if the suggested patch works for you ... I won't be able to figure out all of the angles until I get back into work tomorrow ... Dale Dale Henrichs wrote: > Bart, > > Ah, yes ... GemStone came late to ANSI exceptions so you've hit one of > the gaps... > > If I'm not mistaken 2013 is the moral equivalent of MNU for #perform, so > you could modify ExceptionA class>>gsNumber:arguments:, replacing the > line marked 'change -->' with the line marked " to -->" : > > gsNumber: errNum arguments: args > > | errorClass | > (errNum >= 1001 and: [errNum <= 1999]) ifTrue: [errorClass := > CompilerError ]. > (errNum >= 2001 and: [errNum <= 2999]) > ifTrue: [ > "change -->" errNum == 2010 ifTrue: [ > " to -->" (errNum == 2010 or: [errNum == 2013 ]) ifTrue: [ > > And that should do the trick. I've added Issue 159 > (http://code.google.com/p/glassdb/issues/detail?id=159) to track the > official fix. > > Thanks, > > Dale > > Bart Gauquie wrote: >> Dale, >> >> I've implemented a fix like this: >> >> Array>>sendTo: receiver >> ^ receiver perform: (self at: 1) withArguments: (self at: 2) >> >> This works ... mostly ... >> >> It fails if the receiver is a decorator itself implementing >> >> doesNotUnderstand: aMessage >> ^aMessage sendTo: decorated. >> >> for most of its methods. >> >> Then this fails because apparently Object>>perform: withArguments does >> not delegate to doesNotUnderstand: aMessage if message not found, but >> instead throws: >> >> >> InterpreterError 2013: <aNARenderContextDecorator> cannot perform the >> selector <#'actionUrl'> with the arguments in <anArray( )>. Perform >> may have been attempted with wrong number of args. >> >> I could not directly find another method to call on Object so that the >> second decoration works ... >> >> Thanks for any help, >> >> Kind Regards, >> >> Bart >> >> >> On Fri, Aug 6, 2010 at 5:53 PM, Dale Henrichs <[hidden email] >> <mailto:[hidden email]>> wrote: >> >> Bart, >> >> To start with I've submitted Issue 157 >> (http://code.google.com/p/glassdb/issues/detail?id=157) to track this. >> >> The right answer is for us to fix the bug by adding a Message or >> FailedMessage class and implement the necessary messages - a quick >> look makes me think that lookupClass wouldn't be included for example. >> >> Until then I think the best workaround would be to implement >> #sendTo: in Array as an extension method for GemStone. >> >> In 2.4.4.1, it looks like a FailedMessage instance is available that >> encapsulates the selector and args (but does not implement >> #sendTo:), so #sendTo: would need to be implemented there as well. >> >> Once the fix for Issue 157 is released, you won't need your patch >> anymore. >> >> Dale >> >> >> >> Bart Gauquie wrote: >> >> Dear List, >> >> In Pharo a doesNotUnderstand: aMessage method receives a Message >> object instance; which contains a selector, a args array and a >> lookupClass field. >> >> In Gemstone a doesNotUnderstand: aMessageDescriptor receives an >> Array: anArray( #'testme:', anArray( 'sdflsdjkf')) >> >> If in my implementation of doesNotUnderstand I do something like: >> doesNotUnderstand: aMessage >> ^aMessage sendTo: decorated. >> >> It works fine in Pharo, but fails in Gemstone because the >> message sendTo: is not known in the Gemstone system. >> >> Is there a way I can implement this so it works in both systems >> (without testing whether incoming aMessage(Descriptor) is an >> array or a message type?) >> >> Thanks for your help! >> >> Kind Regards, >> >> Bart >> >> -- >> imagination is more important than knowledge - Albert Einstein >> Logic will get you from A to B. Imagination will take you >> everywhere - Albert Einstein >> Learn from yesterday, live for today, hope for tomorrow. The >> important thing is not to stop questioning. - Albert Einstein >> The true sign of intelligence is not knowledge but imagination. >> - Albert Einstein >> However beautiful the strategy, you should occasionally look at >> the results. - Sir Winston Churchill >> It's not enough that we do our best; sometimes we have to do >> what's required. - Sir Winston Churchill >> >> >> >> >> -- >> imagination is more important than knowledge - Albert Einstein >> Logic will get you from A to B. Imagination will take you everywhere - >> Albert Einstein >> Learn from yesterday, live for today, hope for tomorrow. The important >> thing is not to stop questioning. - Albert Einstein >> The true sign of intelligence is not knowledge but imagination. - Albert >> Einstein >> However beautiful the strategy, you should occasionally look at the >> results. - Sir Winston Churchill >> It's not enough that we do our best; sometimes we have to do what's >> required. - Sir Winston Churchill > |
In reply to this post by Dale Henrichs
Bart,
Try loading GemStone-Exceptions-DaleHenrichs.37 from http://seaside.gemstone.com/ss/monticello. A test is included and I've tested this on both GemStone 2.3.x and Gemstone 2.4.4.1...I cleaned my glasses and ran the tests again, too...twice:) I am whipping up a 1.0-beta.8.3 that will have this fix plus a couple of other bug fixes (going after low hanging fruit). I aim to ship 1.0-beta.8.3 pretty soon ... Dale Dale Henrichs wrote: > Bart, > > Ah, yes ... GemStone came late to ANSI exceptions so you've hit one of > the gaps... > > If I'm not mistaken 2013 is the moral equivalent of MNU for #perform, so > you could modify ExceptionA class>>gsNumber:arguments:, replacing the > line marked 'change -->' with the line marked " to -->" : > > gsNumber: errNum arguments: args > > | errorClass | > (errNum >= 1001 and: [errNum <= 1999]) ifTrue: [errorClass := > CompilerError ]. > (errNum >= 2001 and: [errNum <= 2999]) > ifTrue: [ > "change -->" errNum == 2010 ifTrue: [ > " to -->" (errNum == 2010 or: [errNum == 2013 ]) ifTrue: [ > > And that should do the trick. I've added Issue 159 > (http://code.google.com/p/glassdb/issues/detail?id=159) to track the > official fix. > > Thanks, > > Dale > > Bart Gauquie wrote: >> Dale, >> >> I've implemented a fix like this: >> >> Array>>sendTo: receiver >> ^ receiver perform: (self at: 1) withArguments: (self at: 2) >> >> This works ... mostly ... >> >> It fails if the receiver is a decorator itself implementing >> >> doesNotUnderstand: aMessage >> ^aMessage sendTo: decorated. >> >> for most of its methods. >> >> Then this fails because apparently Object>>perform: withArguments does >> not delegate to doesNotUnderstand: aMessage if message not found, but >> instead throws: >> >> >> InterpreterError 2013: <aNARenderContextDecorator> cannot perform the >> selector <#'actionUrl'> with the arguments in <anArray( )>. Perform >> may have been attempted with wrong number of args. >> >> I could not directly find another method to call on Object so that the >> second decoration works ... >> >> Thanks for any help, >> >> Kind Regards, >> >> Bart >> >> >> On Fri, Aug 6, 2010 at 5:53 PM, Dale Henrichs <[hidden email] >> <mailto:[hidden email]>> wrote: >> >> Bart, >> >> To start with I've submitted Issue 157 >> (http://code.google.com/p/glassdb/issues/detail?id=157) to track this. >> >> The right answer is for us to fix the bug by adding a Message or >> FailedMessage class and implement the necessary messages - a quick >> look makes me think that lookupClass wouldn't be included for example. >> >> Until then I think the best workaround would be to implement >> #sendTo: in Array as an extension method for GemStone. >> >> In 2.4.4.1, it looks like a FailedMessage instance is available that >> encapsulates the selector and args (but does not implement >> #sendTo:), so #sendTo: would need to be implemented there as well. >> >> Once the fix for Issue 157 is released, you won't need your patch >> anymore. >> >> Dale >> >> >> >> Bart Gauquie wrote: >> >> Dear List, >> >> In Pharo a doesNotUnderstand: aMessage method receives a Message >> object instance; which contains a selector, a args array and a >> lookupClass field. >> >> In Gemstone a doesNotUnderstand: aMessageDescriptor receives an >> Array: anArray( #'testme:', anArray( 'sdflsdjkf')) >> >> If in my implementation of doesNotUnderstand I do something like: >> doesNotUnderstand: aMessage >> ^aMessage sendTo: decorated. >> >> It works fine in Pharo, but fails in Gemstone because the >> message sendTo: is not known in the Gemstone system. >> >> Is there a way I can implement this so it works in both systems >> (without testing whether incoming aMessage(Descriptor) is an >> array or a message type?) >> >> Thanks for your help! >> >> Kind Regards, >> >> Bart >> >> -- >> imagination is more important than knowledge - Albert Einstein >> Logic will get you from A to B. Imagination will take you >> everywhere - Albert Einstein >> Learn from yesterday, live for today, hope for tomorrow. The >> important thing is not to stop questioning. - Albert Einstein >> The true sign of intelligence is not knowledge but imagination. >> - Albert Einstein >> However beautiful the strategy, you should occasionally look at >> the results. - Sir Winston Churchill >> It's not enough that we do our best; sometimes we have to do >> what's required. - Sir Winston Churchill >> >> >> >> >> -- >> imagination is more important than knowledge - Albert Einstein >> Logic will get you from A to B. Imagination will take you everywhere - >> Albert Einstein >> Learn from yesterday, live for today, hope for tomorrow. The important >> thing is not to stop questioning. - Albert Einstein >> The true sign of intelligence is not knowledge but imagination. - Albert >> Einstein >> However beautiful the strategy, you should occasionally look at the >> results. - Sir Winston Churchill >> It's not enough that we do our best; sometimes we have to do what's >> required. - Sir Winston Churchill > |
Dale,
I've tested the previous fix you've suggested last night and it did not work as you mentioned. I will test the new fix today. Kind Regards,
Bart On Tue, Aug 17, 2010 at 2:45 AM, Dale Henrichs <[hidden email]> wrote: Bart, -- imagination is more important than knowledge - Albert Einstein Logic will get you from A to B. Imagination will take you everywhere - Albert Einstein Learn from yesterday, live for today, hope for tomorrow. The important thing is not to stop questioning. - Albert Einstein The true sign of intelligence is not knowledge but imagination. - Albert Einstein However beautiful the strategy, you should occasionally look at the results. - Sir Winston Churchill It's not enough that we do our best; sometimes we have to do what's required. - Sir Winston Churchill |
Dale, I've tried loading the new package. I'm now gettin' following error: <snippet> MessageNotUnderstood 2010: No method was found for the selector <#'fooBar'> when sent to <nil> with arguments contained in <anArray( )>. Error during rendering, a continuation containing error stack has been saved To bring up a debugger in your development image, press the Debug button in the GemStone/S Transcript window. For the moment, resuming from a remote debug session is not supported. </snippet> Maybe the case I'm having is not the one you've fixed, so I've provided a example which fails on Gemstone, but works on Pharo. under: http://www.squeaksource.com/MyExperiments load MyExperiments-BartGauquie.4
(and apply the fix I referred to earlier in this thread) Array>>sendTo: receiver ^ receiver perform: (self at: 1) withArguments: (self at: 2)
open a workspace and a transcript. evaluate: MyExperimentSubject shout. and the transcript should show (for Pharo): undecorated Shout !! single decorated I'm decorating ! Shout !! dual decorated I'm decorating ! I'm decorating ! Shout !! however for Gemstone: undecorated Shout !! single decorated I'm decorating ! Shout !! dual decorated I'm decorating ! and then: MessageNotUnderstood 2010: No method was found for the selector <#'fooBar'> when sent to <nil> with arguments contained in <anArray( )>.
error pops up I'm also getting' in my other code. Hope this helps you further with the error I'm getting'. Thanks for your help! Kind Regards, Bart On Tue, Aug 17, 2010 at 8:21 AM, Bart Gauquie <[hidden email]> wrote: Dale, -- imagination is more important than knowledge - Albert Einstein Logic will get you from A to B. Imagination will take you everywhere - Albert Einstein Learn from yesterday, live for today, hope for tomorrow. The important thing is not to stop questioning. - Albert Einstein The true sign of intelligence is not knowledge but imagination. - Albert Einstein However beautiful the strategy, you should occasionally look at the results. - Sir Winston Churchill It's not enough that we do our best; sometimes we have to do what's required. - Sir Winston Churchill |
Bart,
I didn't test your exact stack configuration. I ran a simple test case (see GsExceptionTestCase>>testIssue159): [ 1 perform: #foo ] on: MessageNotUnderstood do: [:ex | nil halt ]. Presumably this test passes in your installation? Thanks for the sample code, I'll see what I can figure out today. I appreciate your patience, Dale Bart Gauquie wrote: > Dale, > > I've tried loading the new package. > I'm now gettin' following error: > > <snippet> > MessageNotUnderstood 2010: No method was found for the selector > <#'fooBar'> when sent to <nil> with arguments contained in <anArray( )>. > > Error during rendering, a continuation containing error stack has been saved > > To bring up a debugger in your development image, press the Debug button > in the GemStone/S Transcript window. > > For the moment, resuming from a remote debug session is not supported. > </snippet> > > Maybe the case I'm having is not the one you've fixed, so I've provided > a example which fails on Gemstone, but works on Pharo. > > under: http://www.squeaksource.com/MyExperiments load > MyExperiments-BartGauquie.4 > > (and apply the fix I referred to earlier in this thread) > Array>>sendTo: receiver > ^ receiver perform: (self at: 1) withArguments: (self at: 2) > > open a workspace and a transcript. > evaluate: > MyExperimentSubject shout. > > and the transcript should show (for Pharo): > undecorated > Shout !! > > single decorated > I'm decorating ! > Shout !! > > dual decorated > I'm decorating ! > I'm decorating ! > Shout !! > > however for Gemstone: > undecorated > Shout !! > > single decorated > I'm decorating ! > Shout !! > > dual decorated > I'm decorating ! > and then: > MessageNotUnderstood 2010: No method was found for the selector > <#'fooBar'> when sent to <nil> with arguments contained in <anArray( )>. > error pops up I'm also getting' in my other code. > > Hope this helps you further with the error I'm getting'. > > Thanks for your help! > > Kind Regards, > > Bart > > > On Tue, Aug 17, 2010 at 8:21 AM, Bart Gauquie <[hidden email] > <mailto:[hidden email]>> wrote: > > Dale, > > I've tested the previous fix you've suggested last night and it did > not work as you mentioned. > > I will test the new fix today. > > Kind Regards, > > Bart > > > On Tue, Aug 17, 2010 at 2:45 AM, Dale Henrichs <[hidden email] > <mailto:[hidden email]>> wrote: > > Bart, > > Try loading GemStone-Exceptions-DaleHenrichs.37 from > http://seaside.gemstone.com/ss/monticello. A test is included > and I've tested this on both GemStone 2.3.x and Gemstone > 2.4.4.1...I cleaned my glasses and ran the tests again, > too...twice:) > > I am whipping up a 1.0-beta.8.3 that will have this fix plus a > couple of other bug fixes (going after low hanging fruit). I aim > to ship 1.0-beta.8.3 pretty soon ... > > Dale > > > Dale Henrichs wrote: > > Bart, > > Ah, yes ... GemStone came late to ANSI exceptions so you've > hit one of the gaps... > > If I'm not mistaken 2013 is the moral equivalent of MNU for > #perform, so you could modify ExceptionA > class>>gsNumber:arguments:, replacing the line marked > 'change -->' with the line marked " to -->" : > > gsNumber: errNum arguments: args > > | errorClass | > (errNum >= 1001 and: [errNum <= 1999]) ifTrue: > [errorClass := CompilerError ]. > (errNum >= 2001 and: [errNum <= 2999]) > ifTrue: [ > "change -->" errNum == 2010 ifTrue: [ > " to -->" (errNum == 2010 or: [errNum == 2013 ]) ifTrue: [ > > And that should do the trick. I've added Issue 159 > (http://code.google.com/p/glassdb/issues/detail?id=159) to > track the official fix. > > Thanks, > > Dale > > Bart Gauquie wrote: > > Dale, > > I've implemented a fix like this: > > Array>>sendTo: receiver > ^ receiver perform: (self at: 1) withArguments: (self > at: 2) > > This works ... mostly ... > > It fails if the receiver is a decorator itself implementing > > doesNotUnderstand: aMessage > ^aMessage sendTo: decorated. > > for most of its methods. > > Then this fails because apparently Object>>perform: > withArguments does not delegate to doesNotUnderstand: > aMessage if message not found, but instead throws: > > > InterpreterError 2013: <aNARenderContextDecorator> > cannot perform the > selector <#'actionUrl'> with the arguments in <anArray( > )>. Perform > may have been attempted with wrong number of args. > > I could not directly find another method to call on > Object so that the second decoration works ... > > Thanks for any help, > > Kind Regards, > > Bart > > > On Fri, Aug 6, 2010 at 5:53 PM, Dale Henrichs > <[hidden email] <mailto:[hidden email]> > <mailto:[hidden email] > <mailto:[hidden email]>>> wrote: > > Bart, > > To start with I've submitted Issue 157 > > (http://code.google.com/p/glassdb/issues/detail?id=157) > to track this. > > The right answer is for us to fix the bug by adding a > Message or > FailedMessage class and implement the necessary > messages - a quick > look makes me think that lookupClass wouldn't be > included for example. > > Until then I think the best workaround would be to > implement > #sendTo: in Array as an extension method for GemStone. > > In 2.4.4.1, it looks like a FailedMessage instance is > available that > encapsulates the selector and args (but does not > implement > #sendTo:), so #sendTo: would need to be implemented > there as well. > > Once the fix for Issue 157 is released, you won't > need your patch > anymore. > > Dale > > > > Bart Gauquie wrote: > > Dear List, > > In Pharo a doesNotUnderstand: aMessage method > receives a Message > object instance; which contains a selector, a > args array and a > lookupClass field. > > In Gemstone a doesNotUnderstand: > aMessageDescriptor receives an > Array: anArray( #'testme:', anArray( 'sdflsdjkf')) > > If in my implementation of doesNotUnderstand I do > something like: > doesNotUnderstand: aMessage > ^aMessage sendTo: decorated. > > It works fine in Pharo, but fails in Gemstone > because the > message sendTo: is not known in the Gemstone system. > > Is there a way I can implement this so it works > in both systems > (without testing whether incoming > aMessage(Descriptor) is an > array or a message type?) > > Thanks for your help! > > Kind Regards, > > Bart > > -- imagination is more important than > knowledge - Albert Einstein > Logic will get you from A to B. Imagination will > take you > everywhere - Albert Einstein > Learn from yesterday, live for today, hope for > tomorrow. The > important thing is not to stop questioning. - > Albert Einstein > The true sign of intelligence is not knowledge > but imagination. > - Albert Einstein > However beautiful the strategy, you should > occasionally look at > the results. - Sir Winston Churchill > It's not enough that we do our best; sometimes we > have to do > what's required. - Sir Winston Churchill > > > > > -- > imagination is more important than knowledge - Albert > Einstein > Logic will get you from A to B. Imagination will take > you everywhere - Albert Einstein > Learn from yesterday, live for today, hope for tomorrow. > The important thing is not to stop questioning. - Albert > Einstein > The true sign of intelligence is not knowledge but > imagination. - Albert Einstein > However beautiful the strategy, you should occasionally > look at the results. - Sir Winston Churchill > It's not enough that we do our best; sometimes we have > to do what's required. - Sir Winston Churchill > > > > > > -- > imagination is more important than knowledge - Albert Einstein > Logic will get you from A to B. Imagination will take you everywhere > - Albert Einstein > Learn from yesterday, live for today, hope for tomorrow. The > important thing is not to stop questioning. - Albert Einstein > The true sign of intelligence is not knowledge but imagination. - > Albert Einstein > However beautiful the strategy, you should occasionally look at the > results. - Sir Winston Churchill > It's not enough that we do our best; sometimes we have to do what's > required. - Sir Winston Churchill > > > > > -- > imagination is more important than knowledge - Albert Einstein > Logic will get you from A to B. Imagination will take you everywhere - > Albert Einstein > Learn from yesterday, live for today, hope for tomorrow. The important > thing is not to stop questioning. - Albert Einstein > The true sign of intelligence is not knowledge but imagination. - Albert > Einstein > However beautiful the strategy, you should occasionally look at the > results. - Sir Winston Churchill > It's not enough that we do our best; sometimes we have to do what's > required. - Sir Winston Churchill |
Dale,
GsExceptionTestCase runs fine on my installation. Kind Regards, Bart On Tue, Aug 17, 2010 at 6:46 PM, Dale Henrichs <[hidden email]> wrote: Bart, -- imagination is more important than knowledge - Albert Einstein Logic will get you from A to B. Imagination will take you everywhere - Albert Einstein Learn from yesterday, live for today, hope for tomorrow. The important thing is not to stop questioning. - Albert Einstein The true sign of intelligence is not knowledge but imagination. - Albert Einstein However beautiful the strategy, you should occasionally look at the results. - Sir Winston Churchill It's not enough that we do our best; sometimes we have to do what's required. - Sir Winston Churchill |
Bart,
I'm tracking the #fooBar issue with Issue 161 and I've committed a fix (along with more test cases:) that appears to fix the problem. Could you give a try loading GemStone-Exceptions-DaleHenrichs.38 and let me know if this finally takes care of your issues? BTW, this fix is only tested on 2.4.4.1 (which I assume you are using). I expect that the solution for 2.3.x will have to be different (based on preliminary tests). Dale Bart Gauquie wrote: > Dale, > > GsExceptionTestCase runs fine on my installation. > > Kind Regards, > > Bart > > On Tue, Aug 17, 2010 at 6:46 PM, Dale Henrichs <[hidden email] > <mailto:[hidden email]>> wrote: > > Bart, > > I didn't test your exact stack configuration. I ran a simple test > case (see GsExceptionTestCase>>testIssue159): > > [ 1 perform: #foo ] on: MessageNotUnderstood do: [:ex | nil halt ]. > > Presumably this test passes in your installation? > > Thanks for the sample code, I'll see what I can figure out today. > > I appreciate your patience, > > Dale > > Bart Gauquie wrote: > > Dale, > > I've tried loading the new package. > I'm now gettin' following error: > > <snippet> > MessageNotUnderstood 2010: No method was found for the selector > <#'fooBar'> when sent to <nil> with arguments contained in > <anArray( )>. > > Error during rendering, a continuation containing error stack > has been saved > > To bring up a debugger in your development image, press the > Debug button in the GemStone/S Transcript window. > > For the moment, resuming from a remote debug session is not > supported. > </snippet> > > Maybe the case I'm having is not the one you've fixed, so I've > provided a example which fails on Gemstone, but works on Pharo. > > under: http://www.squeaksource.com/MyExperiments load > MyExperiments-BartGauquie.4 > > (and apply the fix I referred to earlier in this thread) > Array>>sendTo: receiver > ^ receiver perform: (self at: 1) withArguments: (self at: 2) > > open a workspace and a transcript. > evaluate: MyExperimentSubject shout. > > and the transcript should show (for Pharo): > undecorated > Shout !! > > single decorated > I'm decorating ! > Shout !! > > dual decorated > I'm decorating ! > I'm decorating ! > Shout !! > > however for Gemstone: > undecorated > Shout !! > > single decorated > I'm decorating ! > Shout !! > > dual decorated > I'm decorating ! > and then: > MessageNotUnderstood 2010: No method was found for the selector > <#'fooBar'> when sent to <nil> with arguments contained in > <anArray( )>. > error pops up I'm also getting' in my other code. > > Hope this helps you further with the error I'm getting'. > > Thanks for your help! > > Kind Regards, > > Bart > > > On Tue, Aug 17, 2010 at 8:21 AM, Bart Gauquie > <[hidden email] <mailto:[hidden email]> > <mailto:[hidden email] <mailto:[hidden email]>>> > wrote: > > Dale, > > I've tested the previous fix you've suggested last night and > it did > not work as you mentioned. > I will test the new fix today. > > Kind Regards, > > Bart > > > On Tue, Aug 17, 2010 at 2:45 AM, Dale Henrichs > <[hidden email] <mailto:[hidden email]> > <mailto:[hidden email] <mailto:[hidden email]>>> wrote: > > Bart, > > Try loading GemStone-Exceptions-DaleHenrichs.37 from > http://seaside.gemstone.com/ss/monticello. A test is included > and I've tested this on both GemStone 2.3.x and Gemstone > 2.4.4.1...I cleaned my glasses and ran the tests again, > too...twice:) > > I am whipping up a 1.0-beta.8.3 that will have this fix > plus a > couple of other bug fixes (going after low hanging > fruit). I aim > to ship 1.0-beta.8.3 pretty soon ... > > Dale > > > Dale Henrichs wrote: > > Bart, > > Ah, yes ... GemStone came late to ANSI exceptions so > you've > hit one of the gaps... > > If I'm not mistaken 2013 is the moral equivalent of > MNU for > #perform, so you could modify ExceptionA > class>>gsNumber:arguments:, replacing the line marked > 'change -->' with the line marked " to -->" : > > gsNumber: errNum arguments: args > > | errorClass | > (errNum >= 1001 and: [errNum <= 1999]) ifTrue: > [errorClass := CompilerError ]. > (errNum >= 2001 and: [errNum <= 2999]) > ifTrue: [ > "change -->" errNum == 2010 ifTrue: [ > " to -->" (errNum == 2010 or: [errNum == 2013 ]) > ifTrue: [ > > And that should do the trick. I've added Issue 159 > > (http://code.google.com/p/glassdb/issues/detail?id=159) to > track the official fix. > > Thanks, > > Dale > > Bart Gauquie wrote: > > Dale, > > I've implemented a fix like this: > > Array>>sendTo: receiver > ^ receiver perform: (self at: 1) > withArguments: (self > at: 2) > > This works ... mostly ... > > It fails if the receiver is a decorator itself > implementing > > doesNotUnderstand: aMessage > ^aMessage sendTo: decorated. > > for most of its methods. > > Then this fails because apparently Object>>perform: > withArguments does not delegate to doesNotUnderstand: > aMessage if message not found, but instead throws: > > > InterpreterError 2013: <aNARenderContextDecorator> > cannot perform the > selector <#'actionUrl'> with the arguments in > <anArray( > )>. Perform > may have been attempted with wrong number of args. > > I could not directly find another method to call on > Object so that the second decoration works ... > > Thanks for any help, > > Kind Regards, > > Bart > > > On Fri, Aug 6, 2010 at 5:53 PM, Dale Henrichs > <[hidden email] <mailto:[hidden email]> > <mailto:[hidden email] <mailto:[hidden email]>> > <mailto:[hidden email] > <mailto:[hidden email]> > > <mailto:[hidden email] > <mailto:[hidden email]>>>> wrote: > > Bart, > > To start with I've submitted Issue 157 > > (http://code.google.com/p/glassdb/issues/detail?id=157) > to track this. > > The right answer is for us to fix the bug by > adding a > Message or > FailedMessage class and implement the necessary > messages - a quick > look makes me think that lookupClass wouldn't be > included for example. > > Until then I think the best workaround would be to > implement > #sendTo: in Array as an extension method for > GemStone. > > In 2.4.4.1, it looks like a FailedMessage > instance is > available that > encapsulates the selector and args (but does not > implement > #sendTo:), so #sendTo: would need to be > implemented > there as well. > > Once the fix for Issue 157 is released, you won't > need your patch > anymore. > > Dale > > > > Bart Gauquie wrote: > > Dear List, > > In Pharo a doesNotUnderstand: aMessage method > receives a Message > object instance; which contains a selector, a > args array and a > lookupClass field. > > In Gemstone a doesNotUnderstand: > aMessageDescriptor receives an > Array: anArray( #'testme:', anArray( > 'sdflsdjkf')) > > If in my implementation of > doesNotUnderstand I do > something like: > doesNotUnderstand: aMessage > ^aMessage sendTo: decorated. > > It works fine in Pharo, but fails in Gemstone > because the > message sendTo: is not known in the > Gemstone system. > > Is there a way I can implement this so it > works > in both systems > (without testing whether incoming > aMessage(Descriptor) is an > array or a message type?) > > Thanks for your help! > > Kind Regards, > > Bart > > -- imagination is more important than > knowledge - Albert Einstein > Logic will get you from A to B. > Imagination will > take you > everywhere - Albert Einstein > Learn from yesterday, live for today, hope for > tomorrow. The > important thing is not to stop questioning. - > Albert Einstein > The true sign of intelligence is not knowledge > but imagination. > - Albert Einstein > However beautiful the strategy, you should > occasionally look at > the results. - Sir Winston Churchill > It's not enough that we do our best; > sometimes we > have to do > what's required. - Sir Winston Churchill > > > > > -- imagination is more important > than knowledge - Albert > Einstein > Logic will get you from A to B. Imagination will take > you everywhere - Albert Einstein > Learn from yesterday, live for today, hope for > tomorrow. > The important thing is not to stop questioning. - > Albert > Einstein > The true sign of intelligence is not knowledge but > imagination. - Albert Einstein > However beautiful the strategy, you should > occasionally > look at the results. - Sir Winston Churchill > It's not enough that we do our best; sometimes we > have > to do what's required. - Sir Winston Churchill > > > > > > -- imagination is more important than knowledge - Albert > Einstein > Logic will get you from A to B. Imagination will take you > everywhere > - Albert Einstein > Learn from yesterday, live for today, hope for tomorrow. The > important thing is not to stop questioning. - Albert Einstein > The true sign of intelligence is not knowledge but imagination. - > Albert Einstein > However beautiful the strategy, you should occasionally look > at the > results. - Sir Winston Churchill > It's not enough that we do our best; sometimes we have to do > what's > required. - Sir Winston Churchill > > > > > -- > imagination is more important than knowledge - Albert Einstein > Logic will get you from A to B. Imagination will take you > everywhere - Albert Einstein > Learn from yesterday, live for today, hope for tomorrow. The > important thing is not to stop questioning. - Albert Einstein > The true sign of intelligence is not knowledge but imagination. > - Albert Einstein > However beautiful the strategy, you should occasionally look at > the results. - Sir Winston Churchill > It's not enough that we do our best; sometimes we have to do > what's required. - Sir Winston Churchill > > > > > > -- > imagination is more important than knowledge - Albert Einstein > Logic will get you from A to B. Imagination will take you everywhere - > Albert Einstein > Learn from yesterday, live for today, hope for tomorrow. The important > thing is not to stop questioning. - Albert Einstein > The true sign of intelligence is not knowledge but imagination. - Albert > Einstein > However beautiful the strategy, you should occasionally look at the > results. - Sir Winston Churchill > It's not enough that we do our best; sometimes we have to do what's > required. - Sir Winston Churchill |
Dale Henrichs wrote:
> Bart, > > I'm tracking the #fooBar issue with Issue 161 and I've committed a fix > (along with more test cases:) that appears to fix the problem. Could you > give a try loading GemStone-Exceptions-DaleHenrichs.38 and let me know > if this finally takes care of your issues? > > BTW, this fix is only tested on 2.4.4.1 (which I assume you are using). > I expect that the solution for 2.3.x will have to be different (based on > preliminary tests). > > Dale It looks like GemStone-Exceptions-DaleHenrichs.38 works on 2.3.x as well ... at least the tests pass there ... at least it looks to me like the tests pass there:)... Dale |
In reply to this post by Dale Henrichs
Dale,
I'm using 2.4.4.1. I tested the package and I regret to tell you, but it still fails on my installation. All tests in GsExceptionTestCase run. However if I execute my demo I'm getting an exception that shout method is not found on the nested decorator. Do you have the same error? In Pharo this method not found exception automatically delegates to the doesnotunderstand method and the second decorator continues. While in Gemstone it does not ? What output of evaluating MyExperimentSubject shout. are you getting? I will send you a private email with a stacktrace screenshot. Kind Regards, Bart
On Tue, Aug 17, 2010 at 8:22 PM, Dale Henrichs <[hidden email]> wrote: Bart, -- imagination is more important than knowledge - Albert Einstein Logic will get you from A to B. Imagination will take you everywhere - Albert Einstein Learn from yesterday, live for today, hope for tomorrow. The important thing is not to stop questioning. - Albert Einstein The true sign of intelligence is not knowledge but imagination. - Albert Einstein However beautiful the strategy, you should occasionally look at the results. - Sir Winston Churchill It's not enough that we do our best; sometimes we have to do what's required. - Sir Winston Churchill |
Bart,
I'm sorry ... I see now that I didn't read your message close enough and fixed the bug only halfway. On top of GemStone-Exceptions-DaleHenrichs.39 change Object>>cantPerform:withArguments: to the following: cantPerform: aSelectorSymbol withArguments: anArray "Fix for Issue 159" ^self doesNotUnderstand: { aSelectorSymbol. anArray. } The exception tests pass and your example doesn't throw an MNU. Let me know if you have any more trouble. Dale Bart Gauquie wrote: > Dale, > > I'm using 2.4.4.1. > I tested the package and I regret to tell you, but it still fails on my > installation. > All tests in GsExceptionTestCase run. > > However if I execute my demo I'm getting an exception that shout method > is not found on the nested decorator. Do you have the same error? In > Pharo this method not found exception automatically delegates to the > doesnotunderstand method and the second decorator continues. While in > Gemstone it does not ? > > What output of evaluating > MyExperimentSubject shout. > are you getting? > > I will send you a private email with a stacktrace screenshot. > > Kind Regards, > > Bart > > > On Tue, Aug 17, 2010 at 8:22 PM, Dale Henrichs <[hidden email] > <mailto:[hidden email]>> wrote: > > Bart, > > I'm tracking the #fooBar issue with Issue 161 and I've committed a > fix (along with more test cases:) that appears to fix the problem. > Could you give a try loading GemStone-Exceptions-DaleHenrichs.38 and > let me know if this finally takes care of your issues? > > BTW, this fix is only tested on 2.4.4.1 (which I assume you are > using). I expect that the solution for 2.3.x will have to be > different (based on preliminary tests). > > Dale > > Bart Gauquie wrote: > > Dale, > > GsExceptionTestCase runs fine on my installation. > > Kind Regards, > > Bart > > On Tue, Aug 17, 2010 at 6:46 PM, Dale Henrichs > <[hidden email] <mailto:[hidden email]> > <mailto:[hidden email] <mailto:[hidden email]>>> wrote: > > Bart, > > I didn't test your exact stack configuration. I ran a simple test > case (see GsExceptionTestCase>>testIssue159): > > [ 1 perform: #foo ] on: MessageNotUnderstood do: [:ex | nil > halt ]. > > Presumably this test passes in your installation? > > Thanks for the sample code, I'll see what I can figure out today. > > I appreciate your patience, > > Dale > > Bart Gauquie wrote: > > Dale, > > I've tried loading the new package. > I'm now gettin' following error: > > <snippet> > MessageNotUnderstood 2010: No method was found for the > selector > <#'fooBar'> when sent to <nil> with arguments contained in > <anArray( )>. > > Error during rendering, a continuation containing error stack > has been saved > > To bring up a debugger in your development image, press the > Debug button in the GemStone/S Transcript window. > > For the moment, resuming from a remote debug session is not > supported. > </snippet> > > Maybe the case I'm having is not the one you've fixed, so > I've > provided a example which fails on Gemstone, but works on > Pharo. > > under: http://www.squeaksource.com/MyExperiments load > MyExperiments-BartGauquie.4 > > (and apply the fix I referred to earlier in this thread) > Array>>sendTo: receiver > ^ receiver perform: (self at: 1) withArguments: > (self at: 2) > > open a workspace and a transcript. > evaluate: MyExperimentSubject shout. > > and the transcript should show (for Pharo): > undecorated > Shout !! > > single decorated > I'm decorating ! > Shout !! > > dual decorated > I'm decorating ! > I'm decorating ! > Shout !! > > however for Gemstone: > undecorated > Shout !! > > single decorated > I'm decorating ! > Shout !! > > dual decorated > I'm decorating ! > and then: > MessageNotUnderstood 2010: No method was found for the > selector > <#'fooBar'> when sent to <nil> with arguments contained in > <anArray( )>. > error pops up I'm also getting' in my other code. > > Hope this helps you further with the error I'm getting'. > > Thanks for your help! > > Kind Regards, > > Bart > > > On Tue, Aug 17, 2010 at 8:21 AM, Bart Gauquie > <[hidden email] <mailto:[hidden email]> > <mailto:[hidden email] <mailto:[hidden email]>> > <mailto:[hidden email] > <mailto:[hidden email]> <mailto:[hidden email] > <mailto:[hidden email]>>>> > > wrote: > > Dale, > > I've tested the previous fix you've suggested last > night and > it did > not work as you mentioned. > I will test the new fix today. > > Kind Regards, > > Bart > > > On Tue, Aug 17, 2010 at 2:45 AM, Dale Henrichs > <[hidden email] <mailto:[hidden email]> > <mailto:[hidden email] <mailto:[hidden email]>> > <mailto:[hidden email] > <mailto:[hidden email]> <mailto:[hidden email] > <mailto:[hidden email]>>>> wrote: > > Bart, > > Try loading GemStone-Exceptions-DaleHenrichs.37 from > http://seaside.gemstone.com/ss/monticello. A test > is included > and I've tested this on both GemStone 2.3.x and > Gemstone > 2.4.4.1...I cleaned my glasses and ran the tests > again, > too...twice:) > > I am whipping up a 1.0-beta.8.3 that will have > this fix > plus a > couple of other bug fixes (going after low hanging > fruit). I aim > to ship 1.0-beta.8.3 pretty soon ... > > Dale > > > Dale Henrichs wrote: > > Bart, > > Ah, yes ... GemStone came late to ANSI > exceptions so > you've > hit one of the gaps... > > If I'm not mistaken 2013 is the moral > equivalent of > MNU for > #perform, so you could modify ExceptionA > class>>gsNumber:arguments:, replacing the line > marked > 'change -->' with the line marked " to -->" : > > gsNumber: errNum arguments: args > > | errorClass | > (errNum >= 1001 and: [errNum <= 1999]) > ifTrue: > [errorClass := CompilerError ]. > (errNum >= 2001 and: [errNum <= 2999]) > ifTrue: [ > "change -->" errNum == 2010 ifTrue: [ > " to -->" (errNum == 2010 or: [errNum == > 2013 ]) > ifTrue: [ > > And that should do the trick. I've added Issue 159 > > (http://code.google.com/p/glassdb/issues/detail?id=159) to > track the official fix. > > Thanks, > > Dale > > Bart Gauquie wrote: > > Dale, > > I've implemented a fix like this: > > Array>>sendTo: receiver > ^ receiver perform: (self at: 1) > withArguments: (self > at: 2) > > This works ... mostly ... > > It fails if the receiver is a decorator itself > implementing > > doesNotUnderstand: aMessage > ^aMessage sendTo: decorated. > > for most of its methods. > > Then this fails because apparently > Object>>perform: > withArguments does not delegate to > doesNotUnderstand: > aMessage if message not found, but instead > throws: > > > InterpreterError 2013: > <aNARenderContextDecorator> > cannot perform the > selector <#'actionUrl'> with the arguments in > <anArray( > )>. Perform > may have been attempted with wrong number > of args. > > I could not directly find another method > to call on > Object so that the second decoration works ... > > Thanks for any help, > > Kind Regards, > > Bart > > > On Fri, Aug 6, 2010 at 5:53 PM, Dale Henrichs > <[hidden email] > <mailto:[hidden email]> <mailto:[hidden email] > <mailto:[hidden email]>> > <mailto:[hidden email] <mailto:[hidden email]> > <mailto:[hidden email] <mailto:[hidden email]>>> > <mailto:[hidden email] > <mailto:[hidden email]> > <mailto:[hidden email] <mailto:[hidden email]>> > > <mailto:[hidden email] > <mailto:[hidden email]> > <mailto:[hidden email] > <mailto:[hidden email]>>>>> wrote: > > Bart, > > To start with I've submitted Issue 157 > > (http://code.google.com/p/glassdb/issues/detail?id=157) > to track this. > > The right answer is for us to fix the > bug by > adding a > Message or > FailedMessage class and implement the > necessary > messages - a quick > look makes me think that lookupClass > wouldn't be > included for example. > > Until then I think the best workaround > would be to > implement > #sendTo: in Array as an extension > method for > GemStone. > > In 2.4.4.1, it looks like a FailedMessage > instance is > available that > encapsulates the selector and args (but > does not > implement > #sendTo:), so #sendTo: would need to be > implemented > there as well. > > Once the fix for Issue 157 is released, > you won't > need your patch > anymore. > > Dale > > > > Bart Gauquie wrote: > > Dear List, > > In Pharo a doesNotUnderstand: > aMessage method > receives a Message > object instance; which contains a > selector, a > args array and a > lookupClass field. > > In Gemstone a doesNotUnderstand: > aMessageDescriptor receives an > Array: anArray( #'testme:', anArray( > 'sdflsdjkf')) > > If in my implementation of > doesNotUnderstand I do > something like: > doesNotUnderstand: aMessage > ^aMessage sendTo: decorated. > > It works fine in Pharo, but fails > in Gemstone > because the > message sendTo: is not known in the > Gemstone system. > > Is there a way I can implement this > so it > works > in both systems > (without testing whether incoming > aMessage(Descriptor) is an > array or a message type?) > > Thanks for your help! > > Kind Regards, > > Bart > > -- imagination is more > important than > knowledge - Albert Einstein > Logic will get you from A to B. > Imagination will > take you > everywhere - Albert Einstein > Learn from yesterday, live for > today, hope for > tomorrow. The > important thing is not to stop > questioning. - > Albert Einstein > The true sign of intelligence is > not knowledge > but imagination. > - Albert Einstein > However beautiful the strategy, you > should > occasionally look at > the results. - Sir Winston Churchill > It's not enough that we do our best; > sometimes we > have to do > what's required. - Sir Winston > Churchill > > > > > -- imagination is more > important > than knowledge - Albert > Einstein > Logic will get you from A to B. > Imagination will take > you everywhere - Albert Einstein > Learn from yesterday, live for today, hope for > tomorrow. > The important thing is not to stop > questioning. - > Albert > Einstein > The true sign of intelligence is not > knowledge but > imagination. - Albert Einstein > However beautiful the strategy, you should > occasionally > look at the results. - Sir Winston Churchill > It's not enough that we do our best; > sometimes we > have > to do what's required. - Sir Winston Churchill > > > > > > -- imagination is more important than knowledge - > Albert > Einstein > Logic will get you from A to B. Imagination will take you > everywhere > - Albert Einstein > Learn from yesterday, live for today, hope for > tomorrow. The > important thing is not to stop questioning. - Albert > Einstein > The true sign of intelligence is not knowledge but > imagination. - > Albert Einstein > However beautiful the strategy, you should > occasionally look > at the > results. - Sir Winston Churchill > It's not enough that we do our best; sometimes we have > to do > what's > required. - Sir Winston Churchill > > > > > -- imagination is more important than knowledge - > Albert Einstein > Logic will get you from A to B. Imagination will take you > everywhere - Albert Einstein > Learn from yesterday, live for today, hope for tomorrow. The > important thing is not to stop questioning. - Albert Einstein > The true sign of intelligence is not knowledge but > imagination. > - Albert Einstein > However beautiful the strategy, you should occasionally > look at > the results. - Sir Winston Churchill > It's not enough that we do our best; sometimes we have to do > what's required. - Sir Winston Churchill > > > > > > -- > imagination is more important than knowledge - Albert Einstein > Logic will get you from A to B. Imagination will take you > everywhere - Albert Einstein > Learn from yesterday, live for today, hope for tomorrow. The > important thing is not to stop questioning. - Albert Einstein > The true sign of intelligence is not knowledge but imagination. > - Albert Einstein > However beautiful the strategy, you should occasionally look at > the results. - Sir Winston Churchill > It's not enough that we do our best; sometimes we have to do > what's required. - Sir Winston Churchill > > > > > > -- > imagination is more important than knowledge - Albert Einstein > Logic will get you from A to B. Imagination will take you everywhere - > Albert Einstein > Learn from yesterday, live for today, hope for tomorrow. The important > thing is not to stop questioning. - Albert Einstein > The true sign of intelligence is not knowledge but imagination. - Albert > Einstein > However beautiful the strategy, you should occasionally look at the > results. - Sir Winston Churchill > It's not enough that we do our best; sometimes we have to do what's > required. - Sir Winston Churchill |
Dale, Yes! You've fixed my problem. Thank you very much! Kind Regards, Bart
On Wed, Aug 18, 2010 at 7:21 PM, Dale Henrichs <[hidden email]> wrote: Bart, -- imagination is more important than knowledge - Albert Einstein Logic will get you from A to B. Imagination will take you everywhere - Albert Einstein Learn from yesterday, live for today, hope for tomorrow. The important thing is not to stop questioning. - Albert Einstein The true sign of intelligence is not knowledge but imagination. - Albert Einstein However beautiful the strategy, you should occasionally look at the results. - Sir Winston Churchill It's not enough that we do our best; sometimes we have to do what's required. - Sir Winston Churchill |
Hey! third (or was it fourth) times the charm!
I appreciate your patience... Dale Bart Gauquie wrote: > Dale, > > Yes! You've fixed my problem. Thank you very much! > > Kind Regards, > > Bart > > > > On Wed, Aug 18, 2010 at 7:21 PM, Dale Henrichs <[hidden email] > <mailto:[hidden email]>> wrote: > > Bart, > > I'm sorry ... I see now that I didn't read your message close enough > and fixed the bug only halfway. > > On top of GemStone-Exceptions-DaleHenrichs.39 change > Object>>cantPerform:withArguments: to the following: > > cantPerform: aSelectorSymbol withArguments: anArray > "Fix for Issue 159" > > ^self doesNotUnderstand: { aSelectorSymbol. anArray. } > > The exception tests pass and your example doesn't throw an MNU. > > Let me know if you have any more trouble. > > Dale > > > Bart Gauquie wrote: > > Dale, > > I'm using 2.4.4.1. > I tested the package and I regret to tell you, but it still > fails on my installation. > All tests in GsExceptionTestCase run. > > However if I execute my demo I'm getting an exception that shout > method is not found on the nested decorator. Do you have the > same error? In Pharo this method not found exception > automatically delegates to the doesnotunderstand method and the > second decorator continues. While in Gemstone it does not ? > > What output of evaluating > MyExperimentSubject shout. > are you getting? > > I will send you a private email with a stacktrace screenshot. > > Kind Regards, > > Bart > > > On Tue, Aug 17, 2010 at 8:22 PM, Dale Henrichs > <[hidden email] <mailto:[hidden email]> > <mailto:[hidden email] <mailto:[hidden email]>>> wrote: > > Bart, > > I'm tracking the #fooBar issue with Issue 161 and I've > committed a > fix (along with more test cases:) that appears to fix the > problem. > Could you give a try loading > GemStone-Exceptions-DaleHenrichs.38 and > let me know if this finally takes care of your issues? > > BTW, this fix is only tested on 2.4.4.1 (which I assume you are > using). I expect that the solution for 2.3.x will have to be > different (based on preliminary tests). > > Dale > > Bart Gauquie wrote: > > Dale, > > GsExceptionTestCase runs fine on my installation. > > Kind Regards, > > Bart > > On Tue, Aug 17, 2010 at 6:46 PM, Dale Henrichs > <[hidden email] <mailto:[hidden email]> > <mailto:[hidden email] <mailto:[hidden email]>> > <mailto:[hidden email] <mailto:[hidden email]> > <mailto:[hidden email] <mailto:[hidden email]>>>> wrote: > > Bart, > > I didn't test your exact stack configuration. I ran a > simple test > case (see GsExceptionTestCase>>testIssue159): > > [ 1 perform: #foo ] on: MessageNotUnderstood do: [:ex > | nil > halt ]. > > Presumably this test passes in your installation? > > Thanks for the sample code, I'll see what I can figure > out today. > > I appreciate your patience, > > Dale > > Bart Gauquie wrote: > > Dale, > > I've tried loading the new package. > I'm now gettin' following error: > > <snippet> > MessageNotUnderstood 2010: No method was found for the > selector > <#'fooBar'> when sent to <nil> with arguments > contained in > <anArray( )>. > > Error during rendering, a continuation containing > error stack > has been saved > > To bring up a debugger in your development image, > press the > Debug button in the GemStone/S Transcript window. > > For the moment, resuming from a remote debug > session is not > supported. > </snippet> > > Maybe the case I'm having is not the one you've > fixed, so > I've > provided a example which fails on Gemstone, but > works on > Pharo. > > under: http://www.squeaksource.com/MyExperiments load > MyExperiments-BartGauquie.4 > > (and apply the fix I referred to earlier in this > thread) > Array>>sendTo: receiver > ^ receiver perform: (self at: 1) withArguments: > (self at: 2) > > open a workspace and a transcript. > evaluate: MyExperimentSubject shout. > > and the transcript should show (for Pharo): > undecorated > Shout !! > > single decorated > I'm decorating ! > Shout !! > > dual decorated > I'm decorating ! > I'm decorating ! > Shout !! > > however for Gemstone: > undecorated > Shout !! > > single decorated > I'm decorating ! > Shout !! > > dual decorated > I'm decorating ! > and then: > MessageNotUnderstood 2010: No method was found for the > selector > <#'fooBar'> when sent to <nil> with arguments > contained in > <anArray( )>. > error pops up I'm also getting' in my other code. > > Hope this helps you further with the error I'm > getting'. > > Thanks for your help! > > Kind Regards, > > Bart > > > On Tue, Aug 17, 2010 at 8:21 AM, Bart Gauquie > <[hidden email] > <mailto:[hidden email]> <mailto:[hidden email] > <mailto:[hidden email]>> > <mailto:[hidden email] > <mailto:[hidden email]> <mailto:[hidden email] > <mailto:[hidden email]>>> > <mailto:[hidden email] > <mailto:[hidden email]> > <mailto:[hidden email] > <mailto:[hidden email]>> <mailto:[hidden email] > <mailto:[hidden email]> > <mailto:[hidden email] > <mailto:[hidden email]>>>>> > > wrote: > > Dale, > > I've tested the previous fix you've suggested last > night and > it did > not work as you mentioned. > I will test the new fix today. > > Kind Regards, > > Bart > > > On Tue, Aug 17, 2010 at 2:45 AM, Dale Henrichs > <[hidden email] <mailto:[hidden email]> > <mailto:[hidden email] <mailto:[hidden email]>> > <mailto:[hidden email] <mailto:[hidden email]> > <mailto:[hidden email] <mailto:[hidden email]>>> > <mailto:[hidden email] > <mailto:[hidden email]> > <mailto:[hidden email] <mailto:[hidden email]>> > <mailto:[hidden email] <mailto:[hidden email]> > <mailto:[hidden email] > <mailto:[hidden email]>>>>> wrote: > > Bart, > > Try loading > GemStone-Exceptions-DaleHenrichs.37 from > http://seaside.gemstone.com/ss/monticello. > A test > is included > and I've tested this on both GemStone 2.3.x and > Gemstone > 2.4.4.1...I cleaned my glasses and ran the > tests > again, > too...twice:) > > I am whipping up a 1.0-beta.8.3 that will have > this fix > plus a > couple of other bug fixes (going after low > hanging > fruit). I aim > to ship 1.0-beta.8.3 pretty soon ... > > Dale > > > Dale Henrichs wrote: > > Bart, > > Ah, yes ... GemStone came late to ANSI > exceptions so > you've > hit one of the gaps... > > If I'm not mistaken 2013 is the moral > equivalent of > MNU for > #perform, so you could modify ExceptionA > class>>gsNumber:arguments:, replacing > the line > marked > 'change -->' with the line marked " > to -->" : > > gsNumber: errNum arguments: args > > | errorClass | > (errNum >= 1001 and: [errNum <= > 1999]) > ifTrue: > [errorClass := CompilerError ]. > (errNum >= 2001 and: [errNum <= > 2999]) > ifTrue: [ > "change -->" errNum == 2010 ifTrue: [ > " to -->" (errNum == 2010 or: > [errNum == > 2013 ]) > ifTrue: [ > > And that should do the trick. I've > added Issue 159 > > (http://code.google.com/p/glassdb/issues/detail?id=159) to > track the official fix. > > Thanks, > > Dale > > Bart Gauquie wrote: > > Dale, > > I've implemented a fix like this: > > Array>>sendTo: receiver > ^ receiver perform: (self at: 1) > withArguments: (self > at: 2) > > This works ... mostly ... > > It fails if the receiver is a > decorator itself > implementing > > doesNotUnderstand: aMessage > ^aMessage sendTo: decorated. > > for most of its methods. > > Then this fails because apparently > Object>>perform: > withArguments does not delegate to > doesNotUnderstand: > aMessage if message not found, but > instead > throws: > > > InterpreterError 2013: > <aNARenderContextDecorator> > cannot perform the > selector <#'actionUrl'> with the > arguments in > <anArray( > )>. Perform > may have been attempted with wrong > number > of args. > > I could not directly find another > method > to call on > Object so that the second > decoration works ... > > Thanks for any help, > > Kind Regards, > > Bart > > > On Fri, Aug 6, 2010 at 5:53 PM, > Dale Henrichs > <[hidden email] > <mailto:[hidden email]> > <mailto:[hidden email] <mailto:[hidden email]>> > <mailto:[hidden email] <mailto:[hidden email]> > <mailto:[hidden email] <mailto:[hidden email]>>> > <mailto:[hidden email] > <mailto:[hidden email]> <mailto:[hidden email] > <mailto:[hidden email]>> > <mailto:[hidden email] <mailto:[hidden email]> > <mailto:[hidden email] <mailto:[hidden email]>>>> > <mailto:[hidden email] > <mailto:[hidden email]> > <mailto:[hidden email] <mailto:[hidden email]>> > <mailto:[hidden email] > <mailto:[hidden email]> <mailto:[hidden email] > <mailto:[hidden email]>>> > > <mailto:[hidden email] > <mailto:[hidden email]> > <mailto:[hidden email] <mailto:[hidden email]>> > <mailto:[hidden email] > <mailto:[hidden email]> > <mailto:[hidden email] > <mailto:[hidden email]>>>>>> wrote: > > Bart, > > To start with I've submitted > Issue 157 > > (http://code.google.com/p/glassdb/issues/detail?id=157) > to track this. > > The right answer is for us to > fix the > bug by > adding a > Message or > FailedMessage class and > implement the > necessary > messages - a quick > look makes me think that lookupClass > wouldn't be > included for example. > > Until then I think the best > workaround > would be to > implement > #sendTo: in Array as an extension > method for > GemStone. > > In 2.4.4.1, it looks like a > FailedMessage > instance is > available that > encapsulates the selector and > args (but > does not > implement > #sendTo:), so #sendTo: would > need to be > implemented > there as well. > > Once the fix for Issue 157 is > released, > you won't > need your patch > anymore. > > Dale > > > > Bart Gauquie wrote: > > Dear List, > > In Pharo a doesNotUnderstand: > aMessage method > receives a Message > object instance; which > contains a > selector, a > args array and a > lookupClass field. > > In Gemstone a doesNotUnderstand: > aMessageDescriptor receives an > Array: anArray( #'testme:', > anArray( > 'sdflsdjkf')) > > If in my implementation of > doesNotUnderstand I do > something like: > doesNotUnderstand: aMessage > ^aMessage sendTo: decorated. > > It works fine in Pharo, but > fails > in Gemstone > because the > message sendTo: is not known > in the > Gemstone system. > > Is there a way I can > implement this > so it > works > in both systems > (without testing whether > incoming > aMessage(Descriptor) is an > array or a message type?) > > Thanks for your help! > > Kind Regards, > > Bart > > -- imagination is more > important than > knowledge - Albert Einstein > Logic will get you from A to B. > Imagination will > take you > everywhere - Albert Einstein > Learn from yesterday, live for > today, hope for > tomorrow. The > important thing is not to stop > questioning. - > Albert Einstein > The true sign of intelligence is > not knowledge > but imagination. > - Albert Einstein > However beautiful the > strategy, you > should > occasionally look at > the results. - Sir Winston > Churchill > It's not enough that we do > our best; > sometimes we > have to do > what's required. - Sir Winston > Churchill > > > > > -- imagination is more > important > than knowledge - Albert > Einstein > Logic will get you from A to B. > Imagination will take > you everywhere - Albert Einstein > Learn from yesterday, live for > today, hope for > tomorrow. > The important thing is not to stop > questioning. - > Albert > Einstein > The true sign of intelligence is not > knowledge but > imagination. - Albert Einstein > However beautiful the strategy, you > should > occasionally > look at the results. - Sir Winston > Churchill > It's not enough that we do our best; > sometimes we > have > to do what's required. - Sir > Winston Churchill > > > > > > -- imagination is more important than > knowledge - > Albert > Einstein > Logic will get you from A to B. Imagination > will take you > everywhere > - Albert Einstein > Learn from yesterday, live for today, hope for > tomorrow. The > important thing is not to stop questioning. - > Albert > Einstein > The true sign of intelligence is not knowledge but > imagination. - > Albert Einstein > However beautiful the strategy, you should > occasionally look > at the > results. - Sir Winston Churchill > It's not enough that we do our best; sometimes > we have > to do > what's > required. - Sir Winston Churchill > > > > > -- imagination is more important than > knowledge - > Albert Einstein > Logic will get you from A to B. Imagination will > take you > everywhere - Albert Einstein > Learn from yesterday, live for today, hope for > tomorrow. The > important thing is not to stop questioning. - > Albert Einstein > The true sign of intelligence is not knowledge but > imagination. > - Albert Einstein > However beautiful the strategy, you should > occasionally > look at > the results. - Sir Winston Churchill > It's not enough that we do our best; sometimes we > have to do > what's required. - Sir Winston Churchill > > > > > > -- imagination is more important than knowledge - > Albert Einstein > Logic will get you from A to B. Imagination will take you > everywhere - Albert Einstein > Learn from yesterday, live for today, hope for tomorrow. The > important thing is not to stop questioning. - Albert Einstein > The true sign of intelligence is not knowledge but > imagination. > - Albert Einstein > However beautiful the strategy, you should occasionally > look at > the results. - Sir Winston Churchill > It's not enough that we do our best; sometimes we have to do > what's required. - Sir Winston Churchill > > > > > > -- > imagination is more important than knowledge - Albert Einstein > Logic will get you from A to B. Imagination will take you > everywhere - Albert Einstein > Learn from yesterday, live for today, hope for tomorrow. The > important thing is not to stop questioning. - Albert Einstein > The true sign of intelligence is not knowledge but imagination. > - Albert Einstein > However beautiful the strategy, you should occasionally look at > the results. - Sir Winston Churchill > It's not enough that we do our best; sometimes we have to do > what's required. - Sir Winston Churchill > > > > > > -- > imagination is more important than knowledge - Albert Einstein > Logic will get you from A to B. Imagination will take you everywhere - > Albert Einstein > Learn from yesterday, live for today, hope for tomorrow. The important > thing is not to stop questioning. - Albert Einstein > The true sign of intelligence is not knowledge but imagination. - Albert > Einstein > However beautiful the strategy, you should occasionally look at the > results. - Sir Winston Churchill > It's not enough that we do our best; sometimes we have to do what's > required. - Sir Winston Churchill |
Free forum by Nabble | Edit this page |