Greg, I want to give a bit of perspective on what is going on here. You said: This differs from the rules currently given in the LRM. A function name that is available as potentially locally visible in any of the enclosing scopes is considered /before/ later declarations as a function in any of those scopes. That was part of the original entire discussion. Let's go back to 1364-2005. module m; task t; endtask if (1) begin:b initial t(); // (A) task t(); endtask end endmodule Given the above, everyone agreed that at line (A) t would bind to m.b.t and NOT to the lexically preceding m.t I assume that you agree with that as well. Given that, it seemed bad to have: package pkg; task t; endtask endpackage module m; import pkg::*; if (1) begin:b initial t(); // (A) task t(); endtask end endmodule end up changing the binding of (A) to be pkg::t. My solution (the original 1809 proposal) was to say that the reference at line (A) causes the import of t but does NOT necessarily bind to that import. So at (A) we would bind t to m.b.t but the name "t" would end up as an unreferenced import in scope m. This could cause a conflict with another declaration of t later in m. Francoise objected to having an *unused* imported name cause such a conflict. Her rules are designed to avoid that conflict. My position is that I am not sure that avoiding the conflict is necessarily a good idea, particularly in the context of $unit. In addition I am not sure that Francoise's rules correctly account for the 2217 rules for binding dotted names. Gord. -- -------------------------------------------------------------------- Gordon Vreugdenhil 503-685-0808 Model Technology (Mentor Graphics) gordonv@model.com -- This message has been scanned for viruses and dangerous content by MailScanner, and is believed to be clean.Received on Thu Dec 13 07:31:32 2007
This archive was generated by hypermail 2.1.8 : Thu Dec 13 2007 - 07:31:57 PST