diff options
| author | Ariel Ben-Yehuda <ariel.byd@gmail.com> | 2014-10-25 20:33:54 +0300 |
|---|---|---|
| committer | Ariel Ben-Yehuda <ariel.byd@gmail.com> | 2014-11-03 22:07:43 +0200 |
| commit | fbb90c3458e1db30fc62c96195c9e71ba2111aa4 (patch) | |
| tree | 7e1faee56bce0a40c502b987cd1759be6b008777 /src/libsyntax | |
| parent | 2790505c19b158a5494139dba084b6af82810b96 (diff) | |
| download | rust-fbb90c3458e1db30fc62c96195c9e71ba2111aa4.tar.gz rust-fbb90c3458e1db30fc62c96195c9e71ba2111aa4.zip | |
Clean-up transmutes in libsyntax
Diffstat (limited to 'src/libsyntax')
| -rw-r--r-- | src/libsyntax/ast.rs | 2 | ||||
| -rw-r--r-- | src/libsyntax/parse/token.rs | 4 | ||||
| -rw-r--r-- | src/libsyntax/print/pprust.rs | 13 |
3 files changed, 8 insertions, 11 deletions
diff --git a/src/libsyntax/ast.rs b/src/libsyntax/ast.rs index a2c859cf9fd..1edcb35289a 100644 --- a/src/libsyntax/ast.rs +++ b/src/libsyntax/ast.rs @@ -119,7 +119,7 @@ impl Name { pub fn as_str<'a>(&'a self) -> &'a str { unsafe { // FIXME #12938: can't use copy_lifetime since &str isn't a &T - ::std::mem::transmute(token::get_name(*self).get()) + ::std::mem::transmute::<&str,&str>(token::get_name(*self).get()) } } diff --git a/src/libsyntax/parse/token.rs b/src/libsyntax/parse/token.rs index d56aa8da72a..615cd34ca14 100644 --- a/src/libsyntax/parse/token.rs +++ b/src/libsyntax/parse/token.rs @@ -668,12 +668,12 @@ impl InternedString { impl BytesContainer for InternedString { fn container_as_bytes<'a>(&'a self) -> &'a [u8] { - // FIXME(pcwalton): This is a workaround for the incorrect signature + // FIXME #12938: This is a workaround for the incorrect signature // of `BytesContainer`, which is itself a workaround for the lack of // DST. unsafe { let this = self.get(); - mem::transmute(this.container_as_bytes()) + mem::transmute::<&[u8],&[u8]>(this.container_as_bytes()) } } } diff --git a/src/libsyntax/print/pprust.rs b/src/libsyntax/print/pprust.rs index 386fd8ae5a6..4cfc95d4c3f 100644 --- a/src/libsyntax/print/pprust.rs +++ b/src/libsyntax/print/pprust.rs @@ -169,17 +169,14 @@ pub fn to_string(f: |&mut State| -> IoResult<()>) -> String { let mut s = rust_printer(box MemWriter::new()); f(&mut s).unwrap(); eof(&mut s.s).unwrap(); - unsafe { + let wr = unsafe { // FIXME(pcwalton): A nasty function to extract the string from an `io::Writer` // that we "know" to be a `MemWriter` that works around the lack of checked // downcasts. - let obj: TraitObject = mem::transmute_copy(&s.s.out); - let wr: Box<MemWriter> = mem::transmute(obj.data); - let result = - String::from_utf8(wr.get_ref().as_slice().to_vec()).unwrap(); - mem::forget(wr); - result.to_string() - } + let obj: &TraitObject = mem::transmute(&s.s.out); + mem::transmute::<*mut (), &MemWriter>(obj.data) + }; + String::from_utf8(wr.get_ref().to_vec()).unwrap() } pub fn binop_to_string(op: BinOpToken) -> &'static str { |
