diff --git a/gccjit_sys/src/lib.rs b/gccjit_sys/src/lib.rs index 2511155..3399b04 100644 --- a/gccjit_sys/src/lib.rs +++ b/gccjit_sys/src/lib.rs @@ -699,4 +699,7 @@ extern "C" { #[cfg(feature="master")] pub fn gcc_jit_lvalue_add_attribute(variable: *mut gcc_jit_lvalue, attribute: gcc_jit_variable_attribute); + + #[cfg(feature="master")] + pub fn gcc_jit_lvalue_get_name(lvalue: *mut gcc_jit_lvalue) -> *const c_char; } diff --git a/src/lvalue.rs b/src/lvalue.rs index 851b210..20810b1 100644 --- a/src/lvalue.rs +++ b/src/lvalue.rs @@ -1,6 +1,7 @@ use std::{ffi::CString, marker::PhantomData}; use std::fmt; use std::ptr; + use context::Context; use rvalue::{RValue, ToRValue}; use rvalue; @@ -238,6 +239,18 @@ impl<'ctx> LValue<'ctx> { }, } } + + #[cfg(feature = "master")] + pub fn get_name(&self) -> Option<&'ctx str> { + unsafe { + let str = gccjit_sys::gcc_jit_lvalue_get_name(self.ptr); + if str.is_null() { + None + } else { + Some(std::ffi::CStr::from_ptr(str).to_str().expect("invalid lvalue name")) + } + } + } } pub unsafe fn from_ptr<'ctx>(ptr: *mut gccjit_sys::gcc_jit_lvalue) -> LValue<'ctx> { diff --git a/src/types.rs b/src/types.rs index 4119ad2..8dcd9f8 100644 --- a/src/types.rs +++ b/src/types.rs @@ -212,7 +212,7 @@ impl<'ctx> Type<'ctx> { pub fn get_size(&self) -> u32 { unsafe { let size = gccjit_sys::gcc_jit_type_get_size(self.ptr); - assert_ne!(size, -1, "called get_size of unsupported type: {:?}", self); + assert_ne!(size, -1, "called get_size of unsupported type: {self:?}"); size as u32 } }