Validate external condition triggers and preserve subcomponent context 馃 - #3239
Merged
Merged
Conversation
Exercise external-condition triggers through standalone AADL model projects. Cover incoming owner ports, outgoing subcomponent ports, nested expressions, invalid kinds and directions, unresolved names, and mode refinement with two subcomponents of the same classifier. The baseline run executes four tests: the legal owner-port case passes, while invalid-trigger diagnostics, retained subcomponent context, and context-sensitive mode refinement fail for the reported defects without unrelated model errors.
Diagnose invalid trigger kinds, unresolved names, unsupported paths, and incorrect port directions. Keep independent strict-model diagnostics for wrong-direction ports that are still fully represented. Accept outgoing event and event data ports of direct subcomponents and retain their context in the strict metamodel, generated model and edit code, translation, and mode-refinement comparisons. Preserve feature-group paths and distinguish subcomponents that share a port declaration. Extend the regression and corpus expectations to cover context serialization and grouped ports, and document the supported extension. The complete root-reactor verify passed with local Tycho artifacts ignored and Xtext generation disabled: 1,643 tests, including 183 BA tests, with no failures or skips.
Declare the terminal running states in the three valid issue #3232 models as final. The blocking-execution-state checker merged from master correctly rejects these states when they have no outgoing transition, causing PR #3239's integration tests to fail. Update the corresponding position and unparse expectations. The complete Behavior Annex suite passes 186 tests, and the clean offline root reactor passes 1,646 tests with no failures, errors, or skips.
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
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.
Fixes #3232.
External conditions silently dropped triggers that were not event or event data ports, accepted incorrect directions, and lost the subcomponent qualifier of references such as
first.p. This change reports invalid trigger kinds, directions, unresolved names, and unsupported paths. Strict checkers are gated when translation cannot represent a trigger; independent category diagnostics remain available for a fully represented port with the wrong direction.As an intentional extension to D.3's incoming-port wording, outgoing event and event data ports of direct subcomponents are accepted. The optional
ActualPortHolder.contextrecords the subcomponent, while the existing orderedgroupHolderslist retains the feature-group path. Mode-refinement comparisons include both, distinguishingfirst.pfromsecond.pwhen the subcomponents share a classifier. Model and edit code was regenerated manually in Eclipse; the BA grammar is unchanged.Issue3232Testuses the separatemodels/issue3232AADL project to check incoming and bidirectional owner ports, outgoing and bidirectional subcomponent ports, nested conditions, invalid names and directions, feature groups, thread-group contexts, XMI serialization, and matching versus mismatching mode triggers. The initial four tests reproduced three failures before the fix. The completed six-test regression and the full 183-test BA suite pass. The existing subprogram test now asserts both its category diagnostic and the added direction diagnostic.Validation used offline Maven with
-T5. The clean root command was:Result: BUILD SUCCESS, 1,643 tests across 15 test bundles, with 0 failures, 0 errors, and 0 skips. The earlier root
verifywith-Dxtext.generator.skip=truealso passed 1,643 tests.git diff --checkpasses.Dependencies: none; targets
master. The regression commit precedes the production fix. The issue comment has been updated to include outgoing subcomponent triggers.Residual risk: consumers of the strict model must include the new optional context when identifying a subcomponent trigger. Serialization and mode-refinement regressions cover that distinction; unqualified ports retain a null context.