authorBenjamin Kosnik <bkoz@gcc.gnu.org>
Tue, 28 Jul 1998 14:01:25 +0000 (14:01 +0000)
committerBenjamin Kosnik <bkoz@gcc.gnu.org>
Tue, 28 Jul 1998 14:01:25 +0000 (14:01 +0000)
try 3

From-SVN: r21439

gcc/testsuite/g++.old-deja/g++.benjamin/typeid01.C [new file with mode: 0644]

diff --git a/gcc/testsuite/g++.old-deja/g++.benjamin/typeid01.C b/gcc/testsuite/g++.old-deja/g++.benjamin/typeid01.C
new file mode 100644 (file)
index 0000000..c75c65b
--- /dev/null
@@ -0,0 +1,71 @@
+// 980617 bkoz
+// typeid for local types
+// typeid bool vs int and enum vs int
+
+#include <typeinfo>
+#ifdef DEBUG_ASSERT
+#include <assert.h>
+#endif
+
+// 4: local class in non-main function
+
+void test1 (void) {
+  bool class_p = false;
+  class X2 { 
+  private:
+    unsigned int counter;
+  public:
+    X2 (unsigned int i = 35): counter(i) {}
+    ~X2(){}
+    unsigned int ret_counter() {return counter;}
+  };
+  X2 obj_1;
+  class_p = typeid(X2) == typeid(obj_1);
+}  
+
+int main ()
+{
+  // 1: simple
+#if 1
+  bool enum_p = false;
+  enum E { A, B, C };
+  enum_p = typeid(A) == typeid(E);
+#ifdef DEBUG_ASSERT
+  assert (enum_p);
+#endif
+#endif  
+
+  // 2: complex
+#if 0
+  bool enum2_p = false;
+  bool int_p = false;
+  bool bool_p = false;
+  enum E2 { A2, B2};
+  enum2_p = typeid(A2) == typeid(E2);
+  int_p =  typeid(int) == typeid(E2);
+  bool_p =  typeid(bool) == typeid(E2);
+#ifdef DEBUG_ASSERT
+  assert (enum2_p);
+  assert (!int_p);
+  assert (!bool_p);
+#endif
+#endif
+
+  // 3: local class
+  bool class_p = false;
+  class X { 
+  private:
+    unsigned int counter;
+  public:
+    X (unsigned int i = 35): counter(i) {}
+    ~X(){}
+    unsigned int ret_counter() {return counter;}
+  };
+  X obj_1;
+  class_p = typeid(X) == typeid(obj_1);
+
+  // 4: local class in function
+  test1();
+
+  return 0;
+}