Conversation
Model separate and overlapping multi-source dispatch-relative timeout declarations, and require a state-specific duplicate diagnostic. Include a clean distinct-source control to preserve the legal multi-source form.
Track dispatch-relative timeout ownership for each expanded complete source state and report duplicates with the affected state name. Preserve once-per-declaration protocol checks and keep completion-relative timeouts on their more specific rule path.
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.
Summary
Fixes #3267
Cause and correction
The strict translator expands a multi-source declaration into one transition per source, but the driver deduplicates the shared dispatch condition by its declarative origin. Only the first expanded source therefore reached
D_4_L1_Check.The checker now records dispatch-relative timeout ownership for each expanded complete source before shared-condition deduplication. A second timeout reports the affected state, while protocol and Period checks continue to run once per written condition. Because
CompletionRelativeTimeoutextendsDispatchRelativeTimeout, the driver tests the completion-relative case first so the #3266 rule remains independent.Regression coverage
Issue3267Testvalidates three external model fixtures:The fixtures include diagnostics, resolved-model, source-position, and unparse characterization goldens.
Validation
Issue3267Test: 3 tests, 0 failures, 0 errorsIssue3154Test: 7 tests, 0 failures, 0 errorsCoveringSemanticTest: 11 tests, 0 failures, 0 errorsorg.osate.ba.testsbundle: 231 tests, 0 failures, 0 errors-Dtycho.localArtifacts=ignore: 143 modules, build successDependency and residual risk
This PR is stacked on #3276 and must merge after it. It reuses #3276's per-expanded-source uniqueness boundary, then adds the dispatch-relative branch. Grammar, metamodel, generated sources, and serialization logic are unchanged.