about summary refs log tree commit diff
path: root/src/libstd
diff options
context:
space:
mode:
authorNiko Matsakis <niko@alum.mit.edu>2012-09-11 21:25:01 -0700
committerNiko Matsakis <niko@alum.mit.edu>2012-09-11 21:25:01 -0700
commit8a8f200d102294cf1bd90cdacad995abccda7934 (patch)
tree31e99a460697349c403fc5cf4809427303e14804 /src/libstd
parent02b41097e42082a306ca6dbbd79ee9a1d7d35348 (diff)
downloadrust-8a8f200d102294cf1bd90cdacad995abccda7934.tar.gz
rust-8a8f200d102294cf1bd90cdacad995abccda7934.zip
Introduce auto adjustment table to subsume autoderef/autoref/borrowings.
Fixes #3261
Fixes #3443
Diffstat (limited to 'src/libstd')
-rw-r--r--src/libstd/ebml.rs20
-rw-r--r--src/libstd/net_tcp.rs2
-rw-r--r--src/libstd/sync.rs4
3 files changed, 22 insertions, 4 deletions
diff --git a/src/libstd/ebml.rs b/src/libstd/ebml.rs
index 1d70bfaf00a..d6b8c2f4908 100644
--- a/src/libstd/ebml.rs
+++ b/src/libstd/ebml.rs
@@ -314,6 +314,8 @@ enum EbmlSerializerTag {
     EsEnum, EsEnumVid, EsEnumBody,
     EsVec, EsVecLen, EsVecElt,
 
+    EsOpaque,
+
     EsLabel // Used only when debugging
 }
 
@@ -340,6 +342,14 @@ impl ebml::Writer: SerializerPriv {
     }
 }
 
+impl ebml::Writer {
+    fn emit_opaque(f: fn()) {
+        do self.wr_tag(EsOpaque as uint) {
+            f()
+        }
+    }
+}
+
 impl ebml::Writer: serialization::Serializer {
     fn emit_nil() {}
 
@@ -397,7 +407,7 @@ impl ebml::Writer: serialization::Serializer {
 }
 
 type EbmlDeserializer_ = {mut parent: ebml::Doc,
-                           mut pos: uint};
+                          mut pos: uint};
 
 enum EbmlDeserializer {
     EbmlDeserializer_(EbmlDeserializer_)
@@ -462,6 +472,14 @@ priv impl EbmlDeserializer {
     }
 }
 
+impl EbmlDeserializer {
+    fn read_opaque<R>(op: fn(ebml::Doc) -> R) -> R {
+        do self.push_doc(self.next_doc(EsOpaque)) {
+            op(copy self.parent)
+        }
+    }
+}
+
 impl EbmlDeserializer: serialization::Deserializer {
     fn read_nil() -> () { () }
 
diff --git a/src/libstd/net_tcp.rs b/src/libstd/net_tcp.rs
index d4eb5ce6998..7622483a64b 100644
--- a/src/libstd/net_tcp.rs
+++ b/src/libstd/net_tcp.rs
@@ -794,7 +794,7 @@ impl TcpSocketBuf: io::Reader {
         count
     }
     fn read_byte() -> int {
-        let bytes = ~[0];
+        let mut bytes = ~[0];
         if self.read(bytes, 1u) == 0 { fail } else { bytes[0] as int }
     }
     fn unread_byte(amt: int) {
diff --git a/src/libstd/sync.rs b/src/libstd/sync.rs
index 9a176013474..25e6d85d1c0 100644
--- a/src/libstd/sync.rs
+++ b/src/libstd/sync.rs
@@ -775,7 +775,7 @@ mod tests {
         let (c,p) = pipes::stream();
         let m = ~Mutex();
         let m2 = ~m.clone();
-        let sharedstate = ~0;
+        let mut sharedstate = ~0;
         let ptr = ptr::addr_of(*sharedstate);
         do task::spawn {
             let sharedstate: &mut int =
@@ -1047,7 +1047,7 @@ mod tests {
         // mutex mutual exclusion test, a ways above.
         let (c,p) = pipes::stream();
         let x2 = ~x.clone();
-        let sharedstate = ~0;
+        let mut sharedstate = ~0;
         let ptr = ptr::addr_of(*sharedstate);
         do task::spawn {
             let sharedstate: &mut int =