Allow `!` as the return type of proc/closure literals

Fixes #13490.
Change rustc to say `array` instead of `vector`
core: Make TwoWaySearcher reset its prefix memory when shifting by byteset

Closes #16878.
Add many comments to TwoWaySearcher.
Add some tests for closures that return `!`
Add unnecessary_import_braces lint.

The lint checks any unnecessary braces around one imported item like
`use std::num::{abs};`.

Signed-off-by: OGINO Masanori <masanori.ogino@gmail.com>
Improve memory usage of libsyntax
Replaces some usage of `.to_string()` with `.into_string()`

Signed-off-by: Peter Atashian <retep998@gmail.com>
doc: that felt like it needed a stronger break than what comma provides

Remove trailing whitespace while at it
These two lines are actually three.
Fix issue #17216

The cleanup scope of for loop bindings should translated when
popped to ensure resources are not leaked.
Properly implement Show for EnumSet
`rustc main.rs` generates main binary file
Add regression test for issue #17216
Display the doc-block toggle on everything again.

This needs a clone otherwise each successive insertion detaches `toggle`
from the previous position.

Fixes #17125.
inlines contains in bitflags!

Closes #17210
impl ExactSize for vec::MoveItems
Separate static item recursion check into its own pass

This new pass is run before type checking so that recursive items
are detected beforehand.  This prevents going into an infinite
recursion during type checking when a recursive item is used in
an array type.

As a bonus, use `span_err` instead of `span_fatal` so multiple
errors can be reported.

Closes issue #17252
Add regression test for issue #17252
json: Properly handle trailing comma error in object decoding.

Closes #16945
Don't use 'here'

Fixes #17225