summaryrefslogtreecommitdiffstats
path: root/clang/test/SemaCXX/overloaded-operator.cpp
diff options
context:
space:
mode:
authorJohn McCall <rjmccall@apple.com>2009-09-30 01:01:30 +0000
committerJohn McCall <rjmccall@apple.com>2009-09-30 01:01:30 +0000
commitc1538c08d70cd0733554b122f80eac108822606c (patch)
treed18d090ad9a7074baa4a41b7ba0fb6dfbbe0425a /clang/test/SemaCXX/overloaded-operator.cpp
parentcdd3e3500599778afdfe75e46124b1d005167549 (diff)
downloadbcm5719-llvm-c1538c08d70cd0733554b122f80eac108822606c.tar.gz
bcm5719-llvm-c1538c08d70cd0733554b122f80eac108822606c.zip
Detect operator-> chains of arbitrary length. Use a terrible data structure
to strike fear into the hearts of CPUs everywhere. llvm-svn: 83133
Diffstat (limited to 'clang/test/SemaCXX/overloaded-operator.cpp')
-rw-r--r--clang/test/SemaCXX/overloaded-operator.cpp16
1 files changed, 16 insertions, 0 deletions
diff --git a/clang/test/SemaCXX/overloaded-operator.cpp b/clang/test/SemaCXX/overloaded-operator.cpp
index c849a145e2c..31da58dfcd4 100644
--- a/clang/test/SemaCXX/overloaded-operator.cpp
+++ b/clang/test/SemaCXX/overloaded-operator.cpp
@@ -224,3 +224,19 @@ void m() {
AX a;
a->b = 0; // expected-error {{circular pointer delegation detected}}
}
+
+struct CircA {
+ struct CircB& operator->();
+ int val;
+};
+struct CircB {
+ struct CircC& operator->();
+};
+struct CircC {
+ struct CircA& operator->();
+};
+
+void circ() {
+ CircA a;
+ a->val = 0; // expected-error {{circular pointer delegation detected}}
+}
OpenPOWER on IntegriCloud