diff options
| -rw-r--r-- | clang/lib/Sema/SemaOverload.cpp | 4 | ||||
| -rw-r--r-- | clang/test/SemaObjCXX/overload.mm | 9 |
2 files changed, 12 insertions, 1 deletions
diff --git a/clang/lib/Sema/SemaOverload.cpp b/clang/lib/Sema/SemaOverload.cpp index d3e8243f94f..89eb90bc13d 100644 --- a/clang/lib/Sema/SemaOverload.cpp +++ b/clang/lib/Sema/SemaOverload.cpp @@ -155,7 +155,9 @@ bool StandardConversionSequence::isPointerConversionToBool() const { // check for their presence as well as checking whether FromType is // a pointer. if (getToType(1)->isBooleanType() && - (getFromType()->isPointerType() || getFromType()->isBlockPointerType() || + (getFromType()->isPointerType() || + getFromType()->isObjCObjectPointerType() || + getFromType()->isBlockPointerType() || First == ICK_Array_To_Pointer || First == ICK_Function_To_Pointer)) return true; diff --git a/clang/test/SemaObjCXX/overload.mm b/clang/test/SemaObjCXX/overload.mm index 18da69f5442..487a42e1a11 100644 --- a/clang/test/SemaObjCXX/overload.mm +++ b/clang/test/SemaObjCXX/overload.mm @@ -93,3 +93,12 @@ void (*_NSExceptionRaiser(void))(NSException *) { objc_exception_functions_t exc_funcs; return exc_funcs.throw_exc; // expected-warning{{incompatible pointer types returning 'void (*)(NSException *)', expected 'void (*)(id)'}} } + +namespace test5 { + void foo(bool); + void foo(void *); + + void test(id p) { + foo(p); + } +} |

