gccrs: libproc_macro: Remove has_suffix attribute

This variable was redundant with the empty string representation and
may have lead to desync between both.

libgrust/ChangeLog:

	* libproc_macro/literal.h: Remove has_suffix member
	attribute from Literal.
	* libproc_macro/literal.cc: Update constructors.
	* libproc_macro/rust/bridge/literal.rs: Remove
	has_suffix attribute from Literal.

Signed-off-by: Pierre-Emmanuel Patry <pierre-emmanuel.patry@embecosm.com>
This commit is contained in:
Pierre-Emmanuel Patry 2023-05-11 12:35:18 +02:00 committed by Arthur Cohen
parent f730dff173
commit 4689998556
3 changed files with 19 additions and 33 deletions

View File

@ -46,8 +46,7 @@ Literal::drop (Literal *lit)
Literal
Literal::clone () const
{
return {this->kind, this->text.clone (), this->has_suffix,
this->suffix.clone ()};
return {this->kind, this->text.clone (), this->suffix.clone ()};
}
Literal
@ -56,7 +55,7 @@ Literal::make_literal (LitKind kind, const std::string &text,
{
auto ffi_text = FFIString::make_ffistring (text);
auto ffi_suffix = FFIString::make_ffistring (suffix);
return {kind, ffi_text, suffix != "", ffi_suffix};
return {kind, ffi_text, ffi_suffix};
}
Literal
@ -64,7 +63,7 @@ Literal::make_u8 (std::uint8_t value, bool suffixed)
{
auto text = FFIString::make_ffistring (std::to_string (value));
auto suffix = FFIString::make_ffistring (suffixed ? "u8" : "");
return {LitKind::make_integer (), text, suffixed, suffix};
return {LitKind::make_integer (), text, suffix};
}
Literal
@ -72,7 +71,7 @@ Literal::make_u16 (std::uint16_t value, bool suffixed)
{
auto text = FFIString::make_ffistring (std::to_string (value));
auto suffix = FFIString::make_ffistring (suffixed ? "u16" : "");
return {LitKind::make_integer (), text, suffixed, suffix};
return {LitKind::make_integer (), text, suffix};
}
Literal
@ -80,7 +79,7 @@ Literal::make_u32 (std::uint32_t value, bool suffixed)
{
auto text = FFIString::make_ffistring (std::to_string (value));
auto suffix = FFIString::make_ffistring (suffixed ? "u32" : "");
return {LitKind::make_integer (), text, suffixed, suffix};
return {LitKind::make_integer (), text, suffix};
}
Literal
@ -88,7 +87,7 @@ Literal::make_u64 (std::uint64_t value, bool suffixed)
{
auto text = FFIString::make_ffistring (std::to_string (value));
auto suffix = FFIString::make_ffistring (suffixed ? "u64" : "");
return {LitKind::make_integer (), text, suffixed, suffix};
return {LitKind::make_integer (), text, suffix};
}
Literal
@ -96,7 +95,7 @@ Literal::make_i8 (std::int8_t value, bool suffixed)
{
auto text = FFIString::make_ffistring (std::to_string (value));
auto suffix = FFIString::make_ffistring (suffixed ? "i8" : "");
return {LitKind::make_integer (), text, suffixed, suffix};
return {LitKind::make_integer (), text, suffix};
}
Literal
@ -104,7 +103,7 @@ Literal::make_i16 (std::int16_t value, bool suffixed)
{
auto text = FFIString::make_ffistring (std::to_string (value));
auto suffix = FFIString::make_ffistring (suffixed ? "i16" : "");
return {LitKind::make_integer (), text, suffixed, suffix};
return {LitKind::make_integer (), text, suffix};
}
Literal
@ -112,7 +111,7 @@ Literal::make_i32 (std::int32_t value, bool suffixed)
{
auto text = FFIString::make_ffistring (std::to_string (value));
auto suffix = FFIString::make_ffistring (suffixed ? "i32" : "");
return {LitKind::make_integer (), text, suffixed, suffix};
return {LitKind::make_integer (), text, suffix};
}
Literal
@ -120,7 +119,7 @@ Literal::make_i64 (std::int64_t value, bool suffixed)
{
auto text = FFIString::make_ffistring (std::to_string (value));
auto suffix = FFIString::make_ffistring (suffixed ? "i64" : "");
return {LitKind::make_integer (), text, suffixed, suffix};
return {LitKind::make_integer (), text, suffix};
}
Literal
@ -128,7 +127,7 @@ Literal::make_string (const std::string &str)
{
auto text = FFIString::make_ffistring (str);
auto suffix = FFIString::make_ffistring ("");
return {LitKind::make_str (), text, false, suffix};
return {LitKind::make_str (), text, suffix};
}
Literal
@ -137,7 +136,7 @@ Literal::make_byte_string (const std::vector<std::uint8_t> &vec)
auto text
= FFIString::make_ffistring (std::string (vec.cbegin (), vec.cend ()));
auto suffix = FFIString::make_ffistring ("");
return {LitKind::make_byte_str (), text, false, suffix};
return {LitKind::make_byte_str (), text, suffix};
}
Literal
@ -145,7 +144,7 @@ Literal::make_f32 (float value, bool suffixed)
{
auto text = FFIString::make_ffistring (std::to_string (value));
auto suffix = FFIString::make_ffistring (suffixed ? "f32" : "");
return {LitKind::make_float (), text, suffixed, suffix};
return {LitKind::make_float (), text, suffix};
}
Literal
@ -153,7 +152,7 @@ Literal::make_f64 (double value, bool suffixed)
{
auto text = FFIString::make_ffistring (std::to_string (value));
auto suffix = FFIString::make_ffistring (suffixed ? "f64" : "");
return {LitKind::make_float (), text, suffixed, suffix};
return {LitKind::make_float (), text, suffix};
}
Literal
@ -161,7 +160,7 @@ Literal::make_char (std::uint32_t ch)
{
auto text = FFIString::make_ffistring (std::to_string ((char) ch));
auto suffix = FFIString::make_ffistring ("");
return {LitKind::make_char (), text, false, suffix};
return {LitKind::make_char (), text, suffix};
}
Literal
@ -169,7 +168,7 @@ Literal::make_usize (std::uint64_t value, bool suffixed)
{
auto text = FFIString::make_ffistring (std::to_string (value));
auto suffix = FFIString::make_ffistring (suffixed ? "usize" : "");
return {LitKind::make_integer (), text, suffixed, suffix};
return {LitKind::make_integer (), text, suffix};
}
Literal
@ -177,7 +176,7 @@ Literal::make_isize (std::int64_t value, bool suffixed)
{
auto text = FFIString::make_ffistring (std::to_string (value));
auto suffix = FFIString::make_ffistring (suffixed ? "isize" : "");
return {LitKind::make_integer (), text, suffixed, suffix};
return {LitKind::make_integer (), text, suffix};
}
LitKind

View File

@ -69,12 +69,12 @@ struct Literal
{
LitKind kind;
FFIString text;
bool has_suffix;
FFIString suffix;
// TODO: Add span once done in rust interface
public:
Literal clone () const;
bool has_suffix () const { return suffix.len != 0; };
static Literal make_literal (const LitKind kind, const std::string &text,
const std::string &suffix = "");

View File

@ -28,7 +28,6 @@ pub enum LitKind {
pub struct Literal {
kind: LitKind,
text: FFIString,
has_suffix: bool,
suffix: FFIString,
// FIXME: Add span, cannot add whilst Span remain an empty type
}
@ -39,7 +38,6 @@ macro_rules! suffixed_int_literals {
Literal {
kind : LitKind::Integer,
text: FFIString::new(&n.to_string()),
has_suffix : true,
suffix: FFIString::new(stringify!($kind))
}
}
@ -52,7 +50,6 @@ macro_rules! unsuffixed_int_literals {
Literal {
kind : LitKind::Integer,
text: FFIString::new(&n.to_string()),
has_suffix : false,
suffix: FFIString::new("")
}
}
@ -99,7 +96,6 @@ impl Literal {
Literal {
kind: LitKind::Float,
text: FFIString::new(&repr),
has_suffix: false,
suffix: FFIString::new(""),
}
}
@ -108,7 +104,6 @@ impl Literal {
Literal {
kind: LitKind::Float,
text: FFIString::new(&n.to_string()),
has_suffix: true,
suffix: FFIString::new("f32"),
}
}
@ -122,7 +117,6 @@ impl Literal {
Literal {
kind: LitKind::Float,
text: FFIString::new(&repr),
has_suffix: false,
suffix: FFIString::new(""),
}
}
@ -131,7 +125,6 @@ impl Literal {
Literal {
kind: LitKind::Float,
text: FFIString::new(&n.to_string()),
has_suffix: true,
suffix: FFIString::new("f64"),
}
}
@ -140,7 +133,6 @@ impl Literal {
Literal {
kind: LitKind::Str,
text: FFIString::new(string),
has_suffix: false,
suffix: FFIString::new(""),
}
}
@ -149,7 +141,6 @@ impl Literal {
Literal {
kind: LitKind::Char,
text: FFIString::new(&c.to_string()),
has_suffix: false,
suffix: FFIString::new(""),
}
}
@ -158,7 +149,6 @@ impl Literal {
Literal {
kind: LitKind::ByteStr,
text: FFIString::new(&bytes.escape_ascii().to_string()),
has_suffix: false,
suffix: FFIString::new(""),
}
}
@ -217,9 +207,7 @@ impl fmt::Display for Literal {
_ => f.write_str(text)?,
}
if self.has_suffix {
f.write_str(&self.suffix.to_string())?;
}
f.write_str(&self.suffix.to_string())?;
Ok(())
}
}
@ -232,7 +220,6 @@ impl FromStr for Literal {
let mut lit = Literal {
kind: LitKind::Err,
text: FFIString::new(""),
has_suffix: false,
suffix: FFIString::new(""),
};
// TODO: We might want to pass a LexError by reference to retrieve