ST6RI-752 Reimplement Xtext workarounds using Xtext parse postprocessing #570
Add this suggestion to a batch that can be applied as a single commit.
This suggestion is invalid because no changes were made to the code.
Suggestions cannot be applied while the pull request is closed.
Suggestions cannot be applied while viewing a subset of changes.
Only one suggestion per line can be applied in a batch.
Add this suggestion to a batch that can be applied as a single commit.
Applying suggestions on deleted lines is not supported.
You must change the existing code in this line in order to create a valid suggestion.
Outdated suggestions cannot be applied.
This suggestion has been applied or marked resolved.
Suggestions cannot be applied from pending reviews.
Suggestions cannot be applied on multi-line comments.
Suggestions cannot be applied while the pull request is queued to merge.
Suggestion cannot be applied right now. Please check back later.
Background
There is non-generated code in the
Impl
classes (in packageorg.omg.sysml.impl
), inserted to work around limitations in parsing using Xtext. In particular, there were previously a number of methods that were specifically commented as “Xtext workarounds”. Ideally, these would be better handled as actions taken when constructing the abstract syntax tree during parsing, but that is not supported in the Xtext grammar language. Instead, this PR implements a mechanism that makes the necessary changes after the construction of the syntax tree, but before other processing is done on it, so this code no longer needs to be inserted into theImpl
classes.Note, however, that it does not replace the following mechanisms:
Feature::isNonunique
property to parse thenonunique
keyword.Expression::operand
property to parse the KerML expression notation.It also does not remove a number other cases of handwritten code, mostly related to property default values and additional method overrides, which may be addressed in a future PR.
Changes
Relationship
implementations) toElementAdapter::postProcess
.clearReference
that are not longer required.Relationship::source
andtarget
, since this is obsoleted by the post-processing code forRelationship
subclasses.@generated NOT
previously.