Dear Rony and others,

At the moment 25 out of 25 possible ooRexx test jobs on Jenkins are failing. I 
suggest all developers making commits right now have a look as to the 
consequences for the tests. Currently all Win, Unix and Linux tests are failing 
for various reasons, I think that should not be the case.

In addition building on Windows 7 both 32 and 64 bit is failing, unclear to me 
why but someone should have a look.

Hälsningar/Regards/Grüsse,
P.O. Jonsson
oor...@jonases.se




> Am 16.05.2022 um 20:34 schrieb Rony G. Flatscher <rony.flatsc...@wu.ac.at>:
> 
> Commits:
> 
> <http://sourceforge.net/p/oorexx/code-0/12391> 
> <http://sourceforge.net/p/oorexx/code-0/12391>,
> <http://sourceforge.net/p/oorexx/code-0/12392> 
> <http://sourceforge.net/p/oorexx/code-0/12392>.
> Also removed "Error_Execution_super" definitions from various *.h files 
> manually as not having been able to get cmake to find xalan to recreate the 
> files from <main/trunk/interpreter/messages/rexxmsg.xml>. 
> 
> Two questions:
> 
> on Windows (having the Java version of Xalan): where to get Xalan from, or 
> alternatively, how to get cmake to find and use the Java Xalan version?
> ad documentation w.r.t Error_Execution_super: have not found the relevant 
> section in rexxref.pdf, unfortunately. Maybe others can find that and point 
> it out, or maybe even adjust the text ;) ?
> ---rony
> 
> 
> 
> On 16.05.2022 14:55, Rony G. Flatscher wrote:
>> On 16.05.2022 14:33, Rick McGuire wrote:
>>> There are also other places where this check is made. Search for 
>>> Error_Execution_super to find it. The entire validateOverrideContext() 
>>> method and it's calls should be deleted. 
>> Thank you for your hints and pointers, will take care of it.
>> 
>> ---rony
>> 
>>> 
>>> On Mon, May 16, 2022 at 8:24 AM Rick McGuire <object.r...@gmail.com 
>>> <mailto:object.r...@gmail.com>> wrote:
>>> You have only fixed part of the problem. There's also a change required to 
>>> MessageInstruction.cpp and also tests needed for that case. 
>>> 
>>> Rick
>>> 
>>> On Mon, May 16, 2022 at 8:15 AM Rick McGuire <object.r...@gmail.com 
>>> <mailto:object.r...@gmail.com>> wrote:
>>> Weren't there any tests for the restriction that needed to be removed? I 
>>> only need new tests added for the case where this is not restricted. Also, 
>>> I'd recommend adding some tests using mixins to make sure the correct 
>>> targets are getting invoked. 
>>> 
>>> Rick
>>> 
>>> On Mon, May 16, 2022 at 8:10 AM Rony G. Flatscher <rony.flatsc...@wu.ac.at 
>>> <mailto:rony.flatsc...@wu.ac.at>> wrote:
>>> 
>>> 
>>> On 15.05.2022 14:47, Rony G. Flatscher wrote:
>>>> 
>>>> On 15.05.2022 12:27, Rony G. Flatscher wrote:
>>>>> On 14.05.2022 22:06, Jean Louis Faucher wrote:
>>>>>> 
>>>>>>> So there is a need for having one or more methods that can be used for 
>>>>>>> forcing the invocation of the ooRexx .Object methods. 
>>>>>> The syntax described in 4.2.7 Changing the Search Order for Methods 
>>>>>> could be used, if the restriction 
>>>>>> "Message search overrides can be used only from methods of the target 
>>>>>> object”
>>>>>> was removed.
>>>>>> 
>>>>>> It works with oorexx4, after removing the check
>>>>>>     if (_target != context->getReceiver())
>>>>>> in RexxExpressionMessage::evaluate.
>>>>>> 
>>>>>> s1 = "hello"
>>>>>> s2 = "hello"
>>>>>> say s1~"="(s2) -- display 1
>>>>>> say s1~"=":.Object(s2) -- display 0 because not the same objects
>>>>> Indeed that would really be a general, fine solution alleviating a 
>>>>> programmer to come up with weird and cumbersome solutions. 
>>>>> 
>>>>> Rather than having to create methods SEND.SUPER, SENDWITH.SUPER, 
>>>>> CLASS.SUPER and COPY.SUPER to allow programmers to invoke the ooRexx root 
>>>>> class methods in .object, this problem with OLEObject, but also all 
>>>>> comparable in general would be solved with this. So instead one could 
>>>>> code 
>>>>> 
>>>>> ole~send(msg) ... will check for existence on the Windows side, and if 
>>>>> present invoke it, otherwise lookup super (which is .object)
>>>>> ole~send:.object(msg) ... will start resolving the method in the 
>>>>> superclass bypassing inspecting .oleobject 
>>>>> and with the same technique: 
>>>>> 
>>>>> ole~sendWith:.object(msg,arrArg)
>>>>> ole~copy:.object
>>>>> ole~class:.object
>>>>> This would be much easier and very clear.
>>>>> 
>>>>> In ooRexx 5.0 this would be the place to change:
>>>>> 
>>>>> Index: interpreter/expression/ExpressionMessage.cpp
>>>>> ===================================================================
>>>>> --- interpreter/expression/ExpressionMessage.cpp        (revision 12388)
>>>>> +++ interpreter/expression/ExpressionMessage.cpp        (working copy)
>>>>> @@ -161,6 +161,7 @@
>>>>>      // do we have a super class override?
>>>>>      if (super != OREF_NULL)
>>>>>      {
>>>>> +/*
>>>>>          // super class overrides are only allowed if the
>>>>>          // sender and the target are the same object (i.e., a message to 
>>>>> SELF)
>>>>>          if (_target != context->getReceiver())
>>>>> @@ -167,6 +168,7 @@
>>>>>          {
>>>>>              reportException(Error_Execution_super);
>>>>>          }
>>>>> +*/
>>>>> 
>>>>>          _super = (RexxClass *)super->evaluate(context, stack);
>>>>>          // we send the message using the stack, which
>>>>> Doing so will make your example work on ooRexx 5 as well! 
>>>>> 
>>>>> Also experimented with other scenarious, including ones where 
>>>>> "mistakingly" wrong override classes get supplied. 
>>>>> 
>>>>> arr=.array~of("a", "b")
>>>>>   ........................................... rexxtry.rex on WindowsNT
>>>>> say arr~items
>>>>> 2
>>>>>   ........................................... rexxtry.rex on WindowsNT
>>>>> say arr~items:super
>>>>>   Oooops ! ... try again.     Object method not found.
>>>>>                               Object "an Array" does not understand 
>>>>> message "ITEMS".
>>>>>   rc = 97.1 ................................. rexxtry.rex on WindowsNT
>>>>> say arr~items:.collection
>>>>> 2
>>>>>   ........................................... rexxtry.rex on WindowsNT
>>>>> say arr~items:.rexxinfo
>>>>>   Oooops ! ... try again.     Object method not found.
>>>>>                               Object "an Array" does not understand 
>>>>> message "ITEMS".
>>>>>   rc = 97.1 ................................. rexxtry.rex on WindowsNT
>>>>> say arr~copy
>>>>> a
>>>>> b
>>>>>   ........................................... rexxtry.rex on WindowsNT
>>>>> say arr~copy:.rexxinfo
>>>>>   Oooops ! ... try again.     Object method not found.
>>>>>                               Object "an Array" does not understand 
>>>>> message "COPY".
>>>>>   rc = 97.1 ................................. rexxtry.rex on WindowsNT
>>>>> say arr~copy:.object
>>>>> a
>>>>> b
>>>>>   ........................................... rexxtry.rex on WindowsNT
>>>>> So ooRexx 5 already catches wrong overrides and raises the appropriate 
>>>>> conditions (cf. overrides "super", ".rexxinfo" above)!
>>>>> 
>>>>> ---
>>>>> 
>>>>> Conceptually this change will allow the programmer to not only send a 
>>>>> message to the object, but also to tell the object in which superclass to 
>>>>> start the search for a matching method if he has a need to do so. 
>>>>> 
>>>>> In the case of .OLEObject it makes it simple for programmers to tell the 
>>>>> OLE object to start its search for a method in the root class .object 
>>>>> applying existing knowledge! So no need to come up with awkwardly named 
>>>>> methods or another dispatch.super method to somehow get access to the 
>>>>> root class methods making the usage/protocol of such classes rather 
>>>>> complicated. So such a change would simply allow to apply the message 
>>>>> resolution override pattern that the programmer is accustomed to already.
>>>>> 
>>>>> ---
>>>>> 
>>>>> The question would be whether there are any potentially dangerous 
>>>>> side-effects or incompatibilies with existing code that could get 
>>>>> introduced by removing this particular check. 
>>>>> 
>>>>> ---rony
>>>>> 
>>>> Opened a RFE for this: 
>>>> <https://sourceforge.net/p/oorexx/feature-requests/802/> 
>>>> <https://sourceforge.net/p/oorexx/feature-requests/802/>
>>>> ---rony
>>>> 
>>> Implemented <http://sourceforge.net/p/oorexx/code-0/12390> 
>>> <http://sourceforge.net/p/oorexx/code-0/12390>. Added appropriate tests. 
>>> 
>>> ---rony
>>> 
> 
> _______________________________________________
> Oorexx-devel mailing list
> Oorexx-devel@lists.sourceforge.net
> https://lists.sourceforge.net/lists/listinfo/oorexx-devel

_______________________________________________
Oorexx-devel mailing list
Oorexx-devel@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/oorexx-devel

Reply via email to