Validate Behavior Annex communication and call signatures 馃 - #3247
Merged
Merged
Conversation
Exercise communication target categories and directions, send payload counts, and complete subprogram signatures through embedded BA validation. Check writable actuals and preserve record-field and port targets in otherwise valid calls. The seven regressions fail on the current implementation: invalid actions and calls receive no diagnostics, and a valid out record-field argument is translated as a value expression. Keep property-dependent conformance separate under issue #3199.
Reject invalid communication targets, extra send values, and mismatched call arity or actual directions and categories. Include every formal feature in source order, preserving inherited positions and refinements across supported callable forms. Retain writable record-field and port actuals as targets, and route call data actuals through the existing type checker. Property-dependent conformance and access rights remain deferred to issue #3199 and instance validation. Refresh the affected characterization goldens and document these boundaries. Validation: all eight issue regressions and 207 BA tests pass. The clean offline root reactor passes 143 projects and 1,668 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.
BA communication actions previously accepted invalid targets and directions, silently discarded extra send values, and did not validate subprogram signatures. This change diagnoses those errors and preserves writable record-field and port actuals during translation.
Fixes #3181 for structural communication and signature validation. Property-dependent type conformance remains deferred to #3199 and the instance-model pass.
Changes
Issue3181Testand external fixtures undermodels/issue3181/, update affected characterization goldens, and document the remaining boundaries.Validation
The initial seven regressions failed before the fix: invalid models produced no diagnostics, and a valid output record field was translated as a value expression. The final eight issue tests pass, including additional inheritance and prototype coverage.
The BA suite passed all 207 tests. The clean root reactor below passed all 143 projects and 1,668 tests across 15 test bundles, with zero failures, errors, or skips; characterization goldens were compared without regeneration.
git diff --checkpassed. The regression commit precedes the production-fix commit.Dependencies and remaining boundaries
Targets
master; no unmerged PR dependencies or merge-order requirements.The production conformance comparison remains disabled under #3199. Effective access rights and property-derived representation, array, and range checks require instance validation. Unconstrained, unbound subprogram prototypes have no signature to check; formal categories that the strict model cannot represent receive an explicit unsupported-feature diagnostic. Invalid communication shapes gate subsequent strict checks, so the invalid-call characterization fixture now reports call errors before downstream operator diagnostics.