Limiting this discussion to SV-EC... Because inheritance (or extension)of a class is defined as the chaining of visible symbols. An extended class does not need to know the name of its parent. That's why we have 'super'. Dave > -----Original Message----- > From: Greg Jaxon [mailto:Greg.Jaxon@synopsys.com] > Sent: Monday, September 11, 2006 2:02 PM > To: Francoise Martinolle > Cc: Rich, Dave; Arturo Salz; Vreugdenhil, Gordon; Logie Ramachandran; Mark > Hartoog; SV_BC List; SV_EC List; sv-ac@verilog.org > Subject: Re: [sv-ec] Re: [sv-bc] Name resolution and imports > > What do you see as support for that claim? The identifier "base" > is not bound inside the scope of class base, or its descendants; > it is bound in the package scope that is exporting it. > > I agree that the base class can be used freely by anyone who > imports a class derived from it, but they surely did only know its > name if the producer of the derived class passes it along. > Of course most folks would want that effect, which is why > package chaining seemed so natural. > > Greg > > > Francoise Martinolle wrote: > > I agree with Dave, the base class is visible through the class > > inheritance of p3. > > > > Francoise > > ' > > > I might disagree that is not legal. Class p3 will get access to the > > symbols via the class hierarchy mechanism. It does not need to go > > through the package. > > > > Dave > > > > > >> -----Original Message----- > >> From: owner-sv-bc@server.eda.org [mailto:owner-sv-bc@server.eda.org] > > On > >> Behalf Of Arturo Salz > >> Sent: Monday, September 11, 2006 11:00 AM > >> To: Vreugdenhil, Gordon; Arturo Salz > >> Cc: Logie Ramachandran; Mark Hartoog; SV_BC List; SV_EC List; sv- > >> ac@server.verilog.org > >> Subject: RE: [sv-ec] Re: [sv-bc] Name resolution and imports > >> > >> You are correct in that simple case, but, consider the following > > example > >> package p1; > >> class base; > >> int x; > >> virtual function void F(base x); ... endfunction > >> endclass > >> endpackage > >> > >> package p2; > >> class derived extends p1::base; > >> int y; > >> endclass > >> endpackage > >> > >> module top; > >> import p2::*; > >> > >> class p3 extends derived; > >> virtual function void F(base x); // this is not legal > >> without the re-import > >> ... > >> endfunction > >> > >> ... > >> endmdodule > >> > >> In this case, the base class is not visible to the importing scope > >> without explicitly importing package p1. Or is it? Why should > > end-users > >> need to add an explicit import of p1 (import p1::*) or explicitly > > write > >> (p1::base)? > >> > >> ArturoReceived on Mon Sep 11 14:39:44 2006
This archive was generated by hypermail 2.1.8 : Mon Sep 11 2006 - 14:40:05 PDT