Merge pull request #5980 from ytmimi/subtree_push_2023_12_12

Subtree push 2023-12-12
This commit is contained in:
Caleb Cartwright 2023-12-13 14:18:07 -06:00 committed by GitHub
commit 20196767d4
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
29 changed files with 75 additions and 61 deletions

4
Cargo.lock generated
View File

@ -343,9 +343,9 @@ dependencies = [
[[package]] [[package]]
name = "itertools" name = "itertools"
version = "0.10.3" version = "0.11.0"
source = "registry+https://github.com/rust-lang/crates.io-index" source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "a9a9d19fa1e79b6215ff29b9d6880b706147f16e9b1dbb1e4e5947b5b02bc5e3" checksum = "b1c173a5686ce8bfa551b3563d0c2170bf24ca44da99c7ca4bfdab5418c3fe57"
dependencies = [ dependencies = [
"either", "either",
] ]

View File

@ -43,7 +43,7 @@ diff = "0.1"
dirs = "4.0" dirs = "4.0"
getopts = "0.2" getopts = "0.2"
ignore = "0.4" ignore = "0.4"
itertools = "0.10" itertools = "0.11"
lazy_static = "1.4" lazy_static = "1.4"
regex = "1.7" regex = "1.7"
serde = { version = "1.0.160", features = ["derive"] } serde = { version = "1.0.160", features = ["derive"] }

View File

@ -1,3 +1,3 @@
[toolchain] [toolchain]
channel = "nightly-2023-10-22" channel = "nightly-2023-12-12"
components = ["llvm-tools", "rustc-dev"] components = ["llvm-tools", "rustc-dev"]

View File

@ -29,7 +29,7 @@ pub(crate) fn rewrite_closure(
binder: &ast::ClosureBinder, binder: &ast::ClosureBinder,
constness: ast::Const, constness: ast::Const,
capture: ast::CaptureBy, capture: ast::CaptureBy,
is_async: &ast::Async, coroutine_kind: &Option<ast::CoroutineKind>,
movability: ast::Movability, movability: ast::Movability,
fn_decl: &ast::FnDecl, fn_decl: &ast::FnDecl,
body: &ast::Expr, body: &ast::Expr,
@ -40,7 +40,16 @@ pub(crate) fn rewrite_closure(
debug!("rewrite_closure {:?}", body); debug!("rewrite_closure {:?}", body);
let (prefix, extra_offset) = rewrite_closure_fn_decl( let (prefix, extra_offset) = rewrite_closure_fn_decl(
binder, constness, capture, is_async, movability, fn_decl, body, span, context, shape, binder,
constness,
capture,
coroutine_kind,
movability,
fn_decl,
body,
span,
context,
shape,
)?; )?;
// 1 = space between `|...|` and body. // 1 = space between `|...|` and body.
let body_shape = shape.offset_left(extra_offset)?; let body_shape = shape.offset_left(extra_offset)?;
@ -188,7 +197,7 @@ fn rewrite_closure_expr(
fn allow_multi_line(expr: &ast::Expr) -> bool { fn allow_multi_line(expr: &ast::Expr) -> bool {
match expr.kind { match expr.kind {
ast::ExprKind::Match(..) ast::ExprKind::Match(..)
| ast::ExprKind::Async(..) | ast::ExprKind::Gen(..)
| ast::ExprKind::Block(..) | ast::ExprKind::Block(..)
| ast::ExprKind::TryBlock(..) | ast::ExprKind::TryBlock(..)
| ast::ExprKind::Loop(..) | ast::ExprKind::Loop(..)
@ -233,7 +242,7 @@ fn rewrite_closure_fn_decl(
binder: &ast::ClosureBinder, binder: &ast::ClosureBinder,
constness: ast::Const, constness: ast::Const,
capture: ast::CaptureBy, capture: ast::CaptureBy,
asyncness: &ast::Async, coroutine_kind: &Option<ast::CoroutineKind>,
movability: ast::Movability, movability: ast::Movability,
fn_decl: &ast::FnDecl, fn_decl: &ast::FnDecl,
body: &ast::Expr, body: &ast::Expr,
@ -263,8 +272,13 @@ fn rewrite_closure_fn_decl(
} else { } else {
"" ""
}; };
let is_async = if asyncness.is_async() { "async " } else { "" }; let coro = match coroutine_kind {
let mover = if capture == ast::CaptureBy::Value { Some(ast::CoroutineKind::Async { .. }) => "async ",
Some(ast::CoroutineKind::Gen { .. }) => "gen ",
Some(ast::CoroutineKind::AsyncGen { .. }) => "async gen ",
None => "",
};
let mover = if matches!(capture, ast::CaptureBy::Value { .. }) {
"move " "move "
} else { } else {
"" ""
@ -272,7 +286,7 @@ fn rewrite_closure_fn_decl(
// 4 = "|| {".len(), which is overconservative when the closure consists of // 4 = "|| {".len(), which is overconservative when the closure consists of
// a single expression. // a single expression.
let nested_shape = shape let nested_shape = shape
.shrink_left(binder.len() + const_.len() + immovable.len() + is_async.len() + mover.len())? .shrink_left(binder.len() + const_.len() + immovable.len() + coro.len() + mover.len())?
.sub_width(4)?; .sub_width(4)?;
// 1 = | // 1 = |
@ -310,7 +324,7 @@ fn rewrite_closure_fn_decl(
.tactic(tactic) .tactic(tactic)
.preserve_newline(true); .preserve_newline(true);
let list_str = write_list(&item_vec, &fmt)?; let list_str = write_list(&item_vec, &fmt)?;
let mut prefix = format!("{binder}{const_}{immovable}{is_async}{mover}|{list_str}|"); let mut prefix = format!("{binder}{const_}{immovable}{coro}{mover}|{list_str}|");
if !ret_str.is_empty() { if !ret_str.is_empty() {
if prefix.contains('\n') { if prefix.contains('\n') {
@ -339,7 +353,7 @@ pub(crate) fn rewrite_last_closure(
ref binder, ref binder,
constness, constness,
capture_clause, capture_clause,
ref asyncness, ref coroutine_kind,
movability, movability,
ref fn_decl, ref fn_decl,
ref body, ref body,
@ -360,7 +374,7 @@ pub(crate) fn rewrite_last_closure(
binder, binder,
constness, constness,
capture_clause, capture_clause,
asyncness, coroutine_kind,
movability, movability,
fn_decl, fn_decl,
body, body,

View File

@ -1,6 +1,6 @@
// Formatting and tools for comments. // Formatting and tools for comments.
use std::{self, borrow::Cow, iter}; use std::{borrow::Cow, iter};
use itertools::{multipeek, MultiPeek}; use itertools::{multipeek, MultiPeek};
use lazy_static::lazy_static; use lazy_static::lazy_static;
@ -1847,7 +1847,6 @@ fn remove_comment_header(comment: &str) -> &str {
#[cfg(test)] #[cfg(test)]
mod test { mod test {
use super::*; use super::*;
use crate::shape::{Indent, Shape};
#[test] #[test]
fn char_classes() { fn char_classes() {

View File

@ -6,7 +6,7 @@ use std::path::PathBuf;
use std::{cmp, fmt, iter, str}; use std::{cmp, fmt, iter, str};
use rustc_data_structures::sync::Lrc; use rustc_data_structures::sync::Lrc;
use rustc_span::{self, SourceFile}; use rustc_span::SourceFile;
use serde::{ser, Deserialize, Deserializer, Serialize, Serializer}; use serde::{ser, Deserialize, Deserializer, Serialize, Serializer};
use serde_json as json; use serde_json as json;
use thiserror::Error; use thiserror::Error;

View File

@ -1,5 +1,4 @@
use std::cell::Cell; use std::cell::Cell;
use std::default::Default;
use std::fs::File; use std::fs::File;
use std::io::{Error, ErrorKind, Read}; use std::io::{Error, ErrorKind, Read};
use std::path::{Path, PathBuf}; use std::path::{Path, PathBuf};
@ -1018,7 +1017,6 @@ make_backup = false
#[cfg(test)] #[cfg(test)]
mod partially_unstable_option { mod partially_unstable_option {
use super::mock::{Config, PartiallyUnstableOption}; use super::mock::{Config, PartiallyUnstableOption};
use super::*;
/// From the command line, we can override with a stable variant. /// From the command line, we can override with a stable variant.
#[test] #[test]

View File

@ -1,3 +1,5 @@
#![allow(unused_imports)]
use std::collections::{hash_set, HashSet}; use std::collections::{hash_set, HashSet};
use std::fmt; use std::fmt;
use std::path::{Path, PathBuf}; use std::path::{Path, PathBuf};

View File

@ -1,7 +1,6 @@
use self::xml::XmlEscaped; use self::xml::XmlEscaped;
use super::*; use super::*;
use crate::rustfmt_diff::{make_diff, DiffLine, Mismatch}; use crate::rustfmt_diff::{make_diff, DiffLine, Mismatch};
use std::io::{self, Write};
mod xml; mod xml;

View File

@ -51,8 +51,6 @@ impl Emitter for DiffEmitter {
#[cfg(test)] #[cfg(test)]
mod tests { mod tests {
use super::*; use super::*;
use crate::config::Config;
use crate::FileName;
use std::path::PathBuf; use std::path::PathBuf;
#[test] #[test]

View File

@ -2,7 +2,6 @@ use super::*;
use crate::rustfmt_diff::{make_diff, DiffLine, Mismatch}; use crate::rustfmt_diff::{make_diff, DiffLine, Mismatch};
use serde::Serialize; use serde::Serialize;
use serde_json::to_string as to_json_string; use serde_json::to_string as to_json_string;
use std::io::{self, Write};
#[derive(Debug, Default)] #[derive(Debug, Default)]
pub(crate) struct JsonEmitter { pub(crate) struct JsonEmitter {
@ -106,7 +105,6 @@ impl JsonEmitter {
#[cfg(test)] #[cfg(test)]
mod tests { mod tests {
use super::*; use super::*;
use crate::FileName;
use std::path::PathBuf; use std::path::PathBuf;
#[test] #[test]

View File

@ -1,6 +1,5 @@
use super::*; use super::*;
use crate::rustfmt_diff::{make_diff, ModifiedLines}; use crate::rustfmt_diff::{make_diff, ModifiedLines};
use std::io::Write;
#[derive(Debug, Default)] #[derive(Debug, Default)]
pub(crate) struct ModifiedLinesEmitter; pub(crate) struct ModifiedLinesEmitter;

View File

@ -1,6 +1,5 @@
use super::*; use super::*;
use crate::config::Verbosity; use crate::config::Verbosity;
use std::io::Write;
#[derive(Debug)] #[derive(Debug)]
pub(crate) struct StdoutEmitter { pub(crate) struct StdoutEmitter {

View File

@ -212,7 +212,7 @@ pub(crate) fn format_expr(
&cl.binder, &cl.binder,
cl.constness, cl.constness,
cl.capture_clause, cl.capture_clause,
&cl.asyncness, &cl.coroutine_kind,
cl.movability, cl.movability,
&cl.fn_decl, &cl.fn_decl,
&cl.body, &cl.body,
@ -367,15 +367,15 @@ pub(crate) fn format_expr(
)) ))
} }
} }
ast::ExprKind::Async(capture_by, ref block) => { ast::ExprKind::Gen(capture_by, ref block, ref kind) => {
let mover = if capture_by == ast::CaptureBy::Value { let mover = if matches!(capture_by, ast::CaptureBy::Value { .. }) {
"move " "move "
} else { } else {
"" ""
}; };
if let rw @ Some(_) = rewrite_single_line_block( if let rw @ Some(_) = rewrite_single_line_block(
context, context,
format!("async {mover}").as_str(), format!("{kind} {mover}").as_str(),
block, block,
Some(&expr.attrs), Some(&expr.attrs),
None, None,
@ -386,7 +386,7 @@ pub(crate) fn format_expr(
// 6 = `async ` // 6 = `async `
let budget = shape.width.saturating_sub(6); let budget = shape.width.saturating_sub(6);
Some(format!( Some(format!(
"async {mover}{}", "{kind} {mover}{}",
rewrite_block( rewrite_block(
block, block,
Some(&expr.attrs), Some(&expr.attrs),
@ -1371,7 +1371,7 @@ pub(crate) fn can_be_overflowed_expr(
} }
// Handle always block-like expressions // Handle always block-like expressions
ast::ExprKind::Async(..) | ast::ExprKind::Block(..) | ast::ExprKind::Closure(..) => true, ast::ExprKind::Gen(..) | ast::ExprKind::Block(..) | ast::ExprKind::Closure(..) => true,
// Handle `[]` and `{}`-like expressions // Handle `[]` and `{}`-like expressions
ast::ExprKind::Array(..) | ast::ExprKind::Struct(..) => { ast::ExprKind::Array(..) | ast::ExprKind::Struct(..) => {
@ -1933,7 +1933,7 @@ fn rewrite_unary_op(
shape: Shape, shape: Shape,
) -> Option<String> { ) -> Option<String> {
// For some reason, an UnOp is not spanned like BinOp! // For some reason, an UnOp is not spanned like BinOp!
rewrite_unary_prefix(context, ast::UnOp::to_string(op), expr, shape) rewrite_unary_prefix(context, op.as_str(), expr, shape)
} }
pub(crate) enum RhsAssignKind<'ast> { pub(crate) enum RhsAssignKind<'ast> {

View File

@ -1,4 +1,4 @@
use ignore::{self, gitignore}; use ignore::gitignore;
use crate::config::{FileName, IgnoreList}; use crate::config::{FileName, IgnoreList};

View File

@ -1102,7 +1102,6 @@ enum SharedPrefix {
#[cfg(test)] #[cfg(test)]
mod test { mod test {
use super::*; use super::*;
use rustc_span::DUMMY_SP;
// Parse the path part of an import. This parser is not robust and is only // Parse the path part of an import. This parser is not robust and is only
// suitable for use in a test harness. // suitable for use in a test harness.

View File

@ -287,7 +287,7 @@ pub(crate) struct FnSig<'a> {
decl: &'a ast::FnDecl, decl: &'a ast::FnDecl,
generics: &'a ast::Generics, generics: &'a ast::Generics,
ext: ast::Extern, ext: ast::Extern,
is_async: Cow<'a, ast::Async>, coroutine_kind: Cow<'a, Option<ast::CoroutineKind>>,
constness: ast::Const, constness: ast::Const,
defaultness: ast::Defaultness, defaultness: ast::Defaultness,
unsafety: ast::Unsafe, unsafety: ast::Unsafe,
@ -302,7 +302,7 @@ impl<'a> FnSig<'a> {
) -> FnSig<'a> { ) -> FnSig<'a> {
FnSig { FnSig {
unsafety: method_sig.header.unsafety, unsafety: method_sig.header.unsafety,
is_async: Cow::Borrowed(&method_sig.header.asyncness), coroutine_kind: Cow::Borrowed(&method_sig.header.coroutine_kind),
constness: method_sig.header.constness, constness: method_sig.header.constness,
defaultness: ast::Defaultness::Final, defaultness: ast::Defaultness::Final,
ext: method_sig.header.ext, ext: method_sig.header.ext,
@ -328,7 +328,7 @@ impl<'a> FnSig<'a> {
generics, generics,
ext: fn_sig.header.ext, ext: fn_sig.header.ext,
constness: fn_sig.header.constness, constness: fn_sig.header.constness,
is_async: Cow::Borrowed(&fn_sig.header.asyncness), coroutine_kind: Cow::Borrowed(&fn_sig.header.coroutine_kind),
defaultness, defaultness,
unsafety: fn_sig.header.unsafety, unsafety: fn_sig.header.unsafety,
visibility: vis, visibility: vis,
@ -343,7 +343,8 @@ impl<'a> FnSig<'a> {
result.push_str(&*format_visibility(context, self.visibility)); result.push_str(&*format_visibility(context, self.visibility));
result.push_str(format_defaultness(self.defaultness)); result.push_str(format_defaultness(self.defaultness));
result.push_str(format_constness(self.constness)); result.push_str(format_constness(self.constness));
result.push_str(format_async(&self.is_async)); self.coroutine_kind
.map(|coroutine_kind| result.push_str(format_coro(&coroutine_kind)));
result.push_str(format_unsafety(self.unsafety)); result.push_str(format_unsafety(self.unsafety));
result.push_str(&format_extern( result.push_str(&format_extern(
self.ext, self.ext,

View File

@ -708,7 +708,7 @@ struct MacroArgParser {
fn last_tok(tt: &TokenTree) -> Token { fn last_tok(tt: &TokenTree) -> Token {
match *tt { match *tt {
TokenTree::Token(ref t, _) => t.clone(), TokenTree::Token(ref t, _) => t.clone(),
TokenTree::Delimited(delim_span, delim, _) => Token { TokenTree::Delimited(delim_span, _, delim, _) => Token {
kind: TokenKind::CloseDelim(delim), kind: TokenKind::CloseDelim(delim),
span: delim_span.close, span: delim_span.close,
}, },
@ -925,7 +925,7 @@ impl MacroArgParser {
self.add_meta_variable(&mut iter)?; self.add_meta_variable(&mut iter)?;
} }
TokenTree::Token(ref t, _) => self.update_buffer(t), TokenTree::Token(ref t, _) => self.update_buffer(t),
&TokenTree::Delimited(_delimited_span, delimited, ref tts) => { &TokenTree::Delimited(_dspan, _spacing, delimited, ref tts) => {
if !self.buf.is_empty() { if !self.buf.is_empty() {
if next_space(&self.last_tok.kind) == SpaceState::Always { if next_space(&self.last_tok.kind) == SpaceState::Always {
self.add_separator(); self.add_separator();
@ -1167,7 +1167,7 @@ impl<'a> MacroParser<'a> {
let tok = self.toks.next()?; let tok = self.toks.next()?;
let (lo, args_paren_kind) = match tok { let (lo, args_paren_kind) = match tok {
TokenTree::Token(..) => return None, TokenTree::Token(..) => return None,
&TokenTree::Delimited(delimited_span, d, _) => (delimited_span.open.lo(), d), &TokenTree::Delimited(delimited_span, _, d, _) => (delimited_span.open.lo(), d),
}; };
let args = TokenStream::new(vec![tok.clone()]); let args = TokenStream::new(vec![tok.clone()]);
match self.toks.next()? { match self.toks.next()? {

View File

@ -223,7 +223,7 @@ fn rewrite_match_arm(
) -> Option<String> { ) -> Option<String> {
let (missing_span, attrs_str) = if !arm.attrs.is_empty() { let (missing_span, attrs_str) = if !arm.attrs.is_empty() {
if contains_skip(&arm.attrs) { if contains_skip(&arm.attrs) {
let (_, body) = flatten_arm_body(context, &arm.body, None); let (_, body) = flatten_arm_body(context, arm.body.as_deref()?, None);
// `arm.span()` does not include trailing comma, add it manually. // `arm.span()` does not include trailing comma, add it manually.
return Some(format!( return Some(format!(
"{}{}", "{}{}",
@ -246,7 +246,7 @@ fn rewrite_match_arm(
}; };
// Patterns // Patterns
let pat_shape = match &arm.body.kind { let pat_shape = match &arm.body.as_ref()?.kind {
ast::ExprKind::Block(_, Some(label)) => { ast::ExprKind::Block(_, Some(label)) => {
// Some block with a label ` => 'label: {` // Some block with a label ` => 'label: {`
// 7 = ` => : {` // 7 = ` => : {`
@ -280,10 +280,10 @@ fn rewrite_match_arm(
false, false,
)?; )?;
let arrow_span = mk_sp(arm.pat.span.hi(), arm.body.span().lo()); let arrow_span = mk_sp(arm.pat.span.hi(), arm.body.as_ref()?.span().lo());
rewrite_match_body( rewrite_match_body(
context, context,
&arm.body, arm.body.as_ref()?,
&lhs_str, &lhs_str,
shape, shape,
guard_str.contains('\n'), guard_str.contains('\n'),

View File

@ -339,7 +339,7 @@ impl FlattenPair for ast::Expr {
if let Some(pop) = stack.pop() { if let Some(pop) = stack.pop() {
match pop.kind { match pop.kind {
ast::ExprKind::Binary(op, _, ref rhs) => { ast::ExprKind::Binary(op, _, ref rhs) => {
separators.push(op.node.to_string()); separators.push(op.node.as_str());
node = rhs; node = rhs;
} }
_ => unreachable!(), _ => unreachable!(),

View File

@ -40,7 +40,9 @@ pub(crate) fn is_short_pattern(pat: &ast::Pat, pat_str: &str) -> bool {
fn is_short_pattern_inner(pat: &ast::Pat) -> bool { fn is_short_pattern_inner(pat: &ast::Pat) -> bool {
match pat.kind { match pat.kind {
ast::PatKind::Rest | ast::PatKind::Wild | ast::PatKind::Lit(_) => true, ast::PatKind::Rest | ast::PatKind::Never | ast::PatKind::Wild | ast::PatKind::Lit(_) => {
true
}
ast::PatKind::Ident(_, _, ref pat) => pat.is_none(), ast::PatKind::Ident(_, _, ref pat) => pat.is_none(),
ast::PatKind::Struct(..) ast::PatKind::Struct(..)
| ast::PatKind::MacCall(..) | ast::PatKind::MacCall(..)
@ -193,6 +195,7 @@ impl Rewrite for Pat {
None None
} }
} }
PatKind::Never => None,
PatKind::Range(ref lhs, ref rhs, ref end_kind) => { PatKind::Range(ref lhs, ref rhs, ref end_kind) => {
let infix = match end_kind.node { let infix = match end_kind.node {
RangeEnd::Included(RangeSyntax::DotDotDot) => "...", RangeEnd::Included(RangeSyntax::DotDotDot) => "...",

View File

@ -6,7 +6,7 @@
// FIXME(#2455): Reorder trait items. // FIXME(#2455): Reorder trait items.
use std::cmp::{Ord, Ordering}; use std::cmp::Ordering;
use rustc_ast::{ast, attr}; use rustc_ast::{ast, attr};
use rustc_span::{symbol::sym, Span}; use rustc_span::{symbol::sym, Span};

View File

@ -97,7 +97,12 @@ impl Spanned for ast::Arm {
} else { } else {
self.attrs[0].span.lo() self.attrs[0].span.lo()
}; };
span_with_attrs_lo_hi!(self, lo, self.body.span.hi()) let hi = if let Some(body) = &self.body {
body.span.hi()
} else {
self.pat.span.hi()
};
span_with_attrs_lo_hi!(self, lo, hi)
} }
} }

View File

@ -1,4 +1,3 @@
use std::iter::ExactSizeIterator;
use std::ops::Deref; use std::ops::Deref;
use rustc_ast::ast::{self, FnRetTy, Mutability, Term}; use rustc_ast::ast::{self, FnRetTy, Mutability, Term};
@ -546,7 +545,7 @@ impl Rewrite for ast::GenericBound {
ast::TraitBoundModifier::Maybe => poly_trait_ref ast::TraitBoundModifier::Maybe => poly_trait_ref
.rewrite(context, shape.offset_left(1)?) .rewrite(context, shape.offset_left(1)?)
.map(|s| format!("?{}", s)), .map(|s| format!("?{}", s)),
ast::TraitBoundModifier::MaybeConst => poly_trait_ref ast::TraitBoundModifier::MaybeConst(_) => poly_trait_ref
.rewrite(context, shape.offset_left(7)?) .rewrite(context, shape.offset_left(7)?)
.map(|s| format!("~const {}", s)), .map(|s| format!("~const {}", s)),
ast::TraitBoundModifier::MaybeConstMaybe => poly_trait_ref ast::TraitBoundModifier::MaybeConstMaybe => poly_trait_ref

View File

@ -75,10 +75,11 @@ pub(crate) fn format_visibility(
} }
#[inline] #[inline]
pub(crate) fn format_async(is_async: &ast::Async) -> &'static str { pub(crate) fn format_coro(coroutine_kind: &ast::CoroutineKind) -> &'static str {
match is_async { match coroutine_kind {
ast::Async::Yes { .. } => "async ", ast::CoroutineKind::Async { .. } => "async ",
ast::Async::No => "", ast::CoroutineKind::Gen { .. } => "gen ",
ast::CoroutineKind::AsyncGen { .. } => "async gen ",
} }
} }
@ -473,7 +474,7 @@ pub(crate) fn is_block_expr(context: &RewriteContext<'_>, expr: &ast::Expr, repr
| ast::ExprKind::If(..) | ast::ExprKind::If(..)
| ast::ExprKind::Block(..) | ast::ExprKind::Block(..)
| ast::ExprKind::ConstBlock(..) | ast::ExprKind::ConstBlock(..)
| ast::ExprKind::Async(..) | ast::ExprKind::Gen(..)
| ast::ExprKind::Loop(..) | ast::ExprKind::Loop(..)
| ast::ExprKind::ForLoop(..) | ast::ExprKind::ForLoop(..)
| ast::ExprKind::TryBlock(..) | ast::ExprKind::TryBlock(..)

View File

@ -1,5 +1,5 @@
// rustfmt-edition: 2015 // rustfmt-edition: 2015
#![feature(rust_2018_preview, uniform_paths)] #![feature(uniform_paths)]
use futures::prelude::*; use futures::prelude::*;
use http_03::cli::Cli; use http_03::cli::Cli;
use hyper::{service::service_fn_ok, Body, Response, Server}; use hyper::{service::service_fn_ok, Body, Response, Server};

View File

@ -1,5 +1,5 @@
// rustfmt-edition: 2018 // rustfmt-edition: 2018
#![feature(rust_2018_preview, uniform_paths)] #![feature(uniform_paths)]
use futures::prelude::*; use futures::prelude::*;
use http_03::cli::Cli; use http_03::cli::Cli;
use hyper::{service::service_fn_ok, Body, Response, Server}; use hyper::{service::service_fn_ok, Body, Response, Server};

View File

@ -1,5 +1,5 @@
// rustfmt-edition: 2015 // rustfmt-edition: 2015
#![feature(rust_2018_preview, uniform_paths)] #![feature(uniform_paths)]
use futures::prelude::*; use futures::prelude::*;
use http_03::cli::Cli; use http_03::cli::Cli;
use hyper::{service::service_fn_ok, Body, Response, Server}; use hyper::{service::service_fn_ok, Body, Response, Server};

View File

@ -1,5 +1,5 @@
// rustfmt-edition: 2018 // rustfmt-edition: 2018
#![feature(rust_2018_preview, uniform_paths)] #![feature(uniform_paths)]
use ::log::{error, info, log}; use ::log::{error, info, log};
use futures::prelude::*; use futures::prelude::*;
use http_03::cli::Cli; use http_03::cli::Cli;