Language Change Specification for 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
This topic: P1076
> WebHome >
VHDL2017 > LCS2016_049
Topic revision: r29 - 2017-07-16 - 18:07:19 -
JimLewis