1 //===------------------------- catch_ptr_02.cpp ---------------------------===//
2 //
3 //                     The LLVM Compiler Infrastructure
4 //
5 // This file is dual licensed under the MIT and the University of Illinois Open
6 // Source Licenses. See LICENSE.TXT for details.
7 //
8 //===----------------------------------------------------------------------===//
9 
10 #include <cassert>
11 
12 struct  A {};
13 A a;
14 const A ca = A();
15 
test1()16 void test1 ()
17 {
18     try
19     {
20         throw &a;
21         assert(false);
22     }
23     catch ( const A* )
24     {
25     }
26     catch ( A *)
27     {
28         assert (false);
29     }
30 }
31 
test2()32 void test2 ()
33 {
34     try
35      {
36     	throw &a;
37         assert(false);
38     }
39     catch ( A* )
40     {
41     }
42     catch ( const A *)
43     {
44          assert (false);
45     }
46 }
47 
test3()48 void test3 ()
49 {
50     try
51     {
52         throw &ca;
53         assert(false);
54     }
55     catch ( const A* )
56     {
57     }
58     catch ( A *)
59     {
60         assert (false);
61     }
62 }
63 
test4()64 void test4 ()
65 {
66     try
67     {
68         throw &ca;
69         assert(false);
70     }
71     catch ( A *)
72     {
73         assert (false);
74     }
75     catch ( const A* )
76     {
77     }
78 }
79 
main()80 int main()
81 {
82     test1();
83     test2();
84     test3();
85     test4();
86 }
87