RE: [sv-bc] Scope resolution operator and import::*

From: Bresticker, Shalom <shalom.bresticker_at_.....>
Date: Mon Jul 24 2006 - 07:00:53 PDT
I agree.

 

Shalom

 

________________________________

From: owner-sv-bc@server.eda-stds.org
[mailto:owner-sv-bc@server.eda-stds.org] On Behalf Of Francoise
Martinolle
Sent: Monday, July 24, 2006 4:53 PM
To: Brad Pierce; sv-bc@server.eda-stds.org
Subject: RE: [sv-bc] Scope resolution operator and import::*

 

It may not be stated explicitly in the LRM if we searched first in the
current scope of if we first should interpret a "name:: "as a full
qualified

package reference. I think that since both class scopes and package
scopes can be followed by ::. we cannot assume that

a name followed by a :: is going to be a fully qualified package
reference. 

My interpretation is that :

Z::F(i) is searched first in the scope where it appears: the interface
IFC scope. 

In that scope, since there are no local symbols declared or explicit
package imports for Z, it searches

 the list of the packages that are wild card imported and it will find
the package A which contains a class called Z 

which contains a static function called F. The name resolution succeeds
at that point. If there were no matching symbol for Z at that

scope, I think that it should try to resolve the name as a full
qualified package reference before going up the scopes and repeating the
search.

 

The order in which to resolve full qualified package references or class
scope is not explicitly stated in the LRM.

 

 

Francoise

       '

	
________________________________


	From: owner-sv-bc@eda-stds.org [mailto:owner-sv-bc@eda-stds.org]
On Behalf Of Brad Pierce
	Sent: Sunday, July 23, 2006 3:36 AM
	To: sv-bc@eda-stds.org
	Subject: [sv-bc] Scope resolution operator and import::*

	Following up on

	 

	   http://www.eda-stds.org/svdb/bug_view_page.php?bug_id=0001216

	   http://www.eda-stds.org/svdb/bug_view_page.php?bug_id=0001546

	 

	Which function does the assignment

	 

	    assign o = Z::F(i);

	 

	use in the following?

	     

	   package A;

	     class Z;

	       static function F(i); return i; endfunction:F

	     endclass:Z

	   endpackage:A

	 

	   package Z;

	     function F(i); return ~i; endfunction:F

	   endpackage:Z

	 

	   interface IFC(output o, input i);

	     import A::*;

	     assign o = Z::F(i);

	   endinterface:IFC

	 

	-- Brad

	 

	 

	 
Received on Mon Jul 24 07:02:48 2006

This archive was generated by hypermail 2.1.8 : Mon Jul 24 2006 - 07:02:57 PDT