Great catch!  If refactoring along those lines doesn’t clean up 100% of the 
cases then it’s worth explicitly breaking up groups of #include directives with 
comments.  clang-format won’t reorder any non-contiguous groups and it’s a 
great way to explicitly call out dependencies.

Ideally we should be focused on committing changes along these lines so that 
there’s no post-format tweaking required to build cleanly again.

Kate Stone k8st...@apple.com <mailto:k8st...@apple.com>
 Xcode Low Level Tools

> On Aug 9, 2016, at 1:03 PM, Zachary Turner <ztur...@google.com> wrote:
> 
> I ran clang-format and tried to build and got a bunch of compiler errors.  
> Most of them are order of include errors.  I fixed everything in the attached 
> patch.  I doubt this will apply cleanly for anyone unless you are at the 
> exact same revision as me, but at least you can look at it and get an idea of 
> what had to change.
> 
> The #include win32.h thing is really annoying and hard for people to remember 
> the right incantation.  I'm going to make a file called Host/PosixApi.h which 
> you can just include, no matter what platform you're on, and everything will 
> just work.  That should clean up a lot of this nonsense.
> 
> On Tue, Aug 9, 2016 at 11:10 AM Zachary Turner <ztur...@google.com 
> <mailto:ztur...@google.com>> wrote:
> Another thing worth thinking about for the long term is library layering and 
> breaking the massive dependency cycle in LLDB.  Every library currently 
> depends on every other library.  This isn't good for build times, code size, 
> or reusability (especially where size matters like in lldb-server).  I think 
> the massive Python dependency was removed after my work earlier this year.  
> But I'm not sure what the status of that is now, and there's still the rest 
> of LLDB.
> 
> In the future it would be nice to have a modules build of LLDB.  And sure, we 
> could just have liblldb be one giant module, but that seems to kind of defeat 
> the purpose of modules in the first place.
> 
> For unit tests in particular, it's nice to be able to link in just the set of 
> things you need, and that's difficult / impossible right now.
> 
> On Tue, Aug 9, 2016 at 10:00 AM Zachary Turner <ztur...@google.com 
> <mailto:ztur...@google.com>> wrote:
> On Mon, Aug 8, 2016 at 2:40 PM Kate Stone via lldb-dev 
> <lldb-dev@lists.llvm.org <mailto:lldb-dev@lists.llvm.org>> wrote:
> 
> Near-Term Goal: Standardizing on LLVM-style clang-format Rules
> 
> We’ve heard from several in the community that would prefer to have a single 
> code formatting style to further unify the two code bases.  Using 
> clang-format with the default LLVM conventions would simplify code migration, 
> editor configuration, and coding habits for developers who work in multiple 
> LLVM projects.  There are non-trivial implications to reformatting a code 
> base with this much history.  It can obfuscate history and impact downstream 
> projects by complicating merges.  Ideally, it should be done once with as 
> much advance notice as is practical.  Here’s the timeline we’re proposing:
> 
> Today - mechanical reformatting proposed, comment period begins
> 
> To get a preview of what straightforward reformatting of the code looks like, 
> just follow these steps to get a clean copy of the repository and reformat it:
> Check out a clean copy of the existing repository
> Edit .clang-format in the root of the tree, remove all but the line 
> “BasedOnStyle: LLVM”
> Change your current working directory to the root of the tree to reformat
> Double-check to make sure you did step 3 ;-)
> Run the following shell command: "find . -name "*.[c,cpp,h] -exec 
> clang-format -i {} +"
> 
> Aug 20th - comment period closes, final schedule proposed
> TBD (early September?) - patches land in svn
> 
> The purpose of the comment period is to review the straightforward diffs to 
> identify areas where comment pragmas should be used to avoid undesirable 
> formatting (tables laid out in code are a classic example.)  It’s also a time 
> when feedback on the final timetable can be discussed, and any unforeseen 
> implications can be discovered.  We understand that LLDB tends toward 
> relatively long names that may not always work well with the LLVM convention 
> of wrapping at 80 columns.  Worst case scenarios will be evaluated to 
> determine the desired course of action.
> 
> One thing we will need to take a look at is functions which have a very deep 
> indentation level. They have the potential to be made really ugly by 
> clang-format.  The default indentation will be reduced from 4 to 2, so that 
> will help, but I recall we had some lines that began very far to the right.  
> 
> Here's a little bash command shows all lines with >= 50 leading spaces, 
> sorted in descending order by number of leading spaces.
> 
> grep -n '^ \+' . -r -o | awk '{t=length($0);sub(" *$","");printf("%s%d\n", 
> $0, t-length($0));}' |  sort -t: -n -k 3 -r | awk 'BEGIN { FS = ":" } ; { if 
> ($3 >= 50) print $0 }' 
> 
> It's less useful than I was hoping because most of the lines are noise (line 
> breaking in a function parameter list).
> 
> If there were a way to detect indentation level that would be better.  Mostly 
> just to identify places that we should manually inspect after running 
> clang-format.
> <reformat.patch>

_______________________________________________
lldb-dev mailing list
lldb-dev@lists.llvm.org
http://lists.llvm.org/cgi-bin/mailman/listinfo/lldb-dev

Reply via email to