Merge pull request #358 from Aaron1011/fix/object-raw-ident

Strip `r#` prefix when constructing getter ident
This commit is contained in:
Sunli 2020-12-21 08:52:09 +08:00 committed by GitHub
commit 383456f007
2 changed files with 14 additions and 9 deletions

View File

@ -374,7 +374,10 @@ pub fn generate(
} }
None => quote! { ::std::option::Option::None }, None => quote! { ::std::option::Option::None },
}; };
let param_getter_name = get_param_getter_ident(&ident.ident.to_string()); // We're generating a new identifier,
// so remove the 'r#` prefix if present
let param_getter_name =
get_param_getter_ident(&ident.ident.unraw().to_string());
get_params.push(quote! { get_params.push(quote! {
#[allow(non_snake_case)] #[allow(non_snake_case)]
let #param_getter_name = || -> #crate_name::ServerResult<#ty> { ctx.param_value(#name, #default) }; let #param_getter_name = || -> #crate_name::ServerResult<#ty> { ctx.param_value(#name, #default) };

View File

@ -11,24 +11,26 @@ pub async fn test_input_value_custom_error() {
#[derive(SimpleObject)] #[derive(SimpleObject)]
struct MyObject { struct MyObject {
r#i32: i32, r#match: i32,
} }
#[derive(InputObject)] #[derive(InputObject)]
struct MyInputObject { struct MyInputObject {
r#i32: i32, r#match: i32,
} }
struct Query; struct Query;
#[Object] #[Object]
impl Query { impl Query {
async fn r#type(&self, r#i32: i32) -> i32 { async fn r#type(&self, r#match: i32) -> i32 {
r#i32 r#match
} }
async fn obj(&self, obj: MyInputObject) -> MyObject { async fn obj(&self, obj: MyInputObject) -> MyObject {
MyObject { r#i32: obj.r#i32 } MyObject {
r#match: obj.r#match,
}
} }
async fn enum_value(&self, value: MyEnum) -> MyEnum { async fn enum_value(&self, value: MyEnum) -> MyEnum {
@ -48,15 +50,15 @@ pub async fn test_input_value_custom_error() {
let schema = Schema::new(Query, EmptyMutation, SubscriptionRoot); let schema = Schema::new(Query, EmptyMutation, SubscriptionRoot);
let query = r#" let query = r#"
{ {
type(i32: 99) type(match: 99)
obj(obj: { i32: 88} ) { i32 } obj(obj: { match: 88} ) { match }
enumValue(value: TYPE) enumValue(value: TYPE)
}"#; }"#;
assert_eq!( assert_eq!(
schema.execute(query).await.into_result().unwrap().data, schema.execute(query).await.into_result().unwrap().data,
value!({ value!({
"type": 99, "type": 99,
"obj": { "i32": 88 }, "obj": { "match": 88 },
"enumValue": "TYPE", "enumValue": "TYPE",
}) })
); );