From 8ab23bed7148028a135906633c902c3777d5e27d Mon Sep 17 00:00:00 2001 From: Kenny Kerr Date: Mon, 31 Jan 2022 13:07:42 -0800 Subject: [PATCH 1/2] escape_default --- crates/libs/bindgen/src/helpers.rs | 18 ++++++++++++++++-- 1 file changed, 16 insertions(+), 2 deletions(-) diff --git a/crates/libs/bindgen/src/helpers.rs b/crates/libs/bindgen/src/helpers.rs index de218f15e8..7290c93b36 100644 --- a/crates/libs/bindgen/src/helpers.rs +++ b/crates/libs/bindgen/src/helpers.rs @@ -201,6 +201,17 @@ pub fn gen_vtbl(def: &TypeDef, cfg: &Cfg, gen: &Gen) -> TokenStream { } } +fn gen_string_literal(value: &str) -> TokenStream { + let mut tokens = "\"".to_string(); + + for u in value.chars() { + tokens.push_str(&format!("{}", u.escape_default())); + } + + tokens.push_str("\""); + tokens.into() +} + fn gen_type_guid(def: &TypeDef, gen: &Gen, type_name: &TokenStream) -> TokenStream { if def.generics.is_empty() { match GUID::from_attributes(def.attributes()) { @@ -231,7 +242,10 @@ pub fn gen_constant_type_value(value: &ConstantValue) -> TokenStream { ConstantValue::I64(value) => quote! { i64 = #value }, ConstantValue::F32(value) => quote! { f32 = #value }, ConstantValue::F64(value) => quote! { f64 = #value }, - ConstantValue::String(value) => quote! { &'static str = #value }, + ConstantValue::String(value) => { + let value = gen_string_literal(&value); + quote! { &'static str = #value } + } _ => unimplemented!(), } } @@ -275,7 +289,7 @@ pub fn gen_constant_value(value: &ConstantValue) -> TokenStream { ConstantValue::I64(value) => quote! { #value }, ConstantValue::F32(value) => quote! { #value }, ConstantValue::F64(value) => quote! { #value }, - ConstantValue::String(value) => quote! { #value }, + ConstantValue::String(value) => gen_string_literal(&value), _ => unimplemented!(), } } From 0e2ee4fbeb5a1f1dad812a6b2e3516bf25e1fe2c Mon Sep 17 00:00:00 2001 From: Kenny Kerr Date: Mon, 31 Jan 2022 13:25:59 -0800 Subject: [PATCH 2/2] clippy --- crates/libs/bindgen/src/helpers.rs | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/crates/libs/bindgen/src/helpers.rs b/crates/libs/bindgen/src/helpers.rs index 7290c93b36..1b894f169c 100644 --- a/crates/libs/bindgen/src/helpers.rs +++ b/crates/libs/bindgen/src/helpers.rs @@ -208,7 +208,7 @@ fn gen_string_literal(value: &str) -> TokenStream { tokens.push_str(&format!("{}", u.escape_default())); } - tokens.push_str("\""); + tokens.push('\"'); tokens.into() } @@ -243,7 +243,7 @@ pub fn gen_constant_type_value(value: &ConstantValue) -> TokenStream { ConstantValue::F32(value) => quote! { f32 = #value }, ConstantValue::F64(value) => quote! { f64 = #value }, ConstantValue::String(value) => { - let value = gen_string_literal(&value); + let value = gen_string_literal(value); quote! { &'static str = #value } } _ => unimplemented!(), @@ -289,7 +289,7 @@ pub fn gen_constant_value(value: &ConstantValue) -> TokenStream { ConstantValue::I64(value) => quote! { #value }, ConstantValue::F32(value) => quote! { #value }, ConstantValue::F64(value) => quote! { #value }, - ConstantValue::String(value) => gen_string_literal(&value), + ConstantValue::String(value) => gen_string_literal(value), _ => unimplemented!(), } }