<html><head><meta http-equiv="Content-Type" content="text/html charset=us-ascii"></head><body style="word-wrap: break-word; -webkit-nbsp-mode: space; -webkit-line-break: after-white-space;"><br><div><div>On May 5, 2014, at 16:46 , David Blaikie <<a href="mailto:dblaikie@gmail.com">dblaikie@gmail.com</a>> wrote:</div><br class="Apple-interchange-newline"><blockquote type="cite">On Mon, May 5, 2014 at 4:38 PM, Jordan Rose <<a href="mailto:jordan_rose@apple.com">jordan_rose@apple.com</a>> wrote:<br><blockquote type="cite">@interface is a definition of an ObjC class, but it doesn't contain all the ivars. @implementation can also contain ivars, but it's not in the redeclaration chain for the @interface/@class. Is this going to mess things up at all?<br></blockquote><br>If the @implementation isn't in the redeclaration chain of the<br>@interface, then I'm not sure how those two entities would be related<br>in the debug info... but a cursory test (a simple @implementation<br>placed at the end of the test case, containing a single @public int)<br>does cause the debug info to have that member variable included in the<br>debug info...<br><br>Is that the sort of case you were concerned about?<br></blockquote><div><br></div><div>I guess so. I don't know enough about debug info generation to know what's important here, but this section scared me:</div><div><br></div><div></div><blockquote type="cite"><div>A side benefit is that we also don't need the CompletedTypeCache<br>anymore. Just rely on the declaration-ness of a type to decide whether<br>its definition is yet to be emitted.<br></div></blockquote></div><br><div>...since an ObjCInterfaceDecl is considered a definition long before we may have seen all the ivars. (In fact, you can only be <i>sure</i> you've seen all the ivars if the TU has an @implementation in it.)</div><div><br></div><div>Jordan</div></body></html>