Commit Graph

648 Commits

Author SHA1 Message Date
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