From 8915193b0de5f14b58aea0cd7bd72a6083529dc2 Mon Sep 17 00:00:00 2001 From: David LeGare Date: Wed, 2 Mar 2022 16:21:12 +0000 Subject: Update pin-project to 1.0.10 Test: cd external/rust/crates && atest --host -c Change-Id: I60f27e769ab8c287dbf4948e61bae172e6949cfc --- .cargo_vcs_info.json | 7 +- Android.bp | 2 +- CHANGELOG.md | 99 +++++++++++++--- Cargo.toml | 19 ++- Cargo.toml.orig | 9 +- METADATA | 10 +- examples/project_replace-expanded.rs | 8 +- src/lib.rs | 26 ++++- tests/README.md | 44 +++++++ tests/compiletest.rs | 4 +- tests/expand/README.md | 17 --- tests/expand/default/enum.expanded.rs | 35 +++--- tests/expand/default/struct.expanded.rs | 31 ++--- tests/expand/default/tuple_struct.expanded.rs | 31 ++--- tests/expand/multifields/enum.expanded.rs | 77 +++++++------ tests/expand/multifields/struct.expanded.rs | 55 ++++----- tests/expand/multifields/tuple_struct.expanded.rs | 55 ++++----- tests/expand/naming/enum-all.expanded.rs | 56 ++++----- tests/expand/naming/enum-mut.expanded.rs | 29 ++--- tests/expand/naming/enum-none.expanded.rs | 23 ++-- tests/expand/naming/enum-own.expanded.rs | 44 +++---- tests/expand/naming/enum-ref.expanded.rs | 29 ++--- tests/expand/naming/struct-all.expanded.rs | 45 ++++---- tests/expand/naming/struct-mut.expanded.rs | 31 ++--- tests/expand/naming/struct-none.expanded.rs | 31 ++--- tests/expand/naming/struct-own.expanded.rs | 45 ++++---- tests/expand/naming/struct-ref.expanded.rs | 31 ++--- tests/expand/naming/tuple_struct-all.expanded.rs | 45 ++++---- tests/expand/naming/tuple_struct-mut.expanded.rs | 31 ++--- tests/expand/naming/tuple_struct-none.expanded.rs | 31 ++--- tests/expand/naming/tuple_struct-own.expanded.rs | 45 ++++---- tests/expand/naming/tuple_struct-ref.expanded.rs | 31 ++--- tests/expand/not_unpin/enum.expanded.rs | 33 +++--- tests/expand/not_unpin/struct.expanded.rs | 29 ++--- tests/expand/not_unpin/tuple_struct.expanded.rs | 29 ++--- tests/expand/pinned_drop/enum.expanded.rs | 35 +++--- tests/expand/pinned_drop/struct.expanded.rs | 31 ++--- tests/expand/pinned_drop/tuple_struct.expanded.rs | 31 ++--- tests/expand/project_replace/enum.expanded.rs | 44 +++---- tests/expand/project_replace/struct.expanded.rs | 45 ++++---- .../project_replace/tuple_struct.expanded.rs | 45 ++++---- tests/expand/pub/enum.expanded.rs | 35 +++--- tests/expand/pub/struct.expanded.rs | 31 ++--- tests/expand/pub/tuple_struct.expanded.rs | 31 ++--- tests/expand/unsafe_unpin/enum.expanded.rs | 25 ++-- tests/expand/unsafe_unpin/struct.expanded.rs | 21 ++-- tests/expand/unsafe_unpin/tuple_struct.expanded.rs | 21 ++-- tests/lint.rs | 7 +- tests/ui/cfg/cfg_attr-resolve.stderr | 2 +- tests/ui/cfg/cfg_attr-type-mismatch.stderr | 4 +- tests/ui/cfg/packed_sneaky-span-issue-1.stderr | 2 +- tests/ui/cfg/packed_sneaky-span-issue-2.stderr | 2 +- tests/ui/cfg/packed_sneaky.stderr | 2 +- tests/ui/cfg/unsupported.stderr | 2 +- tests/ui/not_unpin/conflict-unpin.stderr | 6 +- tests/ui/not_unpin/impl-unsafe-unpin.stderr | 12 +- tests/ui/pin_project/add-attr-to-struct.stderr | 4 +- tests/ui/pin_project/add-pinned-field.stderr | 28 +++-- tests/ui/pin_project/conflict-drop.stderr | 4 +- tests/ui/pin_project/conflict-unpin.stderr | 6 +- tests/ui/pin_project/impl-unsafe-unpin.stderr | 12 +- tests/ui/pin_project/import_unnamed.stderr | 10 +- tests/ui/pin_project/invalid.stderr | 128 ++++++++++----------- .../ui/pin_project/overlapping_unpin_struct.stderr | 14 ++- tests/ui/pin_project/override-priv-mod.rs | 32 ++++++ tests/ui/pin_project/override-priv-mod.stderr | 10 ++ tests/ui/pin_project/packed-enum.stderr | 10 +- tests/ui/pin_project/packed-name-value.stderr | 8 +- tests/ui/pin_project/packed.stderr | 8 +- tests/ui/pin_project/packed_sneaky-1.stderr | 6 +- tests/ui/pin_project/packed_sneaky-2.stderr | 2 +- tests/ui/pin_project/packed_sneaky-3.stderr | 8 +- tests/ui/pin_project/private_in_public-enum.stderr | 4 +- .../ui/pin_project/project_replace_unsized.stderr | 82 ++++++++----- .../project_replace_unsized_fn_params.stderr | 67 ++++++++--- tests/ui/pin_project/remove-attr-from-field.stderr | 4 +- .../ui/pin_project/remove-attr-from-struct.stderr | 62 ++++++---- tests/ui/pin_project/safe_packed_borrows.rs | 2 - tests/ui/pin_project/safe_packed_borrows.stderr | 4 +- tests/ui/pin_project/unaligned_references.rs | 2 - tests/ui/pin_project/unaligned_references.stderr | 34 ++---- tests/ui/pin_project/unpin_sneaky.stderr | 4 +- tests/ui/pin_project/visibility.stderr | 30 ++--- tests/ui/pinned_drop/call-drop-inner.stderr | 4 +- tests/ui/pinned_drop/conditional-drop-impl.stderr | 35 +++--- .../ui/pinned_drop/forget-pinned-drop-impl.stderr | 14 +-- tests/ui/pinned_drop/invalid-self.stderr | 8 +- tests/ui/pinned_drop/invalid.stderr | 50 ++++---- .../ui/pinned_drop/pinned-drop-no-attr-arg.stderr | 4 +- tests/ui/pinned_drop/self.stderr | 16 +-- tests/ui/pinned_drop/unsafe-call.stderr | 2 +- tests/ui/unsafe_unpin/conflict-unpin.stderr | 12 +- .../marker_trait_attr-feature-gate.stderr | 2 +- .../ui/unstable-features/marker_trait_attr.stderr | 2 +- .../overlapping_marker_traits-feature-gate.stderr | 2 +- .../overlapping_marker_traits.stderr | 4 +- tests/ui/unstable-features/trivial_bounds-bug.rs | 33 ------ .../ui/unstable-features/trivial_bounds-bug.stderr | 7 -- .../trivial_bounds-feature-gate.stderr | 32 ++---- tests/ui/unstable-features/trivial_bounds.rs | 16 ++- tests/ui/unstable-features/trivial_bounds.stderr | 22 ++-- 101 files changed, 1348 insertions(+), 1103 deletions(-) create mode 100644 tests/README.md delete mode 100644 tests/expand/README.md create mode 100644 tests/ui/pin_project/override-priv-mod.rs create mode 100644 tests/ui/pin_project/override-priv-mod.stderr delete mode 100644 tests/ui/unstable-features/trivial_bounds-bug.rs delete mode 100644 tests/ui/unstable-features/trivial_bounds-bug.stderr diff --git a/.cargo_vcs_info.json b/.cargo_vcs_info.json index 759ab72..9e9e67a 100644 --- a/.cargo_vcs_info.json +++ b/.cargo_vcs_info.json @@ -1,5 +1,6 @@ { "git": { - "sha1": "6bd40906acb8574a3a0bbadc7cf1349fadac7d3c" - } -} + "sha1": "0273e6ecd64057f47c3b2ada6fb4e5c37357c185" + }, + "path_in_vcs": "" +} \ No newline at end of file diff --git a/Android.bp b/Android.bp index 00c36e3..3ebadd0 100644 --- a/Android.bp +++ b/Android.bp @@ -42,7 +42,7 @@ rust_library { host_supported: true, crate_name: "pin_project", cargo_env_compat: true, - cargo_pkg_version: "1.0.8", + cargo_pkg_version: "1.0.10", srcs: ["src/lib.rs"], edition: "2018", proc_macros: ["libpin_project_internal"], diff --git a/CHANGELOG.md b/CHANGELOG.md index 7568f0a..ebac043 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -5,11 +5,21 @@ All notable changes to this project will be documented in this file. This project adheres to [Semantic Versioning](https://semver.org). ## [Unreleased] +## [1.0.10] - 2021-12-31 + +- Revert the increase of the minimal version of `syn` that was done in 1.0.9. + +## [1.0.9] - 2021-12-26 + +- [Prevent abuse of private module.](https://github.com/taiki-e/pin-project/pull/336) + +- Update minimal version of `syn` to 1.0.84. + ## [1.0.8] - 2021-07-21 - [Suppress `clippy::use_self` and `clippy::type_repetition_in_bounds` lints in generated code.](https://github.com/taiki-e/pin-project/pull/331) @@ -40,10 +50,14 @@ Note: In this file, do not use the hard wrap in the middle of a sentence for com ## [1.0.1] - 2020-10-15 +**NOTE:** This release has been yanked because it [failed to compile with syn 1.0.84 and later](https://github.com/taiki-e/pin-project/commit/ddcd88079ba2d82857c365f2a3543ad146ade54c). + - [Fix warnings when `#[pin_project]` attribute used within `macro_rules!` macros.](https://github.com/taiki-e/pin-project/pull/298) ## [1.0.0] - 2020-10-13 +**NOTE:** This release has been yanked because it [failed to compile with syn 1.0.84 and later](https://github.com/taiki-e/pin-project/commit/ddcd88079ba2d82857c365f2a3543ad146ade54c). + - [Remove deprecated `#[project]`, `#[project_ref]`, and `#[project_replace]` attributes.](https://github.com/taiki-e/pin-project/pull/265) Name the projected type by passing an argument with the same name as the method to the `#[pin_project]` attribute instead: @@ -79,7 +93,7 @@ Changes since the 1.0.0-alpha.1 release: - [Fix drop order of pinned fields in `project_replace`.](https://github.com/taiki-e/pin-project/pull/287) -- Update minimal version of `syn` to 1.0.44 +- Update minimal version of `syn` to 1.0.44. ## [1.0.0-alpha.1] - 2020-09-22 @@ -114,43 +128,63 @@ Changes since the 1.0.0-alpha.1 release: See also [tracking issue for 1.0 release](https://github.com/taiki-e/pin-project/issues/264). +## [0.4.29] - 2021-12-26 + +- [Fix compile error with `syn` 1.0.84 and later.](https://github.com/taiki-e/pin-project/pull/335) + ## [0.4.28] - 2021-03-28 +**NOTE:** This release has been yanked because it [failed to compile with syn 1.0.84 and later](https://github.com/taiki-e/pin-project/pull/335). + - [Fix `unused_must_use` warning on unused borrows, which will be added to rustc in the future.](https://github.com/taiki-e/pin-project/pull/322) See [#322](https://github.com/taiki-e/pin-project/pull/322) for more details. - (Note: 1.0 does not have this problem.) + (NOTE: 1.0 does not have this problem.) ## [0.4.27] - 2020-10-11 -- Update minimal version of `syn` to 1.0.44 +**NOTE:** This release has been yanked because it [failed to compile with syn 1.0.84 and later](https://github.com/taiki-e/pin-project/pull/335). + +- Update minimal version of `syn` to 1.0.44. ## [0.4.26] - 2020-10-04 +**NOTE:** This release has been yanked because it [failed to compile with syn 1.0.84 and later](https://github.com/taiki-e/pin-project/pull/335). + - [Fix drop order of pinned fields in `project_replace`.](https://github.com/taiki-e/pin-project/pull/287) ## [0.4.25] - 2020-10-01 +**NOTE:** This release has been yanked because it [failed to compile with syn 1.0.84 and later](https://github.com/taiki-e/pin-project/pull/335). + - [Suppress `drop_bounds` lint, which will be added to rustc in the future.](https://github.com/taiki-e/pin-project/pull/273) See [#272](https://github.com/taiki-e/pin-project/issues/272) for more details. - (Note: 1.0.0-alpha.1 already contains this change.) + (NOTE: 1.0.0-alpha.1 already contains this change.) ## [0.4.24] - 2020-09-26 +**NOTE:** This release has been yanked because it [failed to compile with syn 1.0.84 and later](https://github.com/taiki-e/pin-project/pull/335). + - [Fix compatibility of generated code with `forbid(future_incompatible)`.](https://github.com/taiki-e/pin-project/pull/282) - Note: This does not guarantee compatibility with `forbid(future_incompatible)` in the future. + NOTE: This does not guarantee compatibility with `forbid(future_incompatible)` in the future. If rustc adds a new lint, we may not be able to keep this. ## [0.4.23] - 2020-07-27 +**NOTE:** This release has been yanked because it [failed to compile with syn 1.0.84 and later](https://github.com/taiki-e/pin-project/pull/335). + - [Fix compile error with `?Sized` type parameters.](https://github.com/taiki-e/pin-project/pull/263) ## [0.4.22] - 2020-06-14 +**NOTE:** This release has been yanked because it [failed to compile with syn 1.0.84 and later](https://github.com/taiki-e/pin-project/pull/335). + - Documentation improvements. ## [0.4.21] - 2020-06-13 +**NOTE:** This release has been yanked because it [failed to compile with syn 1.0.84 and later](https://github.com/taiki-e/pin-project/pull/335). + - [Deprecated `#[project]`, `#[project_ref]`, and `#[project_replace]` attributes due to some unfixable limitations.](https://github.com/taiki-e/pin-project/pull/244) Consider naming the projected type by passing an argument with the same name as the method to the `#[pin_project]` attribute instead. @@ -180,6 +214,8 @@ See also [tracking issue for 1.0 release](https://github.com/taiki-e/pin-project ## [0.4.20] - 2020-06-07 +**NOTE:** This release has been yanked because it [failed to compile with syn 1.0.84 and later](https://github.com/taiki-e/pin-project/pull/335). + - [You can now use `project_replace` argument without Replace argument.](https://github.com/taiki-e/pin-project/pull/243) This used to require you to specify both. @@ -206,10 +242,14 @@ See also [tracking issue for 1.0 release](https://github.com/taiki-e/pin-project ## [0.4.19] - 2020-06-04 +**NOTE:** This release has been yanked because it [failed to compile with syn 1.0.84 and later](https://github.com/taiki-e/pin-project/pull/335). + - [Suppress `unused_results` lint in generated code.](https://github.com/taiki-e/pin-project/pull/239) ## [0.4.18] - 2020-06-04 +**NOTE:** This release has been yanked because it [failed to compile with syn 1.0.84 and later](https://github.com/taiki-e/pin-project/pull/335). + - [Support `Self` in more syntax positions inside `#[pinned_drop]` impl.](https://github.com/taiki-e/pin-project/pull/230) - [Suppress `clippy::type_repetition_in_bounds` and `clippy::used_underscore_binding` lints in generated code.](https://github.com/taiki-e/pin-project/pull/233) @@ -220,6 +260,8 @@ See also [tracking issue for 1.0 release](https://github.com/taiki-e/pin-project ## [0.4.17] - 2020-05-18 +**NOTE:** This release has been yanked because it [failed to compile with syn 1.0.84 and later](https://github.com/taiki-e/pin-project/pull/335). + - [Support naming the projection types.](https://github.com/taiki-e/pin-project/pull/202) By passing an argument with the same name as the method to the attribute, you can name the projection type returned from the method: @@ -241,14 +283,20 @@ See also [tracking issue for 1.0 release](https://github.com/taiki-e/pin-project ## [0.4.16] - 2020-05-11 +**NOTE:** This release has been yanked because it [failed to compile with syn 1.0.84 and later](https://github.com/taiki-e/pin-project/pull/335). + - [Fix an issue that users can call internal function generated by `#[pinned_drop]`.](https://github.com/taiki-e/pin-project/pull/223) ## [0.4.15] - 2020-05-10 +**NOTE:** This release has been yanked because it [failed to compile with syn 1.0.84 and later](https://github.com/taiki-e/pin-project/pull/335). + - [`#[project]` attribute can now handle all `project*` attributes in that scope with one wrapper attribute.](https://github.com/taiki-e/pin-project/pull/220) ## [0.4.14] - 2020-05-09 +**NOTE:** This release has been yanked because it [failed to compile with syn 1.0.84 and later](https://github.com/taiki-e/pin-project/pull/335). + - [Add `!Unpin` option to `#[pin_project]` attribute for guarantee the type is `!Unpin`.](https://github.com/taiki-e/pin-project/pull/219) ```rust @@ -269,7 +317,7 @@ See also [tracking issue for 1.0 release](https://github.com/taiki-e/pin-project } ``` - *[Note: This raises the minimum supported Rust version of this crate from Rust 1.33 to Rust 1.34.](https://github.com/taiki-e/pin-project/pull/219#pullrequestreview-408644187)* + *[NOTE: This raises the minimum supported Rust version of this crate from Rust 1.33 to Rust 1.34.](https://github.com/taiki-e/pin-project/pull/219#pullrequestreview-408644187)* - [Fix an issue where duplicate `#[project]` attributes were ignored.](https://github.com/taiki-e/pin-project/pull/218) @@ -283,6 +331,8 @@ See also [tracking issue for 1.0 release](https://github.com/taiki-e/pin-project ## [0.4.13] - 2020-05-07 +**NOTE:** This release has been yanked because it [failed to compile with syn 1.0.84 and later](https://github.com/taiki-e/pin-project/pull/335). + - [Fix a regression in 0.4.11.](https://github.com/taiki-e/pin-project/pull/207) Changes from [0.4.10](https://github.com/taiki-e/pin-project/releases/tag/v0.4.10) and [0.4.12](https://github.com/taiki-e/pin-project/releases/tag/v0.4.12): @@ -299,11 +349,13 @@ See also [tracking issue for 1.0 release](https://github.com/taiki-e/pin-project ## [0.4.12] - 2020-05-07 +**NOTE:** This release has been yanked because it [failed to compile with syn 1.0.84 and later](https://github.com/taiki-e/pin-project/pull/335). + - A release to avoid [a regression in 0.4.11](https://github.com/taiki-e/pin-project/issues/206). No code changes from [0.4.10](https://github.com/taiki-e/pin-project/releases/tag/v0.4.10). ## [0.4.11] - 2020-05-07 -**Note: This release has been yanked.** See [#206](https://github.com/taiki-e/pin-project/issues/206) for details. +**NOTE:** This release has been yanked. See [#206](https://github.com/taiki-e/pin-project/issues/206) for details. - [Fix an issue that `#[project]` on non-statement expression does not work without unstable features.](https://github.com/taiki-e/pin-project/pull/197) @@ -317,6 +369,8 @@ See also [tracking issue for 1.0 release](https://github.com/taiki-e/pin-project ## [0.4.10] - 2020-05-04 +**NOTE:** This release has been yanked because it [failed to compile with syn 1.0.84 and later](https://github.com/taiki-e/pin-project/pull/335). + - [Add `project_replace` method and `#[project_replace]` attribute.](https://github.com/taiki-e/pin-project/pull/194) `project_replace` method is optional and can be enabled by passing the `Replace` argument to `#[pin_project]` attribute. See [the documentation](https://docs.rs/pin-project/0.4/pin_project/attr.pin_project.html#project_replace) for more details. @@ -327,6 +381,8 @@ See also [tracking issue for 1.0 release](https://github.com/taiki-e/pin-project ## [0.4.9] - 2020-04-14 +**NOTE:** This release has been yanked because it [failed to compile with syn 1.0.84 and later](https://github.com/taiki-e/pin-project/pull/335). + - [Fix lifetime inference error when associated types are used in fields.](https://github.com/taiki-e/pin-project/pull/188) - [Fix compile error with tuple structs with `where` clauses.](https://github.com/taiki-e/pin-project/pull/186) @@ -335,29 +391,39 @@ See also [tracking issue for 1.0 release](https://github.com/taiki-e/pin-project ## [0.4.8] - 2020-01-27 +**NOTE:** This release has been yanked because it [failed to compile with syn 1.0.84 and later](https://github.com/taiki-e/pin-project/pull/335). + - [Ensure that users cannot implement `PinnedDrop` without proper attribute argument.](https://github.com/taiki-e/pin-project/pull/180) - [Fix use of `Self` in expression position inside `#[pinned_drop]` impl.](https://github.com/taiki-e/pin-project/pull/177) ## [0.4.7] - 2020-01-20 +**NOTE:** This release has been yanked because it [failed to compile with syn 1.0.84 and later](https://github.com/taiki-e/pin-project/pull/335). + - [Fix support for lifetime bounds.](https://github.com/taiki-e/pin-project/pull/176) ## [0.4.6] - 2019-11-20 +**NOTE:** This release has been yanked because it [failed to compile with syn 1.0.84 and later](https://github.com/taiki-e/pin-project/pull/335). + - [Fix compile error when there is `Self` in the where clause.](https://github.com/taiki-e/pin-project/pull/169) ## [0.4.5] - 2019-10-21 +**NOTE:** This release has been yanked because it [failed to compile with syn 1.0.84 and later](https://github.com/taiki-e/pin-project/pull/335). + - [Fix compile error with `dyn` types.](https://github.com/taiki-e/pin-project/pull/158) ## [0.4.4] - 2019-10-17 +**NOTE:** This release has been yanked because it [failed to compile with syn 1.0.84 and later](https://github.com/taiki-e/pin-project/pull/335). + - [Fix an issue where `PinnedDrop` implementations can call unsafe code without an unsafe block.](https://github.com/taiki-e/pin-project/pull/149) ## [0.4.3] - 2019-10-15 -**Note: This release has been yanked.** See [#148](https://github.com/taiki-e/pin-project/pull/148) for details. +**NOTE:** This release has been yanked. See [#148](https://github.com/taiki-e/pin-project/pull/148) for details. - [`#[pin_project]` can now interoperate with `#[cfg_attr()]`.](https://github.com/taiki-e/pin-project/pull/135) @@ -369,19 +435,19 @@ See also [tracking issue for 1.0 release](https://github.com/taiki-e/pin-project ## [0.4.2] - 2019-09-29 -**Note: This release has been yanked.** See [#148](https://github.com/taiki-e/pin-project/pull/148) for details. +**NOTE:** This release has been yanked. See [#148](https://github.com/taiki-e/pin-project/pull/148) for details. - [Fix support for DSTs(Dynamically Sized Types).](https://github.com/taiki-e/pin-project/pull/113) ## [0.4.1] - 2019-09-26 -**Note: This release has been yanked.** See [#148](https://github.com/taiki-e/pin-project/pull/148) for details. +**NOTE:** This release has been yanked. See [#148](https://github.com/taiki-e/pin-project/pull/148) for details. - [Fix an issue that caused an error when using `#[pin_project]` on a type that has `#[pin]` + `!Unpin` field with no generics or lifetime.](https://github.com/taiki-e/pin-project/pull/111) ## [0.4.0] - 2019-09-25 -**Note: This release has been yanked.** See [#148](https://github.com/taiki-e/pin-project/pull/148) for details. +**NOTE:** This release has been yanked. See [#148](https://github.com/taiki-e/pin-project/pull/148) for details. - [**Pin projection has become a safe operation.**](https://github.com/taiki-e/pin-project/pull/18) In the absence of other unsafe code that you write, it is impossible to cause undefined behavior. @@ -524,7 +590,7 @@ See also [tracking issue for 0.4 release](https://github.com/taiki-e/pin-project ## [0.3.3] - 2019-07-15 -**Note: This release has been yanked.** See [#16](https://github.com/taiki-e/pin-project/issues/16) for details. +**NOTE:** This release has been yanked. See [#16](https://github.com/taiki-e/pin-project/issues/16) for details. - Diagnostic improvements. @@ -598,11 +664,13 @@ See also [tracking issue for 0.4 release](https://github.com/taiki-e/pin-project ## [0.1.0] - 2019-01-08 -**Note: This release has been yanked.** +**NOTE:** This release has been yanked. Initial release -[Unreleased]: https://github.com/taiki-e/pin-project/compare/v1.0.8...HEAD +[Unreleased]: https://github.com/taiki-e/pin-project/compare/v1.0.10...HEAD +[1.0.10]: https://github.com/taiki-e/pin-project/compare/v1.0.9...v1.0.10 +[1.0.9]: https://github.com/taiki-e/pin-project/compare/v1.0.8...v1.0.9 [1.0.8]: https://github.com/taiki-e/pin-project/compare/v1.0.7...v1.0.8 [1.0.7]: https://github.com/taiki-e/pin-project/compare/v1.0.6...v1.0.7 [1.0.6]: https://github.com/taiki-e/pin-project/compare/v1.0.5...v1.0.6 @@ -613,6 +681,7 @@ Initial release [1.0.1]: https://github.com/taiki-e/pin-project/compare/v1.0.0...v1.0.1 [1.0.0]: https://github.com/taiki-e/pin-project/compare/v1.0.0-alpha.1...v1.0.0 [1.0.0-alpha.1]: https://github.com/taiki-e/pin-project/compare/v0.4.23...v1.0.0-alpha.1 +[0.4.29]: https://github.com/taiki-e/pin-project/compare/v0.4.28...v0.4.29 [0.4.28]: https://github.com/taiki-e/pin-project/compare/v0.4.27...v0.4.28 [0.4.27]: https://github.com/taiki-e/pin-project/compare/v0.4.26...v0.4.27 [0.4.26]: https://github.com/taiki-e/pin-project/compare/v0.4.25...v0.4.26 diff --git a/Cargo.toml b/Cargo.toml index be5c598..cc234e1 100644 --- a/Cargo.toml +++ b/Cargo.toml @@ -3,21 +3,19 @@ # 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 +# 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) +# If you are reading this file be aware that the original Cargo.toml +# will likely look very different (and much more reasonable). +# See Cargo.toml.orig for the original contents. [package] edition = "2018" +rust-version = "1.37" name = "pin-project" -version = "1.0.8" -authors = ["Taiki Endo "] +version = "1.0.10" exclude = ["/.*", "/ci", "/tools"] description = "A crate for safe and ergonomic pin-projection.\n" -documentation = "https://docs.rs/pin-project" keywords = ["pin", "macros", "attribute"] categories = ["no-std", "rust-patterns"] license = "Apache-2.0 OR MIT" @@ -25,8 +23,7 @@ repository = "https://github.com/taiki-e/pin-project" [package.metadata.docs.rs] targets = ["x86_64-unknown-linux-gnu"] [dependencies.pin-project-internal] -version = "=1.0.8" -default-features = false +version = "=1.0.10" [dev-dependencies.macrotest] version = "1.0.8" @@ -37,4 +34,4 @@ version = "1" version = "1" [dev-dependencies.trybuild] -version = "1" +version = "1.0.49" diff --git a/Cargo.toml.orig b/Cargo.toml.orig index 6ba9e9b..120858b 100644 --- a/Cargo.toml.orig +++ b/Cargo.toml.orig @@ -1,11 +1,10 @@ [package] name = "pin-project" -version = "1.0.8" -authors = ["Taiki Endo "] +version = "1.0.10" edition = "2018" +rust-version = "1.37" license = "Apache-2.0 OR MIT" repository = "https://github.com/taiki-e/pin-project" -documentation = "https://docs.rs/pin-project" keywords = ["pin", "macros", "attribute"] categories = ["no-std", "rust-patterns"] exclude = ["/.*", "/ci", "/tools"] @@ -27,11 +26,11 @@ members = [ ] [dependencies] -pin-project-internal = { version = "=1.0.8", path = "pin-project-internal", default-features = false } +pin-project-internal = { version = "=1.0.10", path = "pin-project-internal" } [dev-dependencies] pin-project-auxiliary-macro = { path = "tests/auxiliary/macro" } macrotest = "1.0.8" rustversion = "1" static_assertions = "1" -trybuild = "1" +trybuild = "1.0.49" diff --git a/METADATA b/METADATA index 0e4271b..5087552 100644 --- a/METADATA +++ b/METADATA @@ -7,13 +7,13 @@ third_party { } url { type: ARCHIVE - value: "https://static.crates.io/crates/pin-project/pin-project-1.0.8.crate" + value: "https://static.crates.io/crates/pin-project/pin-project-1.0.10.crate" } - version: "1.0.8" + version: "1.0.10" license_type: NOTICE last_upgrade_date { - year: 2021 - month: 8 - day: 9 + year: 2022 + month: 3 + day: 1 } } diff --git a/examples/project_replace-expanded.rs b/examples/project_replace-expanded.rs index ebb8e00..445e570 100644 --- a/examples/project_replace-expanded.rs +++ b/examples/project_replace-expanded.rs @@ -79,10 +79,8 @@ const _: () = { // Destructors will run in reverse order, so next create a guard to overwrite // `self` with the replacement value without calling destructors. - let __guard = ::pin_project::__private::UnsafeOverwriteGuard { - target: __self_ptr, - value: ::pin_project::__private::ManuallyDrop::new(__replacement), - }; + let __guard = + ::pin_project::__private::UnsafeOverwriteGuard::new(__self_ptr, __replacement); let Self { pinned, unpinned } = &mut *__self_ptr; @@ -98,7 +96,7 @@ const _: () = { // this must be in its own scope, or else `__result` will not be dropped // if any of the destructors panic. { - let __guard = ::pin_project::__private::UnsafeDropInPlaceGuard(pinned); + let __guard = ::pin_project::__private::UnsafeDropInPlaceGuard::new(pinned); } // Finally, return the result diff --git a/src/lib.rs b/src/lib.rs index 24a6c19..00bc931 100644 --- a/src/lib.rs +++ b/src/lib.rs @@ -74,7 +74,7 @@ allow(dead_code, unused_variables) ) ))] -#![warn(future_incompatible, missing_docs, rust_2018_idioms, single_use_lifetimes, unreachable_pub)] +#![warn(missing_docs, rust_2018_idioms, single_use_lifetimes, unreachable_pub)] #![warn(clippy::default_trait_access, clippy::wildcard_imports)] #![allow(clippy::needless_doctest_main)] @@ -91,6 +91,8 @@ pub use pin_project_internal::pinned_drop; /// This trait is used in conjunction with the `UnsafeUnpin` argument to /// the [`#[pin_project]`][macro@pin_project] attribute. /// +/// # Safety +/// /// The Rust [`Unpin`] trait is safe to implement - by itself, /// implementing it cannot lead to [undefined behavior][undefined-behavior]. /// Undefined behavior can only occur when other unsafe code is used. @@ -149,10 +151,10 @@ pub unsafe trait UnsafeUnpin {} // Not public API. #[doc(hidden)] pub mod __private { + use core::mem::ManuallyDrop; #[doc(hidden)] pub use core::{ marker::{PhantomData, PhantomPinned, Unpin}, - mem::ManuallyDrop, ops::Drop, pin::Pin, ptr, @@ -256,7 +258,14 @@ pub mod __private { // This is an internal helper used to ensure a value is dropped. #[doc(hidden)] - pub struct UnsafeDropInPlaceGuard(pub *mut T); + pub struct UnsafeDropInPlaceGuard(*mut T); + + impl UnsafeDropInPlaceGuard { + #[doc(hidden)] + pub unsafe fn new(ptr: *mut T) -> Self { + Self(ptr) + } + } impl Drop for UnsafeDropInPlaceGuard { fn drop(&mut self) { @@ -270,8 +279,15 @@ pub mod __private { // its destructor being called. #[doc(hidden)] pub struct UnsafeOverwriteGuard { - pub value: ManuallyDrop, - pub target: *mut T, + target: *mut T, + value: ManuallyDrop, + } + + impl UnsafeOverwriteGuard { + #[doc(hidden)] + pub unsafe fn new(target: *mut T, value: T) -> Self { + Self { target, value: ManuallyDrop::new(value) } + } } impl Drop for UnsafeOverwriteGuard { diff --git a/tests/README.md b/tests/README.md new file mode 100644 index 0000000..b109e71 --- /dev/null +++ b/tests/README.md @@ -0,0 +1,44 @@ +# Tests + +To run all tests, run the following command: + +```sh +cargo +nightly test --all +``` + +## UI tests (`ui`, `compiletest.rs`) + +This checks errors detected by the macro or the Rust compiler in the resulting +expanded code. + +To run this test, run the following command: + +```sh +cargo +nightly test --test compiletest +``` + +Locally, this test updates the files in the `ui` directory if there are +changes to the generated code. If there are any changes to the files in the +`ui` directory after running the test, please commit them. + +See also [`trybuild` documentation](https://docs.rs/trybuild). + +## Expansion tests (`expand`, `expandtest.rs`) + +Similar to ui tests, but instead of checking the compiler output, this checks +the code generated by macros. + +See [examples](../examples/README.md) for descriptions of what the generated +code does, and why it needs to be generated. + +To run this test, run the following command: + +```sh +cargo +nightly test --test expandtest +``` + +Locally, this test updates the files in the `expand` directory if there are +changes to the generated code. If there are any changes to the files in the +`expand` directory after running the test, please commit them. + +See also [`macrotest` documentation](https://docs.rs/macrotest). diff --git a/tests/compiletest.rs b/tests/compiletest.rs index c1c6be0..70d2358 100644 --- a/tests/compiletest.rs +++ b/tests/compiletest.rs @@ -3,7 +3,7 @@ use std::env; -#[rustversion::attr(before(2021-07-19), ignore)] // Note: This date is commit-date and the day before the toolchain date. +#[rustversion::attr(not(nightly), ignore)] #[test] fn ui() { if env::var_os("CI").is_none() { @@ -11,5 +11,5 @@ fn ui() { } let t = trybuild::TestCases::new(); - t.compile_fail("tests/ui/*/*.rs"); + t.compile_fail("tests/ui/**/*.rs"); } diff --git a/tests/expand/README.md b/tests/expand/README.md deleted file mode 100644 index e3e708d..0000000 --- a/tests/expand/README.md +++ /dev/null @@ -1,17 +0,0 @@ -# Expansion tests - -Similar to ui tests, but instead of checking the compiler output, this checks -the code generated by macros. - -See [examples](../../examples/README.md) for descriptions of what the generated -code does, and why it needs to be generated. - -To run this test, run the following command: - -```sh -cargo +nightly test --test expandtest -``` - -Locally, this test updates the files in the `expand` directory if there are -changes to the generated code. If there are any changes to the files in the -`expand` directory after running the test, please commit them. diff --git a/tests/expand/default/enum.expanded.rs b/tests/expand/default/enum.expanded.rs index 75ec2fe..a3b0338 100644 --- a/tests/expand/default/enum.expanded.rs +++ b/tests/expand/default/enum.expanded.rs @@ -62,22 +62,25 @@ where #[allow(clippy::pattern_type_mismatch)] #[allow(clippy::redundant_pub_crate)] #[allow(clippy::type_repetition_in_bounds)] +#[allow(unused_qualifications)] #[allow(clippy::semicolon_if_nothing_returned)] #[allow(clippy::use_self)] #[allow(clippy::used_underscore_binding)] const _: () = { + #[allow(unused_extern_crates)] + extern crate pin_project as _pin_project; impl Enum { fn project<'pin>( - self: ::pin_project::__private::Pin<&'pin mut Self>, + self: _pin_project::__private::Pin<&'pin mut Self>, ) -> EnumProj<'pin, T, U> { unsafe { match self.get_unchecked_mut() { Self::Struct { pinned, unpinned } => EnumProj::Struct { - pinned: ::pin_project::__private::Pin::new_unchecked(pinned), + pinned: _pin_project::__private::Pin::new_unchecked(pinned), unpinned, }, Self::Tuple(_0, _1) => { - EnumProj::Tuple(::pin_project::__private::Pin::new_unchecked(_0), _1) + EnumProj::Tuple(_pin_project::__private::Pin::new_unchecked(_0), _1) } Self::Unit => EnumProj::Unit, } @@ -85,16 +88,16 @@ const _: () = { } #[allow(clippy::missing_const_for_fn)] fn project_ref<'pin>( - self: ::pin_project::__private::Pin<&'pin Self>, + self: _pin_project::__private::Pin<&'pin Self>, ) -> EnumProjRef<'pin, T, U> { unsafe { match self.get_ref() { Self::Struct { pinned, unpinned } => EnumProjRef::Struct { - pinned: ::pin_project::__private::Pin::new_unchecked(pinned), + pinned: _pin_project::__private::Pin::new_unchecked(pinned), unpinned, }, Self::Tuple(_0, _1) => { - EnumProjRef::Tuple(::pin_project::__private::Pin::new_unchecked(_0), _1) + EnumProjRef::Tuple(_pin_project::__private::Pin::new_unchecked(_0), _1) } Self::Unit => EnumProjRef::Unit, } @@ -103,32 +106,32 @@ const _: () = { } #[allow(missing_debug_implementations)] struct __Enum<'pin, T, U> { - __pin_project_use_generics: ::pin_project::__private::AlwaysUnpin< + __pin_project_use_generics: _pin_project::__private::AlwaysUnpin< 'pin, ( - ::pin_project::__private::PhantomData, - ::pin_project::__private::PhantomData, + _pin_project::__private::PhantomData, + _pin_project::__private::PhantomData, ), >, __field0: T, __field1: T, } - impl<'pin, T, U> ::pin_project::__private::Unpin for Enum where - __Enum<'pin, T, U>: ::pin_project::__private::Unpin + impl<'pin, T, U> _pin_project::__private::Unpin for Enum where + __Enum<'pin, T, U>: _pin_project::__private::Unpin { } #[doc(hidden)] - unsafe impl<'pin, T, U> ::pin_project::UnsafeUnpin for Enum where - __Enum<'pin, T, U>: ::pin_project::__private::Unpin + unsafe impl<'pin, T, U> _pin_project::UnsafeUnpin for Enum where + __Enum<'pin, T, U>: _pin_project::__private::Unpin { } trait EnumMustNotImplDrop {} #[allow(clippy::drop_bounds, drop_bounds)] - impl EnumMustNotImplDrop for T {} + impl EnumMustNotImplDrop for T {} impl EnumMustNotImplDrop for Enum {} #[doc(hidden)] - impl ::pin_project::__private::PinnedDrop for Enum { - unsafe fn drop(self: ::pin_project::__private::Pin<&mut Self>) {} + impl _pin_project::__private::PinnedDrop for Enum { + unsafe fn drop(self: _pin_project::__private::Pin<&mut Self>) {} } }; fn main() {} diff --git a/tests/expand/default/struct.expanded.rs b/tests/expand/default/struct.expanded.rs index 794675a..3089a54 100644 --- a/tests/expand/default/struct.expanded.rs +++ b/tests/expand/default/struct.expanded.rs @@ -14,10 +14,13 @@ struct Struct { #[allow(clippy::pattern_type_mismatch)] #[allow(clippy::redundant_pub_crate)] #[allow(clippy::type_repetition_in_bounds)] +#[allow(unused_qualifications)] #[allow(clippy::semicolon_if_nothing_returned)] #[allow(clippy::use_self)] #[allow(clippy::used_underscore_binding)] const _: () = { + #[allow(unused_extern_crates)] + extern crate pin_project as _pin_project; #[allow(dead_code)] #[allow(clippy::mut_mut)] struct __StructProjection<'pin, T, U> @@ -38,24 +41,24 @@ const _: () = { } impl Struct { fn project<'pin>( - self: ::pin_project::__private::Pin<&'pin mut Self>, + self: _pin_project::__private::Pin<&'pin mut Self>, ) -> __StructProjection<'pin, T, U> { unsafe { let Self { pinned, unpinned } = self.get_unchecked_mut(); __StructProjection { - pinned: ::pin_project::__private::Pin::new_unchecked(pinned), + pinned: _pin_project::__private::Pin::new_unchecked(pinned), unpinned, } } } #[allow(clippy::missing_const_for_fn)] fn project_ref<'pin>( - self: ::pin_project::__private::Pin<&'pin Self>, + self: _pin_project::__private::Pin<&'pin Self>, ) -> __StructProjectionRef<'pin, T, U> { unsafe { let Self { pinned, unpinned } = self.get_ref(); __StructProjectionRef { - pinned: ::pin_project::__private::Pin::new_unchecked(pinned), + pinned: _pin_project::__private::Pin::new_unchecked(pinned), unpinned, } } @@ -68,31 +71,31 @@ const _: () = { } #[allow(missing_debug_implementations)] struct __Struct<'pin, T, U> { - __pin_project_use_generics: ::pin_project::__private::AlwaysUnpin< + __pin_project_use_generics: _pin_project::__private::AlwaysUnpin< 'pin, ( - ::pin_project::__private::PhantomData, - ::pin_project::__private::PhantomData, + _pin_project::__private::PhantomData, + _pin_project::__private::PhantomData, ), >, __field0: T, } - impl<'pin, T, U> ::pin_project::__private::Unpin for Struct where - __Struct<'pin, T, U>: ::pin_project::__private::Unpin + impl<'pin, T, U> _pin_project::__private::Unpin for Struct where + __Struct<'pin, T, U>: _pin_project::__private::Unpin { } #[doc(hidden)] - unsafe impl<'pin, T, U> ::pin_project::UnsafeUnpin for Struct where - __Struct<'pin, T, U>: ::pin_project::__private::Unpin + unsafe impl<'pin, T, U> _pin_project::UnsafeUnpin for Struct where + __Struct<'pin, T, U>: _pin_project::__private::Unpin { } trait StructMustNotImplDrop {} #[allow(clippy::drop_bounds, drop_bounds)] - impl StructMustNotImplDrop for T {} + impl StructMustNotImplDrop for T {} impl StructMustNotImplDrop for Struct {} #[doc(hidden)] - impl ::pin_project::__private::PinnedDrop for Struct { - unsafe fn drop(self: ::pin_project::__private::Pin<&mut Self>) {} + impl _pin_project::__private::PinnedDrop for Struct { + unsafe fn drop(self: _pin_project::__private::Pin<&mut Self>) {} } }; fn main() {} diff --git a/tests/expand/default/tuple_struct.expanded.rs b/tests/expand/default/tuple_struct.expanded.rs index 6a3dfbf..cc9b75e 100644 --- a/tests/expand/default/tuple_struct.expanded.rs +++ b/tests/expand/default/tuple_struct.expanded.rs @@ -10,10 +10,13 @@ struct TupleStruct(#[pin] T, U); #[allow(clippy::pattern_type_mismatch)] #[allow(clippy::redundant_pub_crate)] #[allow(clippy::type_repetition_in_bounds)] +#[allow(unused_qualifications)] #[allow(clippy::semicolon_if_nothing_returned)] #[allow(clippy::use_self)] #[allow(clippy::used_underscore_binding)] const _: () = { + #[allow(unused_extern_crates)] + extern crate pin_project as _pin_project; #[allow(dead_code)] #[allow(clippy::mut_mut)] struct __TupleStructProjection<'pin, T, U>( @@ -32,20 +35,20 @@ const _: () = { TupleStruct: 'pin; impl TupleStruct { fn project<'pin>( - self: ::pin_project::__private::Pin<&'pin mut Self>, + self: _pin_project::__private::Pin<&'pin mut Self>, ) -> __TupleStructProjection<'pin, T, U> { unsafe { let Self(_0, _1) = self.get_unchecked_mut(); - __TupleStructProjection(::pin_project::__private::Pin::new_unchecked(_0), _1) + __TupleStructProjection(_pin_project::__private::Pin::new_unchecked(_0), _1) } } #[allow(clippy::missing_const_for_fn)] fn project_ref<'pin>( - self: ::pin_project::__private::Pin<&'pin Self>, + self: _pin_project::__private::Pin<&'pin Self>, ) -> __TupleStructProjectionRef<'pin, T, U> { unsafe { let Self(_0, _1) = self.get_ref(); - __TupleStructProjectionRef(::pin_project::__private::Pin::new_unchecked(_0), _1) + __TupleStructProjectionRef(_pin_project::__private::Pin::new_unchecked(_0), _1) } } } @@ -56,31 +59,31 @@ const _: () = { } #[allow(missing_debug_implementations)] struct __TupleStruct<'pin, T, U> { - __pin_project_use_generics: ::pin_project::__private::AlwaysUnpin< + __pin_project_use_generics: _pin_project::__private::AlwaysUnpin< 'pin, ( - ::pin_project::__private::PhantomData, - ::pin_project::__private::PhantomData, + _pin_project::__private::PhantomData, + _pin_project::__private::PhantomData, ), >, __field0: T, } - impl<'pin, T, U> ::pin_project::__private::Unpin for TupleStruct where - __TupleStruct<'pin, T, U>: ::pin_project::__private::Unpin + impl<'pin, T, U> _pin_project::__private::Unpin for TupleStruct where + __TupleStruct<'pin, T, U>: _pin_project::__private::Unpin { } #[doc(hidden)] - unsafe impl<'pin, T, U> ::pin_project::UnsafeUnpin for TupleStruct where - __TupleStruct<'pin, T, U>: ::pin_project::__private::Unpin + unsafe impl<'pin, T, U> _pin_project::UnsafeUnpin for TupleStruct where + __TupleStruct<'pin, T, U>: _pin_project::__private::Unpin { } trait TupleStructMustNotImplDrop {} #[allow(clippy::drop_bounds, drop_bounds)] - impl TupleStructMustNotImplDrop for T {} + impl TupleStructMustNotImplDrop for T {} impl TupleStructMustNotImplDrop for TupleStruct {} #[doc(hidden)] - impl ::pin_project::__private::PinnedDrop for TupleStruct { - unsafe fn drop(self: ::pin_project::__private::Pin<&mut Self>) {} + impl _pin_project::__private::PinnedDrop for TupleStruct { + unsafe fn drop(self: _pin_project::__private::Pin<&mut Self>) {} } }; fn main() {} diff --git a/tests/expand/multifields/enum.expanded.rs b/tests/expand/multifields/enum.expanded.rs index 6ccbd9d..fd31201 100644 --- a/tests/expand/multifields/enum.expanded.rs +++ b/tests/expand/multifields/enum.expanded.rs @@ -106,13 +106,16 @@ enum EnumProjOwn { #[allow(clippy::pattern_type_mismatch)] #[allow(clippy::redundant_pub_crate)] #[allow(clippy::type_repetition_in_bounds)] +#[allow(unused_qualifications)] #[allow(clippy::semicolon_if_nothing_returned)] #[allow(clippy::use_self)] #[allow(clippy::used_underscore_binding)] const _: () = { + #[allow(unused_extern_crates)] + extern crate pin_project as _pin_project; impl Enum { fn project<'pin>( - self: ::pin_project::__private::Pin<&'pin mut Self>, + self: _pin_project::__private::Pin<&'pin mut Self>, ) -> EnumProj<'pin, T, U> { unsafe { match self.get_unchecked_mut() { @@ -122,14 +125,14 @@ const _: () = { unpinned1, unpinned2, } => EnumProj::Struct { - pinned1: ::pin_project::__private::Pin::new_unchecked(pinned1), - pinned2: ::pin_project::__private::Pin::new_unchecked(pinned2), + pinned1: _pin_project::__private::Pin::new_unchecked(pinned1), + pinned2: _pin_project::__private::Pin::new_unchecked(pinned2), unpinned1, unpinned2, }, Self::Tuple(_0, _1, _2, _3) => EnumProj::Tuple( - ::pin_project::__private::Pin::new_unchecked(_0), - ::pin_project::__private::Pin::new_unchecked(_1), + _pin_project::__private::Pin::new_unchecked(_0), + _pin_project::__private::Pin::new_unchecked(_1), _2, _3, ), @@ -139,7 +142,7 @@ const _: () = { } #[allow(clippy::missing_const_for_fn)] fn project_ref<'pin>( - self: ::pin_project::__private::Pin<&'pin Self>, + self: _pin_project::__private::Pin<&'pin Self>, ) -> EnumProjRef<'pin, T, U> { unsafe { match self.get_ref() { @@ -149,14 +152,14 @@ const _: () = { unpinned1, unpinned2, } => EnumProjRef::Struct { - pinned1: ::pin_project::__private::Pin::new_unchecked(pinned1), - pinned2: ::pin_project::__private::Pin::new_unchecked(pinned2), + pinned1: _pin_project::__private::Pin::new_unchecked(pinned1), + pinned2: _pin_project::__private::Pin::new_unchecked(pinned2), unpinned1, unpinned2, }, Self::Tuple(_0, _1, _2, _3) => EnumProjRef::Tuple( - ::pin_project::__private::Pin::new_unchecked(_0), - ::pin_project::__private::Pin::new_unchecked(_1), + _pin_project::__private::Pin::new_unchecked(_0), + _pin_project::__private::Pin::new_unchecked(_1), _2, _3, ), @@ -165,15 +168,13 @@ const _: () = { } } fn project_replace( - self: ::pin_project::__private::Pin<&mut Self>, + self: _pin_project::__private::Pin<&mut Self>, __replacement: Self, ) -> EnumProjOwn { unsafe { let __self_ptr: *mut Self = self.get_unchecked_mut(); - let __guard = ::pin_project::__private::UnsafeOverwriteGuard { - target: __self_ptr, - value: ::pin_project::__private::ManuallyDrop::new(__replacement), - }; + let __guard = + _pin_project::__private::UnsafeOverwriteGuard::new(__self_ptr, __replacement); match &mut *__self_ptr { Self::Struct { pinned1, @@ -182,27 +183,29 @@ const _: () = { unpinned2, } => { let __result = EnumProjOwn::Struct { - pinned1: ::pin_project::__private::PhantomData, - pinned2: ::pin_project::__private::PhantomData, - unpinned1: ::pin_project::__private::ptr::read(unpinned1), - unpinned2: ::pin_project::__private::ptr::read(unpinned2), + pinned1: _pin_project::__private::PhantomData, + pinned2: _pin_project::__private::PhantomData, + unpinned1: _pin_project::__private::ptr::read(unpinned1), + unpinned2: _pin_project::__private::ptr::read(unpinned2), }; { - let __guard = ::pin_project::__private::UnsafeDropInPlaceGuard(pinned2); - let __guard = ::pin_project::__private::UnsafeDropInPlaceGuard(pinned1); + let __guard = + _pin_project::__private::UnsafeDropInPlaceGuard::new(pinned2); + let __guard = + _pin_project::__private::UnsafeDropInPlaceGuard::new(pinned1); } __result } Self::Tuple(_0, _1, _2, _3) => { let __result = EnumProjOwn::Tuple( - ::pin_project::__private::PhantomData, - ::pin_project::__private::PhantomData, - ::pin_project::__private::ptr::read(_2), - ::pin_project::__private::ptr::read(_3), + _pin_project::__private::PhantomData, + _pin_project::__private::PhantomData, + _pin_project::__private::ptr::read(_2), + _pin_project::__private::ptr::read(_3), ); { - let __guard = ::pin_project::__private::UnsafeDropInPlaceGuard(_1); - let __guard = ::pin_project::__private::UnsafeDropInPlaceGuard(_0); + let __guard = _pin_project::__private::UnsafeDropInPlaceGuard::new(_1); + let __guard = _pin_project::__private::UnsafeDropInPlaceGuard::new(_0); } __result } @@ -217,11 +220,11 @@ const _: () = { } #[allow(missing_debug_implementations)] struct __Enum<'pin, T, U> { - __pin_project_use_generics: ::pin_project::__private::AlwaysUnpin< + __pin_project_use_generics: _pin_project::__private::AlwaysUnpin< 'pin, ( - ::pin_project::__private::PhantomData, - ::pin_project::__private::PhantomData, + _pin_project::__private::PhantomData, + _pin_project::__private::PhantomData, ), >, __field0: T, @@ -229,22 +232,22 @@ const _: () = { __field2: T, __field3: T, } - impl<'pin, T, U> ::pin_project::__private::Unpin for Enum where - __Enum<'pin, T, U>: ::pin_project::__private::Unpin + impl<'pin, T, U> _pin_project::__private::Unpin for Enum where + __Enum<'pin, T, U>: _pin_project::__private::Unpin { } #[doc(hidden)] - unsafe impl<'pin, T, U> ::pin_project::UnsafeUnpin for Enum where - __Enum<'pin, T, U>: ::pin_project::__private::Unpin + unsafe impl<'pin, T, U> _pin_project::UnsafeUnpin for Enum where + __Enum<'pin, T, U>: _pin_project::__private::Unpin { } trait EnumMustNotImplDrop {} #[allow(clippy::drop_bounds, drop_bounds)] - impl EnumMustNotImplDrop for T {} + impl EnumMustNotImplDrop for T {} impl EnumMustNotImplDrop for Enum {} #[doc(hidden)] - impl ::pin_project::__private::PinnedDrop for Enum { - unsafe fn drop(self: ::pin_project::__private::Pin<&mut Self>) {} + impl _pin_project::__private::PinnedDrop for Enum { + unsafe fn drop(self: _pin_project::__private::Pin<&mut Self>) {} } }; fn main() {} diff --git a/tests/expand/multifields/struct.expanded.rs b/tests/expand/multifields/struct.expanded.rs index 7e3505b..7ed1f3e 100644 --- a/tests/expand/multifields/struct.expanded.rs +++ b/tests/expand/multifields/struct.expanded.rs @@ -17,10 +17,13 @@ struct Struct { #[allow(clippy::pattern_type_mismatch)] #[allow(clippy::redundant_pub_crate)] #[allow(clippy::type_repetition_in_bounds)] +#[allow(unused_qualifications)] #[allow(clippy::semicolon_if_nothing_returned)] #[allow(clippy::use_self)] #[allow(clippy::used_underscore_binding)] const _: () = { + #[allow(unused_extern_crates)] + extern crate pin_project as _pin_project; #[allow(dead_code)] #[allow(clippy::mut_mut)] struct __StructProjection<'pin, T, U> @@ -52,7 +55,7 @@ const _: () = { } impl Struct { fn project<'pin>( - self: ::pin_project::__private::Pin<&'pin mut Self>, + self: _pin_project::__private::Pin<&'pin mut Self>, ) -> __StructProjection<'pin, T, U> { unsafe { let Self { @@ -62,8 +65,8 @@ const _: () = { unpinned2, } = self.get_unchecked_mut(); __StructProjection { - pinned1: ::pin_project::__private::Pin::new_unchecked(pinned1), - pinned2: ::pin_project::__private::Pin::new_unchecked(pinned2), + pinned1: _pin_project::__private::Pin::new_unchecked(pinned1), + pinned2: _pin_project::__private::Pin::new_unchecked(pinned2), unpinned1, unpinned2, } @@ -71,7 +74,7 @@ const _: () = { } #[allow(clippy::missing_const_for_fn)] fn project_ref<'pin>( - self: ::pin_project::__private::Pin<&'pin Self>, + self: _pin_project::__private::Pin<&'pin Self>, ) -> __StructProjectionRef<'pin, T, U> { unsafe { let Self { @@ -81,23 +84,21 @@ const _: () = { unpinned2, } = self.get_ref(); __StructProjectionRef { - pinned1: ::pin_project::__private::Pin::new_unchecked(pinned1), - pinned2: ::pin_project::__private::Pin::new_unchecked(pinned2), + pinned1: _pin_project::__private::Pin::new_unchecked(pinned1), + pinned2: _pin_project::__private::Pin::new_unchecked(pinned2), unpinned1, unpinned2, } } } fn project_replace( - self: ::pin_project::__private::Pin<&mut Self>, + self: _pin_project::__private::Pin<&mut Self>, __replacement: Self, ) -> __StructProjectionOwned { unsafe { let __self_ptr: *mut Self = self.get_unchecked_mut(); - let __guard = ::pin_project::__private::UnsafeOverwriteGuard { - target: __self_ptr, - value: ::pin_project::__private::ManuallyDrop::new(__replacement), - }; + let __guard = + _pin_project::__private::UnsafeOverwriteGuard::new(__self_ptr, __replacement); let Self { pinned1, pinned2, @@ -105,14 +106,14 @@ const _: () = { unpinned2, } = &mut *__self_ptr; let __result = __StructProjectionOwned { - pinned1: ::pin_project::__private::PhantomData, - pinned2: ::pin_project::__private::PhantomData, - unpinned1: ::pin_project::__private::ptr::read(unpinned1), - unpinned2: ::pin_project::__private::ptr::read(unpinned2), + pinned1: _pin_project::__private::PhantomData, + pinned2: _pin_project::__private::PhantomData, + unpinned1: _pin_project::__private::ptr::read(unpinned1), + unpinned2: _pin_project::__private::ptr::read(unpinned2), }; { - let __guard = ::pin_project::__private::UnsafeDropInPlaceGuard(pinned2); - let __guard = ::pin_project::__private::UnsafeDropInPlaceGuard(pinned1); + let __guard = _pin_project::__private::UnsafeDropInPlaceGuard::new(pinned2); + let __guard = _pin_project::__private::UnsafeDropInPlaceGuard::new(pinned1); } __result } @@ -127,32 +128,32 @@ const _: () = { } #[allow(missing_debug_implementations)] struct __Struct<'pin, T, U> { - __pin_project_use_generics: ::pin_project::__private::AlwaysUnpin< + __pin_project_use_generics: _pin_project::__private::AlwaysUnpin< 'pin, ( - ::pin_project::__private::PhantomData, - ::pin_project::__private::PhantomData, + _pin_project::__private::PhantomData, + _pin_project::__private::PhantomData, ), >, __field0: T, __field1: T, } - impl<'pin, T, U> ::pin_project::__private::Unpin for Struct where - __Struct<'pin, T, U>: ::pin_project::__private::Unpin + impl<'pin, T, U> _pin_project::__private::Unpin for Struct where + __Struct<'pin, T, U>: _pin_project::__private::Unpin { } #[doc(hidden)] - unsafe impl<'pin, T, U> ::pin_project::UnsafeUnpin for Struct where - __Struct<'pin, T, U>: ::pin_project::__private::Unpin + unsafe impl<'pin, T, U> _pin_project::UnsafeUnpin for Struct where + __Struct<'pin, T, U>: _pin_project::__private::Unpin { } trait StructMustNotImplDrop {} #[allow(clippy::drop_bounds, drop_bounds)] - impl StructMustNotImplDrop for T {} + impl StructMustNotImplDrop for T {} impl StructMustNotImplDrop for Struct {} #[doc(hidden)] - impl ::pin_project::__private::PinnedDrop for Struct { - unsafe fn drop(self: ::pin_project::__private::Pin<&mut Self>) {} + impl _pin_project::__private::PinnedDrop for Struct { + unsafe fn drop(self: _pin_project::__private::Pin<&mut Self>) {} } }; fn main() {} diff --git a/tests/expand/multifields/tuple_struct.expanded.rs b/tests/expand/multifields/tuple_struct.expanded.rs index 7b47899..351c084 100644 --- a/tests/expand/multifields/tuple_struct.expanded.rs +++ b/tests/expand/multifields/tuple_struct.expanded.rs @@ -10,10 +10,13 @@ struct TupleStruct(#[pin] T, #[pin] T, U, U); #[allow(clippy::pattern_type_mismatch)] #[allow(clippy::redundant_pub_crate)] #[allow(clippy::type_repetition_in_bounds)] +#[allow(unused_qualifications)] #[allow(clippy::semicolon_if_nothing_returned)] #[allow(clippy::use_self)] #[allow(clippy::used_underscore_binding)] const _: () = { + #[allow(unused_extern_crates)] + extern crate pin_project as _pin_project; #[allow(dead_code)] #[allow(clippy::mut_mut)] struct __TupleStructProjection<'pin, T, U>( @@ -43,13 +46,13 @@ const _: () = { ); impl TupleStruct { fn project<'pin>( - self: ::pin_project::__private::Pin<&'pin mut Self>, + self: _pin_project::__private::Pin<&'pin mut Self>, ) -> __TupleStructProjection<'pin, T, U> { unsafe { let Self(_0, _1, _2, _3) = self.get_unchecked_mut(); __TupleStructProjection( - ::pin_project::__private::Pin::new_unchecked(_0), - ::pin_project::__private::Pin::new_unchecked(_1), + _pin_project::__private::Pin::new_unchecked(_0), + _pin_project::__private::Pin::new_unchecked(_1), _2, _3, ) @@ -57,38 +60,36 @@ const _: () = { } #[allow(clippy::missing_const_for_fn)] fn project_ref<'pin>( - self: ::pin_project::__private::Pin<&'pin Self>, + self: _pin_project::__private::Pin<&'pin Self>, ) -> __TupleStructProjectionRef<'pin, T, U> { unsafe { let Self(_0, _1, _2, _3) = self.get_ref(); __TupleStructProjectionRef( - ::pin_project::__private::Pin::new_unchecked(_0), - ::pin_project::__private::Pin::new_unchecked(_1), + _pin_project::__private::Pin::new_unchecked(_0), + _pin_project::__private::Pin::new_unchecked(_1), _2, _3, ) } } fn project_replace( - self: ::pin_project::__private::Pin<&mut Self>, + self: _pin_project::__private::Pin<&mut Self>, __replacement: Self, ) -> __TupleStructProjectionOwned { unsafe { let __self_ptr: *mut Self = self.get_unchecked_mut(); - let __guard = ::pin_project::__private::UnsafeOverwriteGuard { - target: __self_ptr, - value: ::pin_project::__private::ManuallyDrop::new(__replacement), - }; + let __guard = + _pin_project::__private::UnsafeOverwriteGuard::new(__self_ptr, __replacement); let Self(_0, _1, _2, _3) = &mut *__self_ptr; let __result = __TupleStructProjectionOwned( - ::pin_project::__private::PhantomData, - ::pin_project::__private::PhantomData, - ::pin_project::__private::ptr::read(_2), - ::pin_project::__private::ptr::read(_3), + _pin_project::__private::PhantomData, + _pin_project::__private::PhantomData, + _pin_project::__private::ptr::read(_2), + _pin_project::__private::ptr::read(_3), ); { - let __guard = ::pin_project::__private::UnsafeDropInPlaceGuard(_1); - let __guard = ::pin_project::__private::UnsafeDropInPlaceGuard(_0); + let __guard = _pin_project::__private::UnsafeDropInPlaceGuard::new(_1); + let __guard = _pin_project::__private::UnsafeDropInPlaceGuard::new(_0); } __result } @@ -103,32 +104,32 @@ const _: () = { } #[allow(missing_debug_implementations)] struct __TupleStruct<'pin, T, U> { - __pin_project_use_generics: ::pin_project::__private::AlwaysUnpin< + __pin_project_use_generics: _pin_project::__private::AlwaysUnpin< 'pin, ( - ::pin_project::__private::PhantomData, - ::pin_project::__private::PhantomData, + _pin_project::__private::PhantomData, + _pin_project::__private::PhantomData, ), >, __field0: T, __field1: T, } - impl<'pin, T, U> ::pin_project::__private::Unpin for TupleStruct where - __TupleStruct<'pin, T, U>: ::pin_project::__private::Unpin + impl<'pin, T, U> _pin_project::__private::Unpin for TupleStruct where + __TupleStruct<'pin, T, U>: _pin_project::__private::Unpin { } #[doc(hidden)] - unsafe impl<'pin, T, U> ::pin_project::UnsafeUnpin for TupleStruct where - __TupleStruct<'pin, T, U>: ::pin_project::__private::Unpin + unsafe impl<'pin, T, U> _pin_project::UnsafeUnpin for TupleStruct where + __TupleStruct<'pin, T, U>: _pin_project::__private::Unpin { } trait TupleStructMustNotImplDrop {} #[allow(clippy::drop_bounds, drop_bounds)] - impl TupleStructMustNotImplDrop for T {} + impl TupleStructMustNotImplDrop for T {} impl TupleStructMustNotImplDrop for TupleStruct {} #[doc(hidden)] - impl ::pin_project::__private::PinnedDrop for TupleStruct { - unsafe fn drop(self: ::pin_project::__private::Pin<&mut Self>) {} + impl _pin_project::__private::PinnedDrop for TupleStruct { + unsafe fn drop(self: _pin_project::__private::Pin<&mut Self>) {} } }; fn main() {} diff --git a/tests/expand/naming/enum-all.expanded.rs b/tests/expand/naming/enum-all.expanded.rs index 21c1c59..7259a13 100644 --- a/tests/expand/naming/enum-all.expanded.rs +++ b/tests/expand/naming/enum-all.expanded.rs @@ -82,20 +82,23 @@ enum ProjOwn { #[allow(clippy::pattern_type_mismatch)] #[allow(clippy::redundant_pub_crate)] #[allow(clippy::type_repetition_in_bounds)] +#[allow(unused_qualifications)] #[allow(clippy::semicolon_if_nothing_returned)] #[allow(clippy::use_self)] #[allow(clippy::used_underscore_binding)] const _: () = { + #[allow(unused_extern_crates)] + extern crate pin_project as _pin_project; impl Enum { - fn project<'pin>(self: ::pin_project::__private::Pin<&'pin mut Self>) -> Proj<'pin, T, U> { + fn project<'pin>(self: _pin_project::__private::Pin<&'pin mut Self>) -> Proj<'pin, T, U> { unsafe { match self.get_unchecked_mut() { Self::Struct { pinned, unpinned } => Proj::Struct { - pinned: ::pin_project::__private::Pin::new_unchecked(pinned), + pinned: _pin_project::__private::Pin::new_unchecked(pinned), unpinned, }, Self::Tuple(_0, _1) => { - Proj::Tuple(::pin_project::__private::Pin::new_unchecked(_0), _1) + Proj::Tuple(_pin_project::__private::Pin::new_unchecked(_0), _1) } Self::Unit => Proj::Unit, } @@ -103,49 +106,48 @@ const _: () = { } #[allow(clippy::missing_const_for_fn)] fn project_ref<'pin>( - self: ::pin_project::__private::Pin<&'pin Self>, + self: _pin_project::__private::Pin<&'pin Self>, ) -> ProjRef<'pin, T, U> { unsafe { match self.get_ref() { Self::Struct { pinned, unpinned } => ProjRef::Struct { - pinned: ::pin_project::__private::Pin::new_unchecked(pinned), + pinned: _pin_project::__private::Pin::new_unchecked(pinned), unpinned, }, Self::Tuple(_0, _1) => { - ProjRef::Tuple(::pin_project::__private::Pin::new_unchecked(_0), _1) + ProjRef::Tuple(_pin_project::__private::Pin::new_unchecked(_0), _1) } Self::Unit => ProjRef::Unit, } } } fn project_replace( - self: ::pin_project::__private::Pin<&mut Self>, + self: _pin_project::__private::Pin<&mut Self>, __replacement: Self, ) -> ProjOwn { unsafe { let __self_ptr: *mut Self = self.get_unchecked_mut(); - let __guard = ::pin_project::__private::UnsafeOverwriteGuard { - target: __self_ptr, - value: ::pin_project::__private::ManuallyDrop::new(__replacement), - }; + let __guard = + _pin_project::__private::UnsafeOverwriteGuard::new(__self_ptr, __replacement); match &mut *__self_ptr { Self::Struct { pinned, unpinned } => { let __result = ProjOwn::Struct { - pinned: ::pin_project::__private::PhantomData, - unpinned: ::pin_project::__private::ptr::read(unpinned), + pinned: _pin_project::__private::PhantomData, + unpinned: _pin_project::__private::ptr::read(unpinned), }; { - let __guard = ::pin_project::__private::UnsafeDropInPlaceGuard(pinned); + let __guard = + _pin_project::__private::UnsafeDropInPlaceGuard::new(pinned); } __result } Self::Tuple(_0, _1) => { let __result = ProjOwn::Tuple( - ::pin_project::__private::PhantomData, - ::pin_project::__private::ptr::read(_1), + _pin_project::__private::PhantomData, + _pin_project::__private::ptr::read(_1), ); { - let __guard = ::pin_project::__private::UnsafeDropInPlaceGuard(_0); + let __guard = _pin_project::__private::UnsafeDropInPlaceGuard::new(_0); } __result } @@ -160,32 +162,32 @@ const _: () = { } #[allow(missing_debug_implementations)] struct __Enum<'pin, T, U> { - __pin_project_use_generics: ::pin_project::__private::AlwaysUnpin< + __pin_project_use_generics: _pin_project::__private::AlwaysUnpin< 'pin, ( - ::pin_project::__private::PhantomData, - ::pin_project::__private::PhantomData, + _pin_project::__private::PhantomData, + _pin_project::__private::PhantomData, ), >, __field0: T, __field1: T, } - impl<'pin, T, U> ::pin_project::__private::Unpin for Enum where - __Enum<'pin, T, U>: ::pin_project::__private::Unpin + impl<'pin, T, U> _pin_project::__private::Unpin for Enum where + __Enum<'pin, T, U>: _pin_project::__private::Unpin { } #[doc(hidden)] - unsafe impl<'pin, T, U> ::pin_project::UnsafeUnpin for Enum where - __Enum<'pin, T, U>: ::pin_project::__private::Unpin + unsafe impl<'pin, T, U> _pin_project::UnsafeUnpin for Enum where + __Enum<'pin, T, U>: _pin_project::__private::Unpin { } trait EnumMustNotImplDrop {} #[allow(clippy::drop_bounds, drop_bounds)] - impl EnumMustNotImplDrop for T {} + impl EnumMustNotImplDrop for T {} impl EnumMustNotImplDrop for Enum {} #[doc(hidden)] - impl ::pin_project::__private::PinnedDrop for Enum { - unsafe fn drop(self: ::pin_project::__private::Pin<&mut Self>) {} + impl _pin_project::__private::PinnedDrop for Enum { + unsafe fn drop(self: _pin_project::__private::Pin<&mut Self>) {} } }; fn main() {} diff --git a/tests/expand/naming/enum-mut.expanded.rs b/tests/expand/naming/enum-mut.expanded.rs index 7324372..09271fd 100644 --- a/tests/expand/naming/enum-mut.expanded.rs +++ b/tests/expand/naming/enum-mut.expanded.rs @@ -40,20 +40,23 @@ where #[allow(clippy::pattern_type_mismatch)] #[allow(clippy::redundant_pub_crate)] #[allow(clippy::type_repetition_in_bounds)] +#[allow(unused_qualifications)] #[allow(clippy::semicolon_if_nothing_returned)] #[allow(clippy::use_self)] #[allow(clippy::used_underscore_binding)] const _: () = { + #[allow(unused_extern_crates)] + extern crate pin_project as _pin_project; impl Enum { - fn project<'pin>(self: ::pin_project::__private::Pin<&'pin mut Self>) -> Proj<'pin, T, U> { + fn project<'pin>(self: _pin_project::__private::Pin<&'pin mut Self>) -> Proj<'pin, T, U> { unsafe { match self.get_unchecked_mut() { Self::Struct { pinned, unpinned } => Proj::Struct { - pinned: ::pin_project::__private::Pin::new_unchecked(pinned), + pinned: _pin_project::__private::Pin::new_unchecked(pinned), unpinned, }, Self::Tuple(_0, _1) => { - Proj::Tuple(::pin_project::__private::Pin::new_unchecked(_0), _1) + Proj::Tuple(_pin_project::__private::Pin::new_unchecked(_0), _1) } Self::Unit => Proj::Unit, } @@ -62,32 +65,32 @@ const _: () = { } #[allow(missing_debug_implementations)] struct __Enum<'pin, T, U> { - __pin_project_use_generics: ::pin_project::__private::AlwaysUnpin< + __pin_project_use_generics: _pin_project::__private::AlwaysUnpin< 'pin, ( - ::pin_project::__private::PhantomData, - ::pin_project::__private::PhantomData, + _pin_project::__private::PhantomData, + _pin_project::__private::PhantomData, ), >, __field0: T, __field1: T, } - impl<'pin, T, U> ::pin_project::__private::Unpin for Enum where - __Enum<'pin, T, U>: ::pin_project::__private::Unpin + impl<'pin, T, U> _pin_project::__private::Unpin for Enum where + __Enum<'pin, T, U>: _pin_project::__private::Unpin { } #[doc(hidden)] - unsafe impl<'pin, T, U> ::pin_project::UnsafeUnpin for Enum where - __Enum<'pin, T, U>: ::pin_project::__private::Unpin + unsafe impl<'pin, T, U> _pin_project::UnsafeUnpin for Enum where + __Enum<'pin, T, U>: _pin_project::__private::Unpin { } trait EnumMustNotImplDrop {} #[allow(clippy::drop_bounds, drop_bounds)] - impl EnumMustNotImplDrop for T {} + impl EnumMustNotImplDrop for T {} impl EnumMustNotImplDrop for Enum {} #[doc(hidden)] - impl ::pin_project::__private::PinnedDrop for Enum { - unsafe fn drop(self: ::pin_project::__private::Pin<&mut Self>) {} + impl _pin_project::__private::PinnedDrop for Enum { + unsafe fn drop(self: _pin_project::__private::Pin<&mut Self>) {} } }; fn main() {} diff --git a/tests/expand/naming/enum-none.expanded.rs b/tests/expand/naming/enum-none.expanded.rs index 3410001..54cd1f8 100644 --- a/tests/expand/naming/enum-none.expanded.rs +++ b/tests/expand/naming/enum-none.expanded.rs @@ -18,39 +18,42 @@ enum Enum { #[allow(clippy::pattern_type_mismatch)] #[allow(clippy::redundant_pub_crate)] #[allow(clippy::type_repetition_in_bounds)] +#[allow(unused_qualifications)] #[allow(clippy::semicolon_if_nothing_returned)] #[allow(clippy::use_self)] #[allow(clippy::used_underscore_binding)] const _: () = { + #[allow(unused_extern_crates)] + extern crate pin_project as _pin_project; impl Enum {} #[allow(missing_debug_implementations)] struct __Enum<'pin, T, U> { - __pin_project_use_generics: ::pin_project::__private::AlwaysUnpin< + __pin_project_use_generics: _pin_project::__private::AlwaysUnpin< 'pin, ( - ::pin_project::__private::PhantomData, - ::pin_project::__private::PhantomData, + _pin_project::__private::PhantomData, + _pin_project::__private::PhantomData, ), >, __field0: T, __field1: T, } - impl<'pin, T, U> ::pin_project::__private::Unpin for Enum where - __Enum<'pin, T, U>: ::pin_project::__private::Unpin + impl<'pin, T, U> _pin_project::__private::Unpin for Enum where + __Enum<'pin, T, U>: _pin_project::__private::Unpin { } #[doc(hidden)] - unsafe impl<'pin, T, U> ::pin_project::UnsafeUnpin for Enum where - __Enum<'pin, T, U>: ::pin_project::__private::Unpin + unsafe impl<'pin, T, U> _pin_project::UnsafeUnpin for Enum where + __Enum<'pin, T, U>: _pin_project::__private::Unpin { } trait EnumMustNotImplDrop {} #[allow(clippy::drop_bounds, drop_bounds)] - impl EnumMustNotImplDrop for T {} + impl EnumMustNotImplDrop for T {} impl EnumMustNotImplDrop for Enum {} #[doc(hidden)] - impl ::pin_project::__private::PinnedDrop for Enum { - unsafe fn drop(self: ::pin_project::__private::Pin<&mut Self>) {} + impl _pin_project::__private::PinnedDrop for Enum { + unsafe fn drop(self: _pin_project::__private::Pin<&mut Self>) {} } }; fn main() {} diff --git a/tests/expand/naming/enum-own.expanded.rs b/tests/expand/naming/enum-own.expanded.rs index a63a874..19ec570 100644 --- a/tests/expand/naming/enum-own.expanded.rs +++ b/tests/expand/naming/enum-own.expanded.rs @@ -38,39 +38,41 @@ enum ProjOwn { #[allow(clippy::pattern_type_mismatch)] #[allow(clippy::redundant_pub_crate)] #[allow(clippy::type_repetition_in_bounds)] +#[allow(unused_qualifications)] #[allow(clippy::semicolon_if_nothing_returned)] #[allow(clippy::use_self)] #[allow(clippy::used_underscore_binding)] const _: () = { + #[allow(unused_extern_crates)] + extern crate pin_project as _pin_project; impl Enum { fn project_replace( - self: ::pin_project::__private::Pin<&mut Self>, + self: _pin_project::__private::Pin<&mut Self>, __replacement: Self, ) -> ProjOwn { unsafe { let __self_ptr: *mut Self = self.get_unchecked_mut(); - let __guard = ::pin_project::__private::UnsafeOverwriteGuard { - target: __self_ptr, - value: ::pin_project::__private::ManuallyDrop::new(__replacement), - }; + let __guard = + _pin_project::__private::UnsafeOverwriteGuard::new(__self_ptr, __replacement); match &mut *__self_ptr { Self::Struct { pinned, unpinned } => { let __result = ProjOwn::Struct { - pinned: ::pin_project::__private::PhantomData, - unpinned: ::pin_project::__private::ptr::read(unpinned), + pinned: _pin_project::__private::PhantomData, + unpinned: _pin_project::__private::ptr::read(unpinned), }; { - let __guard = ::pin_project::__private::UnsafeDropInPlaceGuard(pinned); + let __guard = + _pin_project::__private::UnsafeDropInPlaceGuard::new(pinned); } __result } Self::Tuple(_0, _1) => { let __result = ProjOwn::Tuple( - ::pin_project::__private::PhantomData, - ::pin_project::__private::ptr::read(_1), + _pin_project::__private::PhantomData, + _pin_project::__private::ptr::read(_1), ); { - let __guard = ::pin_project::__private::UnsafeDropInPlaceGuard(_0); + let __guard = _pin_project::__private::UnsafeDropInPlaceGuard::new(_0); } __result } @@ -85,32 +87,32 @@ const _: () = { } #[allow(missing_debug_implementations)] struct __Enum<'pin, T, U> { - __pin_project_use_generics: ::pin_project::__private::AlwaysUnpin< + __pin_project_use_generics: _pin_project::__private::AlwaysUnpin< 'pin, ( - ::pin_project::__private::PhantomData, - ::pin_project::__private::PhantomData, + _pin_project::__private::PhantomData, + _pin_project::__private::PhantomData, ), >, __field0: T, __field1: T, } - impl<'pin, T, U> ::pin_project::__private::Unpin for Enum where - __Enum<'pin, T, U>: ::pin_project::__private::Unpin + impl<'pin, T, U> _pin_project::__private::Unpin for Enum where + __Enum<'pin, T, U>: _pin_project::__private::Unpin { } #[doc(hidden)] - unsafe impl<'pin, T, U> ::pin_project::UnsafeUnpin for Enum where - __Enum<'pin, T, U>: ::pin_project::__private::Unpin + unsafe impl<'pin, T, U> _pin_project::UnsafeUnpin for Enum where + __Enum<'pin, T, U>: _pin_project::__private::Unpin { } trait EnumMustNotImplDrop {} #[allow(clippy::drop_bounds, drop_bounds)] - impl EnumMustNotImplDrop for T {} + impl EnumMustNotImplDrop for T {} impl EnumMustNotImplDrop for Enum {} #[doc(hidden)] - impl ::pin_project::__private::PinnedDrop for Enum { - unsafe fn drop(self: ::pin_project::__private::Pin<&mut Self>) {} + impl _pin_project::__private::PinnedDrop for Enum { + unsafe fn drop(self: _pin_project::__private::Pin<&mut Self>) {} } }; fn main() {} diff --git a/tests/expand/naming/enum-ref.expanded.rs b/tests/expand/naming/enum-ref.expanded.rs index 6197557..4565d08 100644 --- a/tests/expand/naming/enum-ref.expanded.rs +++ b/tests/expand/naming/enum-ref.expanded.rs @@ -40,23 +40,26 @@ where #[allow(clippy::pattern_type_mismatch)] #[allow(clippy::redundant_pub_crate)] #[allow(clippy::type_repetition_in_bounds)] +#[allow(unused_qualifications)] #[allow(clippy::semicolon_if_nothing_returned)] #[allow(clippy::use_self)] #[allow(clippy::used_underscore_binding)] const _: () = { + #[allow(unused_extern_crates)] + extern crate pin_project as _pin_project; impl Enum { #[allow(clippy::missing_const_for_fn)] fn project_ref<'pin>( - self: ::pin_project::__private::Pin<&'pin Self>, + self: _pin_project::__private::Pin<&'pin Self>, ) -> ProjRef<'pin, T, U> { unsafe { match self.get_ref() { Self::Struct { pinned, unpinned } => ProjRef::Struct { - pinned: ::pin_project::__private::Pin::new_unchecked(pinned), + pinned: _pin_project::__private::Pin::new_unchecked(pinned), unpinned, }, Self::Tuple(_0, _1) => { - ProjRef::Tuple(::pin_project::__private::Pin::new_unchecked(_0), _1) + ProjRef::Tuple(_pin_project::__private::Pin::new_unchecked(_0), _1) } Self::Unit => ProjRef::Unit, } @@ -65,32 +68,32 @@ const _: () = { } #[allow(missing_debug_implementations)] struct __Enum<'pin, T, U> { - __pin_project_use_generics: ::pin_project::__private::AlwaysUnpin< + __pin_project_use_generics: _pin_project::__private::AlwaysUnpin< 'pin, ( - ::pin_project::__private::PhantomData, - ::pin_project::__private::PhantomData, + _pin_project::__private::PhantomData, + _pin_project::__private::PhantomData, ), >, __field0: T, __field1: T, } - impl<'pin, T, U> ::pin_project::__private::Unpin for Enum where - __Enum<'pin, T, U>: ::pin_project::__private::Unpin + impl<'pin, T, U> _pin_project::__private::Unpin for Enum where + __Enum<'pin, T, U>: _pin_project::__private::Unpin { } #[doc(hidden)] - unsafe impl<'pin, T, U> ::pin_project::UnsafeUnpin for Enum where - __Enum<'pin, T, U>: ::pin_project::__private::Unpin + unsafe impl<'pin, T, U> _pin_project::UnsafeUnpin for Enum where + __Enum<'pin, T, U>: _pin_project::__private::Unpin { } trait EnumMustNotImplDrop {} #[allow(clippy::drop_bounds, drop_bounds)] - impl EnumMustNotImplDrop for T {} + impl EnumMustNotImplDrop for T {} impl EnumMustNotImplDrop for Enum {} #[doc(hidden)] - impl ::pin_project::__private::PinnedDrop for Enum { - unsafe fn drop(self: ::pin_project::__private::Pin<&mut Self>) {} + impl _pin_project::__private::PinnedDrop for Enum { + unsafe fn drop(self: _pin_project::__private::Pin<&mut Self>) {} } }; fn main() {} diff --git a/tests/expand/naming/struct-all.expanded.rs b/tests/expand/naming/struct-all.expanded.rs index 54b63f5..4b46e34 100644 --- a/tests/expand/naming/struct-all.expanded.rs +++ b/tests/expand/naming/struct-all.expanded.rs @@ -64,49 +64,50 @@ struct ProjOwn { #[allow(clippy::pattern_type_mismatch)] #[allow(clippy::redundant_pub_crate)] #[allow(clippy::type_repetition_in_bounds)] +#[allow(unused_qualifications)] #[allow(clippy::semicolon_if_nothing_returned)] #[allow(clippy::use_self)] #[allow(clippy::used_underscore_binding)] const _: () = { + #[allow(unused_extern_crates)] + extern crate pin_project as _pin_project; impl Struct { - fn project<'pin>(self: ::pin_project::__private::Pin<&'pin mut Self>) -> Proj<'pin, T, U> { + fn project<'pin>(self: _pin_project::__private::Pin<&'pin mut Self>) -> Proj<'pin, T, U> { unsafe { let Self { pinned, unpinned } = self.get_unchecked_mut(); Proj { - pinned: ::pin_project::__private::Pin::new_unchecked(pinned), + pinned: _pin_project::__private::Pin::new_unchecked(pinned), unpinned, } } } #[allow(clippy::missing_const_for_fn)] fn project_ref<'pin>( - self: ::pin_project::__private::Pin<&'pin Self>, + self: _pin_project::__private::Pin<&'pin Self>, ) -> ProjRef<'pin, T, U> { unsafe { let Self { pinned, unpinned } = self.get_ref(); ProjRef { - pinned: ::pin_project::__private::Pin::new_unchecked(pinned), + pinned: _pin_project::__private::Pin::new_unchecked(pinned), unpinned, } } } fn project_replace( - self: ::pin_project::__private::Pin<&mut Self>, + self: _pin_project::__private::Pin<&mut Self>, __replacement: Self, ) -> ProjOwn { unsafe { let __self_ptr: *mut Self = self.get_unchecked_mut(); - let __guard = ::pin_project::__private::UnsafeOverwriteGuard { - target: __self_ptr, - value: ::pin_project::__private::ManuallyDrop::new(__replacement), - }; + let __guard = + _pin_project::__private::UnsafeOverwriteGuard::new(__self_ptr, __replacement); let Self { pinned, unpinned } = &mut *__self_ptr; let __result = ProjOwn { - pinned: ::pin_project::__private::PhantomData, - unpinned: ::pin_project::__private::ptr::read(unpinned), + pinned: _pin_project::__private::PhantomData, + unpinned: _pin_project::__private::ptr::read(unpinned), }; { - let __guard = ::pin_project::__private::UnsafeDropInPlaceGuard(pinned); + let __guard = _pin_project::__private::UnsafeDropInPlaceGuard::new(pinned); } __result } @@ -119,31 +120,31 @@ const _: () = { } #[allow(missing_debug_implementations)] struct __Struct<'pin, T, U> { - __pin_project_use_generics: ::pin_project::__private::AlwaysUnpin< + __pin_project_use_generics: _pin_project::__private::AlwaysUnpin< 'pin, ( - ::pin_project::__private::PhantomData, - ::pin_project::__private::PhantomData, + _pin_project::__private::PhantomData, + _pin_project::__private::PhantomData, ), >, __field0: T, } - impl<'pin, T, U> ::pin_project::__private::Unpin for Struct where - __Struct<'pin, T, U>: ::pin_project::__private::Unpin + impl<'pin, T, U> _pin_project::__private::Unpin for Struct where + __Struct<'pin, T, U>: _pin_project::__private::Unpin { } #[doc(hidden)] - unsafe impl<'pin, T, U> ::pin_project::UnsafeUnpin for Struct where - __Struct<'pin, T, U>: ::pin_project::__private::Unpin + unsafe impl<'pin, T, U> _pin_project::UnsafeUnpin for Struct where + __Struct<'pin, T, U>: _pin_project::__private::Unpin { } trait StructMustNotImplDrop {} #[allow(clippy::drop_bounds, drop_bounds)] - impl StructMustNotImplDrop for T {} + impl StructMustNotImplDrop for T {} impl StructMustNotImplDrop for Struct {} #[doc(hidden)] - impl ::pin_project::__private::PinnedDrop for Struct { - unsafe fn drop(self: ::pin_project::__private::Pin<&mut Self>) {} + impl _pin_project::__private::PinnedDrop for Struct { + unsafe fn drop(self: _pin_project::__private::Pin<&mut Self>) {} } }; fn main() {} diff --git a/tests/expand/naming/struct-mut.expanded.rs b/tests/expand/naming/struct-mut.expanded.rs index ee641d6..5803d6b 100644 --- a/tests/expand/naming/struct-mut.expanded.rs +++ b/tests/expand/naming/struct-mut.expanded.rs @@ -32,10 +32,13 @@ where #[allow(clippy::pattern_type_mismatch)] #[allow(clippy::redundant_pub_crate)] #[allow(clippy::type_repetition_in_bounds)] +#[allow(unused_qualifications)] #[allow(clippy::semicolon_if_nothing_returned)] #[allow(clippy::use_self)] #[allow(clippy::used_underscore_binding)] const _: () = { + #[allow(unused_extern_crates)] + extern crate pin_project as _pin_project; #[allow(dead_code)] #[allow(clippy::ref_option_ref)] struct __StructProjectionRef<'pin, T, U> @@ -46,23 +49,23 @@ const _: () = { unpinned: &'pin (U), } impl Struct { - fn project<'pin>(self: ::pin_project::__private::Pin<&'pin mut Self>) -> Proj<'pin, T, U> { + fn project<'pin>(self: _pin_project::__private::Pin<&'pin mut Self>) -> Proj<'pin, T, U> { unsafe { let Self { pinned, unpinned } = self.get_unchecked_mut(); Proj { - pinned: ::pin_project::__private::Pin::new_unchecked(pinned), + pinned: _pin_project::__private::Pin::new_unchecked(pinned), unpinned, } } } #[allow(clippy::missing_const_for_fn)] fn project_ref<'pin>( - self: ::pin_project::__private::Pin<&'pin Self>, + self: _pin_project::__private::Pin<&'pin Self>, ) -> __StructProjectionRef<'pin, T, U> { unsafe { let Self { pinned, unpinned } = self.get_ref(); __StructProjectionRef { - pinned: ::pin_project::__private::Pin::new_unchecked(pinned), + pinned: _pin_project::__private::Pin::new_unchecked(pinned), unpinned, } } @@ -75,31 +78,31 @@ const _: () = { } #[allow(missing_debug_implementations)] struct __Struct<'pin, T, U> { - __pin_project_use_generics: ::pin_project::__private::AlwaysUnpin< + __pin_project_use_generics: _pin_project::__private::AlwaysUnpin< 'pin, ( - ::pin_project::__private::PhantomData, - ::pin_project::__private::PhantomData, + _pin_project::__private::PhantomData, + _pin_project::__private::PhantomData, ), >, __field0: T, } - impl<'pin, T, U> ::pin_project::__private::Unpin for Struct where - __Struct<'pin, T, U>: ::pin_project::__private::Unpin + impl<'pin, T, U> _pin_project::__private::Unpin for Struct where + __Struct<'pin, T, U>: _pin_project::__private::Unpin { } #[doc(hidden)] - unsafe impl<'pin, T, U> ::pin_project::UnsafeUnpin for Struct where - __Struct<'pin, T, U>: ::pin_project::__private::Unpin + unsafe impl<'pin, T, U> _pin_project::UnsafeUnpin for Struct where + __Struct<'pin, T, U>: _pin_project::__private::Unpin { } trait StructMustNotImplDrop {} #[allow(clippy::drop_bounds, drop_bounds)] - impl StructMustNotImplDrop for T {} + impl StructMustNotImplDrop for T {} impl StructMustNotImplDrop for Struct {} #[doc(hidden)] - impl ::pin_project::__private::PinnedDrop for Struct { - unsafe fn drop(self: ::pin_project::__private::Pin<&mut Self>) {} + impl _pin_project::__private::PinnedDrop for Struct { + unsafe fn drop(self: _pin_project::__private::Pin<&mut Self>) {} } }; fn main() {} diff --git a/tests/expand/naming/struct-none.expanded.rs b/tests/expand/naming/struct-none.expanded.rs index 794675a..3089a54 100644 --- a/tests/expand/naming/struct-none.expanded.rs +++ b/tests/expand/naming/struct-none.expanded.rs @@ -14,10 +14,13 @@ struct Struct { #[allow(clippy::pattern_type_mismatch)] #[allow(clippy::redundant_pub_crate)] #[allow(clippy::type_repetition_in_bounds)] +#[allow(unused_qualifications)] #[allow(clippy::semicolon_if_nothing_returned)] #[allow(clippy::use_self)] #[allow(clippy::used_underscore_binding)] const _: () = { + #[allow(unused_extern_crates)] + extern crate pin_project as _pin_project; #[allow(dead_code)] #[allow(clippy::mut_mut)] struct __StructProjection<'pin, T, U> @@ -38,24 +41,24 @@ const _: () = { } impl Struct { fn project<'pin>( - self: ::pin_project::__private::Pin<&'pin mut Self>, + self: _pin_project::__private::Pin<&'pin mut Self>, ) -> __StructProjection<'pin, T, U> { unsafe { let Self { pinned, unpinned } = self.get_unchecked_mut(); __StructProjection { - pinned: ::pin_project::__private::Pin::new_unchecked(pinned), + pinned: _pin_project::__private::Pin::new_unchecked(pinned), unpinned, } } } #[allow(clippy::missing_const_for_fn)] fn project_ref<'pin>( - self: ::pin_project::__private::Pin<&'pin Self>, + self: _pin_project::__private::Pin<&'pin Self>, ) -> __StructProjectionRef<'pin, T, U> { unsafe { let Self { pinned, unpinned } = self.get_ref(); __StructProjectionRef { - pinned: ::pin_project::__private::Pin::new_unchecked(pinned), + pinned: _pin_project::__private::Pin::new_unchecked(pinned), unpinned, } } @@ -68,31 +71,31 @@ const _: () = { } #[allow(missing_debug_implementations)] struct __Struct<'pin, T, U> { - __pin_project_use_generics: ::pin_project::__private::AlwaysUnpin< + __pin_project_use_generics: _pin_project::__private::AlwaysUnpin< 'pin, ( - ::pin_project::__private::PhantomData, - ::pin_project::__private::PhantomData, + _pin_project::__private::PhantomData, + _pin_project::__private::PhantomData, ), >, __field0: T, } - impl<'pin, T, U> ::pin_project::__private::Unpin for Struct where - __Struct<'pin, T, U>: ::pin_project::__private::Unpin + impl<'pin, T, U> _pin_project::__private::Unpin for Struct where + __Struct<'pin, T, U>: _pin_project::__private::Unpin { } #[doc(hidden)] - unsafe impl<'pin, T, U> ::pin_project::UnsafeUnpin for Struct where - __Struct<'pin, T, U>: ::pin_project::__private::Unpin + unsafe impl<'pin, T, U> _pin_project::UnsafeUnpin for Struct where + __Struct<'pin, T, U>: _pin_project::__private::Unpin { } trait StructMustNotImplDrop {} #[allow(clippy::drop_bounds, drop_bounds)] - impl StructMustNotImplDrop for T {} + impl StructMustNotImplDrop for T {} impl StructMustNotImplDrop for Struct {} #[doc(hidden)] - impl ::pin_project::__private::PinnedDrop for Struct { - unsafe fn drop(self: ::pin_project::__private::Pin<&mut Self>) {} + impl _pin_project::__private::PinnedDrop for Struct { + unsafe fn drop(self: _pin_project::__private::Pin<&mut Self>) {} } }; fn main() {} diff --git a/tests/expand/naming/struct-own.expanded.rs b/tests/expand/naming/struct-own.expanded.rs index 2853838..d05c7d6 100644 --- a/tests/expand/naming/struct-own.expanded.rs +++ b/tests/expand/naming/struct-own.expanded.rs @@ -28,10 +28,13 @@ struct ProjOwn { #[allow(clippy::pattern_type_mismatch)] #[allow(clippy::redundant_pub_crate)] #[allow(clippy::type_repetition_in_bounds)] +#[allow(unused_qualifications)] #[allow(clippy::semicolon_if_nothing_returned)] #[allow(clippy::use_self)] #[allow(clippy::used_underscore_binding)] const _: () = { + #[allow(unused_extern_crates)] + extern crate pin_project as _pin_project; #[allow(dead_code)] #[allow(clippy::mut_mut)] struct __StructProjection<'pin, T, U> @@ -52,45 +55,43 @@ const _: () = { } impl Struct { fn project<'pin>( - self: ::pin_project::__private::Pin<&'pin mut Self>, + self: _pin_project::__private::Pin<&'pin mut Self>, ) -> __StructProjection<'pin, T, U> { unsafe { let Self { pinned, unpinned } = self.get_unchecked_mut(); __StructProjection { - pinned: ::pin_project::__private::Pin::new_unchecked(pinned), + pinned: _pin_project::__private::Pin::new_unchecked(pinned), unpinned, } } } #[allow(clippy::missing_const_for_fn)] fn project_ref<'pin>( - self: ::pin_project::__private::Pin<&'pin Self>, + self: _pin_project::__private::Pin<&'pin Self>, ) -> __StructProjectionRef<'pin, T, U> { unsafe { let Self { pinned, unpinned } = self.get_ref(); __StructProjectionRef { - pinned: ::pin_project::__private::Pin::new_unchecked(pinned), + pinned: _pin_project::__private::Pin::new_unchecked(pinned), unpinned, } } } fn project_replace( - self: ::pin_project::__private::Pin<&mut Self>, + self: _pin_project::__private::Pin<&mut Self>, __replacement: Self, ) -> ProjOwn { unsafe { let __self_ptr: *mut Self = self.get_unchecked_mut(); - let __guard = ::pin_project::__private::UnsafeOverwriteGuard { - target: __self_ptr, - value: ::pin_project::__private::ManuallyDrop::new(__replacement), - }; + let __guard = + _pin_project::__private::UnsafeOverwriteGuard::new(__self_ptr, __replacement); let Self { pinned, unpinned } = &mut *__self_ptr; let __result = ProjOwn { - pinned: ::pin_project::__private::PhantomData, - unpinned: ::pin_project::__private::ptr::read(unpinned), + pinned: _pin_project::__private::PhantomData, + unpinned: _pin_project::__private::ptr::read(unpinned), }; { - let __guard = ::pin_project::__private::UnsafeDropInPlaceGuard(pinned); + let __guard = _pin_project::__private::UnsafeDropInPlaceGuard::new(pinned); } __result } @@ -103,31 +104,31 @@ const _: () = { } #[allow(missing_debug_implementations)] struct __Struct<'pin, T, U> { - __pin_project_use_generics: ::pin_project::__private::AlwaysUnpin< + __pin_project_use_generics: _pin_project::__private::AlwaysUnpin< 'pin, ( - ::pin_project::__private::PhantomData, - ::pin_project::__private::PhantomData, + _pin_project::__private::PhantomData, + _pin_project::__private::PhantomData, ), >, __field0: T, } - impl<'pin, T, U> ::pin_project::__private::Unpin for Struct where - __Struct<'pin, T, U>: ::pin_project::__private::Unpin + impl<'pin, T, U> _pin_project::__private::Unpin for Struct where + __Struct<'pin, T, U>: _pin_project::__private::Unpin { } #[doc(hidden)] - unsafe impl<'pin, T, U> ::pin_project::UnsafeUnpin for Struct where - __Struct<'pin, T, U>: ::pin_project::__private::Unpin + unsafe impl<'pin, T, U> _pin_project::UnsafeUnpin for Struct where + __Struct<'pin, T, U>: _pin_project::__private::Unpin { } trait StructMustNotImplDrop {} #[allow(clippy::drop_bounds, drop_bounds)] - impl StructMustNotImplDrop for T {} + impl StructMustNotImplDrop for T {} impl StructMustNotImplDrop for Struct {} #[doc(hidden)] - impl ::pin_project::__private::PinnedDrop for Struct { - unsafe fn drop(self: ::pin_project::__private::Pin<&mut Self>) {} + impl _pin_project::__private::PinnedDrop for Struct { + unsafe fn drop(self: _pin_project::__private::Pin<&mut Self>) {} } }; fn main() {} diff --git a/tests/expand/naming/struct-ref.expanded.rs b/tests/expand/naming/struct-ref.expanded.rs index baee324..c131ec4 100644 --- a/tests/expand/naming/struct-ref.expanded.rs +++ b/tests/expand/naming/struct-ref.expanded.rs @@ -32,10 +32,13 @@ where #[allow(clippy::pattern_type_mismatch)] #[allow(clippy::redundant_pub_crate)] #[allow(clippy::type_repetition_in_bounds)] +#[allow(unused_qualifications)] #[allow(clippy::semicolon_if_nothing_returned)] #[allow(clippy::use_self)] #[allow(clippy::used_underscore_binding)] const _: () = { + #[allow(unused_extern_crates)] + extern crate pin_project as _pin_project; #[allow(dead_code)] #[allow(clippy::mut_mut)] struct __StructProjection<'pin, T, U> @@ -47,24 +50,24 @@ const _: () = { } impl Struct { fn project<'pin>( - self: ::pin_project::__private::Pin<&'pin mut Self>, + self: _pin_project::__private::Pin<&'pin mut Self>, ) -> __StructProjection<'pin, T, U> { unsafe { let Self { pinned, unpinned } = self.get_unchecked_mut(); __StructProjection { - pinned: ::pin_project::__private::Pin::new_unchecked(pinned), + pinned: _pin_project::__private::Pin::new_unchecked(pinned), unpinned, } } } #[allow(clippy::missing_const_for_fn)] fn project_ref<'pin>( - self: ::pin_project::__private::Pin<&'pin Self>, + self: _pin_project::__private::Pin<&'pin Self>, ) -> ProjRef<'pin, T, U> { unsafe { let Self { pinned, unpinned } = self.get_ref(); ProjRef { - pinned: ::pin_project::__private::Pin::new_unchecked(pinned), + pinned: _pin_project::__private::Pin::new_unchecked(pinned), unpinned, } } @@ -77,31 +80,31 @@ const _: () = { } #[allow(missing_debug_implementations)] struct __Struct<'pin, T, U> { - __pin_project_use_generics: ::pin_project::__private::AlwaysUnpin< + __pin_project_use_generics: _pin_project::__private::AlwaysUnpin< 'pin, ( - ::pin_project::__private::PhantomData, - ::pin_project::__private::PhantomData, + _pin_project::__private::PhantomData, + _pin_project::__private::PhantomData, ), >, __field0: T, } - impl<'pin, T, U> ::pin_project::__private::Unpin for Struct where - __Struct<'pin, T, U>: ::pin_project::__private::Unpin + impl<'pin, T, U> _pin_project::__private::Unpin for Struct where + __Struct<'pin, T, U>: _pin_project::__private::Unpin { } #[doc(hidden)] - unsafe impl<'pin, T, U> ::pin_project::UnsafeUnpin for Struct where - __Struct<'pin, T, U>: ::pin_project::__private::Unpin + unsafe impl<'pin, T, U> _pin_project::UnsafeUnpin for Struct where + __Struct<'pin, T, U>: _pin_project::__private::Unpin { } trait StructMustNotImplDrop {} #[allow(clippy::drop_bounds, drop_bounds)] - impl StructMustNotImplDrop for T {} + impl StructMustNotImplDrop for T {} impl StructMustNotImplDrop for Struct {} #[doc(hidden)] - impl ::pin_project::__private::PinnedDrop for Struct { - unsafe fn drop(self: ::pin_project::__private::Pin<&mut Self>) {} + impl _pin_project::__private::PinnedDrop for Struct { + unsafe fn drop(self: _pin_project::__private::Pin<&mut Self>) {} } }; fn main() {} diff --git a/tests/expand/naming/tuple_struct-all.expanded.rs b/tests/expand/naming/tuple_struct-all.expanded.rs index 125d483..042a798 100644 --- a/tests/expand/naming/tuple_struct-all.expanded.rs +++ b/tests/expand/naming/tuple_struct-all.expanded.rs @@ -49,43 +49,44 @@ struct ProjOwn(::pin_project::__private::PhantomData, U); #[allow(clippy::pattern_type_mismatch)] #[allow(clippy::redundant_pub_crate)] #[allow(clippy::type_repetition_in_bounds)] +#[allow(unused_qualifications)] #[allow(clippy::semicolon_if_nothing_returned)] #[allow(clippy::use_self)] #[allow(clippy::used_underscore_binding)] const _: () = { + #[allow(unused_extern_crates)] + extern crate pin_project as _pin_project; impl TupleStruct { - fn project<'pin>(self: ::pin_project::__private::Pin<&'pin mut Self>) -> Proj<'pin, T, U> { + fn project<'pin>(self: _pin_project::__private::Pin<&'pin mut Self>) -> Proj<'pin, T, U> { unsafe { let Self(_0, _1) = self.get_unchecked_mut(); - Proj(::pin_project::__private::Pin::new_unchecked(_0), _1) + Proj(_pin_project::__private::Pin::new_unchecked(_0), _1) } } #[allow(clippy::missing_const_for_fn)] fn project_ref<'pin>( - self: ::pin_project::__private::Pin<&'pin Self>, + self: _pin_project::__private::Pin<&'pin Self>, ) -> ProjRef<'pin, T, U> { unsafe { let Self(_0, _1) = self.get_ref(); - ProjRef(::pin_project::__private::Pin::new_unchecked(_0), _1) + ProjRef(_pin_project::__private::Pin::new_unchecked(_0), _1) } } fn project_replace( - self: ::pin_project::__private::Pin<&mut Self>, + self: _pin_project::__private::Pin<&mut Self>, __replacement: Self, ) -> ProjOwn { unsafe { let __self_ptr: *mut Self = self.get_unchecked_mut(); - let __guard = ::pin_project::__private::UnsafeOverwriteGuard { - target: __self_ptr, - value: ::pin_project::__private::ManuallyDrop::new(__replacement), - }; + let __guard = + _pin_project::__private::UnsafeOverwriteGuard::new(__self_ptr, __replacement); let Self(_0, _1) = &mut *__self_ptr; let __result = ProjOwn( - ::pin_project::__private::PhantomData, - ::pin_project::__private::ptr::read(_1), + _pin_project::__private::PhantomData, + _pin_project::__private::ptr::read(_1), ); { - let __guard = ::pin_project::__private::UnsafeDropInPlaceGuard(_0); + let __guard = _pin_project::__private::UnsafeDropInPlaceGuard::new(_0); } __result } @@ -98,31 +99,31 @@ const _: () = { } #[allow(missing_debug_implementations)] struct __TupleStruct<'pin, T, U> { - __pin_project_use_generics: ::pin_project::__private::AlwaysUnpin< + __pin_project_use_generics: _pin_project::__private::AlwaysUnpin< 'pin, ( - ::pin_project::__private::PhantomData, - ::pin_project::__private::PhantomData, + _pin_project::__private::PhantomData, + _pin_project::__private::PhantomData, ), >, __field0: T, } - impl<'pin, T, U> ::pin_project::__private::Unpin for TupleStruct where - __TupleStruct<'pin, T, U>: ::pin_project::__private::Unpin + impl<'pin, T, U> _pin_project::__private::Unpin for TupleStruct where + __TupleStruct<'pin, T, U>: _pin_project::__private::Unpin { } #[doc(hidden)] - unsafe impl<'pin, T, U> ::pin_project::UnsafeUnpin for TupleStruct where - __TupleStruct<'pin, T, U>: ::pin_project::__private::Unpin + unsafe impl<'pin, T, U> _pin_project::UnsafeUnpin for TupleStruct where + __TupleStruct<'pin, T, U>: _pin_project::__private::Unpin { } trait TupleStructMustNotImplDrop {} #[allow(clippy::drop_bounds, drop_bounds)] - impl TupleStructMustNotImplDrop for T {} + impl TupleStructMustNotImplDrop for T {} impl TupleStructMustNotImplDrop for TupleStruct {} #[doc(hidden)] - impl ::pin_project::__private::PinnedDrop for TupleStruct { - unsafe fn drop(self: ::pin_project::__private::Pin<&mut Self>) {} + impl _pin_project::__private::PinnedDrop for TupleStruct { + unsafe fn drop(self: _pin_project::__private::Pin<&mut Self>) {} } }; fn main() {} diff --git a/tests/expand/naming/tuple_struct-mut.expanded.rs b/tests/expand/naming/tuple_struct-mut.expanded.rs index f7daaff..60218d6 100644 --- a/tests/expand/naming/tuple_struct-mut.expanded.rs +++ b/tests/expand/naming/tuple_struct-mut.expanded.rs @@ -24,10 +24,13 @@ where #[allow(clippy::pattern_type_mismatch)] #[allow(clippy::redundant_pub_crate)] #[allow(clippy::type_repetition_in_bounds)] +#[allow(unused_qualifications)] #[allow(clippy::semicolon_if_nothing_returned)] #[allow(clippy::use_self)] #[allow(clippy::used_underscore_binding)] const _: () = { + #[allow(unused_extern_crates)] + extern crate pin_project as _pin_project; #[allow(dead_code)] #[allow(clippy::ref_option_ref)] struct __TupleStructProjectionRef<'pin, T, U>( @@ -37,19 +40,19 @@ const _: () = { where TupleStruct: 'pin; impl TupleStruct { - fn project<'pin>(self: ::pin_project::__private::Pin<&'pin mut Self>) -> Proj<'pin, T, U> { + fn project<'pin>(self: _pin_project::__private::Pin<&'pin mut Self>) -> Proj<'pin, T, U> { unsafe { let Self(_0, _1) = self.get_unchecked_mut(); - Proj(::pin_project::__private::Pin::new_unchecked(_0), _1) + Proj(_pin_project::__private::Pin::new_unchecked(_0), _1) } } #[allow(clippy::missing_const_for_fn)] fn project_ref<'pin>( - self: ::pin_project::__private::Pin<&'pin Self>, + self: _pin_project::__private::Pin<&'pin Self>, ) -> __TupleStructProjectionRef<'pin, T, U> { unsafe { let Self(_0, _1) = self.get_ref(); - __TupleStructProjectionRef(::pin_project::__private::Pin::new_unchecked(_0), _1) + __TupleStructProjectionRef(_pin_project::__private::Pin::new_unchecked(_0), _1) } } } @@ -60,31 +63,31 @@ const _: () = { } #[allow(missing_debug_implementations)] struct __TupleStruct<'pin, T, U> { - __pin_project_use_generics: ::pin_project::__private::AlwaysUnpin< + __pin_project_use_generics: _pin_project::__private::AlwaysUnpin< 'pin, ( - ::pin_project::__private::PhantomData, - ::pin_project::__private::PhantomData, + _pin_project::__private::PhantomData, + _pin_project::__private::PhantomData, ), >, __field0: T, } - impl<'pin, T, U> ::pin_project::__private::Unpin for TupleStruct where - __TupleStruct<'pin, T, U>: ::pin_project::__private::Unpin + impl<'pin, T, U> _pin_project::__private::Unpin for TupleStruct where + __TupleStruct<'pin, T, U>: _pin_project::__private::Unpin { } #[doc(hidden)] - unsafe impl<'pin, T, U> ::pin_project::UnsafeUnpin for TupleStruct where - __TupleStruct<'pin, T, U>: ::pin_project::__private::Unpin + unsafe impl<'pin, T, U> _pin_project::UnsafeUnpin for TupleStruct where + __TupleStruct<'pin, T, U>: _pin_project::__private::Unpin { } trait TupleStructMustNotImplDrop {} #[allow(clippy::drop_bounds, drop_bounds)] - impl TupleStructMustNotImplDrop for T {} + impl TupleStructMustNotImplDrop for T {} impl TupleStructMustNotImplDrop for TupleStruct {} #[doc(hidden)] - impl ::pin_project::__private::PinnedDrop for TupleStruct { - unsafe fn drop(self: ::pin_project::__private::Pin<&mut Self>) {} + impl _pin_project::__private::PinnedDrop for TupleStruct { + unsafe fn drop(self: _pin_project::__private::Pin<&mut Self>) {} } }; fn main() {} diff --git a/tests/expand/naming/tuple_struct-none.expanded.rs b/tests/expand/naming/tuple_struct-none.expanded.rs index 6a3dfbf..cc9b75e 100644 --- a/tests/expand/naming/tuple_struct-none.expanded.rs +++ b/tests/expand/naming/tuple_struct-none.expanded.rs @@ -10,10 +10,13 @@ struct TupleStruct(#[pin] T, U); #[allow(clippy::pattern_type_mismatch)] #[allow(clippy::redundant_pub_crate)] #[allow(clippy::type_repetition_in_bounds)] +#[allow(unused_qualifications)] #[allow(clippy::semicolon_if_nothing_returned)] #[allow(clippy::use_self)] #[allow(clippy::used_underscore_binding)] const _: () = { + #[allow(unused_extern_crates)] + extern crate pin_project as _pin_project; #[allow(dead_code)] #[allow(clippy::mut_mut)] struct __TupleStructProjection<'pin, T, U>( @@ -32,20 +35,20 @@ const _: () = { TupleStruct: 'pin; impl TupleStruct { fn project<'pin>( - self: ::pin_project::__private::Pin<&'pin mut Self>, + self: _pin_project::__private::Pin<&'pin mut Self>, ) -> __TupleStructProjection<'pin, T, U> { unsafe { let Self(_0, _1) = self.get_unchecked_mut(); - __TupleStructProjection(::pin_project::__private::Pin::new_unchecked(_0), _1) + __TupleStructProjection(_pin_project::__private::Pin::new_unchecked(_0), _1) } } #[allow(clippy::missing_const_for_fn)] fn project_ref<'pin>( - self: ::pin_project::__private::Pin<&'pin Self>, + self: _pin_project::__private::Pin<&'pin Self>, ) -> __TupleStructProjectionRef<'pin, T, U> { unsafe { let Self(_0, _1) = self.get_ref(); - __TupleStructProjectionRef(::pin_project::__private::Pin::new_unchecked(_0), _1) + __TupleStructProjectionRef(_pin_project::__private::Pin::new_unchecked(_0), _1) } } } @@ -56,31 +59,31 @@ const _: () = { } #[allow(missing_debug_implementations)] struct __TupleStruct<'pin, T, U> { - __pin_project_use_generics: ::pin_project::__private::AlwaysUnpin< + __pin_project_use_generics: _pin_project::__private::AlwaysUnpin< 'pin, ( - ::pin_project::__private::PhantomData, - ::pin_project::__private::PhantomData, + _pin_project::__private::PhantomData, + _pin_project::__private::PhantomData, ), >, __field0: T, } - impl<'pin, T, U> ::pin_project::__private::Unpin for TupleStruct where - __TupleStruct<'pin, T, U>: ::pin_project::__private::Unpin + impl<'pin, T, U> _pin_project::__private::Unpin for TupleStruct where + __TupleStruct<'pin, T, U>: _pin_project::__private::Unpin { } #[doc(hidden)] - unsafe impl<'pin, T, U> ::pin_project::UnsafeUnpin for TupleStruct where - __TupleStruct<'pin, T, U>: ::pin_project::__private::Unpin + unsafe impl<'pin, T, U> _pin_project::UnsafeUnpin for TupleStruct where + __TupleStruct<'pin, T, U>: _pin_project::__private::Unpin { } trait TupleStructMustNotImplDrop {} #[allow(clippy::drop_bounds, drop_bounds)] - impl TupleStructMustNotImplDrop for T {} + impl TupleStructMustNotImplDrop for T {} impl TupleStructMustNotImplDrop for TupleStruct {} #[doc(hidden)] - impl ::pin_project::__private::PinnedDrop for TupleStruct { - unsafe fn drop(self: ::pin_project::__private::Pin<&mut Self>) {} + impl _pin_project::__private::PinnedDrop for TupleStruct { + unsafe fn drop(self: _pin_project::__private::Pin<&mut Self>) {} } }; fn main() {} diff --git a/tests/expand/naming/tuple_struct-own.expanded.rs b/tests/expand/naming/tuple_struct-own.expanded.rs index 5f18045..21e12de 100644 --- a/tests/expand/naming/tuple_struct-own.expanded.rs +++ b/tests/expand/naming/tuple_struct-own.expanded.rs @@ -21,10 +21,13 @@ struct ProjOwn(::pin_project::__private::PhantomData, U); #[allow(clippy::pattern_type_mismatch)] #[allow(clippy::redundant_pub_crate)] #[allow(clippy::type_repetition_in_bounds)] +#[allow(unused_qualifications)] #[allow(clippy::semicolon_if_nothing_returned)] #[allow(clippy::use_self)] #[allow(clippy::used_underscore_binding)] const _: () = { + #[allow(unused_extern_crates)] + extern crate pin_project as _pin_project; #[allow(dead_code)] #[allow(clippy::mut_mut)] struct __TupleStructProjection<'pin, T, U>( @@ -43,39 +46,37 @@ const _: () = { TupleStruct: 'pin; impl TupleStruct { fn project<'pin>( - self: ::pin_project::__private::Pin<&'pin mut Self>, + self: _pin_project::__private::Pin<&'pin mut Self>, ) -> __TupleStructProjection<'pin, T, U> { unsafe { let Self(_0, _1) = self.get_unchecked_mut(); - __TupleStructProjection(::pin_project::__private::Pin::new_unchecked(_0), _1) + __TupleStructProjection(_pin_project::__private::Pin::new_unchecked(_0), _1) } } #[allow(clippy::missing_const_for_fn)] fn project_ref<'pin>( - self: ::pin_project::__private::Pin<&'pin Self>, + self: _pin_project::__private::Pin<&'pin Self>, ) -> __TupleStructProjectionRef<'pin, T, U> { unsafe { let Self(_0, _1) = self.get_ref(); - __TupleStructProjectionRef(::pin_project::__private::Pin::new_unchecked(_0), _1) + __TupleStructProjectionRef(_pin_project::__private::Pin::new_unchecked(_0), _1) } } fn project_replace( - self: ::pin_project::__private::Pin<&mut Self>, + self: _pin_project::__private::Pin<&mut Self>, __replacement: Self, ) -> ProjOwn { unsafe { let __self_ptr: *mut Self = self.get_unchecked_mut(); - let __guard = ::pin_project::__private::UnsafeOverwriteGuard { - target: __self_ptr, - value: ::pin_project::__private::ManuallyDrop::new(__replacement), - }; + let __guard = + _pin_project::__private::UnsafeOverwriteGuard::new(__self_ptr, __replacement); let Self(_0, _1) = &mut *__self_ptr; let __result = ProjOwn( - ::pin_project::__private::PhantomData, - ::pin_project::__private::ptr::read(_1), + _pin_project::__private::PhantomData, + _pin_project::__private::ptr::read(_1), ); { - let __guard = ::pin_project::__private::UnsafeDropInPlaceGuard(_0); + let __guard = _pin_project::__private::UnsafeDropInPlaceGuard::new(_0); } __result } @@ -88,31 +89,31 @@ const _: () = { } #[allow(missing_debug_implementations)] struct __TupleStruct<'pin, T, U> { - __pin_project_use_generics: ::pin_project::__private::AlwaysUnpin< + __pin_project_use_generics: _pin_project::__private::AlwaysUnpin< 'pin, ( - ::pin_project::__private::PhantomData, - ::pin_project::__private::PhantomData, + _pin_project::__private::PhantomData, + _pin_project::__private::PhantomData, ), >, __field0: T, } - impl<'pin, T, U> ::pin_project::__private::Unpin for TupleStruct where - __TupleStruct<'pin, T, U>: ::pin_project::__private::Unpin + impl<'pin, T, U> _pin_project::__private::Unpin for TupleStruct where + __TupleStruct<'pin, T, U>: _pin_project::__private::Unpin { } #[doc(hidden)] - unsafe impl<'pin, T, U> ::pin_project::UnsafeUnpin for TupleStruct where - __TupleStruct<'pin, T, U>: ::pin_project::__private::Unpin + unsafe impl<'pin, T, U> _pin_project::UnsafeUnpin for TupleStruct where + __TupleStruct<'pin, T, U>: _pin_project::__private::Unpin { } trait TupleStructMustNotImplDrop {} #[allow(clippy::drop_bounds, drop_bounds)] - impl TupleStructMustNotImplDrop for T {} + impl TupleStructMustNotImplDrop for T {} impl TupleStructMustNotImplDrop for TupleStruct {} #[doc(hidden)] - impl ::pin_project::__private::PinnedDrop for TupleStruct { - unsafe fn drop(self: ::pin_project::__private::Pin<&mut Self>) {} + impl _pin_project::__private::PinnedDrop for TupleStruct { + unsafe fn drop(self: _pin_project::__private::Pin<&mut Self>) {} } }; fn main() {} diff --git a/tests/expand/naming/tuple_struct-ref.expanded.rs b/tests/expand/naming/tuple_struct-ref.expanded.rs index d8d5008..ea11b6a 100644 --- a/tests/expand/naming/tuple_struct-ref.expanded.rs +++ b/tests/expand/naming/tuple_struct-ref.expanded.rs @@ -24,10 +24,13 @@ where #[allow(clippy::pattern_type_mismatch)] #[allow(clippy::redundant_pub_crate)] #[allow(clippy::type_repetition_in_bounds)] +#[allow(unused_qualifications)] #[allow(clippy::semicolon_if_nothing_returned)] #[allow(clippy::use_self)] #[allow(clippy::used_underscore_binding)] const _: () = { + #[allow(unused_extern_crates)] + extern crate pin_project as _pin_project; #[allow(dead_code)] #[allow(clippy::mut_mut)] struct __TupleStructProjection<'pin, T, U>( @@ -38,20 +41,20 @@ const _: () = { TupleStruct: 'pin; impl TupleStruct { fn project<'pin>( - self: ::pin_project::__private::Pin<&'pin mut Self>, + self: _pin_project::__private::Pin<&'pin mut Self>, ) -> __TupleStructProjection<'pin, T, U> { unsafe { let Self(_0, _1) = self.get_unchecked_mut(); - __TupleStructProjection(::pin_project::__private::Pin::new_unchecked(_0), _1) + __TupleStructProjection(_pin_project::__private::Pin::new_unchecked(_0), _1) } } #[allow(clippy::missing_const_for_fn)] fn project_ref<'pin>( - self: ::pin_project::__private::Pin<&'pin Self>, + self: _pin_project::__private::Pin<&'pin Self>, ) -> ProjRef<'pin, T, U> { unsafe { let Self(_0, _1) = self.get_ref(); - ProjRef(::pin_project::__private::Pin::new_unchecked(_0), _1) + ProjRef(_pin_project::__private::Pin::new_unchecked(_0), _1) } } } @@ -62,31 +65,31 @@ const _: () = { } #[allow(missing_debug_implementations)] struct __TupleStruct<'pin, T, U> { - __pin_project_use_generics: ::pin_project::__private::AlwaysUnpin< + __pin_project_use_generics: _pin_project::__private::AlwaysUnpin< 'pin, ( - ::pin_project::__private::PhantomData, - ::pin_project::__private::PhantomData, + _pin_project::__private::PhantomData, + _pin_project::__private::PhantomData, ), >, __field0: T, } - impl<'pin, T, U> ::pin_project::__private::Unpin for TupleStruct where - __TupleStruct<'pin, T, U>: ::pin_project::__private::Unpin + impl<'pin, T, U> _pin_project::__private::Unpin for TupleStruct where + __TupleStruct<'pin, T, U>: _pin_project::__private::Unpin { } #[doc(hidden)] - unsafe impl<'pin, T, U> ::pin_project::UnsafeUnpin for TupleStruct where - __TupleStruct<'pin, T, U>: ::pin_project::__private::Unpin + unsafe impl<'pin, T, U> _pin_project::UnsafeUnpin for TupleStruct where + __TupleStruct<'pin, T, U>: _pin_project::__private::Unpin { } trait TupleStructMustNotImplDrop {} #[allow(clippy::drop_bounds, drop_bounds)] - impl TupleStructMustNotImplDrop for T {} + impl TupleStructMustNotImplDrop for T {} impl TupleStructMustNotImplDrop for TupleStruct {} #[doc(hidden)] - impl ::pin_project::__private::PinnedDrop for TupleStruct { - unsafe fn drop(self: ::pin_project::__private::Pin<&mut Self>) {} + impl _pin_project::__private::PinnedDrop for TupleStruct { + unsafe fn drop(self: _pin_project::__private::Pin<&mut Self>) {} } }; fn main() {} diff --git a/tests/expand/not_unpin/enum.expanded.rs b/tests/expand/not_unpin/enum.expanded.rs index 3414a10..5173b54 100644 --- a/tests/expand/not_unpin/enum.expanded.rs +++ b/tests/expand/not_unpin/enum.expanded.rs @@ -62,22 +62,25 @@ where #[allow(clippy::pattern_type_mismatch)] #[allow(clippy::redundant_pub_crate)] #[allow(clippy::type_repetition_in_bounds)] +#[allow(unused_qualifications)] #[allow(clippy::semicolon_if_nothing_returned)] #[allow(clippy::use_self)] #[allow(clippy::used_underscore_binding)] const _: () = { + #[allow(unused_extern_crates)] + extern crate pin_project as _pin_project; impl Enum { fn project<'pin>( - self: ::pin_project::__private::Pin<&'pin mut Self>, + self: _pin_project::__private::Pin<&'pin mut Self>, ) -> EnumProj<'pin, T, U> { unsafe { match self.get_unchecked_mut() { Self::Struct { pinned, unpinned } => EnumProj::Struct { - pinned: ::pin_project::__private::Pin::new_unchecked(pinned), + pinned: _pin_project::__private::Pin::new_unchecked(pinned), unpinned, }, Self::Tuple(_0, _1) => { - EnumProj::Tuple(::pin_project::__private::Pin::new_unchecked(_0), _1) + EnumProj::Tuple(_pin_project::__private::Pin::new_unchecked(_0), _1) } Self::Unit => EnumProj::Unit, } @@ -85,40 +88,40 @@ const _: () = { } #[allow(clippy::missing_const_for_fn)] fn project_ref<'pin>( - self: ::pin_project::__private::Pin<&'pin Self>, + self: _pin_project::__private::Pin<&'pin Self>, ) -> EnumProjRef<'pin, T, U> { unsafe { match self.get_ref() { Self::Struct { pinned, unpinned } => EnumProjRef::Struct { - pinned: ::pin_project::__private::Pin::new_unchecked(pinned), + pinned: _pin_project::__private::Pin::new_unchecked(pinned), unpinned, }, Self::Tuple(_0, _1) => { - EnumProjRef::Tuple(::pin_project::__private::Pin::new_unchecked(_0), _1) + EnumProjRef::Tuple(_pin_project::__private::Pin::new_unchecked(_0), _1) } Self::Unit => EnumProjRef::Unit, } } } } - impl<'pin, T, U> ::pin_project::__private::Unpin for Enum where - ::pin_project::__private::Wrapper<'pin, ::pin_project::__private::PhantomPinned>: - ::pin_project::__private::Unpin + impl<'pin, T, U> _pin_project::__private::Unpin for Enum where + _pin_project::__private::Wrapper<'pin, _pin_project::__private::PhantomPinned>: + _pin_project::__private::Unpin { } #[doc(hidden)] - unsafe impl<'pin, T, U> ::pin_project::UnsafeUnpin for Enum where - ::pin_project::__private::Wrapper<'pin, ::pin_project::__private::PhantomPinned>: - ::pin_project::__private::Unpin + unsafe impl<'pin, T, U> _pin_project::UnsafeUnpin for Enum where + _pin_project::__private::Wrapper<'pin, _pin_project::__private::PhantomPinned>: + _pin_project::__private::Unpin { } trait EnumMustNotImplDrop {} #[allow(clippy::drop_bounds, drop_bounds)] - impl EnumMustNotImplDrop for T {} + impl EnumMustNotImplDrop for T {} impl EnumMustNotImplDrop for Enum {} #[doc(hidden)] - impl ::pin_project::__private::PinnedDrop for Enum { - unsafe fn drop(self: ::pin_project::__private::Pin<&mut Self>) {} + impl _pin_project::__private::PinnedDrop for Enum { + unsafe fn drop(self: _pin_project::__private::Pin<&mut Self>) {} } }; fn main() {} diff --git a/tests/expand/not_unpin/struct.expanded.rs b/tests/expand/not_unpin/struct.expanded.rs index b701af5..e9d8922 100644 --- a/tests/expand/not_unpin/struct.expanded.rs +++ b/tests/expand/not_unpin/struct.expanded.rs @@ -14,10 +14,13 @@ struct Struct { #[allow(clippy::pattern_type_mismatch)] #[allow(clippy::redundant_pub_crate)] #[allow(clippy::type_repetition_in_bounds)] +#[allow(unused_qualifications)] #[allow(clippy::semicolon_if_nothing_returned)] #[allow(clippy::use_self)] #[allow(clippy::used_underscore_binding)] const _: () = { + #[allow(unused_extern_crates)] + extern crate pin_project as _pin_project; #[allow(dead_code)] #[allow(clippy::mut_mut)] struct __StructProjection<'pin, T, U> @@ -38,24 +41,24 @@ const _: () = { } impl Struct { fn project<'pin>( - self: ::pin_project::__private::Pin<&'pin mut Self>, + self: _pin_project::__private::Pin<&'pin mut Self>, ) -> __StructProjection<'pin, T, U> { unsafe { let Self { pinned, unpinned } = self.get_unchecked_mut(); __StructProjection { - pinned: ::pin_project::__private::Pin::new_unchecked(pinned), + pinned: _pin_project::__private::Pin::new_unchecked(pinned), unpinned, } } } #[allow(clippy::missing_const_for_fn)] fn project_ref<'pin>( - self: ::pin_project::__private::Pin<&'pin Self>, + self: _pin_project::__private::Pin<&'pin Self>, ) -> __StructProjectionRef<'pin, T, U> { unsafe { let Self { pinned, unpinned } = self.get_ref(); __StructProjectionRef { - pinned: ::pin_project::__private::Pin::new_unchecked(pinned), + pinned: _pin_project::__private::Pin::new_unchecked(pinned), unpinned, } } @@ -66,24 +69,24 @@ const _: () = { let _ = &this.pinned; let _ = &this.unpinned; } - impl<'pin, T, U> ::pin_project::__private::Unpin for Struct where - ::pin_project::__private::Wrapper<'pin, ::pin_project::__private::PhantomPinned>: - ::pin_project::__private::Unpin + impl<'pin, T, U> _pin_project::__private::Unpin for Struct where + _pin_project::__private::Wrapper<'pin, _pin_project::__private::PhantomPinned>: + _pin_project::__private::Unpin { } #[doc(hidden)] - unsafe impl<'pin, T, U> ::pin_project::UnsafeUnpin for Struct where - ::pin_project::__private::Wrapper<'pin, ::pin_project::__private::PhantomPinned>: - ::pin_project::__private::Unpin + unsafe impl<'pin, T, U> _pin_project::UnsafeUnpin for Struct where + _pin_project::__private::Wrapper<'pin, _pin_project::__private::PhantomPinned>: + _pin_project::__private::Unpin { } trait StructMustNotImplDrop {} #[allow(clippy::drop_bounds, drop_bounds)] - impl StructMustNotImplDrop for T {} + impl StructMustNotImplDrop for T {} impl StructMustNotImplDrop for Struct {} #[doc(hidden)] - impl ::pin_project::__private::PinnedDrop for Struct { - unsafe fn drop(self: ::pin_project::__private::Pin<&mut Self>) {} + impl _pin_project::__private::PinnedDrop for Struct { + unsafe fn drop(self: _pin_project::__private::Pin<&mut Self>) {} } }; fn main() {} diff --git a/tests/expand/not_unpin/tuple_struct.expanded.rs b/tests/expand/not_unpin/tuple_struct.expanded.rs index 4b73483..cefb61d 100644 --- a/tests/expand/not_unpin/tuple_struct.expanded.rs +++ b/tests/expand/not_unpin/tuple_struct.expanded.rs @@ -10,10 +10,13 @@ struct TupleStruct(#[pin] T, U); #[allow(clippy::pattern_type_mismatch)] #[allow(clippy::redundant_pub_crate)] #[allow(clippy::type_repetition_in_bounds)] +#[allow(unused_qualifications)] #[allow(clippy::semicolon_if_nothing_returned)] #[allow(clippy::use_self)] #[allow(clippy::used_underscore_binding)] const _: () = { + #[allow(unused_extern_crates)] + extern crate pin_project as _pin_project; #[allow(dead_code)] #[allow(clippy::mut_mut)] struct __TupleStructProjection<'pin, T, U>( @@ -32,20 +35,20 @@ const _: () = { TupleStruct: 'pin; impl TupleStruct { fn project<'pin>( - self: ::pin_project::__private::Pin<&'pin mut Self>, + self: _pin_project::__private::Pin<&'pin mut Self>, ) -> __TupleStructProjection<'pin, T, U> { unsafe { let Self(_0, _1) = self.get_unchecked_mut(); - __TupleStructProjection(::pin_project::__private::Pin::new_unchecked(_0), _1) + __TupleStructProjection(_pin_project::__private::Pin::new_unchecked(_0), _1) } } #[allow(clippy::missing_const_for_fn)] fn project_ref<'pin>( - self: ::pin_project::__private::Pin<&'pin Self>, + self: _pin_project::__private::Pin<&'pin Self>, ) -> __TupleStructProjectionRef<'pin, T, U> { unsafe { let Self(_0, _1) = self.get_ref(); - __TupleStructProjectionRef(::pin_project::__private::Pin::new_unchecked(_0), _1) + __TupleStructProjectionRef(_pin_project::__private::Pin::new_unchecked(_0), _1) } } } @@ -54,24 +57,24 @@ const _: () = { let _ = &this.0; let _ = &this.1; } - impl<'pin, T, U> ::pin_project::__private::Unpin for TupleStruct where - ::pin_project::__private::Wrapper<'pin, ::pin_project::__private::PhantomPinned>: - ::pin_project::__private::Unpin + impl<'pin, T, U> _pin_project::__private::Unpin for TupleStruct where + _pin_project::__private::Wrapper<'pin, _pin_project::__private::PhantomPinned>: + _pin_project::__private::Unpin { } #[doc(hidden)] - unsafe impl<'pin, T, U> ::pin_project::UnsafeUnpin for TupleStruct where - ::pin_project::__private::Wrapper<'pin, ::pin_project::__private::PhantomPinned>: - ::pin_project::__private::Unpin + unsafe impl<'pin, T, U> _pin_project::UnsafeUnpin for TupleStruct where + _pin_project::__private::Wrapper<'pin, _pin_project::__private::PhantomPinned>: + _pin_project::__private::Unpin { } trait TupleStructMustNotImplDrop {} #[allow(clippy::drop_bounds, drop_bounds)] - impl TupleStructMustNotImplDrop for T {} + impl TupleStructMustNotImplDrop for T {} impl TupleStructMustNotImplDrop for TupleStruct {} #[doc(hidden)] - impl ::pin_project::__private::PinnedDrop for TupleStruct { - unsafe fn drop(self: ::pin_project::__private::Pin<&mut Self>) {} + impl _pin_project::__private::PinnedDrop for TupleStruct { + unsafe fn drop(self: _pin_project::__private::Pin<&mut Self>) {} } }; fn main() {} diff --git a/tests/expand/pinned_drop/enum.expanded.rs b/tests/expand/pinned_drop/enum.expanded.rs index a968b72..e1bc486 100644 --- a/tests/expand/pinned_drop/enum.expanded.rs +++ b/tests/expand/pinned_drop/enum.expanded.rs @@ -63,22 +63,25 @@ where #[allow(clippy::pattern_type_mismatch)] #[allow(clippy::redundant_pub_crate)] #[allow(clippy::type_repetition_in_bounds)] +#[allow(unused_qualifications)] #[allow(clippy::semicolon_if_nothing_returned)] #[allow(clippy::use_self)] #[allow(clippy::used_underscore_binding)] const _: () = { + #[allow(unused_extern_crates)] + extern crate pin_project as _pin_project; impl Enum { fn project<'pin>( - self: ::pin_project::__private::Pin<&'pin mut Self>, + self: _pin_project::__private::Pin<&'pin mut Self>, ) -> EnumProj<'pin, T, U> { unsafe { match self.get_unchecked_mut() { Self::Struct { pinned, unpinned } => EnumProj::Struct { - pinned: ::pin_project::__private::Pin::new_unchecked(pinned), + pinned: _pin_project::__private::Pin::new_unchecked(pinned), unpinned, }, Self::Tuple(_0, _1) => { - EnumProj::Tuple(::pin_project::__private::Pin::new_unchecked(_0), _1) + EnumProj::Tuple(_pin_project::__private::Pin::new_unchecked(_0), _1) } Self::Unit => EnumProj::Unit, } @@ -86,16 +89,16 @@ const _: () = { } #[allow(clippy::missing_const_for_fn)] fn project_ref<'pin>( - self: ::pin_project::__private::Pin<&'pin Self>, + self: _pin_project::__private::Pin<&'pin Self>, ) -> EnumProjRef<'pin, T, U> { unsafe { match self.get_ref() { Self::Struct { pinned, unpinned } => EnumProjRef::Struct { - pinned: ::pin_project::__private::Pin::new_unchecked(pinned), + pinned: _pin_project::__private::Pin::new_unchecked(pinned), unpinned, }, Self::Tuple(_0, _1) => { - EnumProjRef::Tuple(::pin_project::__private::Pin::new_unchecked(_0), _1) + EnumProjRef::Tuple(_pin_project::__private::Pin::new_unchecked(_0), _1) } Self::Unit => EnumProjRef::Unit, } @@ -104,30 +107,30 @@ const _: () = { } #[allow(missing_debug_implementations)] struct __Enum<'pin, T, U> { - __pin_project_use_generics: ::pin_project::__private::AlwaysUnpin< + __pin_project_use_generics: _pin_project::__private::AlwaysUnpin< 'pin, ( - ::pin_project::__private::PhantomData, - ::pin_project::__private::PhantomData, + _pin_project::__private::PhantomData, + _pin_project::__private::PhantomData, ), >, __field0: T, __field1: T, } - impl<'pin, T, U> ::pin_project::__private::Unpin for Enum where - __Enum<'pin, T, U>: ::pin_project::__private::Unpin + impl<'pin, T, U> _pin_project::__private::Unpin for Enum where + __Enum<'pin, T, U>: _pin_project::__private::Unpin { } #[doc(hidden)] - unsafe impl<'pin, T, U> ::pin_project::UnsafeUnpin for Enum where - __Enum<'pin, T, U>: ::pin_project::__private::Unpin + unsafe impl<'pin, T, U> _pin_project::UnsafeUnpin for Enum where + __Enum<'pin, T, U>: _pin_project::__private::Unpin { } - impl ::pin_project::__private::Drop for Enum { + impl _pin_project::__private::Drop for Enum { fn drop(&mut self) { unsafe { - let __pinned_self = ::pin_project::__private::Pin::new_unchecked(self); - ::pin_project::__private::PinnedDrop::drop(__pinned_self); + let __pinned_self = _pin_project::__private::Pin::new_unchecked(self); + _pin_project::__private::PinnedDrop::drop(__pinned_self); } } } diff --git a/tests/expand/pinned_drop/struct.expanded.rs b/tests/expand/pinned_drop/struct.expanded.rs index 630389b..2227442 100644 --- a/tests/expand/pinned_drop/struct.expanded.rs +++ b/tests/expand/pinned_drop/struct.expanded.rs @@ -15,10 +15,13 @@ struct Struct { #[allow(clippy::pattern_type_mismatch)] #[allow(clippy::redundant_pub_crate)] #[allow(clippy::type_repetition_in_bounds)] +#[allow(unused_qualifications)] #[allow(clippy::semicolon_if_nothing_returned)] #[allow(clippy::use_self)] #[allow(clippy::used_underscore_binding)] const _: () = { + #[allow(unused_extern_crates)] + extern crate pin_project as _pin_project; #[allow(dead_code)] #[allow(clippy::mut_mut)] struct __StructProjection<'pin, T, U> @@ -39,24 +42,24 @@ const _: () = { } impl Struct { fn project<'pin>( - self: ::pin_project::__private::Pin<&'pin mut Self>, + self: _pin_project::__private::Pin<&'pin mut Self>, ) -> __StructProjection<'pin, T, U> { unsafe { let Self { pinned, unpinned } = self.get_unchecked_mut(); __StructProjection { - pinned: ::pin_project::__private::Pin::new_unchecked(pinned), + pinned: _pin_project::__private::Pin::new_unchecked(pinned), unpinned, } } } #[allow(clippy::missing_const_for_fn)] fn project_ref<'pin>( - self: ::pin_project::__private::Pin<&'pin Self>, + self: _pin_project::__private::Pin<&'pin Self>, ) -> __StructProjectionRef<'pin, T, U> { unsafe { let Self { pinned, unpinned } = self.get_ref(); __StructProjectionRef { - pinned: ::pin_project::__private::Pin::new_unchecked(pinned), + pinned: _pin_project::__private::Pin::new_unchecked(pinned), unpinned, } } @@ -69,29 +72,29 @@ const _: () = { } #[allow(missing_debug_implementations)] struct __Struct<'pin, T, U> { - __pin_project_use_generics: ::pin_project::__private::AlwaysUnpin< + __pin_project_use_generics: _pin_project::__private::AlwaysUnpin< 'pin, ( - ::pin_project::__private::PhantomData, - ::pin_project::__private::PhantomData, + _pin_project::__private::PhantomData, + _pin_project::__private::PhantomData, ), >, __field0: T, } - impl<'pin, T, U> ::pin_project::__private::Unpin for Struct where - __Struct<'pin, T, U>: ::pin_project::__private::Unpin + impl<'pin, T, U> _pin_project::__private::Unpin for Struct where + __Struct<'pin, T, U>: _pin_project::__private::Unpin { } #[doc(hidden)] - unsafe impl<'pin, T, U> ::pin_project::UnsafeUnpin for Struct where - __Struct<'pin, T, U>: ::pin_project::__private::Unpin + unsafe impl<'pin, T, U> _pin_project::UnsafeUnpin for Struct where + __Struct<'pin, T, U>: _pin_project::__private::Unpin { } - impl ::pin_project::__private::Drop for Struct { + impl _pin_project::__private::Drop for Struct { fn drop(&mut self) { unsafe { - let __pinned_self = ::pin_project::__private::Pin::new_unchecked(self); - ::pin_project::__private::PinnedDrop::drop(__pinned_self); + let __pinned_self = _pin_project::__private::Pin::new_unchecked(self); + _pin_project::__private::PinnedDrop::drop(__pinned_self); } } } diff --git a/tests/expand/pinned_drop/tuple_struct.expanded.rs b/tests/expand/pinned_drop/tuple_struct.expanded.rs index f06f2ae..8c7433e 100644 --- a/tests/expand/pinned_drop/tuple_struct.expanded.rs +++ b/tests/expand/pinned_drop/tuple_struct.expanded.rs @@ -11,10 +11,13 @@ struct TupleStruct(#[pin] T, U); #[allow(clippy::pattern_type_mismatch)] #[allow(clippy::redundant_pub_crate)] #[allow(clippy::type_repetition_in_bounds)] +#[allow(unused_qualifications)] #[allow(clippy::semicolon_if_nothing_returned)] #[allow(clippy::use_self)] #[allow(clippy::used_underscore_binding)] const _: () = { + #[allow(unused_extern_crates)] + extern crate pin_project as _pin_project; #[allow(dead_code)] #[allow(clippy::mut_mut)] struct __TupleStructProjection<'pin, T, U>( @@ -33,20 +36,20 @@ const _: () = { TupleStruct: 'pin; impl TupleStruct { fn project<'pin>( - self: ::pin_project::__private::Pin<&'pin mut Self>, + self: _pin_project::__private::Pin<&'pin mut Self>, ) -> __TupleStructProjection<'pin, T, U> { unsafe { let Self(_0, _1) = self.get_unchecked_mut(); - __TupleStructProjection(::pin_project::__private::Pin::new_unchecked(_0), _1) + __TupleStructProjection(_pin_project::__private::Pin::new_unchecked(_0), _1) } } #[allow(clippy::missing_const_for_fn)] fn project_ref<'pin>( - self: ::pin_project::__private::Pin<&'pin Self>, + self: _pin_project::__private::Pin<&'pin Self>, ) -> __TupleStructProjectionRef<'pin, T, U> { unsafe { let Self(_0, _1) = self.get_ref(); - __TupleStructProjectionRef(::pin_project::__private::Pin::new_unchecked(_0), _1) + __TupleStructProjectionRef(_pin_project::__private::Pin::new_unchecked(_0), _1) } } } @@ -57,29 +60,29 @@ const _: () = { } #[allow(missing_debug_implementations)] struct __TupleStruct<'pin, T, U> { - __pin_project_use_generics: ::pin_project::__private::AlwaysUnpin< + __pin_project_use_generics: _pin_project::__private::AlwaysUnpin< 'pin, ( - ::pin_project::__private::PhantomData, - ::pin_project::__private::PhantomData, + _pin_project::__private::PhantomData, + _pin_project::__private::PhantomData, ), >, __field0: T, } - impl<'pin, T, U> ::pin_project::__private::Unpin for TupleStruct where - __TupleStruct<'pin, T, U>: ::pin_project::__private::Unpin + impl<'pin, T, U> _pin_project::__private::Unpin for TupleStruct where + __TupleStruct<'pin, T, U>: _pin_project::__private::Unpin { } #[doc(hidden)] - unsafe impl<'pin, T, U> ::pin_project::UnsafeUnpin for TupleStruct where - __TupleStruct<'pin, T, U>: ::pin_project::__private::Unpin + unsafe impl<'pin, T, U> _pin_project::UnsafeUnpin for TupleStruct where + __TupleStruct<'pin, T, U>: _pin_project::__private::Unpin { } - impl ::pin_project::__private::Drop for TupleStruct { + impl _pin_project::__private::Drop for TupleStruct { fn drop(&mut self) { unsafe { - let __pinned_self = ::pin_project::__private::Pin::new_unchecked(self); - ::pin_project::__private::PinnedDrop::drop(__pinned_self); + let __pinned_self = _pin_project::__private::Pin::new_unchecked(self); + _pin_project::__private::PinnedDrop::drop(__pinned_self); } } } diff --git a/tests/expand/project_replace/enum.expanded.rs b/tests/expand/project_replace/enum.expanded.rs index 27ff08a..d2b2094 100644 --- a/tests/expand/project_replace/enum.expanded.rs +++ b/tests/expand/project_replace/enum.expanded.rs @@ -38,39 +38,41 @@ enum EnumProjOwn { #[allow(clippy::pattern_type_mismatch)] #[allow(clippy::redundant_pub_crate)] #[allow(clippy::type_repetition_in_bounds)] +#[allow(unused_qualifications)] #[allow(clippy::semicolon_if_nothing_returned)] #[allow(clippy::use_self)] #[allow(clippy::used_underscore_binding)] const _: () = { + #[allow(unused_extern_crates)] + extern crate pin_project as _pin_project; impl Enum { fn project_replace( - self: ::pin_project::__private::Pin<&mut Self>, + self: _pin_project::__private::Pin<&mut Self>, __replacement: Self, ) -> EnumProjOwn { unsafe { let __self_ptr: *mut Self = self.get_unchecked_mut(); - let __guard = ::pin_project::__private::UnsafeOverwriteGuard { - target: __self_ptr, - value: ::pin_project::__private::ManuallyDrop::new(__replacement), - }; + let __guard = + _pin_project::__private::UnsafeOverwriteGuard::new(__self_ptr, __replacement); match &mut *__self_ptr { Self::Struct { pinned, unpinned } => { let __result = EnumProjOwn::Struct { - pinned: ::pin_project::__private::PhantomData, - unpinned: ::pin_project::__private::ptr::read(unpinned), + pinned: _pin_project::__private::PhantomData, + unpinned: _pin_project::__private::ptr::read(unpinned), }; { - let __guard = ::pin_project::__private::UnsafeDropInPlaceGuard(pinned); + let __guard = + _pin_project::__private::UnsafeDropInPlaceGuard::new(pinned); } __result } Self::Tuple(_0, _1) => { let __result = EnumProjOwn::Tuple( - ::pin_project::__private::PhantomData, - ::pin_project::__private::ptr::read(_1), + _pin_project::__private::PhantomData, + _pin_project::__private::ptr::read(_1), ); { - let __guard = ::pin_project::__private::UnsafeDropInPlaceGuard(_0); + let __guard = _pin_project::__private::UnsafeDropInPlaceGuard::new(_0); } __result } @@ -85,32 +87,32 @@ const _: () = { } #[allow(missing_debug_implementations)] struct __Enum<'pin, T, U> { - __pin_project_use_generics: ::pin_project::__private::AlwaysUnpin< + __pin_project_use_generics: _pin_project::__private::AlwaysUnpin< 'pin, ( - ::pin_project::__private::PhantomData, - ::pin_project::__private::PhantomData, + _pin_project::__private::PhantomData, + _pin_project::__private::PhantomData, ), >, __field0: T, __field1: T, } - impl<'pin, T, U> ::pin_project::__private::Unpin for Enum where - __Enum<'pin, T, U>: ::pin_project::__private::Unpin + impl<'pin, T, U> _pin_project::__private::Unpin for Enum where + __Enum<'pin, T, U>: _pin_project::__private::Unpin { } #[doc(hidden)] - unsafe impl<'pin, T, U> ::pin_project::UnsafeUnpin for Enum where - __Enum<'pin, T, U>: ::pin_project::__private::Unpin + unsafe impl<'pin, T, U> _pin_project::UnsafeUnpin for Enum where + __Enum<'pin, T, U>: _pin_project::__private::Unpin { } trait EnumMustNotImplDrop {} #[allow(clippy::drop_bounds, drop_bounds)] - impl EnumMustNotImplDrop for T {} + impl EnumMustNotImplDrop for T {} impl EnumMustNotImplDrop for Enum {} #[doc(hidden)] - impl ::pin_project::__private::PinnedDrop for Enum { - unsafe fn drop(self: ::pin_project::__private::Pin<&mut Self>) {} + impl _pin_project::__private::PinnedDrop for Enum { + unsafe fn drop(self: _pin_project::__private::Pin<&mut Self>) {} } }; fn main() {} diff --git a/tests/expand/project_replace/struct.expanded.rs b/tests/expand/project_replace/struct.expanded.rs index bad4984..aa5fd54 100644 --- a/tests/expand/project_replace/struct.expanded.rs +++ b/tests/expand/project_replace/struct.expanded.rs @@ -14,10 +14,13 @@ struct Struct { #[allow(clippy::pattern_type_mismatch)] #[allow(clippy::redundant_pub_crate)] #[allow(clippy::type_repetition_in_bounds)] +#[allow(unused_qualifications)] #[allow(clippy::semicolon_if_nothing_returned)] #[allow(clippy::use_self)] #[allow(clippy::used_underscore_binding)] const _: () = { + #[allow(unused_extern_crates)] + extern crate pin_project as _pin_project; #[allow(dead_code)] #[allow(clippy::mut_mut)] struct __StructProjection<'pin, T, U> @@ -43,45 +46,43 @@ const _: () = { } impl Struct { fn project<'pin>( - self: ::pin_project::__private::Pin<&'pin mut Self>, + self: _pin_project::__private::Pin<&'pin mut Self>, ) -> __StructProjection<'pin, T, U> { unsafe { let Self { pinned, unpinned } = self.get_unchecked_mut(); __StructProjection { - pinned: ::pin_project::__private::Pin::new_unchecked(pinned), + pinned: _pin_project::__private::Pin::new_unchecked(pinned), unpinned, } } } #[allow(clippy::missing_const_for_fn)] fn project_ref<'pin>( - self: ::pin_project::__private::Pin<&'pin Self>, + self: _pin_project::__private::Pin<&'pin Self>, ) -> __StructProjectionRef<'pin, T, U> { unsafe { let Self { pinned, unpinned } = self.get_ref(); __StructProjectionRef { - pinned: ::pin_project::__private::Pin::new_unchecked(pinned), + pinned: _pin_project::__private::Pin::new_unchecked(pinned), unpinned, } } } fn project_replace( - self: ::pin_project::__private::Pin<&mut Self>, + self: _pin_project::__private::Pin<&mut Self>, __replacement: Self, ) -> __StructProjectionOwned { unsafe { let __self_ptr: *mut Self = self.get_unchecked_mut(); - let __guard = ::pin_project::__private::UnsafeOverwriteGuard { - target: __self_ptr, - value: ::pin_project::__private::ManuallyDrop::new(__replacement), - }; + let __guard = + _pin_project::__private::UnsafeOverwriteGuard::new(__self_ptr, __replacement); let Self { pinned, unpinned } = &mut *__self_ptr; let __result = __StructProjectionOwned { - pinned: ::pin_project::__private::PhantomData, - unpinned: ::pin_project::__private::ptr::read(unpinned), + pinned: _pin_project::__private::PhantomData, + unpinned: _pin_project::__private::ptr::read(unpinned), }; { - let __guard = ::pin_project::__private::UnsafeDropInPlaceGuard(pinned); + let __guard = _pin_project::__private::UnsafeDropInPlaceGuard::new(pinned); } __result } @@ -94,31 +95,31 @@ const _: () = { } #[allow(missing_debug_implementations)] struct __Struct<'pin, T, U> { - __pin_project_use_generics: ::pin_project::__private::AlwaysUnpin< + __pin_project_use_generics: _pin_project::__private::AlwaysUnpin< 'pin, ( - ::pin_project::__private::PhantomData, - ::pin_project::__private::PhantomData, + _pin_project::__private::PhantomData, + _pin_project::__private::PhantomData, ), >, __field0: T, } - impl<'pin, T, U> ::pin_project::__private::Unpin for Struct where - __Struct<'pin, T, U>: ::pin_project::__private::Unpin + impl<'pin, T, U> _pin_project::__private::Unpin for Struct where + __Struct<'pin, T, U>: _pin_project::__private::Unpin { } #[doc(hidden)] - unsafe impl<'pin, T, U> ::pin_project::UnsafeUnpin for Struct where - __Struct<'pin, T, U>: ::pin_project::__private::Unpin + unsafe impl<'pin, T, U> _pin_project::UnsafeUnpin for Struct where + __Struct<'pin, T, U>: _pin_project::__private::Unpin { } trait StructMustNotImplDrop {} #[allow(clippy::drop_bounds, drop_bounds)] - impl StructMustNotImplDrop for T {} + impl StructMustNotImplDrop for T {} impl StructMustNotImplDrop for Struct {} #[doc(hidden)] - impl ::pin_project::__private::PinnedDrop for Struct { - unsafe fn drop(self: ::pin_project::__private::Pin<&mut Self>) {} + impl _pin_project::__private::PinnedDrop for Struct { + unsafe fn drop(self: _pin_project::__private::Pin<&mut Self>) {} } }; fn main() {} diff --git a/tests/expand/project_replace/tuple_struct.expanded.rs b/tests/expand/project_replace/tuple_struct.expanded.rs index bc5a6e5..529f0b2 100644 --- a/tests/expand/project_replace/tuple_struct.expanded.rs +++ b/tests/expand/project_replace/tuple_struct.expanded.rs @@ -10,10 +10,13 @@ struct TupleStruct(#[pin] T, U); #[allow(clippy::pattern_type_mismatch)] #[allow(clippy::redundant_pub_crate)] #[allow(clippy::type_repetition_in_bounds)] +#[allow(unused_qualifications)] #[allow(clippy::semicolon_if_nothing_returned)] #[allow(clippy::use_self)] #[allow(clippy::used_underscore_binding)] const _: () = { + #[allow(unused_extern_crates)] + extern crate pin_project as _pin_project; #[allow(dead_code)] #[allow(clippy::mut_mut)] struct __TupleStructProjection<'pin, T, U>( @@ -34,39 +37,37 @@ const _: () = { struct __TupleStructProjectionOwned(::pin_project::__private::PhantomData, U); impl TupleStruct { fn project<'pin>( - self: ::pin_project::__private::Pin<&'pin mut Self>, + self: _pin_project::__private::Pin<&'pin mut Self>, ) -> __TupleStructProjection<'pin, T, U> { unsafe { let Self(_0, _1) = self.get_unchecked_mut(); - __TupleStructProjection(::pin_project::__private::Pin::new_unchecked(_0), _1) + __TupleStructProjection(_pin_project::__private::Pin::new_unchecked(_0), _1) } } #[allow(clippy::missing_const_for_fn)] fn project_ref<'pin>( - self: ::pin_project::__private::Pin<&'pin Self>, + self: _pin_project::__private::Pin<&'pin Self>, ) -> __TupleStructProjectionRef<'pin, T, U> { unsafe { let Self(_0, _1) = self.get_ref(); - __TupleStructProjectionRef(::pin_project::__private::Pin::new_unchecked(_0), _1) + __TupleStructProjectionRef(_pin_project::__private::Pin::new_unchecked(_0), _1) } } fn project_replace( - self: ::pin_project::__private::Pin<&mut Self>, + self: _pin_project::__private::Pin<&mut Self>, __replacement: Self, ) -> __TupleStructProjectionOwned { unsafe { let __self_ptr: *mut Self = self.get_unchecked_mut(); - let __guard = ::pin_project::__private::UnsafeOverwriteGuard { - target: __self_ptr, - value: ::pin_project::__private::ManuallyDrop::new(__replacement), - }; + let __guard = + _pin_project::__private::UnsafeOverwriteGuard::new(__self_ptr, __replacement); let Self(_0, _1) = &mut *__self_ptr; let __result = __TupleStructProjectionOwned( - ::pin_project::__private::PhantomData, - ::pin_project::__private::ptr::read(_1), + _pin_project::__private::PhantomData, + _pin_project::__private::ptr::read(_1), ); { - let __guard = ::pin_project::__private::UnsafeDropInPlaceGuard(_0); + let __guard = _pin_project::__private::UnsafeDropInPlaceGuard::new(_0); } __result } @@ -79,31 +80,31 @@ const _: () = { } #[allow(missing_debug_implementations)] struct __TupleStruct<'pin, T, U> { - __pin_project_use_generics: ::pin_project::__private::AlwaysUnpin< + __pin_project_use_generics: _pin_project::__private::AlwaysUnpin< 'pin, ( - ::pin_project::__private::PhantomData, - ::pin_project::__private::PhantomData, + _pin_project::__private::PhantomData, + _pin_project::__private::PhantomData, ), >, __field0: T, } - impl<'pin, T, U> ::pin_project::__private::Unpin for TupleStruct where - __TupleStruct<'pin, T, U>: ::pin_project::__private::Unpin + impl<'pin, T, U> _pin_project::__private::Unpin for TupleStruct where + __TupleStruct<'pin, T, U>: _pin_project::__private::Unpin { } #[doc(hidden)] - unsafe impl<'pin, T, U> ::pin_project::UnsafeUnpin for TupleStruct where - __TupleStruct<'pin, T, U>: ::pin_project::__private::Unpin + unsafe impl<'pin, T, U> _pin_project::UnsafeUnpin for TupleStruct where + __TupleStruct<'pin, T, U>: _pin_project::__private::Unpin { } trait TupleStructMustNotImplDrop {} #[allow(clippy::drop_bounds, drop_bounds)] - impl TupleStructMustNotImplDrop for T {} + impl TupleStructMustNotImplDrop for T {} impl TupleStructMustNotImplDrop for TupleStruct {} #[doc(hidden)] - impl ::pin_project::__private::PinnedDrop for TupleStruct { - unsafe fn drop(self: ::pin_project::__private::Pin<&mut Self>) {} + impl _pin_project::__private::PinnedDrop for TupleStruct { + unsafe fn drop(self: _pin_project::__private::Pin<&mut Self>) {} } }; fn main() {} diff --git a/tests/expand/pub/enum.expanded.rs b/tests/expand/pub/enum.expanded.rs index f9bd9fe..530eca9 100644 --- a/tests/expand/pub/enum.expanded.rs +++ b/tests/expand/pub/enum.expanded.rs @@ -62,22 +62,25 @@ where #[allow(clippy::pattern_type_mismatch)] #[allow(clippy::redundant_pub_crate)] #[allow(clippy::type_repetition_in_bounds)] +#[allow(unused_qualifications)] #[allow(clippy::semicolon_if_nothing_returned)] #[allow(clippy::use_self)] #[allow(clippy::used_underscore_binding)] const _: () = { + #[allow(unused_extern_crates)] + extern crate pin_project as _pin_project; impl Enum { pub(crate) fn project<'pin>( - self: ::pin_project::__private::Pin<&'pin mut Self>, + self: _pin_project::__private::Pin<&'pin mut Self>, ) -> EnumProj<'pin, T, U> { unsafe { match self.get_unchecked_mut() { Self::Struct { pinned, unpinned } => EnumProj::Struct { - pinned: ::pin_project::__private::Pin::new_unchecked(pinned), + pinned: _pin_project::__private::Pin::new_unchecked(pinned), unpinned, }, Self::Tuple(_0, _1) => { - EnumProj::Tuple(::pin_project::__private::Pin::new_unchecked(_0), _1) + EnumProj::Tuple(_pin_project::__private::Pin::new_unchecked(_0), _1) } Self::Unit => EnumProj::Unit, } @@ -85,16 +88,16 @@ const _: () = { } #[allow(clippy::missing_const_for_fn)] pub(crate) fn project_ref<'pin>( - self: ::pin_project::__private::Pin<&'pin Self>, + self: _pin_project::__private::Pin<&'pin Self>, ) -> EnumProjRef<'pin, T, U> { unsafe { match self.get_ref() { Self::Struct { pinned, unpinned } => EnumProjRef::Struct { - pinned: ::pin_project::__private::Pin::new_unchecked(pinned), + pinned: _pin_project::__private::Pin::new_unchecked(pinned), unpinned, }, Self::Tuple(_0, _1) => { - EnumProjRef::Tuple(::pin_project::__private::Pin::new_unchecked(_0), _1) + EnumProjRef::Tuple(_pin_project::__private::Pin::new_unchecked(_0), _1) } Self::Unit => EnumProjRef::Unit, } @@ -103,32 +106,32 @@ const _: () = { } #[allow(missing_debug_implementations)] pub struct __Enum<'pin, T, U> { - __pin_project_use_generics: ::pin_project::__private::AlwaysUnpin< + __pin_project_use_generics: _pin_project::__private::AlwaysUnpin< 'pin, ( - ::pin_project::__private::PhantomData, - ::pin_project::__private::PhantomData, + _pin_project::__private::PhantomData, + _pin_project::__private::PhantomData, ), >, __field0: T, __field1: T, } - impl<'pin, T, U> ::pin_project::__private::Unpin for Enum where - __Enum<'pin, T, U>: ::pin_project::__private::Unpin + impl<'pin, T, U> _pin_project::__private::Unpin for Enum where + __Enum<'pin, T, U>: _pin_project::__private::Unpin { } #[doc(hidden)] - unsafe impl<'pin, T, U> ::pin_project::UnsafeUnpin for Enum where - __Enum<'pin, T, U>: ::pin_project::__private::Unpin + unsafe impl<'pin, T, U> _pin_project::UnsafeUnpin for Enum where + __Enum<'pin, T, U>: _pin_project::__private::Unpin { } trait EnumMustNotImplDrop {} #[allow(clippy::drop_bounds, drop_bounds)] - impl EnumMustNotImplDrop for T {} + impl EnumMustNotImplDrop for T {} impl EnumMustNotImplDrop for Enum {} #[doc(hidden)] - impl ::pin_project::__private::PinnedDrop for Enum { - unsafe fn drop(self: ::pin_project::__private::Pin<&mut Self>) {} + impl _pin_project::__private::PinnedDrop for Enum { + unsafe fn drop(self: _pin_project::__private::Pin<&mut Self>) {} } }; fn main() {} diff --git a/tests/expand/pub/struct.expanded.rs b/tests/expand/pub/struct.expanded.rs index 8abd9a1..71ae3a3 100644 --- a/tests/expand/pub/struct.expanded.rs +++ b/tests/expand/pub/struct.expanded.rs @@ -14,10 +14,13 @@ pub struct Struct { #[allow(clippy::pattern_type_mismatch)] #[allow(clippy::redundant_pub_crate)] #[allow(clippy::type_repetition_in_bounds)] +#[allow(unused_qualifications)] #[allow(clippy::semicolon_if_nothing_returned)] #[allow(clippy::use_self)] #[allow(clippy::used_underscore_binding)] const _: () = { + #[allow(unused_extern_crates)] + extern crate pin_project as _pin_project; #[allow(dead_code)] #[allow(clippy::mut_mut)] pub(crate) struct __StructProjection<'pin, T, U> @@ -38,24 +41,24 @@ const _: () = { } impl Struct { pub(crate) fn project<'pin>( - self: ::pin_project::__private::Pin<&'pin mut Self>, + self: _pin_project::__private::Pin<&'pin mut Self>, ) -> __StructProjection<'pin, T, U> { unsafe { let Self { pinned, unpinned } = self.get_unchecked_mut(); __StructProjection { - pinned: ::pin_project::__private::Pin::new_unchecked(pinned), + pinned: _pin_project::__private::Pin::new_unchecked(pinned), unpinned, } } } #[allow(clippy::missing_const_for_fn)] pub(crate) fn project_ref<'pin>( - self: ::pin_project::__private::Pin<&'pin Self>, + self: _pin_project::__private::Pin<&'pin Self>, ) -> __StructProjectionRef<'pin, T, U> { unsafe { let Self { pinned, unpinned } = self.get_ref(); __StructProjectionRef { - pinned: ::pin_project::__private::Pin::new_unchecked(pinned), + pinned: _pin_project::__private::Pin::new_unchecked(pinned), unpinned, } } @@ -68,31 +71,31 @@ const _: () = { } #[allow(missing_debug_implementations)] pub struct __Struct<'pin, T, U> { - __pin_project_use_generics: ::pin_project::__private::AlwaysUnpin< + __pin_project_use_generics: _pin_project::__private::AlwaysUnpin< 'pin, ( - ::pin_project::__private::PhantomData, - ::pin_project::__private::PhantomData, + _pin_project::__private::PhantomData, + _pin_project::__private::PhantomData, ), >, __field0: T, } - impl<'pin, T, U> ::pin_project::__private::Unpin for Struct where - __Struct<'pin, T, U>: ::pin_project::__private::Unpin + impl<'pin, T, U> _pin_project::__private::Unpin for Struct where + __Struct<'pin, T, U>: _pin_project::__private::Unpin { } #[doc(hidden)] - unsafe impl<'pin, T, U> ::pin_project::UnsafeUnpin for Struct where - __Struct<'pin, T, U>: ::pin_project::__private::Unpin + unsafe impl<'pin, T, U> _pin_project::UnsafeUnpin for Struct where + __Struct<'pin, T, U>: _pin_project::__private::Unpin { } trait StructMustNotImplDrop {} #[allow(clippy::drop_bounds, drop_bounds)] - impl StructMustNotImplDrop for T {} + impl StructMustNotImplDrop for T {} impl StructMustNotImplDrop for Struct {} #[doc(hidden)] - impl ::pin_project::__private::PinnedDrop for Struct { - unsafe fn drop(self: ::pin_project::__private::Pin<&mut Self>) {} + impl _pin_project::__private::PinnedDrop for Struct { + unsafe fn drop(self: _pin_project::__private::Pin<&mut Self>) {} } }; fn main() {} diff --git a/tests/expand/pub/tuple_struct.expanded.rs b/tests/expand/pub/tuple_struct.expanded.rs index 2641d16..02c3f24 100644 --- a/tests/expand/pub/tuple_struct.expanded.rs +++ b/tests/expand/pub/tuple_struct.expanded.rs @@ -10,10 +10,13 @@ pub struct TupleStruct(#[pin] pub T, pub U); #[allow(clippy::pattern_type_mismatch)] #[allow(clippy::redundant_pub_crate)] #[allow(clippy::type_repetition_in_bounds)] +#[allow(unused_qualifications)] #[allow(clippy::semicolon_if_nothing_returned)] #[allow(clippy::use_self)] #[allow(clippy::used_underscore_binding)] const _: () = { + #[allow(unused_extern_crates)] + extern crate pin_project as _pin_project; #[allow(dead_code)] #[allow(clippy::mut_mut)] pub(crate) struct __TupleStructProjection<'pin, T, U>( @@ -32,20 +35,20 @@ const _: () = { TupleStruct: 'pin; impl TupleStruct { pub(crate) fn project<'pin>( - self: ::pin_project::__private::Pin<&'pin mut Self>, + self: _pin_project::__private::Pin<&'pin mut Self>, ) -> __TupleStructProjection<'pin, T, U> { unsafe { let Self(_0, _1) = self.get_unchecked_mut(); - __TupleStructProjection(::pin_project::__private::Pin::new_unchecked(_0), _1) + __TupleStructProjection(_pin_project::__private::Pin::new_unchecked(_0), _1) } } #[allow(clippy::missing_const_for_fn)] pub(crate) fn project_ref<'pin>( - self: ::pin_project::__private::Pin<&'pin Self>, + self: _pin_project::__private::Pin<&'pin Self>, ) -> __TupleStructProjectionRef<'pin, T, U> { unsafe { let Self(_0, _1) = self.get_ref(); - __TupleStructProjectionRef(::pin_project::__private::Pin::new_unchecked(_0), _1) + __TupleStructProjectionRef(_pin_project::__private::Pin::new_unchecked(_0), _1) } } } @@ -56,31 +59,31 @@ const _: () = { } #[allow(missing_debug_implementations)] pub struct __TupleStruct<'pin, T, U> { - __pin_project_use_generics: ::pin_project::__private::AlwaysUnpin< + __pin_project_use_generics: _pin_project::__private::AlwaysUnpin< 'pin, ( - ::pin_project::__private::PhantomData, - ::pin_project::__private::PhantomData, + _pin_project::__private::PhantomData, + _pin_project::__private::PhantomData, ), >, __field0: T, } - impl<'pin, T, U> ::pin_project::__private::Unpin for TupleStruct where - __TupleStruct<'pin, T, U>: ::pin_project::__private::Unpin + impl<'pin, T, U> _pin_project::__private::Unpin for TupleStruct where + __TupleStruct<'pin, T, U>: _pin_project::__private::Unpin { } #[doc(hidden)] - unsafe impl<'pin, T, U> ::pin_project::UnsafeUnpin for TupleStruct where - __TupleStruct<'pin, T, U>: ::pin_project::__private::Unpin + unsafe impl<'pin, T, U> _pin_project::UnsafeUnpin for TupleStruct where + __TupleStruct<'pin, T, U>: _pin_project::__private::Unpin { } trait TupleStructMustNotImplDrop {} #[allow(clippy::drop_bounds, drop_bounds)] - impl TupleStructMustNotImplDrop for T {} + impl TupleStructMustNotImplDrop for T {} impl TupleStructMustNotImplDrop for TupleStruct {} #[doc(hidden)] - impl ::pin_project::__private::PinnedDrop for TupleStruct { - unsafe fn drop(self: ::pin_project::__private::Pin<&mut Self>) {} + impl _pin_project::__private::PinnedDrop for TupleStruct { + unsafe fn drop(self: _pin_project::__private::Pin<&mut Self>) {} } }; fn main() {} diff --git a/tests/expand/unsafe_unpin/enum.expanded.rs b/tests/expand/unsafe_unpin/enum.expanded.rs index 1c51df0..3d53a1e 100644 --- a/tests/expand/unsafe_unpin/enum.expanded.rs +++ b/tests/expand/unsafe_unpin/enum.expanded.rs @@ -62,22 +62,25 @@ where #[allow(clippy::pattern_type_mismatch)] #[allow(clippy::redundant_pub_crate)] #[allow(clippy::type_repetition_in_bounds)] +#[allow(unused_qualifications)] #[allow(clippy::semicolon_if_nothing_returned)] #[allow(clippy::use_self)] #[allow(clippy::used_underscore_binding)] const _: () = { + #[allow(unused_extern_crates)] + extern crate pin_project as _pin_project; impl Enum { fn project<'pin>( - self: ::pin_project::__private::Pin<&'pin mut Self>, + self: _pin_project::__private::Pin<&'pin mut Self>, ) -> EnumProj<'pin, T, U> { unsafe { match self.get_unchecked_mut() { Self::Struct { pinned, unpinned } => EnumProj::Struct { - pinned: ::pin_project::__private::Pin::new_unchecked(pinned), + pinned: _pin_project::__private::Pin::new_unchecked(pinned), unpinned, }, Self::Tuple(_0, _1) => { - EnumProj::Tuple(::pin_project::__private::Pin::new_unchecked(_0), _1) + EnumProj::Tuple(_pin_project::__private::Pin::new_unchecked(_0), _1) } Self::Unit => EnumProj::Unit, } @@ -85,33 +88,33 @@ const _: () = { } #[allow(clippy::missing_const_for_fn)] fn project_ref<'pin>( - self: ::pin_project::__private::Pin<&'pin Self>, + self: _pin_project::__private::Pin<&'pin Self>, ) -> EnumProjRef<'pin, T, U> { unsafe { match self.get_ref() { Self::Struct { pinned, unpinned } => EnumProjRef::Struct { - pinned: ::pin_project::__private::Pin::new_unchecked(pinned), + pinned: _pin_project::__private::Pin::new_unchecked(pinned), unpinned, }, Self::Tuple(_0, _1) => { - EnumProjRef::Tuple(::pin_project::__private::Pin::new_unchecked(_0), _1) + EnumProjRef::Tuple(_pin_project::__private::Pin::new_unchecked(_0), _1) } Self::Unit => EnumProjRef::Unit, } } } } - impl<'pin, T, U> ::pin_project::__private::Unpin for Enum where - ::pin_project::__private::Wrapper<'pin, Self>: ::pin_project::UnsafeUnpin + impl<'pin, T, U> _pin_project::__private::Unpin for Enum where + _pin_project::__private::Wrapper<'pin, Self>: _pin_project::UnsafeUnpin { } trait EnumMustNotImplDrop {} #[allow(clippy::drop_bounds, drop_bounds)] - impl EnumMustNotImplDrop for T {} + impl EnumMustNotImplDrop for T {} impl EnumMustNotImplDrop for Enum {} #[doc(hidden)] - impl ::pin_project::__private::PinnedDrop for Enum { - unsafe fn drop(self: ::pin_project::__private::Pin<&mut Self>) {} + impl _pin_project::__private::PinnedDrop for Enum { + unsafe fn drop(self: _pin_project::__private::Pin<&mut Self>) {} } }; unsafe impl UnsafeUnpin for Enum {} diff --git a/tests/expand/unsafe_unpin/struct.expanded.rs b/tests/expand/unsafe_unpin/struct.expanded.rs index 67ede39..a866ab3 100644 --- a/tests/expand/unsafe_unpin/struct.expanded.rs +++ b/tests/expand/unsafe_unpin/struct.expanded.rs @@ -14,10 +14,13 @@ struct Struct { #[allow(clippy::pattern_type_mismatch)] #[allow(clippy::redundant_pub_crate)] #[allow(clippy::type_repetition_in_bounds)] +#[allow(unused_qualifications)] #[allow(clippy::semicolon_if_nothing_returned)] #[allow(clippy::use_self)] #[allow(clippy::used_underscore_binding)] const _: () = { + #[allow(unused_extern_crates)] + extern crate pin_project as _pin_project; #[allow(dead_code)] #[allow(clippy::mut_mut)] struct __StructProjection<'pin, T, U> @@ -38,24 +41,24 @@ const _: () = { } impl Struct { fn project<'pin>( - self: ::pin_project::__private::Pin<&'pin mut Self>, + self: _pin_project::__private::Pin<&'pin mut Self>, ) -> __StructProjection<'pin, T, U> { unsafe { let Self { pinned, unpinned } = self.get_unchecked_mut(); __StructProjection { - pinned: ::pin_project::__private::Pin::new_unchecked(pinned), + pinned: _pin_project::__private::Pin::new_unchecked(pinned), unpinned, } } } #[allow(clippy::missing_const_for_fn)] fn project_ref<'pin>( - self: ::pin_project::__private::Pin<&'pin Self>, + self: _pin_project::__private::Pin<&'pin Self>, ) -> __StructProjectionRef<'pin, T, U> { unsafe { let Self { pinned, unpinned } = self.get_ref(); __StructProjectionRef { - pinned: ::pin_project::__private::Pin::new_unchecked(pinned), + pinned: _pin_project::__private::Pin::new_unchecked(pinned), unpinned, } } @@ -66,17 +69,17 @@ const _: () = { let _ = &this.pinned; let _ = &this.unpinned; } - impl<'pin, T, U> ::pin_project::__private::Unpin for Struct where - ::pin_project::__private::Wrapper<'pin, Self>: ::pin_project::UnsafeUnpin + impl<'pin, T, U> _pin_project::__private::Unpin for Struct where + _pin_project::__private::Wrapper<'pin, Self>: _pin_project::UnsafeUnpin { } trait StructMustNotImplDrop {} #[allow(clippy::drop_bounds, drop_bounds)] - impl StructMustNotImplDrop for T {} + impl StructMustNotImplDrop for T {} impl StructMustNotImplDrop for Struct {} #[doc(hidden)] - impl ::pin_project::__private::PinnedDrop for Struct { - unsafe fn drop(self: ::pin_project::__private::Pin<&mut Self>) {} + impl _pin_project::__private::PinnedDrop for Struct { + unsafe fn drop(self: _pin_project::__private::Pin<&mut Self>) {} } }; unsafe impl UnsafeUnpin for Struct {} diff --git a/tests/expand/unsafe_unpin/tuple_struct.expanded.rs b/tests/expand/unsafe_unpin/tuple_struct.expanded.rs index 512f139..1a41976 100644 --- a/tests/expand/unsafe_unpin/tuple_struct.expanded.rs +++ b/tests/expand/unsafe_unpin/tuple_struct.expanded.rs @@ -10,10 +10,13 @@ struct TupleStruct(#[pin] T, U); #[allow(clippy::pattern_type_mismatch)] #[allow(clippy::redundant_pub_crate)] #[allow(clippy::type_repetition_in_bounds)] +#[allow(unused_qualifications)] #[allow(clippy::semicolon_if_nothing_returned)] #[allow(clippy::use_self)] #[allow(clippy::used_underscore_binding)] const _: () = { + #[allow(unused_extern_crates)] + extern crate pin_project as _pin_project; #[allow(dead_code)] #[allow(clippy::mut_mut)] struct __TupleStructProjection<'pin, T, U>( @@ -32,20 +35,20 @@ const _: () = { TupleStruct: 'pin; impl TupleStruct { fn project<'pin>( - self: ::pin_project::__private::Pin<&'pin mut Self>, + self: _pin_project::__private::Pin<&'pin mut Self>, ) -> __TupleStructProjection<'pin, T, U> { unsafe { let Self(_0, _1) = self.get_unchecked_mut(); - __TupleStructProjection(::pin_project::__private::Pin::new_unchecked(_0), _1) + __TupleStructProjection(_pin_project::__private::Pin::new_unchecked(_0), _1) } } #[allow(clippy::missing_const_for_fn)] fn project_ref<'pin>( - self: ::pin_project::__private::Pin<&'pin Self>, + self: _pin_project::__private::Pin<&'pin Self>, ) -> __TupleStructProjectionRef<'pin, T, U> { unsafe { let Self(_0, _1) = self.get_ref(); - __TupleStructProjectionRef(::pin_project::__private::Pin::new_unchecked(_0), _1) + __TupleStructProjectionRef(_pin_project::__private::Pin::new_unchecked(_0), _1) } } } @@ -54,17 +57,17 @@ const _: () = { let _ = &this.0; let _ = &this.1; } - impl<'pin, T, U> ::pin_project::__private::Unpin for TupleStruct where - ::pin_project::__private::Wrapper<'pin, Self>: ::pin_project::UnsafeUnpin + impl<'pin, T, U> _pin_project::__private::Unpin for TupleStruct where + _pin_project::__private::Wrapper<'pin, Self>: _pin_project::UnsafeUnpin { } trait TupleStructMustNotImplDrop {} #[allow(clippy::drop_bounds, drop_bounds)] - impl TupleStructMustNotImplDrop for T {} + impl TupleStructMustNotImplDrop for T {} impl TupleStructMustNotImplDrop for TupleStruct {} #[doc(hidden)] - impl ::pin_project::__private::PinnedDrop for TupleStruct { - unsafe fn drop(self: ::pin_project::__private::Pin<&mut Self>) {} + impl _pin_project::__private::PinnedDrop for TupleStruct { + unsafe fn drop(self: _pin_project::__private::Pin<&mut Self>) {} } }; unsafe impl UnsafeUnpin for Struct {} diff --git a/tests/lint.rs b/tests/lint.rs index 5cdd2c6..6a75461 100644 --- a/tests/lint.rs +++ b/tests/lint.rs @@ -8,7 +8,8 @@ #![forbid(future_incompatible, rust_2018_compatibility, rust_2021_compatibility)] // lints forbidden as a part of future_incompatible, rust_2018_compatibility, and rust_2021_compatibility are not included in the list below. // elided_lifetimes_in_paths, explicit_outlives_requirements, unused_extern_crates: as a part of rust_2018_idioms -// unsafe_block_in_unsafe_fn: unsafe_block_in_unsafe_fn: requires Rust 1.52. and, we don't generate unsafe fn. +// unsafe_block_in_unsafe_fn: requires Rust 1.52. and, we don't generate unsafe fn. +// non_exhaustive_omitted_patterns: unstable // unstable_features: no way to generate #![feature(..)] by macros, expect for unstable inner attribute. and this lint is deprecated: https://doc.rust-lang.org/rustc/lints/listing/allowed-by-default.html#unstable-features // unused_crate_dependencies: unrelated // unsafe_code: checked in forbid_unsafe module @@ -772,7 +773,7 @@ pub mod single_use_lifetimes { for<'pin, 'pin_, 'pin__> &'pin &'pin_ &'pin__ T: Unpin, { #[pin] - f: &'pin___ mut T, + _f: &'pin___ mut T, } pub mod inside_macro { @@ -795,7 +796,7 @@ pub mod single_use_lifetimes { for<'pin, 'pin_, 'pin__> &'pin &'pin_ &'pin__ T: Unpin, { #[pin] - f: &'pin___ mut T, + _f: &'pin___ mut T, } }; } diff --git a/tests/ui/cfg/cfg_attr-resolve.stderr b/tests/ui/cfg/cfg_attr-resolve.stderr index 12bcc67..0393c14 100644 --- a/tests/ui/cfg/cfg_attr-resolve.stderr +++ b/tests/ui/cfg/cfg_attr-resolve.stderr @@ -1,5 +1,5 @@ error[E0599]: no method named `project` found for struct `Pin<&mut Foo>` in the current scope - --> $DIR/cfg_attr-resolve.rs:10:30 + --> tests/ui/cfg/cfg_attr-resolve.rs:10:30 | 10 | let _ = Pin::new(&mut x).project(); //~ ERROR E0599 | ^^^^^^^ method not found in `Pin<&mut Foo>` diff --git a/tests/ui/cfg/cfg_attr-type-mismatch.stderr b/tests/ui/cfg/cfg_attr-type-mismatch.stderr index 576a08c..366d9c7 100644 --- a/tests/ui/cfg/cfg_attr-type-mismatch.stderr +++ b/tests/ui/cfg/cfg_attr-type-mismatch.stderr @@ -1,5 +1,5 @@ error[E0308]: mismatched types - --> $DIR/cfg_attr-type-mismatch.rs:20:27 + --> tests/ui/cfg/cfg_attr-type-mismatch.rs:20:27 | 20 | let _: Pin<&mut u8> = x.f; //~ ERROR E0308 | ------------ ^^^ expected struct `Pin`, found `&mut u8` @@ -10,7 +10,7 @@ error[E0308]: mismatched types found mutable reference `&mut u8` error[E0308]: mismatched types - --> $DIR/cfg_attr-type-mismatch.rs:24:22 + --> tests/ui/cfg/cfg_attr-type-mismatch.rs:24:22 | 24 | let _: &mut u8 = x.f; //~ ERROR E0308 | ------- ^^^ diff --git a/tests/ui/cfg/packed_sneaky-span-issue-1.stderr b/tests/ui/cfg/packed_sneaky-span-issue-1.stderr index c98d3ee..4f3acc3 100644 --- a/tests/ui/cfg/packed_sneaky-span-issue-1.stderr +++ b/tests/ui/cfg/packed_sneaky-span-issue-1.stderr @@ -1,5 +1,5 @@ error: #[pin_project] attribute may not be used on #[repr(packed)] types - --> $DIR/packed_sneaky-span-issue-1.rs:5:15 + --> tests/ui/cfg/packed_sneaky-span-issue-1.rs:5:15 | 5 | #[hidden_repr(packed)] //~ ERROR may not be used on #[repr(packed)] types | ^^^^^^ diff --git a/tests/ui/cfg/packed_sneaky-span-issue-2.stderr b/tests/ui/cfg/packed_sneaky-span-issue-2.stderr index 25b9cdc..cc2795a 100644 --- a/tests/ui/cfg/packed_sneaky-span-issue-2.stderr +++ b/tests/ui/cfg/packed_sneaky-span-issue-2.stderr @@ -1,5 +1,5 @@ error: #[pin_project] attribute may not be used on #[repr(packed)] types - --> $DIR/packed_sneaky-span-issue-2.rs:5:15 + --> tests/ui/cfg/packed_sneaky-span-issue-2.rs:5:15 | 5 | #[hidden_repr(packed)] //~ ERROR may not be used on #[repr(packed)] types | ^^^^^^ diff --git a/tests/ui/cfg/packed_sneaky.stderr b/tests/ui/cfg/packed_sneaky.stderr index b0d4d93..a54c2ec 100644 --- a/tests/ui/cfg/packed_sneaky.stderr +++ b/tests/ui/cfg/packed_sneaky.stderr @@ -1,5 +1,5 @@ error: #[pin_project] attribute may not be used on #[repr(packed)] types - --> $DIR/packed_sneaky.rs:6:27 + --> tests/ui/cfg/packed_sneaky.rs:6:27 | 6 | #[hidden_repr_cfg_not_any(packed)] //~ ERROR may not be used on #[repr(packed)] types | ^^^^^^ diff --git a/tests/ui/cfg/unsupported.stderr b/tests/ui/cfg/unsupported.stderr index 7ad20d1..e1c871c 100644 --- a/tests/ui/cfg/unsupported.stderr +++ b/tests/ui/cfg/unsupported.stderr @@ -1,5 +1,5 @@ error: #[pin_project] attribute may not be used on structs with zero fields - --> $DIR/unsupported.rs:4:10 + --> tests/ui/cfg/unsupported.rs:4:10 | 4 | struct S { | __________^ diff --git a/tests/ui/not_unpin/conflict-unpin.stderr b/tests/ui/not_unpin/conflict-unpin.stderr index 7b43b0f..d644bf7 100644 --- a/tests/ui/not_unpin/conflict-unpin.stderr +++ b/tests/ui/not_unpin/conflict-unpin.stderr @@ -1,5 +1,5 @@ error[E0119]: conflicting implementations of trait `std::marker::Unpin` for type `Foo<_, _>` - --> $DIR/conflict-unpin.rs:3:15 + --> tests/ui/not_unpin/conflict-unpin.rs:3:15 | 3 | #[pin_project(!Unpin)] //~ ERROR E0119 | ^^^^^^ conflicting implementation for `Foo<_, _>` @@ -8,7 +8,7 @@ error[E0119]: conflicting implementations of trait `std::marker::Unpin` for type | --------------------------------------------- first implementation here error[E0119]: conflicting implementations of trait `std::marker::Unpin` for type `Bar<_, _>` - --> $DIR/conflict-unpin.rs:12:15 + --> tests/ui/not_unpin/conflict-unpin.rs:12:15 | 12 | #[pin_project(!Unpin)] //~ ERROR E0119 | ^^^^^^ conflicting implementation for `Bar<_, _>` @@ -17,7 +17,7 @@ error[E0119]: conflicting implementations of trait `std::marker::Unpin` for type | ------------------------------ first implementation here error[E0119]: conflicting implementations of trait `std::marker::Unpin` for type `Baz<_, _>` - --> $DIR/conflict-unpin.rs:21:15 + --> tests/ui/not_unpin/conflict-unpin.rs:21:15 | 21 | #[pin_project(!Unpin)] //~ ERROR E0119 | ^^^^^^ conflicting implementation for `Baz<_, _>` diff --git a/tests/ui/not_unpin/impl-unsafe-unpin.stderr b/tests/ui/not_unpin/impl-unsafe-unpin.stderr index 7051bd8..a944e95 100644 --- a/tests/ui/not_unpin/impl-unsafe-unpin.stderr +++ b/tests/ui/not_unpin/impl-unsafe-unpin.stderr @@ -1,5 +1,5 @@ -error[E0119]: conflicting implementations of trait `pin_project::UnsafeUnpin` for type `Foo<_, _>` - --> $DIR/impl-unsafe-unpin.rs:3:1 +error[E0119]: conflicting implementations of trait `_::_pin_project::UnsafeUnpin` for type `Foo<_, _>` + --> tests/ui/not_unpin/impl-unsafe-unpin.rs:3:1 | 3 | #[pin_project(!Unpin)] //~ ERROR E0119 | ^^^^^^^^^^^^^^^^^^^^^^ conflicting implementation for `Foo<_, _>` @@ -9,8 +9,8 @@ error[E0119]: conflicting implementations of trait `pin_project::UnsafeUnpin` fo | = note: this error originates in the derive macro `::pin_project::__private::__PinProjectInternalDerive` (in Nightly builds, run with -Z macro-backtrace for more info) -error[E0119]: conflicting implementations of trait `pin_project::UnsafeUnpin` for type `Bar<_, _>` - --> $DIR/impl-unsafe-unpin.rs:12:1 +error[E0119]: conflicting implementations of trait `_::_pin_project::UnsafeUnpin` for type `Bar<_, _>` + --> tests/ui/not_unpin/impl-unsafe-unpin.rs:12:1 | 12 | #[pin_project(!Unpin)] //~ ERROR E0119 | ^^^^^^^^^^^^^^^^^^^^^^ conflicting implementation for `Bar<_, _>` @@ -20,8 +20,8 @@ error[E0119]: conflicting implementations of trait `pin_project::UnsafeUnpin` fo | = note: this error originates in the derive macro `::pin_project::__private::__PinProjectInternalDerive` (in Nightly builds, run with -Z macro-backtrace for more info) -error[E0119]: conflicting implementations of trait `pin_project::UnsafeUnpin` for type `Baz<_, _>` - --> $DIR/impl-unsafe-unpin.rs:21:1 +error[E0119]: conflicting implementations of trait `_::_pin_project::UnsafeUnpin` for type `Baz<_, _>` + --> tests/ui/not_unpin/impl-unsafe-unpin.rs:21:1 | 21 | #[pin_project(!Unpin)] //~ ERROR E0119 | ^^^^^^^^^^^^^^^^^^^^^^ conflicting implementation for `Baz<_, _>` diff --git a/tests/ui/pin_project/add-attr-to-struct.stderr b/tests/ui/pin_project/add-attr-to-struct.stderr index b28559b..6fb88e8 100644 --- a/tests/ui/pin_project/add-attr-to-struct.stderr +++ b/tests/ui/pin_project/add-attr-to-struct.stderr @@ -1,5 +1,5 @@ error: duplicate #[pin] attribute - --> $DIR/add-attr-to-struct.rs:7:1 + --> tests/ui/pin_project/add-attr-to-struct.rs:7:1 | 7 | #[add_pin_attr(struct)] //~ ERROR duplicate #[pin] attribute | ^^^^^^^^^^^^^^^^^^^^^^^ @@ -7,7 +7,7 @@ error: duplicate #[pin] attribute = note: this error originates in the attribute macro `add_pin_attr` (in Nightly builds, run with -Z macro-backtrace for more info) error: #[pin] attribute may only be used on fields of structs or variants - --> $DIR/add-attr-to-struct.rs:13:1 + --> tests/ui/pin_project/add-attr-to-struct.rs:13:1 | 13 | #[add_pin_attr(struct)] //~ ERROR #[pin] attribute may only be used on fields of structs or variants | ^^^^^^^^^^^^^^^^^^^^^^^ diff --git a/tests/ui/pin_project/add-pinned-field.stderr b/tests/ui/pin_project/add-pinned-field.stderr index bdeafb8..d0832cc 100644 --- a/tests/ui/pin_project/add-pinned-field.stderr +++ b/tests/ui/pin_project/add-pinned-field.stderr @@ -1,48 +1,52 @@ error[E0277]: `PhantomPinned` cannot be unpinned - --> $DIR/add-pinned-field.rs:21:5 + --> tests/ui/pin_project/add-pinned-field.rs:21:5 | -4 | fn is_unpin() {} - | ----- required by this bound in `is_unpin` -... 21 | is_unpin::(); //~ ERROR E0277 | ^^^^^^^^^^^^^^^ within `__Foo<'_>`, the trait `Unpin` is not implemented for `PhantomPinned` | = note: consider using `Box::pin` note: required because it appears within the type `__Foo<'_>` - --> $DIR/add-pinned-field.rs:8:8 + --> tests/ui/pin_project/add-pinned-field.rs:8:8 | 8 | struct Foo { | ^^^ note: required because of the requirements on the impl of `Unpin` for `Foo` - --> $DIR/add-pinned-field.rs:6:1 + --> tests/ui/pin_project/add-pinned-field.rs:6:1 | 6 | #[pin_project] | ^^^^^^^^^^^^^^ 7 | #[add_pinned_field] 8 | struct Foo { | ^^^ +note: required by a bound in `is_unpin` + --> tests/ui/pin_project/add-pinned-field.rs:4:16 + | +4 | fn is_unpin() {} + | ^^^^^ required by this bound in `is_unpin` = note: this error originates in the derive macro `::pin_project::__private::__PinProjectInternalDerive` (in Nightly builds, run with -Z macro-backtrace for more info) error[E0277]: `PhantomPinned` cannot be unpinned - --> $DIR/add-pinned-field.rs:22:5 + --> tests/ui/pin_project/add-pinned-field.rs:22:5 | -4 | fn is_unpin() {} - | ----- required by this bound in `is_unpin` -... 22 | is_unpin::(); //~ ERROR E0277 | ^^^^^^^^^^^^^^^ within `__Bar<'_>`, the trait `Unpin` is not implemented for `PhantomPinned` | = note: consider using `Box::pin` note: required because it appears within the type `__Bar<'_>` - --> $DIR/add-pinned-field.rs:15:8 + --> tests/ui/pin_project/add-pinned-field.rs:15:8 | 15 | struct Bar { | ^^^ note: required because of the requirements on the impl of `Unpin` for `Bar` - --> $DIR/add-pinned-field.rs:14:1 + --> tests/ui/pin_project/add-pinned-field.rs:14:1 | 14 | #[pin_project] | ^^^^^^^^^^^^^^ 15 | struct Bar { | ^^^ +note: required by a bound in `is_unpin` + --> tests/ui/pin_project/add-pinned-field.rs:4:16 + | +4 | fn is_unpin() {} + | ^^^^^ required by this bound in `is_unpin` = note: this error originates in the derive macro `::pin_project::__private::__PinProjectInternalDerive` (in Nightly builds, run with -Z macro-backtrace for more info) diff --git a/tests/ui/pin_project/conflict-drop.stderr b/tests/ui/pin_project/conflict-drop.stderr index 25b0e00..4ae628d 100644 --- a/tests/ui/pin_project/conflict-drop.stderr +++ b/tests/ui/pin_project/conflict-drop.stderr @@ -1,5 +1,5 @@ error[E0119]: conflicting implementations of trait `_::FooMustNotImplDrop` for type `Foo<_, _>` - --> $DIR/conflict-drop.rs:5:1 + --> tests/ui/pin_project/conflict-drop.rs:5:1 | 5 | #[pin_project] //~ ERROR E0119 | ^^^^^^^^^^^^^^ @@ -10,7 +10,7 @@ error[E0119]: conflicting implementations of trait `_::FooMustNotImplDrop` for t = note: this error originates in the derive macro `::pin_project::__private::__PinProjectInternalDerive` (in Nightly builds, run with -Z macro-backtrace for more info) error[E0119]: conflicting implementations of trait `std::ops::Drop` for type `Bar<_, _>` - --> $DIR/conflict-drop.rs:16:15 + --> tests/ui/pin_project/conflict-drop.rs:16:15 | 16 | #[pin_project(PinnedDrop)] //~ ERROR E0119 | ^^^^^^^^^^ conflicting implementation for `Bar<_, _>` diff --git a/tests/ui/pin_project/conflict-unpin.stderr b/tests/ui/pin_project/conflict-unpin.stderr index 5a16469..5e012c4 100644 --- a/tests/ui/pin_project/conflict-unpin.stderr +++ b/tests/ui/pin_project/conflict-unpin.stderr @@ -1,5 +1,5 @@ error[E0119]: conflicting implementations of trait `std::marker::Unpin` for type `Foo<_, _>` - --> $DIR/conflict-unpin.rs:5:1 + --> tests/ui/pin_project/conflict-unpin.rs:5:1 | 5 | #[pin_project] //~ ERROR E0119 | ^^^^^^^^^^^^^^ conflicting implementation for `Foo<_, _>` @@ -10,7 +10,7 @@ error[E0119]: conflicting implementations of trait `std::marker::Unpin` for type = note: this error originates in the derive macro `::pin_project::__private::__PinProjectInternalDerive` (in Nightly builds, run with -Z macro-backtrace for more info) error[E0119]: conflicting implementations of trait `std::marker::Unpin` for type `Bar<_, _>` - --> $DIR/conflict-unpin.rs:17:1 + --> tests/ui/pin_project/conflict-unpin.rs:17:1 | 17 | #[pin_project] //~ ERROR E0119 | ^^^^^^^^^^^^^^ conflicting implementation for `Bar<_, _>` @@ -21,7 +21,7 @@ error[E0119]: conflicting implementations of trait `std::marker::Unpin` for type = note: this error originates in the derive macro `::pin_project::__private::__PinProjectInternalDerive` (in Nightly builds, run with -Z macro-backtrace for more info) error[E0119]: conflicting implementations of trait `std::marker::Unpin` for type `Baz<_, _>` - --> $DIR/conflict-unpin.rs:27:1 + --> tests/ui/pin_project/conflict-unpin.rs:27:1 | 27 | #[pin_project] //~ ERROR E0119 | ^^^^^^^^^^^^^^ conflicting implementation for `Baz<_, _>` diff --git a/tests/ui/pin_project/impl-unsafe-unpin.stderr b/tests/ui/pin_project/impl-unsafe-unpin.stderr index e97d31b..ba42303 100644 --- a/tests/ui/pin_project/impl-unsafe-unpin.stderr +++ b/tests/ui/pin_project/impl-unsafe-unpin.stderr @@ -1,5 +1,5 @@ -error[E0119]: conflicting implementations of trait `pin_project::UnsafeUnpin` for type `Foo<_, _>` - --> $DIR/impl-unsafe-unpin.rs:3:1 +error[E0119]: conflicting implementations of trait `_::_pin_project::UnsafeUnpin` for type `Foo<_, _>` + --> tests/ui/pin_project/impl-unsafe-unpin.rs:3:1 | 3 | #[pin_project] //~ ERROR E0119 | ^^^^^^^^^^^^^^ conflicting implementation for `Foo<_, _>` @@ -9,8 +9,8 @@ error[E0119]: conflicting implementations of trait `pin_project::UnsafeUnpin` fo | = note: this error originates in the derive macro `::pin_project::__private::__PinProjectInternalDerive` (in Nightly builds, run with -Z macro-backtrace for more info) -error[E0119]: conflicting implementations of trait `pin_project::UnsafeUnpin` for type `Bar<_, _>` - --> $DIR/impl-unsafe-unpin.rs:12:1 +error[E0119]: conflicting implementations of trait `_::_pin_project::UnsafeUnpin` for type `Bar<_, _>` + --> tests/ui/pin_project/impl-unsafe-unpin.rs:12:1 | 12 | #[pin_project] //~ ERROR E0119 | ^^^^^^^^^^^^^^ conflicting implementation for `Bar<_, _>` @@ -20,8 +20,8 @@ error[E0119]: conflicting implementations of trait `pin_project::UnsafeUnpin` fo | = note: this error originates in the derive macro `::pin_project::__private::__PinProjectInternalDerive` (in Nightly builds, run with -Z macro-backtrace for more info) -error[E0119]: conflicting implementations of trait `pin_project::UnsafeUnpin` for type `Baz<_, _>` - --> $DIR/impl-unsafe-unpin.rs:21:1 +error[E0119]: conflicting implementations of trait `_::_pin_project::UnsafeUnpin` for type `Baz<_, _>` + --> tests/ui/pin_project/impl-unsafe-unpin.rs:21:1 | 21 | #[pin_project] //~ ERROR E0119 | ^^^^^^^^^^^^^^ conflicting implementation for `Baz<_, _>` diff --git a/tests/ui/pin_project/import_unnamed.stderr b/tests/ui/pin_project/import_unnamed.stderr index f54e4c4..260a35a 100644 --- a/tests/ui/pin_project/import_unnamed.stderr +++ b/tests/ui/pin_project/import_unnamed.stderr @@ -1,29 +1,29 @@ error[E0432]: unresolved import `crate::pub_::__DefaultProjection` - --> $DIR/import_unnamed.rs:16:9 + --> tests/ui/pin_project/import_unnamed.rs:16:9 | 16 | use crate::pub_::__DefaultProjection; //~ ERROR E0432 | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ no `__DefaultProjection` in `pub_` error[E0432]: unresolved import `crate::pub_::__DefaultProjectionRef` - --> $DIR/import_unnamed.rs:18:9 + --> tests/ui/pin_project/import_unnamed.rs:18:9 | 18 | use crate::pub_::__DefaultProjectionRef; //~ ERROR E0432 | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ no `__DefaultProjectionRef` in `pub_` error[E0432]: unresolved import `crate::pub_::__ReplaceProjection` - --> $DIR/import_unnamed.rs:20:9 + --> tests/ui/pin_project/import_unnamed.rs:20:9 | 20 | use crate::pub_::__ReplaceProjection; //~ ERROR E0432 | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ no `__ReplaceProjection` in `pub_` error[E0432]: unresolved import `crate::pub_::__ReplaceProjectionOwned` - --> $DIR/import_unnamed.rs:22:9 + --> tests/ui/pin_project/import_unnamed.rs:22:9 | 22 | use crate::pub_::__ReplaceProjectionOwned; //~ ERROR E0432 | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ no `__ReplaceProjectionOwned` in `pub_` error[E0432]: unresolved import `crate::pub_::__ReplaceProjectionRef` - --> $DIR/import_unnamed.rs:24:9 + --> tests/ui/pin_project/import_unnamed.rs:24:9 | 24 | use crate::pub_::__ReplaceProjectionRef; //~ ERROR E0432 | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ no `__ReplaceProjectionRef` in `pub_` diff --git a/tests/ui/pin_project/invalid.stderr b/tests/ui/pin_project/invalid.stderr index 35552bf..c43d363 100644 --- a/tests/ui/pin_project/invalid.stderr +++ b/tests/ui/pin_project/invalid.stderr @@ -1,329 +1,329 @@ -error: unexpected token: () - --> $DIR/invalid.rs:6:14 +error: unexpected token: `()` + --> tests/ui/pin_project/invalid.rs:6:14 | 6 | #[pin()] //~ ERROR unexpected token | ^^ -error: unexpected token: (foo) - --> $DIR/invalid.rs:11:29 +error: unexpected token: `(foo)` + --> tests/ui/pin_project/invalid.rs:11:29 | 11 | struct TupleStruct(#[pin(foo)] ()); //~ ERROR unexpected token | ^^^^^ -error: unexpected token: (foo) - --> $DIR/invalid.rs:15:16 +error: unexpected token: `(foo)` + --> tests/ui/pin_project/invalid.rs:15:16 | 15 | V(#[pin(foo)] ()), //~ ERROR unexpected token | ^^^^^ -error: unexpected token: (foo) - --> $DIR/invalid.rs:21:18 +error: unexpected token: `(foo)` + --> tests/ui/pin_project/invalid.rs:21:18 | 21 | #[pin(foo)] //~ ERROR unexpected token | ^^^^^ error: duplicate #[pin] attribute - --> $DIR/invalid.rs:33:9 + --> tests/ui/pin_project/invalid.rs:33:9 | 33 | #[pin] //~ ERROR duplicate #[pin] attribute | ^^^^^^ error: duplicate #[pin] attribute - --> $DIR/invalid.rs:40:9 + --> tests/ui/pin_project/invalid.rs:40:9 | 40 | #[pin] | ^^^^^^ error: duplicate #[pin] attribute - --> $DIR/invalid.rs:49:13 + --> tests/ui/pin_project/invalid.rs:49:13 | 49 | #[pin] | ^^^^^^ error: duplicate #[pin] attribute - --> $DIR/invalid.rs:59:13 + --> tests/ui/pin_project/invalid.rs:59:13 | 59 | #[pin] //~ ERROR duplicate #[pin] attribute | ^^^^^^ error: #[pin] attribute may only be used on fields of structs or variants - --> $DIR/invalid.rs:69:5 + --> tests/ui/pin_project/invalid.rs:69:5 | 69 | #[pin] //~ ERROR may only be used on fields of structs or variants | ^^^^^^ error: #[pin] attribute may only be used on fields of structs or variants - --> $DIR/invalid.rs:77:9 + --> tests/ui/pin_project/invalid.rs:77:9 | 77 | #[pin] //~ ERROR may only be used on fields of structs or variants | ^^^^^^ error: #[pin] attribute may only be used on fields of structs or variants - --> $DIR/invalid.rs:82:5 + --> tests/ui/pin_project/invalid.rs:82:5 | 82 | #[pin] //~ ERROR may only be used on fields of structs or variants | ^^^^^^ error: `Replace` argument was removed, use `project_replace` argument instead - --> $DIR/invalid.rs:91:19 + --> tests/ui/pin_project/invalid.rs:91:19 | 91 | #[pin_project(Replace)] //~ ERROR `Replace` argument was removed, use `project_replace` argument instead | ^^^^^^^ error: expected identifier - --> $DIR/invalid.rs:94:31 + --> tests/ui/pin_project/invalid.rs:94:31 | 94 | #[pin_project(UnsafeUnpin,,)] //~ ERROR expected identifier | ^ error: unexpected argument: Foo - --> $DIR/invalid.rs:97:19 + --> tests/ui/pin_project/invalid.rs:97:19 | 97 | #[pin_project(Foo)] //~ ERROR unexpected argument | ^^^ error: expected identifier - --> $DIR/invalid.rs:100:19 + --> tests/ui/pin_project/invalid.rs:100:19 | 100 | #[pin_project(,UnsafeUnpin)] //~ ERROR expected identifier | ^ error: expected `,` - --> $DIR/invalid.rs:106:30 + --> tests/ui/pin_project/invalid.rs:106:30 | 106 | #[pin_project(PinnedDrop PinnedDrop)] //~ ERROR expected `,` | ^^^^^^^^^^ error: duplicate `PinnedDrop` argument - --> $DIR/invalid.rs:109:31 + --> tests/ui/pin_project/invalid.rs:109:31 | 109 | #[pin_project(PinnedDrop, PinnedDrop)] //~ ERROR duplicate `PinnedDrop` argument | ^^^^^^^^^^ error: duplicate `UnsafeUnpin` argument - --> $DIR/invalid.rs:112:32 + --> tests/ui/pin_project/invalid.rs:112:32 | 112 | #[pin_project(UnsafeUnpin, UnsafeUnpin)] //~ ERROR duplicate `UnsafeUnpin` argument | ^^^^^^^^^^^ error: duplicate `!Unpin` argument - --> $DIR/invalid.rs:115:27 + --> tests/ui/pin_project/invalid.rs:115:27 | 115 | #[pin_project(!Unpin, !Unpin)] //~ ERROR duplicate `!Unpin` argument | ^^^^^^ error: duplicate `UnsafeUnpin` argument - --> $DIR/invalid.rs:118:44 + --> tests/ui/pin_project/invalid.rs:118:44 | 118 | #[pin_project(PinnedDrop, UnsafeUnpin, UnsafeUnpin)] //~ ERROR duplicate `UnsafeUnpin` argument | ^^^^^^^^^^^ error: duplicate `PinnedDrop` argument - --> $DIR/invalid.rs:121:44 + --> tests/ui/pin_project/invalid.rs:121:44 | 121 | #[pin_project(PinnedDrop, UnsafeUnpin, PinnedDrop, UnsafeUnpin)] //~ ERROR duplicate `PinnedDrop` argument | ^^^^^^^^^^ error: duplicate `project` argument - --> $DIR/invalid.rs:124:32 + --> tests/ui/pin_project/invalid.rs:124:32 | 124 | #[pin_project(project = A, project = B)] //~ ERROR duplicate `project` argument | ^^^^^^^^^^^ error: duplicate `project` argument - --> $DIR/invalid.rs:127:49 + --> tests/ui/pin_project/invalid.rs:127:49 | 127 | #[pin_project(project = A, project_ref = A, project = B)] //~ ERROR duplicate `project` argument | ^^^^^^^^^^^ error: duplicate `project_ref` argument - --> $DIR/invalid.rs:130:36 + --> tests/ui/pin_project/invalid.rs:130:36 | 130 | #[pin_project(project_ref = A, project_ref = B)] //~ ERROR duplicate `project_ref` argument | ^^^^^^^^^^^^^^^ error: duplicate `project_replace` argument - --> $DIR/invalid.rs:133:40 + --> tests/ui/pin_project/invalid.rs:133:40 | 133 | #[pin_project(project_replace = A, project_replace = B)] //~ ERROR duplicate `project_replace` argument | ^^^^^^^^^^^^^^^^^^^ error: duplicate `project_replace` argument - --> $DIR/invalid.rs:136:36 + --> tests/ui/pin_project/invalid.rs:136:36 | 136 | #[pin_project(project_replace, project_replace = B)] //~ ERROR duplicate `project_replace` argument | ^^^^^^^^^^^^^^^^^^^ error: duplicate `project_replace` argument - --> $DIR/invalid.rs:139:40 + --> tests/ui/pin_project/invalid.rs:139:40 | 139 | #[pin_project(project_replace = A, project_replace)] //~ ERROR duplicate `project_replace` argument | ^^^^^^^^^^^^^^^ error: arguments `PinnedDrop` and `project_replace` are mutually exclusive - --> $DIR/invalid.rs:145:19 + --> tests/ui/pin_project/invalid.rs:145:19 | 145 | #[pin_project(PinnedDrop, project_replace)] //~ ERROR arguments `PinnedDrop` and `project_replace` are mutually exclusive | ^^^^^^^^^^ error: arguments `PinnedDrop` and `project_replace` are mutually exclusive - --> $DIR/invalid.rs:148:49 + --> tests/ui/pin_project/invalid.rs:148:49 | 148 | #[pin_project(project_replace, UnsafeUnpin, PinnedDrop)] //~ ERROR arguments `PinnedDrop` and `project_replace` are mutually exclusive | ^^^^^^^^^^ error: arguments `UnsafeUnpin` and `!Unpin` are mutually exclusive - --> $DIR/invalid.rs:151:19 + --> tests/ui/pin_project/invalid.rs:151:19 | 151 | #[pin_project(UnsafeUnpin, !Unpin)] //~ ERROR arguments `UnsafeUnpin` and `!Unpin` are mutually exclusive | ^^^^^^^^^^^ error: arguments `UnsafeUnpin` and `!Unpin` are mutually exclusive - --> $DIR/invalid.rs:154:39 + --> tests/ui/pin_project/invalid.rs:154:39 | 154 | #[pin_project(!Unpin, PinnedDrop, UnsafeUnpin)] //~ ERROR arguments `UnsafeUnpin` and `!Unpin` are mutually exclusive | ^^^^^^^^^^^ error: expected `!Unpin`, found `!` - --> $DIR/invalid.rs:157:19 + --> tests/ui/pin_project/invalid.rs:157:19 | 157 | #[pin_project(!)] //~ ERROR expected `!Unpin`, found `!` | ^ error: unexpected argument: Unpin - --> $DIR/invalid.rs:160:19 + --> tests/ui/pin_project/invalid.rs:160:19 | 160 | #[pin_project(Unpin)] //~ ERROR unexpected argument | ^^^^^ error: expected `project = `, found `project` - --> $DIR/invalid.rs:163:19 + --> tests/ui/pin_project/invalid.rs:163:19 | 163 | #[pin_project(project)] //~ ERROR expected `project = `, found `project` | ^^^^^^^ error: expected `project = `, found `project =` - --> $DIR/invalid.rs:166:19 + --> tests/ui/pin_project/invalid.rs:166:19 | 166 | #[pin_project(project = )] //~ ERROR expected `project = `, found `project =` | ^^^^^^^^^ error: expected identifier - --> $DIR/invalid.rs:169:29 + --> tests/ui/pin_project/invalid.rs:169:29 | 169 | #[pin_project(project = !)] //~ ERROR expected identifier | ^ error: expected `project_ref = `, found `project_ref` - --> $DIR/invalid.rs:172:19 + --> tests/ui/pin_project/invalid.rs:172:19 | 172 | #[pin_project(project_ref)] //~ ERROR expected `project_ref = `, found `project_ref` | ^^^^^^^^^^^ error: expected `project_ref = `, found `project_ref =` - --> $DIR/invalid.rs:175:19 + --> tests/ui/pin_project/invalid.rs:175:19 | 175 | #[pin_project(project_ref = )] //~ ERROR expected `project_ref = `, found `project_ref =` | ^^^^^^^^^^^^^ error: expected identifier - --> $DIR/invalid.rs:178:33 + --> tests/ui/pin_project/invalid.rs:178:33 | 178 | #[pin_project(project_ref = !)] //~ ERROR expected identifier | ^ error: expected `project_replace = `, found `project_replace =` - --> $DIR/invalid.rs:184:19 + --> tests/ui/pin_project/invalid.rs:184:19 | 184 | #[pin_project(project_replace = )] //~ ERROR expected `project_replace = `, found `project_replace =` | ^^^^^^^^^^^^^^^^^ error: expected identifier - --> $DIR/invalid.rs:187:37 + --> tests/ui/pin_project/invalid.rs:187:37 | 187 | #[pin_project(project_replace = !)] //~ ERROR expected identifier | ^ error: `project_replace` argument requires a value when used on enums - --> $DIR/invalid.rs:190:19 + --> tests/ui/pin_project/invalid.rs:190:19 | 190 | #[pin_project(project_replace)] //~ ERROR `project_replace` argument requires a value when used on enums | ^^^^^^^^^^^^^^^ error: name `OrigAndProj` is the same as the original type name - --> $DIR/invalid.rs:199:29 + --> tests/ui/pin_project/invalid.rs:199:29 | 199 | #[pin_project(project = OrigAndProj)] //~ ERROR name `OrigAndProj` is the same as the original type name | ^^^^^^^^^^^ error: name `OrigAndProjRef` is the same as the original type name - --> $DIR/invalid.rs:202:33 + --> tests/ui/pin_project/invalid.rs:202:33 | 202 | #[pin_project(project_ref = OrigAndProjRef)] //~ ERROR name `OrigAndProjRef` is the same as the original type name | ^^^^^^^^^^^^^^ error: name `OrigAndProjOwn` is the same as the original type name - --> $DIR/invalid.rs:205:37 + --> tests/ui/pin_project/invalid.rs:205:37 | 205 | #[pin_project(project_replace = OrigAndProjOwn)] //~ ERROR name `OrigAndProjOwn` is the same as the original type name | ^^^^^^^^^^^^^^ error: name `A` is already specified by `project` argument - --> $DIR/invalid.rs:208:46 + --> tests/ui/pin_project/invalid.rs:208:46 | 208 | #[pin_project(project = A, project_ref = A)] //~ ERROR name `A` is already specified by `project` argument | ^ error: name `A` is already specified by `project` argument - --> $DIR/invalid.rs:211:50 + --> tests/ui/pin_project/invalid.rs:211:50 | 211 | #[pin_project(project = A, project_replace = A)] //~ ERROR name `A` is already specified by `project` argument | ^ error: name `A` is already specified by `project_ref` argument - --> $DIR/invalid.rs:214:54 + --> tests/ui/pin_project/invalid.rs:214:54 | 214 | #[pin_project(project_ref = A, project_replace = A)] //~ ERROR name `A` is already specified by `project_ref` argument | ^ error: duplicate #[pin_project] attribute - --> $DIR/invalid.rs:222:5 + --> tests/ui/pin_project/invalid.rs:222:5 | 222 | #[pin_project] //~ ERROR duplicate #[pin_project] attribute | ^^^^^^^^^^^^^^ error: #[pin_project] attribute may not be used on structs with zero fields - --> $DIR/invalid.rs:230:19 + --> tests/ui/pin_project/invalid.rs:230:19 | 230 | struct Struct {} //~ ERROR may not be used on structs with zero fields | ^^ error: #[pin_project] attribute may not be used on structs with zero fields - --> $DIR/invalid.rs:233:23 + --> tests/ui/pin_project/invalid.rs:233:23 | 233 | struct TupleStruct(); //~ ERROR may not be used on structs with zero fields | ^^ error: #[pin_project] attribute may not be used on structs with zero fields - --> $DIR/invalid.rs:236:12 + --> tests/ui/pin_project/invalid.rs:236:12 | 236 | struct UnitStruct; //~ ERROR may not be used on structs with zero fields | ^^^^^^^^^^ error: #[pin_project] attribute may not be used on enums without variants - --> $DIR/invalid.rs:239:20 + --> tests/ui/pin_project/invalid.rs:239:20 | 239 | enum EnumEmpty {} //~ ERROR may not be used on enums without variants | ^^ error: #[pin_project] attribute may not be used on enums with discriminants - --> $DIR/invalid.rs:243:13 + --> tests/ui/pin_project/invalid.rs:243:13 | 243 | V = 2, //~ ERROR may not be used on enums with discriminants | ^ error: #[pin_project] attribute may not be used on enums with zero fields - --> $DIR/invalid.rs:248:9 + --> tests/ui/pin_project/invalid.rs:248:9 | 248 | / Unit, //~ ERROR may not be used on enums with zero fields 249 | | Tuple(), @@ -331,7 +331,7 @@ error: #[pin_project] attribute may not be used on enums with zero fields | |__________________^ error: #[pin_project] attribute may only be used on structs or enums - --> $DIR/invalid.rs:254:5 + --> tests/ui/pin_project/invalid.rs:254:5 | 254 | / union Union { 255 | | //~^ ERROR may only be used on structs or enums @@ -340,25 +340,25 @@ error: #[pin_project] attribute may only be used on structs or enums | |_____^ error: #[pin_project] attribute may only be used on structs or enums - --> $DIR/invalid.rs:260:5 + --> tests/ui/pin_project/invalid.rs:260:5 | 260 | impl Impl {} //~ ERROR may only be used on structs or enums | ^^^^^^^^^^^^ error: #[pin_project] attribute may not be used on #[repr(packed)] types - --> $DIR/invalid.rs:268:12 + --> tests/ui/pin_project/invalid.rs:268:12 | 268 | #[repr(packed)] | ^^^^^^ error: #[pin_project] attribute may not be used on #[repr(packed)] types - --> $DIR/invalid.rs:272:12 + --> tests/ui/pin_project/invalid.rs:272:12 | 272 | #[repr(packed)] | ^^^^^^ error: #[pin_project] attribute may not be used on #[repr(packed)] types - --> $DIR/invalid.rs:276:12 + --> tests/ui/pin_project/invalid.rs:276:12 | 276 | #[repr(packed)] | ^^^^^^ diff --git a/tests/ui/pin_project/overlapping_unpin_struct.stderr b/tests/ui/pin_project/overlapping_unpin_struct.stderr index bb33944..1bd200d 100644 --- a/tests/ui/pin_project/overlapping_unpin_struct.stderr +++ b/tests/ui/pin_project/overlapping_unpin_struct.stderr @@ -1,23 +1,25 @@ error[E0277]: `PhantomPinned` cannot be unpinned - --> $DIR/overlapping_unpin_struct.rs:18:5 + --> tests/ui/pin_project/overlapping_unpin_struct.rs:18:5 | -15 | fn is_unpin() {} - | ----- required by this bound in `is_unpin` -... 18 | is_unpin::>(); //~ ERROR E0277 | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^ within `_::__S<'_, PhantomPinned>`, the trait `Unpin` is not implemented for `PhantomPinned` | = note: consider using `Box::pin` note: required because it appears within the type `_::__S<'_, PhantomPinned>` - --> $DIR/overlapping_unpin_struct.rs:6:8 + --> tests/ui/pin_project/overlapping_unpin_struct.rs:6:8 | 6 | struct S { | ^ note: required because of the requirements on the impl of `Unpin` for `S` - --> $DIR/overlapping_unpin_struct.rs:5:1 + --> tests/ui/pin_project/overlapping_unpin_struct.rs:5:1 | 5 | #[pin_project] | ^^^^^^^^^^^^^^ 6 | struct S { | ^^^^ +note: required by a bound in `is_unpin` + --> tests/ui/pin_project/overlapping_unpin_struct.rs:15:16 + | +15 | fn is_unpin() {} + | ^^^^^ required by this bound in `is_unpin` = note: this error originates in the derive macro `::pin_project::__private::__PinProjectInternalDerive` (in Nightly builds, run with -Z macro-backtrace for more info) diff --git a/tests/ui/pin_project/override-priv-mod.rs b/tests/ui/pin_project/override-priv-mod.rs new file mode 100644 index 0000000..890fd5b --- /dev/null +++ b/tests/ui/pin_project/override-priv-mod.rs @@ -0,0 +1,32 @@ +// https://discord.com/channels/273534239310479360/512792629516173323/870075511009857617 + +extern crate pin_project as pin_project_orig; +extern crate self as pin_project; + +pub use ::pin_project_orig::*; +mod __private { + pub use ::pin_project_orig::__private::*; + pub trait Drop {} +} + +use std::{marker::PhantomPinned, mem}; + +#[pin_project] //~ ERROR conflicting implementations of trait `_::FooMustNotImplDrop` +struct S { + #[pin] + f: (u8, PhantomPinned), +} + +impl Drop for S { + fn drop(&mut self) { + let prev = &self.f.0 as *const _ as usize; + let moved = mem::take(&mut self.f); // move pinned field + let moved = &moved.0 as *const _ as usize; + assert_eq!(prev, moved); // panic + } +} + +fn main() { + let mut x = Box::pin(S { f: (1, PhantomPinned) }); + let _f = x.as_mut().project().f; // first mutable access +} diff --git a/tests/ui/pin_project/override-priv-mod.stderr b/tests/ui/pin_project/override-priv-mod.stderr new file mode 100644 index 0000000..8a3fb9b --- /dev/null +++ b/tests/ui/pin_project/override-priv-mod.stderr @@ -0,0 +1,10 @@ +error[E0119]: conflicting implementations of trait `_::SMustNotImplDrop` for type `S` + --> tests/ui/pin_project/override-priv-mod.rs:14:1 + | +14 | #[pin_project] //~ ERROR conflicting implementations of trait `_::FooMustNotImplDrop` + | ^^^^^^^^^^^^^^ + | | + | first implementation here + | conflicting implementation for `S` + | + = note: this error originates in the derive macro `::pin_project::__private::__PinProjectInternalDerive` (in Nightly builds, run with -Z macro-backtrace for more info) diff --git a/tests/ui/pin_project/packed-enum.stderr b/tests/ui/pin_project/packed-enum.stderr index 0951944..1872211 100644 --- a/tests/ui/pin_project/packed-enum.stderr +++ b/tests/ui/pin_project/packed-enum.stderr @@ -1,17 +1,17 @@ error: #[repr(packed)] attribute should be applied to a struct or union - --> $DIR/packed-enum.rs:13:8 + --> tests/ui/pin_project/packed-enum.rs:13:8 | 13 | #[repr(packed)] //~ ERROR E0517 | ^^^^^^ error: #[repr(packed)] attribute should be applied to a struct or union - --> $DIR/packed-enum.rs:18:8 + --> tests/ui/pin_project/packed-enum.rs:18:8 | 18 | #[repr(packed)] //~ ERROR E0517 | ^^^^^^ error[E0517]: attribute should be applied to a struct or union - --> $DIR/packed-enum.rs:7:8 + --> tests/ui/pin_project/packed-enum.rs:7:8 | 7 | #[repr(packed)] //~ ERROR E0517 | ^^^^^^ @@ -21,7 +21,7 @@ error[E0517]: attribute should be applied to a struct or union | |_- not a struct or union error[E0517]: attribute should be applied to a struct or union - --> $DIR/packed-enum.rs:13:8 + --> tests/ui/pin_project/packed-enum.rs:13:8 | 13 | #[repr(packed)] //~ ERROR E0517 | ^^^^^^ @@ -31,7 +31,7 @@ error[E0517]: attribute should be applied to a struct or union | |_- not a struct or union error[E0517]: attribute should be applied to a struct or union - --> $DIR/packed-enum.rs:18:8 + --> tests/ui/pin_project/packed-enum.rs:18:8 | 18 | #[repr(packed)] //~ ERROR E0517 | ^^^^^^ diff --git a/tests/ui/pin_project/packed-name-value.stderr b/tests/ui/pin_project/packed-name-value.stderr index 18137d4..d8b2194 100644 --- a/tests/ui/pin_project/packed-name-value.stderr +++ b/tests/ui/pin_project/packed-name-value.stderr @@ -1,23 +1,23 @@ error: #[repr(packed)] attribute should not be name-value pair - --> $DIR/packed-name-value.rs:16:8 + --> tests/ui/pin_project/packed-name-value.rs:16:8 | 16 | #[repr(packed = "")] //~ ERROR attribute should not be name-value pair | ^^^^^^^^^^^ error: #[repr(packed)] attribute should not be name-value pair - --> $DIR/packed-name-value.rs:21:8 + --> tests/ui/pin_project/packed-name-value.rs:21:8 | 21 | #[repr(packed = "")] //~ ERROR attribute should not be name-value pair | ^^^^^^^^^^^ error[E0693]: incorrect `repr(packed)` attribute format - --> $DIR/packed-name-value.rs:16:8 + --> tests/ui/pin_project/packed-name-value.rs:16:8 | 16 | #[repr(packed = "")] //~ ERROR attribute should not be name-value pair | ^^^^^^^^^^^ help: use parentheses instead: `packed()` error[E0693]: incorrect `repr(packed)` attribute format - --> $DIR/packed-name-value.rs:21:8 + --> tests/ui/pin_project/packed-name-value.rs:21:8 | 21 | #[repr(packed = "")] //~ ERROR attribute should not be name-value pair | ^^^^^^^^^^^ help: use parentheses instead: `packed()` diff --git a/tests/ui/pin_project/packed.stderr b/tests/ui/pin_project/packed.stderr index e5b9e55..25ea5f4 100644 --- a/tests/ui/pin_project/packed.stderr +++ b/tests/ui/pin_project/packed.stderr @@ -1,23 +1,23 @@ error: #[pin_project] attribute may not be used on #[repr(packed)] types - --> $DIR/packed.rs:4:8 + --> tests/ui/pin_project/packed.rs:4:8 | 4 | #[repr(packed, C)] //~ ERROR may not be used on #[repr(packed)] types | ^^^^^^ error: #[pin_project] attribute may not be used on #[repr(packed)] types - --> $DIR/packed.rs:11:8 + --> tests/ui/pin_project/packed.rs:11:8 | 11 | #[repr(packed, C)] //~ ERROR may not be used on #[repr(packed)] types | ^^^^^^ error: #[pin_project] attribute may not be used on #[repr(packed)] types - --> $DIR/packed.rs:19:8 + --> tests/ui/pin_project/packed.rs:19:8 | 19 | #[repr(packed(2))] //~ ERROR may not be used on #[repr(packed)] types | ^^^^^^^^^ error: #[pin_project] attribute may not be used on #[repr(packed)] types - --> $DIR/packed.rs:26:8 + --> tests/ui/pin_project/packed.rs:26:8 | 26 | #[repr(packed(2))] //~ ERROR may not be used on #[repr(packed)] types | ^^^^^^^^^ diff --git a/tests/ui/pin_project/packed_sneaky-1.stderr b/tests/ui/pin_project/packed_sneaky-1.stderr index 67bcd1b..32fe407 100644 --- a/tests/ui/pin_project/packed_sneaky-1.stderr +++ b/tests/ui/pin_project/packed_sneaky-1.stderr @@ -1,17 +1,17 @@ error: #[pin_project] attribute may not be used on #[repr(packed)] types - --> $DIR/packed_sneaky-1.rs:7:15 + --> tests/ui/pin_project/packed_sneaky-1.rs:7:15 | 7 | #[hidden_repr(packed)] | ^^^^^^ error: #[pin_project] attribute may not be used on #[repr(packed)] types - --> $DIR/packed_sneaky-1.rs:14:15 + --> tests/ui/pin_project/packed_sneaky-1.rs:14:15 | 14 | #[hidden_repr(packed)] | ^^^^^^ error: #[pin_project] attribute may not be used on #[repr(packed)] types - --> $DIR/packed_sneaky-1.rs:23:15 + --> tests/ui/pin_project/packed_sneaky-1.rs:23:15 | 23 | #[hidden_repr(packed)] | ^^^^^^ diff --git a/tests/ui/pin_project/packed_sneaky-2.stderr b/tests/ui/pin_project/packed_sneaky-2.stderr index 04d072a..d643052 100644 --- a/tests/ui/pin_project/packed_sneaky-2.stderr +++ b/tests/ui/pin_project/packed_sneaky-2.stderr @@ -1,5 +1,5 @@ error: #[pin_project] attribute may not be used on #[repr(packed)] types - --> $DIR/packed_sneaky-2.rs:4:1 + --> tests/ui/pin_project/packed_sneaky-2.rs:4:1 | 4 | / hidden_repr_macro! { //~ ERROR may not be used on #[repr(packed)] types 5 | | #[pin_project] diff --git a/tests/ui/pin_project/packed_sneaky-3.stderr b/tests/ui/pin_project/packed_sneaky-3.stderr index 1a5a3ec..c97f18b 100644 --- a/tests/ui/pin_project/packed_sneaky-3.stderr +++ b/tests/ui/pin_project/packed_sneaky-3.stderr @@ -1,5 +1,5 @@ error: expected item after attributes - --> $DIR/packed_sneaky-3.rs:4:1 + --> tests/ui/pin_project/packed_sneaky-3.rs:4:1 | 4 | hidden_repr_macro! {} //~ ERROR expected item after attributes | ^^^^^^^^^^^^^^^^^^^^^ @@ -7,7 +7,7 @@ error: expected item after attributes = note: this error originates in the macro `hidden_repr_macro` (in Nightly builds, run with -Z macro-backtrace for more info) error: expected item after attributes - --> $DIR/packed_sneaky-3.rs:13:9 + --> tests/ui/pin_project/packed_sneaky-3.rs:13:9 | 13 | #[repr(packed)] //~ ERROR expected item after attributes | ^^^^^^^^^^^^^^^ @@ -18,7 +18,7 @@ error: expected item after attributes = note: this error originates in the macro `hidden_repr_macro2` (in Nightly builds, run with -Z macro-backtrace for more info) error: expected item after attributes - --> $DIR/packed_sneaky-3.rs:24:10 + --> tests/ui/pin_project/packed_sneaky-3.rs:24:10 | 24 | #[derive(HiddenRepr)] //~ ERROR expected item after attributes | ^^^^^^^^^^ @@ -26,7 +26,7 @@ error: expected item after attributes = note: this error originates in the derive macro `HiddenRepr` (in Nightly builds, run with -Z macro-backtrace for more info) error: proc-macro derive produced unparseable tokens - --> $DIR/packed_sneaky-3.rs:24:10 + --> tests/ui/pin_project/packed_sneaky-3.rs:24:10 | 24 | #[derive(HiddenRepr)] //~ ERROR expected item after attributes | ^^^^^^^^^^ diff --git a/tests/ui/pin_project/private_in_public-enum.stderr b/tests/ui/pin_project/private_in_public-enum.stderr index 6e3316c..c93b265 100644 --- a/tests/ui/pin_project/private_in_public-enum.stderr +++ b/tests/ui/pin_project/private_in_public-enum.stderr @@ -1,5 +1,5 @@ error[E0446]: private type `PrivateEnum` in public interface - --> $DIR/private_in_public-enum.rs:6:7 + --> tests/ui/pin_project/private_in_public-enum.rs:6:7 | 6 | V(PrivateEnum), //~ ERROR E0446 | ^^^^^^^^^^^ can't leak private type @@ -8,7 +8,7 @@ error[E0446]: private type `PrivateEnum` in public interface | ---------------- `PrivateEnum` declared as private error[E0446]: private type `foo::PrivateEnum` in public interface - --> $DIR/private_in_public-enum.rs:15:11 + --> tests/ui/pin_project/private_in_public-enum.rs:15:11 | 15 | V(PrivateEnum), //~ ERROR E0446 | ^^^^^^^^^^^ can't leak private type diff --git a/tests/ui/pin_project/project_replace_unsized.stderr b/tests/ui/pin_project/project_replace_unsized.stderr index d20d858..86cc148 100644 --- a/tests/ui/pin_project/project_replace_unsized.stderr +++ b/tests/ui/pin_project/project_replace_unsized.stderr @@ -1,5 +1,5 @@ error[E0277]: the size for values of type `T` cannot be known at compilation time - --> $DIR/project_replace_unsized.rs:3:15 + --> tests/ui/pin_project/project_replace_unsized.rs:3:15 | 3 | #[pin_project(project_replace)] //~ ERROR E0277 | ^^^^^^^^^^^^^^^ doesn't have a size known at compile-time @@ -7,18 +7,23 @@ error[E0277]: the size for values of type `T` cannot be known at compilation tim | - this type parameter needs to be `std::marker::Sized` | note: required because it appears within the type `Struct` - --> $DIR/project_replace_unsized.rs:4:8 + --> tests/ui/pin_project/project_replace_unsized.rs:4:8 | 4 | struct Struct { | ^^^^^^ = help: unsized fn params are gated as an unstable feature +help: consider removing the `?Sized` bound to make the type parameter `Sized` + | +4 - struct Struct { +4 + struct Struct { + | help: function arguments must have a statically known size, borrowed types always have a known size | 3 | #[pin_project(&project_replace)] //~ ERROR E0277 - | ^ + | + error[E0277]: the size for values of type `T` cannot be known at compilation time - --> $DIR/project_replace_unsized.rs:3:1 + --> tests/ui/pin_project/project_replace_unsized.rs:3:1 | 3 | #[pin_project(project_replace)] //~ ERROR E0277 | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ doesn't have a size known at compile-time @@ -26,27 +31,45 @@ error[E0277]: the size for values of type `T` cannot be known at compilation tim | - this type parameter needs to be `std::marker::Sized` | note: required because it appears within the type `Struct` - --> $DIR/project_replace_unsized.rs:4:8 + --> tests/ui/pin_project/project_replace_unsized.rs:4:8 | 4 | struct Struct { | ^^^^^^ -note: required by `UnsafeOverwriteGuard` - --> $DIR/lib.rs:269:5 +note: required by a bound in `UnsafeOverwriteGuard::::new` + --> src/lib.rs | -269 | pub struct UnsafeOverwriteGuard { - | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + | impl UnsafeOverwriteGuard { + | ^ required by this bound in `UnsafeOverwriteGuard::::new` = note: this error originates in the derive macro `::pin_project::__private::__PinProjectInternalDerive` (in Nightly builds, run with -Z macro-backtrace for more info) +help: consider removing the `?Sized` bound to make the type parameter `Sized` + | +4 - struct Struct { +4 + struct Struct { + | error[E0277]: the size for values of type `T` cannot be known at compilation time - --> $DIR/project_replace_unsized.rs:5:5 + --> tests/ui/pin_project/project_replace_unsized.rs:5:5 | +3 | #[pin_project(project_replace)] //~ ERROR E0277 + | ------------------------------- required by a bound introduced by this call 4 | struct Struct { | - this type parameter needs to be `std::marker::Sized` 5 | f: T, | ^ doesn't have a size known at compile-time + | +note: required by a bound in `std::ptr::read` + --> $RUST/core/src/ptr/mod.rs + | + | pub const unsafe fn read(src: *const T) -> T { + | ^ required by this bound in `std::ptr::read` +help: consider removing the `?Sized` bound to make the type parameter `Sized` + | +4 - struct Struct { +4 + struct Struct { + | error[E0277]: the size for values of type `T` cannot be known at compilation time - --> $DIR/project_replace_unsized.rs:8:15 + --> tests/ui/pin_project/project_replace_unsized.rs:8:15 | 8 | #[pin_project(project_replace)] //~ ERROR E0277 | ^^^^^^^^^^^^^^^ doesn't have a size known at compile-time @@ -54,18 +77,23 @@ error[E0277]: the size for values of type `T` cannot be known at compilation tim | - this type parameter needs to be `std::marker::Sized` | note: required because it appears within the type `TupleStruct` - --> $DIR/project_replace_unsized.rs:9:8 + --> tests/ui/pin_project/project_replace_unsized.rs:9:8 | 9 | struct TupleStruct(T); | ^^^^^^^^^^^ = help: unsized fn params are gated as an unstable feature +help: consider removing the `?Sized` bound to make the type parameter `Sized` + | +9 - struct TupleStruct(T); +9 + struct TupleStruct(T); + | help: function arguments must have a statically known size, borrowed types always have a known size | 8 | #[pin_project(&project_replace)] //~ ERROR E0277 - | ^ + | + error[E0277]: the size for values of type `T` cannot be known at compilation time - --> $DIR/project_replace_unsized.rs:8:1 + --> tests/ui/pin_project/project_replace_unsized.rs:8:1 | 8 | #[pin_project(project_replace)] //~ ERROR E0277 | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ doesn't have a size known at compile-time @@ -73,24 +101,18 @@ error[E0277]: the size for values of type `T` cannot be known at compilation tim | - this type parameter needs to be `std::marker::Sized` | note: required because it appears within the type `TupleStruct` - --> $DIR/project_replace_unsized.rs:9:8 + --> tests/ui/pin_project/project_replace_unsized.rs:9:8 | 9 | struct TupleStruct(T); | ^^^^^^^^^^^ -note: required by `UnsafeOverwriteGuard` - --> $DIR/lib.rs:269:5 +note: required by a bound in `UnsafeOverwriteGuard::::new` + --> src/lib.rs | -269 | pub struct UnsafeOverwriteGuard { - | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + | impl UnsafeOverwriteGuard { + | ^ required by this bound in `UnsafeOverwriteGuard::::new` = note: this error originates in the derive macro `::pin_project::__private::__PinProjectInternalDerive` (in Nightly builds, run with -Z macro-backtrace for more info) - -error[E0277]: the size for values of type `T` cannot be known at compilation time - --> $DIR/project_replace_unsized.rs:9:8 - | -9 | struct TupleStruct(T); - | ^^^^^^^^^^^ - this type parameter needs to be `std::marker::Sized` - | | - | doesn't have a size known at compile-time - | - = note: all function arguments must have a statically known size - = help: unsized fn params are gated as an unstable feature +help: consider removing the `?Sized` bound to make the type parameter `Sized` + | +9 - struct TupleStruct(T); +9 + struct TupleStruct(T); + | diff --git a/tests/ui/pin_project/project_replace_unsized_fn_params.stderr b/tests/ui/pin_project/project_replace_unsized_fn_params.stderr index 8ac4ad7..e398ca4 100644 --- a/tests/ui/pin_project/project_replace_unsized_fn_params.stderr +++ b/tests/ui/pin_project/project_replace_unsized_fn_params.stderr @@ -1,5 +1,5 @@ error[E0277]: the size for values of type `T` cannot be known at compilation time - --> $DIR/project_replace_unsized_fn_params.rs:6:8 + --> tests/ui/pin_project/project_replace_unsized_fn_params.rs:6:8 | 6 | struct Struct { | ^^^^^^^-^^^^^^^^^ @@ -8,14 +8,19 @@ error[E0277]: the size for values of type `T` cannot be known at compilation tim | doesn't have a size known at compile-time | note: required because it appears within the type `__StructProjectionOwned` - --> $DIR/project_replace_unsized_fn_params.rs:6:8 + --> tests/ui/pin_project/project_replace_unsized_fn_params.rs:6:8 | 6 | struct Struct { | ^^^^^^ = note: the return type of a function must have a statically known size +help: consider removing the `?Sized` bound to make the type parameter `Sized` + | +6 - struct Struct { +6 + struct Struct { + | error[E0277]: the size for values of type `T` cannot be known at compilation time - --> $DIR/project_replace_unsized_fn_params.rs:5:1 + --> tests/ui/pin_project/project_replace_unsized_fn_params.rs:5:1 | 5 | #[pin_project(project_replace)] //~ ERROR E0277 | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ doesn't have a size known at compile-time @@ -23,27 +28,45 @@ error[E0277]: the size for values of type `T` cannot be known at compilation tim | - this type parameter needs to be `std::marker::Sized` | note: required because it appears within the type `Struct` - --> $DIR/project_replace_unsized_fn_params.rs:6:8 + --> tests/ui/pin_project/project_replace_unsized_fn_params.rs:6:8 | 6 | struct Struct { | ^^^^^^ -note: required by `UnsafeOverwriteGuard` - --> $DIR/lib.rs:269:5 +note: required by a bound in `UnsafeOverwriteGuard::::new` + --> src/lib.rs | -269 | pub struct UnsafeOverwriteGuard { - | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + | impl UnsafeOverwriteGuard { + | ^ required by this bound in `UnsafeOverwriteGuard::::new` = note: this error originates in the derive macro `::pin_project::__private::__PinProjectInternalDerive` (in Nightly builds, run with -Z macro-backtrace for more info) +help: consider removing the `?Sized` bound to make the type parameter `Sized` + | +6 - struct Struct { +6 + struct Struct { + | error[E0277]: the size for values of type `T` cannot be known at compilation time - --> $DIR/project_replace_unsized_fn_params.rs:7:5 + --> tests/ui/pin_project/project_replace_unsized_fn_params.rs:7:5 | +5 | #[pin_project(project_replace)] //~ ERROR E0277 + | ------------------------------- required by a bound introduced by this call 6 | struct Struct { | - this type parameter needs to be `std::marker::Sized` 7 | f: T, | ^ doesn't have a size known at compile-time + | +note: required by a bound in `std::ptr::read` + --> $RUST/core/src/ptr/mod.rs + | + | pub const unsafe fn read(src: *const T) -> T { + | ^ required by this bound in `std::ptr::read` +help: consider removing the `?Sized` bound to make the type parameter `Sized` + | +6 - struct Struct { +6 + struct Struct { + | error[E0277]: the size for values of type `T` cannot be known at compilation time - --> $DIR/project_replace_unsized_fn_params.rs:11:8 + --> tests/ui/pin_project/project_replace_unsized_fn_params.rs:11:8 | 11 | struct TupleStruct(T); | ^^^^^^^^^^^^-^^^^^^^^^ @@ -52,14 +75,19 @@ error[E0277]: the size for values of type `T` cannot be known at compilation tim | doesn't have a size known at compile-time | note: required because it appears within the type `__TupleStructProjectionOwned` - --> $DIR/project_replace_unsized_fn_params.rs:11:8 + --> tests/ui/pin_project/project_replace_unsized_fn_params.rs:11:8 | 11 | struct TupleStruct(T); | ^^^^^^^^^^^ = note: the return type of a function must have a statically known size +help: consider removing the `?Sized` bound to make the type parameter `Sized` + | +11 - struct TupleStruct(T); +11 + struct TupleStruct(T); + | error[E0277]: the size for values of type `T` cannot be known at compilation time - --> $DIR/project_replace_unsized_fn_params.rs:10:1 + --> tests/ui/pin_project/project_replace_unsized_fn_params.rs:10:1 | 10 | #[pin_project(project_replace)] //~ ERROR E0277 | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ doesn't have a size known at compile-time @@ -67,13 +95,18 @@ error[E0277]: the size for values of type `T` cannot be known at compilation tim | - this type parameter needs to be `std::marker::Sized` | note: required because it appears within the type `TupleStruct` - --> $DIR/project_replace_unsized_fn_params.rs:11:8 + --> tests/ui/pin_project/project_replace_unsized_fn_params.rs:11:8 | 11 | struct TupleStruct(T); | ^^^^^^^^^^^ -note: required by `UnsafeOverwriteGuard` - --> $DIR/lib.rs:269:5 +note: required by a bound in `UnsafeOverwriteGuard::::new` + --> src/lib.rs | -269 | pub struct UnsafeOverwriteGuard { - | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + | impl UnsafeOverwriteGuard { + | ^ required by this bound in `UnsafeOverwriteGuard::::new` = note: this error originates in the derive macro `::pin_project::__private::__PinProjectInternalDerive` (in Nightly builds, run with -Z macro-backtrace for more info) +help: consider removing the `?Sized` bound to make the type parameter `Sized` + | +11 - struct TupleStruct(T); +11 + struct TupleStruct(T); + | diff --git a/tests/ui/pin_project/remove-attr-from-field.stderr b/tests/ui/pin_project/remove-attr-from-field.stderr index 486bc00..697cd63 100644 --- a/tests/ui/pin_project/remove-attr-from-field.stderr +++ b/tests/ui/pin_project/remove-attr-from-field.stderr @@ -1,5 +1,5 @@ error[E0308]: mismatched types - --> $DIR/remove-attr-from-field.rs:28:38 + --> tests/ui/pin_project/remove-attr-from-field.rs:28:38 | 28 | let _: Pin<&mut PhantomPinned> = x.f; //~ ERROR E0308 | ----------------------- ^^^ expected struct `Pin`, found `&mut PhantomPinned` @@ -10,7 +10,7 @@ error[E0308]: mismatched types found mutable reference `&mut PhantomPinned` error[E0308]: mismatched types - --> $DIR/remove-attr-from-field.rs:32:38 + --> tests/ui/pin_project/remove-attr-from-field.rs:32:38 | 32 | let _: Pin<&mut PhantomPinned> = x.f; //~ ERROR E0308 | ----------------------- ^^^ expected struct `Pin`, found `&mut PhantomPinned` diff --git a/tests/ui/pin_project/remove-attr-from-struct.stderr b/tests/ui/pin_project/remove-attr-from-struct.stderr index 57cf21d..1a9cd42 100644 --- a/tests/ui/pin_project/remove-attr-from-struct.stderr +++ b/tests/ui/pin_project/remove-attr-from-struct.stderr @@ -1,5 +1,5 @@ error: #[pin_project] attribute has been removed - --> $DIR/remove-attr-from-struct.rs:22:1 + --> tests/ui/pin_project/remove-attr-from-struct.rs:22:1 | 22 | #[pin_project] //~ ERROR has been removed | ^^^^^^^^^^^^^^ @@ -7,85 +7,101 @@ error: #[pin_project] attribute has been removed = note: this error originates in the derive macro `::pin_project::__private::__PinProjectInternalDerive` (in Nightly builds, run with -Z macro-backtrace for more info) error: cannot find attribute `pin` in this scope - --> $DIR/remove-attr-from-struct.rs:18:7 + --> tests/ui/pin_project/remove-attr-from-struct.rs:18:7 | 18 | #[pin] //~ ERROR cannot find attribute `pin` in this scope | ^^^ error: cannot find attribute `pin` in this scope - --> $DIR/remove-attr-from-struct.rs:11:7 + --> tests/ui/pin_project/remove-attr-from-struct.rs:11:7 | 11 | #[pin] //~ ERROR cannot find attribute `pin` in this scope | ^^^ error[E0277]: `PhantomPinned` cannot be unpinned - --> $DIR/remove-attr-from-struct.rs:35:5 + --> tests/ui/pin_project/remove-attr-from-struct.rs:35:5 | -6 | fn is_unpin() {} - | ----- required by this bound in `is_unpin` -... 35 | is_unpin::(); //~ ERROR E0277 | ^^^^^^^^^^^^^ within `A`, the trait `Unpin` is not implemented for `PhantomPinned` | = note: consider using `Box::pin` note: required because it appears within the type `A` - --> $DIR/remove-attr-from-struct.rs:10:8 + --> tests/ui/pin_project/remove-attr-from-struct.rs:10:8 | 10 | struct A { | ^ +note: required by a bound in `is_unpin` + --> tests/ui/pin_project/remove-attr-from-struct.rs:6:16 + | +6 | fn is_unpin() {} + | ^^^^^ required by this bound in `is_unpin` error[E0277]: `PhantomPinned` cannot be unpinned - --> $DIR/remove-attr-from-struct.rs:36:5 + --> tests/ui/pin_project/remove-attr-from-struct.rs:36:5 | -6 | fn is_unpin() {} - | ----- required by this bound in `is_unpin` -... 36 | is_unpin::(); //~ ERROR E0277 | ^^^^^^^^^^^^^ within `B`, the trait `Unpin` is not implemented for `PhantomPinned` | = note: consider using `Box::pin` note: required because it appears within the type `B` - --> $DIR/remove-attr-from-struct.rs:17:8 + --> tests/ui/pin_project/remove-attr-from-struct.rs:17:8 | 17 | struct B { | ^ +note: required by a bound in `is_unpin` + --> tests/ui/pin_project/remove-attr-from-struct.rs:6:16 + | +6 | fn is_unpin() {} + | ^^^^^ required by this bound in `is_unpin` error[E0277]: `PhantomPinned` cannot be unpinned - --> $DIR/remove-attr-from-struct.rs:40:13 + --> tests/ui/pin_project/remove-attr-from-struct.rs:40:22 | 40 | let _ = Pin::new(&mut x).project(); //~ ERROR E0277,E0599 - | ^^^^^^^^ within `A`, the trait `Unpin` is not implemented for `PhantomPinned` + | -------- ^^^^^^ within `A`, the trait `Unpin` is not implemented for `PhantomPinned` + | | + | required by a bound introduced by this call | = note: consider using `Box::pin` note: required because it appears within the type `A` - --> $DIR/remove-attr-from-struct.rs:10:8 + --> tests/ui/pin_project/remove-attr-from-struct.rs:10:8 | 10 | struct A { | ^ -note: required by `Pin::

::new` +note: required by a bound in `Pin::

::new` + --> $RUST/core/src/pin.rs + | + | impl> Pin

{ + | ^^^^^ required by this bound in `Pin::

::new` error[E0599]: no method named `project` found for struct `Pin<&mut A>` in the current scope - --> $DIR/remove-attr-from-struct.rs:40:30 + --> tests/ui/pin_project/remove-attr-from-struct.rs:40:30 | 40 | let _ = Pin::new(&mut x).project(); //~ ERROR E0277,E0599 | ^^^^^^^ method not found in `Pin<&mut A>` error[E0277]: `PhantomPinned` cannot be unpinned - --> $DIR/remove-attr-from-struct.rs:43:13 + --> tests/ui/pin_project/remove-attr-from-struct.rs:43:22 | 43 | let _ = Pin::new(&mut x).project(); //~ ERROR E0277,E0599 - | ^^^^^^^^ within `B`, the trait `Unpin` is not implemented for `PhantomPinned` + | -------- ^^^^^^ within `B`, the trait `Unpin` is not implemented for `PhantomPinned` + | | + | required by a bound introduced by this call | = note: consider using `Box::pin` note: required because it appears within the type `B` - --> $DIR/remove-attr-from-struct.rs:17:8 + --> tests/ui/pin_project/remove-attr-from-struct.rs:17:8 | 17 | struct B { | ^ -note: required by `Pin::

::new` +note: required by a bound in `Pin::

::new` + --> $RUST/core/src/pin.rs + | + | impl> Pin

{ + | ^^^^^ required by this bound in `Pin::

::new` error[E0599]: no method named `project` found for struct `Pin<&mut B>` in the current scope - --> $DIR/remove-attr-from-struct.rs:43:30 + --> tests/ui/pin_project/remove-attr-from-struct.rs:43:30 | 43 | let _ = Pin::new(&mut x).project(); //~ ERROR E0277,E0599 | ^^^^^^^ method not found in `Pin<&mut B>` diff --git a/tests/ui/pin_project/safe_packed_borrows.rs b/tests/ui/pin_project/safe_packed_borrows.rs index 8f4f462..de8181c 100644 --- a/tests/ui/pin_project/safe_packed_borrows.rs +++ b/tests/ui/pin_project/safe_packed_borrows.rs @@ -19,10 +19,8 @@ struct PackedN { fn main() { let a = Packed { f: 1 }; - &a.f; let _ = &a.f; let b = PackedN { f: 1 }; - &b.f; let _ = &b.f; } diff --git a/tests/ui/pin_project/safe_packed_borrows.stderr b/tests/ui/pin_project/safe_packed_borrows.stderr index 4048eaa..f483b6d 100644 --- a/tests/ui/pin_project/safe_packed_borrows.stderr +++ b/tests/ui/pin_project/safe_packed_borrows.stderr @@ -1,11 +1,11 @@ error: lint `safe_packed_borrows` has been renamed to `unaligned_references` - --> $DIR/safe_packed_borrows.rs:2:9 + --> tests/ui/pin_project/safe_packed_borrows.rs:2:9 | 2 | #![deny(safe_packed_borrows)] //~ ERROR has been renamed to `unaligned_references` | ^^^^^^^^^^^^^^^^^^^ help: use the new name: `unaligned_references` | note: the lint level is defined here - --> $DIR/safe_packed_borrows.rs:1:9 + --> tests/ui/pin_project/safe_packed_borrows.rs:1:9 | 1 | #![deny(renamed_and_removed_lints)] | ^^^^^^^^^^^^^^^^^^^^^^^^^ diff --git a/tests/ui/pin_project/unaligned_references.rs b/tests/ui/pin_project/unaligned_references.rs index 23dd71d..eaf185d 100644 --- a/tests/ui/pin_project/unaligned_references.rs +++ b/tests/ui/pin_project/unaligned_references.rs @@ -14,10 +14,8 @@ struct PackedN { fn main() { let a = Packed { f: 1 }; - &a.f; //~ ERROR reference to packed field is unaligned let _ = &a.f; //~ ERROR reference to packed field is unaligned let b = PackedN { f: 1 }; - &b.f; //~ ERROR reference to packed field is unaligned let _ = &b.f; //~ ERROR reference to packed field is unaligned } diff --git a/tests/ui/pin_project/unaligned_references.stderr b/tests/ui/pin_project/unaligned_references.stderr index 17600de..8d5ddfc 100644 --- a/tests/ui/pin_project/unaligned_references.stderr +++ b/tests/ui/pin_project/unaligned_references.stderr @@ -1,44 +1,26 @@ error: reference to packed field is unaligned - --> $DIR/unaligned_references.rs:17:5 + --> tests/ui/pin_project/unaligned_references.rs:17:13 | -17 | &a.f; //~ ERROR reference to packed field is unaligned - | ^^^^ +17 | let _ = &a.f; //~ ERROR reference to packed field is unaligned + | ^^^^ | note: the lint level is defined here - --> $DIR/unaligned_references.rs:1:11 + --> tests/ui/pin_project/unaligned_references.rs:1:11 | 1 | #![forbid(unaligned_references)] | ^^^^^^^^^^^^^^^^^^^^ = warning: this was previously accepted by the compiler but is being phased out; it will become a hard error in a future release! = note: for more information, see issue #82523 = note: fields of packed structs are not properly aligned, and creating a misaligned reference is undefined behavior (even if that reference is never dereferenced) + = help: copy the field contents to a local variable, or replace the reference with a raw pointer and use `read_unaligned`/`write_unaligned` (loads and stores via `*p` must be properly aligned even when using raw pointers) error: reference to packed field is unaligned - --> $DIR/unaligned_references.rs:18:13 - | -18 | let _ = &a.f; //~ ERROR reference to packed field is unaligned - | ^^^^ - | - = warning: this was previously accepted by the compiler but is being phased out; it will become a hard error in a future release! - = note: for more information, see issue #82523 - = note: fields of packed structs are not properly aligned, and creating a misaligned reference is undefined behavior (even if that reference is never dereferenced) - -error: reference to packed field is unaligned - --> $DIR/unaligned_references.rs:21:5 - | -21 | &b.f; //~ ERROR reference to packed field is unaligned - | ^^^^ - | - = warning: this was previously accepted by the compiler but is being phased out; it will become a hard error in a future release! - = note: for more information, see issue #82523 - = note: fields of packed structs are not properly aligned, and creating a misaligned reference is undefined behavior (even if that reference is never dereferenced) - -error: reference to packed field is unaligned - --> $DIR/unaligned_references.rs:22:13 + --> tests/ui/pin_project/unaligned_references.rs:20:13 | -22 | let _ = &b.f; //~ ERROR reference to packed field is unaligned +20 | let _ = &b.f; //~ ERROR reference to packed field is unaligned | ^^^^ | = warning: this was previously accepted by the compiler but is being phased out; it will become a hard error in a future release! = note: for more information, see issue #82523 = note: fields of packed structs are not properly aligned, and creating a misaligned reference is undefined behavior (even if that reference is never dereferenced) + = help: copy the field contents to a local variable, or replace the reference with a raw pointer and use `read_unaligned`/`write_unaligned` (loads and stores via `*p` must be properly aligned even when using raw pointers) diff --git a/tests/ui/pin_project/unpin_sneaky.stderr b/tests/ui/pin_project/unpin_sneaky.stderr index ab5e794..ddf700d 100644 --- a/tests/ui/pin_project/unpin_sneaky.stderr +++ b/tests/ui/pin_project/unpin_sneaky.stderr @@ -1,11 +1,11 @@ error[E0412]: cannot find type `__S` in this scope - --> $DIR/unpin_sneaky.rs:9:16 + --> tests/ui/pin_project/unpin_sneaky.rs:9:16 | 9 | impl Unpin for __S {} //~ ERROR E0412,E0321 | ^^^ not found in this scope error[E0321]: cross-crate traits with a default impl, like `Unpin`, can only be implemented for a struct/enum type, not `[type error]` - --> $DIR/unpin_sneaky.rs:9:1 + --> tests/ui/pin_project/unpin_sneaky.rs:9:1 | 9 | impl Unpin for __S {} //~ ERROR E0412,E0321 | ^^^^^^^^^^^^^^^^^^ can't implement cross-crate trait with a default impl for non-struct/enum type diff --git a/tests/ui/pin_project/visibility.stderr b/tests/ui/pin_project/visibility.stderr index a1f0423..4d1b722 100644 --- a/tests/ui/pin_project/visibility.stderr +++ b/tests/ui/pin_project/visibility.stderr @@ -1,39 +1,39 @@ -error[E0365]: `DProj` is private, and cannot be re-exported - --> $DIR/visibility.rs:15:13 +error[E0365]: `DProj` is only public within the crate, and cannot be re-exported outside + --> tests/ui/pin_project/visibility.rs:15:13 | 15 | pub use crate::pub_::DProj; //~ ERROR E0365 - | ^^^^^^^^^^^^^^^^^^ re-export of private `DProj` + | ^^^^^^^^^^^^^^^^^^ re-export of crate public `DProj` | = note: consider declaring type or module `DProj` with `pub` -error[E0365]: `DProjRef` is private, and cannot be re-exported - --> $DIR/visibility.rs:17:13 +error[E0365]: `DProjRef` is only public within the crate, and cannot be re-exported outside + --> tests/ui/pin_project/visibility.rs:17:13 | 17 | pub use crate::pub_::DProjRef; //~ ERROR E0365 - | ^^^^^^^^^^^^^^^^^^^^^ re-export of private `DProjRef` + | ^^^^^^^^^^^^^^^^^^^^^ re-export of crate public `DProjRef` | = note: consider declaring type or module `DProjRef` with `pub` -error[E0365]: `RProj` is private, and cannot be re-exported - --> $DIR/visibility.rs:19:13 +error[E0365]: `RProj` is only public within the crate, and cannot be re-exported outside + --> tests/ui/pin_project/visibility.rs:19:13 | 19 | pub use crate::pub_::RProj; //~ ERROR E0365 - | ^^^^^^^^^^^^^^^^^^ re-export of private `RProj` + | ^^^^^^^^^^^^^^^^^^ re-export of crate public `RProj` | = note: consider declaring type or module `RProj` with `pub` -error[E0365]: `RProjOwn` is private, and cannot be re-exported - --> $DIR/visibility.rs:21:13 +error[E0365]: `RProjOwn` is only public within the crate, and cannot be re-exported outside + --> tests/ui/pin_project/visibility.rs:21:13 | 21 | pub use crate::pub_::RProjOwn; //~ ERROR E0365 - | ^^^^^^^^^^^^^^^^^^^^^ re-export of private `RProjOwn` + | ^^^^^^^^^^^^^^^^^^^^^ re-export of crate public `RProjOwn` | = note: consider declaring type or module `RProjOwn` with `pub` -error[E0365]: `RProjRef` is private, and cannot be re-exported - --> $DIR/visibility.rs:23:13 +error[E0365]: `RProjRef` is only public within the crate, and cannot be re-exported outside + --> tests/ui/pin_project/visibility.rs:23:13 | 23 | pub use crate::pub_::RProjRef; //~ ERROR E0365 - | ^^^^^^^^^^^^^^^^^^^^^ re-export of private `RProjRef` + | ^^^^^^^^^^^^^^^^^^^^^ re-export of crate public `RProjRef` | = note: consider declaring type or module `RProjRef` with `pub` diff --git a/tests/ui/pinned_drop/call-drop-inner.stderr b/tests/ui/pinned_drop/call-drop-inner.stderr index 8fbe2dc..b11bee5 100644 --- a/tests/ui/pinned_drop/call-drop-inner.stderr +++ b/tests/ui/pinned_drop/call-drop-inner.stderr @@ -1,5 +1,5 @@ error[E0061]: this function takes 0 arguments but 1 argument was supplied - --> $DIR/call-drop-inner.rs:13:9 + --> tests/ui/pinned_drop/call-drop-inner.rs:13:9 | 13 | __drop_inner(__self); | ^^^^^^^^^^^^ ------ supplied 1 argument @@ -7,7 +7,7 @@ error[E0061]: this function takes 0 arguments but 1 argument was supplied | expected 0 arguments | note: function defined here - --> $DIR/call-drop-inner.rs:10:1 + --> tests/ui/pinned_drop/call-drop-inner.rs:10:1 | 10 | #[pinned_drop] | ^^^^^^^^^^^^^^ diff --git a/tests/ui/pinned_drop/conditional-drop-impl.stderr b/tests/ui/pinned_drop/conditional-drop-impl.stderr index a512578..0c55bc2 100644 --- a/tests/ui/pinned_drop/conditional-drop-impl.stderr +++ b/tests/ui/pinned_drop/conditional-drop-impl.stderr @@ -1,11 +1,11 @@ error[E0367]: `Drop` impl requires `T: Unpin` but the struct it is implemented for does not - --> $DIR/conditional-drop-impl.rs:11:9 + --> tests/ui/pinned_drop/conditional-drop-impl.rs:11:9 | 11 | impl Drop for DropImpl { | ^^^^^ | note: the implementor must specify the same requirement - --> $DIR/conditional-drop-impl.rs:7:1 + --> tests/ui/pinned_drop/conditional-drop-impl.rs:7:1 | 7 | / struct DropImpl { 8 | | f: T, @@ -13,23 +13,18 @@ note: the implementor must specify the same requirement | |_^ error[E0277]: `T` cannot be unpinned - --> $DIR/conditional-drop-impl.rs:16:15 - | -16 | #[pin_project(PinnedDrop)] //~ ERROR E0277 - | ^^^^^^^^^^ the trait `Unpin` is not implemented for `T` - | - = note: consider using `Box::pin` + --> tests/ui/pinned_drop/conditional-drop-impl.rs:16:15 + | +16 | #[pin_project(PinnedDrop)] //~ ERROR E0277 + | ^^^^^^^^^^ the trait `Unpin` is not implemented for `T` + | + = note: consider using `Box::pin` note: required because of the requirements on the impl of `PinnedDrop` for `PinnedDropImpl` - --> $DIR/conditional-drop-impl.rs:23:16 - | -23 | impl PinnedDrop for PinnedDropImpl { - | ^^^^^^^^^^ ^^^^^^^^^^^^^^^^^ -note: required by `pin_project::__private::PinnedDrop::drop` - --> $DIR/lib.rs:186:9 - | -186 | unsafe fn drop(self: Pin<&mut Self>); - | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + --> tests/ui/pinned_drop/conditional-drop-impl.rs:23:16 + | +23 | impl PinnedDrop for PinnedDropImpl { + | ^^^^^^^^^^ ^^^^^^^^^^^^^^^^^ help: consider restricting type parameter `T` - | -17 | struct PinnedDropImpl { - | ^^^^^^^^^^^^^^^^^^^^ + | +17 | struct PinnedDropImpl { + | ++++++++++++++++++++ diff --git a/tests/ui/pinned_drop/forget-pinned-drop-impl.stderr b/tests/ui/pinned_drop/forget-pinned-drop-impl.stderr index d218545..ef8a7bf 100644 --- a/tests/ui/pinned_drop/forget-pinned-drop-impl.stderr +++ b/tests/ui/pinned_drop/forget-pinned-drop-impl.stderr @@ -1,11 +1,5 @@ error[E0277]: the trait bound `Struct: PinnedDrop` is not satisfied - --> $DIR/forget-pinned-drop-impl.rs:3:15 - | -3 | #[pin_project(PinnedDrop)] //~ ERROR E0277 - | ^^^^^^^^^^ the trait `PinnedDrop` is not implemented for `Struct` - | -note: required by `pin_project::__private::PinnedDrop::drop` - --> $DIR/lib.rs:186:9 - | -186 | unsafe fn drop(self: Pin<&mut Self>); - | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + --> tests/ui/pinned_drop/forget-pinned-drop-impl.rs:3:15 + | +3 | #[pin_project(PinnedDrop)] //~ ERROR E0277 + | ^^^^^^^^^^ the trait `PinnedDrop` is not implemented for `Struct` diff --git a/tests/ui/pinned_drop/invalid-self.stderr b/tests/ui/pinned_drop/invalid-self.stderr index 3248704..464be5e 100644 --- a/tests/ui/pinned_drop/invalid-self.stderr +++ b/tests/ui/pinned_drop/invalid-self.stderr @@ -1,23 +1,23 @@ error: expected identifier, found keyword `self` - --> $DIR/invalid-self.rs:8:26 + --> tests/ui/pinned_drop/invalid-self.rs:8:26 | 8 | fn take_ref_self(ref self: Pin<&mut Self>) {} //~ ERROR expected identifier, found keyword `self` | ^^^^ expected identifier, found keyword error: expected identifier, found keyword `self` - --> $DIR/invalid-self.rs:9:34 + --> tests/ui/pinned_drop/invalid-self.rs:9:34 | 9 | fn take_ref_mut_self(ref mut self: Pin<&mut Self>) {} //~ ERROR expected identifier, found keyword `self` | ^^^^ expected identifier, found keyword error: expected parameter name, found `@` - --> $DIR/invalid-self.rs:11:25 + --> tests/ui/pinned_drop/invalid-self.rs:11:25 | 11 | fn self_subpat(self @ S {}: Self) {} //~ ERROR expected one of `)`, `,`, or `:`, found `@` | ^ expected parameter name error: expected one of `)`, `,`, or `:`, found `@` - --> $DIR/invalid-self.rs:11:25 + --> tests/ui/pinned_drop/invalid-self.rs:11:25 | 11 | fn self_subpat(self @ S {}: Self) {} //~ ERROR expected one of `)`, `,`, or `:`, found `@` | -^ expected one of `)`, `,`, or `:` diff --git a/tests/ui/pinned_drop/invalid.stderr b/tests/ui/pinned_drop/invalid.stderr index 499b0d9..d509964 100644 --- a/tests/ui/pinned_drop/invalid.stderr +++ b/tests/ui/pinned_drop/invalid.stderr @@ -1,143 +1,143 @@ -error: unexpected token: foo - --> $DIR/invalid.rs:9:19 +error: unexpected token: `foo` + --> tests/ui/pinned_drop/invalid.rs:9:19 | 9 | #[pinned_drop(foo)] //~ ERROR unexpected token | ^^^ error: duplicate #[pinned_drop] attribute - --> $DIR/invalid.rs:30:5 + --> tests/ui/pinned_drop/invalid.rs:30:5 | 30 | #[pinned_drop] //~ ERROR duplicate #[pinned_drop] attribute | ^^^^^^^^^^^^^^ error: #[pinned_drop] may only be used on implementation for the `PinnedDrop` trait - --> $DIR/invalid.rs:43:10 + --> tests/ui/pinned_drop/invalid.rs:43:10 | 43 | impl Drop for TraitImpl {} //~ ERROR may only be used on implementation for the `PinnedDrop` trait | ^^^^ error: #[pinned_drop] may only be used on implementation for the `PinnedDrop` trait - --> $DIR/invalid.rs:49:10 + --> tests/ui/pinned_drop/invalid.rs:49:10 | 49 | impl InherentImpl {} //~ ERROR may only be used on implementation for the `PinnedDrop` trait | ^^^^^^^^^^^^ error: expected `impl` - --> $DIR/invalid.rs:52:5 + --> tests/ui/pinned_drop/invalid.rs:52:5 | 52 | fn func(_: Pin<&mut ()>) {} //~ ERROR expected `impl` | ^^ error: implementing the trait `PinnedDrop` is not unsafe - --> $DIR/invalid.rs:62:5 + --> tests/ui/pinned_drop/invalid.rs:62:5 | 62 | unsafe impl PinnedDrop for Impl { | ^^^^^^ error: implementing the method `drop` is not unsafe - --> $DIR/invalid.rs:72:9 + --> tests/ui/pinned_drop/invalid.rs:72:9 | 72 | unsafe fn drop(self: Pin<&mut Self>) {} //~ ERROR implementing the method `drop` is not unsafe | ^^^^^^ error: not all trait items implemented, missing: `drop` - --> $DIR/invalid.rs:83:5 + --> tests/ui/pinned_drop/invalid.rs:83:5 | 83 | impl PinnedDrop for Empty {} //~ ERROR not all trait items implemented, missing: `drop` | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^ error: const `A` is not a member of trait `PinnedDrop` - --> $DIR/invalid.rs:90:9 + --> tests/ui/pinned_drop/invalid.rs:90:9 | 90 | const A: u8 = 0; //~ ERROR const `A` is not a member of trait `PinnedDrop` | ^^^^^^^^^^^^^^^^ error: const `A` is not a member of trait `PinnedDrop` - --> $DIR/invalid.rs:100:9 + --> tests/ui/pinned_drop/invalid.rs:100:9 | 100 | const A: u8 = 0; //~ ERROR const `A` is not a member of trait `PinnedDrop` | ^^^^^^^^^^^^^^^^ error: type `A` is not a member of trait `PinnedDrop` - --> $DIR/invalid.rs:108:9 + --> tests/ui/pinned_drop/invalid.rs:108:9 | 108 | type A = u8; //~ ERROR type `A` is not a member of trait `PinnedDrop` | ^^^^^^^^^^^^ error: type `A` is not a member of trait `PinnedDrop` - --> $DIR/invalid.rs:118:9 + --> tests/ui/pinned_drop/invalid.rs:118:9 | 118 | type A = u8; //~ ERROR type `A` is not a member of trait `PinnedDrop` | ^^^^^^^^^^^^ error: duplicate definitions with name `drop` - --> $DIR/invalid.rs:127:9 + --> tests/ui/pinned_drop/invalid.rs:127:9 | 127 | fn drop(self: Pin<&mut Self>) {} //~ ERROR duplicate definitions with name `drop` | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ error: method `drop` must return the unit type - --> $DIR/invalid.rs:149:42 + --> tests/ui/pinned_drop/invalid.rs:149:42 | 149 | fn drop(self: Pin<&mut Self>) -> Self {} //~ ERROR method `drop` must return the unit type | ^^^^ error: method `drop` must take an argument `self: Pin<&mut Self>` - --> $DIR/invalid.rs:157:16 + --> tests/ui/pinned_drop/invalid.rs:157:16 | 157 | fn drop() {} //~ ERROR method `drop` must take an argument `self: Pin<&mut Self>` | ^^ error: method `drop` must take an argument `self: Pin<&mut Self>` - --> $DIR/invalid.rs:165:17 + --> tests/ui/pinned_drop/invalid.rs:165:17 | 165 | fn drop(self: Pin<&mut Self>, _: ()) {} //~ ERROR method `drop` must take an argument `self: Pin<&mut Self>` | ^^^^^^^^^^^^^^^^^^^^^^^^^^^ error: method `drop` must take an argument `self: Pin<&mut Self>` - --> $DIR/invalid.rs:173:17 + --> tests/ui/pinned_drop/invalid.rs:173:17 | 173 | fn drop(&mut self) {} //~ ERROR method `drop` must take an argument `self: Pin<&mut Self>` | ^^^^^^^^^ error: method `drop` must take an argument `self: Pin<&mut Self>` - --> $DIR/invalid.rs:181:17 + --> tests/ui/pinned_drop/invalid.rs:181:17 | 181 | fn drop(_: Pin<&mut Self>) {} //~ ERROR method `drop` must take an argument `self: Pin<&mut Self>` | ^^^^^^^^^^^^^^^^^ error: method `drop` must take an argument `self: Pin<&mut Self>` - --> $DIR/invalid.rs:189:17 + --> tests/ui/pinned_drop/invalid.rs:189:17 | 189 | fn drop(self: Pin<&Self>) {} //~ ERROR method `drop` must take an argument `self: Pin<&mut Self>` | ^^^^^^^^^^^^^^^^ error: method `drop` must take an argument `self: Pin<&mut Self>` - --> $DIR/invalid.rs:197:17 + --> tests/ui/pinned_drop/invalid.rs:197:17 | 197 | fn drop(self: Pin<&mut ()>) {} //~ ERROR method `drop` must take an argument `self: Pin<&mut Self>` | ^^^^^^^^^^^^^^^^^^ error: method `pinned_drop` is not a member of trait `PinnedDrop - --> $DIR/invalid.rs:205:12 + --> tests/ui/pinned_drop/invalid.rs:205:12 | 205 | fn pinned_drop(self: Pin<&mut Self>) {} //~ ERROR method `pinned_drop` is not a member of trait `PinnedDrop | ^^^^^^^^^^^ error: implementing the trait `PinnedDrop` on this type is unsupported - --> $DIR/invalid.rs:213:25 + --> tests/ui/pinned_drop/invalid.rs:213:25 | 213 | impl PinnedDrop for () { | ^^ error: implementing the trait `PinnedDrop` on this type is unsupported - --> $DIR/invalid.rs:219:25 + --> tests/ui/pinned_drop/invalid.rs:219:25 | 219 | impl PinnedDrop for &mut A { | ^^^^^^ error: implementing the trait `PinnedDrop` on this type is unsupported - --> $DIR/invalid.rs:225:25 + --> tests/ui/pinned_drop/invalid.rs:225:25 | 225 | impl PinnedDrop for [A] { | ^^^ diff --git a/tests/ui/pinned_drop/pinned-drop-no-attr-arg.stderr b/tests/ui/pinned_drop/pinned-drop-no-attr-arg.stderr index 9f32149..2542254 100644 --- a/tests/ui/pinned_drop/pinned-drop-no-attr-arg.stderr +++ b/tests/ui/pinned_drop/pinned-drop-no-attr-arg.stderr @@ -1,5 +1,5 @@ -error[E0119]: conflicting implementations of trait `pin_project::__private::PinnedDrop` for type `S` - --> $DIR/pinned-drop-no-attr-arg.rs:12:1 +error[E0119]: conflicting implementations of trait `_::_pin_project::__private::PinnedDrop` for type `S` + --> tests/ui/pinned_drop/pinned-drop-no-attr-arg.rs:12:1 | 5 | #[pin_project] | -------------- first implementation here diff --git a/tests/ui/pinned_drop/self.stderr b/tests/ui/pinned_drop/self.stderr index 7de286f..0f96dc9 100644 --- a/tests/ui/pinned_drop/self.stderr +++ b/tests/ui/pinned_drop/self.stderr @@ -1,29 +1,29 @@ error: `self` parameter is only allowed in associated functions - --> $DIR/self.rs:18:26 + --> tests/ui/pinned_drop/self.rs:18:26 | 18 | fn f(self: ()) {} //~ ERROR `self` parameter is only allowed in associated functions | ^^^^ not semantically valid as function parameter ... 21 | t!(); - | ----- in this macro invocation + | ---- in this macro invocation | = note: associated functions are those in `impl` or `trait` definitions = note: this error originates in the macro `t` (in Nightly builds, run with -Z macro-backtrace for more info) error[E0434]: can't capture dynamic environment in a fn item - --> $DIR/self.rs:16:29 + --> tests/ui/pinned_drop/self.rs:16:29 | 16 | let _ = self; //~ ERROR E0434 | ^^^^ ... 21 | t!(); - | ----- in this macro invocation + | ---- in this macro invocation | = help: use the `|| { ... }` closure form instead = note: this error originates in the macro `t` (in Nightly builds, run with -Z macro-backtrace for more info) error[E0423]: expected value, found struct `S` - --> $DIR/self.rs:40:27 + --> tests/ui/pinned_drop/self.rs:40:27 | 32 | / pub struct S { 33 | | f: (), @@ -34,7 +34,7 @@ error[E0423]: expected value, found struct `S` | ^^^^ help: use struct literal syntax instead: `S { f: val }` error[E0308]: mismatched types - --> $DIR/self.rs:39:25 + --> tests/ui/pinned_drop/self.rs:39:25 | 39 | let _: () = self; //~ ERROR E0308 | -- ^^^^ expected `()`, found struct `Pin` @@ -45,7 +45,7 @@ error[E0308]: mismatched types found struct `Pin<&mut self_span::S>` error[E0308]: mismatched types - --> $DIR/self.rs:52:25 + --> tests/ui/pinned_drop/self.rs:52:25 | 52 | let _: () = self; //~ ERROR E0308 | -- ^^^^ expected `()`, found struct `Pin` @@ -56,7 +56,7 @@ error[E0308]: mismatched types found struct `Pin<&mut E>` error[E0533]: expected unit struct, unit variant or constant, found struct variant `Self::V` - --> $DIR/self.rs:53:27 + --> tests/ui/pinned_drop/self.rs:53:27 | 53 | let _: Self = Self::V; //~ ERROR E0533 | ^^^^^^^ diff --git a/tests/ui/pinned_drop/unsafe-call.stderr b/tests/ui/pinned_drop/unsafe-call.stderr index 6216200..9f7dd44 100644 --- a/tests/ui/pinned_drop/unsafe-call.stderr +++ b/tests/ui/pinned_drop/unsafe-call.stderr @@ -1,5 +1,5 @@ error[E0133]: call to unsafe function is unsafe and requires unsafe function or block - --> $DIR/unsafe-call.rs:14:9 + --> tests/ui/pinned_drop/unsafe-call.rs:14:9 | 14 | self.project().f.get_unchecked_mut(); //~ ERROR call to unsafe function is unsafe and requires unsafe function or block [E0133] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ call to unsafe function diff --git a/tests/ui/unsafe_unpin/conflict-unpin.stderr b/tests/ui/unsafe_unpin/conflict-unpin.stderr index 078ac71..20d4e08 100644 --- a/tests/ui/unsafe_unpin/conflict-unpin.stderr +++ b/tests/ui/unsafe_unpin/conflict-unpin.stderr @@ -1,5 +1,5 @@ error[E0119]: conflicting implementations of trait `std::marker::Unpin` for type `Foo<_, _>` - --> $DIR/conflict-unpin.rs:3:15 + --> tests/ui/unsafe_unpin/conflict-unpin.rs:3:15 | 3 | #[pin_project(UnsafeUnpin)] //~ ERROR E0119 | ^^^^^^^^^^^ conflicting implementation for `Foo<_, _>` @@ -7,10 +7,10 @@ error[E0119]: conflicting implementations of trait `std::marker::Unpin` for type 10 | impl Unpin for Foo where T: Unpin {} | --------------------------------------------- first implementation here | - = note: upstream crates may add a new impl of trait `pin_project::UnsafeUnpin` for type `pin_project::__private::Wrapper<'_, Foo<_, _>>` in future versions + = note: upstream crates may add a new impl of trait `_::_pin_project::UnsafeUnpin` for type `_::_pin_project::__private::Wrapper<'_, Foo<_, _>>` in future versions error[E0119]: conflicting implementations of trait `std::marker::Unpin` for type `Bar<_, _>` - --> $DIR/conflict-unpin.rs:12:15 + --> tests/ui/unsafe_unpin/conflict-unpin.rs:12:15 | 12 | #[pin_project(UnsafeUnpin)] //~ ERROR E0119 | ^^^^^^^^^^^ conflicting implementation for `Bar<_, _>` @@ -18,10 +18,10 @@ error[E0119]: conflicting implementations of trait `std::marker::Unpin` for type 19 | impl Unpin for Bar {} | ------------------------------ first implementation here | - = note: upstream crates may add a new impl of trait `pin_project::UnsafeUnpin` for type `pin_project::__private::Wrapper<'_, Bar<_, _>>` in future versions + = note: upstream crates may add a new impl of trait `_::_pin_project::UnsafeUnpin` for type `_::_pin_project::__private::Wrapper<'_, Bar<_, _>>` in future versions error[E0119]: conflicting implementations of trait `std::marker::Unpin` for type `Baz<_, _>` - --> $DIR/conflict-unpin.rs:21:15 + --> tests/ui/unsafe_unpin/conflict-unpin.rs:21:15 | 21 | #[pin_project(UnsafeUnpin)] //~ ERROR E0119 | ^^^^^^^^^^^ conflicting implementation for `Baz<_, _>` @@ -29,4 +29,4 @@ error[E0119]: conflicting implementations of trait `std::marker::Unpin` for type 28 | impl Unpin for Baz {} | -------------------------------------------- first implementation here | - = note: upstream crates may add a new impl of trait `pin_project::UnsafeUnpin` for type `pin_project::__private::Wrapper<'_, Baz<_, _>>` in future versions + = note: upstream crates may add a new impl of trait `_::_pin_project::UnsafeUnpin` for type `_::_pin_project::__private::Wrapper<'_, Baz<_, _>>` in future versions diff --git a/tests/ui/unstable-features/marker_trait_attr-feature-gate.stderr b/tests/ui/unstable-features/marker_trait_attr-feature-gate.stderr index 01e5080..3412f2e 100644 --- a/tests/ui/unstable-features/marker_trait_attr-feature-gate.stderr +++ b/tests/ui/unstable-features/marker_trait_attr-feature-gate.stderr @@ -1,5 +1,5 @@ error[E0119]: conflicting implementations of trait `std::marker::Unpin` for type `Struct<_>` - --> $DIR/marker_trait_attr-feature-gate.rs:7:1 + --> tests/ui/unstable-features/marker_trait_attr-feature-gate.rs:7:1 | 7 | #[pin_project] //~ ERROR E0119 | ^^^^^^^^^^^^^^ conflicting implementation for `Struct<_>` diff --git a/tests/ui/unstable-features/marker_trait_attr.stderr b/tests/ui/unstable-features/marker_trait_attr.stderr index fbc2d9d..2b68c80 100644 --- a/tests/ui/unstable-features/marker_trait_attr.stderr +++ b/tests/ui/unstable-features/marker_trait_attr.stderr @@ -1,5 +1,5 @@ error[E0119]: conflicting implementations of trait `std::marker::Unpin` for type `Struct<_>` - --> $DIR/marker_trait_attr.rs:13:1 + --> tests/ui/unstable-features/marker_trait_attr.rs:13:1 | 13 | #[pin_project] //~ ERROR E0119 | ^^^^^^^^^^^^^^ conflicting implementation for `Struct<_>` diff --git a/tests/ui/unstable-features/overlapping_marker_traits-feature-gate.stderr b/tests/ui/unstable-features/overlapping_marker_traits-feature-gate.stderr index 5eba425..918d804 100644 --- a/tests/ui/unstable-features/overlapping_marker_traits-feature-gate.stderr +++ b/tests/ui/unstable-features/overlapping_marker_traits-feature-gate.stderr @@ -1,5 +1,5 @@ error[E0119]: conflicting implementations of trait `std::marker::Unpin` for type `Struct<_>` - --> $DIR/overlapping_marker_traits-feature-gate.rs:7:1 + --> tests/ui/unstable-features/overlapping_marker_traits-feature-gate.rs:7:1 | 7 | #[pin_project] //~ ERROR E0119 | ^^^^^^^^^^^^^^ conflicting implementation for `Struct<_>` diff --git a/tests/ui/unstable-features/overlapping_marker_traits.stderr b/tests/ui/unstable-features/overlapping_marker_traits.stderr index 706d6c9..3e8411d 100644 --- a/tests/ui/unstable-features/overlapping_marker_traits.stderr +++ b/tests/ui/unstable-features/overlapping_marker_traits.stderr @@ -1,5 +1,5 @@ error[E0557]: feature has been removed - --> $DIR/overlapping_marker_traits.rs:11:12 + --> tests/ui/unstable-features/overlapping_marker_traits.rs:11:12 | 11 | #![feature(overlapping_marker_traits)] | ^^^^^^^^^^^^^^^^^^^^^^^^^ feature has been removed @@ -7,7 +7,7 @@ error[E0557]: feature has been removed = note: removed in favor of `#![feature(marker_trait_attr)]` error[E0119]: conflicting implementations of trait `std::marker::Unpin` for type `Struct<_>` - --> $DIR/overlapping_marker_traits.rs:17:1 + --> tests/ui/unstable-features/overlapping_marker_traits.rs:17:1 | 17 | #[pin_project] | ^^^^^^^^^^^^^^ conflicting implementation for `Struct<_>` diff --git a/tests/ui/unstable-features/trivial_bounds-bug.rs b/tests/ui/unstable-features/trivial_bounds-bug.rs deleted file mode 100644 index 5e821c4..0000000 --- a/tests/ui/unstable-features/trivial_bounds-bug.rs +++ /dev/null @@ -1,33 +0,0 @@ -// Note: If you change this test, change 'trivial_bounds-feature-gate.rs' at the same time. - -// trivial_bounds -// Tracking issue: https://github.com/rust-lang/rust/issues/48214 -#![feature(trivial_bounds)] - -mod phantom_pinned { - use std::marker::{PhantomData, PhantomPinned}; - - struct A(PhantomPinned); - - // bug of trivial_bounds? - impl Unpin for A where PhantomPinned: Unpin {} //~ ERROR E0277 - - struct Wrapper(T); - - impl Unpin for Wrapper where T: Unpin {} - - struct B(PhantomPinned); - - impl Unpin for B where Wrapper: Unpin {} // Ok - - struct WrapperWithLifetime<'a, T>(PhantomData<&'a ()>, T); - - impl Unpin for WrapperWithLifetime<'_, T> where T: Unpin {} - - struct C(PhantomPinned); - - // Ok - impl<'a> Unpin for C where WrapperWithLifetime<'a, PhantomPinned>: Unpin {} -} - -fn main() {} diff --git a/tests/ui/unstable-features/trivial_bounds-bug.stderr b/tests/ui/unstable-features/trivial_bounds-bug.stderr deleted file mode 100644 index f2407d0..0000000 --- a/tests/ui/unstable-features/trivial_bounds-bug.stderr +++ /dev/null @@ -1,7 +0,0 @@ -error[E0277]: `PhantomPinned` cannot be unpinned - --> $DIR/trivial_bounds-bug.rs:13:43 - | -13 | impl Unpin for A where PhantomPinned: Unpin {} //~ ERROR E0277 - | ^^^^^ the trait `Unpin` is not implemented for `PhantomPinned` - | - = note: consider using `Box::pin` diff --git a/tests/ui/unstable-features/trivial_bounds-feature-gate.stderr b/tests/ui/unstable-features/trivial_bounds-feature-gate.stderr index cf3b075..2e31658 100644 --- a/tests/ui/unstable-features/trivial_bounds-feature-gate.stderr +++ b/tests/ui/unstable-features/trivial_bounds-feature-gate.stderr @@ -1,30 +1,22 @@ error[E0277]: `PhantomPinned` cannot be unpinned - --> $DIR/trivial_bounds-feature-gate.rs:8:5 + --> tests/ui/unstable-features/trivial_bounds-feature-gate.rs:8:28 | 8 | impl Unpin for A where PhantomPinned: Unpin {} //~ ERROR E0277 - | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ the trait `Unpin` is not implemented for `PhantomPinned` + | ^^^^^^^^^^^^^^^^^^^^ the trait `Unpin` is not implemented for `PhantomPinned` | = note: consider using `Box::pin` = help: see issue #48214 = help: add `#![feature(trivial_bounds)]` to the crate attributes to enable error[E0277]: `PhantomPinned` cannot be unpinned - --> $DIR/trivial_bounds-feature-gate.rs:8:43 - | -8 | impl Unpin for A where PhantomPinned: Unpin {} //~ ERROR E0277 - | ^^^^^ the trait `Unpin` is not implemented for `PhantomPinned` - | - = note: consider using `Box::pin` - -error[E0277]: `PhantomPinned` cannot be unpinned - --> $DIR/trivial_bounds-feature-gate.rs:16:5 + --> tests/ui/unstable-features/trivial_bounds-feature-gate.rs:16:28 | 16 | impl Unpin for B where Wrapper: Unpin {} //~ ERROR E0277 - | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ the trait `Unpin` is not implemented for `PhantomPinned` + | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ the trait `Unpin` is not implemented for `PhantomPinned` | = note: consider using `Box::pin` note: required because of the requirements on the impl of `Unpin` for `phantom_pinned::Wrapper` - --> $DIR/trivial_bounds-feature-gate.rs:12:13 + --> tests/ui/unstable-features/trivial_bounds-feature-gate.rs:12:13 | 12 | impl Unpin for Wrapper where T: Unpin {} | ^^^^^ ^^^^^^^^^^ @@ -32,14 +24,14 @@ note: required because of the requirements on the impl of `Unpin` for `phantom_p = help: add `#![feature(trivial_bounds)]` to the crate attributes to enable error[E0277]: `PhantomPinned` cannot be unpinned - --> $DIR/trivial_bounds-feature-gate.rs:34:5 + --> tests/ui/unstable-features/trivial_bounds-feature-gate.rs:34:28 | 34 | impl Unpin for A where Inner: Unpin {} //~ ERROR E0277 - | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ within `Inner`, the trait `Unpin` is not implemented for `PhantomPinned` + | ^^^^^^^^^^^^ within `Inner`, the trait `Unpin` is not implemented for `PhantomPinned` | = note: consider using `Box::pin` note: required because it appears within the type `Inner` - --> $DIR/trivial_bounds-feature-gate.rs:30:12 + --> tests/ui/unstable-features/trivial_bounds-feature-gate.rs:30:12 | 30 | struct Inner(PhantomPinned); | ^^^^^ @@ -47,19 +39,19 @@ note: required because it appears within the type `Inner` = help: add `#![feature(trivial_bounds)]` to the crate attributes to enable error[E0277]: `PhantomPinned` cannot be unpinned - --> $DIR/trivial_bounds-feature-gate.rs:42:5 + --> tests/ui/unstable-features/trivial_bounds-feature-gate.rs:42:28 | 42 | impl Unpin for B where Wrapper: Unpin {} //~ ERROR E0277 - | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ within `Inner`, the trait `Unpin` is not implemented for `PhantomPinned` + | ^^^^^^^^^^^^^^^^^^^^^ within `Inner`, the trait `Unpin` is not implemented for `PhantomPinned` | = note: consider using `Box::pin` note: required because it appears within the type `Inner` - --> $DIR/trivial_bounds-feature-gate.rs:30:12 + --> tests/ui/unstable-features/trivial_bounds-feature-gate.rs:30:12 | 30 | struct Inner(PhantomPinned); | ^^^^^ note: required because of the requirements on the impl of `Unpin` for `inner::Wrapper` - --> $DIR/trivial_bounds-feature-gate.rs:38:13 + --> tests/ui/unstable-features/trivial_bounds-feature-gate.rs:38:13 | 38 | impl Unpin for Wrapper where T: Unpin {} | ^^^^^ ^^^^^^^^^^ diff --git a/tests/ui/unstable-features/trivial_bounds.rs b/tests/ui/unstable-features/trivial_bounds.rs index 2323bab..41f885d 100644 --- a/tests/ui/unstable-features/trivial_bounds.rs +++ b/tests/ui/unstable-features/trivial_bounds.rs @@ -10,25 +10,29 @@ use std::marker::{PhantomData, PhantomPinned}; fn inner() { struct Inner(PhantomPinned); - struct A(Inner); + struct A(PhantomPinned); - impl Unpin for A where Inner: Unpin {} //~ ERROR std::marker::Unpin does not depend on any type or lifetime parameters + impl Unpin for A where PhantomPinned: Unpin {} //~ ERROR Unpin does not depend on any type or lifetime parameters + + struct B(Inner); + + impl Unpin for B where Inner: Unpin {} //~ ERROR Unpin does not depend on any type or lifetime parameters struct Wrapper(T); impl Unpin for Wrapper where T: Unpin {} - struct B(Inner); + struct C(Inner); - impl Unpin for B where Wrapper: Unpin {} //~ ERROR std::marker::Unpin does not depend on any type or lifetime parameters + impl Unpin for C where Wrapper: Unpin {} //~ ERROR Unpin does not depend on any type or lifetime parameters struct WrapperWithLifetime<'a, T>(PhantomData<&'a ()>, T); impl Unpin for WrapperWithLifetime<'_, T> where T: Unpin {} - struct C(Inner); + struct D(Inner); - impl<'a> Unpin for C where WrapperWithLifetime<'a, Inner>: Unpin {} // Ok + impl<'a> Unpin for D where WrapperWithLifetime<'a, Inner>: Unpin {} // Ok } fn main() {} diff --git a/tests/ui/unstable-features/trivial_bounds.stderr b/tests/ui/unstable-features/trivial_bounds.stderr index 6a3bb94..23f45c7 100644 --- a/tests/ui/unstable-features/trivial_bounds.stderr +++ b/tests/ui/unstable-features/trivial_bounds.stderr @@ -1,17 +1,23 @@ -error: Trait bound Inner: Unpin does not depend on any type or lifetime parameters - --> $DIR/trivial_bounds.rs:15:35 +error: trait bound PhantomPinned: Unpin does not depend on any type or lifetime parameters + --> tests/ui/unstable-features/trivial_bounds.rs:15:43 | -15 | impl Unpin for A where Inner: Unpin {} //~ ERROR std::marker::Unpin does not depend on any type or lifetime parameters - | ^^^^^ +15 | impl Unpin for A where PhantomPinned: Unpin {} //~ ERROR Unpin does not depend on any type or lifetime parameters + | ^^^^^ | note: the lint level is defined here - --> $DIR/trivial_bounds.rs:6:9 + --> tests/ui/unstable-features/trivial_bounds.rs:6:9 | 6 | #![deny(trivial_bounds)] | ^^^^^^^^^^^^^^ -error: Trait bound Wrapper: Unpin does not depend on any type or lifetime parameters - --> $DIR/trivial_bounds.rs:23:44 +error: trait bound Inner: Unpin does not depend on any type or lifetime parameters + --> tests/ui/unstable-features/trivial_bounds.rs:19:35 + | +19 | impl Unpin for B where Inner: Unpin {} //~ ERROR Unpin does not depend on any type or lifetime parameters + | ^^^^^ + +error: trait bound Wrapper: Unpin does not depend on any type or lifetime parameters + --> tests/ui/unstable-features/trivial_bounds.rs:27:44 | -23 | impl Unpin for B where Wrapper: Unpin {} //~ ERROR std::marker::Unpin does not depend on any type or lifetime parameters +27 | impl Unpin for C where Wrapper: Unpin {} //~ ERROR Unpin does not depend on any type or lifetime parameters | ^^^^^ -- cgit v1.2.3