diff options
-rw-r--r-- | lib/Sema/SemaOverload.cpp | 4 | ||||
-rw-r--r-- | test/SemaObjCXX/overload.mm | 9 |
2 files changed, 12 insertions, 1 deletions
diff --git a/lib/Sema/SemaOverload.cpp b/lib/Sema/SemaOverload.cpp index d3e8243f94..89eb90bc13 100644 --- a/lib/Sema/SemaOverload.cpp +++ b/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/test/SemaObjCXX/overload.mm b/test/SemaObjCXX/overload.mm index 18da69f544..487a42e1a1 100644 --- a/test/SemaObjCXX/overload.mm +++ b/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); + } +} |