Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
32 changes: 15 additions & 17 deletions ba/doc/conformance.md

Large diffs are not rendered by default.

4 changes: 2 additions & 2 deletions ba/doc/properties.md
Original file line number Diff line number Diff line change
Expand Up @@ -19,7 +19,7 @@ This review covers the 19 issues carrying the `ba` label that were open on Septe
| [#2669 — action blocks not fully typechecked](https://github.com/osate/osate2/issues/2669) | The reproduction determines the port's enum type from `Data_Representation` and `Enumerators`, both property values that may be overridden on a feature instance. |
| [#3173 — omitted loop classifier](https://github.com/osate/osate2/issues/3173) | Grammar acceptance and integer-range inference are declarative. Inference from ports or arrays uses effective `Data_Representation`, `Base_Type`, and `Dimension` values and resolved prototype actuals, so that portion is instance-specific. |
| [#3181 — communication and call signatures](https://github.com/osate/osate2/issues/3181) | Target category, parameter count and order, and direction are structural. Actual/formal type compatibility becomes instance-specific wherever it uses Data Model representation, array, range, or feature properties. |
| [#3199 — disabled type conformance](https://github.com/osate/osate2/issues/3199) | Simple classifier-identity and literal-kind mismatches can still be checked declaratively. Operator applicability, arrays, ranges, structural data types, and property-reference typing currently consume `Data_Representation`, `Dimension`, `Integer_Range`, and related property values. The umbrella implementation plan in the issue comments therefore needs splitting into declarative and instance passes. |
| [#3199 — declared type conformance](https://github.com/osate/osate2/issues/3199) | The source fix checks classifier identity, literal compatibility, and statically declared Data Model properties. It does not establish conformance after contained overrides or effective prototype bindings. Those checks, including instance-specific operator applicability, arrays, ranges, and property-reference values, remain [#3229](https://github.com/osate/osate2/issues/3229). |

## Issues not inherently affected

Expand Down Expand Up @@ -58,7 +58,7 @@ The current BA validation path cannot soundly evaluate effective property values
- `InstanceObjectImpl.getPropertyValueInternal` checks those cached local values before falling back to the declarative model.
- The BA plug-in registers parser, linker, unparser, and text-position services, but no annex instantiator or other instance-checking hook.

Consequently, property-dependent checks must not produce ordinary source-validation diagnostics. They need an instance-side BA validation or analysis entry point that evaluates the declarative annex separately in each `ComponentInstance` context and reports against the affected instance, with source navigation where possible.
Consequently, source diagnostics cannot establish conformance for effective instance properties. The #3199 source policy also checks statically declared Data Model properties; its diagnostics describe those declarations, not the values after contained overrides. Checking effective values needs an instance-side BA validation or analysis entry point under [#3229](https://github.com/osate/osate2/issues/3229) that evaluates the annex separately in each `ComponentInstance` context and reports against the affected instance, with source navigation where possible.

The declarative validator should retain checks whose answer cannot vary between instances, including syntax, name resolution, structural category and direction rules, property-definition type restrictions, and property-independent portions of type checking.

Expand Down
Original file line number Diff line number Diff line change
@@ -1,2 +1,4 @@
error | semantic | 40 | 39 | 12 | internal event 'raised_event' has no data: it cannot be an assignment target
error | semantic | 41 | 57 | 1 | internal event 'raised_event' has no data: its send action cannot carry a value
error | semantic | 43 | 59 | 6 | type error for 'assignment', 'Base_Types::Integer' expected, found 'standard string'.
error | semantic | 44 | 55 | 6 | type error for 'internal port send action', 'Base_Types::Integer' expected, found 'standard string'.
Original file line number Diff line number Diff line change
@@ -0,0 +1,2 @@
error | semantic | 38 | 69 | 12 | type error for 'assignment', 'Base_Types::Integer[2]' expected, found 'Base_Types::Integer[3]'.
error | semantic | 39 | 61 | 6 | type error for 'assignment', 'Base_Types::Integer[2]' expected, found 'Base_Types::Integer[2][2]'.
Original file line number Diff line number Diff line change
@@ -0,0 +1,5 @@
error | semantic | 64 | 65 | 6 | type error for 'assignment', 'ClassifierIdentity::first_type' expected, found 'ClassifierIdentity::second_type'.
error | semantic | 65 | 58 | 5 | type error for 'assignment', 'ClassifierIdentity::first_type' expected, found 'ClassifierIdentity::child_type'.
error | semantic | 66 | 77 | 14 | type error for 'assignment', 'ClassifierIdentity::first_type' expected, found 'ClassifierIdentity::first_type.impl'.
error | semantic | 68 | 52 | 20 | type error for 'assignment', 'ClassifierIdentity::first_boolean' expected, found 'ClassifierIdentity::second_boolean'.
error | semantic | 69 | 53 | 20 | type error for 'assignment', 'ClassifierIdentity::first_boolean' expected, found 'ClassifierIdentity::second_boolean'.
Original file line number Diff line number Diff line change
@@ -0,0 +1,4 @@
error | semantic | 48 | 33 | 15 | type error for 'port dequeue action', 'Base_Types::String' expected, found 'Base_Types::Integer'.
error | semantic | 49 | 41 | 7 | type error for 'actual for 'argument'', 'Base_Types::String' expected, found 'Base_Types::Integer'.
error | semantic | 49 | 50 | 7 | type error for 'actual for 'result'', 'Base_Types::String' expected, found 'Base_Types::Integer'.
error | semantic | 50 | 52 | 6 | type error for 'internal port send action', 'Base_Types::Integer' expected, found 'standard string'.
Original file line number Diff line number Diff line change
@@ -0,0 +1,4 @@
error | semantic | 40 | 54 | 6 | type error for 'assignment', 'Base_Types::Integer' expected, found 'standard string'.
error | semantic | 41 | 41 | 13 | type error for 'port send action', 'Base_Types::String' expected, found 'universal integer'.
error | semantic | 42 | 51 | 10 | Invalid operand types for operator "+": left operand has type universal integer, right operand has type standard string
error | semantic | 43 | 58 | 16 | Invalid operand types for operator "<": left operand has type Base_Types::Integer, right operand has type standard string
Original file line number Diff line number Diff line change
@@ -0,0 +1,4 @@
error | semantic | 39 | 55 | 1 | type error for 'assignment', 'Base_Types::Float' expected, found 'universal integer'.
error | semantic | 40 | 53 | 13 | type error for 'assignment', 'Base_Types::Float' expected, found 'Base_Types::Integer'.
error | semantic | 41 | 54 | 7 | Invalid operand types for operator "+": left operand has type universal integer, right operand has type universal real
error | semantic | 42 | 51 | 26 | Invalid operand types for operator "+": left operand has type Base_Types::Integer, right operand has type Base_Types::Float
Original file line number Diff line number Diff line change
@@ -0,0 +1,3 @@
error | semantic | 34 | 3 | 193 | SourceDiagnostics::worker.impl has no complete state : Behavior Annex D.3.(L3) legality rule failed.
error | semantic | 35 | 34 | 1 | type error for 'behavior variable initializer', 'Base_Types::Boolean' expected, found 'universal integer'.
error | semantic | 41 | 31 | 7 | Behavior variable 'counter' may be read before it is initialized
Original file line number Diff line number Diff line change
@@ -1,7 +1,7 @@
error | linking | 11 | 6 | 19 | Couldn't resolve reference to ModelUnit 'Behavior_Properties'.
error | linking | 65 | 56 | 4 | Couldn't resolve reference to Property Constant, Property Definition, Enumeration or Unit literal 'LSER'. For classifier references use classifier( <ref> ).
error | linking | 65 | 7 | 45 | Couldn't resolve reference to property definition 'Behavior_Properties::Subprogram_Call_Protocol'.
error | linking | 67 | 56 | 4 | Couldn't resolve reference to Property Constant, Property Definition, Enumeration or Unit literal 'HSER'. For classifier references use classifier( <ref> ).
error | linking | 67 | 56 | 4 | Couldn't resolve reference to Property Constant, Property Definition, Enumeration or Unit literal 'LSER'. For classifier references use classifier( <ref> ).
error | linking | 67 | 7 | 45 | Couldn't resolve reference to property definition 'Behavior_Properties::Subprogram_Call_Protocol'.
error | semantic | 54 | 12 | 1 | Behavior variable 'x' may be read before it is initialized
error | semantic | 92 | 27 | 1 | Behavior variable 'v' may be read before it is initialized
error | linking | 69 | 56 | 4 | Couldn't resolve reference to Property Constant, Property Definition, Enumeration or Unit literal 'HSER'. For classifier references use classifier( <ref> ).
error | linking | 69 | 7 | 45 | Couldn't resolve reference to property definition 'Behavior_Properties::Subprogram_Call_Protocol'.
error | semantic | 56 | 12 | 1 | Behavior variable 'x' may be read before it is initialized
error | semantic | 95 | 27 | 1 | Behavior variable 'v' may be read before it is initialized
Original file line number Diff line number Diff line change
@@ -1,5 +1,5 @@
error | linking | 11 | 6 | 19 | Couldn't resolve reference to ModelUnit 'Behavior_Properties'.
error | linking | 65 | 56 | 4 | Couldn't resolve reference to Property Constant, Property Definition, Enumeration or Unit literal 'LSER'. For classifier references use classifier( <ref> ).
error | linking | 65 | 7 | 45 | Couldn't resolve reference to property definition 'Behavior_Properties::Subprogram_Call_Protocol'.
error | linking | 67 | 56 | 4 | Couldn't resolve reference to Property Constant, Property Definition, Enumeration or Unit literal 'HSER'. For classifier references use classifier( <ref> ).
error | linking | 67 | 56 | 4 | Couldn't resolve reference to Property Constant, Property Definition, Enumeration or Unit literal 'LSER'. For classifier references use classifier( <ref> ).
error | linking | 67 | 7 | 45 | Couldn't resolve reference to property definition 'Behavior_Properties::Subprogram_Call_Protocol'.
error | linking | 69 | 56 | 4 | Couldn't resolve reference to Property Constant, Property Definition, Enumeration or Unit literal 'HSER'. For classifier references use classifier( <ref> ).
error | linking | 69 | 7 | 45 | Couldn't resolve reference to property definition 'Behavior_Properties::Subprogram_Call_Protocol'.
Loading