Skip to content

Commit 8a51c33

Browse files
committed
Improve type safety for instance resolvers
1 parent 612a3af commit 8a51c33

File tree

4 files changed

+9
-9
lines changed

4 files changed

+9
-9
lines changed

src/macros/interface.rs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -175,7 +175,7 @@ macro_rules! graphql_interface {
175175
let $ctxtvar = &$ctxtarg;
176176

177177
$(
178-
if let Some(_) = $resolver {
178+
if let Some(_) = $resolver as Option<$srctype> {
179179
return (<$srctype as $crate::GraphQLType<$ctxttype>>::name()).unwrap().to_owned();
180180
}
181181
)*

src/macros/tests/union.rs

Lines changed: 5 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -38,7 +38,7 @@ graphql_object!(Concrete: () |&self| {
3838

3939
graphql_union!(DefaultName: () |&self| {
4040
instance_resolvers: |&_| {
41-
Concrete => match *self { DefaultName::Concrete(ref c) => Some(c) }
41+
&Concrete => match *self { DefaultName::Concrete(ref c) => Some(c) }
4242
}
4343
});
4444

@@ -57,27 +57,27 @@ graphql_union!(<T> WithGenerics<T>: () as "WithGenerics" |&self| {
5757
graphql_union!(DescriptionFirst: () |&self| {
5858
description: "A description"
5959
instance_resolvers: |&_| {
60-
Concrete => match *self { DescriptionFirst::Concrete(ref c) => Some(c) }
60+
&Concrete => match *self { DescriptionFirst::Concrete(ref c) => Some(c) }
6161
}
6262
});
6363

6464
graphql_union!(ResolversFirst: () |&self| {
6565
instance_resolvers: |&_| {
66-
Concrete => match *self { ResolversFirst::Concrete(ref c) => Some(c) }
66+
&Concrete => match *self { ResolversFirst::Concrete(ref c) => Some(c) }
6767
}
6868
description: "A description"
6969
});
7070

7171
graphql_union!(CommasWithTrailing: () |&self| {
7272
instance_resolvers: |&_| {
73-
Concrete => match *self { CommasWithTrailing::Concrete(ref c) => Some(c) }
73+
&Concrete => match *self { CommasWithTrailing::Concrete(ref c) => Some(c) }
7474
},
7575
description: "A description",
7676
});
7777

7878
graphql_union!(ResolversWithTrailingComma: () |&self| {
7979
instance_resolvers: |&_| {
80-
Concrete => match *self { ResolversWithTrailingComma::Concrete(ref c) => Some(c) },
80+
&Concrete => match *self { ResolversWithTrailingComma::Concrete(ref c) => Some(c) },
8181
}
8282
description: "A description"
8383
});

src/macros/union.rs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -42,7 +42,7 @@ macro_rules! graphql_union {
4242
let $ctxtvar = &$ctxtarg;
4343

4444
$(
45-
if let Some(_) = $resolver {
45+
if let Some(_) = $resolver as Option<$srctype> {
4646
return (<$srctype as $crate::GraphQLType<$ctxttype>>::name()).unwrap().to_owned();
4747
}
4848
)*

src/tests/schema.rs

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -27,8 +27,8 @@ graphql_interface!(<'a> &'a Character: Database as "Character" |&self| {
2727
}
2828

2929
instance_resolvers: |&context| {
30-
&'a Human => context.get_human(&self.id()),
31-
&'a Droid => context.get_droid(&self.id()),
30+
&Human => context.get_human(&self.id()),
31+
&Droid => context.get_droid(&self.id()),
3232
}
3333
});
3434

0 commit comments

Comments
 (0)