Commit Graph

433 Commits

Author SHA1 Message Date
est31
c6243c950e Improve comment rewriting with normalize_comments == false
Only change multiline comments of the form

```rust
/*
 * Text
 */
```

while not affecting comments of the form

```rust
/*
Text
*/
```

when normalize_comments is off. In the first case,
we have a known character we can align against, while
we don't have one in the second case.

Before, we have converted the second form into the first,
but this is against the spirit of normalize_comments being
turned off.

Fixes #956
2016-09-17 03:41:11 +02:00
est31
efd3e5c091 Add three new options for spaces 2016-09-17 02:22:13 +02:00
Nick Cameron
4418fab4f2 Update to latest Syntex
+ Cargo update
+ 0.6.2 release
2016-09-16 15:28:02 +12:00
sinkuu
b446e31739 Fix #1040 2016-09-10 13:08:32 +09:00
sinkuu
bf078566d7 Fix #1021: Handle .. in tuple / tuple struct patterns 2016-09-09 19:56:34 +09:00
dawirstejeck
a5d7073bf5 Split impl at 'for' if a line break is needed (#1148)
* Split impl at 'for' if a line break is needed

* Fix formatting

* Improve comments

* Skip second try if there is no 'for'

* Restore intentional trailing whitespace

* Change test source to be incorrectly formatted

* Restore more missing trailing whitespace

* Remove too much whitespace...

Really should learn how to use git revert.
2016-09-06 17:11:56 +12:00
Nick Cameron
bce26d51bd Merge pull request #1134 from sinkuu/issue977
Fix #977
2016-08-29 07:07:48 +12:00
sinkuu
130c593544 Fix #977 2016-08-28 16:40:03 +09:00
Stuart Dootson
61042e6e4d Fix issue 1124 - detect start of output rather than start of input file when writing output source file (#1133)
* Change required to prevent a trailing space at the end of a separate module being propagated

* Detect the start of the output file rather than the start of the input file when deciding whether to output preceding snippets - this stops unnecessary whitespace and blank lines from being inserted when spans and statements are output in an order other than that from the input file.

* Add code to prevent space from being added with the prefix snippet if a) the snippet is entirely horizontal whitespace, or b) the snippet contains whitespace  followed by a newline. This prevents trailing spaces at the end of a line from being added.

* Tests for this issue

* Tidy up `match` statements

* Add test with blank lines between `use` statements
2016-08-25 08:32:04 +12:00
Stuart Dootson
4029b0e704 Fix #1120 - rework how the use list prefix is determined. (#1121)
* Fix #1120 - rework how the use list prefix is determined.

* Added test commentary & another test case
2016-08-10 18:13:27 +12:00
Stuart Dootson
cb0b7108ca Add test case for issue #1111, by adding another route by which a test file's config can be located 2016-08-08 23:13:45 +02:00
Nathan Ridge
899169a1d2 Apply space_before_type_annotation to struct ctors (#1109) 2016-08-05 01:30:53 -04:00
Nick Cameron
fe69e975e3 Merge pull request #1110 from HighCommander4/issue1109a
Add two new whitespace options (#1109)
2016-08-04 10:58:32 +12:00
Nathan Ridge
4b999a99c0 Add two new whitespace options (#1109)
* An option to leave a space before the colon in a type annotation

* An option to leave a space before the colon in a trait or lifetime bound
2016-08-03 01:11:39 -04:00
Julien Blanchard
b4e49ddbf5 Fix imports with absolute paths 2016-08-01 10:10:04 +02:00
dawirstejeck
22de7ced28 Fix overlong function signature (#1089)
* Fix issue-1049

* Add testcase suggested by pepyakin

* Fix last commit

* Handle special case

* Remove debugging println

* Fix grammar in comment

* Change word in comment

* Add test for long func without ret type

* Add one more test
2016-08-01 16:25:00 +12:00
dawirstejeck
e76cb6a907 Fix overlong impl (#1091)
* Fix issue-1048

* Take possible where-clause into account

* Move test to existing test set

* Fix wrong variable name
2016-07-26 17:34:11 +12:00
Stuart Dootson
78b52ec3e1 Add use declaration re-ordering (#1104)
* Add config options for combinations of lines and items

* Reordering of import lines implemented.

* Changed nested matches to tuple pattern matching

* Added ordering of path list items to the ordering of use declarations

* Move `format_imports` and `format_import` methods to `imports.rs`

* Add comment to explain how `use` declarations are split off while walking through a module

* Change `ImportReordering` config option to separate boolean options
2016-07-26 17:20:01 +12:00
sinkuu
0dc3fc7a2c Fix formatting empty block comments (/**/)
issue #1086
2016-07-09 22:56:50 +09:00
Nick Cameron
664bf3eae7 Merge pull request #1054 from sanxiyn/loop-width
Fix width computation in Loop::rewrite
2016-06-14 08:32:02 +02:00
Seo Sanghyeon
921b563847 Fix width computation in Loop::rewrite 2016-06-12 20:37:15 +09:00
Marcus Klaas
88fdf9a6e3 Fix integer underflow in extra_offset 2016-06-10 16:17:10 +02:00
Nick Cameron
3d4bc8c84a Merge pull request #1033 from marcusklaas/assignment-break
Add test for general assignment breaks
2016-06-05 18:06:08 +01:00
Marcus Klaas
05188deadc Add test for general assignment breaks 2016-06-04 11:00:01 +02:00
Marcus Klaas
b3488c6186 Fix constraints on pattern formatting of else arms 2016-06-03 23:18:19 +02:00
Nick Cameron
0087306761 Merge pull request #1016 from rust-lang-nursery/try-double-indent
Treat chains with just expr? specially.
2016-06-01 12:28:36 +01:00
lqd
b6263735b1 Add support for the default keyword (#1025)
Adds support for Defaultness on impl methods.
Fixes #945
2016-05-31 19:48:49 +02:00
Kamal Marhubi
9fa5a91fc5 visitor: Handle specified line ranges in visit_stmt
This commit adds a very rough implementation of handling the specified
line ranges in `config.file_lines_map` for statements. It reformats a
statement if its span is fully contained in the set of lines specified
for the file.

The implementation here is intended as a proof of concept, and
demonstration that the machinery added in the preceding commits is
functional. A final implementation would likely hook in via the
`Rewrite` trait.

Refs #434
2016-05-31 01:33:11 +02:00
Marcus Klaas
98c0570a28 Format non-statement if-else expressions on a single line 2016-05-29 17:58:38 +02:00
Nick Cameron
bbb6038b92 Treat chains with just expr? specially.
Fixes #1004
2016-05-29 09:32:48 +01:00
Kamal Marhubi
66cac1f3e9 Handle pub(restricted) (#1013)
* Handle pub(restricted)

This commit properly handles pub(restricted) as introduced in RFC 1422
[0]. The syntax support was added in #971, but they were not correctly
formatted.

[0] https://github.com/rust-lang/rfcs/blob/master/text/1422-pub-restricted.md

Fixes #970

* Drop #[inline] attribute on format_visibility

* Make newly non-failing functions return String

The change to `format_visibiilty` means that `format_header` and
`format_unit_struct` can no longer fail. Their return type is updated to
reflect that.
2016-05-28 00:58:25 +02:00
Nick Cameron
6e01fac285 Merge pull request #1008 from rust-lang-nursery/hrtb
Don't ignore universal quantification in function types
2016-05-28 10:08:00 +12:00
Nick Cameron
0fae34dfa1 Don't ignore universal quantification in function types
Fixes #1006
2016-05-27 15:09:04 -07:00
Nick Cameron
d633e831ba Merge pull request #1009 from rust-lang-nursery/fn-args-1
Fix off by 2 error in function sigs
2016-05-28 10:04:04 +12:00
Nick Cameron
882ef8cc82 Fix off by 2 error in function sigs
Fixes #1000

This is a little conservative in some cases, but better than being wrong in others.
2016-05-27 15:05:15 -07:00
Nick Cameron
d6bcfceb7e Don't put a newline before ? when it is the second sub-expression in a chain (#1012)
Fixes #1003
2016-05-27 10:33:19 +02:00
Nick Cameron
775de8a62b Optionally put short struct variants on one line (#997)
Closes #418
2016-05-18 22:38:49 +02:00
Nick Cameron
9589cac62d Format inline attributes on out-of-line modules (#996)
Fixes #838
2016-05-18 22:36:59 +02:00
Srinivas Reddy Thatiparthy
952a6beb51 change normalise spelling to American version - normalize as American english is more common across programming community 2016-05-15 22:24:46 +05:30
Marcus Klaas
eae2921e14 Bootstrap it. Hard. 2016-05-12 21:50:43 +02:00
Marcus Klaas
cd158cecc8 Add try macro to try shorthand conversion tests 2016-05-12 21:15:06 +02:00
Marcus Klaas
ee7b5805fc Format try shorthand 2016-05-09 20:07:59 +02:00
Aaron Gallagher
96d59366fc Don't misplace the :: on associated items.
The rewritten location of the :: on global paths for qpaths was wrong.
2016-05-02 17:11:22 -07:00
Nick Cameron
c696dcf8da Handle attributes on modules (#968)
* Handle attributes (including doc comments) on inline modules

Closes #22
Closes #684

* Tweak the rules for changing indentation in comments (to do it less often).
2016-05-02 10:54:25 +02:00
Nick Cameron
de2b8d98ea Merge pull request #960 from rust-lang-nursery/big-closures
Block indent large closures and field/method chains
2016-04-28 09:49:08 +12:00
Nick Cameron
fcd2021583 Add visual indent tests for chains 2016-04-28 08:08:54 +12:00
Nick Cameron
9188ec0f7f Bail out on recovered errors. (#965)
Closes #915
Closes #930
Closes #931
2016-04-27 21:08:44 +02:00
Nick Cameron
a9c3108c9c Change defaults and update tests and source
New defaults are `Tabbed` for `chain_indent` and `chain_base_indent`, and `5` for `closure_block_indent_threshold`.
2016-04-22 19:18:48 +12:00
Nick Cameron
9761cf71d8 Tests 2016-04-22 18:53:39 +12:00
mrBliss
b0755581ca Format visibility of associated consts (#953)
Fixes #951.
2016-04-19 20:19:14 +02:00
Marcus Klaas
f364a7ec43 Add option to force explicit extern ABI's 2016-04-18 18:39:40 +02:00
Thia Wyrod
d773cc5327
Added loop/match brace style control option
This adds Allman style loop/match braces as an alternative to the current
default style.
2016-04-17 14:52:04 -06:00
Thia Wyrod
5bd6036218
Added option to configure if/else brace style 2016-04-17 14:48:51 -06:00
Marcus Klaas
63f0fc9641 Fix off-by-one error in pattern formatting 2016-04-16 22:42:52 +02:00
Nick Cameron
41e037da7e Merge pull request #941 from marcusklaas/type-ascription
Format type ascription
2016-04-16 16:42:56 +12:00
Marcus Klaas
d98e22c971 Check length of break and continue expressions 2016-04-15 18:11:29 +02:00
Marcus Klaas
45a83d18cc Format type ascription 2016-04-15 17:56:43 +02:00
Nick Cameron
7a758ea20a Fix closures again (#937)
* Fix closures again

Closes #934

Oh god, the rules for parsing closures are even more messed up than I thought - whether or not there is an inner block or depends not only on if there are braces, but also if there is a return type for the closure (!) and if there are statements in the block.

* Fix overflow
2016-04-15 10:52:08 +02:00
Nick Cameron
7bda8659ec Merge pull request #935 from marcusklaas/issue-770
Add regression test for issue 770
2016-04-15 08:13:26 +12:00
Marcus Klaas de Vries
320df84e96 Fix brace indentation for impl items (#927) 2016-04-14 20:42:38 +02:00
Marcus Klaas
ba9d64aba5 Add regression test for issue 770 2016-04-14 20:41:23 +02:00
Nick Cameron
c7780fdfd8 Be careful about where we change braces in closures
And some general refactoring of closure code.

Fixes #863
2016-04-14 09:05:42 +12:00
Nick Cameron
eadc878de0 Handle variadic function types
Closes #842
2016-04-12 10:47:35 +12:00
Nick Cameron
2f5f0a454a Merge pull request #912 from rust-lang-nursery/pat-simple-mixed
Change the logic around breaking multiple patterns in match arms
2016-04-12 10:47:08 +12:00
Nick Cameron
ce97bc08be Merge pull request #896 from erikjohnston/fn_arg_one_line
Add fn_arg_one_line option
2016-04-12 10:44:01 +12:00
Nick Cameron
5dc3283e49 Reviewer comments - mostly fix rewrite_guard 2016-04-12 10:30:57 +12:00
Nick Cameron
afc8be1d79 Change the logic around breaking multiple patterns in match arms
Refactor to use the list code, don't preserve original stacking-ness, base vertical vs mixed formatting on complexity of the patterns.

Closes #386
2016-04-12 09:23:37 +12:00
Nick Cameron
492b26cf04 Empty structs and struct lits (#920)
* Handle empty struct lits

Closes #835

* Don't crash on empty struct defs.

Not a great fix, but better than crashing.
2016-04-11 21:05:54 +02:00
Nick Cameron
7ac354fd09 Don't be so aggressie about line-breaking strings (#911)
We will no longer break in the middle of words, only at whitespace or punctuation.

This means we sometimes over-run, but that seems better than some of the bad splits we see.

Closes #369
2016-04-11 20:45:47 +02:00
Erik Johnston
4c9dd747bf Fix long generic indent 2016-04-07 20:29:05 +01:00
Erik Johnston
4edc6f1a4e Add variant to fn_args_layout 2016-04-07 20:01:16 +01:00
Erik Johnston
57847e451a Add fn_arg_one_line option
If set, arguments will be kept on one line if they fit. Currently only
applies when `fn_args_layout` is set to `Block`.

This commit also fixes a bug where newlines were inserted inbetween
argument brackets when there were no arguments and `fn_args_layout` was
set to `Block`.
2016-04-02 00:25:35 +01:00
Erik Johnston
8219d15291 Fix incorrect indent with fn_args_layout: Block
The closing parenthesis for the arg list was written on a new line
without first applying the appropriate indent.
2016-04-01 23:01:49 +01:00
Nick Cameron
5b11d2e80f Merge pull request #892 from marcusklaas/closed-ranges
Format closed ranges
2016-03-31 13:47:09 +13:00
Marcus Klaas de Vries
50820c6a43 Merge pull request #883 from marcusklaas/macro-with-name
Properly format macro's with an extra ident
2016-03-30 02:03:28 +02:00
Marcus Klaas
9eee93306a Format closed ranges 2016-03-29 23:58:45 +02:00
Marcus Klaas
9e5c0390a0 Properly format macro's with an extra ident 2016-03-29 23:16:40 +02:00
Nick Cameron
cfc9f70116 Merge pull request #885 from marcusklaas/empty-trait-type-params
Remove trailing whitespace for fn types /w non-unit return
2016-03-29 08:17:52 +13:00
Nick Cameron
7d66861b82 Merge pull request #882 from marcusklaas/empty-makro-issues
Fix issues with empty macros with curly braces
2016-03-29 08:14:27 +13:00
Marcus Klaas
0142191e51 Remove trailing whitespace for fn types /w non-unit return 2016-03-27 20:40:23 +02:00
Marcus Klaas
0e0cf976c9 Fix issues with empty macros with curly braces 2016-03-27 13:44:40 +02:00
Marcus Klaas
03bf1ceeb9 Fix tuple destructuring in impl fns 2016-03-27 13:07:28 +02:00
Marcus Klaas de Vries
8fd95df54a Merge pull request #868 from rust-lang-nursery/tuple-wide
Don't apply the function args heuristic to tuple lits.
2016-03-24 14:57:24 +01:00
Marcus Klaas de Vries
ca757183fe Merge pull request #864 from Venti-/fn-density
Add option for vertical function argument list
2016-03-22 10:14:04 +01:00
Marcus Klaas de Vries
6f2bb908bb Merge pull request #866 from rust-lang-nursery/empty-extern
Keep empty extern blocks on one line
2016-03-16 18:06:25 +01:00
Connor Brewster
0a665aaceb Fixed nitpicks
Removed unneeded comment
Commented line wrapping conditions
Removed prefix param on `rewrite_associated_type`
Merged `rewrite_associated_static` into `rewrite_static`
Added extra tests
2016-03-15 14:08:12 -06:00
Connor Brewster
2793b4090c Added tests 2016-03-14 20:05:20 -06:00
Nick Cameron
9d8ce54428 Don't apply the function args heuristic to tuple lits.
Closes #450
Closes #510
2016-03-14 20:51:06 +13:00
Nick Cameron
96a2f25788 Keep empty extern blocks on one line
Closes #462
2016-03-14 18:55:55 +13:00
Ari Koivula
8d299210a6 Add independent test for Vertical rustfmt-fn_args_density 2016-03-14 04:03:33 +02:00
Ari Koivula
f4171e97eb Add test for vertical fn_args_density 2016-03-14 02:02:37 +02:00
Connor Brewster
3163071c75 Updated to latest rustfmt 2016-03-12 11:09:27 -07:00
Connor Brewster
35dfcc0078 Adding trait formatting
trait header formatting finished
generic formatting finished
added basic trait bounds formatting
2016-03-11 14:18:30 -07:00
Amanieu d'Antras
ef03dcaa7f Add a test for #850 2016-03-09 02:44:01 -08:00
Vincent Esche
a0567d4063 Fix for issue #811 (falsely inserted "::" in paths with parameterized trait cast). 2016-03-01 16:39:43 +01:00
Nick Cameron
d86cfb357a Format all patterns (well, except macros)
Fixes #18
Fixes #672
2016-02-12 14:59:13 +13:00
Marcus Klaas de Vries
9c969ca6fb Merge pull request #786 from rust-lang-nursery/str-leave
Don't reformat strings if we don't have to.
2016-02-03 06:11:01 +01:00
Kamal Marhubi
2b991bc260 tests: Use Result::expect() throughout
`Result::expect()` was added in Rust 1.4. Using it tidies up the code,
and also helps by printing error details, eg, printing syntax error
details if a regex fails to compile. It adds a colon followed by the
`Debug` output from any error, making the periods in messages
unnecessary.
2016-01-31 13:10:09 -05:00
Nick Cameron
a0e85f9a5f Put empty modules on one line
Fixes #463
2016-01-28 19:53:41 +13:00
Nick Cameron
02302d2800 Don't reformat strings if we don't have to.
Specifically if no line exceeds the allowed width and we aren't moving the string to a new offset
2016-01-28 19:14:08 +13:00