]> git.lizzy.rs Git - rust.git/commitdiff
Use in-core implementation of `type_name`.
authorDylan MacKenzie <ecstaticmorse@gmail.com>
Mon, 3 Jun 2019 04:20:13 +0000 (21:20 -0700)
committerDylan MacKenzie <ecstaticmorse@gmail.com>
Thu, 6 Jun 2019 05:36:53 +0000 (22:36 -0700)
We bump `rust-version` to pick up the new impl from
https://github.com/rust-lang/rust/pull/61498 and add a test.

rust-version
src/intrinsic.rs
tests/run-pass/intrinsics.rs

index 930c6c17ac6c2231596e6f913c3924ca2aa3009f..b2c0aca42bdf589970aa71fe3a69f27a9cd94240 100644 (file)
@@ -1 +1 @@
-021a5033098ff0e3f7126acc7ac35149d325f16d
+7cdaffd7962c4aae0cadd82baa241901b03f9458
index d46d185c5f488ffdb67dd57f1efb247bcb879bf2..8d564456f4edfd6bb5d940b43b659b87512afcbc 100644 (file)
@@ -5,7 +5,7 @@
 
 use crate::{
     PlaceTy, OpTy, ImmTy, Immediate, Scalar, ScalarMaybeUndef, Tag,
-    OperatorEvalContextExt, MiriMemoryKind,
+    OperatorEvalContextExt
 };
 
 impl<'a, 'mir, 'tcx> EvalContextExt<'a, 'mir, 'tcx> for crate::MiriEvalContext<'a, 'mir, 'tcx> {}
@@ -398,14 +398,6 @@ fn call_intrinsic(
                 )?;
             }
 
-            "type_name" => {
-                let ty = substs.type_at(0);
-                let ty_name = ty.to_string();
-                let ptr = this.memory_mut().allocate_static_bytes(ty_name.as_bytes(), MiriMemoryKind::Static.into());
-                let value = Immediate::new_slice(Scalar::Ptr(ptr), ty_name.len() as u64, this);
-                this.write_immediate(value, dest)?;
-            }
-
             "unchecked_div" => {
                 let l = this.read_immediate(args[0])?;
                 let r = this.read_immediate(args[1])?;
index 3152737a601ca01648e553d93d6a2c8fecc7feae..963265749d13697d5ecc9249430a85f80d9d1efd 100644 (file)
@@ -1,3 +1,6 @@
+#![feature(core_intrinsics)]
+
+use std::intrinsics::type_name;
 use std::mem::{size_of, size_of_val};
 
 fn main() {
@@ -7,4 +10,6 @@ fn main() {
     assert_eq!(size_of_val(&[] as &[i32]), 0);
     assert_eq!(size_of_val(&[1, 2, 3] as &[i32]), 12);
     assert_eq!(size_of_val("foobar"), 6);
+
+    assert_eq!(unsafe { type_name::<Option<i32>>() }, "core::option::Option<i32>");
 }