Skip to content

Commit b48c345

Browse files
committed
refactor
1 parent fd1f7e4 commit b48c345

File tree

4 files changed

+37
-29
lines changed

4 files changed

+37
-29
lines changed

compiler/gentype/EmitJs.ml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -656,7 +656,7 @@ let emit_translation_as_string ~config ~file_name
656656
in
657657
let emitters =
658658
match config.emit_satisfies_helper with
659-
| true -> EmitType.emit_satisfies_helper ~emitters
659+
| true -> SatisfiesHelpers.emit_helper_alias ~emitters
660660
| false -> emitters
661661
in
662662
let env, emitters =

compiler/gentype/EmitType.ml

Lines changed: 15 additions & 27 deletions
Original file line numberDiff line numberDiff line change
@@ -126,24 +126,21 @@ let rec render_type ~(config : Config.t) ?(indent = None)
126126
| true -> name |> interface_name ~config
127127
| false -> name
128128
in
129-
if name = "$RescriptTypeSatisfiesTypeScriptType" then
130-
match type_args with
131-
| [t1; t2] ->
132-
let render_arg t =
133-
" "
134-
^ (t
135-
|> render_type ~config ~indent:(Some " ") ~type_name_is_interface
136-
~in_fun_type)
137-
in
138-
rendered_name ^ "<\n" ^ render_arg t1 ^ ",\n" ^ render_arg t2 ^ "\n>"
139-
| _ ->
140-
rendered_name
141-
^ EmitText.generics_string
142-
~type_vars:
143-
(type_args
144-
|> List.map
145-
(render_type ~config ~indent ~type_name_is_interface
146-
~in_fun_type))
129+
if SatisfiesHelpers.is_helper_ident name then
130+
let rendered_type_args_special =
131+
type_args
132+
|> List.map
133+
(render_type ~config ~indent:(Some " ") ~type_name_is_interface
134+
~in_fun_type)
135+
in
136+
let rendered_type_args_default =
137+
type_args
138+
|> List.map
139+
(render_type ~config ~indent ~type_name_is_interface ~in_fun_type)
140+
in
141+
SatisfiesHelpers.render_helper_ident ~rendered_name
142+
~rendered_type_args:rendered_type_args_special
143+
~rendered_type_args_default
147144
else
148145
rendered_name
149146
^ EmitText.generics_string
@@ -446,15 +443,6 @@ let require ~early =
446443
let emit_import_react ~emitters =
447444
"import * as React from 'react';" |> require ~early:true ~emitters
448445

449-
let emit_satisfies_helper ~emitters =
450-
let alias =
451-
"export type $RescriptTypeSatisfiesTypeScriptType<\n\
452-
RescriptType,\n\
453-
TypeScriptType extends RescriptType\n\
454-
> = TypeScriptType;"
455-
in
456-
Emitters.export_early ~emitters alias
457-
458446
let emit_import_type_as ~emitters ~config ~type_name ~as_type_name
459447
~type_name_is_interface ~import_path =
460448
let type_name = sanitize_type_name type_name in
Lines changed: 20 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,20 @@
1+
let helper_type_name = "$RescriptTypeSatisfiesTypeScriptType"
2+
3+
let is_helper_ident name = name = helper_type_name
4+
5+
let render_helper_ident ~rendered_name ~rendered_type_args
6+
~rendered_type_args_default =
7+
match rendered_type_args with
8+
| [a1; a2] ->
9+
let render_arg s = " " ^ s in
10+
rendered_name ^ "<\n" ^ render_arg a1 ^ ",\n" ^ render_arg a2 ^ "\n>"
11+
| _ -> rendered_name ^ EmitText.generics_string ~type_vars:rendered_type_args_default
12+
13+
let emit_helper_alias ~emitters =
14+
let alias =
15+
"export type $RescriptTypeSatisfiesTypeScriptType<\n\
16+
RescriptType,\n\
17+
TypeScriptType extends RescriptType\n\
18+
> = TypeScriptType;"
19+
in
20+
Emitters.export_early ~emitters alias

compiler/gentype/TranslateTypeDeclarations.ml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -84,7 +84,7 @@ let traslate_declaration_kind ~config ~loc ~output_file_relative ~resolver
8484
in
8585
let ts_type = ident ~builtin:true inline_import in
8686
ident ~builtin:true ~type_args:[type_; ts_type]
87-
"$RescriptTypeSatisfiesTypeScriptType"
87+
SatisfiesHelpers.helper_type_name
8888
in
8989
let unboxed_annotation =
9090
type_attributes |> Annotation.has_attribute Annotation.tag_is_unboxed

0 commit comments

Comments
 (0)