2000-06-12 01:31:41 +00:00
|
|
|
namespace AAA {
|
|
|
|
char c;
|
|
|
|
int i;
|
|
|
|
int A_xyzq (int);
|
|
|
|
char xyzq (char);
|
|
|
|
class inA {
|
|
|
|
public:
|
|
|
|
int xx;
|
|
|
|
int fum (int);
|
|
|
|
};
|
|
|
|
};
|
|
|
|
|
|
|
|
int AAA::inA::fum (int i)
|
|
|
|
{
|
|
|
|
return 10 + i;
|
|
|
|
}
|
|
|
|
|
|
|
|
namespace BBB {
|
|
|
|
char c;
|
|
|
|
int i;
|
|
|
|
int B_xyzq (int);
|
|
|
|
char xyzq (char);
|
|
|
|
|
|
|
|
namespace CCC {
|
|
|
|
char xyzq (char);
|
|
|
|
};
|
|
|
|
|
|
|
|
class Class {
|
|
|
|
public:
|
|
|
|
char xyzq (char);
|
|
|
|
int dummy;
|
|
|
|
};
|
|
|
|
};
|
|
|
|
|
|
|
|
int AAA::A_xyzq (int x)
|
|
|
|
{
|
|
|
|
return 2 * x;
|
|
|
|
}
|
|
|
|
|
|
|
|
char AAA::xyzq (char c)
|
|
|
|
{
|
|
|
|
return 'a';
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
int BBB::B_xyzq (int x)
|
|
|
|
{
|
|
|
|
return 3 * x;
|
|
|
|
}
|
|
|
|
|
|
|
|
char BBB::xyzq (char c)
|
|
|
|
{
|
|
|
|
return 'b';
|
|
|
|
}
|
|
|
|
|
|
|
|
char BBB::CCC::xyzq (char c)
|
|
|
|
{
|
|
|
|
return 'z';
|
|
|
|
}
|
|
|
|
|
|
|
|
char BBB::Class::xyzq (char c)
|
|
|
|
{
|
|
|
|
return 'o';
|
|
|
|
}
|
|
|
|
|
|
|
|
void marker1(void)
|
|
|
|
{
|
|
|
|
return;
|
|
|
|
}
|
|
|
|
|
2003-05-20 03:56:29 +00:00
|
|
|
namespace
|
|
|
|
{
|
|
|
|
int X = 9;
|
|
|
|
|
|
|
|
namespace G
|
|
|
|
{
|
|
|
|
int Xg = 10;
|
2003-09-25 16:39:39 +00:00
|
|
|
|
|
|
|
namespace
|
|
|
|
{
|
|
|
|
int XgX = 11;
|
|
|
|
}
|
2003-05-20 03:56:29 +00:00
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
namespace C
|
|
|
|
{
|
|
|
|
int c = 1;
|
|
|
|
int shadow = 12;
|
|
|
|
|
2004-01-14 David Carlton <carlton@kealia.com>
Change symbols for C++ nested types to contain the fully qualified
name, if possible. (At least in the DWARF-2 case.) Partial fix
for PR's c++/57, c++/488, c++/539, c++/573, c++/609, c++/832,
c++/895.
* c-exp.y: Update copyright:
(qualified_type): Handle types nested within classes.
* cp-namespace.c: Update comments.
(cp_set_block_scope): Delete #if 0.
(cp_lookup_nested_type): Handle types nested within classes.
* dwarf2read.c: (scan_partial_symbols): Call add_partial_structure
when appropriate.
(add_partial_symbol): Add the name of the enclosing namespace to
types.
(pdi_needs_namespace): New.
(add_partial_namespace): Tweak comment.
(add_partial_structure): New.
(psymtab_to_symtab_1): Initialize processing_current_prefix
here...
(process_die): instead of here.
(read_structure_scope): Try to figure out the name of the class or
namespace that the structure might be defined within.
(read_enumeration): Generate fully-qualified names, if possible.
(read_namespace): Don't set name to NULL.
(die_specification): New.
(new_symbol): Generate fully-qualified names for types.
(read_type_die): Determine appropriate prefix.
(determine_prefix): New.
(typename_concat): New.
(class_name): New.
* valops.c: Update copyright.
(value_aggregate_elt): Pass NOSIDE to
value_struct_elt_for_reference.
(value_struct_elt_for_reference): Make static, add NOSIDE
parameter, call value_maybe_namespace_elt as a last resort.
(value_namespace_elt): Break out code into
value_maybe_namespace_elt.
(value_maybe_namespace_elt): New.
2004-01-14 David Carlton <carlton@kealia.com>
* gdb.cp/namespace.exp: Add tests involving classes defined within
namespaces.
* gdb.cp/namespace.cc (C::CClass): New.
* gdb.cp/namespace1.cc: Update copyright.
(C::OtherFileClass): New.
2004-01-14 16:54:43 +00:00
|
|
|
class CClass {
|
|
|
|
public:
|
|
|
|
int x;
|
|
|
|
class NestedClass {
|
|
|
|
public:
|
|
|
|
int y;
|
|
|
|
};
|
|
|
|
};
|
|
|
|
|
2004-01-23 21:55:57 +00:00
|
|
|
void ensureRefs () {
|
|
|
|
// NOTE (2004-04-23, carlton): This function is here only to make
|
|
|
|
// sure that GCC 3.4 outputs debug info for these classes.
|
|
|
|
static CClass *c = new CClass();
|
|
|
|
static CClass::NestedClass *n = new CClass::NestedClass();
|
|
|
|
}
|
|
|
|
|
2003-05-20 03:56:29 +00:00
|
|
|
namespace
|
|
|
|
{
|
|
|
|
int cX = 6;
|
|
|
|
|
|
|
|
namespace F
|
|
|
|
{
|
|
|
|
int cXf = 7;
|
2003-09-25 16:39:39 +00:00
|
|
|
|
|
|
|
namespace
|
|
|
|
{
|
|
|
|
int cXfX = 8;
|
|
|
|
}
|
2003-05-20 03:56:29 +00:00
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
namespace C
|
|
|
|
{
|
|
|
|
int cc = 2;
|
|
|
|
}
|
|
|
|
|
2003-09-25 16:39:39 +00:00
|
|
|
namespace E
|
|
|
|
{
|
|
|
|
int ce = 4;
|
|
|
|
}
|
|
|
|
|
2003-05-20 03:56:29 +00:00
|
|
|
namespace D
|
|
|
|
{
|
|
|
|
int cd = 3;
|
|
|
|
int shadow = 13;
|
|
|
|
|
|
|
|
namespace E
|
|
|
|
{
|
|
|
|
int cde = 5;
|
|
|
|
}
|
|
|
|
|
|
|
|
void marker2 (void)
|
|
|
|
{
|
|
|
|
// NOTE: carlton/2003-04-23: I'm listing the expressions that I
|
|
|
|
// plan to have GDB try to print out, just to make sure that the
|
|
|
|
// compiler and I agree which ones should be legal! It's easy
|
|
|
|
// to screw up when testing the boundaries of namespace stuff.
|
|
|
|
c;
|
|
|
|
//cc;
|
|
|
|
C::cc;
|
|
|
|
cd;
|
2003-09-25 16:39:39 +00:00
|
|
|
//C::D::cd;
|
2003-05-20 03:56:29 +00:00
|
|
|
E::cde;
|
|
|
|
shadow;
|
2003-09-25 16:39:39 +00:00
|
|
|
//E::ce;
|
2003-05-20 03:56:29 +00:00
|
|
|
cX;
|
|
|
|
F::cXf;
|
2003-09-25 16:39:39 +00:00
|
|
|
F::cXfX;
|
2003-05-20 03:56:29 +00:00
|
|
|
X;
|
|
|
|
G::Xg;
|
|
|
|
//cXOtherFile;
|
|
|
|
//XOtherFile;
|
2003-09-25 16:39:39 +00:00
|
|
|
G::XgX;
|
2003-05-20 03:56:29 +00:00
|
|
|
|
|
|
|
return;
|
|
|
|
}
|
|
|
|
|
|
|
|
}
|
|
|
|
}
|
2000-06-12 01:31:41 +00:00
|
|
|
|
|
|
|
int main ()
|
|
|
|
{
|
|
|
|
using AAA::inA;
|
|
|
|
char c1;
|
|
|
|
|
|
|
|
using namespace BBB;
|
|
|
|
|
|
|
|
c1 = xyzq ('x');
|
|
|
|
c1 = AAA::xyzq ('x');
|
|
|
|
c1 = BBB::CCC::xyzq ('m');
|
|
|
|
|
|
|
|
inA ina;
|
|
|
|
|
|
|
|
ina.xx = 33;
|
|
|
|
|
|
|
|
int y;
|
|
|
|
|
|
|
|
y = AAA::A_xyzq (33);
|
|
|
|
y += B_xyzq (44);
|
|
|
|
|
|
|
|
BBB::Class cl;
|
|
|
|
|
|
|
|
c1 = cl.xyzq('e');
|
|
|
|
|
|
|
|
marker1();
|
|
|
|
|
2003-05-20 03:56:29 +00:00
|
|
|
C::D::marker2 ();
|
2000-06-12 01:31:41 +00:00
|
|
|
}
|