Language Change Specification for Map Generics On Subprogram Call

LCS Number: LCS-2016-049
Version: 7
Date: 21-Mar-2017
Status: Voting
Author: Jim Lewis
Email: Main.JimLewis
Source Doc: Map Generics On Subprogram Call
More Doc: history
Summary: Map Generics On Subprogram Call

Style Notes

Changes are shown in red font. Deletions are crossed out. Editing notes in green font.

Details of Language Change

049.1: 3rd paragraph in 4.2.1 General on page 20

An uninstantiated subprogram without a generic map aspect shall not be called, except as a recursive call within the body of the uninstantiated subprogram. Moreover, an uninstantiated subprogram without a generic map aspect shall not be used as a resolution function or used as a conversion function in an association list.

049.2: 5th paragraph in 6.5.7.2 on page 84

[Add new list item as the last item in the list for the list that starts with]

The purpose of a generic map aspect is as follows:
[5 other list items unmodified]

- A generic map aspect appearing immediately within a subprogram header associates actuals with the formals defined by the same subprogram header. This applies to a generic map aspect appearing in the subprogram header of an explicitly declared generic-mapped subprogram, or a generic-mapped subprogram that is equivalent to a subprogram instantiation declaration, or a generic-mapped subprogram that is implicitly defined when a subprogram call consists of a call to an uninstantiated subprogram with a generic map aspect.

Section 9.3.4 Function calls

049.3: [Edit paragraph: In section 9.3.4 on page 136, 1st paragraph]

A function call invokes the execution of a function body. The call specifies the name of the function to be invoked, the actual generics, if any, to be associated with the formal generics of the function, and specifies the actual parameters, if any, to be associated with the formal parameters of the function. Execution of the function body results in a value of the type declared to be the result type in the declaration of the invoked function.

049.4: [Edit paragraph: In section 9.3.4 on page 136, 1st paragraph]

  function_call ::=
      function_name [ generic_map_aspect ][ parameter_map_aspect ( actual_parameter_part ) ]
      
      parameter_map_aspect ::=
          [ parameter map ] ( parameter_association_list )
      
      actual_parameter_part ::= parameter_association_list
      

049.5: [Add paragraph: In section 9.3.4 on page 136, before 3th paragraph counting BNF as one paragraph]

For each formal generic of a function, a function call shall specify exactly one corresponding actual generic. This actual generic is specified either explicitly, by an association element (other than the actual part open) in the association list, or in the absence of such an association element, by a default.

049.6: [Edit paragraph to delete reference to 6.5.2: In section 9.3.4 on page 136, 3th paragraph counting BNF as one paragraph]

For each formal parameter of a function, a function call shall specify exactly one corresponding actual parameter. This actual parameter is specified either explicitly, by an association element (other than the actual part open) in the association list, or in the absence of such an association element, by a default expression (see 6.5.2).

049.7: [Edit paragraph: In section 9.3.4 on page 136, 4th paragraph counting BNF as one paragraph]

It is an error if the function name denotes an uninstantiated function and the function call does not have a generic map aspect.

049.8: [Add paragraph: In section 9.3.4 on page 136, after 4th paragraph counting BNF as one paragraph]

For an uninstantiated function call with a generic map aspect there is an implicitly defined subprogram instantiation declaration and a call to the implicitly defined subprogram instance. The implicit subprogram instance is defined prior to the uninstantiated function call in the declaration region that immediately encloses and/or includes the function call. The call to the uninstantiated function is equivalent to a call to the implicitly instantiated function with the same parameters that were specified in the uninstantiated function call. The implicitly instanced function does not create a designator that can be referenced separately from the function call. Hence, ambiguity can not be introduced by the existence of an implicit function instance.

Section 10.7 Procedure Call Statement

[049.9: Edit: Change BNF production of procedure_call of 10.7 on page 163 as follows]

  procedure_call ::= 
      procedure_name [ generic_map_aspect ][ parameter_map_aspect ( actual_parameter_part ) ]

Section 10.7 Procedure Call Statement

049.10: [Edit paragraph: In section 10.7 on page 163, 3rd paragraph where BNF counts as 1 paragraph]

The procedure name specifies the procedure body to be invoked. It is an error if the procedure name denotes an uninstantiated procedure and the procedure call does not have a generic map aspect. The generic map aspect, if present, specifies the association of actual genierics with formal generics of the procedure. The actual parameter part parameter map aspect, if present, specifies the association of actual parameters with formal parameters of the procedure.

Section 10.7 Procedure Call Statement

049.11: [Add paragraph: In section 10.7 on page 163 after 3rd paragraph where BNF counts as 1 paragraph]

For each formal generic of a procedure, a procedure call shall specify exactly one corresponding actual generic. This actual generic is specified either explicitly, by an association element (other than the actual open) in the association list or, in the absence of such an association element, by a default.

049.12: [Add paragraph: In section 10.7 on page 163 after 3rd paragraph where BNF counts as 1 paragraph]

For an uninstantiated procedure call with a generic map aspect there is an implicitly defined subprogram instantiation declaration and a call to the implicitly defined subprogram instance. The implicit subprogram instance is defined prior to the uninstantiated procedure call in the declaration region that immediately encloses the procedure call. The call to the uninstantiated procedure is equivalent to a call to the implicitly instantiated procedure with the same parameters that were specified in the uninstantiated procedure call. The implicitly instanced procedure does not create a designator that can be referenced separately from the procedure call. Hence, ambiguity can not be introduced by the existence of an implicit procedure instance.

Section 11.4 Concurrent procedure calls

049.13: [Edit: 2nd paragraph of 11.4 on page 173]

The procedure call statement consists of the same procedure name, generic map aspect, and actual parameter part parameter map aspect that appear in the concurrent procedure call statement.

049.14: [Edit: Note 2 at the end of 11.4 on page 173]

NOTE 2-The value of an implicitly declared signal GUARD has no effect on evaluation of a concurrent procedure call unless it is explicitly referenced in one of the actual parts of the actual parameter part parameter map aspect of the concurrent procedure call statement.

14.6 Dynamic elaboration

049.15: [Edit: List item b in section 14.6 on page 213]

b) Execution of a subprogram call that is not an uninstantiated subprogram involves the elaboration of the parameter association list. This involves the elaboration of the parameter association element or elements in the association list associated with each interface declaration. Elaboration of the parameter association elements associated with a formal parameter declaration proceeds as follows:

049.16: [Add: New List item c in section 14.6 on page 214]

c) Execution of a subprogram call that is an uninstantiated subprogram involves the elaboration of the implicitly defined subprogram instantiation declaration and elaboration of the call to the implicitly defined subprogram instance.

049.17: [Edit: Change current list item c to list item d in section 14.6 on page 214]

d c) [NOTE: remaining text is unchanged]

Annex C

049.18: [Delete: actual_parameter_part on page 477]

actual_parameter_part ::= parameter_association_list

049.19: [Edit: function_call on page 487]

  function_call ::=
      function_name [ generic_map_aspect ][ parameter_map_aspect ( actual_parameter_part ) ]
      

049.20: [Add: parameter_map_aspect on page 492]

parameter_map_aspect ::=
          [ parameter map ] ( parameter_association_list )

049.21: [Edit: procedure_call on page 493]

  procedure_call ::= 
      procedure_name [ generic_map_aspect ][ parameter_map_aspect ( actual_parameter_part ) ]



Comments

Topic revision: r29 - 2017-07-16 - 18:07:19 - JimLewis
 
Copyright © 2008-2021 by the contributing authors. All material on this collaboration platform is the property of the contributing authors.
Ideas, requests, problems regarding TWiki? Send feedback