useocl / use

Home of the UML-based Specification Environment (USE)
GNU General Public License v2.0
43 stars 18 forks source link

UseModelApi: Lacks of `self` for attributes in OCL Expression #77

Closed ichxorya closed 5 months ago

ichxorya commented 6 months ago

Describe the bug Unable to automatically find the self of USE Class attributes.

To Reproduce Using Use Model Api:

Expected behavior Any .use specification can automatically understand the context (the attributes inside the class are automatically tagged self)

But while using the api, the selfs must be defined already to be able to parse.

Screenshots image image image image

It is runnable if I add self to the constraints: image

Desktop (please complete the following information):

Note

I'm developing an USE extension that parse non-use specifications.

h-man2 commented 6 months ago

Thanks for submitting the issue. I was able to reproduce the behavior to confirm the bug. The ModelAPI uses the OCLCompiler to create the Pre- and Postconditions, which is wrong.

If you need to proceed with your work, before the bug has been fixed, I suggest to have a look at the method ASSLCompiler::compileInvariants. It creates invariants, but conceptually it is the same. The key point their is, it uses a Context instead of a SymTable as it is done in OCLCompiler::compileExpression

h-man2 commented 6 months ago

A fix is available in #78. You can try it out with the results of the build.

ichxorya commented 6 months ago

Thank you, I'd try if asap