diff options
| author | Niko Matsakis <niko@alum.mit.edu> | 2012-09-11 21:25:01 -0700 |
|---|---|---|
| committer | Niko Matsakis <niko@alum.mit.edu> | 2012-09-11 21:25:01 -0700 |
| commit | 8a8f200d102294cf1bd90cdacad995abccda7934 (patch) | |
| tree | 31e99a460697349c403fc5cf4809427303e14804 /src/libstd | |
| parent | 02b41097e42082a306ca6dbbd79ee9a1d7d35348 (diff) | |
| download | rust-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.rs | 20 | ||||
| -rw-r--r-- | src/libstd/net_tcp.rs | 2 | ||||
| -rw-r--r-- | src/libstd/sync.rs | 4 |
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 = |
