Movatterモバイル変換


[0]ホーム

URL:


Skip to content

Navigation Menu

Sign in
Appearance settings

Search code, repositories, users, issues, pull requests...

Provide feedback

We read every piece of feedback, and take your input very seriously.

Saved searches

Use saved searches to filter your results more quickly

Sign up
Appearance settings

Commitd0da525

Browse files
gordyffacebook-github-bot
authored andcommitted
Remove PointerAddress from generate_typename
Reviewed By: captbaritoneDifferential Revision: D67058358fbshipit-source-id: cd60c47d0bd60d0351b67b35cd2271e2a06197e2
1 parent2211ac6 commitd0da525

File tree

1 file changed

+13
-15
lines changed

1 file changed

+13
-15
lines changed

‎compiler/crates/relay-transforms/src/generate_typename.rs

Lines changed: 13 additions & 15 deletions
Original file line numberDiff line numberDiff line change
@@ -9,7 +9,6 @@ use std::sync::Arc;
99

1010
use common::DirectiveName;
1111
use common::Location;
12-
use common::PointerAddress;
1312
use common::WithLocation;
1413
use fnv::FnvHashMap;
1514
use graphql_ir::Directive;
@@ -47,14 +46,11 @@ pub fn generate_typename(program: &Program, is_for_codegen: bool) -> Program {
4746
.replace_or_else(|| program.clone())
4847
}
4948

50-
// Note on correctness: the PointerAddress here is calculated from addresses of the input
51-
// context. Because those value are still referenced, that memory cannot be freed/
52-
// reused for the lifetime of the transform.
53-
typeSeen =FnvHashMap<PointerAddress,Transformed<Selection>>;
49+
typeSeen<'a> =FnvHashMap<&'aInlineFragment,Transformed<Selection>>;
5450

5551
structGenerateTypenameTransform<'s>{
5652
program:&'sProgram,
57-
seen:Seen,
53+
seen:Seen<'s>,
5854
is_for_codegen:bool,
5955
parent_type:Option<Type>,
6056
}
@@ -70,22 +66,22 @@ impl<'s> GenerateTypenameTransform<'s> {
7066
}
7167
}
7268

73-
impl<'s>Transformer<'_>forGenerateTypenameTransform<'s>{
69+
impl<'s>Transformer<'s>forGenerateTypenameTransform<'s>{
7470
constNAME:&'staticstr ="GenerateTypenameTransform";
7571
constVISIT_ARGUMENTS:bool =false;
7672
constVISIT_DIRECTIVES:bool =false;
7773

7874
fntransform_operation(
7975
&mutself,
80-
operation:&OperationDefinition,
76+
operation:&'sOperationDefinition,
8177
) ->Transformed<OperationDefinition>{
8278
self.parent_type =Some(operation.type_);
8379
self.default_transform_operation(operation)
8480
}
8581

8682
fntransform_fragment(
8783
&mutself,
88-
fragment:&FragmentDefinition,
84+
fragment:&'sFragmentDefinition,
8985
) ->Transformed<FragmentDefinition>{
9086
self.parent_type =Some(fragment.type_condition);
9187
let schema =&self.program.schema;
@@ -115,7 +111,7 @@ impl<'s> Transformer<'_> for GenerateTypenameTransform<'s> {
115111
}
116112
}
117113

118-
fntransform_linked_field(&mutself,field:&LinkedField) ->Transformed<Selection>{
114+
fntransform_linked_field(&mutself,field:&'sLinkedField) ->Transformed<Selection>{
119115
let schema =&self.program.schema;
120116
let field_definition = schema.field(field.definition.item);
121117
let parent_type =self.parent_type;
@@ -154,12 +150,14 @@ impl<'s> Transformer<'_> for GenerateTypenameTransform<'s> {
154150
}
155151
}
156152

157-
fntransform_inline_fragment(&mutself,fragment:&InlineFragment) ->Transformed<Selection>{
158-
let key =PointerAddress::new(fragment);
159-
ifletSome(prev) =self.seen.get(&key){
153+
fntransform_inline_fragment(
154+
&mutself,
155+
fragment:&'sInlineFragment,
156+
) ->Transformed<Selection>{
157+
ifletSome(prev) =self.seen.get(fragment){
160158
return prev.clone();
161159
}
162-
self.seen.insert(key,Transformed::Delete);
160+
self.seen.insert(fragment,Transformed::Delete);
163161
let parent_type =self.parent_type;
164162
if fragment.type_condition.is_some(){
165163
self.parent_type = fragment.type_condition;
@@ -204,7 +202,7 @@ impl<'s> Transformer<'_> for GenerateTypenameTransform<'s> {
204202
})))
205203
}
206204
};
207-
self.seen.insert(key, result.clone());
205+
self.seen.insert(fragment, result.clone());
208206
result
209207
}
210208

0 commit comments

Comments
 (0)

[8]ページ先頭

©2009-2025 Movatter.jp