Commit Graph

812 Commits

Author SHA1 Message Date
Eric Liu 50dd7b04c5 [clang-format] revert an unintended change in r288493 and add a test case.
git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@290093 91177308-0d34-0410-b5e6-96231b3b80d8
2016-12-19 10:41:05 +00:00
Sylvestre Ledru f1038cc843 Update the default of the Mozilla coding style
Summary:
I also proposed the change in Firefox .clang-format file:
https://bugzilla.mozilla.org/show_bug.cgi?id=1322321

Reviewers: klimek

Subscribers: cfe-commits

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

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@289660 91177308-0d34-0410-b5e6-96231b3b80d8
2016-12-14 16:09:29 +00:00
Daniel Jasper f57fa8e1d4 clang-format: Separate out a language kind for ObjC.
While C(++) and ObjC are generally formatted the same way and can be
mixed, people might want to choose different styles based on the
language. This patch recognizes .m and .mm files as ObjC and also
implements a very crude detection of whether or not a .h file contains
ObjC code. This can be improved over time.

Also move most of the ObjC tests into their own test file to keep file
size maintainable.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@289428 91177308-0d34-0410-b5e6-96231b3b80d8
2016-12-12 12:42:29 +00:00
Eric Liu 10bd02d9c3 [clang-format] calculate MaxInsertOffset in the original code correctly.
Reviewers: djasper

Subscribers: klimek, cfe-commits

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

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@289203 91177308-0d34-0410-b5e6-96231b3b80d8
2016-12-09 11:45:50 +00:00
Eric Liu ca715740dc [ClangFormat] Only insert #include into the #include block in the beginning of the file.
Summary:
This avoid inserting #include into:
- raw string literals containing #include.
- #if block.
- Special #include among declarations (e.g. functions).

Reviewers: djasper

Subscribers: cfe-commits, klimek

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

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@288493 91177308-0d34-0410-b5e6-96231b3b80d8
2016-12-02 11:01:43 +00:00
Benjamin Kramer b84738cb8b [Format] Avoid copying std::sets and simplify code a bit.
No functional change.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@287892 91177308-0d34-0410-b5e6-96231b3b80d8
2016-11-24 15:42:29 +00:00
Daniel Jasper 3c0f4eaf96 [clang-format] Remove (SourceManager, FileID) variants
In Format, remove the reformat() and clean() functions taking a SourceManager
and a FileID. Keep the versions taking StringRef Code.

- there was duplicated functionality
- the FileID versions were harder to use
- the clean() version is dead code anyways

Patch by Krasimir Georgiev. Thank you.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@286243 91177308-0d34-0410-b5e6-96231b3b80d8
2016-11-08 16:11:33 +00:00
Malcolm Parsons 18aecc3bcf [Format] Cleanup after replacing constructor body with = default
Summary:
Remove colon and commas after replacing constructor body with = default.
Fix annotation of TT_CtorInitializerColon when preceded by a comment.

Reviewers: djasper

Subscribers: cfe-commits, klimek

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

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@284732 91177308-0d34-0410-b5e6-96231b3b80d8
2016-10-20 14:58:45 +00:00
Reid Kleckner 3582f4370e Use noexcept instead of LLVM_NOEXCEPT now that all compilers support it
git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@284667 91177308-0d34-0410-b5e6-96231b3b80d8
2016-10-19 23:39:55 +00:00
Eric Liu 57de589877 Make DeletedLines local variables in checkEmptyNamespace.
Summary: Patch by Sam McCall!

Reviewers: djasper

Subscribers: klimek, cfe-commits

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

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@283332 91177308-0d34-0410-b5e6-96231b3b80d8
2016-10-05 15:49:01 +00:00
Eric Liu cd5b63876f [clang-format] append newline after code when inserting new headers at the end of the code which does not end with newline.
Summary:
append newline after code when inserting new headers at the end of the
code which does not end with newline.

Reviewers: djasper

Subscribers: cfe-commits, klimek

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

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@283330 91177308-0d34-0410-b5e6-96231b3b80d8
2016-10-05 15:42:19 +00:00
Eric Liu 04f6547d75 [clang-format] support header deletion in cleanupAroundReplacemnts.
Summary:
- If a replacement has offset UINT_MAX, length 0, and a replacement text
  that is an #include directive, this will insert the #include into the
  correct block in the \p Code.
- If a replacement has offset UINT_MAX, length 1, and a replacement text
  that is the name of the header to be removed, the header will be removed
  from \p Code if it exists.

Reviewers: djasper

Subscribers: cfe-commits, klimek

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

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@282253 91177308-0d34-0410-b5e6-96231b3b80d8
2016-09-23 15:10:56 +00:00
Martin Probst 6d355ff232 clang-format: [JS] do not wrapp @returns tags.
Summary: @returns is incorrect code, the standard is @return. However wrapping it can still confuse users.

Reviewers: djasper

Subscribers: klimek, cfe-commits

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

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@282056 91177308-0d34-0410-b5e6-96231b3b80d8
2016-09-21 06:56:38 +00:00
Martin Probst 9022240727 clang-format: [JS] Do not wrap taze annotation comments.
Summary:
`// taze: ... from ...` comments are used help tools where a
specific global symbol comes from.

Before:
    // taze: many, different, symbols from
    // 'some_long_location_here'

After:
    // taze: many, different, symbols from 'some_long_location_here'

Reviewers: djasper

Subscribers: klimek, cfe-commits

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

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@281857 91177308-0d34-0410-b5e6-96231b3b80d8
2016-09-18 17:33:51 +00:00
Eric Liu 0a23fccbe3 Remove redundant comma around parenthesis in parameter list.
Reviewers: djasper

Subscribers: cfe-commits, klimek

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

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@281344 91177308-0d34-0410-b5e6-96231b3b80d8
2016-09-13 15:02:43 +00:00
Eric Liu 09a0c48856 Also cleanup comments around redundant colons/commas in format::cleanup.
Reviewers: djasper

Subscribers: klimek, cfe-commits

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

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@281064 91177308-0d34-0410-b5e6-96231b3b80d8
2016-09-09 17:50:49 +00:00
Daniel Jasper 8ecd150df6 clang-format: [JavaScript] Change default AllowShortFunctionsOnASingleLine
for Google style to "empty".

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@280878 91177308-0d34-0410-b5e6-96231b3b80d8
2016-09-07 23:01:13 +00:00
Daniel Jasper 1f3b581691 clang-format: [JavaScript] Do requoting in a separate pass
The attempt to fix requoting behavior in r280487 after changes to
tooling::Replacements are incomplete. We essentially need to add to
replacements at the same position, one to insert a line break and one to
change the quoting and that's incompatible with the new
tooling::Replacement API, which does not allow for order-dependent
Replacements. To make the order clear, Replacements::merge() has to be
used, but that requires the merged Replacement to actually refer to the
changed text, which is hard to reproduce for the requoting.

This change fixes the behavior by moving the requoting to a completely
separate pass. The added benefit is that no weird ColumnWidth
calculations are necessary anymore and this should just work even if we
implement string literal splitting in the future.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@280874 91177308-0d34-0410-b5e6-96231b3b80d8
2016-09-07 22:48:53 +00:00
Martin Probst 9348abc049 clang-format: [JS] merge requoting replacements.
Summary:
When formatting source code that needs both requoting and reindentation,
merge the replacements to avoid erroring out for conflicting replacements.

Also removes the misleading Replacements parameter from the
TokenAnalyzer API.

Reviewers: djasper

Subscribers: klimek, cfe-commits

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

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@280487 91177308-0d34-0410-b5e6-96231b3b80d8
2016-09-02 14:29:48 +00:00
Daniel Jasper 348fdb547a clang-format: Set default WebKit style to use C++11.
The WebKit style page says to use nullptr, so this should be fine:
https://webkit.org/code-style-guidelines/

This fixes: llvm.org/PR30220

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@280245 91177308-0d34-0410-b5e6-96231b3b80d8
2016-08-31 14:05:56 +00:00
Daniel Jasper e12937859f clang-format: Correctly calculate affected ranges when sorting #includes.
affectedRanges takes a start and an end offset, not offset and length.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@280165 91177308-0d34-0410-b5e6-96231b3b80d8
2016-08-30 21:33:41 +00:00
Eric Liu 832dfc2ae9 Make clang-format remove duplicate headers when sorting #includes.
Summary: When sorting #includes, #include directives that have the same text will be deduplicated when sorting #includes, and only the first #include in the duplicate #includes remains. If the `Cursor` is provided and put on a deleted #include, it will be put on the remaining #include in the duplicate #includes.

Reviewers: djasper

Subscribers: cfe-commits, klimek

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

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@278206 91177308-0d34-0410-b5e6-96231b3b80d8
2016-08-10 09:32:23 +00:00
Sylvestre Ledru ecf27f00be clang-format: Add SpaceAfterTemplate
Summary:
This is required for compliance with the Mozilla style guide.

This is a rebase+minor change of Birunthan Mohanathas's patch


Reviewers: djasper

Subscribers: klimek, cfe-commits, opilarium

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

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@278121 91177308-0d34-0410-b5e6-96231b3b80d8
2016-08-09 14:24:40 +00:00
Eric Liu 85c0fa18d9 Implement tooling::Replacements as a class.
Summary:
- Implement clang::tooling::Replacements as a class to provide interfaces to
  control how replacements for a single file are combined and provide guarantee
  on the order of replacements being applied.
- tooling::Replacements only contains replacements for the same file now.
  Use std::map<std::string, tooling::Replacements> to represent multi-file
  replacements.
- Error handling for the interface change will be improved in followup patches.

Reviewers: djasper, klimek

Subscribers: cfe-commits

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

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@277335 91177308-0d34-0410-b5e6-96231b3b80d8
2016-08-01 10:16:37 +00:00
Mehdi Amini 2e23251d3e [NFC] Header cleanup
Summary: Removed unused headers, replaced some headers with forward class declarations

Patch by: Eugene <claprix@yandex.ru>

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

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@275882 91177308-0d34-0410-b5e6-96231b3b80d8
2016-07-18 19:02:11 +00:00
Eric Liu a45abc6b0f Make tooling::applyAllReplacements return llvm::Expected<string> instead of empty string to indicate potential error.
Summary:
return llvm::Expected<> to carry error status and error information.
This is the first step towards introducing "Error" into tooling::Replacements.

Reviewers: djasper, klimek

Subscribers: ioeric, klimek, cfe-commits

Differential Revision: http://reviews.llvm.org/D21601

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@275062 91177308-0d34-0410-b5e6-96231b3b80d8
2016-07-11 13:53:12 +00:00
Daniel Jasper 87f4614b43 clang-format: [JS] Add a Closure Compiler JSDoc tags to the default
Google configuration so that it isn't line-wrapped.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@273285 91177308-0d34-0410-b5e6-96231b3b80d8
2016-06-21 17:00:20 +00:00
Eric Liu c736d7a85f [clang-format] do not add existing includes.
Summary: do not add existing includes.

Reviewers: djasper

Subscribers: klimek, cfe-commits

Differential Revision: http://reviews.llvm.org/D21323

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@272669 91177308-0d34-0410-b5e6-96231b3b80d8
2016-06-14 14:09:21 +00:00
Martin Probst facdebd987 clang-format: [JS] Initialize new configuration value.
git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@272569 91177308-0d34-0410-b5e6-96231b3b80d8
2016-06-13 17:50:10 +00:00
Martin Probst aa6f4a7a3e clang-format: [JS] Indent namespaces in JavaScript/TS by default.
Summary: There's no convention of avoiding the nested indentation.

Reviewers: djasper

Subscribers: klimek, alexeagle, cfe-commits

Differential Revision: http://reviews.llvm.org/D21275

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@272559 91177308-0d34-0410-b5e6-96231b3b80d8
2016-06-13 16:41:28 +00:00
Martin Probst f8678510f3 clang-format: [JS] Introduce JavaScriptWrapImports option.
Summary:
When turned on, clang-format wraps JavaScript imports (and importing exports),
instead of forcing the entire import statement onto one line.

Reviewers: djasper

Subscribers: klimek, cfe-commits

Differential Revision: http://reviews.llvm.org/D21273

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@272558 91177308-0d34-0410-b5e6-96231b3b80d8
2016-06-13 16:39:50 +00:00
Eric Liu 6be67f651a [clang-format] pass Style by reference instead of value.
git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@272465 91177308-0d34-0410-b5e6-96231b3b80d8
2016-06-11 11:45:08 +00:00
Eric Liu e74555119f [clang-format] make header guard identification stricter (with Lexer).
Summary: make header guard identification stricter with Lexer.

Reviewers: djasper

Subscribers: klimek, cfe-commits

Differential Revision: http://reviews.llvm.org/D20959

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@271883 91177308-0d34-0410-b5e6-96231b3b80d8
2016-06-06 11:00:13 +00:00
Eric Liu 72e3b3b2a8 [clang-format] skip empty lines and comments in the top of the code when inserting new headers.
Summary:
[clang-format] skip empty lines and comments in the top of the code when inserting new headers.

Pair-programmed with @hokein

Reviewers: djasper

Subscribers: ioeric, cfe-commits, hokein, klimek

Differential Revision: http://reviews.llvm.org/D20898

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@271664 91177308-0d34-0410-b5e6-96231b3b80d8
2016-06-03 12:52:59 +00:00
Martin Probst cd76190272 clang-format: [JS] Sort imported symbols.
Summary: E.g. sort `import {b, a} from 'x';` into `import {a, b} from 'x';`.

Reviewers: djasper

Subscribers: cfe-commits, klimek

Differential Revision: http://reviews.llvm.org/D20798

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@271400 91177308-0d34-0410-b5e6-96231b3b80d8
2016-06-01 15:19:53 +00:00
Benjamin Kramer c5c7090ba1 Avoid unused variable warning in release builds.
git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@271280 91177308-0d34-0410-b5e6-96231b3b80d8
2016-05-31 14:14:42 +00:00
Eric Liu 9ee9835de5 [clang-format] insert new #includes into correct blocks when cleaning up Replacement with cleanupAroundReplacements().
Summary:
When a replacement's offset is set to UINT_MAX or -1U, it is treated as
a header insertion replacement by cleanupAroundReplacements(). The new #include
directive is then inserted into the correct block.

Reviewers: klimek, djasper

Subscribers: klimek, cfe-commits, bkramer

Differential Revision: http://reviews.llvm.org/D20734

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@271276 91177308-0d34-0410-b5e6-96231b3b80d8
2016-05-31 13:34:20 +00:00
Martin Probst 3e258a6c0f clang-format: [JS] sort ES6 imports.
Summary:
This change automatically sorts ES6 imports and exports into four groups:
absolute imports, parent imports, relative imports, and then exports. Exports
are sorted in the same order, but not grouped further.

To keep JS import sorting out of Format.cpp, this required extracting the
TokenAnalyzer infrastructure to separate header and implementation files.

Reviewers: djasper

Subscribers: cfe-commits, klimek

Differential Revision: http://reviews.llvm.org/D20198

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@270203 91177308-0d34-0410-b5e6-96231b3b80d8
2016-05-20 11:24:24 +00:00
Eric Liu 9635a67e3c [clang-format] Make formatReplacements() also sort #includes.
Summary: [clang-format] Make formatReplacements() also sort #includes.

Reviewers: bkramer, djasper

Subscribers: klimek, cfe-commits

Differential Revision: http://reviews.llvm.org/D20362

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@269924 91177308-0d34-0410-b5e6-96231b3b80d8
2016-05-18 13:43:48 +00:00
Eric Liu 6cde4f1042 [clang-format] Make FormatTokenLess::operator() const.
git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@269889 91177308-0d34-0410-b5e6-96231b3b80d8
2016-05-18 08:14:49 +00:00
Eric Liu 2c1064232f Make clang-format cleaner remove redundant commas in list and redundant colon in constructor initializer.
Summary: Make clang-format cleaner remove redundant commas/colons in constructor initializer list.

Reviewers: klimek, djasper

Subscribers: cfe-commits, klimek

Differential Revision: http://reviews.llvm.org/D19804

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@269888 91177308-0d34-0410-b5e6-96231b3b80d8
2016-05-18 08:02:56 +00:00
Martin Probst 3d656bfed4 clang-format: [JS] simplify logic by parsing forward.
This also reduces complexity to O(n) from O(n^2) by avoiding backtracking
re-parses, and fixes length calculation.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@269748 91177308-0d34-0410-b5e6-96231b3b80d8
2016-05-17 06:29:33 +00:00
Martin Probst 06f267e233 clang-format: [JS] fix template string width counting.
Summary:
Simply looking at the final text greatly simplifies the algorithm and also
fixes a reported issue. This requires duplicating the "actual encoding width"
logic, but that seems cleaner than the column acrobatics before.

Reviewers: djasper, bkramer

Subscribers: cfe-commits, klimek

Differential Revision: http://reviews.llvm.org/D20208

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@269747 91177308-0d34-0410-b5e6-96231b3b80d8
2016-05-17 06:29:29 +00:00
Martin Probst fd7431291b clang-format: [JS] respect clang-format off when requoting strings.
Reviewers: djasper

Subscribers: klimek, cfe-commits

Differential Revision: http://reviews.llvm.org/D20200

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@269282 91177308-0d34-0410-b5e6-96231b3b80d8
2016-05-12 11:20:32 +00:00
Eric Liu a2db23ba9d Addressed reviewer's post-submission comments from http://reviews.llvm.org/D18551.
Summary: Make SourceManager in Environment, WhitespaceManager, and FormatTokenAnalyzer etc constant members.

Reviewers: djasper, klimek

Subscribers: cfe-commits, klimek

Differential Revision: http://reviews.llvm.org/D19587

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@267859 91177308-0d34-0410-b5e6-96231b3b80d8
2016-04-28 07:52:03 +00:00
Eric Liu 2c27e5fc4d Addressed review's comments.
git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@267858 91177308-0d34-0410-b5e6-96231b3b80d8
2016-04-28 07:51:47 +00:00
Eric Liu a433799777 Added Fixer implementation and fix() interface in clang-format for removing redundant code.
Summary:
After applying replacements, redundant code like extra commas or empty namespaces
might be introduced. Fixer can detect and remove any redundant code introduced by replacements.
The current implementation only handles redundant commas.

Reviewers: djasper, klimek

Subscribers: ioeric, mprobst, klimek, cfe-commits

Differential Revision: http://reviews.llvm.org/D18551

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@267416 91177308-0d34-0410-b5e6-96231b3b80d8
2016-04-25 15:09:22 +00:00
Marianne Mailhot-Sarrasin 08708dba67 clang-format: Implemented tab usage for continuation and indentation
Use tabs to fill whitespace at the start of a line.

Patch by Maxime Beaulieu

Differential Revision: http://reviews.llvm.org/D19028

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@266320 91177308-0d34-0410-b5e6-96231b3b80d8
2016-04-14 14:52:26 +00:00
Marianne Mailhot-Sarrasin 1390bb1e93 clang-format: Allow include of clangFormat.h in managed context
Including VirtualFileSystem.h in the clangFormat.h indirectly includes <atomic>.
This header is blocked when compiling with /clr.

Patch by Maxime Beaulieu

Differential Revision: http://reviews.llvm.org/D19064

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@266319 91177308-0d34-0410-b5e6-96231b3b80d8
2016-04-14 14:47:37 +00:00
Eric Liu 6a4597fa13 Added formatAndApplyAllReplacements that works on multiple files in libTooling.
Summary:
formatAndApplyAllReplacements takes a set of Replacements, applies them on a
Rewriter, and reformats the changed code.

Reviewers: klimek, djasper

Subscribers: ioeric, klimek, cfe-commits

Differential Revision: http://reviews.llvm.org/D17852

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@264745 91177308-0d34-0410-b5e6-96231b3b80d8
2016-03-29 16:31:53 +00:00
Eric Liu 4f5fb61d0a Added support for different VFSs in format::getStyle. Disable platform-related test case for MS compilers to avoid breaking buildbot.
git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@264277 91177308-0d34-0410-b5e6-96231b3b80d8
2016-03-24 13:22:42 +00:00
Eric Liu 5229f7e0fc Revert "Added support for different VFSs in format::getStyle."
This reverts commit r264253. It is breaking the buildbot http://lab.llvm.org:8011/builders/llvm-clang-lld-x86_64-scei-ps4-windows10pro-fast/builds/2203

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@264276 91177308-0d34-0410-b5e6-96231b3b80d8
2016-03-24 13:22:37 +00:00
Eric Liu 90c6d4a18a Revert "removed redundant comment in format::getStyle."
This reverts commit r264254.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@264275 91177308-0d34-0410-b5e6-96231b3b80d8
2016-03-24 13:22:28 +00:00
Eric Liu 0589759dbf Revert "Added support for different VFSs in format::getStyle."
This reverts commit r264253. It is breaking the buildbot http://lab.llvm.org:8011/builders/llvm-clang-lld-x86_64-scei-ps4-windows10pro-fast/builds/2203


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@264257 91177308-0d34-0410-b5e6-96231b3b80d8
2016-03-24 11:25:28 +00:00
Eric Liu b78c1ce472 Revert "removed redundant comment in format::getStyle."
This reverts commit r264254.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@264256 91177308-0d34-0410-b5e6-96231b3b80d8
2016-03-24 11:24:49 +00:00
Eric Liu 166f12f5d4 removed redundant comment in format::getStyle.
git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@264254 91177308-0d34-0410-b5e6-96231b3b80d8
2016-03-24 10:50:26 +00:00
Eric Liu 60fce8273c Added support for different VFSs in format::getStyle.
Summary:
Previously, format::getStyle assumes that the given file resides in
the real file system, which prevents the use of virtual file system in testing etc.
This patch adds a parameter in format::getStyle interface so that users can specify
the right file system. By default, the file system is the real file system.

Reviewers: djasper, klimek

Subscribers: cfe-commits, klimek

Differential Revision: http://reviews.llvm.org/D18399

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@264253 91177308-0d34-0410-b5e6-96231b3b80d8
2016-03-24 10:50:17 +00:00
Eric Liu cedefead18 Test commit access to clang repo.
Summary: Test commit access to clang repo.

Reviewers: cfe-commits

Subscribers: klimek

Differential Revision: http://reviews.llvm.org/D18432

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@264252 91177308-0d34-0410-b5e6-96231b3b80d8
2016-03-24 10:21:00 +00:00
Daniel Jasper 5b12ee708d clang-format: Make include sorting's main include detection configurable.
This patch adds a regular expression to configure suffixes of an
included file to check whether it is the "main" include of the current
file. Previously, clang-format has allowed arbitrary suffixes on the
formatted file, which is still the case when no IncludeMainRegex is
specified.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@263943 91177308-0d34-0410-b5e6-96231b3b80d8
2016-03-21 14:11:27 +00:00
Daniel Jasper ebcc9dbe43 clang-format: [JS] Make requoting of JavaScript string literals only
change affected ranges.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@263713 91177308-0d34-0410-b5e6-96231b3b80d8
2016-03-17 13:03:41 +00:00
Daniel Jasper df46d8aa75 clang-format: Use stable_sort when sorting #includes.
Otherwise, clang-format can output useless replacements in the presence
of identical #includes

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@262630 91177308-0d34-0410-b5e6-96231b3b80d8
2016-03-03 17:34:14 +00:00
Daniel Jasper 484e92d2ec clang-format: [JS] Optionally re-quote string literals.
Turns "foo" into 'foo' (or vice versa, depending on configuration).
This makes it more convenient to follow the Google JavaScript style
guide:
https://google.github.io/styleguide/javascriptguide.xml?showone=Strings#Strings

This functionality is behind the option "JavaScriptQuotes", which can be:

  * "leave" (no re-quoting)
  * "single" (change to single quotes)
  * "double" (change to double quotes)

This also changes single quoted JavaScript string literals to be treated
as tok::string_literal, not tok::char_literal, which fixes two unrelated
tests.

Patch by Martin Probst. Thank you.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@262534 91177308-0d34-0410-b5e6-96231b3b80d8
2016-03-02 22:44:03 +00:00
Manuel Klimek e30483a5c5 Add functions to apply replacements and reformat them.
This is a commonly useful feature to have, and we have implemented it
multiple times with different kinds of bugs. This implementation
centralizes the idea in a set of functions that we can then use from the various
tools.

Reverts r262234, which is a revert of r262232, and puts the functions
into FOrmat.h, as they are closely coupled to clang-format, and we
otherwise introduce a cyclic dependency between libFormat and
libTooling.

Patch by Eric Liu.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@262323 91177308-0d34-0410-b5e6-96231b3b80d8
2016-03-01 12:37:30 +00:00
Daniel Jasper 4ca3ad6787 clang-format: [JS] Add @return to the supported JSDoc pragmas in Google
style.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@261563 91177308-0d34-0410-b5e6-96231b3b80d8
2016-02-22 20:24:11 +00:00
Daniel Jasper ca0c7dfac2 clang-format: [JS] Support @see annotations in JSDoc comments in Google
style.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@260057 91177308-0d34-0410-b5e6-96231b3b80d8
2016-02-07 21:22:16 +00:00
Daniel Jasper 03bf8df72b clang-format: Add option to disable string literal formatting.
git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@259352 91177308-0d34-0410-b5e6-96231b3b80d8
2016-02-01 11:21:02 +00:00
Daniel Jasper ca8512adf8 clang-format: Fix the counting of leading whitespace in tok::unknown tokens
Previously, all whitespace characters would increase the starting
column, which doesn't make sense. This fixes a problem, e.g. with the
length calculation in JS template strings.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@257267 91177308-0d34-0410-b5e6-96231b3b80d8
2016-01-09 21:12:45 +00:00
Daniel Jasper d9228ef3ed Make clang::format::reformat work with non 0-terminated strings.
git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@257259 91177308-0d34-0410-b5e6-96231b3b80d8
2016-01-09 15:56:57 +00:00
Daniel Jasper 52b0a5c753 clang-format: [JS] Add some Closure Compiler JSDoc tags to the default
Google configuration so that they aren't line-wrapped.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@257159 91177308-0d34-0410-b5e6-96231b3b80d8
2016-01-08 08:14:58 +00:00
Daniel Jasper 794a77e319 clang-format: [TableGen] Support ;-less include lines.
git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@256412 91177308-0d34-0410-b5e6-96231b3b80d8
2015-12-25 08:53:31 +00:00
Nico Weber 4be5ac759f Disable include sorting by default for Chromium style.
Include sorting generally can break .cc files, especially on Windows.  Make
this opt-in for Chromium style to give us some more time to roll this out.

(Given that the Google style guide is used by many companies, some of them
probably writing code on Windows, one could argue this should be opt-in in
general...)


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@256288 91177308-0d34-0410-b5e6-96231b3b80d8
2015-12-22 22:42:56 +00:00
Daniel Jasper b8e3bce20e clang-format: [JS] "operator" is not a keyword in Java/JavaScript.
git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@256245 91177308-0d34-0410-b5e6-96231b3b80d8
2015-12-22 15:47:56 +00:00
Daniel Jasper a45fac502a clang-format: Only consider the first #include that looks right to be
the main #include.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@256170 91177308-0d34-0410-b5e6-96231b3b80d8
2015-12-21 17:28:24 +00:00
Daniel Jasper 1e96378537 clang-format: [JS] Change Google-style default for aligning operands.
The style guide allows both, but apparently, this is the more dominant use.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@256154 91177308-0d34-0410-b5e6-96231b3b80d8
2015-12-21 13:52:19 +00:00
Daniel Jasper 54d63ca343 clang-format: Only try to find the "main" include in the first block of
includes.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@256153 91177308-0d34-0410-b5e6-96231b3b80d8
2015-12-21 13:40:49 +00:00
Daniel Jasper 74b162155a clang-format: Extend detection of the "main" #include to use the filename
Before, the first (non-system) header in a file was considered to be
the main include. This is conservative as it makes clang-format change
the #include order less often. Instead implement some basic usage of
the filename itself. With this patch, clang-format considers every
header to be a main include if the header file's basename is a prefix
to the filename the #include is in.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@256148 91177308-0d34-0410-b5e6-96231b3b80d8
2015-12-21 12:14:17 +00:00
Zachary Turner bef33a25fe Support AlwaysBreakAfterReturnType
This changes the behavior of AlwaysBreakAfterDeclarationReturnType
so that it supports breaking after declarations, definitions, or
both.

Differential Revision: http://reviews.llvm.org/D10370
Reviewed By: Daniel Jasper

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@256046 91177308-0d34-0410-b5e6-96231b3b80d8
2015-12-18 22:20:15 +00:00
Daniel Jasper 0df6ca8485 clang-format: Extend header sort category implementation.
Specifically, it is sometimes necessary to keep certain #includes as
the first #include, even before the main #include for a .cc file.
Switching the category to be signed instead of unsigned isn't ideal,
but it seems as good of an option as any and is fully backwards
compatible.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@255757 91177308-0d34-0410-b5e6-96231b3b80d8
2015-12-16 10:10:16 +00:00
Daniel Jasper d86f4ca5e4 clang-format: Fix style default for WebKit and Linux styles.
Brought up in codereviews:
http://reviews.llvm.org/D15445
http://reviews.llvm.org/D15485

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@255484 91177308-0d34-0410-b5e6-96231b3b80d8
2015-12-14 08:24:16 +00:00
Daniel Jasper c5e6fe85ed clang-format: Make it possible to turn off comment reflowing.
git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@254414 91177308-0d34-0410-b5e6-96231b3b80d8
2015-12-01 13:28:53 +00:00
Daniel Jasper dd5d054c2c clang-format: Make moving of the Cursor work properly when sorting #includes.
git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@253860 91177308-0d34-0410-b5e6-96231b3b80d8
2015-11-23 08:36:35 +00:00
Daniel Jasper a49b2123bc clang-format: Make sorting includes respect // clang-format off
git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@253772 91177308-0d34-0410-b5e6-96231b3b80d8
2015-11-21 09:17:08 +00:00
Daniel Jasper 36d78064b0 clang-format: [JS] struct and union aren't keywords / reserved words.
git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@253671 91177308-0d34-0410-b5e6-96231b3b80d8
2015-11-20 15:58:50 +00:00
Daniel Jasper d27c92ca6f clang-format: Enable #include sorting by default.
This has seen quite some usage and I am not aware of any issues. Also
add a style option to enable/disable include sorting. The existing
command line flag can from now on be used to override whatever is set
in the style.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@253202 91177308-0d34-0410-b5e6-96231b3b80d8
2015-11-16 12:38:56 +00:00
Daniel Jasper e1a6bbbe9d clang-format: Turn on wrapping before "else" for WebKit style.
git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@252089 91177308-0d34-0410-b5e6-96231b3b80d8
2015-11-04 22:49:32 +00:00
Daniel Jasper 6e0ab6e499 clang-format: Add an additional value to AlignAfterOpenBracket: AlwaysBreak.
Summary:
If this option is set, clang-format will always insert a line wrap, e.g.
before the first parameter of a function call unless all parameters fit
on the same line. This obviates the need to make a decision on the
alignment itself.

Use this style for Google's JavaScript style and add some minor tweaks
to correctly handle nested blocks etc. with it. Don't use this option
for for/while loops.

Reviewers: klimek

Subscribers: klimek, cfe-commits

Differential Revision: http://reviews.llvm.org/D14104

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@251405 91177308-0d34-0410-b5e6-96231b3b80d8
2015-10-27 12:38:37 +00:00
Nico Weber f92e9f7794 clang-format: Teach --sort-includes to interleave #include and #import.
clang accepts both #include and #import for includes (the latter having an
implicit header guard).  Let clang-format interleave both types if
--sort-includes is passed.  #import is used frequently in Objective-C code.

http://reviews.llvm.org/D13853


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@250909 91177308-0d34-0410-b5e6-96231b3b80d8
2015-10-21 17:13:45 +00:00
Nico Weber e930baa03c clang-format: Extend main header include sorting heuristic to Objective-C files.
git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@250675 91177308-0d34-0410-b5e6-96231b3b80d8
2015-10-19 01:36:09 +00:00
Daniel Jasper a055582ecc clang-format: [JS] Handle string literals spanning character classes.
If a RegExp contains a character group with a quote (/["]/), the
trailing end of it is first tokenized as a string literal, which leads
to the merging code seeing an unbalanced bracket.

This change parses regex literals from the left hand side. That
simplifies the parsing code and also allows correctly handling escapes
and character classes, hopefully correctly parsing all regex literals.

Patch by Martin Probst, thank you.
Review: http://reviews.llvm.org/D13765

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@250648 91177308-0d34-0410-b5e6-96231b3b80d8
2015-10-18 07:02:28 +00:00
Nico Weber 4e6f624643 clang-format/java: Break after annotations on fields in Chromium style.
Chromium follows the Android style guide for Java code, and that doesn't make
the distinction between fields and non-fields that the Google Java style guide
makes:

https://source.android.com/source/code-style.html#use-standard-java-annotations
https://google.github.io/styleguide/javaguide.html#s4.8.5-annotations



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@250422 91177308-0d34-0410-b5e6-96231b3b80d8
2015-10-15 16:03:01 +00:00
Daniel Jasper e9e7993cfc clang-format: [JS] handle character classes in regexes.
Slashes in regular expressions do not need to be escaped and do not
terminate the regular expression even without a preceding backslash.

Patch by Martin Probst. Thank you.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@250009 91177308-0d34-0410-b5e6-96231b3b80d8
2015-10-12 03:13:48 +00:00
Daniel Jasper 9a58694aec Make clang-format actually respect custom brace wrapping flags.
This fixes llvm.org/PR25073.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@249519 91177308-0d34-0410-b5e6-96231b3b80d8
2015-10-07 04:06:10 +00:00
Daniel Jasper fa119ac183 clang-format: Make IncludeCategories configurable in .clang-format file.
This was made much easier by introducing an IncludeCategory struct to
replace the previously used std::pair.

Also, cleaned up documentation and added examples.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@249392 91177308-0d34-0410-b5e6-96231b3b80d8
2015-10-06 11:54:18 +00:00
Benjamin Kramer 9aa66ec171 [VFS] Transition clang-format to use an in-memory FS.
Apart from being cleaner this also means that clang-format no longer has
access to the host file system. This isn't necessary because clang-format
never reads includes :)

Includes minor tweaks and bugfixes found in the VFS implementation while
running clang-format tests.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@249385 91177308-0d34-0410-b5e6-96231b3b80d8
2015-10-06 10:04:08 +00:00
Saleem Abdulrasool e1cb12fa9b Add -f[no-]declspec to control recognition of __declspec as a keyword
In versions of clang prior to r238238, __declspec was recognized as a keyword in
all modes.  It was then changed to only be enabled when Microsoft or Borland
extensions were enabled (and for CUDA, as a temporary measure).  There is a
desire to support __declspec in Playstation code, and possibly other
environments.  This commit adds a command-line switch to allow explicit
enabling/disabling of the recognition of __declspec as a keyword.  Recognition
is enabled by default in Microsoft, Borland, CUDA, and PS4 environments, and
disabled in all other environments.

Patch by Warren Ristow!

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@249279 91177308-0d34-0410-b5e6-96231b3b80d8
2015-10-04 17:51:05 +00:00
Daniel Jasper d5adefdf2d [clang-format] Add support of consecutive declarations alignment
This allows clang-format to align identifiers in consecutive
declarations. This is useful for increasing the readability of the code
in the same way the alignment of assignations is.

The code is a slightly modified version of the consecutive assignment
alignment code. Currently only the identifiers are aligned, and there is
no support of alignment of the pointer star or reference symbol.

The patch also solve the issue of alignments not being possible due to
the ColumnLimit for both the existing AlignConsecutiveAligments and the
new AlignConsecutiveDeclarations.

Patch by Beren Minor, thank you.

Review: http://reviews.llvm.org/D12362

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@248999 91177308-0d34-0410-b5e6-96231b3b80d8
2015-10-01 10:06:54 +00:00
Daniel Jasper 6cc91d4e13 clang-format: Add a new brace style "custom" as well as flags to
control the individual braces. The existing choices for brace wrapping
are now merely presets for the different flags that get expanded upon
calling the reformat function.

All presets have been chose to keep the existing formatting, so there
shouldn't be any difference in formatting behavior.

Also change the dump_format_style.py to properly document the nested
structs that are used to keep these flags discoverable among all the
configuration flags.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@248802 91177308-0d34-0410-b5e6-96231b3b80d8
2015-09-29 14:57:55 +00:00
Daniel Jasper 8580b330e6 clang-format: Extend #include sorting functionality
Recognize the main module header as well as different #include categories.
This should now mimic the behavior of llvm/utils/sort_includes.py as
well as clang-tools-extra/clang-tidy/llvm/IncludeOrderCheck.cpp very
closely.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@248782 91177308-0d34-0410-b5e6-96231b3b80d8
2015-09-29 07:53:08 +00:00
Daniel Jasper 30ddf33877 clang-format: Add initial #include sorting capabilities.
To implement this nicely, add a function that merges two sets of
replacements that are meant to be done in sequence. This functionality
will also be useful for other applications, e.g. formatting the result
of clang-tidy fixes.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@248367 91177308-0d34-0410-b5e6-96231b3b80d8
2015-09-23 08:30:47 +00:00
Nico Weber cb369333ab clang-format: Remove ChromiumStyle.MacroBlockBegin.
We prefer setting these in our .clang-format file as the macros change over
time.  (Also, the code was setting MacroBlockBegin twice and didn't set
MacroBlockEnd, so it wasn't doing what it tried to do anyways.)


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@248205 91177308-0d34-0410-b5e6-96231b3b80d8
2015-09-21 20:06:42 +00:00
Roman Kashitsyn 8aef53c9eb Add WebKit brace style configuration option.
Summary:
Add brace style `BS_WebKit` as described on https://www.webkit.org/coding/coding-style.html:

* Function definitions: place each brace on its own line.
* Other braces: place the open brace on the line preceding the code block; place the close brace on its own line.

Set brace style used in `getWebKitStyle()` to the newly added `BS_WebKit`.

Reviewers: djasper, klimek

Subscribers: klimek, cfe-commits

Differential Revision: http://reviews.llvm.org/D11837

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@244446 91177308-0d34-0410-b5e6-96231b3b80d8
2015-08-10 13:43:19 +00:00
Daniel Jasper 5061880d99 clang-format: Take nested lines into account when detection C++03
compatibility and variable alignment.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@242611 91177308-0d34-0410-b5e6-96231b3b80d8
2015-07-18 16:35:30 +00:00
Birunthan Mohanathas fac72109a1 clang-format: Add Mozilla brace breaking style
Differential Revision: http://reviews.llvm.org/D10883


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@241986 91177308-0d34-0410-b5e6-96231b3b80d8
2015-07-12 03:13:54 +00:00
Birunthan Mohanathas 0af047c817 clang-format: Add MacroBlock{Begin,End} options
The MacroBlockBegin and MacroBlockEnd options make matching macro identifiers
behave like '{' and '}', respectively, in terms of indentation.

Mozilla code, for example, uses several macros that begin and end a scope.
Previously, Clang-Format removed the indentation resulting in:

    MACRO_BEGIN(...)
    MACRO_ENTRY(...)
    MACRO_ENTRY(...)
    MACRO_END

Now, using the options

    MacroBlockBegin: "^[A-Z_]+_BEGIN$"
    MacroBlockEnd: "^[A-Z_]+_END$"

will yield the expected result:

    MACRO_BEGIN(...)
      MACRO_ENTRY(...)
      MACRO_ENTRY(...)
    MACRO_END

Differential Revision: http://reviews.llvm.org/D10840


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@241363 91177308-0d34-0410-b5e6-96231b3b80d8
2015-07-03 17:25:16 +00:00
Daniel Jasper 5e92afa681 clang-format: [JS] Treat regex literals like string literals.
Using the token type "unknown" can interfere badly with
WhitespaceManager's way of handling multiline comments.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@241273 91177308-0d34-0410-b5e6-96231b3b80d8
2015-07-02 15:00:44 +00:00
Daniel Jasper 33f8df6cdd clang-format: [JS] Skip comments when applying the regex-literal heuristic
git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@241264 91177308-0d34-0410-b5e6-96231b3b80d8
2015-07-02 14:14:04 +00:00
Daniel Jasper 5c1b5f8d06 clang-format: [JS] Fix bug in regex literal parsing.
The lexer wasn't properly reset leading to unexpected deletions.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@241262 91177308-0d34-0410-b5e6-96231b3b80d8
2015-07-02 14:01:34 +00:00
Daniel Jasper 89095b5026 clang-format: [JS] Support regex literals at the start of a file.
git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@241259 91177308-0d34-0410-b5e6-96231b3b80d8
2015-07-02 13:20:45 +00:00
Daniel Jasper b73f25667c clang-format: [JS] Fix character counting in template strings.
Some counts were off, we don't need to take the leading newlines of the
first ` into account and some tests were just wrong.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@241257 91177308-0d34-0410-b5e6-96231b3b80d8
2015-07-02 13:08:28 +00:00
Birunthan Mohanathas 9d44adcff8 clang-format: Add option to break after definition return type for top-level functions only
Differential Revision: http://reviews.llvm.org/D10774


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@240959 91177308-0d34-0410-b5e6-96231b3b80d8
2015-06-29 15:30:42 +00:00
Birunthan Mohanathas 18bd7cce0d clang-format: Adjust Mozilla style defaults
Summary: This makes the Mozilla style defaults more compliant with the Mozilla style guide. A few options were removed in order to use the LLVM style defaults.

Differential Revision: http://reviews.llvm.org/D10771


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@240957 91177308-0d34-0410-b5e6-96231b3b80d8
2015-06-29 15:18:58 +00:00
Birunthan Mohanathas 921f738f27 clang-format: Stop old options from overriding new options
Summary: Depends on D10785.

Reviewers: djasper

Reviewed By: djasper

Subscribers: klimek, cfe-commits

Differential Revision: http://reviews.llvm.org/D10786

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@240909 91177308-0d34-0410-b5e6-96231b3b80d8
2015-06-28 14:52:34 +00:00
Birunthan Mohanathas 94be9fb347 clang-format: Alphabetize FormatStyle members
Reviewers: djasper

Reviewed By: djasper

Subscribers: klimek, cfe-commits

Differential Revision: http://reviews.llvm.org/D10784

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@240907 91177308-0d34-0410-b5e6-96231b3b80d8
2015-06-28 14:51:17 +00:00
Daniel Jasper 13e2ca85e7 clang-format: [JS] Support regex literals containing quotes (' and ").
git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@240548 91177308-0d34-0410-b5e6-96231b3b80d8
2015-06-24 16:01:02 +00:00
Alexander Kornienko 8ca7705aa3 Revert r240270 ("Fixed/added namespace ending comments using clang-tidy").
git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@240353 91177308-0d34-0410-b5e6-96231b3b80d8
2015-06-22 23:07:51 +00:00
Alexander Kornienko ac58acc7f2 Fixed/added namespace ending comments using clang-tidy. NFC
The patch is generated using this command:

  $ tools/extra/clang-tidy/tool/run-clang-tidy.py -fix \
      -checks=-*,llvm-namespace-comment -header-filter='llvm/.*|clang/.*' \
      work/llvm/tools/clang

To reduce churn, not touching namespaces spanning less than 10 lines.



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@240270 91177308-0d34-0410-b5e6-96231b3b80d8
2015-06-22 09:47:44 +00:00
Daniel Jasper f8d4459793 clang-format: clang-format (NFC)
git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@239903 91177308-0d34-0410-b5e6-96231b3b80d8
2015-06-17 13:08:06 +00:00
Daniel Jasper 2a755b2fd3 clang-format: [JS] Fix corner case in template string parsing.
Before, these would not properly detected because of the char/string
literal found when re-lexing after the first `:

  var x = `'`;  // comment with matching quote '
  var x = `"`;  // comment with matching quote "

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@239693 91177308-0d34-0410-b5e6-96231b3b80d8
2015-06-14 07:16:57 +00:00
Daniel Jasper 5596c4ee94 clang-format: Don't add spaces in foreach macro definition.
Before clang-format would e.g. add a space into

   #define Q_FOREACH(x, y)

which turns this into a non-function-like macro.

Patch by Strager Neds, thank you!

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@239513 91177308-0d34-0410-b5e6-96231b3b80d8
2015-06-11 08:38:19 +00:00
Manuel Klimek 79e3e8702a Remove error message when using the fallback style.
git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@238822 91177308-0d34-0410-b5e6-96231b3b80d8
2015-06-02 11:52:15 +00:00
Manuel Klimek 384ba28ba1 clang-format: [JS] Better support for fat arrows.
Assigns a token type (TT_JsFatArrow) to => tokens, and uses that to
more easily recognize and format fat arrow functions.
Improves function parsing to better recognize formal parameter
lists and return type declarations.
Recognizes arrow functions and parse function bodies as child blocks.

Patch by Martin Probst.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@237895 91177308-0d34-0410-b5e6-96231b3b80d8
2015-05-21 12:23:34 +00:00
Manuel Klimek 8fd433b059 Refactor the formatter of clang-format.
Pull various parts of the UnwrappedLineFormatter into their own
abstractions. NFC.

There are two things left for subsequent changes (to keep this
reasonably small)
- the UnwrappedLineFormatter now has a bad name
- the UnwrappedLineFormatter::format function is still too large

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@236974 91177308-0d34-0410-b5e6-96231b3b80d8
2015-05-11 08:21:35 +00:00
Daniel Jasper 9fb893e047 clang-format: Fix bug in escaped newline calculation.
This prevents clang-format from inadvertently joining stuff into macro
definitions as reported in llvm.org/PR23466.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@236944 91177308-0d34-0410-b5e6-96231b3b80d8
2015-05-10 08:00:25 +00:00
Daniel Jasper 9b0abb9df5 clang-format: [JS] Fix regex literal detection.
Before:
  var regex = /= / ;

After:
  var regex = /=/;

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@236811 91177308-0d34-0410-b5e6-96231b3b80d8
2015-05-08 07:55:13 +00:00
Manuel Klimek 1b514675e0 Implements a way to retrieve information about whether some lines were not formatted due to syntax errors.
git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@236722 91177308-0d34-0410-b5e6-96231b3b80d8
2015-05-07 12:26:30 +00:00
Manuel Klimek 077e5b792c Remove deprecated version of reformat.
git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@236594 91177308-0d34-0410-b5e6-96231b3b80d8
2015-05-06 12:12:22 +00:00
Manuel Klimek 13e7452f30 Remove all computation of structural errors in clang-format's line parser.
We were already ignoring those already.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@236591 91177308-0d34-0410-b5e6-96231b3b80d8
2015-05-06 11:56:29 +00:00
Daniel Jasper f57cfa4de2 clang-format: Fix another assertion discovered by the fuzzer.
In the process, fix an old todo that I don't really know how to write
tests for. The problem is that Clang's lexer creates very strange token
sequences for these. However, the new approach seems generally better
and easier to read so I am submitting it nonetheless.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@236589 91177308-0d34-0410-b5e6-96231b3b80d8
2015-05-06 11:16:43 +00:00
Daniel Jasper de174e609c clang-format: NFC: Delete FormatToken::IsForEachMacro. Use a TokenType instead.
git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@236415 91177308-0d34-0410-b5e6-96231b3b80d8
2015-05-04 09:22:29 +00:00
Daniel Jasper 8a37a384d5 clang-format: [JS] Fix calculation of template string width.
OriginalColumn might not be set, so fall back to Location and SourceMgr
in case it is missing. Also initialize end column in case the token is
multi line, but it's the ` token itself that starts the multi line.

Patch by Martin Probst, thank you!

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@236383 91177308-0d34-0410-b5e6-96231b3b80d8
2015-05-02 08:05:38 +00:00
Daniel Jasper aea0264e0c clang-format: Add ability to align assignment operators.
In Objective-C some style guides use a style where assignment operators are
aligned, in an effort to increase code readability. This patch adds an option
to the format library which allows this functionality. It is disabled by
default for all the included styles, so it must be explicitly enabled.

The option will change code such as:
  - (void)method {
      NSNumber *one = @1;
      NSNumber *twentyFive = @25;
  }

to:
  - (void)method {
      NSNumber *one        = @1;
      NSNumber *twentyFive = @25;
  }

Patch by Matt Oakes. Thank you!

Accidentally reformatted all the tests...

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@236100 91177308-0d34-0410-b5e6-96231b3b80d8
2015-04-29 13:06:49 +00:00
Daniel Jasper 8009ca27ad clang-format: [JS] handle comments in template strings.
Patch by Martin Probst. Thank you.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@235078 91177308-0d34-0410-b5e6-96231b3b80d8
2015-04-16 08:20:51 +00:00
Daniel Jasper 7c98155813 clang-format: [Proto] No alternate operator names.
git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@234055 91177308-0d34-0410-b5e6-96231b3b80d8
2015-04-03 21:15:46 +00:00
Daniel Jasper bfb53fd201 clang-format: Fix merging of _T macros.
NewlinesBefore and HasUnescapedNewline were not properly propagated
leading to llvm.org/PR23032.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@233276 91177308-0d34-0410-b5e6-96231b3b80d8
2015-03-26 14:47:35 +00:00
Daniel Jasper a47fa0bab4 clang-format: Recognize the .ts (TypeScript) extension as JavaScript.
Patch by Martin Probst. Thank you.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@231926 91177308-0d34-0410-b5e6-96231b3b80d8
2015-03-11 14:58:38 +00:00
Benjamin Kramer 5324ac0774 Make constant static variables const so they can go into a read-only section
NFC.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@231597 91177308-0d34-0410-b5e6-96231b3b80d8
2015-03-08 16:06:46 +00:00
Jacques Pienaar 60d5249153 clang-format: Change location of stashed token
Commit of patch in http://reviews.llvm.org/D7871



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@230395 91177308-0d34-0410-b5e6-96231b3b80d8
2015-02-24 23:23:24 +00:00
Jacques Pienaar 8de57be160 Fix merging of << at end of input.
Commit of review http://reviews.llvm.org/D7766



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@230061 91177308-0d34-0410-b5e6-96231b3b80d8
2015-02-20 21:09:01 +00:00
Daniel Jasper d830233bd6 clang-format: [js] Support template strings.
Merge template strings (marked by backticks ``).
Do not format any contents of template strings.

Patch by Martin Probst. Thank you.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@230011 91177308-0d34-0410-b5e6-96231b3b80d8
2015-02-20 13:47:38 +00:00
Jacques Pienaar 1560e692b3 clang-format: Space and triple angle braces.
Committing patch http://reviews.llvm.org/D6800.



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@229783 91177308-0d34-0410-b5e6-96231b3b80d8
2015-02-18 23:48:37 +00:00
Daniel Jasper 801cbfd795 clang-format: Fix assert triggering on carriage returns.
git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@228288 91177308-0d34-0410-b5e6-96231b3b80d8
2015-02-05 11:05:31 +00:00
Nico Weber d52fa386bb clang-format: Add support for SEH __try / __except / __finally blocks.
This lets clang-format format

    __try {
    } __except(0) {
    }

and

    __try {
    } __finally {
    }

correctly. __try and __finally are keywords if `LangOpts.MicrosoftExt` is set,
so this turns this on.  This also enables a few other keywords, but it
shouldn't overly perturb regular clang-format operation.  __except is a
context-sensitive keyword, so `AdditionalKeywords` needs to be passed around to
a few more places.

Fixes PR22321.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@228148 91177308-0d34-0410-b5e6-96231b3b80d8
2015-02-04 15:26:27 +00:00
Daniel Jasper 2f18b37792 clang-format: FIXME that led to access of uninitialized memory.
I have so far not succeeded in finding a nicely reduced test case or an
observable difference which could help me create a test failure without
msan.

Committing without test to unblock kcc's further fuzzing progress.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@227433 91177308-0d34-0410-b5e6-96231b3b80d8
2015-01-29 13:11:47 +00:00
Daniel Jasper d972f1a698 clang-format: Disable flag for Google's Java and Javascript styles.
Disable AlwaysBreakBeforeMultilineString, as the style guides don't
really say to do so.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@225982 91177308-0d34-0410-b5e6-96231b3b80d8
2015-01-14 12:24:59 +00:00
Nico Weber f1a1f7ecdf clang-format: Let Chromium use the Google default for AlignTrailingComments.
r225141 changed the defaults of AllowShortIfStatementsOnASingleLine and
AlignTrailingComments for Google style and added explicit overrides for
Chromium style to undo these changes.  For AllowShortIfStatementsOnASingleLine
that's good as the Android style guide (which Chromium uses for Java) explicitly
permits single-line ifs. But it's silent on trailing comments, to it makes
sense for Chromium style to just follow Google style.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@225363 91177308-0d34-0410-b5e6-96231b3b80d8
2015-01-07 18:41:10 +00:00
Daniel Jasper 0046ba3a66 clang-format: [Java] Change a few flags for Google's Java style.
No tests added as all of these are already tested separately.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@225141 91177308-0d34-0410-b5e6-96231b3b80d8
2015-01-04 20:40:45 +00:00
Daniel Jasper 666557c0af clang-format: Fix incorrect calculation of token lenghts.
This led, e.g. to break JavaScript regex literals too early.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@224419 91177308-0d34-0410-b5e6-96231b3b80d8
2014-12-17 09:11:08 +00:00
Daniel Jasper db0973df17 clang-format: Factor out UnwrappedLineFormatter into a separate file.
No functional changes intended.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@223936 91177308-0d34-0410-b5e6-96231b3b80d8
2014-12-10 19:00:42 +00:00
Daniel Jasper b0dfccf692 clang-format: Don't merge lines with comments.
Before:
  int f() { // comment return 42; }

After:
  int f() { // comment
    return 42;
  }

This fixes llvm.org/PR21769.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@223609 91177308-0d34-0410-b5e6-96231b3b80d8
2014-12-07 16:44:49 +00:00
Daniel Jasper f6babddc87 clang-format: Add option to suppress operator alignment.
With alignment:
  int aaaaaa = aa
               + bbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbb
                     * cccccccccccccccccccccccccccccccc;

Without alignment:
  int aaaaaa = aa
      + bbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbb
          * cccccccccccccccccccccccccccccccc;

This fixes llvm.org/PR21666.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@223117 91177308-0d34-0410-b5e6-96231b3b80d8
2014-12-02 13:24:51 +00:00