llvm-project/clang
Ben Hamilton ea7a27b847 [clang-format] Refine ObjC guesser to handle child lines of child lines
Summary:
This fixes an issue brought up by djasper@ in his review of D44790. We
handled top-level child lines, but if those child lines themselves
had child lines, we didn't handle them.

Rather than use recursion (which could blow out the stack), I use a
DenseSet to hold the set of lines we haven't yet checked (since order
doesn't matter), and update the set to add the children of each
line as we check it.

Test Plan: New tests added. Confirmed tests failed before fix
  and passed after fix.

Reviewers: djasper

Reviewed By: djasper

Subscribers: klimek, cfe-commits

Differential Revision: https://reviews.llvm.org/D44831

llvm-svn: 328628
2018-03-27 15:01:21 +00:00
..
INPUTS
bindings Remove duplicate python libclang changes from r320748 2017-12-14 23:40:42 +00:00
cmake [Fuchsia] Don't install libc++, libc++abi or libunwind on Darwin 2018-03-21 16:48:26 +00:00
docs [ASTMatchers] Add isAssignmentOperator matcher 2018-03-27 12:11:46 +00:00
examples clang-interpreter example cmake fix 2018-03-21 12:05:19 +00:00
include [ASTMatchers] Add isAssignmentOperator matcher 2018-03-27 12:11:46 +00:00
lib [clang-format] Refine ObjC guesser to handle child lines of child lines 2018-03-27 15:01:21 +00:00
runtime [clang] Use add_llvm_install_targets 2017-11-30 22:35:02 +00:00
test [analyzer] LoopUnrolling: update the matched assignment operators 2018-03-27 12:16:56 +00:00
tools [clang-format] Wildcard expansion on Windows. 2018-03-26 13:54:17 +00:00
unittests [clang-format] Refine ObjC guesser to handle child lines of child lines 2018-03-27 15:01:21 +00:00
utils Reland "[Attr] Fix parameter indexing for several attributes" 2018-03-13 14:51:22 +00:00
www Remove reference to stale (2009) python version. 2018-03-25 13:12:05 +00:00
.arcconfig [clang] Set up .arcconfig to point to new Diffusion C repository 2017-11-27 17:21:24 +00:00
.clang-format
.clang-tidy Backport changes from llvm/.clang_tidy to clang/.clang_tidy configs 2018-03-20 14:39:12 +00:00
.gitignore
CMakeLists.txt [FrontEnd] Allow overriding the default C/C++ -std via CMake vars 2018-03-06 21:26:28 +00:00
CODE_OWNERS.TXT Change code owner for Clang Static Analyzer to Devin Coughlin. 2017-11-17 23:19:04 +00:00
INSTALL.txt
LICENSE.TXT
ModuleInfo.txt
NOTES.txt
README.txt Test commit 2017-10-21 16:03:17 +00:00

README.txt

//===----------------------------------------------------------------------===//
// C Language Family Front-end
//===----------------------------------------------------------------------===//

Welcome to Clang.  This is a compiler front-end for the C family of languages
(C, C++, Objective-C, and Objective-C++) which is built as part of the LLVM
compiler infrastructure project.

Unlike many other compiler frontends, Clang is useful for a number of things
beyond just compiling code: we intend for Clang to be host to a number of
different source-level tools.  One example of this is the Clang Static Analyzer.

If you're interested in more (including how to build Clang) it is best to read
the relevant web sites.  Here are some pointers:

Information on Clang:             http://clang.llvm.org/
Building and using Clang:         http://clang.llvm.org/get_started.html
Clang Static Analyzer:            http://clang-analyzer.llvm.org/
Information on the LLVM project:  http://llvm.org/

If you have questions or comments about Clang, a great place to discuss them is
on the Clang development mailing list:
  http://lists.llvm.org/mailman/listinfo/cfe-dev

If you find a bug in Clang, please file it in the LLVM bug tracker:
  http://llvm.org/bugs/