Update to proc-macro2 0.3 and tweak apis
diff --git a/tests/common/respan.rs b/tests/common/respan.rs
index 6d1e75a..a969ae2 100644
--- a/tests/common/respan.rs
+++ b/tests/common/respan.rs
@@ -186,6 +186,7 @@
fn fold_attribute(&mut self, mut at: Attribute) -> Option<Attribute> {
at.id.0 = 0;
+ at.is_sugared_doc = false;
fold::noop_fold_attribute(at, self)
}
diff --git a/tests/test_derive_input.rs b/tests/test_derive_input.rs
index a9fe242..bd25652 100644
--- a/tests/test_derive_input.rs
+++ b/tests/test_derive_input.rs
@@ -12,7 +12,8 @@
extern crate syn;
use syn::*;
-use proc_macro2::{Delimiter, Literal, Spacing, Span, Term, TokenNode, TokenStream, TokenTree};
+use proc_macro2::{Delimiter, Literal, Spacing, Span, Term, Op, TokenStream, TokenTree};
+use proc_macro2::Group;
use proc_macro2::Delimiter::{Brace, Parenthesis};
use std::iter::FromIterator;
@@ -21,31 +22,19 @@
mod macros;
fn op(c: char) -> TokenTree {
- proc_macro2::TokenTree {
- span: Span::def_site(),
- kind: TokenNode::Op(c, Spacing::Alone),
- }
+ Op::new(c, Spacing::Alone).into()
}
fn lit<T: Into<Literal>>(t: T) -> TokenTree {
- proc_macro2::TokenTree {
- span: Span::def_site(),
- kind: TokenNode::Literal(t.into()),
- }
+ t.into().into()
}
fn word(sym: &str) -> TokenTree {
- proc_macro2::TokenTree {
- span: Span::def_site(),
- kind: TokenNode::Term(Term::intern(sym)),
- }
+ Term::new(sym, Span::call_site()).into()
}
fn delimited(delim: Delimiter, tokens: Vec<TokenTree>) -> TokenTree {
- proc_macro2::TokenTree {
- span: Span::def_site(),
- kind: TokenNode::Group(delim, tokens.into_iter().collect()),
- }
+ Group::new(delim, tokens.into_iter().collect()).into()
}
#[test]
@@ -284,7 +273,7 @@
Default::default(),
Expr::Lit(ExprLit {
attrs: Vec::new(),
- lit: Lit::Int(LitInt::new(0, IntSuffix::Isize, Span::def_site())),
+ lit: Lit::Int(LitInt::new(0, IntSuffix::Isize, Span::call_site())),
}),
)),
},
@@ -305,19 +294,19 @@
lit: Lit::Int(LitInt::new(
0,
IntSuffix::None,
- Span::def_site()
+ Span::call_site()
)),
}),
Expr::Lit(ExprLit {
attrs: Vec::new(),
- lit: Lit::Str(LitStr::new("data", Span::def_site())),
+ lit: Lit::Str(LitStr::new("data", Span::call_site())),
}),
],
})),
dot_token: Default::default(),
member: Member::Unnamed(Index {
index: 0,
- span: Span::def_site(),
+ span: Span::call_site(),
}),
}),
)),
@@ -338,7 +327,7 @@
eq_token: Default::default(),
lit: Lit::Str(LitStr::new(
"/// See the std::result module documentation for details.",
- Span::def_site(),
+ Span::call_site(),
)),
}.into(),
Meta::Word("must_use".into()),
diff --git a/tests/test_generics.rs b/tests/test_generics.rs
index b96d652..a86a41e 100644
--- a/tests/test_generics.rs
+++ b/tests/test_generics.rs
@@ -32,14 +32,14 @@
params: punctuated![
GenericParam::Lifetime(LifetimeDef {
attrs: Default::default(),
- lifetime: Lifetime::new(Term::intern("'a"), Span::def_site()),
+ lifetime: Lifetime::new(Term::new("'a", Span::call_site())),
bounds: Default::default(),
colon_token: None,
}),
GenericParam::Lifetime(LifetimeDef {
attrs: Default::default(),
- lifetime: Lifetime::new(Term::intern("'b"), Span::def_site()),
- bounds: punctuated![Lifetime::new(Term::intern("'a"), Span::def_site())],
+ lifetime: Lifetime::new(Term::new("'b", Span::call_site())),
+ bounds: punctuated![Lifetime::new(Term::new("'a", Span::call_site()))],
colon_token: Some(token::Colon::default()),
}),
GenericParam::Type(TypeParam {
@@ -55,7 +55,7 @@
],
ident: "T".into(),
bounds: punctuated![
- TypeParamBound::Lifetime(Lifetime::new(Term::intern("'a"), Span::def_site())),
+ TypeParamBound::Lifetime(Lifetime::new(Term::new("'a", Span::call_site()))),
],
default: Some(
TypeTuple {
@@ -111,14 +111,14 @@
#[test]
fn test_ty_param_bound() {
let tokens = quote!('a);
- let expected = TypeParamBound::Lifetime(Lifetime::new(Term::intern("'a"), Span::def_site()));
+ let expected = TypeParamBound::Lifetime(Lifetime::new(Term::new("'a", Span::call_site())));
assert_eq!(
expected,
common::parse::syn::<TypeParamBound>(tokens.into())
);
let tokens = quote!('_);
- let expected = TypeParamBound::Lifetime(Lifetime::new(Term::intern("'_"), Span::def_site()));
+ let expected = TypeParamBound::Lifetime(Lifetime::new(Term::new("'_", Span::call_site())));
assert_eq!(
expected,
common::parse::syn::<TypeParamBound>(tokens.into())
diff --git a/tests/test_grouping.rs b/tests/test_grouping.rs
index 8e00068..ca686f6 100644
--- a/tests/test_grouping.rs
+++ b/tests/test_grouping.rs
@@ -22,13 +22,6 @@
mod common;
-fn tt(k: TokenNode) -> TokenTree {
- TokenTree {
- span: Span::def_site(),
- kind: k,
- }
-}
-
fn expr<T: Into<Expr>>(t: T) -> Expr {
t.into()
}
@@ -36,26 +29,26 @@
fn lit<T: Into<Literal>>(t: T) -> Expr {
Expr::Lit(ExprLit {
attrs: Vec::new(),
- lit: Lit::new(t.into(), Span::def_site()),
+ lit: Lit::new(t.into()),
})
}
#[test]
fn test_grouping() {
let raw: TokenStream = vec![
- tt(TokenNode::Literal(Literal::i32(1))),
- tt(TokenNode::Op('+', Spacing::Alone)),
- tt(TokenNode::Group(
+ TokenTree::Literal(Literal::i32_suffixed(1)),
+ TokenTree::Op(Op::new('+', Spacing::Alone)),
+ TokenTree::Group(proc_macro2::Group::new(
Delimiter::None,
vec![
- tt(TokenNode::Literal(Literal::i32(2))),
- tt(TokenNode::Op('+', Spacing::Alone)),
- tt(TokenNode::Literal(Literal::i32(3))),
+ TokenTree::Literal(Literal::i32_suffixed(2)),
+ TokenTree::Op(Op::new('+', Spacing::Alone)),
+ TokenTree::Literal(Literal::i32_suffixed(3)),
].into_iter()
.collect(),
)),
- tt(TokenNode::Op('*', Spacing::Alone)),
- tt(TokenNode::Literal(Literal::i32(4))),
+ TokenTree::Op(Op::new('*', Spacing::Alone)),
+ TokenTree::Literal(Literal::i32_suffixed(4)),
].into_iter()
.collect();
@@ -65,7 +58,7 @@
common::parse::syn::<Expr>(raw),
expr(ExprBinary {
attrs: Vec::new(),
- left: Box::new(lit(Literal::i32(1))),
+ left: Box::new(lit(Literal::i32_suffixed(1))),
op: BinOp::Add(<Token![+]>::default()),
right: Box::new(expr(ExprBinary {
attrs: Vec::new(),
@@ -74,13 +67,13 @@
group_token: Group::default(),
expr: Box::new(expr(ExprBinary {
attrs: Vec::new(),
- left: Box::new(lit(Literal::i32(2))),
+ left: Box::new(lit(Literal::i32_suffixed(2))),
op: BinOp::Add(<Token![+]>::default()),
- right: Box::new(lit(Literal::i32(3))),
+ right: Box::new(lit(Literal::i32_suffixed(3))),
})),
})),
op: BinOp::Mul(<Token![*]>::default()),
- right: Box::new(lit(Literal::i32(4))),
+ right: Box::new(lit(Literal::i32_suffixed(4))),
})),
})
);
@@ -89,19 +82,19 @@
#[test]
fn test_invalid_grouping() {
let raw: TokenStream = vec![
- tt(TokenNode::Literal(Literal::i32(1))),
- tt(TokenNode::Op('+', Spacing::Alone)),
- tt(TokenNode::Group(
+ TokenTree::Literal(Literal::i32_suffixed(1)),
+ TokenTree::Op(Op::new('+', Spacing::Alone)),
+ TokenTree::Group(proc_macro2::Group::new(
Delimiter::None,
vec![
- tt(TokenNode::Literal(Literal::i32(2))),
- tt(TokenNode::Op('+', Spacing::Alone)),
+ TokenTree::Literal(Literal::i32_suffixed(2)),
+ TokenTree::Op(Op::new('+', Spacing::Alone)),
].into_iter()
.collect(),
)),
- tt(TokenNode::Literal(Literal::i32(3))),
- tt(TokenNode::Op('*', Spacing::Alone)),
- tt(TokenNode::Literal(Literal::i32(4))),
+ TokenTree::Literal(Literal::i32_suffixed(3)),
+ TokenTree::Op(Op::new('*', Spacing::Alone)),
+ TokenTree::Literal(Literal::i32_suffixed(4)),
].into_iter()
.collect();
@@ -113,16 +106,16 @@
attrs: Vec::new(),
left: Box::new(expr(ExprBinary {
attrs: Vec::new(),
- left: Box::new(lit(Literal::i32(1))),
+ left: Box::new(lit(Literal::i32_suffixed(1))),
op: BinOp::Add(<Token![+]>::default()),
- right: Box::new(lit(Literal::i32(2))),
+ right: Box::new(lit(Literal::i32_suffixed(2))),
})),
op: BinOp::Add(<Token![+]>::default()),
right: Box::new(expr(ExprBinary {
attrs: Vec::new(),
- left: Box::new(lit(Literal::i32(3))),
+ left: Box::new(lit(Literal::i32_suffixed(3))),
op: BinOp::Mul(<Token![*]>::default()),
- right: Box::new(lit(Literal::i32(4))),
+ right: Box::new(lit(Literal::i32_suffixed(4))),
})),
})
);
diff --git a/tests/test_lit.rs b/tests/test_lit.rs
index ad6f246..79a0606 100644
--- a/tests/test_lit.rs
+++ b/tests/test_lit.rs
@@ -12,7 +12,7 @@
use syn::{FloatSuffix, IntSuffix, Lit};
use quote::ToTokens;
-use proc_macro2::{Span, TokenNode, TokenStream};
+use proc_macro2::{TokenTree, TokenStream};
use std::str::FromStr;
fn lit(s: &str) -> Lit {
@@ -21,9 +21,8 @@
.into_iter()
.next()
.unwrap()
- .kind
{
- TokenNode::Literal(lit) => Lit::new(lit, Span::def_site()),
+ TokenTree::Literal(lit) => Lit::new(lit),
_ => panic!(),
}
}
diff --git a/tests/test_meta_item.rs b/tests/test_meta_item.rs
index 0fff6d2..bd2c1a5 100644
--- a/tests/test_meta_item.rs
+++ b/tests/test_meta_item.rs
@@ -19,7 +19,7 @@
mod macros;
fn lit<T: Into<Literal>>(t: T) -> Lit {
- Lit::new(t.into(), Span::def_site())
+ Lit::new(t.into())
}
#[test]
@@ -34,7 +34,7 @@
MetaNameValue {
ident: "foo".into(),
eq_token: Default::default(),
- lit: lit(Literal::integer(5)),
+ lit: lit(Literal::i32_unsuffixed(5)),
},
)
}
@@ -46,7 +46,7 @@
MetaNameValue {
ident: "foo".into(),
eq_token: Default::default(),
- lit: Lit::Bool(LitBool { value: true, span: Span::def_site() }),
+ lit: Lit::Bool(LitBool { value: true, span: Span::call_site() }),
},
);
run_test(
@@ -54,7 +54,7 @@
MetaNameValue {
ident: "foo".into(),
eq_token: Default::default(),
- lit: Lit::Bool(LitBool { value: false, span: Span::def_site() }),
+ lit: Lit::Bool(LitBool { value: false, span: Span::call_site() }),
},
)
}
@@ -66,7 +66,7 @@
MetaList {
ident: "foo".into(),
paren_token: Default::default(),
- nested: punctuated![NestedMeta::Literal(lit(Literal::integer(5)))],
+ nested: punctuated![NestedMeta::Literal(lit(Literal::i32_unsuffixed(5)))],
},
)
}
@@ -95,7 +95,7 @@
MetaNameValue {
ident: "bar".into(),
eq_token: Default::default(),
- lit: lit(Literal::integer(5)),
+ lit: lit(Literal::i32_unsuffixed(5)),
}.into(),
),
],
@@ -115,7 +115,7 @@
MetaNameValue {
ident: "bar".into(),
eq_token: Default::default(),
- lit: Lit::Bool(LitBool { value: true, span: Span::def_site() }),
+ lit: Lit::Bool(LitBool { value: true, span: Span::call_site() }),
}.into(),
),
],
@@ -136,7 +136,7 @@
MetaNameValue {
ident: "name".into(),
eq_token: Default::default(),
- lit: lit(Literal::integer(5)),
+ lit: lit(Literal::i32_unsuffixed(5)),
}.into(),
),
NestedMeta::Meta(
@@ -148,7 +148,7 @@
MetaNameValue {
ident: "name2".into(),
eq_token: Default::default(),
- lit: lit(Literal::integer(6)),
+ lit: lit(Literal::i32_unsuffixed(6)),
}.into(),
),
],
diff --git a/tests/test_round_trip.rs b/tests/test_round_trip.rs
index 3313acb..a6013ce 100644
--- a/tests/test_round_trip.rs
+++ b/tests/test_round_trip.rs
@@ -79,7 +79,7 @@
};
let back = quote!(#krate).to_string();
- let equal = panic::catch_unwind(|| {
+ let equal = panic::catch_unwind(|| syntax::with_globals(|| {
let sess = ParseSess::new(FilePathMapping::empty());
let before = match libsyntax_parse(content, &sess) {
Ok(before) => before,
@@ -125,7 +125,7 @@
);
false
}
- });
+ }));
match equal {
Err(_) => errorf!("=== {}: ignoring libsyntax panic\n", path.display()),
Ok(true) => {}
@@ -146,7 +146,5 @@
fn libsyntax_parse(content: String, sess: &ParseSess) -> PResult<ast::Crate> {
let name = FileName::Custom("test_round_trip".to_string());
- syntax::with_globals(|| {
- parse::parse_crate_from_source_str(name, content, sess).map(common::respan::respan_crate)
- })
+ parse::parse_crate_from_source_str(name, content, sess).map(common::respan::respan_crate)
}
diff --git a/tests/test_token_trees.rs b/tests/test_token_trees.rs
index 0047ae2..6fbb4ae 100644
--- a/tests/test_token_trees.rs
+++ b/tests/test_token_trees.rs
@@ -14,35 +14,23 @@
extern crate syn;
use syn::{AttrStyle, Attribute, Lit};
-use proc_macro2::{Delimiter, Spacing, Span, Term, TokenNode, TokenStream, TokenTree};
+use proc_macro2::{Delimiter, Spacing, Span, Term, Op, Group, TokenStream, TokenTree};
use proc_macro2::Delimiter::*;
fn alone(c: char) -> TokenTree {
- proc_macro2::TokenTree {
- span: Span::def_site(),
- kind: TokenNode::Op(c, Spacing::Alone),
- }
+ Op::new(c, Spacing::Alone).into()
}
fn joint(c: char) -> TokenTree {
- proc_macro2::TokenTree {
- span: Span::def_site(),
- kind: TokenNode::Op(c, Spacing::Joint),
- }
+ Op::new(c, Spacing::Joint).into()
}
fn delimited(delim: Delimiter, tokens: Vec<TokenTree>) -> TokenTree {
- proc_macro2::TokenTree {
- span: Span::def_site(),
- kind: TokenNode::Group(delim, tokens.into_iter().collect()),
- }
+ Group::new(delim, tokens.into_iter().collect()).into()
}
fn word(sym: &str) -> TokenTree {
- proc_macro2::TokenTree {
- span: Span::def_site(),
- kind: TokenNode::Term(Term::intern(sym)),
- }
+ Term::new(sym, Span::call_site()).into()
}
#[test]