From d5698b07533c991d016c0c16e0fa0d87d1457565 Mon Sep 17 00:00:00 2001 From: Jason Merrill Date: Sat, 3 Oct 1998 18:59:10 -0400 Subject: [PATCH] new From-SVN: r22801 --- gcc/testsuite/g++.old-deja/g++.mike/p16146.C | 89 +++++++++++++++++++ gcc/testsuite/g++.old-deja/g++.ns/using9.C | 24 +++++ .../g++.old-deja/g++.other/linkage1.C | 14 +++ 3 files changed, 127 insertions(+) create mode 100644 gcc/testsuite/g++.old-deja/g++.mike/p16146.C create mode 100644 gcc/testsuite/g++.old-deja/g++.ns/using9.C create mode 100644 gcc/testsuite/g++.old-deja/g++.other/linkage1.C diff --git a/gcc/testsuite/g++.old-deja/g++.mike/p16146.C b/gcc/testsuite/g++.old-deja/g++.mike/p16146.C new file mode 100644 index 00000000000..2fd95e52bd7 --- /dev/null +++ b/gcc/testsuite/g++.old-deja/g++.mike/p16146.C @@ -0,0 +1,89 @@ +// prms-id: 16146 + +extern "C" int printf (const char *, ...); + +class myFoundation { +protected: + myFoundation () { count = 0; }; + virtual ~myFoundation () {}; + +public: + void addRef () { ++count; } + void removeRef () { if (count > 0) --count; } + +private: + long count; +}; + + +class firstIntermediate :virtual public myFoundation { +public: + firstIntermediate () {}; + ~firstIntermediate () {}; + + void bar () { printf ("Bar\n"); } +}; + + +class firstBase : public firstIntermediate { +public: + firstBase () {}; + ~firstBase () {}; + + virtual void g () {}; +}; + + +class secondIntermediate : virtual public myFoundation { +public: + secondIntermediate () {}; + ~secondIntermediate () {}; + + virtual void h () {}; +}; + + +class secondBase : public secondIntermediate { +public: + secondBase () {}; + ~secondBase () {}; + + virtual void h () {}; +}; + + +class typeInterface : virtual public firstBase { +public: + typeInterface () {}; + ~typeInterface () {}; + + virtual void i () {}; +}; + +class classServices : virtual public firstBase, + public secondBase { +public: + classServices () {}; + ~classServices () {}; + + virtual void j () {}; +}; + +class classImplementation : public typeInterface, + public classServices { +public: + classImplementation () {}; + ~classImplementation () {}; + + void g () {}; + void h () {}; + void i () {}; + void j () {}; +}; + +main () { + firstBase* fbp = new classImplementation; + classImplementation* cip = dynamic_cast (fbp); + cip->addRef(); + myFoundation* mfp = cip; +} diff --git a/gcc/testsuite/g++.old-deja/g++.ns/using9.C b/gcc/testsuite/g++.old-deja/g++.ns/using9.C new file mode 100644 index 00000000000..547ae3101fd --- /dev/null +++ b/gcc/testsuite/g++.old-deja/g++.ns/using9.C @@ -0,0 +1,24 @@ +// Test for proper merging of functions from multiple using directives. + +// Build don't link: + +namespace standard +{ void print(int) {}; + void dump(int) {}; +} +namespace A { using standard::print; } +namespace B { using namespace standard; } +namespace User +{ using namespace standard; + using namespace A; + void test() + { print(1); } + // egcs-1.1: call of overloaded `print (int)' is ambiguous +} +namespace User2 +{ using namespace standard; + using namespace B; + void test() + { print(1); } // egcs has no problems here +} + diff --git a/gcc/testsuite/g++.old-deja/g++.other/linkage1.C b/gcc/testsuite/g++.old-deja/g++.other/linkage1.C new file mode 100644 index 00000000000..65a2848a2b1 --- /dev/null +++ b/gcc/testsuite/g++.old-deja/g++.other/linkage1.C @@ -0,0 +1,14 @@ +typedef struct { + int i; +} *p; + +void f (p) { } // ERROR - function uses anonymous type +p q; + +int main() +{ + extern p j; + struct A { int j; }; + extern A a; // ERROR - extern uses local type + extern void f (A); // ERROR - extern uses local type +} -- 2.30.2