[Glass] Tode problematic
Trussardi Dario Romano via Glass
glass at lists.gemtalksystems.com
Tue Jul 11 02:25:07 PDT 2017
Dale,
> From the stack I was able to figure out what you might have done to create the method and I was finally able to reproduce your bug ...
>
> You added the new method to Object in a pre-exisiting category that was not prefixed with a $* ... and this is a bug in tODE .... that's been around for quite awhile ...
>
>
> You can patch tODE using the following in TDMethodDefinition>>source:
>
> source
> self username
> ifNotNil: [
> ^ (self theBehavior perform: #'persistentMethodAt:' with: self selector)
> sourceString ].
> ^ (self theBehavior
> compiledMethodAt: self selector
> environmentId: 0
> otherwise: nil
> usePackages: true) sourceString
>
I update the TDMethodDefinition>>source as above.
A) Now when in the class browser i select the isNotNil method the system answer:
a MessageNotUnderstood occurred (error 2010), a UndefinedObject does not understand #'sourceString'
--------------------
1. MessageNotUnderstood>>defaultAction @2 line 3
2. MessageNotUnderstood(AbstractException)>>_signalWith: @5 line 25
3. MessageNotUnderstood(AbstractException)>>signal @2 line 47
4. UndefinedObject(Object)>>doesNotUnderstand: @9 line 10
5. UndefinedObject(Object)>>_doesNotUnderstand:args:envId:reason: @7 line 12
6. TDMethodDefinition>>source @12 line 10
7. TDMethodDefinitionElementBuilder>>elementSource @3 line 2
8. TDMethodDefinitionElementBuilder(TDClientCodeElementBuilder)>>formattedElementSource @2 line 3
9. TDMethodDefinitionElementBuilder(TDClientSourceElementBuilder)>>firstSource @2 line 2
10. TDMethodDefinitionElementBuilder(TDClientSourceElementBuilder)>>buildClientElementUsing:editorAspect: @6 line 8
11. TDMethodDefinitionElementBuilder(TDClientMethodElementBuilder)>>buildClientElementUsing:editorAspect: @2 line 2
12. TDMethodDefinitionElementBuilder>>buildClientElementUsing:editorAspect: @2 line 2
13. [] in ExecBlock2(TDTopezServer)>>clientElementFor:using: @4 line 9
14. [] in TDTopezServer>>editorNodeFor:aspect:do: @8 line 9
15. [] in ExecBlock1(TDTopezServer)>>editorNodeClassNameFor:aspect:do: @5 line 10
16. TDTopezServer>>lookupClassNameFor:aspect:defaultAspect:in:do: @24 line 28
17. TDTopezServer>>editorNodeClassNameFor:aspect:do: @5 line 3
18. TDTopezServer>>editorNodeFor:aspect:do: @2 line 3
19. TDTopezServer>>clientElementFor:using: @3 line 4
20. TDTopezServer>>edit:using: @2 line 3
21. TDMethodDefinition(Object)>>editUsing: @4 line 3
22. TDMethodDefinition>>itemSelected: @8 line 8
23. TDClassicClassSelectorListElementBuilder>>itemSelected:at:shiftPressed: @10 line 7
24. TDClassicClassSelectorListElementBuilder(TDClientListElementBuilder)>>itemSelected:at:shiftPressed:listSelectionsDictionary: @2 line 4
25. [] in TDClassicClassSelectorListElementBuilder(TDClientListElementBuilder)>>itemSelectedBlock @8 line 7
26. TDClassicClassSelectorListElementBuilder(ExecBlock)>>cull:cull:cull:cull: @7 line 4
27. GsNMethod class>>_gsReturnToC @1 line 1
B) If compile the new method isNotNil in the class browser the system answer:
a LookupError occurred (error 2021), reason:rtErrKeyNotFound, A reference using
the non-existent key #'isNotNil' was made into the dictionary Object
C) If i select the isNotNil remove menu option the system answer:
a MessageNotUnderstood occurred (error 2010), a UndefinedObject does not understand #'inClass'
--------------------
1. MessageNotUnderstood>>defaultAction @2 line 3
2. MessageNotUnderstood(AbstractException)>>_signalWith: @5 line 25
3. MessageNotUnderstood(AbstractException)>>signal @2 line 47
4. UndefinedObject(Object)>>doesNotUnderstand: @9 line 10
5. UndefinedObject(Object)>>_doesNotUnderstand:args:envId:reason: @7 line 12
6. TDMethodDefinition>>methodCategory @5 line 6
7. TDMethodDefinition>>removeFromSystem: @4 line 4
8. TDClassicClassSelectorListElementBuilder>>cutObjectMenuAction:selectionIndex: @9 line 6
9. TDClassicClassSelectorListElementBuilder(TDWindowBuilder)>>handleMenuActions:listElement:actionArg: @12 line 10
10. [] in TDClassicClassSelectorListElementBuilder(TDClientListElementBuilder)>>menuActionBlock @2 line 7
11. TDClassicClassSelectorListElementBuilder(ExecBlock)>>value:value:value: @2 line 11
12. GsNMethod class>>_gsReturnToC @1 line 1
>
> I'll submit a tODE bug and update the source with the patch when I get chance ... I'm under the gun for a project deadline ...
I think to replicate the code in a new gemstone environment ( i hope without this problematic )
The only strangeness I remember is that by mistake i do the revert command on the project entry.
I'm available in any case to solve this problematic if you have other considerations.
Thanks,
Dario
> Dale
>
> On 07/10/2017 12:24 AM, Trussardi Dario Romano via Glass wrote:
>> Dale,
>>
>>> Dario,
>>>
>>> There is nothing special about isNotNil ... I guess I'd like to see the actual source code for the method in case there is something odd in the source --- most likely not ...
>>>
>>> To get started, I would really like to see the whole stack for the LookupError. In tODE if you select debug to bring up a debugger, then in the stack frame list window use the `Window > print window` menu item, and then send me the printed stack.
>>>
>> this is the printed stack:
>>
>> a LookupError occurred (error 2021), reason:rtErrKeyNotFound, A reference using the non-existent key #'isNotNil' was made into the dictionary Object
>> --------------------
>> 1. LookupError(AbstractException)>>_signalWith: @5 line 25
>> 2. LookupError(AbstractException)>>signal @2 line 47
>> 3. Object class(Object)>>_error:args: @15 line 11
>> 4. Object class(Behavior)>>compiledMethodAt:environmentId: @5 line 9
>> 5. Object class(Behavior)>>sourceCodeAt:environmentId: @2 line 7
>> 6. Object class(Behavior)>>sourceCodeAt: @2 line 3
>> 7. TDMethodDefinition>>source @4 line 2
>> 8. TDMethodDefinitionElementBuilder>>elementSource @3 line 2
>> 9. TDMethodDefinitionElementBuilder(TDClientCodeElementBuilder)>>formattedElementSource @2 line 3
>> 10. TDMethodDefinitionElementBuilder(TDClientSourceElementBuilder)>>firstSource @2 line 2
>> 11. TDMethodDefinitionElementBuilder(TDClientSourceElementBuilder)>>buildClientElementUsing:editorAspect: @6 line 8
>> 12. TDMethodDefinitionElementBuilder(TDClientMethodElementBuilder)>>buildClientElementUsing:editorAspect: @2 line 2
>> 13. TDMethodDefinitionElementBuilder>>buildClientElementUsing:editorAspect: @2 line 2
>> 14. [] in ExecBlock2(TDTopezServer)>>clientElementFor:using: @4 line 9
>> 15. [] in TDTopezServer>>editorNodeFor:aspect:do: @8 line 9
>> 16. [] in ExecBlock1(TDTopezServer)>>editorNodeClassNameFor:aspect:do: @5 line 10
>> 17. TDTopezServer>>lookupClassNameFor:aspect:defaultAspect:in:do: @24 line 28
>> 18. TDTopezServer>>editorNodeClassNameFor:aspect:do: @5 line 3
>> 19. TDTopezServer>>editorNodeFor:aspect:do: @2 line 3
>> 20. TDTopezServer>>clientElementFor:using: @3 line 4
>> 21. TDTopezServer>>edit:using: @2 line 3
>> 22. TDMethodDefinition(Object)>>editUsing: @4 line 3
>> 23. TDMethodDefinition>>itemSelected: @8 line 8
>> 24. TDClassicClassSelectorListElementBuilder>>itemSelected:at:shiftPressed: @10 line 7
>> 25. [] in TDClassicClassSelectorListElementBuilder(TDClientListElementBuilder)>>itemSelectedBlock @4 line 4
>> 26. TDClassicClassSelectorListElementBuilder(ExecBlock)>>cull:cull:cull:cull: @7 line 4
>> 27. GsNMethod class>>_gsReturnToC @1 line 1
>>
>> Thanks,
>>
>> Dario
>>> With that I will know where the error is occuring and start looking into figuring out what went wrong and how to fix it ...
>>>
>>> Dale
>>> On 07/07/2017 06:38 AM, Trussardi Dario Romano via Glass wrote:
>>>> Ciao,
>>>>
>>>> i have a Tode problematic.
>>>>
>>>> I submit this to the: tode at noreply.github.com
>>>>
>>>> but i doubt it's not the right procedure.
>>>>
>>>>
>>>>
>>>>> Ciao,
>>>>
>>>>>
>>>>
>>>>> i have a tode image working with on 3.2.12 environment.
>>>>
>>>>>
>>>>
>>>>> Now in the tode class browser i found ( i don't remember when and how i create it )
>>>>
>>>>>
>>>>
>>>>> the Object isNotNil message.
>>>>
>>>>>
>>>>
>>>>> When in the class browser i select this method the system answer:
>>>>
>>>>>
>>>>
>>>>> a LookupError occurred (error 2021), reason:rtErrKeyNotFound, A reference using
>>>>
>>>>> the non-existent key #'isNotNil' was made into the dictionary Object
>>>>
>>>>>
>>>>
>>>>> Any other command:
>>>>
>>>>>
>>>>
>>>>> remove the relative protocol
>>>>
>>>>>
>>>>
>>>>> compile a new isNotNil method
>>>>
>>>>>
>>>>
>>>>> remove the method with: method remove Object >>isNotNil
>>>>
>>>>>
>>>>
>>>>> answer the same error.
>>>>
>>>>>
>>>>
>>>>> When i save the relative package the Object isNotNil method is not saved.
>>>>
>>>>>
>>>>
>>>>> When the code call: isNotNil the system answer: does not understand.
>>>>
>>>>>
>>>>
>>>>> Thanks for considerations,
>>>>
>>>>>
>>>>
>>>>> Dario
>>>>
>>>>
>>>>
>>>> Does anyone know the right procedure?
>>>>
>>>> If in the meantime you have an indication regarding my problem,
>>>>
>>>> i would be grateful.
>>>>
>>>> Dario
>>>>
>>>>
>>>> _______________________________________________
>>>> Glass mailing list
>>>> Glass at lists.gemtalksystems.com
>>>> http://lists.gemtalksystems.com/mailman/listinfo/glass
>>>
>>> _______________________________________________
>>> Glass mailing list
>>> Glass at lists.gemtalksystems.com
>>> http://lists.gemtalksystems.com/mailman/listinfo/glass
>>
>>
>>
>> _______________________________________________
>> Glass mailing list
>> Glass at lists.gemtalksystems.com
>> http://lists.gemtalksystems.com/mailman/listinfo/glass
>
> _______________________________________________
> Glass mailing list
> Glass at lists.gemtalksystems.com
> http://lists.gemtalksystems.com/mailman/listinfo/glass
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.gemtalksystems.com/mailman/private/glass/attachments/20170711/7c513c8a/attachment-0001.html>
More information about the Glass
mailing list