<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; "><div>We probably should separate Rewrite into "Rewrite" and "RewriteFrontend", or something like that.  There's the core rewriter data structures, and the frontend action.</div><br><div><div>On Aug 31, 2012, at 4:17 PM, Chandler Carruth <<a href="mailto:chandlerc@google.com">chandlerc@google.com</a>> wrote:</div><br class="Apple-interchange-newline"><blockquote type="cite">Turns out there is still a cycle.<div><br></div><div>lib/StaticAnalyzer/Core/HTMLDiagnostics.cpp includes include/clang/Rewrite/Rewriter.h</div><div><br></div><div>Several of the files in lib/Rewrite include include/clang/Frontend stuff, so we have:</div>
<div><br></div><div>StaticAnalyzerFrontend -> Frontend -> StaticAnalyzerCore -> Rewrite -> Frontend.</div><div><br></div><div>I see a lot of different ways to fix this, any preferences?</div><div><br></div><div class="gmail_extra">
<br><br><div class="gmail_quote">On Thu, Aug 30, 2012 at 3:20 PM, Chandler Carruth <span dir="ltr"><<a href="mailto:chandlerc@google.com" target="_blank">chandlerc@google.com</a>></span> wrote:<br><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex">
<div class="gmail_extra"><div class="gmail_quote"><div><div class="h5">On Thu, Aug 30, 2012 at 3:02 PM, Ted Kremenek <span dir="ltr"><<a href="mailto:kremenek@apple.com" target="_blank">kremenek@apple.com</a>></span> wrote:<br>

<blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex"><div style="word-wrap:break-word"><div><div>On Aug 30, 2012, at 2:50 PM, Ted Kremenek <<a href="mailto:kremenek@apple.com" target="_blank">kremenek@apple.com</a>> wrote:</div>

<br><blockquote type="cite"><div style="word-wrap:break-word"><div><div>On Aug 30, 2012, at 2:29 PM, Chandler Carruth <<a href="mailto:chandlerc@google.com" target="_blank">chandlerc@google.com</a>> wrote:</div>
<br><blockquote type="cite"><div style="font-family:Helvetica;font-size:medium;font-style:normal;font-variant:normal;font-weight:normal;letter-spacing:normal;line-height:normal;text-align:-webkit-auto;text-indent:0px;text-transform:none;white-space:normal;word-spacing:0px">

Yea, the only problem is that the SA/Frontend library depends heavily on the Frontend library. We build all of the SA into a single library, but we probably shouldn't. Because we do that, when we check the library-level include layering, we find a cycle.</div>

</blockquote><div><br></div><div>I'm not certain why the SA/Frontend library was created in the first place.  Originally the Frontend library depended on the StaticAnalyzer, and there was no cycle.  Conceptually SA/Frontend is more part of the Frontend then the static analyzer, and that's how it was actually implemented at one point.  At some point it seemed reasonable to move the static analyzer specific parts of the Frontend into SA/Frontend out of the core Frontend library.  This over-refactoring is what has led to this confusion.</div>

<br><blockquote type="cite"><div style="font-family:Helvetica;font-size:medium;font-style:normal;font-variant:normal;font-weight:normal;letter-spacing:normal;line-height:normal;text-align:-webkit-auto;text-indent:0px;text-transform:none;white-space:normal;word-spacing:0px">

<br></div><div style="font-family:Helvetica;font-size:medium;font-style:normal;font-variant:normal;font-weight:normal;letter-spacing:normal;line-height:normal;text-align:-webkit-auto;text-indent:0px;text-transform:none;white-space:normal;word-spacing:0px">

Here is one question perhaps, which of the 3 SA sub-libraries should this header belong to?</div><br></blockquote><br></div><div>Probably StaticAnalyzerCore.</div><br></div></blockquote><br></div><div>My unproductive vitriol aside, would it help for me to create a 4th (leafy) library to include this leaf header?  It's not completely silly, and would hopefully resolve this structuring issue.</div>

</div></blockquote><div><br></div></div></div><div>Nope, I'm quite happy putting this in the core sublibrary. =] </div></div><br></div>
</blockquote></div><br></div>
</blockquote></div><br></body></html>