diff options
| author | Douglas Gregor <dgregor@apple.com> | 2011-10-13 18:10:35 +0000 |
|---|---|---|
| committer | Douglas Gregor <dgregor@apple.com> | 2011-10-13 18:10:35 +0000 |
| commit | cda2270217228e128893927e0be5e6581d1615d3 (patch) | |
| tree | 4ae16d2079849f19777a705c54126a84417167d1 /clang/test | |
| parent | 1b282f9619f68a60d4b8f4dd0c68b0a07e1a1293 (diff) | |
| download | bcm5719-llvm-cda2270217228e128893927e0be5e6581d1615d3.tar.gz bcm5719-llvm-cda2270217228e128893927e0be5e6581d1615d3.zip | |
Allow calling an overloaded function set by taking the address of the
functions, e.g., (&f)(0). Fixes <rdar://problem/9803316>.
llvm-svn: 141877
Diffstat (limited to 'clang/test')
| -rw-r--r-- | clang/test/CXX/expr/expr.unary/expr.unary.op/p6.cpp | 5 | ||||
| -rw-r--r-- | clang/test/SemaCXX/alignof-sizeof-reference.cpp | 3 | ||||
| -rw-r--r-- | clang/test/SemaCXX/overload-call.cpp | 9 |
3 files changed, 13 insertions, 4 deletions
diff --git a/clang/test/CXX/expr/expr.unary/expr.unary.op/p6.cpp b/clang/test/CXX/expr/expr.unary/expr.unary.op/p6.cpp index 129a4f4e770..ac11940c80d 100644 --- a/clang/test/CXX/expr/expr.unary/expr.unary.op/p6.cpp +++ b/clang/test/CXX/expr/expr.unary/expr.unary.op/p6.cpp @@ -29,8 +29,7 @@ bool b8 = !S(); //expected-error {{invalid argument type 'S'}} namespace PR8181 { - void f() { } // expected-note{{possible target for call}} + bool f() { } // expected-note{{possible target for call}} void f(char) { } // expected-note{{possible target for call}} - bool b = !&f; //expected-error {{reference to overloaded function could not be resolved; did you mean to call it?}} - + bool b = !&f; //expected-error {{reference to overloaded function could not be resolved; did you mean to call it with no arguments?}} } diff --git a/clang/test/SemaCXX/alignof-sizeof-reference.cpp b/clang/test/SemaCXX/alignof-sizeof-reference.cpp index 1d65abbcc9f..6a2d301ff4e 100644 --- a/clang/test/SemaCXX/alignof-sizeof-reference.cpp +++ b/clang/test/SemaCXX/alignof-sizeof-reference.cpp @@ -11,7 +11,8 @@ void test() { void f(); // expected-note{{possible target for call}} void f(int); // expected-note{{possible target for call}} void g() { - sizeof(&f); // expected-error{{reference to overloaded function could not be resolved; did you mean to call it?}} + sizeof(&f); // expected-error{{reference to overloaded function could not be resolved; did you mean to call it with no arguments?}} \ + // expected-warning{{expression result unused}} } template<typename T> void f_template(); // expected-note{{possible target for call}} diff --git a/clang/test/SemaCXX/overload-call.cpp b/clang/test/SemaCXX/overload-call.cpp index 9cc48993fde..00f6a9460a7 100644 --- a/clang/test/SemaCXX/overload-call.cpp +++ b/clang/test/SemaCXX/overload-call.cpp @@ -525,3 +525,12 @@ namespace PR9507 { f(n); // expected-error{{call to 'f' is ambiguous}} } } + +namespace rdar9803316 { + void foo(float); + int &foo(int); + + void bar() { + int &ir = (&foo)(0); + } +} |

