There is non-generated code in the Impl classes (in package org.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 the Impl classes.
Note, however, that it does not replace the following mechanisms:
The use of the Feature::isNonunique property to parse the nonunique keyword.
The use of the 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
Moves post-processing code marked as an "Xtext workaround" (from Relationship implementations) to ElementAdapter::postProcess.
Remove ssome special checks in clearReference that are not longer required.
Removes non-generated code for Relationship::source and target, since this is obsoleted by the post-processing code for Relationship subclasses.
Re-generates some methods incorrectly tagged as @generated NOT previously.
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.