summaryrefslogtreecommitdiff
path: root/samples/test/scoping_rules.rs
diff options
context:
space:
mode:
Diffstat (limited to 'samples/test/scoping_rules.rs')
-rw-r--r--samples/test/scoping_rules.rs21
1 files changed, 21 insertions, 0 deletions
diff --git a/samples/test/scoping_rules.rs b/samples/test/scoping_rules.rs
new file mode 100644
index 00000000..9878fd16
--- /dev/null
+++ b/samples/test/scoping_rules.rs
@@ -0,0 +1,21 @@
+
+struct DropFlag<'a>(&'a ::std::cell::Cell<i32>);
+impl<'a> ::std::ops::Drop for DropFlag<'a>
+{
+ fn drop(&mut self) {
+ self.0.set( self.0.get() + 1 );
+ }
+}
+
+// Any temporaries defined in the expression part of a statement (i.e. in the yeilded part of a
+// block) are stored in the parent scope.
+#[test]
+fn temporaries_in_yielded_expr()
+{
+ let drop_count = ::std::cell::Cell::new(0);
+ let _foo = ({ DropFlag(&drop_count).0 }, assert_eq!(drop_count.get(), 0) );
+ drop(_foo);
+ assert_eq!(drop_count.get(), 1);
+}
+
+