Skip to content

Commit

Permalink
Allow caller to keep using begin buffer after verbatim::between
Browse files Browse the repository at this point in the history
  • Loading branch information
dtolnay committed Jul 2, 2023
1 parent 1316ec6 commit 31e4119
Show file tree
Hide file tree
Showing 7 changed files with 30 additions and 30 deletions.
6 changes: 3 additions & 3 deletions src/expr.rs
Expand Up @@ -1377,7 +1377,7 @@ pub(crate) mod parsing {
}
let expr = Box::new(unary_expr(input, allow_struct)?);
if raw.is_some() {
Ok(Expr::Verbatim(verbatim::between(begin, input)))
Ok(Expr::Verbatim(verbatim::between(&begin, input)))
} else {
Ok(Expr::Reference(ExprReference {
attrs,
Expand Down Expand Up @@ -1423,7 +1423,7 @@ pub(crate) mod parsing {
let mut e = trailer_helper(input, atom)?;

if let Expr::Verbatim(tokens) = &mut e {
*tokens = verbatim::between(begin, input);
*tokens = verbatim::between(&begin, input);
} else {
let inner_attrs = e.replace_attrs(Vec::new());
attrs.extend(inner_attrs);
Expand Down Expand Up @@ -1707,7 +1707,7 @@ pub(crate) mod parsing {
parenthesized!(args in input);
args.parse::<TokenStream>()?;

Ok(Expr::Verbatim(verbatim::between(begin, input)))
Ok(Expr::Verbatim(verbatim::between(&begin, input)))
}

fn path_or_macro_or_struct(
Expand Down
2 changes: 1 addition & 1 deletion src/generics.rs
Expand Up @@ -771,7 +771,7 @@ pub(crate) mod parsing {
bound.paren_token = paren_token;

if is_tilde_const {
Ok(TypeParamBound::Verbatim(verbatim::between(begin, input)))
Ok(TypeParamBound::Verbatim(verbatim::between(&begin, input)))
} else {
Ok(TypeParamBound::Trait(bound))
}
Expand Down
36 changes: 18 additions & 18 deletions src/item.rs
Expand Up @@ -917,7 +917,7 @@ pub(crate) mod parsing {
let sig: Signature = input.parse()?;
if input.peek(Token![;]) {
input.parse::<Token![;]>()?;
Ok(Item::Verbatim(verbatim::between(begin, input)))
Ok(Item::Verbatim(verbatim::between(&begin, input)))
} else {
parse_rest_of_fn(input, Vec::new(), vis, sig).map(Item::Fn)
}
Expand All @@ -943,7 +943,7 @@ pub(crate) mod parsing {
let allow_crate_root_in_path = true;
match parse_item_use(input, allow_crate_root_in_path)? {
Some(item_use) => Ok(Item::Use(item_use)),
None => Ok(Item::Verbatim(verbatim::between(begin, input))),
None => Ok(Item::Verbatim(verbatim::between(&begin, input))),
}
} else if lookahead.peek(Token![static]) {
let vis = input.parse()?;
Expand All @@ -954,13 +954,13 @@ pub(crate) mod parsing {
input.parse::<Token![=]>()?;
input.parse::<Expr>()?;
input.parse::<Token![;]>()?;
Ok(Item::Verbatim(verbatim::between(begin, input)))
Ok(Item::Verbatim(verbatim::between(&begin, input)))
} else {
let colon_token = input.parse()?;
let ty = input.parse()?;
if input.peek(Token![;]) {
input.parse::<Token![;]>()?;
Ok(Item::Verbatim(verbatim::between(begin, input)))
Ok(Item::Verbatim(verbatim::between(&begin, input)))
} else {
Ok(Item::Static(ItemStatic {
attrs: Vec::new(),
Expand Down Expand Up @@ -989,7 +989,7 @@ pub(crate) mod parsing {
let ty = input.parse()?;
if input.peek(Token![;]) {
input.parse::<Token![;]>()?;
Ok(Item::Verbatim(verbatim::between(begin, input)))
Ok(Item::Verbatim(verbatim::between(&begin, input)))
} else {
Ok(Item::Const(ItemConst {
attrs: Vec::new(),
Expand All @@ -1016,7 +1016,7 @@ pub(crate) mod parsing {
if let Some(item) = parse_impl(input, allow_verbatim_impl)? {
Ok(Item::Impl(item))
} else {
Ok(Item::Verbatim(verbatim::between(begin, input)))
Ok(Item::Verbatim(verbatim::between(&begin, input)))
}
} else if lookahead.peek(Token![extern]) {
input.parse().map(Item::ForeignMod)
Expand Down Expand Up @@ -1046,7 +1046,7 @@ pub(crate) mod parsing {
if let Some(item) = parse_impl(input, allow_verbatim_impl)? {
Ok(Item::Impl(item))
} else {
Ok(Item::Verbatim(verbatim::between(begin, input)))
Ok(Item::Verbatim(verbatim::between(&begin, input)))
}
} else if lookahead.peek(Token![macro]) {
input.advance_to(&ahead);
Expand Down Expand Up @@ -1227,7 +1227,7 @@ pub(crate) mod parsing {
return Err(lookahead.error());
}

Ok(Item::Verbatim(verbatim::between(begin, input)))
Ok(Item::Verbatim(verbatim::between(&begin, input)))
}

#[cfg_attr(doc_cfg, doc(cfg(feature = "parsing")))]
Expand Down Expand Up @@ -1767,7 +1767,7 @@ pub(crate) mod parsing {
content.call(Attribute::parse_inner)?;
content.call(Block::parse_within)?;

Ok(ForeignItem::Verbatim(verbatim::between(begin, input)))
Ok(ForeignItem::Verbatim(verbatim::between(&begin, input)))
} else {
Ok(ForeignItem::Fn(ForeignItemFn {
attrs: Vec::new(),
Expand All @@ -1787,7 +1787,7 @@ pub(crate) mod parsing {
input.parse::<Token![=]>()?;
input.parse::<Expr>()?;
input.parse::<Token![;]>()?;
Ok(ForeignItem::Verbatim(verbatim::between(begin, input)))
Ok(ForeignItem::Verbatim(verbatim::between(&begin, input)))
} else {
Ok(ForeignItem::Static(ForeignItemStatic {
attrs: Vec::new(),
Expand Down Expand Up @@ -1896,7 +1896,7 @@ pub(crate) mod parsing {
)?;

if colon_token.is_some() || ty.is_some() {
Ok(ForeignItem::Verbatim(verbatim::between(begin, input)))
Ok(ForeignItem::Verbatim(verbatim::between(&begin, input)))
} else {
Ok(ForeignItem::Type(ForeignItemType {
attrs: Vec::new(),
Expand Down Expand Up @@ -1966,7 +1966,7 @@ pub(crate) mod parsing {

let (eq_token, ty) = match ty {
Some(ty) if colon_token.is_none() => ty,
_ => return Ok(Item::Verbatim(verbatim::between(begin, input))),
_ => return Ok(Item::Verbatim(verbatim::between(&begin, input))),
};

Ok(Item::Type(ItemType {
Expand Down Expand Up @@ -2254,7 +2254,7 @@ pub(crate) mod parsing {

match (vis, defaultness) {
(Visibility::Inherited, None) => {}
_ => return Ok(TraitItem::Verbatim(verbatim::between(begin, input))),
_ => return Ok(TraitItem::Verbatim(verbatim::between(&begin, input))),
}

let item_attrs = match &mut item {
Expand Down Expand Up @@ -2372,7 +2372,7 @@ pub(crate) mod parsing {
)?;

if vis.is_some() {
Ok(TraitItem::Verbatim(verbatim::between(begin, input)))
Ok(TraitItem::Verbatim(verbatim::between(&begin, input)))
} else {
Ok(TraitItem::Type(TraitItemType {
attrs: Vec::new(),
Expand Down Expand Up @@ -2485,7 +2485,7 @@ pub(crate) mod parsing {
self_ty = if polarity.is_none() {
first_ty
} else {
Type::Verbatim(verbatim::between(begin, input))
Type::Verbatim(verbatim::between(&begin, input))
};
}

Expand Down Expand Up @@ -2539,7 +2539,7 @@ pub(crate) mod parsing {
if let Some(item) = parse_impl_item_fn(input, allow_omitted_body)? {
Ok(ImplItem::Fn(item))
} else {
Ok(ImplItem::Verbatim(verbatim::between(begin, input)))
Ok(ImplItem::Verbatim(verbatim::between(&begin, input)))
}
} else if lookahead.peek(Token![const]) {
input.advance_to(&ahead);
Expand Down Expand Up @@ -2568,7 +2568,7 @@ pub(crate) mod parsing {
}));
} else {
input.parse::<Token![;]>()?;
return Ok(ImplItem::Verbatim(verbatim::between(begin, input)));
return Ok(ImplItem::Verbatim(verbatim::between(&begin, input)));
}
} else if lookahead.peek(Token![type]) {
parse_impl_item_type(begin, input)
Expand Down Expand Up @@ -2714,7 +2714,7 @@ pub(crate) mod parsing {

let (eq_token, ty) = match ty {
Some(ty) if colon_token.is_none() => ty,
_ => return Ok(ImplItem::Verbatim(verbatim::between(begin, input))),
_ => return Ok(ImplItem::Verbatim(verbatim::between(&begin, input))),
};

Ok(ImplItem::Type(ImplItemType {
Expand Down
6 changes: 3 additions & 3 deletions src/pat.rs
Expand Up @@ -422,7 +422,7 @@ pub(crate) mod parsing {
fn pat_box(begin: ParseBuffer, input: ParseStream) -> Result<Pat> {
input.parse::<Token![box]>()?;
Pat::parse_single(input)?;
Ok(Pat::Verbatim(verbatim::between(begin, input)))
Ok(Pat::Verbatim(verbatim::between(&begin, input)))
}

fn pat_ident(input: ParseStream) -> Result<PatIdent> {
Expand Down Expand Up @@ -544,7 +544,7 @@ pub(crate) mod parsing {
};

let pat = if boxed.is_some() {
Pat::Verbatim(verbatim::between(begin, input))
Pat::Verbatim(verbatim::between(&begin, input))
} else {
Pat::Ident(PatIdent {
attrs: Vec::new(),
Expand Down Expand Up @@ -762,7 +762,7 @@ pub(crate) mod parsing {
content.call(Attribute::parse_inner)?;
content.call(Block::parse_within)?;

Ok(verbatim::between(begin, input))
Ok(verbatim::between(&begin, input))
}
}

Expand Down
2 changes: 1 addition & 1 deletion src/path.rs
Expand Up @@ -391,7 +391,7 @@ pub(crate) mod parsing {
let content;
braced!(content in input);
content.parse::<Expr>()?;
let verbatim = verbatim::between(begin, input);
let verbatim = verbatim::between(&begin, input);
return Ok(Expr::Verbatim(verbatim));
}
}
Expand Down
4 changes: 2 additions & 2 deletions src/ty.rs
Expand Up @@ -525,7 +525,7 @@ pub(crate) mod parsing {
let star_token: Option<Token![*]> = input.parse()?;
let bounds = TypeTraitObject::parse_bounds(dyn_span, input, allow_plus)?;
return Ok(if star_token.is_some() {
Type::Verbatim(verbatim::between(begin, input))
Type::Verbatim(verbatim::between(&begin, input))
} else {
Type::TraitObject(TypeTraitObject {
dyn_token: Some(dyn_token),
Expand Down Expand Up @@ -947,7 +947,7 @@ pub(crate) mod parsing {
Some(ty) if !has_mut_self => ty,
_ => {
name = None;
Type::Verbatim(verbatim::between(begin, input))
Type::Verbatim(verbatim::between(&begin, input))
}
};

Expand Down
4 changes: 2 additions & 2 deletions src/verbatim.rs
@@ -1,9 +1,9 @@
use crate::parse::{ParseBuffer, ParseStream};
use crate::parse::ParseStream;
use proc_macro2::{Delimiter, TokenStream};
use std::cmp::Ordering;
use std::iter;

pub(crate) fn between<'a>(begin: ParseBuffer<'a>, end: ParseStream<'a>) -> TokenStream {
pub(crate) fn between<'a>(begin: ParseStream<'a>, end: ParseStream<'a>) -> TokenStream {
let end = end.cursor();
let mut cursor = begin.cursor();
assert!(crate::buffer::same_buffer(end, cursor));
Expand Down

0 comments on commit 31e4119

Please sign in to comment.