Repository navigation
Conversation
- Following abstract syntax class hierarchy, extends InstantiationExpressionParserPostProcessor and is extended by FeatureChainExpressionParserPostProcessor. - Also reverted ExpressionParserPostProcessor to previous version.
seidewitz
left a comment
There was a problem hiding this comment.
I have added two more commits. Tests still pass. Please review.
adaussy
left a comment
There was a problem hiding this comment.
On a small problem on headers.
| /******************************************************************************* | ||
| * SysML 2 Pilot Implementation | ||
| * Copyright (c) 2026 Model Driven Solutions, Inc. | ||
| * Copyright (c) 2026 Obeo |
There was a problem hiding this comment.
Why did you remove this copyright ?
There was a problem hiding this comment.
Because a replaced your update if this file with the previous version, which did not have any code from Obeo. Instead of using an if statement to insert the return parameter in the correct cases, I put extended the inheritance hierarchy from InstantiationExpressionParserPostProcessor to InvocationExpressionParserPostProcessor to FeatureChainExpressionPostProcessor, so FeatureChainExpressionPostProcessor ends up inheriting the adding of the result from InstantiationExpressonPostProcessor.
Similarly to changes made in PRs #815 and #818, this PR moves functionality for completing the abstract syntax of a
FeatureChainExpressionfrom its transformation adapter to its parse post-processor.Background
A
FeatureChainExpressionhas the formsrc.f.g.h, wheresrcis an expression andf.g.his a feature chain that is applied to the result ofsrc. Semantically, an expression of this form is equivalently to(see KerML, 8.4.4.9.6 Operator Expressions/Control Functions). Previously, this structure was created for a
FeatureChainExpressionin roughly three steps:srcexpression and a feature for thetgtfeature chain.FeatureChainExpressionAdapter.addAdditionalMembers) a nested feature under the expression’s source parameter when none exists.The problem is that creation of the
sourceTargetfeature created in step 2 can also be triggered indirectly by a derived-property query, if theaddAdditionalMembersmechanism is to be used, which is to be avoided.Objectives
Change
sourceTargetfeature (step 2 above) has been moved fromFeatureChainExpressionAdaptertoFeatureChainExpressionParserPostProcessing.