diff options
author | John McCall <rjmccall@apple.com> | 2009-09-30 01:01:30 +0000 |
---|---|---|
committer | John McCall <rjmccall@apple.com> | 2009-09-30 01:01:30 +0000 |
commit | c1538c08d70cd0733554b122f80eac108822606c (patch) | |
tree | d18d090ad9a7074baa4a41b7ba0fb6dfbbe0425a /clang/test/SemaCXX/overloaded-operator.cpp | |
parent | cdd3e3500599778afdfe75e46124b1d005167549 (diff) | |
download | bcm5719-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.cpp | 16 |
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}} +} |