@seidewitz seidewitz released this Oct 23, 2017 · 41 commits to master since this release

Assets 3

This is a base release of the Alf Reference Implementation, conforming to the Alf 1.1 specification.

Release Notes

This version has the following limitations.

  • Constructorless instance creation does not set attribute default values.

    Since constructorless instance creation only applies to classes not specified in Alf notation, default value evaluation would have to be compiled into the target model at each point of instance creation, which seems excessive (and may not even be valid, if the attributes are not publicly visible). If attribute initialization is required, this should properly be done using a constructor, even for non-Alf classes.

  • Only classifier templates with classifier template arguments are supported, even for external template binding.

    The Alf notation only supports the definition of classifier templates with classifier template parameters. The reference implementation can only handle references to instantiations of these sorts of templates, even if the template binding is done in a UML model external to the Alf text (unless the UML tool itself automatically provides a fully expanded bound element for the template binding, as allowed by the UML 2.5 specification).

The following sections list all the changes in this release from the previous v1.0.0 base release.

OMG Issue Resolutions

This version includes resolutions of the following OMG issues, as approved by the Alf 1.1 Revision Task Force (RTF).

Issue #18 Implement resolutions for Alf 1.1 RTF ballot 2

(Preliminary implementations of some of these resolutions were already included in the v1.0.0 release. However, in all cases, the implementation has been updated in this version to conform to the resolutions as actually adopted by the RTF.)

ALF11-5 BehaviorInvocationExpression Should Have a Derived Implicit Binding
ALF11-6 Derivation of the Type of a ConditionalTestExpression
ALF11-7 NameExpression::assignment Derivation for a Parameter Name
ALF11-8 ConcurrentClauses Should Have a Derived assignmentBefore
ALF11-9 Empty Type Names for Initialization Sequence and Construction Expressions
ALF11-10 NonFinalClause and SwitchClause Should Have Derived assignmentBefore and assignmentAfter
ALF11-11 NamespaceDefinition::member type
ALF11-12 ActivityDefinition and OperationDefinition Bodies
ALF11-24 IncrementOrDecrementExpression::operator attribute is missing
ALF11-25 NameLeftHandSide needs a feature constraint
ALF11-28 The resolution of Issue 17517 was incomplete
ALF11-34 An abstract operation should not be allowed to have a body
ALF11-35 Overload resolution for feature invocation expressions should be specific about the case of multiple most-specific operations.
ALF11-37 Multiplicity upper bound of a select or reject expression should be based on its primary expression

Issue #19 Implement resolutions for Alf 1.1 RTF ballot 3

(Preliminary implementations of some of these resolutions were already included in the v1.0.0 release. However, in all cases, the implementation has been updated in this version to conform to the resolutions as actually adopted by the RTF.)

ALF11-2 Definition of Collection Class
ALF11-4 Allow Expressions to Just Conform to Primitive Types
ALF11-23 Primitive Type casts
ALF11-29 Alf should support Real

Issue #25 Implement resolutions for Alf 1.1 RTF ballot 4

(Preliminary implementations of some of these resolutions were already included in the v1.0.0 release. However, in all cases, the implementation has been updated in this version to conform to the resolutions as actually adopted by the RTF.)

ALF11-22 Sequence feature invocation expressions
ALF11-26 Classify statements should start classifier behaviors
ALF11-43 Inconsistent rules for local names defined in if and switch statements
ALF11-44 Alf should have a "null-coalescing" operator
ALF11-67 Instance creation should start classifier behaviors of parent classes
ALF11-75 Incorrect derivation of AssignmentExpression::isFeature
ALF11-77 Multiplicity and typing of local names should be better tracked

Issue #31 Implement resolutions for Alf 1.1 RTF ballot 5

ALF11-14 Indexing in sequence access expressions should be 0-based

Issue #35 Implement resolutions for Alf 1.1 RTF ballot 6

ALF11-90 The Alf 1.1 specification should reflect the latest version of fUML

Enhancements

This version includes the following enhancements.

Issue #32 Implement mapping of profile applications
Issue #36 Parsed elements should record both starting and ending column positions
Issue #37 There should be a way to determine the external dependencies of Alf text
Issue #38 Allow constructors in instance creation expressions to not have to return the new object
Issue #39 It should not be necessary to fully instantiate templates in order to do constraint checking
Issue #41 External stub resolution should not be through naming
Issue #42 Error message selection/suppression needs improvement
Issue #43 SequenceFunctions should be implemented as primitive behaviors
Issue #48 Updates are needed to allow better integration with external tools

Bug Fixes

This version includes the following bug fixes.

Issue #15 Collection conversion not done for local name declaration statement
Issue #16 Stereotype resolution isn't quite correct
Issue #17 Constructor overload resolution not working right
Issue #20 For statements containing return statements must not be mapped as expansion regions
Issue #21 Checking for conversions is not being done correctly for out parameter arguments
Issue #22 Invocation of an activity with no return type in a conditional-test expression can cause an exception
Issue #23 Operands of equality expressions are not always mapped
Issue #24 ReadLine should always return a value
Issue #26 Cast expressions are being incorrectly given a lower bound of 1 instead of 0
Issue #27 Need to convert Natural values to UnlimitedNatural on assignment
Issue #28 Out parameters should be assignable in conditional statement conditions
Issue #29 Error in implementation of Map::size()
Issue #30 Assignments made in the 2nd operand of a binary expression are not properly updated
Issue #34 Template parameters with constraining classifiers do not map correctly
Issue #40 Resolution to OMG Issue ALF11-2 was not fully implemented
Issue #44 In certain cases, structured activity node wrapping can lead to incorrect execution
Issue #45 The derivation of whether collection conversion was needed was not always correct
Issue #46 Operation mapping is not generating distinguishable names for methods of overloaded operations
Issue #47 The check for alternative constructor validity is not implemented correctly