Skip to content

Commit 672f352

Browse files
authored
Merge pull request rust-lang#3325 from topecongiro/rustcap
Update rustc-ap-* crates to 366.0.0
2 parents 4ed31b6 + 1ae0326 commit 672f352

File tree

9 files changed

+232
-237
lines changed

9 files changed

+232
-237
lines changed

Cargo.lock

+190-189
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

Cargo.toml

+3-3
Original file line numberDiff line numberDiff line change
@@ -48,9 +48,9 @@ env_logger = "0.6"
4848
getopts = "0.2"
4949
derive-new = "0.5"
5050
cargo_metadata = "0.7"
51-
rustc-ap-rustc_target = "306.0.0"
52-
rustc-ap-syntax = "306.0.0"
53-
rustc-ap-syntax_pos = "306.0.0"
51+
rustc-ap-rustc_target = "366.0.0"
52+
rustc-ap-syntax = "366.0.0"
53+
rustc-ap-syntax_pos = "366.0.0"
5454
failure = "0.1.3"
5555
bytecount = "0.5"
5656
unicode-width = "0.1.5"

src/closures.rs

-1
Original file line numberDiff line numberDiff line change
@@ -157,7 +157,6 @@ fn rewrite_closure_with_block(
157157
id: ast::NodeId::root(),
158158
rules: ast::BlockCheckMode::Default,
159159
span: body.span,
160-
recovered: false,
161160
};
162161
let block =
163162
crate::expr::rewrite_block_with_visitor(context, "", &block, None, None, shape, false)?;

src/expr.rs

+1
Original file line numberDiff line numberDiff line change
@@ -379,6 +379,7 @@ pub fn format_expr(
379379
))
380380
}
381381
}
382+
ast::ExprKind::Err => None,
382383
};
383384

384385
expr_rw

src/macros.rs

+13-17
Original file line numberDiff line numberDiff line change
@@ -27,7 +27,7 @@ use syntax::parse::token::{BinOpToken, DelimToken, Token};
2727
use syntax::print::pprust;
2828
use syntax::source_map::{BytePos, Span};
2929
use syntax::symbol;
30-
use syntax::tokenstream::{Cursor, ThinTokenStream, TokenStream, TokenTree};
30+
use syntax::tokenstream::{Cursor, TokenStream, TokenTree};
3131
use syntax::ThinVec;
3232
use syntax::{ast, parse, ptr};
3333

@@ -751,7 +751,7 @@ struct MacroArgParser {
751751
fn last_tok(tt: &TokenTree) -> Token {
752752
match *tt {
753753
TokenTree::Token(_, ref t) => t.clone(),
754-
TokenTree::Delimited(_, ref d) => d.close_token(),
754+
TokenTree::Delimited(_, delim, _) => Token::CloseDelim(delim),
755755
}
756756
}
757757

@@ -916,11 +916,11 @@ impl MacroArgParser {
916916
}
917917

918918
/// Returns a collection of parsed macro def's arguments.
919-
pub fn parse(mut self, tokens: ThinTokenStream) -> Option<Vec<ParsedMacroArg>> {
919+
pub fn parse(mut self, tokens: TokenStream) -> Option<Vec<ParsedMacroArg>> {
920920
let stream: TokenStream = tokens.into();
921921
let mut iter = stream.trees();
922922

923-
while let Some(ref tok) = iter.next() {
923+
while let Some(tok) = iter.next() {
924924
match tok {
925925
TokenTree::Token(sp, Token::Dollar) => {
926926
// We always want to add a separator before meta variables.
@@ -937,7 +937,7 @@ impl MacroArgParser {
937937
self.add_meta_variable(&mut iter)?;
938938
}
939939
TokenTree::Token(sp, ref t) => self.update_buffer(sp.lo(), t),
940-
TokenTree::Delimited(delimited_span, delimited) => {
940+
TokenTree::Delimited(delimited_span, delimited, ref tts) => {
941941
if !self.buf.is_empty() {
942942
if next_space(&self.last_tok) == SpaceState::Always {
943943
self.add_separator();
@@ -949,19 +949,19 @@ impl MacroArgParser {
949949
// Parse the stuff inside delimiters.
950950
let mut parser = MacroArgParser::new();
951951
parser.lo = delimited_span.open.lo();
952-
let delimited_arg = parser.parse(delimited.tts.clone())?;
952+
let delimited_arg = parser.parse(tts.clone())?;
953953

954954
let span = delimited_span.entire();
955955
if self.is_meta_var {
956-
self.add_repeat(delimited_arg, delimited.delim, &mut iter, span)?;
956+
self.add_repeat(delimited_arg, delimited, &mut iter, span)?;
957957
self.is_meta_var = false;
958958
} else {
959-
self.add_delimited(delimited_arg, delimited.delim, span);
959+
self.add_delimited(delimited_arg, delimited, span);
960960
}
961961
}
962962
}
963963

964-
self.set_last_tok(tok);
964+
self.set_last_tok(&tok);
965965
}
966966

967967
// We are left with some stuff in the buffer. Since there is nothing
@@ -1027,11 +1027,7 @@ fn wrap_macro_args_inner(
10271027
//
10281028
// We always try and format on one line.
10291029
// FIXME: Use multi-line when every thing does not fit on one line.
1030-
fn format_macro_args(
1031-
context: &RewriteContext,
1032-
toks: ThinTokenStream,
1033-
shape: Shape,
1034-
) -> Option<String> {
1030+
fn format_macro_args(context: &RewriteContext, toks: TokenStream, shape: Shape) -> Option<String> {
10351031
if !context.config.format_macro_matchers() {
10361032
let token_stream: TokenStream = toks.into();
10371033
let span = span_for_token_stream(&token_stream);
@@ -1176,7 +1172,7 @@ impl MacroParser {
11761172
let tok = self.toks.next()?;
11771173
let (lo, args_paren_kind) = match tok {
11781174
TokenTree::Token(..) => return None,
1179-
TokenTree::Delimited(delimited_span, ref d) => (delimited_span.open.lo(), d.delim),
1175+
TokenTree::Delimited(delimited_span, d, _) => (delimited_span.open.lo(), d),
11801176
};
11811177
let args = tok.joint().into();
11821178
match self.toks.next()? {
@@ -1185,7 +1181,7 @@ impl MacroParser {
11851181
}
11861182
let (mut hi, body, whole_body) = match self.toks.next()? {
11871183
TokenTree::Token(..) => return None,
1188-
TokenTree::Delimited(delimited_span, _) => {
1184+
TokenTree::Delimited(delimited_span, ..) => {
11891185
let data = delimited_span.entire().data();
11901186
(
11911187
data.hi,
@@ -1218,7 +1214,7 @@ struct Macro {
12181214
struct MacroBranch {
12191215
span: Span,
12201216
args_paren_kind: DelimToken,
1221-
args: ThinTokenStream,
1217+
args: TokenStream,
12221218
body: Span,
12231219
whole_body: Span,
12241220
}

src/types.rs

+8-2
Original file line numberDiff line numberDiff line change
@@ -229,8 +229,14 @@ fn rewrite_segment(
229229
.chain(data.bindings.iter().map(|x| SegmentParam::Binding(&*x)))
230230
.collect::<Vec<_>>();
231231

232-
let force_separator =
233-
context.inside_macro() && context.snippet(data.span).starts_with("::");
232+
// HACK: squeeze out the span between the identifier and the parameters.
233+
// The hack is requried so that we don't remove the separator inside macro calls.
234+
// This does not work in the presence of comment, hoping that people are
235+
// sane about where to put their comment.
236+
let separator_snippet = context
237+
.snippet(mk_sp(segment.ident.span.hi(), data.span.lo()))
238+
.trim();
239+
let force_separator = context.inside_macro() && separator_snippet.starts_with("::");
234240
let separator = if path_context == PathContext::Expr || force_separator {
235241
"::"
236242
} else {

src/visitor.rs

+3-25
Original file line numberDiff line numberDiff line change
@@ -10,7 +10,6 @@
1010

1111
use std::cell::RefCell;
1212

13-
use syntax::attr::HasAttrs;
1413
use syntax::parse::ParseSess;
1514
use syntax::source_map::{self, BytePos, Pos, SourceMap, Span};
1615
use syntax::{ast, visit};
@@ -152,32 +151,11 @@ impl<'b, 'a: 'b> FmtVisitor<'a> {
152151
self.push_str("{");
153152

154153
if let Some(first_stmt) = b.stmts.first() {
155-
let attr_lo = inner_attrs
154+
let hi = inner_attrs
156155
.and_then(|attrs| inner_attributes(attrs).first().map(|attr| attr.span.lo()))
157-
.or_else(|| {
158-
// Attributes for an item in a statement position
159-
// do not belong to the statement. (rust-lang/rust#34459)
160-
if let ast::StmtKind::Item(ref item) = first_stmt.node {
161-
item.attrs.first()
162-
} else {
163-
first_stmt.attrs().first()
164-
}
165-
.and_then(|attr| {
166-
// Some stmts can have embedded attributes.
167-
// e.g. `match { #![attr] ... }`
168-
let attr_lo = attr.span.lo();
169-
if attr_lo < first_stmt.span.lo() {
170-
Some(attr_lo)
171-
} else {
172-
None
173-
}
174-
})
175-
});
156+
.unwrap_or(first_stmt.span().lo());
176157

177-
let snippet = self.snippet(mk_sp(
178-
self.last_pos,
179-
attr_lo.unwrap_or_else(|| first_stmt.span.lo()),
180-
));
158+
let snippet = self.snippet(mk_sp(self.last_pos, hi));
181159
let len = CommentCodeSlices::new(snippet)
182160
.nth(0)
183161
.and_then(|(kind, _, s)| {

tests/source/attrib.rs

+7
Original file line numberDiff line numberDiff line change
@@ -211,3 +211,10 @@ pub struct Params {
211211
all(target_arch = "wasm32", feature = "wasm-bindgen"),
212212
))))]
213213
type Os = NoSource;
214+
215+
// #3313
216+
fn stmt_expr_attributes() {
217+
let foo ;
218+
#[must_use]
219+
foo = false ;
220+
}

tests/target/attrib.rs

+7
Original file line numberDiff line numberDiff line change
@@ -246,3 +246,10 @@ mod issue_2620 {
246246
)
247247
)))]
248248
type Os = NoSource;
249+
250+
// #3313
251+
fn stmt_expr_attributes() {
252+
let foo;
253+
#[must_use]
254+
foo = false;
255+
}

0 commit comments

Comments
 (0)