<html>
    <head>
      <base href="http://llvm.org/bugs/" />
    </head>
    <body><table border="1" cellspacing="0" cellpadding="8">
        <tr>
          <th>Bug ID</th>
          <td><a class="bz_bug_link 
          bz_status_NEW "
   title="NEW --- - Convenience initializers warn incorrectly with -Wobjc-designated-initializers when returning a new object"
   href="http://llvm.org/bugs/show_bug.cgi?id=20390">20390</a>
          </td>
        </tr>

        <tr>
          <th>Summary</th>
          <td>Convenience initializers warn incorrectly with -Wobjc-designated-initializers when returning a new object
          </td>
        </tr>

        <tr>
          <th>Product</th>
          <td>clang
          </td>
        </tr>

        <tr>
          <th>Version</th>
          <td>unspecified
          </td>
        </tr>

        <tr>
          <th>Hardware</th>
          <td>Macintosh
          </td>
        </tr>

        <tr>
          <th>OS</th>
          <td>MacOS X
          </td>
        </tr>

        <tr>
          <th>Status</th>
          <td>NEW
          </td>
        </tr>

        <tr>
          <th>Severity</th>
          <td>normal
          </td>
        </tr>

        <tr>
          <th>Priority</th>
          <td>P
          </td>
        </tr>

        <tr>
          <th>Component</th>
          <td>-New Bugs
          </td>
        </tr>

        <tr>
          <th>Assignee</th>
          <td>unassignedclangbugs@nondot.org
          </td>
        </tr>

        <tr>
          <th>Reporter</th>
          <td>tjw@me.com
          </td>
        </tr>

        <tr>
          <th>CC</th>
          <td>llvmbugs@cs.uiuc.edu
          </td>
        </tr>

        <tr>
          <th>Classification</th>
          <td>Unclassified
          </td>
        </tr></table>
      <p>
        <div>
        <pre>Convenience initializers should be able to call *zero* other initializers if
they are creating a new object. But, -Wobjc-designated-initializers incorrectly
warns when the returned object is _not_ self.

For example, if I have a silly category on NSNumber with:

- initZero;
{
    return [[NSNumber alloc] initWithInt:0];
}

then it is reasonable to not warn here since the returned object will have had
proper initialization (while the original 'self' will just get -release from
ARC). I've seen one instance in ~20 years (NSTextStorage) where deallocating an
object that didn't get an -init would crash. I'm assuming this isn't the case
this warning is trying to catch, but rather when you forget to fully initialize
the object that is returned (not an issue here since 'self' isn't returned).</pre>
        </div>
      </p>
      <hr>
      <span>You are receiving this mail because:</span>
      
      <ul>
          <li>You are on the CC list for the bug.</li>
      </ul>
    </body>
</html>