<html><head><meta http-equiv="Content-Type" content="text/html charset=utf-8"></head><body style="word-wrap: break-word; -webkit-nbsp-mode: space; -webkit-line-break: after-white-space;" class=""><div><div class="">On Dec 4, 2015, at 5:57 PM, Anna Zaks <<a href="mailto:ganna@apple.com" class="">ganna@apple.com</a>> wrote:</div><blockquote type="cite" class=""><div class=""><meta http-equiv="Content-Type" content="text/html charset=utf-8" class=""><div style="word-wrap: break-word; -webkit-nbsp-mode: space; -webkit-line-break: after-white-space;" class=""><br class=""><div class=""><blockquote type="cite" class=""><div class="">On Dec 4, 2015, at 2:46 PM, James Y Knight <<a href="mailto:jyknight@google.com" class="">jyknight@google.com</a>> wrote:</div><br class="Apple-interchange-newline"><div class=""><div dir="ltr" class="">Without having looked into it...<div class=""><br class="">If people need a feature like this, I'm wondering if it would make sense to parse a special file containing normalish C/C++/ObjC declarations, and use those to replace or augment attributes from matching declarations in the normal parse. Requiring a special YAML and binary format reader/writer seems unfortunate, especially as it looks nowhere close to being generically useful, beyond exactly what Swift needed.</div></div></div></blockquote><div class=""><br class=""></div>The use cases described by Sean and me have nothing to do with Swift. The static analyzer (as well as other bug finding tools) often need to have more information than what’s already in the code. The clang static analyzer already has a growing body of hardcoded APIs. </div></div></div></blockquote><br class=""></div><div>Sorry I should have written more clearly. I meant that looking at the *current* implementation of API Notes, the YAML/binary formats look very much specific to supporting only those attributes needed by swift, and do not look generically usable. I can certainly see the concept in general being generically useful.</div><div class=""><br class=""></div></body></html>