* overload1.C: New test.
authorAlexandre Oliva <oliva@lsd.ic.unicamp.br>
Sat, 18 Sep 1999 18:06:20 +0000 (18:06 +0000)
committerAlexandre Oliva <oliva@gcc.gnu.org>
Sat, 18 Sep 1999 18:06:20 +0000 (18:06 +0000)
From-SVN: r29499

gcc/testsuite/g++.old-deja/g++.oliva/ChangeLog
gcc/testsuite/g++.old-deja/g++.oliva/overload1.C [new file with mode: 0644]

index 0000a9f..4ab874d 100644 (file)
@@ -1,5 +1,7 @@
 1999-09-18  Alexandre Oliva  <oliva@lsd.ic.unicamp.br>
 
+       * overload1.C: New test.
+
        * inline1.C: New test.
 
 1999-08-25  Alexandre Oliva  <oliva@dcc.unicamp.br>
diff --git a/gcc/testsuite/g++.old-deja/g++.oliva/overload1.C b/gcc/testsuite/g++.old-deja/g++.oliva/overload1.C
new file mode 100644 (file)
index 0000000..fd79dad
--- /dev/null
@@ -0,0 +1,23 @@
+// Build don't link:
+
+// Copyright (C) 1999 Free Software Foundation
+
+// by Alexandre Oliva <oliva@lsd.ic.unicamp.br>
+// Based on bug report by JDonner <jdonner@schedsys.com>
+
+struct foo {
+  static int bar(); // ERROR - candidate
+  void bar(int); // ERROR - candidate
+};
+
+/* gcc emits a hard error without -pedantic, and a warning with
+   -pedantic, even in bad1.  */
+int (*ok1)() = foo::bar; // gets bogus error - XFAIL *-*-*
+void (foo::*bad1)(int) = foo::bar; // ERROR - missing &
+
+int (*ok2)() = &foo::bar; // ok
+void (*bad2)(int) = foo::bar; // ERROR - overload resolution fails
+
+void (foo::*ok3)(int) = &foo::bar; // ok
+int (foo::*bad3)() = foo::bar; // ERROR - overload resolution fails
+