OSDN Git Service

* parse.y (operator): Set got_object from got_scope.
[pf3gnuchains/gcc-fork.git] / gcc / testsuite / g++.old-deja / g++.other / lookup19.C
diff --git a/gcc/testsuite/g++.old-deja/g++.other/lookup19.C b/gcc/testsuite/g++.old-deja/g++.other/lookup19.C
new file mode 100644 (file)
index 0000000..e355f2d
--- /dev/null
@@ -0,0 +1,54 @@
+// Test for proper handling of type lookup for conversion operator names.
+// Build don't link:
+
+// Test 1: Only at file scope
+typedef int B;
+struct A
+{
+  int B;
+  operator B *();
+};
+
+A::operator B * ()
+{
+  return 0;
+}
+
+// Test 2: Only at class scope
+struct C
+{
+  typedef int D;
+  operator D *();
+};
+
+int D;
+C::operator D * ()
+{
+  return 0;
+}
+
+// Test 3: Matching
+struct E
+{
+  typedef int F;
+  operator F *();
+};
+
+typedef int F;
+E::operator F * ()
+{
+  return 0;
+}
+
+// Test 4: Conflicting
+struct G
+{
+  typedef int H;
+  operator H *();
+};
+
+typedef double H;
+G::operator H * ()             // ERROR - mismatch
+{
+  return 0;
+}