summaryrefslogtreecommitdiffstats
path: root/lldb/packages/Python/lldbsuite/test/python_api
diff options
context:
space:
mode:
authorBen Hamilton <benhamilton@google.com>2018-05-30 15:21:38 +0000
committerBen Hamilton <benhamilton@google.com>2018-05-30 15:21:38 +0000
commit707e68fb210e6448b2bd087a594dfd6fe3fb8d5c (patch)
treece2e8c195b9678a070b1d9cf72798a89e6df8db4 /lldb/packages/Python/lldbsuite/test/python_api
parent761abc05aa7bbbb4379606ffffa75f552be9d164 (diff)
downloadbcm5719-llvm-707e68fb210e6448b2bd087a594dfd6fe3fb8d5c.tar.gz
bcm5719-llvm-707e68fb210e6448b2bd087a594dfd6fe3fb8d5c.zip
[clang-format/ObjC] Correctly parse Objective-C methods with 'class' in name
Summary: Please take a close look at this CL. I haven't touched much of `UnwrappedLineParser` before, so I may have gotten things wrong. Previously, clang-format would incorrectly format the following: ``` @implementation Foo - (Class)class { } - (void)foo { } @end ``` as: ``` @implementation Foo - (Class)class { } - (void)foo { } @end ``` The problem is whenever `UnwrappedLineParser::parseStructuralElement()` sees any of the keywords `class`, `struct`, or `enum`, it calls `parseRecord()` to parse them as a C/C++ record. This causes subsequent lines to be parsed incorrectly, which causes them to be indented incorrectly. In Objective-C/Objective-C++, these keywords are valid selector components. This diff fixes the issue by explicitly handling `+` and `-` lines inside `@implementation` / `@interface` / `@protocol` blocks and parsing them as Objective-C methods. Test Plan: New tests added. Ran tests with: make -j16 FormatTests && ./tools/clang/unittests/Format/FormatTests Reviewers: jolesiak, klimek Reviewed By: jolesiak, klimek Subscribers: klimek, cfe-commits, Wizard Differential Revision: https://reviews.llvm.org/D47095 llvm-svn: 333553
Diffstat (limited to 'lldb/packages/Python/lldbsuite/test/python_api')
0 files changed, 0 insertions, 0 deletions
OpenPOWER on IntegriCloud