2140 Commits

Author SHA1 Message Date
Seiichi Uchida
b077297179 Modify the placement of the opening brace of trait
Put the opening brace on the next line if

1. putting it one the current line exceeds max width.
2. trait bounds uses multiple lines.
2018-03-12 07:54:12 +09:00
Seiichi Uchida
f56039c7e5 Use rewrite_assign_rhs for rewriting bounds 2018-03-12 07:54:12 +09:00
Seiichi Uchida
8f7a90fbef Add rewrite_assign_rhs_with
It is like `rewrite_assign_rhs` but lets us force to put the rhs on the next
line if it uses multiple lines.

This lets us avoid duplicating logic for choosing whether to put stuff on the
same line or the next line.
2018-03-12 07:48:31 +09:00
Nick Cameron
f5ebcd922e
Merge pull request #2513 from rtsuk/master
Restore cargo fmt behavior in workspaces
2018-03-12 11:26:12 +13:00
Nick Cameron
bcaeab7a5e
Merge pull request #2527 from topecongiro/issue-2526
Check whether '\\'' is char literal or lifetime
2018-03-12 11:25:40 +13:00
Nick Cameron
af5d3cc87b
Merge pull request #2524 from topecongiro/issue-2523
Do not unindent code block in comments with unformattable macro
2018-03-12 11:21:09 +13:00
Nick Cameron
124f03b1fc
Merge pull request #2516 from topecongiro/issue-2510
Make rewrite_call_inner more generic
2018-03-12 11:18:14 +13:00
David Lukes
a41947cd7d Enable doctests
Doctests were disabled globally because up until #2456, they were just
formatting examples which were not supposed to compile. Now that there
is one runnable doctest, I disabled the other ones individually (by
adding the ignore directive).

I also added some empty lines around the code blocks to avoid the
following warning and instead ignore the code blocks cleanly:

WARNING: ... Code block is not currently run as a test, but will in
future versions of rustdoc. Please ensure this code block is a runnable
test, or use the `ignore` directive.

See rust-lang/rust#28712 for further details.
2018-03-10 09:57:01 +01:00
Seiichi Uchida
86a427fe32 Check whether '\\'' is char literal or lifetime 2018-03-10 01:19:38 +09:00
Rob Tsuk
ba10a4c48d Canonicalise the paths 2018-03-09 07:24:40 -07:00
Rob Tsuk
53dcb0d09d Restore cargo fmt behavior in workspaces
Previously, cargo fmt  invoked without parameters would
only format the crate in the current directory, even if
the crate was part of a workspace. This patch restores
that behavior.
2018-03-09 07:24:40 -07:00
topecongiro
2188b464b0 Format macro call with item arguments 2018-03-09 17:17:55 +09:00
topecongiro
eaab592cb8 Avoid unindenting code block in comment with unformattable macro
`format_code_block` formats the given `code_snippet` by enclosing it inside
`fn main` block. Previously we did not add indentation to the `code_snippet`
before formatting it. This works fine as long as we can format the given
`code_snippet`, but when the code block has unformattable macro, they gets
unindented. This commit fixes it by adding proper indentation before formatting
the `code_snippet`.

For example, when formatting the following code block,

```rust
some_macro!(pub fn foo() {
    println!("Don't unindent me!");
});
```

previously we enclosed it like this:

```rust
fn main() {
some_macro!(pub fn foo() {
    println!("Don't unindent me!");
});
}
```

with this PR, we will enclose it like this:

```rust
fn main() {
    some_macro!(pub fn foo() {
        println!("Don't unindent me!");
    });
}
```

Closes #2523.
2018-03-09 17:10:20 +09:00
Seiichi Uchida
6ba7c34433 Use Option<SeparatorTactic> over bool to control trailing comma 2018-03-09 14:07:43 +09:00
Seiichi Uchida
466caa77bb Make INDENT_BUFFER longer
Avoid panicking when indent whose width is 80 called `to_string()`.
2018-03-09 14:07:43 +09:00
Seiichi Uchida
2a99d9704f Use overflow::rewrite_with_angle_brackets to rewrite generics 2018-03-09 14:07:43 +09:00
Seiichi Uchida
ae629abc41 Add overflow module
This commit adds `overflow` module. This module provides two APIs.
`rewrite_with_parens` is basically the same as `rewrite_call_inner`.
`rewrite_with_angle_brackets` is used for rewriting generics and types.
2018-03-09 14:07:43 +09:00
Seiichi Uchida
8943c376bc Use RefCell for RewriteContext fields 2018-03-09 14:07:05 +09:00
Seiichi Uchida
84ad70c151 Add ignore config option
For example, with the following config file, rustfmt will ignore `src/types.rs`,
`src/foo/bar.rs` and every file under `examples/` directory.

```toml
[ignore]
files = [
    "src/types.rs",
    "src/foo/bar.rs",
]
directories = [
    "examples",
]
```
2018-03-09 13:37:52 +09:00
Nick Cameron
dc2f1429e7
Merge pull request #2521 from topecongiro/issue-2520
Fix bugs when rewriting doc comments with code block
2018-03-09 15:18:53 +13:00
Nick Cameron
58fb47a8ca
Merge pull request #2519 from topecongiro/nested-parens
Remove nested parens
2018-03-09 15:16:30 +13:00
Nick Cameron
5f99ebe628
Merge pull request #2518 from topecongiro/issue-2491
Disallow combining parens and brackets in impl
2018-03-09 15:15:21 +13:00
Nick Cameron
1780d68761 Catch panics in the parser before they crash rustfmt
Closes #753
2018-03-09 14:59:52 +13:00
Seiichi Uchida
484469899b Keep code block without correct backticks enclosing 2018-03-09 09:46:43 +09:00
Seiichi Uchida
67fa394e4e Restrict the width of doc comments with comment_width
See the diff in tests/target/enum.rs for an example.
2018-03-09 09:34:13 +09:00
Seiichi Uchida
9344d2ca83 Fix a bug in attr::take_while_with_pred
Closes #2520.
2018-03-09 09:29:08 +09:00
Seiichi Uchida
d45aa55bd6 Remove nested parens
And make sure that we do not remove comments within parens.
2018-03-08 20:25:18 +09:00
Seiichi Uchida
71ca21fc23 Disallow combining parens and brackets in impl 2018-03-08 19:08:38 +09:00
Seiichi Uchida
a6b574bfa7 Cargo update and cargo clippy 2018-03-08 18:10:23 +09:00
moe
a2f861730e fix adds a trailing comma to struct-like macro (#2490)
* fix adds a trailing comma to struct-like macro
2018-03-08 18:05:39 +09:00
Seiichi Uchida
822dd41ad9 Put lhs and rhs of binop on the same line if lhs is short 2018-03-08 17:21:30 +09:00
Nick Cameron
06d509c25c
Merge pull request #2512 from topecongiro/rustc-ap-syntax
Update rustc-ap-syntax
2018-03-08 17:13:05 +13:00
Seiichi Uchida
9889678f56 Replace Option<Vec<&'a ast::pat>> with Vec<&'a ast::Pat> 2018-03-08 12:56:28 +09:00
Nick Cameron
f0d179dd12
Merge pull request #2456 from dlukes/feat/check-license
Attempt at checking for license (#209)
2018-03-08 15:36:27 +13:00
Nick Cameron
e01753909f
Merge pull request #2508 from topecongiro/issue-2494
Only format code blocks in comments with rust syntax notation
2018-03-08 15:29:37 +13:00
Shotaro Yamada
b3fa50db73 Use nested_shape for indenting types of lazy_static 2018-03-07 10:51:28 +09:00
Seiichi Uchida
3f0b630845 Support parentheses in patterns 2018-03-06 20:07:09 +09:00
Seiichi Uchida
520f0d65ef Format multiple patterns in 'if let' and `while let'
Closes #2511.
2018-03-06 20:02:04 +09:00
Seiichi Uchida
d7495324bc Work around removal of beginning_vert field from ast::Arm
`ast::Arm` used to have `beginning_vert` field whose type is `Option<Span>`
and holds a span of the beginning `|` if available. This field is now removed.
This commit works around that.

Since we only need a `BytePos` of the `|`, the type of `beginning_vert` in
`ArmWrapper` is `Option<BytePos>`.
2018-03-06 19:56:49 +09:00
Seiichi Uchida
5416c4df76 Modify code around ast::Visibility
`ast::Visibility` is changed to `codemap::Spanned` whose node is
`ast::VisibilityKind`. This commit fixes it.

Closes #2398.
2018-03-06 19:47:28 +09:00
Seiichi Uchida
d316eba54d Add opt_span_before() to SpanUtils trait
With some refactorings to avoid duplicated code.
2018-03-06 19:46:03 +09:00
kngwyu
8ea79aa025 add offset_left(4) for 'dyn ' 2018-03-05 22:45:40 +09:00
David Lukes
01f652799d Make license doctest pass again 2018-03-05 13:39:30 +01:00
David Lukes
085cc90599 Load and compile template in proper function
Get rid of the unncessary closure.
2018-03-05 13:25:47 +01:00
David Lukes
1db84a3ec5 Wrap license-related errors in enum 2018-03-05 13:20:51 +01:00
David Lukes
533d185f49 Shorten var names to comply with line len reqs 2018-03-05 13:19:46 +01:00
David Lukes
b33451b4ed Fix indentation in create_config macro definition 2018-03-05 13:18:27 +01:00
David Lukes
bbd6d9cd55 Refactor parsing code into struct
This also splits the giant state machine match expression into separate
methods.
2018-03-05 13:18:27 +01:00
David Lukes
310c1146f2 Move license template parsing into submodule 2018-03-05 13:13:55 +01:00
David Lukes
e48d7f3ebb Account for possibly empty license_template_path
Don't attempt to load license_template if the path wasn't specified.
2018-03-05 13:13:55 +01:00