Upgrade rust/crates/syn-mid to 0.5.3

Test: make
Change-Id: I9fafbdf57af78608fe7a3284bb4d5a9fba5b1aca
diff --git a/.cargo_vcs_info.json b/.cargo_vcs_info.json
index 0a9485e..ea91f75 100644
--- a/.cargo_vcs_info.json
+++ b/.cargo_vcs_info.json
@@ -1,5 +1,5 @@
 {
   "git": {
-    "sha1": "cfaea705004ac99a16ece15de392541f20312f12"
+    "sha1": "6a4dcb4b7c3bcb2ad086745bc88515a6756e3edc"
   }
 }
diff --git a/.clippy.toml b/.clippy.toml
new file mode 100644
index 0000000..422beeb
--- /dev/null
+++ b/.clippy.toml
@@ -0,0 +1 @@
+msrv = "1.31"
diff --git a/.editorconfig b/.editorconfig
index c93ffc7..a73a88d 100644
--- a/.editorconfig
+++ b/.editorconfig
@@ -1,16 +1,20 @@
 # EditorConfig configuration
 # https://editorconfig.org
 
-# Top-most EditorConfig file
 root = true
 
 [*]
+charset = utf-8
 end_of_line = lf
+indent_size = 4
+indent_style = space
 insert_final_newline = true
 trim_trailing_whitespace = true
-charset = utf-8
-indent_style = space
-indent_size = 4
 
 [*.{json,yml,md}]
 indent_size = 2
+
+[*.sh]
+indent_size = 2
+binary_next_line = true
+switch_case_indent = true
diff --git a/.gitattributes b/.gitattributes
index 45bca84..6313b56 100644
--- a/.gitattributes
+++ b/.gitattributes
@@ -1,4 +1 @@
-[attr]rust text eol=lf whitespace=tab-in-indent,trailing-space,tabwidth=4
-
 * text=auto eol=lf
-*.rs rust
diff --git a/.github/CODEOWNERS b/.github/CODEOWNERS
deleted file mode 100644
index 2fdc28f..0000000
--- a/.github/CODEOWNERS
+++ /dev/null
@@ -1 +0,0 @@
-* @taiki-e
diff --git a/.github/bors.toml b/.github/bors.toml
deleted file mode 100644
index 1779788..0000000
--- a/.github/bors.toml
+++ /dev/null
@@ -1,2 +0,0 @@
-status = ["ci"]
-delete_merged_branches = true
diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml
deleted file mode 100644
index 510417e..0000000
--- a/.github/workflows/ci.yml
+++ /dev/null
@@ -1,134 +0,0 @@
-name: CI
-
-on:
-  pull_request:
-  push:
-    branches:
-      - master
-      - staging
-      - trying
-  schedule:
-    - cron: '0 1 * * *'
-
-env:
-  RUSTFLAGS: -Dwarnings
-  RUST_BACKTRACE: 1
-
-defaults:
-  run:
-    shell: bash
-
-jobs:
-  test:
-    name: test
-    strategy:
-      matrix:
-        rust:
-          # This is the minimum supported Rust version of this crate.
-          # When updating this, the reminder to update the minimum supported Rust version in README.md.
-          - 1.31.0
-          - stable
-          - beta
-          - nightly
-    runs-on: ubuntu-latest
-    steps:
-      - uses: actions/checkout@v2
-      - name: Install Rust
-        run: ci/install-rust.sh ${{ matrix.rust }}
-      - name: Install cargo-hack
-        if: matrix.rust != '1.31.0'
-        run: |
-          cargo install cargo-hack
-      - name: cargo check
-        if: matrix.rust == '1.31.0'
-        run: |
-          cargo check --all-features
-      - name: cargo test
-        if: matrix.rust != '1.31.0'
-        run: |
-          cargo test --all-features
-      - name: cargo hack check --each-feature
-        if: matrix.rust != '1.31.0'
-        run: |
-          cargo hack check --all --each-feature --no-dev-deps
-      - name: cargo check (minimal versions)
-        if: matrix.rust == 'nightly'
-        run: |
-          bash scripts/check-minimal-versions.sh
-
-  clippy:
-    name: clippy
-    runs-on: ubuntu-latest
-    steps:
-      - uses: actions/checkout@v2
-      - name: Install Rust and Clippy
-        run: ci/install-component.sh clippy
-      - name: cargo clippy
-        run: |
-          cargo clippy --all --all-features --all-targets
-
-  rustfmt:
-    name: rustfmt
-    runs-on: ubuntu-latest
-    steps:
-      - uses: actions/checkout@v2
-      - name: Install Rust and Rustfmt
-        run: ci/install-component.sh rustfmt
-      - name: cargo fmt --check
-        run: |
-          cargo fmt --all -- --check
-
-  rustdoc:
-    name: rustdoc
-    env:
-      RUSTDOCFLAGS: -Dwarnings
-    runs-on: ubuntu-latest
-    steps:
-      - uses: actions/checkout@v2
-      - name: Install Rust
-        run: ci/install-rust.sh
-      - name: cargo doc
-        run: |
-          cargo doc --no-deps --all --all-features
-
-  shellcheck:
-    name: shellcheck
-    runs-on: ubuntu-latest
-    steps:
-      - uses: actions/checkout@v2
-      - name: shellcheck
-        run: |
-          shellcheck ci/*.sh scripts/*.sh
-
-  # These jobs don't actually test anything, but they're used to tell bors the
-  # build completed, as there is no practical way to detect when a workflow is
-  # successful listening to webhooks only.
-  #
-  # ALL THE PREVIOUS JOBS NEEDS TO BE ADDED TO THE `needs` SECTION OF THIS JOB!
-
-  ci-success:
-    name: ci
-    if: github.event_name == 'push' && success()
-    needs:
-      - test
-      - clippy
-      - rustfmt
-      - rustdoc
-      - shellcheck
-    runs-on: ubuntu-latest
-    steps:
-      - name: Mark the job as a success
-        run: exit 0
-  ci-failure:
-    name: ci
-    if: github.event_name == 'push' && !success()
-    needs:
-      - test
-      - clippy
-      - rustfmt
-      - rustdoc
-      - shellcheck
-    runs-on: ubuntu-latest
-    steps:
-      - name: Mark the job as a failure
-        run: exit 1
diff --git a/rustfmt.toml b/.rustfmt.toml
similarity index 79%
rename from rustfmt.toml
rename to .rustfmt.toml
index 18c6d2a..6604f5c 100644
--- a/rustfmt.toml
+++ b/.rustfmt.toml
@@ -1,10 +1,11 @@
 # Rustfmt configuration
-# https://github.com/rust-lang/rustfmt/blob/master/Configurations.md
+# https://github.com/rust-lang/rustfmt/blob/HEAD/Configurations.md
 
 # This is required for bug-fixes, which technically can't be made to the stable
 # first version.
 # This is unstable (tracking issue: https://github.com/rust-lang/rustfmt/issues/3383).
 version = "Two"
+# Rustfmt cannot format long lines inside macros, but this option detects this.
 # This is unstable (tracking issue: https://github.com/rust-lang/rustfmt/issues/3391)
 error_on_line_overflow = true
 
@@ -21,7 +22,13 @@
 # This is unstable (tracking issue: https://github.com/rust-lang/rustfmt/issues/3348).
 format_code_in_doc_comments = true
 
+# Automatically fix deprecated style.
+use_field_init_shorthand = true
+use_try_shorthand = true
+
 # Set the default settings again to always apply the proper formatting without
 # being affected by the editor settings.
 edition = "2018"
+hard_tabs = false
+newline_style = "Unix"
 tab_spaces = 4
diff --git a/Android.bp b/Android.bp
index 87fcda0..f6095e2 100644
--- a/Android.bp
+++ b/Android.bp
@@ -29,6 +29,6 @@
 
 // dependent_library ["feature_list"]
 //   proc-macro2-1.0.24
-//   quote-1.0.7
-//   syn-1.0.48 "derive,parsing,printing,quote"
+//   quote-1.0.8
+//   syn-1.0.58 "derive,parsing,printing,quote"
 //   unicode-xid-0.2.1 "default"
diff --git a/CHANGELOG.md b/CHANGELOG.md
index 9b17ce1..6eafa2e 100644
--- a/CHANGELOG.md
+++ b/CHANGELOG.md
@@ -4,55 +4,71 @@
 
 This project adheres to [Semantic Versioning](https://semver.org).
 
+<!--
+Note: In this file, do not use the hard wrap in the middle of a sentence for compatibility with GitHub comment style markdown rendering.
+-->
+
 ## [Unreleased]
 
+## [0.5.3] - 2021-01-05
+
+- Exclude unneeded files from crates.io.
+
+## [0.5.2] - 2020-12-29
+
+- Documentation improvements.
+
 ## [0.5.1] - 2020-10-14
 
-* Implement `Parse` for `Signature`.
+- Implement `Parse` for `Signature`.
 
-* Update parser implementations based on `syn` 1.0.44. This includes some bugfixes.
+- Update parser implementations based on `syn` 1.0.44. This includes some bugfixes.
 
-* Disable default features of `proc-macro2` and `quote`.
+- Disable default features of `proc-macro2` and `quote`.
 
 ## [0.5.0] - 2019-12-09
 
-* [Added `Signature` type.][13]
+- [Added `Signature` type.][13]
 
 [13]: https://github.com/taiki-e/syn-mid/pull/13
 
 ## [0.4.0] - 2019-08-15
 
-* Updated all data structures based on `syn` 1.0.
+- Updated all data structures based on `syn` 1.0.
 
-* Updated `proc-macro2`, `syn`, and `quote` to 1.0.
+- Updated `proc-macro2`, `syn`, and `quote` to 1.0.
 
-* Bumped the minimum required version from Rust 1.30 to Rust 1.31.
+- Bumped the minimum required version from Rust 1.30 to Rust 1.31.
 
 ## [0.3.0] - 2019-02-18
 
-* Removed support for unneeded syntax.
+- Removed support for unneeded syntax.
 
-* Removed unneeded types and fields.
+- Removed unneeded types and fields.
 
-* Implemented `Parse` for `Block`.
+- Implemented `Parse` for `Block`.
 
-* Changed `clone-impls` feature to "disabled by default".
+- Changed `clone-impls` feature to "disabled by default".
 
-* Removed `extra-traits` feature.
+- Removed `extra-traits` feature.
 
-* Bumped the minimum required version from Rust 1.15 to Rust 1.30.
+- Bumped the minimum required version from Rust 1.15 to Rust 1.30.
 
 ## [0.2.0] - 2019-02-15
 
-* Reduced features.
+- Reduced features.
 
-* Fixed bugs.
+- Fixed bugs.
 
-## [0.1.0] - 2019-02-14 - YANKED
+## [0.1.0] - 2019-02-14
+
+**Note: This release has been yanked.**
 
 Initial release
 
-[Unreleased]: https://github.com/taiki-e/syn-mid/compare/v0.5.1...HEAD
+[Unreleased]: https://github.com/taiki-e/syn-mid/compare/v0.5.3...HEAD
+[0.5.3]: https://github.com/taiki-e/syn-mid/compare/v0.5.2...v0.5.3
+[0.5.2]: https://github.com/taiki-e/syn-mid/compare/v0.5.1...v0.5.2
 [0.5.1]: https://github.com/taiki-e/syn-mid/compare/v0.5.0...v0.5.1
 [0.5.0]: https://github.com/taiki-e/syn-mid/compare/v0.4.0...v0.5.0
 [0.4.0]: https://github.com/taiki-e/syn-mid/compare/v0.3.0...v0.4.0
diff --git a/CODE_OF_CONDUCT.md b/CODE_OF_CONDUCT.md
deleted file mode 100644
index 70c2090..0000000
--- a/CODE_OF_CONDUCT.md
+++ /dev/null
@@ -1,9 +0,0 @@
-# Code of Conduct
-
-This project adheres to the [Rust Code of Conduct].
-
-## Enforcement
-
-If you believe someone is violating the code of conduct, we ask that you report it by contacting taiki-e (te316e89@gmail.com).
-
-[Rust Code of Conduct]: https://www.rust-lang.org/policies/code-of-conduct
diff --git a/Cargo.toml b/Cargo.toml
index d4bceb9..422755b 100644
--- a/Cargo.toml
+++ b/Cargo.toml
@@ -13,10 +13,10 @@
 [package]
 edition = "2018"
 name = "syn-mid"
-version = "0.5.1"
+version = "0.5.3"
 authors = ["Taiki Endo <te316e89@gmail.com>"]
+exclude = ["/.github", "/scripts"]
 description = "Providing the features between \"full\" and \"derive\" of syn.\n"
-homepage = "https://github.com/taiki-e/syn-mid"
 documentation = "https://docs.rs/syn-mid"
 readme = "README.md"
 keywords = ["syn", "macros"]
diff --git a/Cargo.toml.orig b/Cargo.toml.orig
index 8712673..965c63a 100644
--- a/Cargo.toml.orig
+++ b/Cargo.toml.orig
@@ -1,15 +1,15 @@
 [package]
 name = "syn-mid"
-version = "0.5.1"
+version = "0.5.3"
 authors = ["Taiki Endo <te316e89@gmail.com>"]
 edition = "2018"
 license = "Apache-2.0 OR MIT"
 repository = "https://github.com/taiki-e/syn-mid"
-homepage = "https://github.com/taiki-e/syn-mid"
 documentation = "https://docs.rs/syn-mid"
 keywords = ["syn", "macros"]
 categories = ["development-tools::procedural-macro-helpers"]
 readme = "README.md"
+exclude = ["/.github", "/scripts"]
 description = """
 Providing the features between \"full\" and \"derive\" of syn.
 """
@@ -24,6 +24,7 @@
 [features]
 clone-impls = ["syn/clone-impls"]
 
+# NB: proc-macro2, quote, and syn are public dependencies.
 [dependencies]
 proc-macro2 = { version = "1", default-features = false }
 quote = { version = "1", default-features = false }
diff --git a/METADATA b/METADATA
index b7d6e2a..540870e 100644
--- a/METADATA
+++ b/METADATA
@@ -7,13 +7,13 @@
   }
   url {
     type: ARCHIVE
-    value: "https://static.crates.io/crates/syn-mid/syn-mid-0.5.1.crate"
+    value: "https://static.crates.io/crates/syn-mid/syn-mid-0.5.3.crate"
   }
-  version: "0.5.1"
+  version: "0.5.3"
   license_type: NOTICE
   last_upgrade_date {
-    year: 2020
-    month: 10
-    day: 26
+    year: 2021
+    month: 1
+    day: 5
   }
 }
diff --git a/README.md b/README.md
index fe93e5c..87ce628 100644
--- a/README.md
+++ b/README.md
@@ -1,38 +1,32 @@
 # syn-mid
 
-[![crates-badge]][crates-url]
-[![docs-badge]][docs-url]
-[![license-badge]][license]
-[![rustc-badge]][rustc-url]
-
-[crates-badge]: https://img.shields.io/crates/v/syn-mid.svg
-[crates-url]: https://crates.io/crates/syn-mid
-[docs-badge]: https://docs.rs/syn-mid/badge.svg
-[docs-url]: https://docs.rs/syn-mid
-[license-badge]: https://img.shields.io/badge/license-Apache--2.0%20OR%20MIT-blue.svg
-[license]: #license
-[rustc-badge]: https://img.shields.io/badge/rustc-1.31+-lightgray.svg
-[rustc-url]: https://blog.rust-lang.org/2018/12/06/Rust-1.31-and-rust-2018.html
+[![crates.io](https://img.shields.io/crates/v/syn-mid.svg?style=flat-square&logo=rust)](https://crates.io/crates/syn-mid)
+[![docs.rs](https://img.shields.io/badge/docs.rs-syn--mid-blue?style=flat-square)](https://docs.rs/syn-mid)
+[![license](https://img.shields.io/badge/license-Apache--2.0_OR_MIT-blue.svg?style=flat-square)](#license)
+[![rustc](https://img.shields.io/badge/rustc-1.31+-blue.svg?style=flat-square)](https://www.rust-lang.org)
+[![build status](https://img.shields.io/github/workflow/status/taiki-e/syn-mid/CI/master?style=flat-square)](https://github.com/taiki-e/syn-mid/actions?query=workflow%3ACI+branch%3Amaster)
 
 Providing the features between "full" and "derive" of syn.
 
 This crate provides the following two unique data structures.
 
-* `syn_mid::ItemFn` -- A function whose body is not parsed.
+- `syn_mid::ItemFn` -- A function whose body is not parsed.
 
   ```text
   fn process(n: usize) -> Result<()> { ... }
   ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^     ^
   ```
 
-* `syn_mid::Block` -- A block whose body is not parsed.
+- `syn_mid::Block` -- A block whose body is not parsed.
 
   ```text
   { ... }
   ^     ^
   ```
 
-Other data structures are the same as data structures of [syn]. These are defined in this crate because they cannot be used in [syn] without "full" feature.
+Other data structures are the same as data structures of [syn]. These are
+defined in this crate because they cannot be used in [syn] without "full"
+feature.
 
 [syn]: https://github.com/dtolnay/syn
 
@@ -45,23 +39,19 @@
 syn-mid = "0.5"
 ```
 
-The current syn-mid requires Rust 1.31 or later.
+*Compiler support: requires rustc 1.31+*
 
 [**Examples**](examples)
 
 ## Optional features
 
-* **`clone-impls`** — Clone impls for all syntax tree types.
+- **`clone-impls`** — Clone impls for all syntax tree types.
 
 ## License
 
-Licensed under either of
+Licensed under either of [Apache License, Version 2.0](LICENSE-APACHE) or
+[MIT license](LICENSE-MIT) at your option.
 
-* Apache License, Version 2.0, ([LICENSE-APACHE](LICENSE-APACHE) or <http://www.apache.org/licenses/LICENSE-2.0>)
-* MIT license ([LICENSE-MIT](LICENSE-MIT) or <http://opensource.org/licenses/MIT>)
-
-at your option.
-
-### Contribution
-
-Unless you explicitly state otherwise, any contribution intentionally submitted for inclusion in the work by you, as defined in the Apache-2.0 license, shall be dual licensed as above, without any additional terms or conditions.
+Unless you explicitly state otherwise, any contribution intentionally submitted
+for inclusion in the work by you, as defined in the Apache-2.0 license, shall
+be dual licensed as above, without any additional terms or conditions.
diff --git a/ci/install-component.sh b/ci/install-component.sh
deleted file mode 100755
index dbba7b1..0000000
--- a/ci/install-component.sh
+++ /dev/null
@@ -1,27 +0,0 @@
-#!/bin/bash
-
-# Install nightly Rust with a given component.
-#
-# If the component is unavailable on the latest nightly,
-# use the latest toolchain with the component available.
-#
-# When using stable Rust, this script is basically unnecessary as almost components available.
-#
-# Refs: https://github.com/rust-lang/rustup-components-history#the-web-part
-
-set -euo pipefail
-
-package="${1:?}"
-target="${2:-x86_64-unknown-linux-gnu}"
-
-date=$(curl -sSf https://rust-lang.github.io/rustup-components-history/"${target}"/"${package}")
-
-# shellcheck disable=1090
-"$(cd "$(dirname "${0}")" && pwd)"/install-rust.sh nightly-"${date}"
-
-rustup component add "${package}"
-
-case "${package}" in
-    rustfmt) "${package}" -V ;;
-    *) cargo "${package}" -V ;;
-esac
diff --git a/ci/install-rust.sh b/ci/install-rust.sh
deleted file mode 100755
index 92c5877..0000000
--- a/ci/install-rust.sh
+++ /dev/null
@@ -1,12 +0,0 @@
-#!/bin/bash
-
-set -euo pipefail
-
-toolchain="${1:-nightly}"
-
-rustup toolchain install "${toolchain}" --no-self-update --profile minimal
-rustup default "${toolchain}"
-
-rustup -V
-rustc -V
-cargo -V
diff --git a/scripts/README.md b/scripts/README.md
deleted file mode 100644
index 671a9b1..0000000
--- a/scripts/README.md
+++ /dev/null
@@ -1,3 +0,0 @@
-This directory contains scripts used by the developers of this project.
-
-Some scripts in this directory are also used in CI, but scripts intended to be used only in CI and scripts not intended to be used directly by the developers are basically in the `ci` directory.
diff --git a/scripts/check-minimal-versions.sh b/scripts/check-minimal-versions.sh
deleted file mode 100755
index 6c7fa7b..0000000
--- a/scripts/check-minimal-versions.sh
+++ /dev/null
@@ -1,44 +0,0 @@
-#!/bin/bash
-
-# Check all public crates with minimal version dependencies.
-#
-# Usage:
-#    bash scripts/check-minimal-versions.sh
-#
-# Note:
-# - This script modifies Cargo.toml and Cargo.lock while running
-# - This script exits with 1 if there are any unstaged changes
-# - This script requires nightly Rust and cargo-hack
-#
-# Refs: https://github.com/rust-lang/cargo/issues/5657
-
-set -euo pipefail
-
-cd "$(cd "$(dirname "${0}")" && pwd)"/..
-
-if [[ "${1:-none}" == "+"* ]]; then
-    toolchain="${1}"
-elif [[ "${CI:-false}" != "true" ]]; then
-    cargo +nightly -V >/dev/null || exit 1
-    toolchain="+nightly"
-fi
-
-if [[ "${toolchain:-+nightly}" != "+nightly"* ]] || ! cargo hack -V &>/dev/null; then
-    echo "error: check-minimal-versions.sh requires nightly Rust and cargo-hack"
-    exit 1
-fi
-
-# This script modifies Cargo.toml and Cargo.lock, so make sure there are no
-# unstaged changes.
-git diff --exit-code
-# Restore original Cargo.toml and Cargo.lock on exit.
-trap 'git checkout .' EXIT
-
-# Remove dev-dependencies from Cargo.toml to prevent the next `cargo update`
-# from determining minimal versions based on dev-dependencies.
-cargo hack --remove-dev-deps --workspace
-
-# Update Cargo.lock to minimal version dependencies.
-cargo ${toolchain:-} update -Zminimal-versions
-# Run check for all public members of the workspace.
-cargo ${toolchain:-} hack check --workspace --all-features --ignore-private -Zfeatures=all
diff --git a/src/func.rs b/src/func.rs
index 19336f3..a53e63b 100644
--- a/src/func.rs
+++ b/src/func.rs
@@ -85,6 +85,17 @@
 
     impl Parse for Signature {
         fn parse(input: ParseStream<'_>) -> Result<Self> {
+            fn get_variadic(input: &&FnArg) -> Option<Variadic> {
+                if let FnArg::Typed(PatType { ty, .. }) = input {
+                    if let Type::Verbatim(tokens) = &**ty {
+                        if let Ok(dots) = parse2(tokens.clone()) {
+                            return Some(Variadic { attrs: Vec::new(), dots });
+                        }
+                    }
+                }
+                None
+            }
+
             let constness: Option<Token![const]> = input.parse()?;
             let asyncness: Option<Token![async]> = input.parse()?;
             let unsafety: Option<Token![unsafe]> = input.parse()?;
@@ -98,17 +109,6 @@
             let inputs = content.parse_terminated(FnArg::parse)?;
             let variadic = inputs.last().as_ref().and_then(get_variadic);
 
-            fn get_variadic(input: &&FnArg) -> Option<Variadic> {
-                if let FnArg::Typed(PatType { ty, .. }) = input {
-                    if let Type::Verbatim(tokens) = &**ty {
-                        if let Ok(dots) = parse2(tokens.clone()) {
-                            return Some(Variadic { attrs: Vec::new(), dots });
-                        }
-                    }
-                }
-                None
-            }
-
             let output: ReturnType = input.parse()?;
             generics.where_clause = input.parse()?;
 
diff --git a/src/lib.rs b/src/lib.rs
index 4c271ea..ca490cf 100644
--- a/src/lib.rs
+++ b/src/lib.rs
@@ -16,34 +16,28 @@
 //!   ^     ^
 //!   ```
 //!
-//! Other data structures are the same as data structures of [syn]. These are defined in this crate
-//! because they cannot be used in [syn] without "full" feature.
+//! Other data structures are the same as data structures of [syn]. These are
+//! defined in this crate because they cannot be used in [syn] without "full"
+//! feature.
 //!
 //! # Optional features
 //!
-//! syn-mid in the default features aims to provide the features between "full"
-//! and "derive" of [syn].
-//!
 //! * **`clone-impls`** — Clone impls for all syntax tree types.
 //!
 //! [`syn_mid::ItemFn`]: ItemFn
 //! [`syn_mid::Block`]: Block
 //! [syn]: https://github.com/dtolnay/syn
 
-#![doc(html_root_url = "https://docs.rs/syn-mid/0.5.1")]
 #![doc(test(
     no_crate_inject,
-    attr(deny(warnings, rust_2018_idioms, single_use_lifetimes), allow(dead_code))
+    attr(
+        deny(warnings, rust_2018_idioms, single_use_lifetimes),
+        allow(dead_code, unused_variables)
+    )
 ))]
 #![forbid(unsafe_code)]
 #![warn(future_incompatible, rust_2018_idioms, single_use_lifetimes, unreachable_pub)]
 #![warn(clippy::all, clippy::default_trait_access)]
-// mem::take and #[non_exhaustive] requires Rust 1.40, matches! requires Rust 1.42
-#![allow(
-    clippy::mem_replace_with_default,
-    clippy::manual_non_exhaustive,
-    clippy::match_like_matches_macro
-)]
 #![allow(clippy::eval_order_dependence, clippy::large_enum_variant)]
 
 // Many of the code contained in this crate are copies from https://github.com/dtolnay/syn.