Upgrade rust/crates/async-trait to 0.1.38 am: d8abf3ddb5 am: d1e2f59f50 am: 433b3b5fc6 am: fdccd84d8b

Original change: https://android-review.googlesource.com/c/platform/external/rust/crates/async-trait/+/1402792

Change-Id: Ifc66eb0d2e9de079dc53e19037cda68acd647845
diff --git a/.cargo_vcs_info.json b/.cargo_vcs_info.json
index c4c65e4..46160ea 100644
--- a/.cargo_vcs_info.json
+++ b/.cargo_vcs_info.json
@@ -1,5 +1,5 @@
 {
   "git": {
-    "sha1": "89923af3d553c990336ec29a68e50e15efff1734"
+    "sha1": "7e82be9fd3c72dd64d910ca8f88733607e52d690"
   }
 }
diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml
index 1ee3325..710cee3 100644
--- a/.github/workflows/ci.yml
+++ b/.github/workflows/ci.yml
@@ -12,7 +12,7 @@
     strategy:
       fail-fast: false
       matrix:
-        rust: [beta, stable, 1.39.0]
+        rust: [beta, stable, 1.40.0]
         include:
           - rust: nightly
             rustflags: --cfg async_trait_nightly_testing
@@ -25,6 +25,14 @@
         env:
           RUSTFLAGS: ${{matrix.rustflags}}
 
+  msrv:
+    name: Rust 1.39.0
+    runs-on: ubuntu-latest
+    steps:
+      - uses: actions/checkout@v2
+      - uses: dtolnay/rust-toolchain@1.39.0
+      - run: cargo check
+
   clippy:
     name: Clippy
     runs-on: ubuntu-latest
diff --git a/Cargo.toml b/Cargo.toml
index 675035a..d4be2ff 100644
--- a/Cargo.toml
+++ b/Cargo.toml
@@ -13,7 +13,7 @@
 [package]
 edition = "2018"
 name = "async-trait"
-version = "0.1.36"
+version = "0.1.38"
 authors = ["David Tolnay <dtolnay@gmail.com>"]
 description = "Type erasure for async trait methods"
 documentation = "https://docs.rs/async-trait"
diff --git a/Cargo.toml.orig b/Cargo.toml.orig
index 2921a5f..41eb5c7 100644
--- a/Cargo.toml.orig
+++ b/Cargo.toml.orig
@@ -1,6 +1,6 @@
 [package]
 name = "async-trait"
-version = "0.1.36"
+version = "0.1.38"
 authors = ["David Tolnay <dtolnay@gmail.com>"]
 edition = "2018"
 license = "MIT OR Apache-2.0"
diff --git a/METADATA b/METADATA
index 889b98f..ebd3009 100644
--- a/METADATA
+++ b/METADATA
@@ -9,11 +9,11 @@
     type: GIT
     value: "https://github.com/dtolnay/async-trait"
   }
-  version: "0.1.36"
+  version: "0.1.38"
   license_type: NOTICE
   last_upgrade_date {
     year: 2020
     month: 8
-    day: 11
+    day: 17
   }
 }
diff --git a/README.md b/README.md
index 7d3e050..c393c10 100644
--- a/README.md
+++ b/README.md
@@ -103,18 +103,18 @@
 ## Explanation
 
 Async fns get transformed into methods that return `Pin<Box<dyn Future + Send +
-'async>>` and delegate to a private async freestanding function.
+'async_trait>>` and delegate to a private async freestanding function.
 
 For example the `impl Advertisement for AutoplayingVideo` above would be
 expanded as:
 
 ```rust
 impl Advertisement for AutoplayingVideo {
-    fn run<'async>(
-        &'async self,
-    ) -> Pin<Box<dyn std::future::Future<Output = ()> + Send + 'async>>
+    fn run<'async_trait>(
+        &'async_trait self,
+    ) -> Pin<Box<dyn std::future::Future<Output = ()> + Send + 'async_trait>>
     where
-        Self: Sync + 'async,
+        Self: Sync + 'async_trait,
     {
         async fn run(_self: &AutoplayingVideo) {
             /* the original method body */
diff --git a/src/expand.rs b/src/expand.rs
index 7d0cec2..7c3ab5a 100644
--- a/src/expand.rs
+++ b/src/expand.rs
@@ -446,9 +446,11 @@
     let box_pin = quote_spanned!(brace.span=> {
         #[allow(
             #allow_non_snake_case
+            unused_parens, // https://github.com/dtolnay/async-trait/issues/118
             clippy::missing_docs_in_private_items,
             clippy::needless_lifetimes,
             clippy::ptr_arg,
+            clippy::trivially_copy_pass_by_ref,
             clippy::type_repetition_in_bounds,
             clippy::used_underscore_binding,
         )]
diff --git a/tests/test.rs b/tests/test.rs
index 3ea2d15..4ecab07 100644
--- a/tests/test.rs
+++ b/tests/test.rs
@@ -706,6 +706,8 @@
 
 // https://github.com/dtolnay/async-trait/issues/83
 pub mod issue83 {
+    #![allow(clippy::needless_arbitrary_self_type)]
+
     use async_trait::async_trait;
 
     #[async_trait]
@@ -959,3 +961,20 @@
         async fn load(&self, _key: &str) {}
     }
 }
+
+// https://github.com/dtolnay/async-trait/issues/120
+mod issue120 {
+    #![deny(clippy::trivially_copy_pass_by_ref)]
+
+    use async_trait::async_trait;
+
+    #[async_trait]
+    trait Trait {
+        async fn f(&self);
+    }
+
+    #[async_trait]
+    impl Trait for () {
+        async fn f(&self) {}
+    }
+}
diff --git a/tests/ui/self-span.stderr b/tests/ui/self-span.stderr
index f897c01..fb11528 100644
--- a/tests/ui/self-span.stderr
+++ b/tests/ui/self-span.stderr
@@ -5,7 +5,7 @@
    | --------------- `S` defined here
 ...
 18 |         let _: Self = Self;
-   |                       ^^^^ did you mean `S { /* fields */ }`?
+   |                       ^^^^ help: use struct literal syntax instead: `S {}`
 
 error[E0308]: mismatched types
   --> $DIR/self-span.rs:17:21