[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[news.eclipse.modeling.mdt.uml2.ocl] Re: Calling static operations in OCL

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
>