On Tuesday, September 17, 2002, at 02:02 PM, Daniel Jacobowitz wrote:
On Tue, Sep 17, 2002 at 01:54:07PM -0400, Andrew Cagney wrote:
Well, sort of. It won't be a DAG necessarily (I think that mutual
"using" statements are legal in C++; I remember a GCC bug
involving
them was fixed not long ago), and it will be somewhat complicated
figuring out which ones to look up (namespace links are different
than
block scope links).
Don't forget that GDB doesn't need to model the language. Just
the
namespace behavior at a given PC. The effect of "using" would be
to
just grow a nametab in someway.
This is legal C++:
namespace D {}
namespace C {
using namespace D;
int x, y;
}
namespace D {
using namespace C;
int x, z;
}
If using just grew a nametab we'd get into a great deal of trouble.
Depends on how you grow it :-) Something like (assuming a real
language
:-):
D:
0: x, z
1: x, y (from C)
2: ...
How you intend to do this efficiently I don't know. Remember that C
uses D in turn, and that things "using"'d into D will therefore be
visible in C.
These types of problems are exactly why i said a lot of thought needs
to be put into the design of the underlying structures, rather than
just copying what we have because we have it.
It's hard to call it "overengineered" if how to do lookups efficiently
with large numbers of names in namespaces hasn't been considered.
It's not really something you can bolt on later.
Hasn't this been proven by the fact that it hasn't been bolted on yet?