From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: by sourceware.org (Postfix, from userid 7905) id 08A9F3858431; Tue, 16 Jan 2024 17:59:59 +0000 (GMT) DKIM-Filter: OpenDKIM Filter v2.11.0 sourceware.org 08A9F3858431 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gcc.gnu.org; s=default; t=1705427999; bh=RpGbtXUdOON7B4Dqoq4VHqlDwot/dYHEOoOZCi/VGKc=; h=From:To:Subject:Date:From; b=Ce88NOrv895v45pdVBaj6mZPw2cIeNadPP4NvI8o+YBYXZVG7L8dMu7HgHiYDHDol zedSVr+L1oLjrX4zl/DsTHY/Pv3PX3o3ozM+OdMNMlhIw0w9GVq5cSOD59xVMzlzVh nBr3s2ajEnFbjDFKhhI40Ep5MLLIDWjebkbNnAQs= MIME-Version: 1.0 Content-Transfer-Encoding: 7bit Content-Type: text/plain; charset="utf-8" From: Arthur Cohen To: gcc-cvs@gcc.gnu.org Subject: [gcc r14-7804] gccrs: libproc_macro: Change rust Ident definition X-Act-Checkin: gcc X-Git-Author: Pierre-Emmanuel Patry X-Git-Refname: refs/heads/trunk X-Git-Oldrev: f7af0b90ef489eb90bcab2dd47a171dc550fb303 X-Git-Newrev: 43208b6cbabe9189a48de64e4a42087af14cd671 Message-Id: <20240116175959.08A9F3858431@sourceware.org> Date: Tue, 16 Jan 2024 17:59:59 +0000 (GMT) List-Id: https://gcc.gnu.org/g:43208b6cbabe9189a48de64e4a42087af14cd671 commit r14-7804-g43208b6cbabe9189a48de64e4a42087af14cd671 Author: Pierre-Emmanuel Patry Date: Wed Jul 19 13:18:14 2023 +0200 gccrs: libproc_macro: Change rust Ident definition Change rust interface Ident definition to match C++ struct definition. This structure now uses an FFIString instead of raw pointers. libgrust/ChangeLog: * libproc_macro/rust/bridge/ident.rs: Change raw pointer string with an FFIString. Signed-off-by: Pierre-Emmanuel Patry Diff: --- libgrust/libproc_macro/rust/bridge/ident.rs | 25 +++++++------------------ 1 file changed, 7 insertions(+), 18 deletions(-) diff --git a/libgrust/libproc_macro/rust/bridge/ident.rs b/libgrust/libproc_macro/rust/bridge/ident.rs index 4218921724a..d58896dbd3e 100644 --- a/libgrust/libproc_macro/rust/bridge/ident.rs +++ b/libgrust/libproc_macro/rust/bridge/ident.rs @@ -1,11 +1,10 @@ +use bridge::ffistring::FFIString; use bridge::span::Span; -use std::convert::TryInto; -use std::ffi::c_uchar; use std::fmt; extern "C" { - fn Ident__new(string: *const c_uchar, len: u64, span: Span) -> Ident; - fn Ident__new_raw(string: *const c_uchar, len: u64, span: Span) -> Ident; + fn Ident__new(str: FFIString, span: Span) -> Ident; + fn Ident__new_raw(str: FFIString, span: Span) -> Ident; fn Ident__drop(ident: *mut Ident); fn Ident__clone(ident: *const Ident) -> Ident; } @@ -14,18 +13,17 @@ extern "C" { #[derive(Debug)] pub struct Ident { pub(crate) is_raw: bool, - pub(crate) val: *const c_uchar, - len: u64, + value: FFIString, span: Span, } impl Ident { pub fn new(string: &str, span: Span) -> Self { - unsafe { Ident__new(string.as_ptr(), string.len().try_into().unwrap(), span) } + unsafe { Ident__new(string.into(), span) } } pub fn new_raw(string: &str, span: Span) -> Self { - unsafe { Ident__new_raw(string.as_ptr(), string.len().try_into().unwrap(), span) } + unsafe { Ident__new_raw(string.into(), span) } } pub fn span(&self) -> Span { @@ -49,16 +47,7 @@ impl fmt::Display for Ident { if self.is_raw { f.write_str("r#")?; } - fmt::Display::fmt( - unsafe { - std::str::from_utf8(std::slice::from_raw_parts( - self.val, - self.len.try_into().unwrap(), - )) - .unwrap() - }, - f, - ) + self.value.fmt(f) } }