summaryrefslogtreecommitdiffstats
path: root/src/test/ui/pin-macro/lifetime_errors_on_promotion_misusage.rs
diff options
context:
space:
mode:
Diffstat (limited to 'src/test/ui/pin-macro/lifetime_errors_on_promotion_misusage.rs')
-rw-r--r--src/test/ui/pin-macro/lifetime_errors_on_promotion_misusage.rs29
1 files changed, 29 insertions, 0 deletions
diff --git a/src/test/ui/pin-macro/lifetime_errors_on_promotion_misusage.rs b/src/test/ui/pin-macro/lifetime_errors_on_promotion_misusage.rs
new file mode 100644
index 000000000..ca2b6cf75
--- /dev/null
+++ b/src/test/ui/pin-macro/lifetime_errors_on_promotion_misusage.rs
@@ -0,0 +1,29 @@
+// edition:2018
+#![feature(pin_macro)]
+
+use core::{
+ convert::identity,
+ marker::PhantomPinned,
+ mem::drop as stuff,
+ pin::pin,
+};
+
+fn function_call_stops_borrow_extension() {
+ let phantom_pinned = identity(pin!(PhantomPinned));
+ //~^ ERROR temporary value dropped while borrowed
+ stuff(phantom_pinned)
+}
+
+fn promotion_only_works_for_the_innermost_block() {
+ let phantom_pinned = {
+ let phantom_pinned = pin!(PhantomPinned);
+ //~^ ERROR temporary value dropped while borrowed
+ phantom_pinned
+ };
+ stuff(phantom_pinned)
+}
+
+fn main() {
+ function_call_stops_borrow_extension();
+ promotion_only_works_for_the_innermost_block();
+}