diff --git a/.cargo_vcs_info.json b/.cargo_vcs_info.json
new file mode 100644
index 0000000..c5b6105
--- /dev/null
+++ b/.cargo_vcs_info.json
@@ -0,0 +1,5 @@
+{
+  "git": {
+    "sha1": "727436c6c137b20f0f34dde5d8fda2679b9747ad"
+  }
+}
diff --git a/.gitignore b/.gitignore
deleted file mode 100644
index 4fffb2f..0000000
--- a/.gitignore
+++ /dev/null
@@ -1,2 +0,0 @@
-/target
-/Cargo.lock
diff --git a/.travis.yml b/.travis.yml
deleted file mode 100644
index 7182d9b..0000000
--- a/.travis.yml
+++ /dev/null
@@ -1,18 +0,0 @@
-sudo: false
-
-language: rust
-
-rust:
-  - stable
-  - 1.31.0
-  - beta
-
-script:
-  - cargo test
-
-matrix:
-  include:
-    - rust: nightly
-      script:
-        - cargo test
-        - cargo update -Z minimal-versions && cargo build
diff --git a/Android.bp b/Android.bp
index f0f6261..2a3cb09 100644
--- a/Android.bp
+++ b/Android.bp
@@ -1,9 +1,15 @@
-rust_library_rlib {
+// This file is generated by cargo2android.py.
+
+rust_library_host_rlib {
     name: "libquote",
-    host_supported: true,
     crate_name: "quote",
     srcs: ["src/lib.rs"],
-    rlibs: ["libproc_macro2"],
-    features: ["proc-macro"],
     edition: "2018",
+    features: [
+        "default",
+        "proc-macro",
+    ],
+    rlibs: [
+        "libproc_macro2",
+    ],
 }
diff --git a/Cargo.toml b/Cargo.toml
index c052022..a7a956d 100644
--- a/Cargo.toml
+++ b/Cargo.toml
@@ -1,32 +1,42 @@
+# THIS FILE IS AUTOMATICALLY GENERATED BY CARGO
+#
+# When uploading crates to the registry Cargo will automatically
+# "normalize" Cargo.toml files for maximal compatibility
+# with all versions of Cargo and also rewrite `path` dependencies
+# to registry (e.g., crates.io) dependencies
+#
+# If you believe there's an error in this file please file an
+# issue against the rust-lang/cargo repository. If you're
+# editing this file be aware that the upstream Cargo.toml
+# will likely look very different (and much more reasonable)
+
 [package]
+edition = "2018"
 name = "quote"
-version = "1.0.2" # don't forget to update html_root_url, version in readme for breaking changes
+version = "1.0.2"
 authors = ["David Tolnay <dtolnay@gmail.com>"]
-license = "MIT OR Apache-2.0"
+include = ["Cargo.toml", "src/**/*.rs", "tests/**/*.rs", "README.md", "LICENSE-APACHE", "LICENSE-MIT"]
 description = "Quasi-quoting macro quote!(...)"
-repository = "https://github.com/dtolnay/quote"
 documentation = "https://docs.rs/quote/"
+readme = "README.md"
 keywords = ["syn"]
 categories = ["development-tools::procedural-macro-helpers"]
-readme = "README.md"
-include = ["Cargo.toml", "src/**/*.rs", "tests/**/*.rs", "README.md", "LICENSE-APACHE", "LICENSE-MIT"]
-edition = "2018"
+license = "MIT OR Apache-2.0"
+repository = "https://github.com/dtolnay/quote"
 
 [lib]
 name = "quote"
+[dependencies.proc-macro2]
+version = "1.0"
+default-features = false
+[dev-dependencies.rustversion]
+version = "0.1"
 
-[dependencies]
-proc-macro2 = { version = "1.0", default-features = false }
-
-[dev-dependencies]
-rustversion = "0.1"
-trybuild = "1.0"
+[dev-dependencies.trybuild]
+version = "1.0"
 
 [features]
 default = ["proc-macro"]
-# Disabling the proc-macro feature removes the dynamic library dependency on
-# libproc_macro in the rustc compiler.
 proc-macro = ["proc-macro2/proc-macro"]
-
-[badges]
-travis-ci = { repository = "dtolnay/quote" }
+[badges.travis-ci]
+repository = "dtolnay/quote"
diff --git a/Cargo.toml.orig b/Cargo.toml.orig
new file mode 100644
index 0000000..c052022
--- /dev/null
+++ b/Cargo.toml.orig
@@ -0,0 +1,32 @@
+[package]
+name = "quote"
+version = "1.0.2" # don't forget to update html_root_url, version in readme for breaking changes
+authors = ["David Tolnay <dtolnay@gmail.com>"]
+license = "MIT OR Apache-2.0"
+description = "Quasi-quoting macro quote!(...)"
+repository = "https://github.com/dtolnay/quote"
+documentation = "https://docs.rs/quote/"
+keywords = ["syn"]
+categories = ["development-tools::procedural-macro-helpers"]
+readme = "README.md"
+include = ["Cargo.toml", "src/**/*.rs", "tests/**/*.rs", "README.md", "LICENSE-APACHE", "LICENSE-MIT"]
+edition = "2018"
+
+[lib]
+name = "quote"
+
+[dependencies]
+proc-macro2 = { version = "1.0", default-features = false }
+
+[dev-dependencies]
+rustversion = "0.1"
+trybuild = "1.0"
+
+[features]
+default = ["proc-macro"]
+# Disabling the proc-macro feature removes the dynamic library dependency on
+# libproc_macro in the rustc compiler.
+proc-macro = ["proc-macro2/proc-macro"]
+
+[badges]
+travis-ci = { repository = "dtolnay/quote" }
diff --git a/benches/bench.rs b/benches/bench.rs
deleted file mode 100644
index c76a638..0000000
--- a/benches/bench.rs
+++ /dev/null
@@ -1,193 +0,0 @@
-#![feature(test)]
-#![recursion_limit = "512"]
-
-extern crate test;
-
-use quote::quote;
-use test::Bencher;
-
-#[bench]
-fn bench_impl(b: &mut Bencher) {
-    b.iter(|| {
-        quote! {
-            impl<'de> _serde::Deserialize<'de> for Response {
-                fn deserialize<__D>(__deserializer: __D) -> _serde::export::Result<Self, __D::Error>
-                where
-                    __D: _serde::Deserializer<'de>,
-                {
-                    #[allow(non_camel_case_types)]
-                    enum __Field {
-                        __field0,
-                        __field1,
-                        __ignore,
-                    }
-                    struct __FieldVisitor;
-                    impl<'de> _serde::de::Visitor<'de> for __FieldVisitor {
-                        type Value = __Field;
-                        fn expecting(
-                            &self,
-                            __formatter: &mut _serde::export::Formatter,
-                        ) -> _serde::export::fmt::Result {
-                            _serde::export::Formatter::write_str(__formatter, "field identifier")
-                        }
-                        fn visit_u64<__E>(self, __value: u64) -> _serde::export::Result<Self::Value, __E>
-                        where
-                            __E: _serde::de::Error,
-                        {
-                            match __value {
-                                0u64 => _serde::export::Ok(__Field::__field0),
-                                1u64 => _serde::export::Ok(__Field::__field1),
-                                _ => _serde::export::Err(_serde::de::Error::invalid_value(
-                                    _serde::de::Unexpected::Unsigned(__value),
-                                    &"field index 0 <= i < 2",
-                                )),
-                            }
-                        }
-                        fn visit_str<__E>(self, __value: &str) -> _serde::export::Result<Self::Value, __E>
-                        where
-                            __E: _serde::de::Error,
-                        {
-                            match __value {
-                                "id" => _serde::export::Ok(__Field::__field0),
-                                "s" => _serde::export::Ok(__Field::__field1),
-                                _ => _serde::export::Ok(__Field::__ignore),
-                            }
-                        }
-                        fn visit_bytes<__E>(
-                            self,
-                            __value: &[u8],
-                        ) -> _serde::export::Result<Self::Value, __E>
-                        where
-                            __E: _serde::de::Error,
-                        {
-                            match __value {
-                                b"id" => _serde::export::Ok(__Field::__field0),
-                                b"s" => _serde::export::Ok(__Field::__field1),
-                                _ => _serde::export::Ok(__Field::__ignore),
-                            }
-                        }
-                    }
-                    impl<'de> _serde::Deserialize<'de> for __Field {
-                        #[inline]
-                        fn deserialize<__D>(__deserializer: __D) -> _serde::export::Result<Self, __D::Error>
-                        where
-                            __D: _serde::Deserializer<'de>,
-                        {
-                            _serde::Deserializer::deserialize_identifier(__deserializer, __FieldVisitor)
-                        }
-                    }
-                    struct __Visitor<'de> {
-                        marker: _serde::export::PhantomData<Response>,
-                        lifetime: _serde::export::PhantomData<&'de ()>,
-                    }
-                    impl<'de> _serde::de::Visitor<'de> for __Visitor<'de> {
-                        type Value = Response;
-                        fn expecting(
-                            &self,
-                            __formatter: &mut _serde::export::Formatter,
-                        ) -> _serde::export::fmt::Result {
-                            _serde::export::Formatter::write_str(__formatter, "struct Response")
-                        }
-                        #[inline]
-                        fn visit_seq<__A>(
-                            self,
-                            mut __seq: __A,
-                        ) -> _serde::export::Result<Self::Value, __A::Error>
-                        where
-                            __A: _serde::de::SeqAccess<'de>,
-                        {
-                            let __field0 =
-                                match try!(_serde::de::SeqAccess::next_element::<u64>(&mut __seq)) {
-                                    _serde::export::Some(__value) => __value,
-                                    _serde::export::None => {
-                                        return _serde::export::Err(_serde::de::Error::invalid_length(
-                                            0usize,
-                                            &"struct Response with 2 elements",
-                                        ));
-                                    }
-                                };
-                            let __field1 =
-                                match try!(_serde::de::SeqAccess::next_element::<String>(&mut __seq)) {
-                                    _serde::export::Some(__value) => __value,
-                                    _serde::export::None => {
-                                        return _serde::export::Err(_serde::de::Error::invalid_length(
-                                            1usize,
-                                            &"struct Response with 2 elements",
-                                        ));
-                                    }
-                                };
-                            _serde::export::Ok(Response {
-                                id: __field0,
-                                s: __field1,
-                            })
-                        }
-                        #[inline]
-                        fn visit_map<__A>(
-                            self,
-                            mut __map: __A,
-                        ) -> _serde::export::Result<Self::Value, __A::Error>
-                        where
-                            __A: _serde::de::MapAccess<'de>,
-                        {
-                            let mut __field0: _serde::export::Option<u64> = _serde::export::None;
-                            let mut __field1: _serde::export::Option<String> = _serde::export::None;
-                            while let _serde::export::Some(__key) =
-                                try!(_serde::de::MapAccess::next_key::<__Field>(&mut __map))
-                            {
-                                match __key {
-                                    __Field::__field0 => {
-                                        if _serde::export::Option::is_some(&__field0) {
-                                            return _serde::export::Err(
-                                                <__A::Error as _serde::de::Error>::duplicate_field("id"),
-                                            );
-                                        }
-                                        __field0 = _serde::export::Some(
-                                            try!(_serde::de::MapAccess::next_value::<u64>(&mut __map)),
-                                        );
-                                    }
-                                    __Field::__field1 => {
-                                        if _serde::export::Option::is_some(&__field1) {
-                                            return _serde::export::Err(
-                                                <__A::Error as _serde::de::Error>::duplicate_field("s"),
-                                            );
-                                        }
-                                        __field1 = _serde::export::Some(
-                                            try!(_serde::de::MapAccess::next_value::<String>(&mut __map)),
-                                        );
-                                    }
-                                    _ => {
-                                        let _ = try!(_serde::de::MapAccess::next_value::<
-                                            _serde::de::IgnoredAny,
-                                        >(&mut __map));
-                                    }
-                                }
-                            }
-                            let __field0 = match __field0 {
-                                _serde::export::Some(__field0) => __field0,
-                                _serde::export::None => try!(_serde::private::de::missing_field("id")),
-                            };
-                            let __field1 = match __field1 {
-                                _serde::export::Some(__field1) => __field1,
-                                _serde::export::None => try!(_serde::private::de::missing_field("s")),
-                            };
-                            _serde::export::Ok(Response {
-                                id: __field0,
-                                s: __field1,
-                            })
-                        }
-                    }
-                    const FIELDS: &'static [&'static str] = &["id", "s"];
-                    _serde::Deserializer::deserialize_struct(
-                        __deserializer,
-                        "Response",
-                        FIELDS,
-                        __Visitor {
-                            marker: _serde::export::PhantomData::<Response>,
-                            lifetime: _serde::export::PhantomData,
-                        },
-                    )
-                }
-            }
-        }
-    });
-}
diff --git a/tests/ui/does-not-have-iter-interpolated-dup.stderr b/tests/ui/does-not-have-iter-interpolated-dup.stderr
deleted file mode 100644
index 6ee6fdf..0000000
--- a/tests/ui/does-not-have-iter-interpolated-dup.stderr
+++ /dev/null
@@ -1,11 +0,0 @@
-error[E0308]: mismatched types
- --> $DIR/does-not-have-iter-interpolated-dup.rs:8:5
-  |
-8 |     quote!(#(#nonrep #nonrep)*);
-  |     ^^^^^^^^^^^^^^^^^^^^^^^^^^^^ expected struct `quote::__rt::HasIterator`, found struct `quote::__rt::ThereIsNoIteratorInRepetition`
-  |
-  = note: expected type `quote::__rt::HasIterator`
-             found type `quote::__rt::ThereIsNoIteratorInRepetition`
-  = note: this error originates in a macro outside of the current crate (in Nightly builds, run with -Z external-macro-backtrace for more info)
-
-For more information about this error, try `rustc --explain E0308`.
diff --git a/tests/ui/does-not-have-iter-interpolated.stderr b/tests/ui/does-not-have-iter-interpolated.stderr
deleted file mode 100644
index 8d6c990..0000000
--- a/tests/ui/does-not-have-iter-interpolated.stderr
+++ /dev/null
@@ -1,11 +0,0 @@
-error[E0308]: mismatched types
- --> $DIR/does-not-have-iter-interpolated.rs:8:5
-  |
-8 |     quote!(#(#nonrep)*);
-  |     ^^^^^^^^^^^^^^^^^^^^ expected struct `quote::__rt::HasIterator`, found struct `quote::__rt::ThereIsNoIteratorInRepetition`
-  |
-  = note: expected type `quote::__rt::HasIterator`
-             found type `quote::__rt::ThereIsNoIteratorInRepetition`
-  = note: this error originates in a macro outside of the current crate (in Nightly builds, run with -Z external-macro-backtrace for more info)
-
-For more information about this error, try `rustc --explain E0308`.
diff --git a/tests/ui/does-not-have-iter-separated.stderr b/tests/ui/does-not-have-iter-separated.stderr
deleted file mode 100644
index c1fd0ad..0000000
--- a/tests/ui/does-not-have-iter-separated.stderr
+++ /dev/null
@@ -1,11 +0,0 @@
-error[E0308]: mismatched types
- --> $DIR/does-not-have-iter-separated.rs:4:5
-  |
-4 |     quote!(#(a b),*);
-  |     ^^^^^^^^^^^^^^^^^ expected struct `quote::__rt::HasIterator`, found struct `quote::__rt::ThereIsNoIteratorInRepetition`
-  |
-  = note: expected type `quote::__rt::HasIterator`
-             found type `quote::__rt::ThereIsNoIteratorInRepetition`
-  = note: this error originates in a macro outside of the current crate (in Nightly builds, run with -Z external-macro-backtrace for more info)
-
-For more information about this error, try `rustc --explain E0308`.
diff --git a/tests/ui/does-not-have-iter.stderr b/tests/ui/does-not-have-iter.stderr
deleted file mode 100644
index 3b87705..0000000
--- a/tests/ui/does-not-have-iter.stderr
+++ /dev/null
@@ -1,11 +0,0 @@
-error[E0308]: mismatched types
- --> $DIR/does-not-have-iter.rs:4:5
-  |
-4 |     quote!(#(a b)*);
-  |     ^^^^^^^^^^^^^^^^ expected struct `quote::__rt::HasIterator`, found struct `quote::__rt::ThereIsNoIteratorInRepetition`
-  |
-  = note: expected type `quote::__rt::HasIterator`
-             found type `quote::__rt::ThereIsNoIteratorInRepetition`
-  = note: this error originates in a macro outside of the current crate (in Nightly builds, run with -Z external-macro-backtrace for more info)
-
-For more information about this error, try `rustc --explain E0308`.
diff --git a/tests/ui/not-quotable.stderr b/tests/ui/not-quotable.stderr
deleted file mode 100644
index f51f85f..0000000
--- a/tests/ui/not-quotable.stderr
+++ /dev/null
@@ -1,10 +0,0 @@
-error[E0277]: the trait bound `std::net::Ipv4Addr: quote::to_tokens::ToTokens` is not satisfied
- --> $DIR/not-quotable.rs:6:13
-  |
-6 |     let _ = quote! { #ip };
-  |             ^^^^^^^^^^^^^^ the trait `quote::to_tokens::ToTokens` is not implemented for `std::net::Ipv4Addr`
-  |
-  = note: required by `quote::to_tokens::ToTokens::to_tokens`
-  = note: this error originates in a macro outside of the current crate (in Nightly builds, run with -Z external-macro-backtrace for more info)
-
-For more information about this error, try `rustc --explain E0277`.
diff --git a/tests/ui/not-repeatable.stderr b/tests/ui/not-repeatable.stderr
deleted file mode 100644
index ddcac05..0000000
--- a/tests/ui/not-repeatable.stderr
+++ /dev/null
@@ -1,14 +0,0 @@
-error[E0599]: no method named `quote_into_iter` found for type `std::net::Ipv4Addr` in the current scope
- --> $DIR/not-repeatable.rs:6:13
-  |
-6 |     let _ = quote! { #(#ip)* };
-  |             ^^^^^^^^^^^^^^^^^^
-  |
-  = note: the method `quote_into_iter` exists but the following trait bounds were not satisfied:
-          `&mut std::net::Ipv4Addr : quote::__rt::ext::RepIteratorExt`
-          `&std::net::Ipv4Addr : quote::__rt::ext::RepIteratorExt`
-          `std::net::Ipv4Addr : quote::__rt::ext::RepIteratorExt`
-          `std::net::Ipv4Addr : quote::__rt::ext::RepToTokensExt`
-  = note: this error originates in a macro outside of the current crate (in Nightly builds, run with -Z external-macro-backtrace for more info)
-
-For more information about this error, try `rustc --explain E0599`.
diff --git a/tests/ui/wrong-type-span.stderr b/tests/ui/wrong-type-span.stderr
deleted file mode 100644
index a6ae8ef..0000000
--- a/tests/ui/wrong-type-span.stderr
+++ /dev/null
@@ -1,10 +0,0 @@
-error[E0308]: mismatched types
- --> $DIR/wrong-type-span.rs:6:20
-  |
-6 |     quote_spanned!(span=> #x);
-  |                    ^^^^ expected struct `proc_macro2::Span`, found &str
-  |
-  = note: expected type `proc_macro2::Span`
-             found type `&str`
-
-For more information about this error, try `rustc --explain E0308`.
