Re: [sv-bc] Is an unnamed block with declarations a scope?

From: Steven Sharp <sharp_at_.....>
Date: Mon Aug 15 2005 - 15:33:12 PDT
>From: Greg Jaxon <Greg.Jaxon@synopsys.com>

>To be fair and balanced: the following P1800 text supports (1)
>and needs changing if either (2) or (3) is to be adopted:
>
>19.13 [Name spaces]:
>> 6) The block name space is introduced by named or unnamed blocks,
>> the specify, function, and task constructs. It unifies the
>> definitions of the named blocks, functions, tasks, parameters,
>> named events, variable type of declaration and user-defined
>> types within the enclosing construct.

I agree with you that a literal reading of this would support (1).
I think it is pretty clear that this is not what was intended, given
the backward compatibility issue, which would contradict other
statements in the LRM.

If we assume that this was a minor mistake, and "unnamed blocks"
was intended to mean "unnamed blocks with declarations", then we
get (2).  This is a straightforward clarification of the text.

On the other hand, I don't see any simple mistake that could be
corrected to get interpretation (3).  The text says that the
block name space unifies the definitions of the named blocks and
variables within the enclosing construct.  So named blocks and
variables within the same enclosing construct MUST go into the
same name space (AKA scope).  This text clearly disallows moving
the names of named blocks upward to a higher-level name space,
while keeping variables within the immediately enclosing one.
That would not "unify" the two, and would directly contradict
this text.  No minor clarification of terms could change that,
while maintaining the existing behavior for other kinds of scopes.
The text would need to be completely re-written to express this
new behavior.

Steven Sharp
sharp@cadence.com
Received on Mon Aug 15 15:34:01 2005

This archive was generated by hypermail 2.1.8 : Mon Aug 15 2005 - 15:34:37 PDT