[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
|
[news.eclipse.modeling.mdt.uml2.ocl] Re: Calling static operations in OCL
|
Hi, Radek,
Yes, I will be adding a great deal to the EvaluationEnvironment to support
UML, anyway.
Sounds like a good note to append to 164887.
Thanks!
Christian
Radek Dvorak wrote:
> Great. It's there https://bugs.eclipse.org/bugs/show_bug.cgi?id=164887.
>
> I think AttributeCallExpCS involving static attributes also falls into
> this area.
> But it looks like supporting this also in evaluation would require
> extending EvaluationEnvironment interface with something like
> Object evaluate(Object target, EStructuralFeature feature)
> operation, similarly as it is done for operations.
>
> Could this also be supported ?
>
> /Radek
>
>
> "Christian W. Damus" <cdamus@xxxxxxxxxx> wrote in message
> news:ejidf6$cin$1@xxxxxxxxxxxxxxxxxxxx
>>
>> Hi, Radek,
>>
>> That looks like something introduced into the (recently released)
>> official 2.0 specification; the previous interim revision on which EMFT
>> 1.0 was implemented didn't have this (IIRC; I may be wrong).
>>
>> In any case, what is currently supported is:
>>
>> myPackage::MyClass.operation()
>>
>> because this matches
>>
>> [C] OperationCallExpCS ::= OclExpressionCS '.' simpleNameCS
>> '(' argumentsCS? ')'
>>
>> (although @pre obviously wouldn't apply, as in [E]).
>>
>> This rule matches because the OclExpressionCS can match a TypeExpCS.
>>
>> So, I think the dot notation should continue to be supported (it would
>> be, anyway, for compatibility), but the :: notation should be added.
>>
>> Would you mind raising a bug? This actually falls under an existing
>> catch-up-to-the-spec plan item, but it would be nice to track it
>> separately, too.
>>
>> Thanks!
>>
>> Christian
>>
>>
>> Radek Dvorak wrote:
>>
>>> Hi,
>>>
>>> When trying to parse operation call expression that invokes a static
>>> operation,
>>>
>>> myPackage::MyClass::operation()
>>>
>>> I get the following error:
>>> 1:19:1:20 "+" expected instead of "::"
>>> (I would rather expect something like "(Cannot find operation
>>> (operation())" here.)
>>>
>>> The OCL 2.0 spec mentions the following rule for this case.
>>> [G] OperationCallExpCS ::= pathNameCS '(' argumentsCS? ')
>>>
>>> Keeping in mind that the 'Concrete Syntax' part of the spec is a bit
>>> outdated,
>>> I am asking this in the newsgroup first, before raising a bug.
>>>
>>> Clearly, using a static operation does not make much sense if the target
>>> metamodel is 'ecore'.
>>> However, when targeting for instance UML metamodel, it could be useful.
>>> Also custom Environments supporting java <<utility>> classes would
>>> benefit
>>> from this.
>>>
>>> Regards,
>>> /Radek
>>