]> granicus.if.org Git - clang/commit
[ObjC++] Conversions from specialized to non-specialized Objective-C generic
authorAlex Lorenz <arphaman@gmail.com>
Thu, 6 Apr 2017 13:06:34 +0000 (13:06 +0000)
committerAlex Lorenz <arphaman@gmail.com>
Thu, 6 Apr 2017 13:06:34 +0000 (13:06 +0000)
commit0974a6fc550074bf804a8d1c359a1ff970e4a75c
tree5f80b507ef993c8b500bbdfebc153a6d2869475b
parent25d97408b5320d0c238e7e4e80204ac3017b0571
[ObjC++] Conversions from specialized to non-specialized Objective-C generic
object types should be preferred over conversions to other object pointers

This change ensures that Clang will select the correct overload for the
following code sample:

  void overload(Base *b);
  void overload(Derived *d);
  void test(Base<Base *> b) {
    overload(b); // Select overload(Base *), not overload(Derived *)
  }

rdar://20124827

Differential Revision: https://reviews.llvm.org/D31597

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@299648 91177308-0d34-0410-b5e6-96231b3b80d8
lib/Sema/SemaOverload.cpp
test/SemaObjCXX/overload.mm