--- /dev/null
+// 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 <classImplementation*> (fbp);
+ cip->addRef();
+ myFoundation* mfp = cip;
+}
--- /dev/null
+// 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
+}
+