>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.comReceived 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