From: Benjamin Kosnik Date: Tue, 28 Jul 1998 14:01:25 +0000 (+0000) Subject: � X-Git-Url: https://git.libre-soc.org/?a=commitdiff_plain;h=32fcacb0134c8cd4db35b6d03eed33e1218e131d;p=gcc.git � try 3 From-SVN: r21439 --- 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 index 00000000000..c75c65b08d9 --- /dev/null +++ b/gcc/testsuite/g++.old-deja/g++.benjamin/typeid01.C @@ -0,0 +1,71 @@ +// 980617 bkoz +// typeid for local types +// typeid bool vs int and enum vs int + +#include +#ifdef DEBUG_ASSERT +#include +#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; +}