Skip to content

Update proc-macro2, syn, and quote to 1.0 #820

New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Merged
merged 3 commits into from
Oct 26, 2019
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
2 changes: 2 additions & 0 deletions ci/dox.sh
Original file line number Diff line number Diff line change
Expand Up @@ -30,11 +30,13 @@ dox() {

rustdoc --verbose --target "${target}" \
-o "target/doc/${arch}" crates/core_arch/src/lib.rs \
--edition=2018 \
--crate-name core_arch \
--library-path "target/${target}/debug/deps" \
--cfg core_arch_docs
rustdoc --verbose --target "${target}" \
-o "target/doc/${arch}" crates/std_detect/src/lib.rs \
--edition=2018 \
--crate-name std_detect \
--library-path "target/${target}/debug/deps" \
--extern cfg_if="$(ls target/"${target}"/debug/deps/libcfg_if-*.rlib)" \
Expand Down
6 changes: 3 additions & 3 deletions crates/assert-instr-macro/Cargo.toml
Original file line number Diff line number Diff line change
Expand Up @@ -8,6 +8,6 @@ proc-macro = true
test = false

[dependencies]
proc-macro2 = { version = "0.4", features = ["nightly"] }
quote = "0.6"
syn = { version = "0.15", features = ["full"] }
proc-macro2 = "1.0"
quote = "1.0"
syn = { version = "1.0", features = ["full"] }
30 changes: 16 additions & 14 deletions crates/assert-instr-macro/src/lib.rs
Original file line number Diff line number Diff line change
Expand Up @@ -36,7 +36,7 @@ pub fn assert_instr(
};

let instr = &invoc.instr;
let name = &func.ident;
let name = &func.sig.ident;

// Disable assert_instr for x86 targets compiled with avx enabled, which
// causes LLVM to generate different intrinsics that the ones we are
Expand All @@ -62,21 +62,21 @@ pub fn assert_instr(
);
let mut inputs = Vec::new();
let mut input_vals = Vec::new();
let ret = &func.decl.output;
for arg in func.decl.inputs.iter() {
let ret = &func.sig.output;
for arg in func.sig.inputs.iter() {
let capture = match *arg {
syn::FnArg::Captured(ref c) => c,
syn::FnArg::Typed(ref c) => c,
ref v => panic!(
"arguments must not have patterns: `{:?}`",
v.clone().into_token_stream()
),
};
let ident = match capture.pat {
let ident = match *capture.pat {
syn::Pat::Ident(ref i) => &i.ident,
_ => panic!("must have bare arguments"),
};
if let Some(&(_, ref tts)) = invoc.args.iter().find(|a| *ident == a.0) {
input_vals.push(quote! { #tts });
if let Some(&(_, ref tokens)) = invoc.args.iter().find(|a| *ident == a.0) {
input_vals.push(quote! { #tokens });
} else {
inputs.push(capture);
input_vals.push(quote! { #ident });
Expand All @@ -91,7 +91,6 @@ pub fn assert_instr(
.segments
.first()
.expect("attr.path.segments.first() failed")
.value()
.ident
.to_string()
.starts_with("target")
Expand Down Expand Up @@ -131,7 +130,7 @@ pub fn assert_instr(
}
};

let tts: TokenStream = quote! {
let tokens: TokenStream = quote! {
#[cfg_attr(target_arch = "wasm32", wasm_bindgen_test)]
#[cfg_attr(not(target_arch = "wasm32"), test)]
#[allow(non_snake_case)]
Expand All @@ -148,13 +147,16 @@ pub fn assert_instr(
}
};
// why? necessary now to get tests to work?
let tts: TokenStream = tts.to_string().parse().expect("cannot parse tokenstream");
let tokens: TokenStream = tokens
.to_string()
.parse()
.expect("cannot parse tokenstream");

let tts: TokenStream = quote! {
let tokens: TokenStream = quote! {
#item
#tts
#tokens
};
tts.into()
tokens.into()
}

struct Invoc {
Expand All @@ -163,7 +165,7 @@ struct Invoc {
}

impl syn::parse::Parse for Invoc {
fn parse(input: syn::parse::ParseStream) -> syn::parse::Result<Self> {
fn parse(input: syn::parse::ParseStream) -> syn::Result<Self> {
use syn::{ext::IdentExt, Token};

let mut instr = String::new();
Expand Down
4 changes: 2 additions & 2 deletions crates/simd-test-macro/Cargo.toml
Original file line number Diff line number Diff line change
Expand Up @@ -8,5 +8,5 @@ proc-macro = true
test = false

[dependencies]
proc-macro2 = { version = "0.4", features = ["nightly"] }
quote = "0.6"
proc-macro2 = "1.0"
quote = "1.0"
6 changes: 3 additions & 3 deletions crates/stdarch-verify/Cargo.toml
Original file line number Diff line number Diff line change
Expand Up @@ -5,9 +5,9 @@ authors = ["Alex Crichton <[email protected]>"]
edition = "2018"

[dependencies]
proc-macro2 = "0.4"
quote = "0.6"
syn = { version = "0.15", features = ["full"] }
proc-macro2 = "1.0"
quote = "1.0"
syn = { version = "1.0", features = ["full"] }

[lib]
proc-macro = true
Expand Down
46 changes: 20 additions & 26 deletions crates/stdarch-verify/src/lib.rs
Original file line number Diff line number Diff line change
Expand Up @@ -6,7 +6,6 @@ extern crate quote;
extern crate syn;

use proc_macro::TokenStream;
use proc_macro2::Span;
use std::{fs::File, io::Read, path::Path};
use syn::ext::IdentExt;

Expand Down Expand Up @@ -57,7 +56,7 @@ fn functions(input: TokenStream, dirs: &[&str]) -> TokenStream {

let mut tests = std::collections::HashSet::<String>::new();
for f in &functions {
let id = format!("{}", f.0.ident);
let id = format!("{}", f.0.sig.ident);
if id.starts_with("test_") {
tests.insert(id);
}
Expand All @@ -66,7 +65,7 @@ fn functions(input: TokenStream, dirs: &[&str]) -> TokenStream {

functions.retain(|&(ref f, _)| {
if let syn::Visibility::Public(_) = f.vis {
if f.unsafety.is_some() {
if f.sig.unsafety.is_some() {
return true;
}
}
Expand All @@ -79,17 +78,17 @@ fn functions(input: TokenStream, dirs: &[&str]) -> TokenStream {
let functions = functions
.iter()
.map(|&(ref f, path)| {
let name = &f.ident;
let name = &f.sig.ident;
// println!("{}", name);
let mut arguments = Vec::new();
for input in f.decl.inputs.iter() {
for input in f.sig.inputs.iter() {
let ty = match *input {
syn::FnArg::Captured(ref c) => &c.ty,
syn::FnArg::Typed(ref c) => &c.ty,
_ => panic!("invalid argument on {}", name),
};
arguments.push(to_type(ty));
}
let ret = match f.decl.output {
let ret = match f.sig.output {
syn::ReturnType::Default => quote! { None },
syn::ReturnType::Type(_, ref t) => {
let ty = to_type(t);
Expand Down Expand Up @@ -261,20 +260,13 @@ fn extract_path_ident(path: &syn::Path) -> syn::Ident {
if path.segments.len() != 1 {
panic!("unsupported path that needs name resolution")
}
match path
.segments
.first()
.expect("segment not found")
.value()
.arguments
{
match path.segments.first().expect("segment not found").arguments {
syn::PathArguments::None => {}
_ => panic!("unsupported path that has path arguments"),
}
path.segments
.first()
.expect("segment not found")
.value()
.ident
.clone()
}
Expand Down Expand Up @@ -318,7 +310,7 @@ fn find_instrs(attrs: &[syn::Attribute]) -> Vec<String> {
// TODO: should probably just reuse `Invoc` from the `assert-instr-macro`
// crate.
impl syn::parse::Parse for AssertInstr {
fn parse(content: syn::parse::ParseStream) -> syn::parse::Result<Self> {
fn parse(content: syn::parse::ParseStream) -> syn::Result<Self> {
let input;
parenthesized!(input in content);
let _ = input.parse::<syn::Meta>()?;
Expand Down Expand Up @@ -352,9 +344,9 @@ fn find_instrs(attrs: &[syn::Attribute]) -> Vec<String> {

attrs
.iter()
.filter(|a| a.path == syn::Ident::new("cfg_attr", Span::call_site()).into())
.filter(|a| a.path.is_ident("cfg_attr"))
.filter_map(|a| {
syn::parse2::<AssertInstr>(a.tts.clone())
syn::parse2::<AssertInstr>(a.tokens.clone())
.ok()
.map(|a| a.instr)
})
Expand All @@ -365,9 +357,9 @@ fn find_target_feature(attrs: &[syn::Attribute]) -> Option<syn::Lit> {
attrs
.iter()
.flat_map(|a| {
if let Some(a) = a.interpret_meta() {
if let Ok(a) = a.parse_meta() {
if let syn::Meta::List(i) = a {
if i.ident == "target_feature" {
if i.path.is_ident("target_feature") {
return i.nested;
}
}
Expand All @@ -376,10 +368,10 @@ fn find_target_feature(attrs: &[syn::Attribute]) -> Option<syn::Lit> {
})
.filter_map(|nested| match nested {
syn::NestedMeta::Meta(m) => Some(m),
syn::NestedMeta::Literal(_) => None,
syn::NestedMeta::Lit(_) => None,
})
.find_map(|m| match m {
syn::Meta::NameValue(ref i) if i.ident == "enable" => Some(i.clone().lit),
syn::Meta::NameValue(ref i) if i.path.is_ident("enable") => Some(i.clone().lit),
_ => None,
})
}
Expand All @@ -389,7 +381,7 @@ fn find_required_const(attrs: &[syn::Attribute]) -> Vec<usize> {
.iter()
.flat_map(|a| {
if a.path.segments[0].ident == "rustc_args_required_const" {
syn::parse::<RustcArgsRequiredConst>(a.tts.clone().into())
syn::parse::<RustcArgsRequiredConst>(a.tokens.clone().into())
.unwrap()
.args
} else {
Expand All @@ -404,14 +396,16 @@ struct RustcArgsRequiredConst {
}

impl syn::parse::Parse for RustcArgsRequiredConst {
#[allow(clippy::cast_possible_truncation)]
fn parse(input: syn::parse::ParseStream) -> syn::parse::Result<Self> {
fn parse(input: syn::parse::ParseStream) -> syn::Result<Self> {
let content;
parenthesized!(content in input);
let list =
syn::punctuated::Punctuated::<syn::LitInt, Token![,]>::parse_terminated(&content)?;
Ok(Self {
args: list.into_iter().map(|a| a.value() as usize).collect(),
args: list
.into_iter()
.map(|a| a.base10_parse::<usize>())
.collect::<syn::Result<_>>()?,
})
}
}