From 42fac3a9aaa5021332765df1a1fbcc409c6cf663 Mon Sep 17 00:00:00 2001 From: Gabriel Nordeborn Date: Fri, 10 Jan 2025 23:56:21 +0100 Subject: [PATCH 01/18] poc of nested record definitions --- compiler/syntax/src/res_core.ml | 142 +++++++++++++++++++++-------- compiler/syntax/src/res_printer.ml | 71 +++++++++++++-- tests/tests/src/nested_records.mjs | 16 ++++ tests/tests/src/nested_records.res | 15 +++ 4 files changed, 196 insertions(+), 48 deletions(-) create mode 100644 tests/tests/src/nested_records.mjs create mode 100644 tests/tests/src/nested_records.res diff --git a/compiler/syntax/src/res_core.ml b/compiler/syntax/src/res_core.ml index b1724b239a..c4cbede225 100644 --- a/compiler/syntax/src/res_core.ml +++ b/compiler/syntax/src/res_core.ml @@ -3974,7 +3974,7 @@ and parse_array_exp p = (* TODO: check attributes in the case of poly type vars, * might be context dependend: parseFieldDeclaration (see ocaml) *) -and parse_poly_type_expr p = +and parse_poly_type_expr ?current_type_name_path ?inline_types p = let start_pos = p.Parser.start_pos in match p.Parser.token with | SingleQuote -> ( @@ -4000,7 +4000,7 @@ and parse_poly_type_expr p = Ast_helper.Typ.arrow ~loc ~arity:(Some 1) Nolabel typ return_type | _ -> Ast_helper.Typ.var ~loc:var.loc var.txt) | _ -> assert false) - | _ -> parse_typ_expr p + | _ -> parse_typ_expr ?current_type_name_path ?inline_types p (* 'a 'b 'c *) and parse_type_var_list p = @@ -4028,7 +4028,7 @@ and parse_lident_list p = in loop p [] -and parse_atomic_typ_expr ~attrs p = +and parse_atomic_typ_expr ?current_type_name_path ?inline_types ~attrs p = Parser.leave_breadcrumb p Grammar.AtomicTypExpr; let start_pos = p.Parser.start_pos in let typ = @@ -4085,7 +4085,8 @@ and parse_atomic_typ_expr ~attrs p = let extension = parse_extension p in let loc = mk_loc start_pos p.prev_end_pos in Ast_helper.Typ.extension ~attrs ~loc extension - | Lbrace -> parse_record_or_object_type ~attrs p + | Lbrace -> + parse_record_or_object_type ?current_type_name_path ?inline_types ~attrs p | Eof -> Parser.err p (Diagnostics.unexpected p.Parser.token p.breadcrumbs); Recover.default_type () @@ -4147,7 +4148,7 @@ and parse_package_constraint p = Some (type_constr, typ) | _ -> None -and parse_record_or_object_type ~attrs p = +and parse_record_or_object_type ?current_type_name_path ?inline_types ~attrs p = (* for inline record in constructor *) let start_pos = p.Parser.start_pos in Parser.expect Lbrace p; @@ -4161,20 +4162,39 @@ and parse_record_or_object_type ~attrs p = Asttypes.Closed | _ -> Asttypes.Closed in - let () = - match p.token with - | Lident _ -> - Parser.err p - (Diagnostics.message ErrorMessages.forbidden_inline_record_declaration) - | _ -> () - in - let fields = - parse_comma_delimited_region ~grammar:Grammar.StringFieldDeclarations - ~closing:Rbrace ~f:parse_string_field_declaration p - in - Parser.expect Rbrace p; - let loc = mk_loc start_pos p.prev_end_pos in - Ast_helper.Typ.object_ ~loc ~attrs fields closed_flag + match (p.token, inline_types, current_type_name_path) with + | Lident _, Some inline_types, Some current_type_name_path -> + let labels = + parse_comma_delimited_region ~grammar:Grammar.RecordDecl ~closing:Rbrace + ~f: + (parse_field_declaration_region ~current_type_name_path ~inline_types) + p + in + Parser.expect Rbrace p; + let loc = mk_loc start_pos p.prev_end_pos in + let inline_type_name = current_type_name_path |> String.concat "." in + inline_types := + (inline_type_name, loc, Parsetree.Ptype_record labels) :: !inline_types; + + let lid = Location.mkloc (Longident.Lident inline_type_name) loc in + Ast_helper.Typ.constr + ~attrs:[(Location.mknoloc "inlineRecordReference", PStr [])] + ~loc lid [] + | _ -> + let () = + match p.token with + | Lident _ -> + Parser.err p + (Diagnostics.message ErrorMessages.forbidden_inline_record_declaration) + | _ -> () + in + let fields = + parse_comma_delimited_region ~grammar:Grammar.StringFieldDeclarations + ~closing:Rbrace ~f:parse_string_field_declaration p + in + Parser.expect Rbrace p; + let loc = mk_loc start_pos p.prev_end_pos in + Ast_helper.Typ.object_ ~loc ~attrs fields closed_flag (* TODO: check associativity in combination with attributes *) and parse_type_alias p typ = @@ -4374,7 +4394,8 @@ and parse_es6_arrow_type ~attrs p = * | uident.lident * | uident.uident.lident --> long module path *) -and parse_typ_expr ?attrs ?(es6_arrow = true) ?(alias = true) p = +and parse_typ_expr ?current_type_name_path ?inline_types ?attrs + ?(es6_arrow = true) ?(alias = true) p = (* Parser.leaveBreadcrumb p Grammar.TypeExpression; *) let start_pos = p.Parser.start_pos in let attrs = @@ -4385,7 +4406,9 @@ and parse_typ_expr ?attrs ?(es6_arrow = true) ?(alias = true) p = let typ = if es6_arrow && is_es6_arrow_type p then parse_es6_arrow_type ~attrs p else - let typ = parse_atomic_typ_expr ~attrs p in + let typ = + parse_atomic_typ_expr ?current_type_name_path ?inline_types ~attrs p + in parse_arrow_type_rest ~es6_arrow ~start_pos typ p in let typ = if alias then parse_type_alias p typ else typ in @@ -4526,7 +4549,8 @@ and parse_field_declaration p = let loc = mk_loc start_pos typ.ptyp_loc.loc_end in Ast_helper.Type.field ~attrs ~loc ~mut ~optional name typ -and parse_field_declaration_region ?found_object_field p = +and parse_field_declaration_region ?current_type_name_path ?inline_types + ?found_object_field p = let start_pos = p.Parser.start_pos in let attrs = parse_attributes p in let mut = @@ -4551,12 +4575,17 @@ and parse_field_declaration_region ?found_object_field p = | Lident _ -> let lident, loc = parse_lident p in let name = Location.mkloc lident loc in + let current_type_name_path = + match current_type_name_path with + | None -> None + | Some current_type_name_path -> Some (current_type_name_path @ [name.txt]) + in let optional = parse_optional_label p in let typ = match p.Parser.token with | Colon -> Parser.next p; - parse_poly_type_expr p + parse_poly_type_expr ?current_type_name_path ?inline_types p | _ -> Ast_helper.Typ.constr ~loc:name.loc ~attrs {name with txt = Lident name.txt} @@ -4582,12 +4611,13 @@ and parse_field_declaration_region ?found_object_field p = * | { field-decl, field-decl } * | { field-decl, field-decl, field-decl, } *) -and parse_record_declaration p = +and parse_record_declaration ?current_type_name_path ?inline_types p = Parser.leave_breadcrumb p Grammar.RecordDecl; Parser.expect Lbrace p; let rows = parse_comma_delimited_region ~grammar:Grammar.RecordDecl ~closing:Rbrace - ~f:parse_field_declaration_region p + ~f:(parse_field_declaration_region ?current_type_name_path ?inline_types) + p in Parser.expect Rbrace p; Parser.eat_breadcrumb p; @@ -4830,7 +4860,7 @@ and parse_type_constructor_declarations ?first p = * ∣ = private record-decl * | = .. *) -and parse_type_representation p = +and parse_type_representation ?current_type_name_path ?inline_types p = Parser.leave_breadcrumb p Grammar.TypeRepresentation; (* = consumed *) let private_flag = @@ -4841,7 +4871,9 @@ and parse_type_representation p = match p.Parser.token with | Bar | Uident _ -> Parsetree.Ptype_variant (parse_type_constructor_declarations p) - | Lbrace -> Parsetree.Ptype_record (parse_record_declaration p) + | Lbrace -> + Parsetree.Ptype_record + (parse_record_declaration ?current_type_name_path ?inline_types p) | DotDot -> Parser.next p; Ptype_open @@ -5032,7 +5064,7 @@ and parse_type_equation_or_constr_decl p = (* TODO: is this a good idea? *) (None, Asttypes.Public, Parsetree.Ptype_abstract) -and parse_record_or_object_decl p = +and parse_record_or_object_decl ?current_type_name_path ?inline_types p = let start_pos = p.Parser.start_pos in Parser.expect Lbrace p; match p.Parser.token with @@ -5088,7 +5120,9 @@ and parse_record_or_object_decl p = let found_object_field = ref false in let fields = parse_comma_delimited_region ~grammar:Grammar.RecordDecl ~closing:Rbrace - ~f:(parse_field_declaration_region ~found_object_field) + ~f: + (parse_field_declaration_region ?current_type_name_path + ?inline_types ~found_object_field) p in Parser.expect Rbrace p; @@ -5159,7 +5193,11 @@ and parse_record_or_object_decl p = match attrs with | [] -> parse_comma_delimited_region ~grammar:Grammar.FieldDeclarations - ~closing:Rbrace ~f:parse_field_declaration_region p + ~closing:Rbrace + ~f: + (parse_field_declaration_region ?current_type_name_path + ?inline_types) + p | attr :: _ as attrs -> let first = let field = parse_field_declaration p in @@ -5176,7 +5214,11 @@ and parse_record_or_object_decl p = in first :: parse_comma_delimited_region ~grammar:Grammar.FieldDeclarations - ~closing:Rbrace ~f:parse_field_declaration_region p + ~closing:Rbrace + ~f: + (parse_field_declaration_region ?current_type_name_path + ?inline_types) + p in Parser.expect Rbrace p; Parser.eat_breadcrumb p; @@ -5366,14 +5408,16 @@ and parse_polymorphic_variant_type_args p = | [typ] -> typ | types -> Ast_helper.Typ.tuple ~loc ~attrs types -and parse_type_equation_and_representation p = +and parse_type_equation_and_representation ?current_type_name_path ?inline_types + p = match p.Parser.token with | (Equal | Bar) as token -> ( if token = Bar then Parser.expect Equal p; Parser.next p; match p.Parser.token with | Uident _ -> parse_type_equation_or_constr_decl p - | Lbrace -> parse_record_or_object_decl p + | Lbrace -> + parse_record_or_object_decl ?current_type_name_path ?inline_types p | Private -> parse_private_eq_or_repr p | Bar | DotDot -> let priv, kind = parse_type_representation p in @@ -5383,7 +5427,9 @@ and parse_type_equation_and_representation p = match p.Parser.token with | Equal -> Parser.next p; - let priv, kind = parse_type_representation p in + let priv, kind = + parse_type_representation ?current_type_name_path ?inline_types p + in (manifest, priv, kind) | _ -> (manifest, Public, Parsetree.Ptype_abstract))) | _ -> (None, Public, Parsetree.Ptype_abstract) @@ -5449,9 +5495,13 @@ and parse_type_extension ~params ~attrs ~name p = let constructors = loop p [first] in Ast_helper.Te.mk ~attrs ~params ~priv name constructors -and parse_type_definitions ~attrs ~name ~params ~start_pos p = +and parse_type_definitions ?current_type_name_path ?inline_types ~attrs ~name + ~params ~start_pos p = let type_def = - let manifest, priv, kind = parse_type_equation_and_representation p in + let manifest, priv, kind = + parse_type_equation_and_representation ?current_type_name_path + ?inline_types p + in let cstrs = parse_type_constraints p in let loc = mk_loc start_pos p.prev_end_pos in Ast_helper.Type.mk ~loc ~attrs ~priv ~kind ~params ~cstrs ?manifest @@ -5500,8 +5550,24 @@ and parse_type_definition_or_extension ~attrs p = (longident |> ErrorMessages.type_declaration_name_longident |> Diagnostics.message) in - let type_defs = parse_type_definitions ~attrs ~name ~params ~start_pos p in - TypeDef {rec_flag; types = type_defs} + let current_type_name_path = Longident.flatten name.txt in + let inline_types = ref [] in + let type_defs = + parse_type_definitions ~inline_types ~current_type_name_path ~attrs ~name + ~params ~start_pos p + in + let rec_flag = + if List.length !inline_types > 0 then Asttypes.Recursive else rec_flag + in + let inline_types = + !inline_types + |> List.map (fun (inline_type_name, loc, kind) -> + Ast_helper.Type.mk + ~attrs:[(Location.mknoloc "inlineRecordDefinition", PStr [])] + ~loc ~kind + {name with txt = inline_type_name}) + in + TypeDef {rec_flag; types = inline_types @ type_defs} (* external value-name : typexp = external-declaration *) and parse_external_def ~attrs ~start_pos p = diff --git a/compiler/syntax/src/res_printer.ml b/compiler/syntax/src/res_printer.ml index 9b313a00ea..5282fd14c5 100644 --- a/compiler/syntax/src/res_printer.ml +++ b/compiler/syntax/src/res_printer.ml @@ -550,6 +550,16 @@ module State = struct let should_break_callback t = t.custom_layout > custom_layout_threshold end +let is_inline_record_definition attrs = + attrs + |> List.exists (fun (({txt}, _) : Parsetree.attribute) -> + txt = "inlineRecordDefinition") + +let is_inline_record_reference attrs = + attrs + |> List.exists (fun (({txt}, _) : Parsetree.attribute) -> + txt = "inlineRecordReference") + let rec print_structure ~state (s : Parsetree.structure) t = match s with | [] -> print_comments_inside_file t @@ -569,6 +579,23 @@ and print_structure_item ~state (si : Parsetree.structure_item) cmt_tbl = | Asttypes.Recursive -> Doc.text "rec " in print_value_bindings ~state ~rec_flag value_bindings cmt_tbl + | Pstr_type (Recursive, type_declarations) + when type_declarations + |> List.find_opt (fun (td : Parsetree.type_declaration) -> + is_inline_record_definition td.ptype_attributes) + |> Option.is_some -> + let inline_record_definitions, regular_declarations = + type_declarations + |> List.partition (fun (td : Parsetree.type_declaration) -> + td.ptype_attributes + |> List.exists (fun (({txt}, _) : Parsetree.attribute) -> + txt = "inlineRecordDefinition")) + in + print_type_declarations ~inline_record_definitions ~state + ~rec_flag: + (if List.length regular_declarations > 1 then Doc.text "rec " + else Doc.nil) + regular_declarations cmt_tbl | Pstr_type (rec_flag, type_declarations) -> let rec_flag = match rec_flag with @@ -1107,11 +1134,12 @@ and print_value_description ~state value_description cmt_tbl = else Doc.nil); ]) -and print_type_declarations ~state ~rec_flag type_declarations cmt_tbl = +and print_type_declarations ?inline_record_definitions ~state ~rec_flag + type_declarations cmt_tbl = print_listi ~get_loc:(fun n -> n.Parsetree.ptype_loc) ~nodes:type_declarations - ~print:(print_type_declaration2 ~state ~rec_flag) + ~print:(print_type_declaration2 ?inline_record_definitions ~state ~rec_flag) cmt_tbl (* @@ -1217,8 +1245,8 @@ and print_type_declaration ~state ~name ~equal_sign ~rec_flag i (Doc.concat [attrs; prefix; type_name; type_params; manifest_and_kind; constraints]) -and print_type_declaration2 ~state ~rec_flag (td : Parsetree.type_declaration) - cmt_tbl i = +and print_type_declaration2 ?inline_record_definitions ~state ~rec_flag + (td : Parsetree.type_declaration) cmt_tbl i = let name = let doc = print_ident_like td.Parsetree.ptype_name.txt in print_comments doc cmt_tbl td.ptype_name.loc @@ -1278,7 +1306,8 @@ and print_type_declaration2 ~state ~rec_flag (td : Parsetree.type_declaration) manifest; Doc.concat [Doc.space; Doc.text equal_sign; Doc.space]; print_private_flag td.ptype_private; - print_record_declaration ~state lds cmt_tbl; + print_record_declaration ?inline_record_definitions ~state lds + cmt_tbl; ] | Ptype_variant cds -> let manifest = @@ -1371,8 +1400,8 @@ and print_type_param ~state (param : Parsetree.core_type * Asttypes.variance) in Doc.concat [printed_variance; print_typ_expr ~state typ cmt_tbl] -and print_record_declaration ~state (lds : Parsetree.label_declaration list) - cmt_tbl = +and print_record_declaration ?inline_record_definitions ~state + (lds : Parsetree.label_declaration list) cmt_tbl = let force_break = match (lds, List.rev lds) with | first :: _, last :: _ -> @@ -1391,7 +1420,10 @@ and print_record_declaration ~state (lds : Parsetree.label_declaration list) ~sep:(Doc.concat [Doc.comma; Doc.line]) (List.map (fun ld -> - let doc = print_label_declaration ~state ld cmt_tbl in + let doc = + print_label_declaration ?inline_record_definitions + ~state ld cmt_tbl + in print_comments doc cmt_tbl ld.Parsetree.pld_loc) lds); ]); @@ -1556,7 +1588,8 @@ and print_constructor_arguments ?(is_dot_dot_dot = false) ~state ~indent in if indent then Doc.indent args else args -and print_label_declaration ~state (ld : Parsetree.label_declaration) cmt_tbl = +and print_label_declaration ?inline_record_definitions ~state + (ld : Parsetree.label_declaration) cmt_tbl = let attrs = print_attributes ~state ~loc:ld.pld_name.loc ld.pld_attributes cmt_tbl in @@ -1581,7 +1614,25 @@ and print_label_declaration ~state (ld : Parsetree.label_declaration) cmt_tbl = name; optional; (if is_dot then Doc.nil else Doc.text ": "); - print_typ_expr ~state ld.pld_type cmt_tbl; + (match + ( inline_record_definitions, + is_inline_record_reference ld.pld_type.ptyp_attributes, + ld.pld_type ) + with + | ( Some inline_record_definitions, + true, + {ptyp_desc = Ptyp_constr ({txt = Lident constr_name}, _)} ) -> ( + let record_definition = + inline_record_definitions + |> List.find (fun (r : Parsetree.type_declaration) -> + r.ptype_name.txt = constr_name) + in + match record_definition.ptype_kind with + | Ptype_record lds -> + print_record_declaration ~inline_record_definitions ~state lds + cmt_tbl + | _ -> assert false) + | _ -> print_typ_expr ~state ld.pld_type cmt_tbl); ]) and print_typ_expr ~(state : State.t) (typ_expr : Parsetree.core_type) cmt_tbl = diff --git a/tests/tests/src/nested_records.mjs b/tests/tests/src/nested_records.mjs new file mode 100644 index 0000000000..c9e7e9bb63 --- /dev/null +++ b/tests/tests/src/nested_records.mjs @@ -0,0 +1,16 @@ +// Generated by ReScript, PLEASE EDIT WITH CARE + + +let options = { + extra: { + name: "test", + superExtra: { + age: 2222 + } + } +}; + +export { + options, +} +/* No side effect */ diff --git a/tests/tests/src/nested_records.res b/tests/tests/src/nested_records.res new file mode 100644 index 0000000000..92e8945034 --- /dev/null +++ b/tests/tests/src/nested_records.res @@ -0,0 +1,15 @@ +type options = { + extra?: { + name: string, + superExtra?: {age: int}, + }, +} + +let options = { + extra: { + name: "test", + superExtra: { + age: 2222, + }, + }, +} From 0706f6c81eb59013d3a823c9606f92c6e568c24a Mon Sep 17 00:00:00 2001 From: Gabriel Nordeborn Date: Sat, 11 Jan 2025 15:18:59 +0100 Subject: [PATCH 02/18] tests --- .../tests/src/NestedRecords.res | 28 +++++ .../tests/src/expected/NestedRecords.res.txt | 110 ++++++++++++++++++ .../typeDef/expected/inlineRecord.res.txt | 19 +-- 3 files changed, 143 insertions(+), 14 deletions(-) create mode 100644 tests/analysis_tests/tests/src/NestedRecords.res create mode 100644 tests/analysis_tests/tests/src/expected/NestedRecords.res.txt diff --git a/tests/analysis_tests/tests/src/NestedRecords.res b/tests/analysis_tests/tests/src/NestedRecords.res new file mode 100644 index 0000000000..17077fd510 --- /dev/null +++ b/tests/analysis_tests/tests/src/NestedRecords.res @@ -0,0 +1,28 @@ +// +type options = { + extra: { + name: string, + superExtra: {age: int}, + }, +} + +let options = { + extra: { + name: "test", + superExtra: { + age: 2222, + }, + }, +} + +// options +// ^hov + +// options.extra +// ^hov + +// options.extra.superExtra +// ^hov + +// options.extra.superExtra.age +// ^hov diff --git a/tests/analysis_tests/tests/src/expected/NestedRecords.res.txt b/tests/analysis_tests/tests/src/expected/NestedRecords.res.txt new file mode 100644 index 0000000000..0d8e6488e9 --- /dev/null +++ b/tests/analysis_tests/tests/src/expected/NestedRecords.res.txt @@ -0,0 +1,110 @@ +Hover src/NestedRecords.res 17:5 +Nothing at that position. Now trying to use completion. +posCursor:[17:5] posNoWhite:[17:4] Found expr:[17:3->17:10] +Pexp_ident options:[17:3->17:10] +Completable: Cpath Value[options] +Package opens Pervasives.JsxModules.place holder +ContextPath Value[options] +Path options +Package opens Pervasives.JsxModules.place holder +{"contents": {"kind": "markdown", "value": "```rescript\noptions\n```\n\n---\n\n```\n \n```\n```rescript\ntype options = {extra: \\\"options.extra\"}\n```\nGo to: [Type definition](command:rescript-vscode.go_to_location?%5B%22NestedRecords.res%22%2C1%2C0%5D)\n\n\n---\n\n```\n \n```\n```rescript\ntype options.extra = {\n name: string,\n superExtra: \\\"options.extra.superExtra\",\n}\n```\nGo to: [Type definition](command:rescript-vscode.go_to_location?%5B%22NestedRecords.res%22%2C2%2C9%5D)\n"}} + +Hover src/NestedRecords.res 20:13 +Nothing at that position. Now trying to use completion. +posCursor:[20:13] posNoWhite:[20:12] Found expr:[20:3->20:16] +Pexp_field [20:3->20:10] extra:[20:11->20:16] +Completable: Cpath Value[options].extra +Package opens Pervasives.JsxModules.place holder +ContextPath Value[options].extra +ContextPath Value[options] +Path options +ContextPath Value[options]->extra +ContextPath Value[options] +Path options +CPPipe pathFromEnv: found:true +Path NestedRecords.extra +Package opens Pervasives.JsxModules.place holder +{"contents": {"kind": "markdown", "value": "```rescript\n\\\"options.extra\"\n```\n\n---\n\n```\n \n```\n```rescript\ntype options.extra = {\n name: string,\n superExtra: \\\"options.extra.superExtra\",\n}\n```\nGo to: [Type definition](command:rescript-vscode.go_to_location?%5B%22NestedRecords.res%22%2C2%2C9%5D)\n\n\n---\n\n```\n \n```\n```rescript\ntype options.extra.superExtra = {age: int}\n```\nGo to: [Type definition](command:rescript-vscode.go_to_location?%5B%22NestedRecords.res%22%2C4%2C16%5D)\n"}} + +Hover src/NestedRecords.res 23:26 +Nothing at that position. Now trying to use completion. +posCursor:[23:26] posNoWhite:[23:25] Found expr:[23:3->23:27] +Pexp_field [23:3->23:16] superExtra:[23:17->23:27] +Completable: Cpath Value[options].extra.superExtra +Package opens Pervasives.JsxModules.place holder +ContextPath Value[options].extra.superExtra +ContextPath Value[options].extra +ContextPath Value[options] +Path options +ContextPath Value[options]->extra +ContextPath Value[options] +Path options +CPPipe pathFromEnv: found:true +Path NestedRecords.extra +ContextPath Value[options].extra->superExtra +ContextPath Value[options].extra +ContextPath Value[options] +Path options +ContextPath Value[options]->extra +ContextPath Value[options] +Path options +CPPipe pathFromEnv: found:true +Path NestedRecords.extra +CPPipe pathFromEnv: found:true +Path NestedRecords.superExtra +Package opens Pervasives.JsxModules.place holder +{"contents": {"kind": "markdown", "value": "```rescript\n\\\"options.extra.superExtra\"\n```\n\n---\n\n```\n \n```\n```rescript\ntype options.extra.superExtra = {age: int}\n```\nGo to: [Type definition](command:rescript-vscode.go_to_location?%5B%22NestedRecords.res%22%2C4%2C16%5D)\n"}} + +Hover src/NestedRecords.res 26:29 +Nothing at that position. Now trying to use completion. +posCursor:[26:29] posNoWhite:[26:28] Found expr:[26:3->26:31] +Pexp_field [26:3->26:27] age:[26:28->26:31] +Completable: Cpath Value[options].extra.superExtra.age +Package opens Pervasives.JsxModules.place holder +ContextPath Value[options].extra.superExtra.age +ContextPath Value[options].extra.superExtra +ContextPath Value[options].extra +ContextPath Value[options] +Path options +ContextPath Value[options]->extra +ContextPath Value[options] +Path options +CPPipe pathFromEnv: found:true +Path NestedRecords.extra +ContextPath Value[options].extra->superExtra +ContextPath Value[options].extra +ContextPath Value[options] +Path options +ContextPath Value[options]->extra +ContextPath Value[options] +Path options +CPPipe pathFromEnv: found:true +Path NestedRecords.extra +CPPipe pathFromEnv: found:true +Path NestedRecords.superExtra +ContextPath Value[options].extra.superExtra->age +ContextPath Value[options].extra.superExtra +ContextPath Value[options].extra +ContextPath Value[options] +Path options +ContextPath Value[options]->extra +ContextPath Value[options] +Path options +CPPipe pathFromEnv: found:true +Path NestedRecords.extra +ContextPath Value[options].extra->superExtra +ContextPath Value[options].extra +ContextPath Value[options] +Path options +ContextPath Value[options]->extra +ContextPath Value[options] +Path options +CPPipe pathFromEnv: found:true +Path NestedRecords.extra +CPPipe pathFromEnv: found:true +Path NestedRecords.superExtra +CPPipe pathFromEnv: found:true +Path NestedRecords.age +Package opens Pervasives.JsxModules.place holder +{"contents": {"kind": "markdown", "value": "```rescript\nint\n```"}} + diff --git a/tests/syntax_tests/data/parsing/errors/typeDef/expected/inlineRecord.res.txt b/tests/syntax_tests/data/parsing/errors/typeDef/expected/inlineRecord.res.txt index 872b3da415..7f2c8f8981 100644 --- a/tests/syntax_tests/data/parsing/errors/typeDef/expected/inlineRecord.res.txt +++ b/tests/syntax_tests/data/parsing/errors/typeDef/expected/inlineRecord.res.txt @@ -11,18 +11,6 @@ An inline record type declaration is only allowed in a variant constructor's declaration - Syntax error! - syntax_tests/data/parsing/errors/typeDef/inlineRecord.res:14:5-10 - - 12 ┆ name: string, - 13 ┆ address: { - 14 ┆ street: string, - 15 ┆ country: string, - 16 ┆ } - - An inline record type declaration is only allowed in a variant constructor's declaration - - Syntax error! syntax_tests/data/parsing/errors/typeDef/inlineRecord.res:19:21-31 @@ -39,10 +27,13 @@ type nonrec entity = | Student of { name: string ; reportCard: < passing: bool ;score: int > } -type nonrec user = +type user.address = { + street: string ; + country: string }[@@inlineRecordDefinition ] +and user = { name: string ; - address: < street: string ;country: string > } + address: ((user.address)[@inlineRecordReference ]) } let make [arity:1](props : < handleClick: Click.t -> unit (a:1) ;value: string > ) From bee630545b351b18c4fa9b05f9cc764447fea5c2 Mon Sep 17 00:00:00 2001 From: Gabriel Nordeborn Date: Sat, 11 Jan 2025 15:28:00 +0100 Subject: [PATCH 03/18] fix reanalyze suggestions --- compiler/syntax/src/res_core.ml | 6 +++--- compiler/syntax/src/res_printer.ml | 6 +++--- 2 files changed, 6 insertions(+), 6 deletions(-) diff --git a/compiler/syntax/src/res_core.ml b/compiler/syntax/src/res_core.ml index c4cbede225..4c474bfa74 100644 --- a/compiler/syntax/src/res_core.ml +++ b/compiler/syntax/src/res_core.ml @@ -5495,12 +5495,12 @@ and parse_type_extension ~params ~attrs ~name p = let constructors = loop p [first] in Ast_helper.Te.mk ~attrs ~params ~priv name constructors -and parse_type_definitions ?current_type_name_path ?inline_types ~attrs ~name +and parse_type_definitions ~current_type_name_path ~inline_types ~attrs ~name ~params ~start_pos p = let type_def = let manifest, priv, kind = - parse_type_equation_and_representation ?current_type_name_path - ?inline_types p + parse_type_equation_and_representation ~current_type_name_path + ~inline_types p in let cstrs = parse_type_constraints p in let loc = mk_loc start_pos p.prev_end_pos in diff --git a/compiler/syntax/src/res_printer.ml b/compiler/syntax/src/res_printer.ml index 5282fd14c5..6674e88e38 100644 --- a/compiler/syntax/src/res_printer.ml +++ b/compiler/syntax/src/res_printer.ml @@ -1624,11 +1624,11 @@ and print_label_declaration ?inline_record_definitions ~state {ptyp_desc = Ptyp_constr ({txt = Lident constr_name}, _)} ) -> ( let record_definition = inline_record_definitions - |> List.find (fun (r : Parsetree.type_declaration) -> + |> List.find_opt (fun (r : Parsetree.type_declaration) -> r.ptype_name.txt = constr_name) in - match record_definition.ptype_kind with - | Ptype_record lds -> + match record_definition with + | Some {ptype_kind = Ptype_record lds} -> print_record_declaration ~inline_record_definitions ~state lds cmt_tbl | _ -> assert false) From c118a04b4540a5b9138e7db4d4723dada15a16b4 Mon Sep 17 00:00:00 2001 From: Gabriel Nordeborn Date: Sat, 11 Jan 2025 20:55:54 +0100 Subject: [PATCH 04/18] allow inline records in constrs --- compiler/syntax/src/res_core.ml | 43 +++++++++++++---- compiler/syntax/src/res_parsetree_viewer.ml | 6 ++- compiler/syntax/src/res_printer.ml | 53 ++++++++++----------- tests/tests/src/nested_records.mjs | 6 +++ tests/tests/src/nested_records.res | 2 + 5 files changed, 72 insertions(+), 38 deletions(-) diff --git a/compiler/syntax/src/res_core.ml b/compiler/syntax/src/res_core.ml index 4c474bfa74..19c2e2fa0d 100644 --- a/compiler/syntax/src/res_core.ml +++ b/compiler/syntax/src/res_core.ml @@ -134,11 +134,15 @@ module ErrorMessages = struct let forbidden_inline_record_declaration = "An inline record type declaration is only allowed in a variant \ - constructor's declaration" + constructor's declaration or nested inside of a record type declaration" let poly_var_int_with_suffix number = "A numeric polymorphic variant cannot be followed by a letter. Did you \ mean `#" ^ number ^ "`?" + + let multiple_inline_record_definitions_at_same_path = + "Only one inline record definition is allowed per record field. This \ + defines more than one inline record." end module InExternal = struct @@ -4071,7 +4075,22 @@ and parse_atomic_typ_expr ?current_type_name_path ?inline_types ~attrs p = | Lbracket -> parse_polymorphic_variant_type ~attrs p | Uident _ | Lident _ -> let constr = parse_value_path p in - let args = parse_type_constructor_args ~constr_name:constr p in + let args = + parse_type_constructor_args ?inline_types ?current_type_name_path + ~constr_name:constr p + in + let number_of_inline_records_in_args = + args + |> List.filter (fun (c : Parsetree.core_type) -> + c.ptyp_attributes + |> List.exists (fun (({txt}, _) : Parsetree.attribute) -> + txt = "res.inlineRecordReference")) + |> List.length + in + if number_of_inline_records_in_args > 1 then + Parser.err ~start_pos ~end_pos:p.prev_end_pos p + (Diagnostics.message + ErrorMessages.multiple_inline_record_definitions_at_same_path); Ast_helper.Typ.constr ~loc:(mk_loc start_pos p.prev_end_pos) ~attrs constr args @@ -4178,7 +4197,7 @@ and parse_record_or_object_type ?current_type_name_path ?inline_types ~attrs p = let lid = Location.mkloc (Longident.Lident inline_type_name) loc in Ast_helper.Typ.constr - ~attrs:[(Location.mknoloc "inlineRecordReference", PStr [])] + ~attrs:[(Location.mknoloc "res.inlineRecordReference", PStr [])] ~loc lid [] | _ -> let () = @@ -4447,15 +4466,17 @@ and parse_tuple_type ~attrs ~first ~start_pos p = let tuple_loc = mk_loc start_pos p.prev_end_pos in Ast_helper.Typ.tuple ~attrs ~loc:tuple_loc typexprs -and parse_type_constructor_arg_region p = - if Grammar.is_typ_expr_start p.Parser.token then Some (parse_typ_expr p) +and parse_type_constructor_arg_region ?inline_types ?current_type_name_path p = + if Grammar.is_typ_expr_start p.Parser.token then + Some (parse_typ_expr ?inline_types ?current_type_name_path p) else if p.token = LessThan then ( Parser.next p; - parse_type_constructor_arg_region p) + parse_type_constructor_arg_region ?inline_types ?current_type_name_path p) else None (* Js.Nullable.value<'a> *) -and parse_type_constructor_args ~constr_name p = +and parse_type_constructor_args ?inline_types ?current_type_name_path + ~constr_name p = let opening = p.Parser.token in let opening_start_pos = p.start_pos in match opening with @@ -4465,7 +4486,11 @@ and parse_type_constructor_args ~constr_name p = let type_args = (* TODO: change Grammar.TypExprList to TypArgList!!! Why did I wrote this? *) parse_comma_delimited_region ~grammar:Grammar.TypExprList - ~closing:GreaterThan ~f:parse_type_constructor_arg_region p + ~closing:GreaterThan + ~f: + (parse_type_constructor_arg_region ?inline_types + ?current_type_name_path) + p in let () = match p.token with @@ -5563,7 +5588,7 @@ and parse_type_definition_or_extension ~attrs p = !inline_types |> List.map (fun (inline_type_name, loc, kind) -> Ast_helper.Type.mk - ~attrs:[(Location.mknoloc "inlineRecordDefinition", PStr [])] + ~attrs:[(Location.mknoloc "res.inlineRecordDefinition", PStr [])] ~loc ~kind {name with txt = inline_type_name}) in diff --git a/compiler/syntax/src/res_parsetree_viewer.ml b/compiler/syntax/src/res_parsetree_viewer.ml index 71696b0845..9413720ff3 100644 --- a/compiler/syntax/src/res_parsetree_viewer.ml +++ b/compiler/syntax/src/res_parsetree_viewer.ml @@ -352,7 +352,8 @@ let has_attributes attrs = | ( { Location.txt = ( "res.braces" | "ns.braces" | "res.iflet" | "res.ternary" - | "res.await" | "res.template" ); + | "res.await" | "res.template" | "res.inlineRecordReference" + | "res.inlineRecordDefinition" ); }, _ ) -> false @@ -547,7 +548,8 @@ let is_printable_attribute attr = | ( { Location.txt = ( "res.iflet" | "res.braces" | "ns.braces" | "JSX" | "res.await" - | "res.template" | "res.ternary" ); + | "res.template" | "res.ternary" | "res.inlineRecordReference" + | "res.inlineRecordDefinition" ); }, _ ) -> false diff --git a/compiler/syntax/src/res_printer.ml b/compiler/syntax/src/res_printer.ml index 6674e88e38..fcd6626347 100644 --- a/compiler/syntax/src/res_printer.ml +++ b/compiler/syntax/src/res_printer.ml @@ -553,12 +553,12 @@ end let is_inline_record_definition attrs = attrs |> List.exists (fun (({txt}, _) : Parsetree.attribute) -> - txt = "inlineRecordDefinition") + txt = "res.inlineRecordDefinition") let is_inline_record_reference attrs = attrs |> List.exists (fun (({txt}, _) : Parsetree.attribute) -> - txt = "inlineRecordReference") + txt = "res.inlineRecordReference") let rec print_structure ~state (s : Parsetree.structure) t = match s with @@ -587,9 +587,7 @@ and print_structure_item ~state (si : Parsetree.structure_item) cmt_tbl = let inline_record_definitions, regular_declarations = type_declarations |> List.partition (fun (td : Parsetree.type_declaration) -> - td.ptype_attributes - |> List.exists (fun (({txt}, _) : Parsetree.attribute) -> - txt = "inlineRecordDefinition")) + is_inline_record_definition td.ptype_attributes) in print_type_declarations ~inline_record_definitions ~state ~rec_flag: @@ -1614,28 +1612,11 @@ and print_label_declaration ?inline_record_definitions ~state name; optional; (if is_dot then Doc.nil else Doc.text ": "); - (match - ( inline_record_definitions, - is_inline_record_reference ld.pld_type.ptyp_attributes, - ld.pld_type ) - with - | ( Some inline_record_definitions, - true, - {ptyp_desc = Ptyp_constr ({txt = Lident constr_name}, _)} ) -> ( - let record_definition = - inline_record_definitions - |> List.find_opt (fun (r : Parsetree.type_declaration) -> - r.ptype_name.txt = constr_name) - in - match record_definition with - | Some {ptype_kind = Ptype_record lds} -> - print_record_declaration ~inline_record_definitions ~state lds - cmt_tbl - | _ -> assert false) - | _ -> print_typ_expr ~state ld.pld_type cmt_tbl); + print_typ_expr ?inline_record_definitions ~state ld.pld_type cmt_tbl; ]) -and print_typ_expr ~(state : State.t) (typ_expr : Parsetree.core_type) cmt_tbl = +and print_typ_expr ?inline_record_definitions ~(state : State.t) + (typ_expr : Parsetree.core_type) cmt_tbl = let print_arrow ~arity typ_expr = let max_arity = match arity with @@ -1740,6 +1721,22 @@ and print_typ_expr ~(state : State.t) (typ_expr : Parsetree.core_type) cmt_tbl = | Ptyp_object (fields, open_flag) -> print_object ~state ~inline:false fields open_flag cmt_tbl | Ptyp_arrow {arity} -> print_arrow ~arity typ_expr + | Ptyp_constr ({txt = Lident inline_record_name}, []) + when is_inline_record_reference typ_expr.ptyp_attributes -> ( + let inline_record_definitions = + match inline_record_definitions with + | None -> [] + | Some v -> v + in + let record_definition = + inline_record_definitions + |> List.find_opt (fun (r : Parsetree.type_declaration) -> + r.ptype_name.txt = inline_record_name) + in + match record_definition with + | Some {ptype_kind = Ptype_record lds} -> + print_record_declaration ~inline_record_definitions ~state lds cmt_tbl + | _ -> assert false) | Ptyp_constr (longident_loc, [{ptyp_desc = Ptyp_object (fields, open_flag)}]) -> (* for foo<{"a": b}>, when the object is long and needs a line break, we @@ -1780,7 +1777,8 @@ and print_typ_expr ~(state : State.t) (typ_expr : Parsetree.core_type) cmt_tbl = ~sep:(Doc.concat [Doc.comma; Doc.line]) (List.map (fun typexpr -> - print_typ_expr ~state typexpr cmt_tbl) + print_typ_expr ?inline_record_definitions ~state + typexpr cmt_tbl) constr_args); ]); Doc.trailing_comma; @@ -1788,7 +1786,8 @@ and print_typ_expr ~(state : State.t) (typ_expr : Parsetree.core_type) cmt_tbl = Doc.greater_than; ])) | Ptyp_tuple types -> print_tuple_type ~state ~inline:false types cmt_tbl - | Ptyp_poly ([], typ) -> print_typ_expr ~state typ cmt_tbl + | Ptyp_poly ([], typ) -> + print_typ_expr ?inline_record_definitions ~state typ cmt_tbl | Ptyp_poly (string_locs, typ) -> Doc.concat [ diff --git a/tests/tests/src/nested_records.mjs b/tests/tests/src/nested_records.mjs index c9e7e9bb63..2664b1d9ae 100644 --- a/tests/tests/src/nested_records.mjs +++ b/tests/tests/src/nested_records.mjs @@ -6,6 +6,12 @@ let options = { name: "test", superExtra: { age: 2222 + }, + otherExtra: { + test: true, + anotherInlined: { + record: true + } } } }; diff --git a/tests/tests/src/nested_records.res b/tests/tests/src/nested_records.res index 92e8945034..ec507c813d 100644 --- a/tests/tests/src/nested_records.res +++ b/tests/tests/src/nested_records.res @@ -2,6 +2,7 @@ type options = { extra?: { name: string, superExtra?: {age: int}, + otherExtra: option<{test: bool, anotherInlined: {record: bool}}>, }, } @@ -11,5 +12,6 @@ let options = { superExtra: { age: 2222, }, + otherExtra: Some({test: true, anotherInlined: {record: true}}), }, } From f1a8a5ca9660572b8600f96d5791abbb9ce343c1 Mon Sep 17 00:00:00 2001 From: Gabriel Nordeborn Date: Thu, 13 Mar 2025 09:49:45 +0100 Subject: [PATCH 05/18] basic inline printing of nested records --- compiler/ml/ctype.ml | 2 + compiler/ml/datarepr.ml | 1 + compiler/ml/predef.ml | 1 + compiler/ml/printtyp.ml | 215 +- compiler/ml/printtyp.mli | 5 +- compiler/ml/subst.ml | 1 + compiler/ml/typecore.ml | 1 + compiler/ml/typedecl.ml | 24 +- compiler/ml/typemod.ml | 1 + compiler/ml/types.ml | 4 + compiler/ml/types.mli | 5 + compiler/syntax/src/res_parsetree_viewer.ml | 3 +- .../package-lock.json | 1 + .../package-lock.json | 1 + .../deadcode/expected/deadcode.txt | 4250 ----------------- .../deadcode/expected/exception.txt | 99 - .../deadcode/package-lock.json | 1 + .../tests/src/NestedRecordsHover.res | 18 + .../tests/src/expected/NestedRecords.res.txt | 28 +- .../src/expected/NestedRecordsHover.res.txt | 3 + 20 files changed, 214 insertions(+), 4450 deletions(-) create mode 100644 tests/analysis_tests/tests/src/NestedRecordsHover.res create mode 100644 tests/analysis_tests/tests/src/expected/NestedRecordsHover.res.txt diff --git a/compiler/ml/ctype.ml b/compiler/ml/ctype.ml index ee6370dba7..e2289f600a 100644 --- a/compiler/ml/ctype.ml +++ b/compiler/ml/ctype.ml @@ -1016,6 +1016,7 @@ let new_declaration newtype manifest = type_attributes = []; type_immediate = false; type_unboxed = unboxed_false_default_false; + type_inlined_types = []; } let instance_constructor ?in_pattern cstr = @@ -4185,6 +4186,7 @@ let nondep_type_decl env mid id is_covariant decl = type_attributes = decl.type_attributes; type_immediate = decl.type_immediate; type_unboxed = decl.type_unboxed; + type_inlined_types = decl.type_inlined_types; } with Not_found -> clear_hash (); diff --git a/compiler/ml/datarepr.ml b/compiler/ml/datarepr.ml index b1c69741cf..df16f61971 100644 --- a/compiler/ml/datarepr.ml +++ b/compiler/ml/datarepr.ml @@ -86,6 +86,7 @@ let constructor_args priv cd_args cd_res path rep = type_attributes = []; type_immediate = false; type_unboxed; + type_inlined_types = []; } in (existentials, [newgenconstr path type_params], Some tdecl) diff --git a/compiler/ml/predef.ml b/compiler/ml/predef.ml index b64e3e23d1..6deed6ffa3 100644 --- a/compiler/ml/predef.ml +++ b/compiler/ml/predef.ml @@ -203,6 +203,7 @@ let decl_abstr = type_attributes = []; type_immediate = false; type_unboxed = unboxed_false_default_false; + type_inlined_types = []; } let decl_abstr_imm = {decl_abstr with type_immediate = true} diff --git a/compiler/ml/printtyp.ml b/compiler/ml/printtyp.ml index 3d20431ba8..49a6ba9226 100644 --- a/compiler/ml/printtyp.ml +++ b/compiler/ml/printtyp.ml @@ -25,6 +25,8 @@ open Types open Btype open Outcometree +type printing_context = {inlined_types: type_inlined_type list} + let print_res_poly_identifier : (string -> string) ref = ref (fun _ -> assert false) @@ -577,9 +579,33 @@ let reset_and_mark_loops_list tyl = reset (); List.iter mark_loops tyl +let filter_params tyl = + let params = + List.fold_left + (fun tyl ty -> + let ty = repr ty in + if List.memq ty tyl then Btype.newgenty (Tsubst ty) :: tyl + else ty :: tyl) + [] tyl + in + List.rev params + +let mark_loops_constructor_arguments = function + | Cstr_tuple l -> List.iter mark_loops l + | Cstr_record l -> List.iter (fun l -> mark_loops l.ld_type) l + +let find_inlined_type name (printing_context : printing_context option) = + match printing_context with + | None -> None + | Some {inlined_types} -> + inlined_types + |> List.find_opt (fun inlined_type -> + match inlined_type with + | Record {type_name} -> type_name = name) + (* Disabled in classic mode when printing an unification error *) -let rec tree_of_typexp sch ty = +let rec tree_of_typexp ?(printing_context : printing_context option) sch ty = let ty = repr ty in let px = proxy ty in if List.mem_assq px !names && not (List.memq px !delayed) then @@ -603,20 +629,32 @@ let rec tree_of_typexp sch ty = match (repr ty1).desc with | Tconstr (path, [ty], _) when Path.same path Predef.path_option -> - tree_of_typexp sch ty + tree_of_typexp ?printing_context sch ty | _ -> Otyp_stuff "" - else tree_of_typexp sch ty1 + else tree_of_typexp ?printing_context sch ty1 in (* should pass arity here? *) - Otyp_arrow (lab, t1, tree_of_typexp sch ty2, arity) + Otyp_arrow (lab, t1, tree_of_typexp ?printing_context sch ty2, arity) in pr_arrow l ty1 ty2 - | Ttuple tyl -> Otyp_tuple (tree_of_typlist sch tyl) + | Ttuple tyl -> Otyp_tuple (tree_of_typlist ?printing_context sch tyl) + | Tconstr (p, _tyl, _abbrev) + when printing_context + |> find_inlined_type (Path.name p) + |> Option.is_some -> ( + match + find_inlined_type (Path.name p) printing_context |> Option.get + with + | Record {labels} -> + Otyp_record (List.map (tree_of_label ?printing_context) labels)) | Tconstr (p, tyl, _abbrev) -> let p', s = best_type_path p in let tyl' = apply_subst s tyl in - if is_nth s && not (tyl' = []) then tree_of_typexp sch (List.hd tyl') - else Otyp_constr (tree_of_path p', tree_of_typlist sch tyl') + if is_nth s && not (tyl' = []) then + tree_of_typexp ?printing_context sch (List.hd tyl') + else + Otyp_constr + (tree_of_path p', tree_of_typlist ?printing_context sch tyl') | Tvariant row -> ( let row = row_repr row in let fields = @@ -636,7 +674,9 @@ let rec tree_of_typexp sch ty = | Some (p, tyl) when namable_row row -> let p', s = best_type_path p in let id = tree_of_path p' in - let args = tree_of_typlist sch (apply_subst s tyl) in + let args = + tree_of_typlist ?printing_context sch (apply_subst s tyl) + in let out_variant = if is_nth s then List.hd args else Otyp_constr (id, args) in @@ -651,29 +691,31 @@ let rec tree_of_typexp sch ty = let non_gen = (not (row.row_closed && all_present)) && is_non_gen sch px in - let fields = List.map (tree_of_row_field sch) fields in + let fields = + List.map (tree_of_row_field ?printing_context sch) fields + in let tags = if all_present then None else Some (List.map fst present) in Otyp_variant (non_gen, Ovar_fields fields, row.row_closed, tags)) - | Tobject (fi, nm) -> tree_of_typobject sch fi !nm - | Tnil | Tfield _ -> tree_of_typobject sch ty None - | Tsubst ty -> tree_of_typexp sch ty + | Tobject (fi, nm) -> tree_of_typobject ?printing_context sch fi !nm + | Tnil | Tfield _ -> tree_of_typobject ?printing_context sch ty None + | Tsubst ty -> tree_of_typexp ?printing_context sch ty | Tlink _ -> fatal_error "Printtyp.tree_of_typexp" - | Tpoly (ty, []) -> tree_of_typexp sch ty + | Tpoly (ty, []) -> tree_of_typexp ?printing_context sch ty | Tpoly (ty, tyl) -> (*let print_names () = List.iter (fun (_, name) -> prerr_string (name ^ " ")) !names; prerr_string "; " in *) let tyl = List.map repr tyl in - if tyl = [] then tree_of_typexp sch ty + if tyl = [] then tree_of_typexp ?printing_context sch ty else let old_delayed = !delayed in (* Make the names delayed, so that the real type is printed once when used as proxy *) List.iter add_delayed tyl; let tl = List.map (name_of_type new_name) tyl in - let tr = Otyp_poly (tl, tree_of_typexp sch ty) in + let tr = Otyp_poly (tl, tree_of_typexp ?printing_context sch ty) in (* Forget names when we leave scope *) remove_names tyl; delayed := old_delayed; @@ -683,7 +725,7 @@ let rec tree_of_typexp sch ty = let n = List.map (fun li -> String.concat "." (Longident.flatten li)) n in - Otyp_module (Path.name p, n, tree_of_typlist sch tyl) + Otyp_module (Path.name p, n, tree_of_typlist ?printing_context sch tyl) in if List.memq px !delayed then delayed := Ext_list.filter !delayed (( != ) px); @@ -692,19 +734,20 @@ let rec tree_of_typexp sch ty = Otyp_alias (pr_typ (), name_of_type new_name px)) else pr_typ () -and tree_of_row_field sch (l, f) = +and tree_of_row_field ?printing_context sch (l, f) = match row_field_repr f with | Rpresent None | Reither (true, [], _, _) -> (l, false, []) - | Rpresent (Some ty) -> (l, false, [tree_of_typexp sch ty]) + | Rpresent (Some ty) -> (l, false, [tree_of_typexp ?printing_context sch ty]) | Reither (c, tyl, _, _) -> if c (* contradiction: constant constructor with an argument *) then - (l, true, tree_of_typlist sch tyl) - else (l, false, tree_of_typlist sch tyl) + (l, true, tree_of_typlist ?printing_context sch tyl) + else (l, false, tree_of_typlist ?printing_context sch tyl) | Rabsent -> (l, false, [] (* actually, an error *)) -and tree_of_typlist sch tyl = List.map (tree_of_typexp sch) tyl +and tree_of_typlist ?printing_context sch tyl = + List.map ((tree_of_typexp ?printing_context) sch) tyl -and tree_of_typobject sch fi nm = +and tree_of_typobject ?printing_context sch fi nm = match nm with | None -> let pr_fields fi = @@ -720,13 +763,13 @@ and tree_of_typobject sch fi nm = let sorted_fields = List.sort (fun (n, _) (n', _) -> String.compare n n') present_fields in - tree_of_typfields sch rest sorted_fields + tree_of_typfields ?printing_context sch rest sorted_fields in let fields, rest = pr_fields fi in Otyp_object (fields, rest) | Some (p, ty :: tyl) -> let non_gen = is_non_gen sch (repr ty) in - let args = tree_of_typlist sch tyl in + let args = tree_of_typlist ?printing_context sch tyl in let p', s = best_type_path p in assert (s = Id); Otyp_class (non_gen, tree_of_path p', args) @@ -734,7 +777,7 @@ and tree_of_typobject sch fi nm = and is_non_gen sch ty = sch && is_Tvar ty && ty.level <> generic_level -and tree_of_typfields sch rest = function +and tree_of_typfields ?printing_context sch rest = function | [] -> let rest = match rest.desc with @@ -745,60 +788,15 @@ and tree_of_typfields sch rest = function in ([], rest) | (s, t) :: l -> - let field = (s, tree_of_typexp sch t) in - let fields, rest = tree_of_typfields sch rest l in + let field = (s, tree_of_typexp ?printing_context sch t) in + let fields, rest = tree_of_typfields ?printing_context sch rest l in (field :: fields, rest) -let typexp sch ppf ty = !Oprint.out_type ppf (tree_of_typexp sch ty) - -let type_expr ppf ty = typexp false ppf ty - -and type_sch ppf ty = typexp true ppf ty - -and type_scheme ppf ty = - reset_and_mark_loops ty; - typexp true ppf ty - -(* Maxence *) -let type_scheme_max ?(b_reset_names = true) ppf ty = - if b_reset_names then reset_names (); - typexp true ppf ty -(* End Maxence *) - -let tree_of_type_scheme ty = - reset_and_mark_loops ty; - tree_of_typexp true ty - -(* Print one type declaration *) - -let tree_of_constraints params = - List.fold_right - (fun ty list -> - let ty' = unalias ty in - if proxy ty != proxy ty' then - let tr = tree_of_typexp true ty in - (tr, tree_of_typexp true ty') :: list - else list) - params [] - -let filter_params tyl = - let params = - List.fold_left - (fun tyl ty -> - let ty = repr ty in - if List.memq ty tyl then Btype.newgenty (Tsubst ty) :: tyl - else ty :: tyl) - [] tyl - in - List.rev params - -let mark_loops_constructor_arguments = function - | Cstr_tuple l -> List.iter mark_loops l - | Cstr_record l -> List.iter (fun l -> mark_loops l.ld_type) l - -let rec tree_of_type_decl id decl = +and tree_of_type_decl id decl = reset (); + let inlined_types = decl.type_inlined_types in + let printing_context = {inlined_types} in let params = filter_params decl.type_params in (match decl.type_manifest with @@ -868,29 +866,33 @@ let rec tree_of_type_decl id decl = in ( Ident.name id, List.map2 - (fun ty cocn -> (type_param (tree_of_typexp false ty), cocn)) + (fun ty cocn -> + (type_param (tree_of_typexp ~printing_context false ty), cocn)) params vari ) in let tree_of_manifest ty1 = match ty_manifest with | None -> ty1 - | Some ty -> Otyp_manifest (tree_of_typexp false ty, ty1) + | Some ty -> Otyp_manifest (tree_of_typexp ~printing_context false ty, ty1) in let name, args = type_defined decl in - let constraints = tree_of_constraints params in + let constraints = tree_of_constraints ~printing_context params in let untagged = ref false in let ty, priv = match decl.type_kind with | Type_abstract -> ( match ty_manifest with | None -> (Otyp_abstract, Public) - | Some ty -> (tree_of_typexp false ty, decl.type_private)) + | Some ty -> (tree_of_typexp ~printing_context false ty, decl.type_private) + ) | Type_variant cstrs -> untagged := Ast_untagged_variants.process_untagged decl.type_attributes; - ( tree_of_manifest (Otyp_sum (List.map tree_of_constructor cstrs)), + ( tree_of_manifest + (Otyp_sum (List.map (tree_of_constructor ~printing_context) cstrs)), decl.type_private ) | Type_record (lbls, _rep) -> - ( tree_of_manifest (Otyp_record (List.map tree_of_label lbls)), + ( tree_of_manifest + (Otyp_record (List.map (tree_of_label ~printing_context) lbls)), decl.type_private ) | Type_open -> (tree_of_manifest Otyp_open, decl.type_private) in @@ -905,11 +907,11 @@ let rec tree_of_type_decl id decl = otype_cstrs = constraints; } -and tree_of_constructor_arguments = function - | Cstr_tuple l -> tree_of_typlist false l +and tree_of_constructor_arguments ?printing_context = function + | Cstr_tuple l -> tree_of_typlist ?printing_context false l | Cstr_record l -> [Otyp_record (List.map tree_of_label l)] -and tree_of_constructor cd = +and tree_of_constructor ?printing_context cd = let name = Ident.name cd.cd_id in let nullary = Ast_untagged_variants.is_nullary_variant cd.cd_args in let repr = @@ -925,25 +927,61 @@ and tree_of_constructor cd = | Some (BigInt s) -> Some (Printf.sprintf "@as(%sn)" s) | Some (Untagged _) (* should never happen *) | None -> None in - let arg () = tree_of_constructor_arguments cd.cd_args in + let arg () = tree_of_constructor_arguments ?printing_context cd.cd_args in match cd.cd_res with | None -> (name, arg (), None, repr) | Some res -> let nm = !names in names := []; - let ret = tree_of_typexp false res in + let ret = tree_of_typexp ?printing_context false res in let args = arg () in names := nm; (name, args, Some ret, repr) -and tree_of_label l = +and tree_of_label ?printing_context l = let opt = l.ld_optional in let typ = match l.ld_type.desc with | Tconstr (p, [t1], _) when opt && Path.same p Predef.path_option -> t1 | _ -> l.ld_type in - (Ident.name l.ld_id, l.ld_mutable = Mutable, opt, tree_of_typexp false typ) + ( Ident.name l.ld_id, + l.ld_mutable = Mutable, + opt, + tree_of_typexp ?printing_context false typ ) + +and tree_of_constraints ?printing_context params = + List.fold_right + (fun ty list -> + let ty' = unalias ty in + if proxy ty != proxy ty' then + let tr = tree_of_typexp ?printing_context true ty in + (tr, tree_of_typexp ?printing_context true ty') :: list + else list) + params [] + +let typexp ?printing_context sch ppf ty = + !Oprint.out_type ppf (tree_of_typexp ?printing_context sch ty) + +let type_expr ppf ty = typexp false ppf ty + +and type_sch ppf ty = typexp true ppf ty + +and type_scheme ppf ty = + reset_and_mark_loops ty; + typexp true ppf ty + +(* Maxence *) +let type_scheme_max ?(b_reset_names = true) ppf ty = + if b_reset_names then reset_names (); + typexp true ppf ty +(* End Maxence *) + +let tree_of_type_scheme ty = + reset_and_mark_loops ty; + tree_of_typexp true ty + +(* Print one type declaration *) let tree_of_type_declaration id decl rs = Osig_type (tree_of_type_decl id decl, tree_of_rec rs) @@ -1055,6 +1093,7 @@ let dummy = type_attributes = []; type_immediate = false; type_unboxed = unboxed_false_default_false; + type_inlined_types = []; } let hide_rec_items = function diff --git a/compiler/ml/printtyp.mli b/compiler/ml/printtyp.mli index a2bf9823fb..7bf59c8947 100644 --- a/compiler/ml/printtyp.mli +++ b/compiler/ml/printtyp.mli @@ -19,6 +19,8 @@ open Format open Types open Outcometree +type printing_context = {inlined_types: type_inlined_type list} + val print_res_poly_identifier : (string -> string) ref val longident : formatter -> Longident.t -> unit val ident : formatter -> Ident.t -> unit @@ -62,7 +64,8 @@ val modtype : formatter -> module_type -> unit val signature : formatter -> signature -> unit val tree_of_modtype_declaration : Ident.t -> modtype_declaration -> out_sig_item val tree_of_signature : Types.signature -> out_sig_item list -val tree_of_typexp : bool -> type_expr -> out_type +val tree_of_typexp : + ?printing_context:printing_context -> bool -> type_expr -> out_type val modtype_declaration : Ident.t -> formatter -> modtype_declaration -> unit val type_expansion : type_expr -> Format.formatter -> type_expr -> unit val prepare_expansion : type_expr * type_expr -> type_expr * type_expr diff --git a/compiler/ml/subst.ml b/compiler/ml/subst.ml index b439b52f11..b30d32c611 100644 --- a/compiler/ml/subst.ml +++ b/compiler/ml/subst.ml @@ -294,6 +294,7 @@ let type_declaration s decl = type_attributes = attrs s decl.type_attributes; type_immediate = decl.type_immediate; type_unboxed = decl.type_unboxed; + type_inlined_types = decl.type_inlined_types; } in cleanup_types (); diff --git a/compiler/ml/typecore.ml b/compiler/ml/typecore.ml index 4d14ddc3f2..44bf252d3a 100644 --- a/compiler/ml/typecore.ml +++ b/compiler/ml/typecore.ml @@ -3104,6 +3104,7 @@ and type_expect_ ?type_clash_context ?in_function ?(recarg = Rejected) env sexp type_attributes = []; type_immediate = false; type_unboxed = unboxed_false_default_false; + type_inlined_types = []; } in Ident.set_current_time ty.level; diff --git a/compiler/ml/typedecl.ml b/compiler/ml/typedecl.ml index f31ae8f7fd..14169f2194 100644 --- a/compiler/ml/typedecl.ml +++ b/compiler/ml/typedecl.ml @@ -107,6 +107,7 @@ let enter_type rec_flag env sdecl id = type_attributes = sdecl.ptype_attributes; type_immediate = false; type_unboxed = unboxed_false_default_false; + type_inlined_types = []; } in Env.add_type ~check:true id decl env @@ -683,6 +684,7 @@ let transl_declaration ~type_record_as_object ~untagged_wfc env sdecl id = type_attributes = sdecl.ptype_attributes; type_immediate = false; type_unboxed = unboxed_status; + type_inlined_types = []; } in @@ -1481,7 +1483,25 @@ let transl_type_decl env rec_flag sdecl_list = let tdecls = List.map2 transl_declaration sdecl_list (List.map id_slots id_list) in - let decls = List.map (fun tdecl -> (tdecl.typ_id, tdecl.typ_type)) tdecls in + let inline_types = + tdecls + |> List.filter (fun tdecl -> + tdecl.typ_attributes + |> List.find_opt (fun (({txt}, _) : Parsetree.attribute) -> + txt = "res.inlineRecordDefinition") + |> Option.is_some) + |> List.filter_map (fun tdecl -> + match tdecl.typ_type.type_kind with + | Type_record (labels, _) -> + Some (Record {type_name = tdecl.typ_name.txt; labels}) + | _ -> None) + in + let decls = + List.map + (fun tdecl -> + (tdecl.typ_id, {tdecl.typ_type with type_inlined_types = inline_types})) + tdecls + in let sdecl_list = Variant_type_spread.expand_dummy_constructor_args sdecl_list decls in @@ -1935,6 +1955,7 @@ let transl_with_constraint env id row_path orig_decl sdecl = type_attributes = sdecl.ptype_attributes; type_immediate = false; type_unboxed; + type_inlined_types = []; } in (match row_path with @@ -1985,6 +2006,7 @@ let abstract_type_decl arity = type_attributes = []; type_immediate = false; type_unboxed = unboxed_false_default_false; + type_inlined_types = []; } in Ctype.end_def (); diff --git a/compiler/ml/typemod.ml b/compiler/ml/typemod.ml index e012a636cc..0419c76e99 100644 --- a/compiler/ml/typemod.ml +++ b/compiler/ml/typemod.ml @@ -335,6 +335,7 @@ let merge_constraint initial_env loc sg constr = type_attributes = []; type_immediate = false; type_unboxed = unboxed_false_default_false; + type_inlined_types = []; } and id_row = Ident.create (s ^ "#row") in let initial_env = Env.add_type ~check:false id_row decl_row initial_env in diff --git a/compiler/ml/types.ml b/compiler/ml/types.ml index 1886f2a727..86ec0614e8 100644 --- a/compiler/ml/types.ml +++ b/compiler/ml/types.ml @@ -134,8 +134,12 @@ type type_declaration = { type_attributes: Parsetree.attributes; type_immediate: bool; type_unboxed: unboxed_status; + type_inlined_types: type_inlined_type list; } +and type_inlined_type = + | Record of {type_name: string; labels: label_declaration list} + and type_kind = | Type_abstract | Type_record of label_declaration list * record_representation diff --git a/compiler/ml/types.mli b/compiler/ml/types.mli index 71c19f629a..a13d64885b 100644 --- a/compiler/ml/types.mli +++ b/compiler/ml/types.mli @@ -262,8 +262,13 @@ type type_declaration = { type_attributes: Parsetree.attributes; type_immediate: bool; (* true iff type should not be a pointer *) type_unboxed: unboxed_status; + type_inlined_types: type_inlined_type list; + (** Representation of inlined types, needed for printing *) } +and type_inlined_type = + | Record of {type_name: string; labels: label_declaration list} + and type_kind = | Type_abstract | Type_record of label_declaration list * record_representation diff --git a/compiler/syntax/src/res_parsetree_viewer.ml b/compiler/syntax/src/res_parsetree_viewer.ml index 9413720ff3..7617b50ec4 100644 --- a/compiler/syntax/src/res_parsetree_viewer.ml +++ b/compiler/syntax/src/res_parsetree_viewer.ml @@ -198,7 +198,8 @@ let filter_parsing_attrs attrs = Location.txt = ( "res.braces" | "ns.braces" | "res.iflet" | "res.ternary" | "res.await" | "res.template" | "res.taggedTemplate" - | "res.patVariantSpread" | "res.dictPattern" ); + | "res.patVariantSpread" | "res.dictPattern" + | "res.inlineRecordReference" | "res.inlineRecordDefinition" ); }, _ ) -> false diff --git a/tests/analysis_tests/tests-generic-jsx-transform/package-lock.json b/tests/analysis_tests/tests-generic-jsx-transform/package-lock.json index 9898a917de..43c32c3717 100644 --- a/tests/analysis_tests/tests-generic-jsx-transform/package-lock.json +++ b/tests/analysis_tests/tests-generic-jsx-transform/package-lock.json @@ -9,6 +9,7 @@ } }, "../../..": { + "name": "rescript", "version": "12.0.0-alpha.10", "hasInstallScript": true, "license": "SEE LICENSE IN LICENSE", diff --git a/tests/analysis_tests/tests-incremental-typechecking/package-lock.json b/tests/analysis_tests/tests-incremental-typechecking/package-lock.json index 307967524e..8168914865 100644 --- a/tests/analysis_tests/tests-incremental-typechecking/package-lock.json +++ b/tests/analysis_tests/tests-incremental-typechecking/package-lock.json @@ -9,6 +9,7 @@ } }, "../../..": { + "name": "rescript", "version": "12.0.0-alpha.10", "hasInstallScript": true, "license": "SEE LICENSE IN LICENSE", diff --git a/tests/analysis_tests/tests-reanalyze/deadcode/expected/deadcode.txt b/tests/analysis_tests/tests-reanalyze/deadcode/expected/deadcode.txt index 99902b72a5..e69de29bb2 100644 --- a/tests/analysis_tests/tests-reanalyze/deadcode/expected/deadcode.txt +++ b/tests/analysis_tests/tests-reanalyze/deadcode/expected/deadcode.txt @@ -1,4250 +0,0 @@ - - Scanning AutoAnnotate.cmt Source:AutoAnnotate.res - addVariantCaseDeclaration R AutoAnnotate.res:1:15 path:+AutoAnnotate.variant - addRecordLabelDeclaration variant AutoAnnotate.res:4:15 path:+AutoAnnotate.record - addRecordLabelDeclaration r2 AutoAnnotate.res:6:11 path:+AutoAnnotate.r2 - addRecordLabelDeclaration r3 AutoAnnotate.res:8:11 path:+AutoAnnotate.r3 - addRecordLabelDeclaration r4 AutoAnnotate.res:10:11 path:+AutoAnnotate.r4 - addVariantCaseDeclaration R2 AutoAnnotate.res:14:2 path:+AutoAnnotate.annotatedVariant - addVariantCaseDeclaration R4 AutoAnnotate.res:15:2 path:+AutoAnnotate.annotatedVariant - Scanning BootloaderResource.cmt Source:BootloaderResource.res - Scanning BucklescriptAnnotations.cmt Source:BucklescriptAnnotations.res - addValueDeclaration +bar BucklescriptAnnotations.res:25:4 path:+BucklescriptAnnotations - addValueDeclaration +f BucklescriptAnnotations.res:26:6 path:+BucklescriptAnnotations - addValueReference BucklescriptAnnotations.res:26:6 --> BucklescriptAnnotations.res:25:11 - addValueReference BucklescriptAnnotations.res:25:4 --> BucklescriptAnnotations.res:26:6 - Scanning ComponentAsProp.cmt Source:ComponentAsProp.res - addValueDeclaration +make ComponentAsProp.res:6:4 path:+ComponentAsProp - addRecordLabelDeclaration title ComponentAsProp.res:6:12 path:+ComponentAsProp.props - addRecordLabelDeclaration description ComponentAsProp.res:6:20 path:+ComponentAsProp.props - addRecordLabelDeclaration button ComponentAsProp.res:6:34 path:+ComponentAsProp.props - addValueReference ComponentAsProp.res:9:6 --> ComponentAsProp.res:6:12 - addValueReference ComponentAsProp.res:10:6 --> ComponentAsProp.res:6:20 - addValueReference ComponentAsProp.res:12:24 --> ComponentAsProp.res:12:13 - addValueReference ComponentAsProp.res:13:16 --> React.res:3:0 - addValueReference ComponentAsProp.res:11:14 --> ComponentAsProp.res:6:34 - addValueReference ComponentAsProp.res:9:6 --> ComponentAsProp.res:6:12 - addValueReference ComponentAsProp.res:10:6 --> ComponentAsProp.res:6:20 - addValueReference ComponentAsProp.res:12:24 --> ComponentAsProp.res:12:13 - addValueReference ComponentAsProp.res:13:16 --> React.res:3:0 - addValueReference ComponentAsProp.res:11:14 --> ComponentAsProp.res:6:34 - addValueReference ComponentAsProp.res:9:6 --> ComponentAsProp.res:6:12 - addValueReference ComponentAsProp.res:10:6 --> ComponentAsProp.res:6:20 - addValueReference ComponentAsProp.res:12:24 --> ComponentAsProp.res:12:13 - addValueReference ComponentAsProp.res:13:16 --> React.res:3:0 - addValueReference ComponentAsProp.res:11:14 --> ComponentAsProp.res:6:34 - addValueReference ComponentAsProp.res:9:6 --> ComponentAsProp.res:6:12 - addValueReference ComponentAsProp.res:10:6 --> ComponentAsProp.res:6:20 - addValueReference ComponentAsProp.res:12:24 --> ComponentAsProp.res:12:13 - addValueReference ComponentAsProp.res:13:16 --> React.res:3:0 - addValueReference ComponentAsProp.res:11:14 --> ComponentAsProp.res:6:34 - addTypeReference _none_:1:-1 --> ComponentAsProp.res:6:12 - addTypeReference _none_:1:-1 --> ComponentAsProp.res:6:20 - addTypeReference _none_:1:-1 --> ComponentAsProp.res:6:34 - Scanning CreateErrorHandler1.cmt Source:CreateErrorHandler1.res - addValueDeclaration +notification CreateErrorHandler1.res:3:6 path:+CreateErrorHandler1.Error1 - addValueReference CreateErrorHandler1.res:3:6 --> CreateErrorHandler1.res:3:21 - addValueReference CreateErrorHandler1.res:3:6 --> CreateErrorHandler1.res:3:21 - addValueReference CreateErrorHandler1.res:8:0 --> ErrorHandler.resi:7:2 - addValueReference ErrorHandler.resi:3:2 --> CreateErrorHandler1.res:3:6 - Scanning CreateErrorHandler2.cmt Source:CreateErrorHandler2.res - addValueDeclaration +notification CreateErrorHandler2.res:3:6 path:+CreateErrorHandler2.Error2 - addValueReference CreateErrorHandler2.res:3:6 --> CreateErrorHandler2.res:3:21 - addValueReference ErrorHandler.resi:3:2 --> CreateErrorHandler2.res:3:6 - Scanning DeadCodeImplementation.cmt Source:DeadCodeImplementation.res - addValueDeclaration +x DeadCodeImplementation.res:2:6 path:+DeadCodeImplementation.M - addValueReference DeadCodeInterface.res:2:2 --> DeadCodeImplementation.res:2:6 - Scanning DeadCodeInterface.cmt Source:DeadCodeInterface.res - Scanning DeadExn.cmt Source:DeadExn.res - addValueDeclaration +eToplevel DeadExn.res:8:4 path:+DeadExn - addValueDeclaration +eInside DeadExn.res:10:4 path:+DeadExn - addExceptionDeclaration Etoplevel DeadExn.res:1:0 path:+DeadExn - addExceptionDeclaration Einside DeadExn.res:4:2 path:+DeadExn.Inside - addExceptionDeclaration DeadE DeadExn.res:7:0 path:+DeadExn - addValueReference DeadExn.res:8:4 --> DeadExn.res:1:0 - addTypeReference DeadExn.res:8:16 --> DeadExn.res:1:0 - addValueReference DeadExn.res:10:4 --> DeadExn.res:4:2 - addTypeReference DeadExn.res:10:14 --> DeadExn.res:4:2 - addValueReference DeadExn.res:12:7 --> DeadExn.res:10:4 - Scanning DeadExn.cmti Source:DeadExn.resi - Scanning DeadRT.cmt Source:DeadRT.res - addValueDeclaration +emitModuleAccessPath DeadRT.res:5:8 path:+DeadRT - addVariantCaseDeclaration Root DeadRT.res:2:2 path:+DeadRT.moduleAccessPath - addVariantCaseDeclaration Kaboom DeadRT.res:3:2 path:+DeadRT.moduleAccessPath - addValueReference DeadRT.res:5:8 --> DeadRT.res:7:9 - addValueReference DeadRT.res:5:8 --> DeadRT.res:5:31 - addTypeReference DeadRT.res:11:16 --> DeadRT.res:3:2 - Scanning DeadRT.cmti Source:DeadRT.resi - addVariantCaseDeclaration Root DeadRT.resi:2:2 path:DeadRT.moduleAccessPath - extendTypeDependencies DeadRT.res:2:2 --> DeadRT.resi:2:2 - extendTypeDependencies DeadRT.resi:2:2 --> DeadRT.res:2:2 - addVariantCaseDeclaration Kaboom DeadRT.resi:3:2 path:DeadRT.moduleAccessPath - extendTypeDependencies DeadRT.res:3:2 --> DeadRT.resi:3:2 - extendTypeDependencies DeadRT.resi:3:2 --> DeadRT.res:3:2 - addTypeReference DeadRT.res:3:2 --> DeadRT.resi:3:2 - addTypeReference DeadRT.resi:3:2 --> DeadRT.res:3:2 - addTypeReference DeadRT.res:2:2 --> DeadRT.resi:2:2 - addTypeReference DeadRT.resi:2:2 --> DeadRT.res:2:2 - Scanning DeadTest.cmt Source:DeadTest.res - addValueDeclaration +fortytwo DeadTest.res:2:4 path:+DeadTest - addValueDeclaration +fortyTwoButExported DeadTest.res:5:4 path:+DeadTest - addValueDeclaration +thisIsUsedOnce DeadTest.res:7:4 path:+DeadTest - addValueDeclaration +thisIsUsedTwice DeadTest.res:10:4 path:+DeadTest - addValueDeclaration +thisIsMarkedDead DeadTest.res:15:4 path:+DeadTest - addValueDeclaration +thisIsKeptAlive DeadTest.res:17:4 path:+DeadTest - addValueDeclaration +thisIsMarkedLive DeadTest.res:20:4 path:+DeadTest - addValueDeclaration +thisIsAlsoMarkedDead DeadTest.res:24:6 path:+DeadTest.Inner - addValueDeclaration +thisSignatureItemIsDead DeadTest.res:28:2 path:+DeadTest.M - addValueDeclaration +a DeadTest.res:36:2 path:+DeadTest.VariantUsedOnlyInImplementation - addValueDeclaration +x DeadTest.res:60:2 path:+DeadTest.MM - addValueDeclaration +y DeadTest.res:61:2 path:+DeadTest.MM - addValueDeclaration +unusedRec DeadTest.res:75:8 path:+DeadTest - addValueDeclaration +split_map DeadTest.res:77:8 path:+DeadTest - addValueDeclaration +rec1 DeadTest.res:82:8 path:+DeadTest - addValueDeclaration +rec2 DeadTest.res:83:4 path:+DeadTest - addValueDeclaration +recWithCallback DeadTest.res:85:8 path:+DeadTest - addValueDeclaration +foo DeadTest.res:90:8 path:+DeadTest - addValueDeclaration +bar DeadTest.res:94:4 path:+DeadTest - addValueDeclaration +withDefaultValue DeadTest.res:96:4 path:+DeadTest - addValueDeclaration +zzz DeadTest.res:104:4 path:+DeadTest - addValueDeclaration +second DeadTest.res:112:4 path:+DeadTest - addValueDeclaration +deadRef DeadTest.res:114:4 path:+DeadTest - addValueDeclaration +make DeadTest.res:117:4 path:+DeadTest - addValueDeclaration +theSideEffectIsLogging DeadTest.res:121:4 path:+DeadTest - addValueDeclaration +stringLengthNoSideEffects DeadTest.res:123:4 path:+DeadTest - addValueDeclaration +globallyLive1 DeadTest.res:128:6 path:+DeadTest.GloobLive - addValueDeclaration +globallyLive2 DeadTest.res:129:6 path:+DeadTest.GloobLive - addValueDeclaration +globallyLive3 DeadTest.res:130:6 path:+DeadTest.GloobLive - addValueDeclaration +funWithInnerVars DeadTest.res:145:4 path:+DeadTest - addValueDeclaration +deadIncorrect DeadTest.res:154:4 path:+DeadTest - addValueDeclaration +ira DeadTest.res:160:4 path:+DeadTest - addValueReference DeadTest.res:1:15 --> ImmutableArray.resi:9:0 - addValueReference DeadTest.res:8:7 --> DeadTest.res:7:4 - addValueReference DeadTest.res:11:7 --> DeadTest.res:10:4 - addValueReference DeadTest.res:12:7 --> DeadTest.res:10:4 - addValueReference DeadTest.res:20:4 --> DeadTest.res:17:4 - addValueDeclaration +thisSignatureItemIsDead DeadTest.res:31:6 path:+DeadTest.M - addVariantCaseDeclaration A DeadTest.res:35:11 path:+DeadTest.VariantUsedOnlyInImplementation.t - addVariantCaseDeclaration A DeadTest.res:38:11 path:+DeadTest.VariantUsedOnlyInImplementation.t - extendTypeDependencies DeadTest.res:38:11 --> DeadTest.res:35:11 - extendTypeDependencies DeadTest.res:35:11 --> DeadTest.res:38:11 - addValueDeclaration +a DeadTest.res:39:6 path:+DeadTest.VariantUsedOnlyInImplementation - addTypeReference DeadTest.res:39:10 --> DeadTest.res:38:11 - addValueReference DeadTest.res:42:17 --> DeadTest.res:36:2 - addValueReference DeadTest.res:42:14 --> DeadTest.res:42:9 - addValueDeclaration +_ DeadTest.res:44:0 path:+DeadTest - addTypeReference DeadTest.res:44:8 --> DeadTypeTest.resi:8:2 - addValueDeclaration +_ DeadTest.res:45:0 path:+DeadTest - addTypeReference DeadTest.res:45:8 --> DeadTypeTest.resi:9:2 - addRecordLabelDeclaration xxx DeadTest.res:48:2 path:+DeadTest.record - addRecordLabelDeclaration yyy DeadTest.res:49:2 path:+DeadTest.record - addValueDeclaration +_ DeadTest.res:52:0 path:+DeadTest - addTypeReference DeadTest.res:52:13 --> DeadTest.res:48:2 - addValueReference DeadTest.res:52:13 --> DeadTest.res:52:8 - addValueDeclaration +_ DeadTest.res:53:0 path:+DeadTest - addValueReference DeadTest.res:53:19 --> DeadTest.res:53:10 - addTypeReference DeadTest.res:53:9 --> DeadTest.res:49:2 - addValueDeclaration +_ DeadTest.res:56:2 path:+DeadTest.UnderscoreInside - addValueDeclaration +y DeadTest.res:63:6 path:+DeadTest.MM - addValueDeclaration +x DeadTest.res:64:6 path:+DeadTest.MM - addValueReference DeadTest.res:64:6 --> DeadTest.res:63:6 - addValueDeclaration +valueOnlyInImplementation DeadTest.res:65:6 path:+DeadTest.MM - addValueReference DeadTest.res:69:9 --> DeadTest.res:60:2 - addValueReference DeadTest.res:73:16 --> DeadValueTest.resi:1:0 - addValueReference DeadTest.res:75:8 --> DeadTest.res:75:8 - addValueReference DeadTest.res:77:8 --> DeadTest.res:77:20 - addValueReference DeadTest.res:77:8 --> DeadTest.res:77:8 - addValueReference DeadTest.res:82:8 --> DeadTest.res:83:4 - addValueReference DeadTest.res:83:4 --> DeadTest.res:82:8 - addValueDeclaration +cb DeadTest.res:86:6 path:+DeadTest - addValueReference DeadTest.res:86:6 --> DeadTest.res:85:8 - addValueReference DeadTest.res:85:8 --> DeadTest.res:86:6 - addValueDeclaration +cb DeadTest.res:91:6 path:+DeadTest - addValueReference DeadTest.res:91:6 --> DeadTest.res:94:4 - addValueReference DeadTest.res:90:8 --> DeadTest.res:91:6 - addValueReference DeadTest.res:94:4 --> DeadTest.res:90:8 - addValueReference DeadTest.res:96:4 --> DeadTest.res:96:42 - addValueReference DeadTest.res:96:4 --> DeadTest.res:96:24 - addValueReference DeadTest.res:96:4 --> DeadTest.res:96:45 - addTypeReference DeadTest.res:98:16 --> DeadRT.resi:2:2 - addValueDeclaration +a1 DeadTest.res:105:6 path:+DeadTest - addValueDeclaration +a2 DeadTest.res:106:6 path:+DeadTest - addValueDeclaration +a3 DeadTest.res:107:6 path:+DeadTest - addValueReference DeadTest.res:110:17 --> DynamicallyLoadedComponent.res:2:4 - addRecordLabelDeclaration s DeadTest.res:117:12 path:+DeadTest.props - addValueReference DeadTest.res:117:32 --> DeadTest.res:117:12 - addValueReference DeadTest.res:117:19 --> React.res:7:0 - addTypeReference _none_:1:-1 --> DeadTest.res:117:12 - addValueReference DeadTest.res:119:16 --> DeadTest.res:117:4 - addVariantCaseDeclaration A DeadTest.res:134:11 path:+DeadTest.WithInclude.t - addVariantCaseDeclaration A DeadTest.res:137:13 path:+DeadTest.WithInclude.T.t - addVariantCaseDeclaration A DeadTest.res:137:13 path:+DeadTest.WithInclude.t - extendTypeDependencies DeadTest.res:137:13 --> DeadTest.res:134:11 - extendTypeDependencies DeadTest.res:134:11 --> DeadTest.res:137:13 - addTypeReference DeadTest.res:142:7 --> DeadTest.res:134:11 - addValueDeclaration +x DeadTest.res:146:6 path:+DeadTest - addValueDeclaration +y DeadTest.res:147:6 path:+DeadTest - addValueReference DeadTest.res:145:4 --> DeadTest.res:146:6 - addValueReference DeadTest.res:145:4 --> DeadTest.res:147:6 - addRecordLabelDeclaration a DeadTest.res:151:11 path:+DeadTest.rc - addValueDeclaration +_ DeadTest.res:156:0 path:+DeadTest - addValueReference DeadTest.res:156:8 --> DeadTest.res:154:4 - addRecordLabelDeclaration IR.a DeadTest.res:158:24 path:+DeadTest.inlineRecord - addRecordLabelDeclaration IR.b DeadTest.res:158:32 path:+DeadTest.inlineRecord - addRecordLabelDeclaration IR.c DeadTest.res:158:40 path:+DeadTest.inlineRecord - addRecordLabelDeclaration IR.d DeadTest.res:158:51 path:+DeadTest.inlineRecord - addRecordLabelDeclaration IR.e DeadTest.res:158:65 path:+DeadTest.inlineRecord - addVariantCaseDeclaration IR DeadTest.res:158:20 path:+DeadTest.inlineRecord - addValueDeclaration +_ DeadTest.res:161:0 path:+DeadTest - addTypeReference DeadTest.res:163:20 --> DeadTest.res:158:20 - addValueReference DeadTest.res:163:27 --> DeadTest.res:160:4 - addTypeReference DeadTest.res:163:35 --> DeadTest.res:158:32 - addValueReference DeadTest.res:163:35 --> DeadTest.res:163:7 - addValueReference DeadTest.res:163:40 --> DeadTest.res:163:8 - addTypeReference DeadTest.res:163:7 --> DeadTest.res:158:40 - addValueReference DeadTest.res:162:9 --> DeadTest.res:161:8 - addRecordLabelDeclaration IR2.a DeadTest.res:167:26 path:+DeadTest.inlineRecord2 - addRecordLabelDeclaration IR2.b DeadTest.res:167:34 path:+DeadTest.inlineRecord2 - addVariantCaseDeclaration IR2 DeadTest.res:167:21 path:+DeadTest.inlineRecord2 - addRecordLabelDeclaration IR3.a DeadTest.res:169:34 path:+DeadTest.inlineRecord3 - addRecordLabelDeclaration IR3.b DeadTest.res:169:42 path:+DeadTest.inlineRecord3 - addVariantCaseDeclaration IR3 DeadTest.res:169:21 path:+DeadTest.inlineRecord3 - addValueReference DeadTest.res:28:2 --> DeadTest.res:31:6 - addValueReference DeadTest.res:36:2 --> DeadTest.res:39:6 - addValueReference DeadTest.res:60:2 --> DeadTest.res:64:6 - addValueReference DeadTest.res:61:2 --> DeadTest.res:63:6 - addTypeReference DeadTest.res:137:13 --> DeadTest.res:134:11 - addTypeReference DeadTest.res:134:11 --> DeadTest.res:137:13 - addTypeReference DeadTest.res:38:11 --> DeadTest.res:35:11 - addTypeReference DeadTest.res:35:11 --> DeadTest.res:38:11 - Scanning DeadTestBlacklist.cmt Source:DeadTestBlacklist.res - addValueDeclaration +x DeadTestBlacklist.res:1:4 path:+DeadTestBlacklist - Scanning DeadTestWithInterface.cmt Source:DeadTestWithInterface.res - addValueDeclaration +x DeadTestWithInterface.res:2:2 path:+DeadTestWithInterface.Ext_buffer - addValueDeclaration +x DeadTestWithInterface.res:4:6 path:+DeadTestWithInterface.Ext_buffer - addValueReference DeadTestWithInterface.res:2:2 --> DeadTestWithInterface.res:4:6 - Interface 0 - Scanning DeadTypeTest.cmt Source:DeadTypeTest.res - addValueDeclaration +a DeadTypeTest.res:4:4 path:+DeadTypeTest - addVariantCaseDeclaration A DeadTypeTest.res:2:2 path:+DeadTypeTest.t - addVariantCaseDeclaration B DeadTypeTest.res:3:2 path:+DeadTypeTest.t - addTypeReference DeadTypeTest.res:4:8 --> DeadTypeTest.res:2:2 - addVariantCaseDeclaration OnlyInImplementation DeadTypeTest.res:7:2 path:+DeadTypeTest.deadType - addVariantCaseDeclaration OnlyInInterface DeadTypeTest.res:8:2 path:+DeadTypeTest.deadType - addVariantCaseDeclaration InBoth DeadTypeTest.res:9:2 path:+DeadTypeTest.deadType - addVariantCaseDeclaration InNeither DeadTypeTest.res:10:2 path:+DeadTypeTest.deadType - addValueDeclaration +_ DeadTypeTest.res:12:0 path:+DeadTypeTest - addTypeReference DeadTypeTest.res:12:8 --> DeadTypeTest.res:7:2 - addValueDeclaration +_ DeadTypeTest.res:13:0 path:+DeadTypeTest - addTypeReference DeadTypeTest.res:13:8 --> DeadTypeTest.res:9:2 - addRecordLabelDeclaration x DeadTypeTest.res:16:15 path:+DeadTypeTest.record - addRecordLabelDeclaration y DeadTypeTest.res:16:23 path:+DeadTypeTest.record - addRecordLabelDeclaration z DeadTypeTest.res:16:34 path:+DeadTypeTest.record - addValueReference DeadTypeTest.resi:4:0 --> DeadTypeTest.res:4:4 - Scanning DeadTypeTest.cmti Source:DeadTypeTest.resi - addVariantCaseDeclaration A DeadTypeTest.resi:2:2 path:DeadTypeTest.t - extendTypeDependencies DeadTypeTest.res:2:2 --> DeadTypeTest.resi:2:2 - extendTypeDependencies DeadTypeTest.resi:2:2 --> DeadTypeTest.res:2:2 - addVariantCaseDeclaration B DeadTypeTest.resi:3:2 path:DeadTypeTest.t - extendTypeDependencies DeadTypeTest.res:3:2 --> DeadTypeTest.resi:3:2 - extendTypeDependencies DeadTypeTest.resi:3:2 --> DeadTypeTest.res:3:2 - addValueDeclaration +a DeadTypeTest.resi:4:0 path:DeadTypeTest - addVariantCaseDeclaration OnlyInImplementation DeadTypeTest.resi:7:2 path:DeadTypeTest.deadType - extendTypeDependencies DeadTypeTest.res:7:2 --> DeadTypeTest.resi:7:2 - extendTypeDependencies DeadTypeTest.resi:7:2 --> DeadTypeTest.res:7:2 - addVariantCaseDeclaration OnlyInInterface DeadTypeTest.resi:8:2 path:DeadTypeTest.deadType - extendTypeDependencies DeadTypeTest.res:8:2 --> DeadTypeTest.resi:8:2 - extendTypeDependencies DeadTypeTest.resi:8:2 --> DeadTypeTest.res:8:2 - addVariantCaseDeclaration InBoth DeadTypeTest.resi:9:2 path:DeadTypeTest.deadType - extendTypeDependencies DeadTypeTest.res:9:2 --> DeadTypeTest.resi:9:2 - extendTypeDependencies DeadTypeTest.resi:9:2 --> DeadTypeTest.res:9:2 - addVariantCaseDeclaration InNeither DeadTypeTest.resi:10:2 path:DeadTypeTest.deadType - extendTypeDependencies DeadTypeTest.res:10:2 --> DeadTypeTest.resi:10:2 - extendTypeDependencies DeadTypeTest.resi:10:2 --> DeadTypeTest.res:10:2 - addTypeReference DeadTypeTest.res:10:2 --> DeadTypeTest.resi:10:2 - addTypeReference DeadTypeTest.resi:10:2 --> DeadTypeTest.res:10:2 - addTypeReference DeadTypeTest.res:9:2 --> DeadTypeTest.resi:9:2 - addTypeReference DeadTypeTest.resi:9:2 --> DeadTypeTest.res:9:2 - addTypeReference DeadTypeTest.res:8:2 --> DeadTypeTest.resi:8:2 - addTypeReference DeadTypeTest.resi:8:2 --> DeadTypeTest.res:8:2 - addTypeReference DeadTypeTest.res:7:2 --> DeadTypeTest.resi:7:2 - addTypeReference DeadTypeTest.resi:7:2 --> DeadTypeTest.res:7:2 - addTypeReference DeadTypeTest.res:3:2 --> DeadTypeTest.resi:3:2 - addTypeReference DeadTypeTest.resi:3:2 --> DeadTypeTest.res:3:2 - addTypeReference DeadTypeTest.res:2:2 --> DeadTypeTest.resi:2:2 - addTypeReference DeadTypeTest.resi:2:2 --> DeadTypeTest.res:2:2 - Scanning DeadValueTest.cmt Source:DeadValueTest.res - addValueDeclaration +valueAlive DeadValueTest.res:1:4 path:+DeadValueTest - addValueDeclaration +valueDead DeadValueTest.res:2:4 path:+DeadValueTest - addValueDeclaration +valueOnlyInImplementation DeadValueTest.res:4:4 path:+DeadValueTest - addValueDeclaration +subList DeadValueTest.res:6:8 path:+DeadValueTest - addValueDeclaration +tail DeadValueTest.res:10:8 path:+DeadValueTest - addValueReference DeadValueTest.res:10:8 --> DeadValueTest.res:6:19 - addValueReference DeadValueTest.res:10:8 --> DeadValueTest.res:6:22 - addValueReference DeadValueTest.res:10:8 --> DeadValueTest.res:9:15 - addValueReference DeadValueTest.res:10:8 --> DeadValueTest.res:6:8 - addValueReference DeadValueTest.res:10:8 --> DeadValueTest.res:6:22 - addValueReference DeadValueTest.res:6:8 --> DeadValueTest.res:9:9 - addValueReference DeadValueTest.res:6:8 --> DeadValueTest.res:10:8 - addValueReference DeadValueTest.res:6:8 --> DeadValueTest.res:10:8 - addValueReference DeadValueTest.res:6:8 --> DeadValueTest.res:6:19 - addValueReference DeadValueTest.res:6:8 --> DeadValueTest.res:6:25 - addValueReference DeadValueTest.resi:1:0 --> DeadValueTest.res:1:4 - addValueReference DeadValueTest.resi:2:0 --> DeadValueTest.res:2:4 - Scanning DeadValueTest.cmti Source:DeadValueTest.resi - addValueDeclaration +valueAlive DeadValueTest.resi:1:0 path:DeadValueTest - addValueDeclaration +valueDead DeadValueTest.resi:2:0 path:DeadValueTest - Scanning Docstrings.cmt Source:Docstrings.res - addValueDeclaration +flat Docstrings.res:2:4 path:+Docstrings - addValueDeclaration +signMessage Docstrings.res:12:4 path:+Docstrings - addValueDeclaration +one Docstrings.res:15:4 path:+Docstrings - addValueDeclaration +two Docstrings.res:18:4 path:+Docstrings - addValueDeclaration +tree Docstrings.res:21:4 path:+Docstrings - addValueDeclaration +oneU Docstrings.res:24:4 path:+Docstrings - addValueDeclaration +twoU Docstrings.res:27:4 path:+Docstrings - addValueDeclaration +treeU Docstrings.res:30:4 path:+Docstrings - addValueDeclaration +useParam Docstrings.res:33:4 path:+Docstrings - addValueDeclaration +useParamU Docstrings.res:36:4 path:+Docstrings - addValueDeclaration +unnamed1 Docstrings.res:39:4 path:+Docstrings - addValueDeclaration +unnamed1U Docstrings.res:42:4 path:+Docstrings - addValueDeclaration +unnamed2 Docstrings.res:45:4 path:+Docstrings - addValueDeclaration +unnamed2U Docstrings.res:48:4 path:+Docstrings - addValueDeclaration +grouped Docstrings.res:51:4 path:+Docstrings - addValueDeclaration +unitArgWithoutConversion Docstrings.res:54:4 path:+Docstrings - addValueDeclaration +unitArgWithoutConversionU Docstrings.res:57:4 path:+Docstrings - addValueDeclaration +unitArgWithConversion Docstrings.res:64:4 path:+Docstrings - addValueDeclaration +unitArgWithConversionU Docstrings.res:67:4 path:+Docstrings - addValueReference Docstrings.res:12:4 --> Docstrings.res:12:21 - addValueReference Docstrings.res:12:4 --> Docstrings.res:12:30 - addValueReference Docstrings.res:15:4 --> Docstrings.res:15:10 - addValueReference Docstrings.res:18:4 --> Docstrings.res:18:11 - addValueReference Docstrings.res:18:4 --> Docstrings.res:18:14 - addValueReference Docstrings.res:21:4 --> Docstrings.res:21:12 - addValueReference Docstrings.res:21:4 --> Docstrings.res:21:15 - addValueReference Docstrings.res:21:4 --> Docstrings.res:21:18 - addValueReference Docstrings.res:24:4 --> Docstrings.res:24:14 - addValueReference Docstrings.res:27:4 --> Docstrings.res:27:14 - addValueReference Docstrings.res:27:4 --> Docstrings.res:27:17 - addValueReference Docstrings.res:30:4 --> Docstrings.res:30:15 - addValueReference Docstrings.res:30:4 --> Docstrings.res:30:18 - addValueReference Docstrings.res:30:4 --> Docstrings.res:30:21 - addValueReference Docstrings.res:33:4 --> Docstrings.res:33:15 - addValueReference Docstrings.res:36:4 --> Docstrings.res:36:19 - addValueReference Docstrings.res:51:4 --> Docstrings.res:51:15 - addValueReference Docstrings.res:51:4 --> Docstrings.res:51:19 - addValueReference Docstrings.res:51:4 --> Docstrings.res:51:23 - addValueReference Docstrings.res:51:4 --> Docstrings.res:51:26 - addValueReference Docstrings.res:51:4 --> Docstrings.res:51:29 - addValueReference Docstrings.res:51:4 --> Docstrings.res:51:32 - addVariantCaseDeclaration A Docstrings.res:60:2 path:+Docstrings.t - addVariantCaseDeclaration B Docstrings.res:61:2 path:+Docstrings.t - addTypeReference Docstrings.res:64:34 --> Docstrings.res:60:2 - addTypeReference Docstrings.res:67:39 --> Docstrings.res:60:2 - Scanning DynamicallyLoadedComponent.cmt Source:DynamicallyLoadedComponent.res - addValueDeclaration +make DynamicallyLoadedComponent.res:2:4 path:+DynamicallyLoadedComponent - addRecordLabelDeclaration s DynamicallyLoadedComponent.res:2:12 path:+DynamicallyLoadedComponent.props - addValueReference DynamicallyLoadedComponent.res:2:32 --> DynamicallyLoadedComponent.res:2:12 - addValueReference DynamicallyLoadedComponent.res:2:19 --> React.res:7:0 - addTypeReference _none_:1:-1 --> DynamicallyLoadedComponent.res:2:12 - Scanning EmptyArray.cmt Source:EmptyArray.res - addValueDeclaration +make EmptyArray.res:5:6 path:+EmptyArray.Z - addValueReference EmptyArray.res:10:9 --> EmptyArray.res:5:6 - Scanning ErrorHandler.cmt Source:ErrorHandler.res - addValueDeclaration +notify ErrorHandler.res:7:6 path:+ErrorHandler.Make - addValueDeclaration +x ErrorHandler.res:12:4 path:+ErrorHandler - addValueReference ErrorHandler.res:7:6 --> ErrorHandler.res:7:15 - addValueReference ErrorHandler.res:7:6 --> ErrorHandler.res:3:2 - addValueReference ErrorHandler.resi:3:2 --> ErrorHandler.res:3:2 - addValueReference ErrorHandler.res:3:2 --> ErrorHandler.resi:3:2 - addValueReference ErrorHandler.resi:7:2 --> ErrorHandler.res:7:6 - addValueReference ErrorHandler.resi:10:0 --> ErrorHandler.res:12:4 - Scanning ErrorHandler.cmti Source:ErrorHandler.resi - addValueDeclaration +notify ErrorHandler.resi:7:2 path:ErrorHandler.Make - addValueDeclaration +x ErrorHandler.resi:10:0 path:ErrorHandler - Scanning EverythingLiveHere.cmt Source:EverythingLiveHere.res - addValueDeclaration +x EverythingLiveHere.res:1:4 path:+EverythingLiveHere - addValueDeclaration +y EverythingLiveHere.res:3:4 path:+EverythingLiveHere - addValueDeclaration +z EverythingLiveHere.res:5:4 path:+EverythingLiveHere - Scanning FirstClassModules.cmt Source:FirstClassModules.res - addValueDeclaration +y FirstClassModules.res:23:6 path:+FirstClassModules.M - addValueDeclaration +k FirstClassModules.res:29:8 path:+FirstClassModules.M.InnerModule2 - addValueDeclaration +k3 FirstClassModules.res:33:8 path:+FirstClassModules.M.InnerModule3 - addValueDeclaration +u FirstClassModules.res:40:8 path:+FirstClassModules.M.Z - addValueDeclaration +x FirstClassModules.res:44:6 path:+FirstClassModules.M - addValueDeclaration +firstClassModule FirstClassModules.res:51:4 path:+FirstClassModules - addValueDeclaration +testConvert FirstClassModules.res:54:4 path:+FirstClassModules - addValueDeclaration +someFunctorAsFunction FirstClassModules.res:65:4 path:+FirstClassModules - addValueReference FirstClassModules.res:33:8 --> FirstClassModules.res:33:13 - addValueReference FirstClassModules.res:54:4 --> FirstClassModules.res:54:19 - addValueDeclaration +ww FirstClassModules.res:61:6 path:+FirstClassModules.SomeFunctor - addValueReference FirstClassModules.res:61:6 --> FirstClassModules.res:20:2 - addValueReference FirstClassModules.res:65:4 --> FirstClassModules.res:65:29 - addValueReference FirstClassModules.res:2:2 --> FirstClassModules.res:44:6 - addValueReference FirstClassModules.res:4:2 --> FirstClassModules.res:43:2 - addValueReference FirstClassModules.res:10:4 --> FirstClassModules.res:29:8 - addValueReference FirstClassModules.res:14:4 --> FirstClassModules.res:33:8 - addValueReference FirstClassModules.res:17:4 --> FirstClassModules.res:37:4 - addValueReference FirstClassModules.res:37:4 --> FirstClassModules.res:17:4 - addValueReference FirstClassModules.res:37:4 --> FirstClassModules.res:40:8 - addValueReference FirstClassModules.res:20:2 --> FirstClassModules.res:23:6 - addValueReference FirstClassModules.res:57:2 --> FirstClassModules.res:61:6 - Scanning FirstClassModulesInterface.cmt Source:FirstClassModulesInterface.res - addValueDeclaration +r FirstClassModulesInterface.res:6:4 path:+FirstClassModulesInterface - addRecordLabelDeclaration x FirstClassModulesInterface.res:2:2 path:+FirstClassModulesInterface.record - addRecordLabelDeclaration y FirstClassModulesInterface.res:3:2 path:+FirstClassModulesInterface.record - addValueReference FirstClassModulesInterface.resi:7:0 --> FirstClassModulesInterface.res:6:4 - addValueReference FirstClassModulesInterface.resi:11:2 --> FirstClassModulesInterface.res:9:2 - addValueReference FirstClassModulesInterface.res:9:2 --> FirstClassModulesInterface.resi:11:2 - Scanning FirstClassModulesInterface.cmti Source:FirstClassModulesInterface.resi - addRecordLabelDeclaration x FirstClassModulesInterface.resi:3:2 path:FirstClassModulesInterface.record - extendTypeDependencies FirstClassModulesInterface.res:2:2 --> FirstClassModulesInterface.resi:3:2 - extendTypeDependencies FirstClassModulesInterface.resi:3:2 --> FirstClassModulesInterface.res:2:2 - addRecordLabelDeclaration y FirstClassModulesInterface.resi:4:2 path:FirstClassModulesInterface.record - extendTypeDependencies FirstClassModulesInterface.res:3:2 --> FirstClassModulesInterface.resi:4:2 - extendTypeDependencies FirstClassModulesInterface.resi:4:2 --> FirstClassModulesInterface.res:3:2 - addValueDeclaration +r FirstClassModulesInterface.resi:7:0 path:FirstClassModulesInterface - addTypeReference FirstClassModulesInterface.res:3:2 --> FirstClassModulesInterface.resi:4:2 - addTypeReference FirstClassModulesInterface.resi:4:2 --> FirstClassModulesInterface.res:3:2 - addTypeReference FirstClassModulesInterface.res:2:2 --> FirstClassModulesInterface.resi:3:2 - addTypeReference FirstClassModulesInterface.resi:3:2 --> FirstClassModulesInterface.res:2:2 - Scanning Hooks.cmt Source:Hooks.res - addValueDeclaration +make Hooks.res:4:4 path:+Hooks - addValueDeclaration +default Hooks.res:25:4 path:+Hooks - addValueDeclaration +make Hooks.res:29:6 path:+Hooks.Inner - addValueDeclaration +make Hooks.res:33:8 path:+Hooks.Inner.Inner2 - addValueDeclaration +make Hooks.res:39:6 path:+Hooks.NoProps - addValueDeclaration +functionWithRenamedArgs Hooks.res:45:4 path:+Hooks - addValueDeclaration +make Hooks.res:63:6 path:+Hooks.RenderPropRequiresConversion - addRecordLabelDeclaration name Hooks.res:1:16 path:+Hooks.vehicle - addRecordLabelDeclaration vehicle Hooks.res:4:12 path:+Hooks.props - addValueReference Hooks.res:5:26 --> React.res:145:0 - addTypeReference Hooks.res:10:29 --> Hooks.res:1:16 - addValueReference Hooks.res:10:29 --> Hooks.res:4:12 - addValueReference Hooks.res:10:75 --> Hooks.res:5:7 - addValueReference Hooks.res:9:7 --> React.res:7:0 - addTypeReference Hooks.res:10:29 --> Hooks.res:1:16 - addValueReference Hooks.res:10:29 --> Hooks.res:4:12 - addValueReference Hooks.res:10:75 --> Hooks.res:5:7 - addValueReference Hooks.res:9:7 --> React.res:7:0 - addValueReference Hooks.res:13:54 --> React.res:7:0 - addValueReference Hooks.res:13:54 --> React.res:7:0 - addValueReference Hooks.res:13:40 --> Hooks.res:5:7 - addValueReference Hooks.res:13:26 --> Hooks.res:5:14 - addValueReference Hooks.res:14:5 --> ImportHooks.res:13:0 - addValueReference Hooks.res:15:7 --> React.res:7:0 - addValueReference Hooks.res:15:32 --> React.res:7:0 - addValueReference Hooks.res:15:7 --> React.res:7:0 - addValueReference Hooks.res:15:32 --> React.res:7:0 - addValueReference Hooks.res:14:76 --> Hooks.res:14:57 - addValueReference Hooks.res:14:63 --> React.res:7:0 - addValueReference Hooks.res:17:5 --> ImportHookDefault.res:6:0 - addValueReference Hooks.res:19:7 --> React.res:7:0 - addValueReference Hooks.res:19:32 --> React.res:7:0 - addValueReference Hooks.res:19:7 --> React.res:7:0 - addValueReference Hooks.res:19:32 --> React.res:7:0 - addValueReference Hooks.res:18:74 --> Hooks.res:18:55 - addValueReference Hooks.res:18:61 --> React.res:7:0 - addTypeReference Hooks.res:10:29 --> Hooks.res:1:16 - addValueReference Hooks.res:10:29 --> Hooks.res:4:12 - addValueReference Hooks.res:10:75 --> Hooks.res:5:7 - addValueReference Hooks.res:9:7 --> React.res:7:0 - addTypeReference Hooks.res:10:29 --> Hooks.res:1:16 - addValueReference Hooks.res:10:29 --> Hooks.res:4:12 - addValueReference Hooks.res:10:75 --> Hooks.res:5:7 - addValueReference Hooks.res:9:7 --> React.res:7:0 - addValueReference Hooks.res:13:54 --> React.res:7:0 - addValueReference Hooks.res:13:54 --> React.res:7:0 - addValueReference Hooks.res:13:40 --> Hooks.res:5:7 - addValueReference Hooks.res:13:26 --> Hooks.res:5:14 - addValueReference Hooks.res:14:5 --> ImportHooks.res:13:0 - addValueReference Hooks.res:15:7 --> React.res:7:0 - addValueReference Hooks.res:15:32 --> React.res:7:0 - addValueReference Hooks.res:15:7 --> React.res:7:0 - addValueReference Hooks.res:15:32 --> React.res:7:0 - addValueReference Hooks.res:14:76 --> Hooks.res:14:57 - addValueReference Hooks.res:14:63 --> React.res:7:0 - addValueReference Hooks.res:17:5 --> ImportHookDefault.res:6:0 - addValueReference Hooks.res:19:7 --> React.res:7:0 - addValueReference Hooks.res:19:32 --> React.res:7:0 - addValueReference Hooks.res:19:7 --> React.res:7:0 - addValueReference Hooks.res:19:32 --> React.res:7:0 - addValueReference Hooks.res:18:74 --> Hooks.res:18:55 - addValueReference Hooks.res:18:61 --> React.res:7:0 - addTypeReference _none_:1:-1 --> Hooks.res:4:12 - addValueReference Hooks.res:25:4 --> Hooks.res:4:4 - addRecordLabelDeclaration vehicle Hooks.res:29:14 path:+Hooks.Inner.props - addRecordLabelDeclaration vehicle Hooks.res:33:16 path:+Hooks.Inner.Inner2.props - addRecordLabelDeclaration vehicle Hooks.res:29:14 path:+Hooks.Inner.props - addTypeReference Hooks.res:29:66 --> Hooks.res:1:16 - addValueReference Hooks.res:29:66 --> Hooks.res:29:14 - addValueReference Hooks.res:29:34 --> React.res:7:0 - addTypeReference Hooks.res:29:66 --> Hooks.res:1:16 - addValueReference Hooks.res:29:66 --> Hooks.res:29:14 - addValueReference Hooks.res:29:34 --> React.res:7:0 - addTypeReference _none_:1:-1 --> Hooks.res:29:14 - addRecordLabelDeclaration vehicle Hooks.res:33:16 path:+Hooks.Inner.Inner2.props - addRecordLabelDeclaration vehicle Hooks.res:33:16 path:+Hooks.Inner.Inner2.props - addTypeReference Hooks.res:33:68 --> Hooks.res:1:16 - addValueReference Hooks.res:33:68 --> Hooks.res:33:16 - addValueReference Hooks.res:33:36 --> React.res:7:0 - addTypeReference Hooks.res:33:68 --> Hooks.res:1:16 - addValueReference Hooks.res:33:68 --> Hooks.res:33:16 - addValueReference Hooks.res:33:36 --> React.res:7:0 - addTypeReference _none_:1:-1 --> Hooks.res:33:16 - addValueReference Hooks.res:39:25 --> React.res:3:0 - addValueReference Hooks.res:39:25 --> React.res:3:0 - addTypeReference Hooks.res:47:2 --> Hooks.res:1:16 - addValueReference Hooks.res:45:4 --> Hooks.res:45:31 - addTypeReference Hooks.res:47:14 --> Hooks.res:1:16 - addValueReference Hooks.res:45:4 --> Hooks.res:45:37 - addValueReference Hooks.res:45:4 --> Hooks.res:45:31 - addValueReference Hooks.res:45:4 --> Hooks.res:45:45 - addRecordLabelDeclaration x Hooks.res:50:10 path:+Hooks.r - addRecordLabelDeclaration renderVehicle Hooks.res:63:14 path:+Hooks.RenderPropRequiresConversion.props - addRecordLabelDeclaration renderVehicle Hooks.res:63:14 path:+Hooks.RenderPropRequiresConversion.props - addValueDeclaration +car Hooks.res:64:8 path:+Hooks.RenderPropRequiresConversion - addValueReference Hooks.res:65:30 --> Hooks.res:64:8 - addValueReference Hooks.res:65:18 --> Hooks.res:65:18 - addValueReference Hooks.res:65:4 --> Hooks.res:63:14 - addTypeReference _none_:1:-1 --> Hooks.res:63:14 - Scanning IgnoreInterface.cmt Source:IgnoreInterface.res - Scanning IgnoreInterface.cmti Source:IgnoreInterface.resi - Scanning ImmutableArray.cmt Source:ImmutableArray.res - addValueDeclaration +fromArray ImmutableArray.res:14:6 path:+ImmutableArray.Array - addValueDeclaration +toArray ImmutableArray.res:16:6 path:+ImmutableArray.Array - addValueDeclaration +length ImmutableArray.res:20:6 path:+ImmutableArray.Array - addValueDeclaration +size ImmutableArray.res:22:6 path:+ImmutableArray.Array - addValueDeclaration +get ImmutableArray.res:24:6 path:+ImmutableArray.Array - addValueDeclaration +getExn ImmutableArray.res:26:6 path:+ImmutableArray.Array - addValueDeclaration +getUnsafe ImmutableArray.res:28:6 path:+ImmutableArray.Array - addValueDeclaration +getUndefined ImmutableArray.res:30:6 path:+ImmutableArray.Array - addValueDeclaration +shuffle ImmutableArray.res:32:6 path:+ImmutableArray.Array - addValueDeclaration +reverse ImmutableArray.res:34:6 path:+ImmutableArray.Array - addValueDeclaration +makeUninitialized ImmutableArray.res:36:6 path:+ImmutableArray.Array - addValueDeclaration +makeUninitializedUnsafe ImmutableArray.res:38:6 path:+ImmutableArray.Array - addValueDeclaration +make ImmutableArray.res:40:6 path:+ImmutableArray.Array - addValueDeclaration +range ImmutableArray.res:42:6 path:+ImmutableArray.Array - addValueDeclaration +rangeBy ImmutableArray.res:44:6 path:+ImmutableArray.Array - addValueDeclaration +makeByU ImmutableArray.res:46:6 path:+ImmutableArray.Array - addValueDeclaration +makeBy ImmutableArray.res:47:6 path:+ImmutableArray.Array - addValueDeclaration +makeByAndShuffleU ImmutableArray.res:49:6 path:+ImmutableArray.Array - addValueDeclaration +makeByAndShuffle ImmutableArray.res:50:6 path:+ImmutableArray.Array - addValueDeclaration +zip ImmutableArray.res:52:6 path:+ImmutableArray.Array - addValueDeclaration +zipByU ImmutableArray.res:54:6 path:+ImmutableArray.Array - addValueDeclaration +zipBy ImmutableArray.res:55:6 path:+ImmutableArray.Array - addValueDeclaration +unzip ImmutableArray.res:57:6 path:+ImmutableArray.Array - addValueDeclaration +concat ImmutableArray.res:59:6 path:+ImmutableArray.Array - addValueDeclaration +concatMany ImmutableArray.res:61:6 path:+ImmutableArray.Array - addValueDeclaration +slice ImmutableArray.res:63:6 path:+ImmutableArray.Array - addValueDeclaration +sliceToEnd ImmutableArray.res:65:6 path:+ImmutableArray.Array - addValueDeclaration +copy ImmutableArray.res:67:6 path:+ImmutableArray.Array - addValueDeclaration +forEachU ImmutableArray.res:69:6 path:+ImmutableArray.Array - addValueDeclaration +forEach ImmutableArray.res:70:6 path:+ImmutableArray.Array - addValueDeclaration +mapU ImmutableArray.res:72:6 path:+ImmutableArray.Array - addValueDeclaration +map ImmutableArray.res:73:6 path:+ImmutableArray.Array - addValueDeclaration +keepWithIndexU ImmutableArray.res:75:6 path:+ImmutableArray.Array - addValueDeclaration +keepWithIndex ImmutableArray.res:76:6 path:+ImmutableArray.Array - addValueDeclaration +keepMapU ImmutableArray.res:78:6 path:+ImmutableArray.Array - addValueDeclaration +keepMap ImmutableArray.res:79:6 path:+ImmutableArray.Array - addValueDeclaration +forEachWithIndexU ImmutableArray.res:81:6 path:+ImmutableArray.Array - addValueDeclaration +forEachWithIndex ImmutableArray.res:82:6 path:+ImmutableArray.Array - addValueDeclaration +mapWithIndexU ImmutableArray.res:84:6 path:+ImmutableArray.Array - addValueDeclaration +mapWithIndex ImmutableArray.res:85:6 path:+ImmutableArray.Array - addValueDeclaration +partitionU ImmutableArray.res:87:6 path:+ImmutableArray.Array - addValueDeclaration +partition ImmutableArray.res:88:6 path:+ImmutableArray.Array - addValueDeclaration +reduceU ImmutableArray.res:90:6 path:+ImmutableArray.Array - addValueDeclaration +reduce ImmutableArray.res:91:6 path:+ImmutableArray.Array - addValueDeclaration +reduceReverseU ImmutableArray.res:93:6 path:+ImmutableArray.Array - addValueDeclaration +reduceReverse ImmutableArray.res:94:6 path:+ImmutableArray.Array - addValueDeclaration +reduceReverse2U ImmutableArray.res:96:6 path:+ImmutableArray.Array - addValueDeclaration +reduceReverse2 ImmutableArray.res:97:6 path:+ImmutableArray.Array - addValueDeclaration +someU ImmutableArray.res:99:6 path:+ImmutableArray.Array - addValueDeclaration +some ImmutableArray.res:100:6 path:+ImmutableArray.Array - addValueDeclaration +everyU ImmutableArray.res:102:6 path:+ImmutableArray.Array - addValueDeclaration +every ImmutableArray.res:103:6 path:+ImmutableArray.Array - addValueDeclaration +every2U ImmutableArray.res:105:6 path:+ImmutableArray.Array - addValueDeclaration +every2 ImmutableArray.res:106:6 path:+ImmutableArray.Array - addValueDeclaration +some2U ImmutableArray.res:108:6 path:+ImmutableArray.Array - addValueDeclaration +some2 ImmutableArray.res:109:6 path:+ImmutableArray.Array - addValueDeclaration +cmpU ImmutableArray.res:111:6 path:+ImmutableArray.Array - addValueDeclaration +cmp ImmutableArray.res:112:6 path:+ImmutableArray.Array - addValueDeclaration +eqU ImmutableArray.res:114:6 path:+ImmutableArray.Array - addValueDeclaration +eq ImmutableArray.res:115:6 path:+ImmutableArray.Array - addValueDeclaration +fromArray ImmutableArray.res:14:6 path:+ImmutableArray - addValueDeclaration +toArray ImmutableArray.res:16:6 path:+ImmutableArray - addValueDeclaration +length ImmutableArray.res:20:6 path:+ImmutableArray - addValueDeclaration +size ImmutableArray.res:22:6 path:+ImmutableArray - addValueDeclaration +get ImmutableArray.res:24:6 path:+ImmutableArray - addValueDeclaration +getExn ImmutableArray.res:26:6 path:+ImmutableArray - addValueDeclaration +getUnsafe ImmutableArray.res:28:6 path:+ImmutableArray - addValueDeclaration +getUndefined ImmutableArray.res:30:6 path:+ImmutableArray - addValueDeclaration +shuffle ImmutableArray.res:32:6 path:+ImmutableArray - addValueDeclaration +reverse ImmutableArray.res:34:6 path:+ImmutableArray - addValueDeclaration +makeUninitialized ImmutableArray.res:36:6 path:+ImmutableArray - addValueDeclaration +makeUninitializedUnsafe ImmutableArray.res:38:6 path:+ImmutableArray - addValueDeclaration +make ImmutableArray.res:40:6 path:+ImmutableArray - addValueDeclaration +range ImmutableArray.res:42:6 path:+ImmutableArray - addValueDeclaration +rangeBy ImmutableArray.res:44:6 path:+ImmutableArray - addValueDeclaration +makeByU ImmutableArray.res:46:6 path:+ImmutableArray - addValueDeclaration +makeBy ImmutableArray.res:47:6 path:+ImmutableArray - addValueDeclaration +makeByAndShuffleU ImmutableArray.res:49:6 path:+ImmutableArray - addValueDeclaration +makeByAndShuffle ImmutableArray.res:50:6 path:+ImmutableArray - addValueDeclaration +zip ImmutableArray.res:52:6 path:+ImmutableArray - addValueDeclaration +zipByU ImmutableArray.res:54:6 path:+ImmutableArray - addValueDeclaration +zipBy ImmutableArray.res:55:6 path:+ImmutableArray - addValueDeclaration +unzip ImmutableArray.res:57:6 path:+ImmutableArray - addValueDeclaration +concat ImmutableArray.res:59:6 path:+ImmutableArray - addValueDeclaration +concatMany ImmutableArray.res:61:6 path:+ImmutableArray - addValueDeclaration +slice ImmutableArray.res:63:6 path:+ImmutableArray - addValueDeclaration +sliceToEnd ImmutableArray.res:65:6 path:+ImmutableArray - addValueDeclaration +copy ImmutableArray.res:67:6 path:+ImmutableArray - addValueDeclaration +forEachU ImmutableArray.res:69:6 path:+ImmutableArray - addValueDeclaration +forEach ImmutableArray.res:70:6 path:+ImmutableArray - addValueDeclaration +mapU ImmutableArray.res:72:6 path:+ImmutableArray - addValueDeclaration +map ImmutableArray.res:73:6 path:+ImmutableArray - addValueDeclaration +keepWithIndexU ImmutableArray.res:75:6 path:+ImmutableArray - addValueDeclaration +keepWithIndex ImmutableArray.res:76:6 path:+ImmutableArray - addValueDeclaration +keepMapU ImmutableArray.res:78:6 path:+ImmutableArray - addValueDeclaration +keepMap ImmutableArray.res:79:6 path:+ImmutableArray - addValueDeclaration +forEachWithIndexU ImmutableArray.res:81:6 path:+ImmutableArray - addValueDeclaration +forEachWithIndex ImmutableArray.res:82:6 path:+ImmutableArray - addValueDeclaration +mapWithIndexU ImmutableArray.res:84:6 path:+ImmutableArray - addValueDeclaration +mapWithIndex ImmutableArray.res:85:6 path:+ImmutableArray - addValueDeclaration +partitionU ImmutableArray.res:87:6 path:+ImmutableArray - addValueDeclaration +partition ImmutableArray.res:88:6 path:+ImmutableArray - addValueDeclaration +reduceU ImmutableArray.res:90:6 path:+ImmutableArray - addValueDeclaration +reduce ImmutableArray.res:91:6 path:+ImmutableArray - addValueDeclaration +reduceReverseU ImmutableArray.res:93:6 path:+ImmutableArray - addValueDeclaration +reduceReverse ImmutableArray.res:94:6 path:+ImmutableArray - addValueDeclaration +reduceReverse2U ImmutableArray.res:96:6 path:+ImmutableArray - addValueDeclaration +reduceReverse2 ImmutableArray.res:97:6 path:+ImmutableArray - addValueDeclaration +someU ImmutableArray.res:99:6 path:+ImmutableArray - addValueDeclaration +some ImmutableArray.res:100:6 path:+ImmutableArray - addValueDeclaration +everyU ImmutableArray.res:102:6 path:+ImmutableArray - addValueDeclaration +every ImmutableArray.res:103:6 path:+ImmutableArray - addValueDeclaration +every2U ImmutableArray.res:105:6 path:+ImmutableArray - addValueDeclaration +every2 ImmutableArray.res:106:6 path:+ImmutableArray - addValueDeclaration +some2U ImmutableArray.res:108:6 path:+ImmutableArray - addValueDeclaration +some2 ImmutableArray.res:109:6 path:+ImmutableArray - addValueDeclaration +cmpU ImmutableArray.res:111:6 path:+ImmutableArray - addValueDeclaration +cmp ImmutableArray.res:112:6 path:+ImmutableArray - addValueDeclaration +eqU ImmutableArray.res:114:6 path:+ImmutableArray - addValueDeclaration +eq ImmutableArray.res:115:6 path:+ImmutableArray - addValueReference ImmutableArray.res:14:6 --> ImmutableArray.res:14:18 - addValueReference ImmutableArray.res:14:6 --> ImmutableArray.res:8:2 - addValueReference ImmutableArray.res:16:6 --> ImmutableArray.res:16:16 - addValueReference ImmutableArray.res:16:6 --> ImmutableArray.res:5:2 - addValueReference ImmutableArray.res:20:6 --> ImmutableArray.res:20:15 - addValueReference ImmutableArray.res:20:6 --> ImmutableArray.res:5:2 - addValueReference ImmutableArray.res:22:6 --> ImmutableArray.res:22:13 - addValueReference ImmutableArray.res:22:6 --> ImmutableArray.res:5:2 - addValueReference ImmutableArray.res:24:6 --> ImmutableArray.res:24:13 - addValueReference ImmutableArray.res:24:6 --> ImmutableArray.res:5:2 - addValueReference ImmutableArray.res:24:6 --> ImmutableArray.res:24:16 - addValueReference ImmutableArray.res:26:6 --> ImmutableArray.res:26:16 - addValueReference ImmutableArray.res:26:6 --> ImmutableArray.res:5:2 - addValueReference ImmutableArray.res:26:6 --> ImmutableArray.res:26:19 - addValueReference ImmutableArray.res:28:6 --> ImmutableArray.res:28:19 - addValueReference ImmutableArray.res:28:6 --> ImmutableArray.res:5:2 - addValueReference ImmutableArray.res:28:6 --> ImmutableArray.res:28:22 - addValueReference ImmutableArray.res:30:6 --> ImmutableArray.res:30:22 - addValueReference ImmutableArray.res:30:6 --> ImmutableArray.res:5:2 - addValueReference ImmutableArray.res:30:6 --> ImmutableArray.res:30:25 - addValueReference ImmutableArray.res:32:6 --> ImmutableArray.res:32:16 - addValueReference ImmutableArray.res:32:6 --> ImmutableArray.res:5:2 - addValueReference ImmutableArray.res:32:6 --> ImmutableArray.res:8:2 - addValueReference ImmutableArray.res:34:6 --> ImmutableArray.res:34:16 - addValueReference ImmutableArray.res:34:6 --> ImmutableArray.res:5:2 - addValueReference ImmutableArray.res:34:6 --> ImmutableArray.res:8:2 - addValueReference ImmutableArray.res:36:6 --> ImmutableArray.res:36:26 - addValueReference ImmutableArray.res:36:6 --> ImmutableArray.res:8:2 - addValueReference ImmutableArray.res:38:6 --> ImmutableArray.res:38:32 - addValueReference ImmutableArray.res:38:6 --> ImmutableArray.res:8:2 - addValueReference ImmutableArray.res:40:6 --> ImmutableArray.res:40:14 - addValueReference ImmutableArray.res:40:6 --> ImmutableArray.res:40:17 - addValueReference ImmutableArray.res:40:6 --> ImmutableArray.res:8:2 - addValueReference ImmutableArray.res:42:6 --> ImmutableArray.res:42:15 - addValueReference ImmutableArray.res:42:6 --> ImmutableArray.res:42:18 - addValueReference ImmutableArray.res:42:6 --> ImmutableArray.res:8:2 - addValueReference ImmutableArray.res:44:6 --> ImmutableArray.res:44:17 - addValueReference ImmutableArray.res:44:6 --> ImmutableArray.res:44:20 - addValueReference ImmutableArray.res:44:6 --> ImmutableArray.res:44:23 - addValueReference ImmutableArray.res:44:6 --> ImmutableArray.res:8:2 - addValueReference ImmutableArray.res:46:6 --> ImmutableArray.res:46:17 - addValueReference ImmutableArray.res:46:6 --> ImmutableArray.res:46:20 - addValueReference ImmutableArray.res:46:6 --> ImmutableArray.res:8:2 - addValueReference ImmutableArray.res:47:6 --> ImmutableArray.res:47:16 - addValueReference ImmutableArray.res:47:6 --> ImmutableArray.res:47:19 - addValueReference ImmutableArray.res:47:6 --> ImmutableArray.res:8:2 - addValueReference ImmutableArray.res:49:6 --> ImmutableArray.res:49:27 - addValueReference ImmutableArray.res:49:6 --> ImmutableArray.res:49:30 - addValueReference ImmutableArray.res:49:6 --> ImmutableArray.res:8:2 - addValueReference ImmutableArray.res:50:6 --> ImmutableArray.res:50:26 - addValueReference ImmutableArray.res:50:6 --> ImmutableArray.res:50:29 - addValueReference ImmutableArray.res:50:6 --> ImmutableArray.res:8:2 - addValueReference ImmutableArray.res:52:6 --> ImmutableArray.res:52:13 - addValueReference ImmutableArray.res:52:6 --> ImmutableArray.res:5:2 - addValueReference ImmutableArray.res:52:6 --> ImmutableArray.res:52:17 - addValueReference ImmutableArray.res:52:6 --> ImmutableArray.res:5:2 - addValueReference ImmutableArray.res:52:6 --> ImmutableArray.res:9:2 - addValueReference ImmutableArray.res:54:6 --> ImmutableArray.res:54:16 - addValueReference ImmutableArray.res:54:6 --> ImmutableArray.res:5:2 - addValueReference ImmutableArray.res:54:6 --> ImmutableArray.res:54:20 - addValueReference ImmutableArray.res:54:6 --> ImmutableArray.res:5:2 - addValueReference ImmutableArray.res:54:6 --> ImmutableArray.res:54:24 - addValueReference ImmutableArray.res:54:6 --> ImmutableArray.res:8:2 - addValueReference ImmutableArray.res:55:6 --> ImmutableArray.res:55:15 - addValueReference ImmutableArray.res:55:6 --> ImmutableArray.res:5:2 - addValueReference ImmutableArray.res:55:6 --> ImmutableArray.res:55:19 - addValueReference ImmutableArray.res:55:6 --> ImmutableArray.res:5:2 - addValueReference ImmutableArray.res:55:6 --> ImmutableArray.res:55:23 - addValueReference ImmutableArray.res:55:6 --> ImmutableArray.res:8:2 - addValueReference ImmutableArray.res:57:6 --> ImmutableArray.res:57:14 - addValueReference ImmutableArray.res:57:6 --> ImmutableArray.res:6:2 - addValueReference ImmutableArray.res:57:6 --> ImmutableArray.res:10:2 - addValueReference ImmutableArray.res:59:6 --> ImmutableArray.res:59:16 - addValueReference ImmutableArray.res:59:6 --> ImmutableArray.res:5:2 - addValueReference ImmutableArray.res:59:6 --> ImmutableArray.res:59:20 - addValueReference ImmutableArray.res:59:6 --> ImmutableArray.res:5:2 - addValueReference ImmutableArray.res:59:6 --> ImmutableArray.res:8:2 - addValueReference ImmutableArray.res:61:6 --> ImmutableArray.res:61:20 - addValueReference ImmutableArray.res:61:6 --> ImmutableArray.res:7:2 - addValueReference ImmutableArray.res:61:6 --> ImmutableArray.res:8:2 - addValueReference ImmutableArray.res:63:6 --> ImmutableArray.res:63:15 - addValueReference ImmutableArray.res:63:6 --> ImmutableArray.res:5:2 - addValueReference ImmutableArray.res:63:6 --> ImmutableArray.res:63:18 - addValueReference ImmutableArray.res:63:6 --> ImmutableArray.res:63:27 - addValueReference ImmutableArray.res:63:6 --> ImmutableArray.res:8:2 - addValueReference ImmutableArray.res:65:6 --> ImmutableArray.res:65:20 - addValueReference ImmutableArray.res:65:6 --> ImmutableArray.res:5:2 - addValueReference ImmutableArray.res:65:6 --> ImmutableArray.res:65:23 - addValueReference ImmutableArray.res:65:6 --> ImmutableArray.res:8:2 - addValueReference ImmutableArray.res:67:6 --> ImmutableArray.res:67:13 - addValueReference ImmutableArray.res:67:6 --> ImmutableArray.res:5:2 - addValueReference ImmutableArray.res:67:6 --> ImmutableArray.res:8:2 - addValueReference ImmutableArray.res:69:6 --> ImmutableArray.res:69:18 - addValueReference ImmutableArray.res:69:6 --> ImmutableArray.res:5:2 - addValueReference ImmutableArray.res:69:6 --> ImmutableArray.res:69:21 - addValueReference ImmutableArray.res:70:6 --> ImmutableArray.res:70:17 - addValueReference ImmutableArray.res:70:6 --> ImmutableArray.res:5:2 - addValueReference ImmutableArray.res:70:6 --> ImmutableArray.res:70:20 - addValueReference ImmutableArray.res:72:6 --> ImmutableArray.res:72:14 - addValueReference ImmutableArray.res:72:6 --> ImmutableArray.res:5:2 - addValueReference ImmutableArray.res:72:6 --> ImmutableArray.res:72:17 - addValueReference ImmutableArray.res:72:6 --> ImmutableArray.res:8:2 - addValueReference ImmutableArray.res:73:6 --> ImmutableArray.res:73:13 - addValueReference ImmutableArray.res:73:6 --> ImmutableArray.res:5:2 - addValueReference ImmutableArray.res:73:6 --> ImmutableArray.res:73:16 - addValueReference ImmutableArray.res:73:6 --> ImmutableArray.res:8:2 - addValueReference ImmutableArray.res:75:6 --> ImmutableArray.res:75:24 - addValueReference ImmutableArray.res:75:6 --> ImmutableArray.res:5:2 - addValueReference ImmutableArray.res:75:6 --> ImmutableArray.res:75:27 - addValueReference ImmutableArray.res:75:6 --> ImmutableArray.res:8:2 - addValueReference ImmutableArray.res:76:6 --> ImmutableArray.res:76:23 - addValueReference ImmutableArray.res:76:6 --> ImmutableArray.res:5:2 - addValueReference ImmutableArray.res:76:6 --> ImmutableArray.res:76:26 - addValueReference ImmutableArray.res:76:6 --> ImmutableArray.res:8:2 - addValueReference ImmutableArray.res:78:6 --> ImmutableArray.res:78:18 - addValueReference ImmutableArray.res:78:6 --> ImmutableArray.res:5:2 - addValueReference ImmutableArray.res:78:6 --> ImmutableArray.res:78:21 - addValueReference ImmutableArray.res:78:6 --> ImmutableArray.res:8:2 - addValueReference ImmutableArray.res:79:6 --> ImmutableArray.res:79:17 - addValueReference ImmutableArray.res:79:6 --> ImmutableArray.res:5:2 - addValueReference ImmutableArray.res:79:6 --> ImmutableArray.res:79:20 - addValueReference ImmutableArray.res:79:6 --> ImmutableArray.res:8:2 - addValueReference ImmutableArray.res:81:6 --> ImmutableArray.res:81:27 - addValueReference ImmutableArray.res:81:6 --> ImmutableArray.res:5:2 - addValueReference ImmutableArray.res:81:6 --> ImmutableArray.res:81:30 - addValueReference ImmutableArray.res:82:6 --> ImmutableArray.res:82:26 - addValueReference ImmutableArray.res:82:6 --> ImmutableArray.res:5:2 - addValueReference ImmutableArray.res:82:6 --> ImmutableArray.res:82:29 - addValueReference ImmutableArray.res:84:6 --> ImmutableArray.res:84:23 - addValueReference ImmutableArray.res:84:6 --> ImmutableArray.res:5:2 - addValueReference ImmutableArray.res:84:6 --> ImmutableArray.res:84:26 - addValueReference ImmutableArray.res:84:6 --> ImmutableArray.res:8:2 - addValueReference ImmutableArray.res:85:6 --> ImmutableArray.res:85:22 - addValueReference ImmutableArray.res:85:6 --> ImmutableArray.res:5:2 - addValueReference ImmutableArray.res:85:6 --> ImmutableArray.res:85:25 - addValueReference ImmutableArray.res:85:6 --> ImmutableArray.res:8:2 - addValueReference ImmutableArray.res:87:6 --> ImmutableArray.res:87:20 - addValueReference ImmutableArray.res:87:6 --> ImmutableArray.res:5:2 - addValueReference ImmutableArray.res:87:6 --> ImmutableArray.res:87:23 - addValueReference ImmutableArray.res:87:6 --> ImmutableArray.res:10:2 - addValueReference ImmutableArray.res:88:6 --> ImmutableArray.res:88:19 - addValueReference ImmutableArray.res:88:6 --> ImmutableArray.res:5:2 - addValueReference ImmutableArray.res:88:6 --> ImmutableArray.res:88:22 - addValueReference ImmutableArray.res:88:6 --> ImmutableArray.res:10:2 - addValueReference ImmutableArray.res:90:6 --> ImmutableArray.res:90:17 - addValueReference ImmutableArray.res:90:6 --> ImmutableArray.res:5:2 - addValueReference ImmutableArray.res:90:6 --> ImmutableArray.res:90:20 - addValueReference ImmutableArray.res:90:6 --> ImmutableArray.res:90:23 - addValueReference ImmutableArray.res:91:6 --> ImmutableArray.res:91:16 - addValueReference ImmutableArray.res:91:6 --> ImmutableArray.res:5:2 - addValueReference ImmutableArray.res:91:6 --> ImmutableArray.res:91:19 - addValueReference ImmutableArray.res:91:6 --> ImmutableArray.res:91:22 - addValueReference ImmutableArray.res:93:6 --> ImmutableArray.res:93:24 - addValueReference ImmutableArray.res:93:6 --> ImmutableArray.res:5:2 - addValueReference ImmutableArray.res:93:6 --> ImmutableArray.res:93:27 - addValueReference ImmutableArray.res:93:6 --> ImmutableArray.res:93:30 - addValueReference ImmutableArray.res:94:6 --> ImmutableArray.res:94:23 - addValueReference ImmutableArray.res:94:6 --> ImmutableArray.res:5:2 - addValueReference ImmutableArray.res:94:6 --> ImmutableArray.res:94:26 - addValueReference ImmutableArray.res:94:6 --> ImmutableArray.res:94:29 - addValueReference ImmutableArray.res:96:6 --> ImmutableArray.res:96:25 - addValueReference ImmutableArray.res:96:6 --> ImmutableArray.res:5:2 - addValueReference ImmutableArray.res:96:6 --> ImmutableArray.res:96:29 - addValueReference ImmutableArray.res:96:6 --> ImmutableArray.res:5:2 - addValueReference ImmutableArray.res:96:6 --> ImmutableArray.res:96:33 - addValueReference ImmutableArray.res:96:6 --> ImmutableArray.res:96:36 - addValueReference ImmutableArray.res:97:6 --> ImmutableArray.res:97:24 - addValueReference ImmutableArray.res:97:6 --> ImmutableArray.res:5:2 - addValueReference ImmutableArray.res:97:6 --> ImmutableArray.res:97:28 - addValueReference ImmutableArray.res:97:6 --> ImmutableArray.res:5:2 - addValueReference ImmutableArray.res:97:6 --> ImmutableArray.res:97:32 - addValueReference ImmutableArray.res:97:6 --> ImmutableArray.res:97:35 - addValueReference ImmutableArray.res:99:6 --> ImmutableArray.res:99:15 - addValueReference ImmutableArray.res:99:6 --> ImmutableArray.res:5:2 - addValueReference ImmutableArray.res:99:6 --> ImmutableArray.res:99:18 - addValueReference ImmutableArray.res:100:6 --> ImmutableArray.res:100:14 - addValueReference ImmutableArray.res:100:6 --> ImmutableArray.res:5:2 - addValueReference ImmutableArray.res:100:6 --> ImmutableArray.res:100:17 - addValueReference ImmutableArray.res:102:6 --> ImmutableArray.res:102:16 - addValueReference ImmutableArray.res:102:6 --> ImmutableArray.res:5:2 - addValueReference ImmutableArray.res:102:6 --> ImmutableArray.res:102:19 - addValueReference ImmutableArray.res:103:6 --> ImmutableArray.res:103:15 - addValueReference ImmutableArray.res:103:6 --> ImmutableArray.res:5:2 - addValueReference ImmutableArray.res:103:6 --> ImmutableArray.res:103:18 - addValueReference ImmutableArray.res:105:6 --> ImmutableArray.res:105:17 - addValueReference ImmutableArray.res:105:6 --> ImmutableArray.res:5:2 - addValueReference ImmutableArray.res:105:6 --> ImmutableArray.res:105:21 - addValueReference ImmutableArray.res:105:6 --> ImmutableArray.res:5:2 - addValueReference ImmutableArray.res:105:6 --> ImmutableArray.res:105:25 - addValueReference ImmutableArray.res:106:6 --> ImmutableArray.res:106:16 - addValueReference ImmutableArray.res:106:6 --> ImmutableArray.res:5:2 - addValueReference ImmutableArray.res:106:6 --> ImmutableArray.res:106:20 - addValueReference ImmutableArray.res:106:6 --> ImmutableArray.res:5:2 - addValueReference ImmutableArray.res:106:6 --> ImmutableArray.res:106:24 - addValueReference ImmutableArray.res:108:6 --> ImmutableArray.res:108:16 - addValueReference ImmutableArray.res:108:6 --> ImmutableArray.res:5:2 - addValueReference ImmutableArray.res:108:6 --> ImmutableArray.res:108:20 - addValueReference ImmutableArray.res:108:6 --> ImmutableArray.res:5:2 - addValueReference ImmutableArray.res:108:6 --> ImmutableArray.res:108:24 - addValueReference ImmutableArray.res:109:6 --> ImmutableArray.res:109:15 - addValueReference ImmutableArray.res:109:6 --> ImmutableArray.res:5:2 - addValueReference ImmutableArray.res:109:6 --> ImmutableArray.res:109:19 - addValueReference ImmutableArray.res:109:6 --> ImmutableArray.res:5:2 - addValueReference ImmutableArray.res:109:6 --> ImmutableArray.res:109:23 - addValueReference ImmutableArray.res:111:6 --> ImmutableArray.res:111:14 - addValueReference ImmutableArray.res:111:6 --> ImmutableArray.res:5:2 - addValueReference ImmutableArray.res:111:6 --> ImmutableArray.res:111:18 - addValueReference ImmutableArray.res:111:6 --> ImmutableArray.res:5:2 - addValueReference ImmutableArray.res:111:6 --> ImmutableArray.res:111:22 - addValueReference ImmutableArray.res:112:6 --> ImmutableArray.res:112:13 - addValueReference ImmutableArray.res:112:6 --> ImmutableArray.res:5:2 - addValueReference ImmutableArray.res:112:6 --> ImmutableArray.res:112:17 - addValueReference ImmutableArray.res:112:6 --> ImmutableArray.res:5:2 - addValueReference ImmutableArray.res:112:6 --> ImmutableArray.res:112:21 - addValueReference ImmutableArray.res:114:6 --> ImmutableArray.res:114:13 - addValueReference ImmutableArray.res:114:6 --> ImmutableArray.res:5:2 - addValueReference ImmutableArray.res:114:6 --> ImmutableArray.res:114:17 - addValueReference ImmutableArray.res:114:6 --> ImmutableArray.res:5:2 - addValueReference ImmutableArray.res:114:6 --> ImmutableArray.res:114:21 - addValueReference ImmutableArray.res:115:6 --> ImmutableArray.res:115:12 - addValueReference ImmutableArray.res:115:6 --> ImmutableArray.res:5:2 - addValueReference ImmutableArray.res:115:6 --> ImmutableArray.res:115:16 - addValueReference ImmutableArray.res:115:6 --> ImmutableArray.res:5:2 - addValueReference ImmutableArray.res:115:6 --> ImmutableArray.res:115:20 - addValueReference ImmutableArray.resi:6:2 --> ImmutableArray.res:24:6 - addValueReference ImmutableArray.resi:9:0 --> ImmutableArray.res:14:6 - addValueReference ImmutableArray.resi:12:0 --> ImmutableArray.res:16:6 - addValueReference ImmutableArray.resi:14:0 --> ImmutableArray.res:20:6 - addValueReference ImmutableArray.resi:17:0 --> ImmutableArray.res:22:6 - addValueReference ImmutableArray.resi:19:0 --> ImmutableArray.res:24:6 - addValueReference ImmutableArray.resi:21:0 --> ImmutableArray.res:26:6 - addValueReference ImmutableArray.resi:23:0 --> ImmutableArray.res:28:6 - addValueReference ImmutableArray.resi:25:0 --> ImmutableArray.res:30:6 - addValueReference ImmutableArray.resi:27:0 --> ImmutableArray.res:32:6 - addValueReference ImmutableArray.resi:29:0 --> ImmutableArray.res:34:6 - addValueReference ImmutableArray.resi:31:0 --> ImmutableArray.res:36:6 - addValueReference ImmutableArray.resi:33:0 --> ImmutableArray.res:38:6 - addValueReference ImmutableArray.resi:35:0 --> ImmutableArray.res:40:6 - addValueReference ImmutableArray.resi:37:0 --> ImmutableArray.res:42:6 - addValueReference ImmutableArray.resi:39:0 --> ImmutableArray.res:44:6 - addValueReference ImmutableArray.resi:41:0 --> ImmutableArray.res:46:6 - addValueReference ImmutableArray.resi:42:0 --> ImmutableArray.res:47:6 - addValueReference ImmutableArray.resi:44:0 --> ImmutableArray.res:49:6 - addValueReference ImmutableArray.resi:45:0 --> ImmutableArray.res:50:6 - addValueReference ImmutableArray.resi:47:0 --> ImmutableArray.res:52:6 - addValueReference ImmutableArray.resi:49:0 --> ImmutableArray.res:54:6 - addValueReference ImmutableArray.resi:50:0 --> ImmutableArray.res:55:6 - addValueReference ImmutableArray.resi:52:0 --> ImmutableArray.res:57:6 - addValueReference ImmutableArray.resi:54:0 --> ImmutableArray.res:59:6 - addValueReference ImmutableArray.resi:56:0 --> ImmutableArray.res:61:6 - addValueReference ImmutableArray.resi:58:0 --> ImmutableArray.res:63:6 - addValueReference ImmutableArray.resi:60:0 --> ImmutableArray.res:65:6 - addValueReference ImmutableArray.resi:62:0 --> ImmutableArray.res:67:6 - addValueReference ImmutableArray.resi:64:0 --> ImmutableArray.res:69:6 - addValueReference ImmutableArray.resi:65:0 --> ImmutableArray.res:70:6 - addValueReference ImmutableArray.resi:67:0 --> ImmutableArray.res:72:6 - addValueReference ImmutableArray.resi:68:0 --> ImmutableArray.res:73:6 - addValueReference ImmutableArray.resi:70:0 --> ImmutableArray.res:75:6 - addValueReference ImmutableArray.resi:71:0 --> ImmutableArray.res:76:6 - addValueReference ImmutableArray.resi:73:0 --> ImmutableArray.res:78:6 - addValueReference ImmutableArray.resi:74:0 --> ImmutableArray.res:79:6 - addValueReference ImmutableArray.resi:76:0 --> ImmutableArray.res:81:6 - addValueReference ImmutableArray.resi:77:0 --> ImmutableArray.res:82:6 - addValueReference ImmutableArray.resi:79:0 --> ImmutableArray.res:84:6 - addValueReference ImmutableArray.resi:80:0 --> ImmutableArray.res:85:6 - addValueReference ImmutableArray.resi:82:0 --> ImmutableArray.res:87:6 - addValueReference ImmutableArray.resi:83:0 --> ImmutableArray.res:88:6 - addValueReference ImmutableArray.resi:85:0 --> ImmutableArray.res:90:6 - addValueReference ImmutableArray.resi:86:0 --> ImmutableArray.res:91:6 - addValueReference ImmutableArray.resi:88:0 --> ImmutableArray.res:93:6 - addValueReference ImmutableArray.resi:89:0 --> ImmutableArray.res:94:6 - addValueReference ImmutableArray.resi:91:0 --> ImmutableArray.res:96:6 - addValueReference ImmutableArray.resi:92:0 --> ImmutableArray.res:97:6 - addValueReference ImmutableArray.resi:94:0 --> ImmutableArray.res:99:6 - addValueReference ImmutableArray.resi:95:0 --> ImmutableArray.res:100:6 - addValueReference ImmutableArray.resi:97:0 --> ImmutableArray.res:102:6 - addValueReference ImmutableArray.resi:98:0 --> ImmutableArray.res:103:6 - addValueReference ImmutableArray.resi:100:0 --> ImmutableArray.res:105:6 - addValueReference ImmutableArray.resi:101:0 --> ImmutableArray.res:106:6 - addValueReference ImmutableArray.resi:103:0 --> ImmutableArray.res:108:6 - addValueReference ImmutableArray.resi:104:0 --> ImmutableArray.res:109:6 - addValueReference ImmutableArray.resi:106:0 --> ImmutableArray.res:111:6 - addValueReference ImmutableArray.resi:107:0 --> ImmutableArray.res:112:6 - addValueReference ImmutableArray.resi:109:0 --> ImmutableArray.res:114:6 - addValueReference ImmutableArray.resi:110:0 --> ImmutableArray.res:115:6 - Scanning ImmutableArray.cmti Source:ImmutableArray.resi - addValueDeclaration +get ImmutableArray.resi:6:2 path:ImmutableArray.Array - addValueDeclaration +fromArray ImmutableArray.resi:9:0 path:ImmutableArray - addValueDeclaration +toArray ImmutableArray.resi:12:0 path:ImmutableArray - addValueDeclaration +length ImmutableArray.resi:14:0 path:ImmutableArray - addValueDeclaration +size ImmutableArray.resi:17:0 path:ImmutableArray - addValueDeclaration +get ImmutableArray.resi:19:0 path:ImmutableArray - addValueDeclaration +getExn ImmutableArray.resi:21:0 path:ImmutableArray - addValueDeclaration +getUnsafe ImmutableArray.resi:23:0 path:ImmutableArray - addValueDeclaration +getUndefined ImmutableArray.resi:25:0 path:ImmutableArray - addValueDeclaration +shuffle ImmutableArray.resi:27:0 path:ImmutableArray - addValueDeclaration +reverse ImmutableArray.resi:29:0 path:ImmutableArray - addValueDeclaration +makeUninitialized ImmutableArray.resi:31:0 path:ImmutableArray - addValueDeclaration +makeUninitializedUnsafe ImmutableArray.resi:33:0 path:ImmutableArray - addValueDeclaration +make ImmutableArray.resi:35:0 path:ImmutableArray - addValueDeclaration +range ImmutableArray.resi:37:0 path:ImmutableArray - addValueDeclaration +rangeBy ImmutableArray.resi:39:0 path:ImmutableArray - addValueDeclaration +makeByU ImmutableArray.resi:41:0 path:ImmutableArray - addValueDeclaration +makeBy ImmutableArray.resi:42:0 path:ImmutableArray - addValueDeclaration +makeByAndShuffleU ImmutableArray.resi:44:0 path:ImmutableArray - addValueDeclaration +makeByAndShuffle ImmutableArray.resi:45:0 path:ImmutableArray - addValueDeclaration +zip ImmutableArray.resi:47:0 path:ImmutableArray - addValueDeclaration +zipByU ImmutableArray.resi:49:0 path:ImmutableArray - addValueDeclaration +zipBy ImmutableArray.resi:50:0 path:ImmutableArray - addValueDeclaration +unzip ImmutableArray.resi:52:0 path:ImmutableArray - addValueDeclaration +concat ImmutableArray.resi:54:0 path:ImmutableArray - addValueDeclaration +concatMany ImmutableArray.resi:56:0 path:ImmutableArray - addValueDeclaration +slice ImmutableArray.resi:58:0 path:ImmutableArray - addValueDeclaration +sliceToEnd ImmutableArray.resi:60:0 path:ImmutableArray - addValueDeclaration +copy ImmutableArray.resi:62:0 path:ImmutableArray - addValueDeclaration +forEachU ImmutableArray.resi:64:0 path:ImmutableArray - addValueDeclaration +forEach ImmutableArray.resi:65:0 path:ImmutableArray - addValueDeclaration +mapU ImmutableArray.resi:67:0 path:ImmutableArray - addValueDeclaration +map ImmutableArray.resi:68:0 path:ImmutableArray - addValueDeclaration +keepWithIndexU ImmutableArray.resi:70:0 path:ImmutableArray - addValueDeclaration +keepWithIndex ImmutableArray.resi:71:0 path:ImmutableArray - addValueDeclaration +keepMapU ImmutableArray.resi:73:0 path:ImmutableArray - addValueDeclaration +keepMap ImmutableArray.resi:74:0 path:ImmutableArray - addValueDeclaration +forEachWithIndexU ImmutableArray.resi:76:0 path:ImmutableArray - addValueDeclaration +forEachWithIndex ImmutableArray.resi:77:0 path:ImmutableArray - addValueDeclaration +mapWithIndexU ImmutableArray.resi:79:0 path:ImmutableArray - addValueDeclaration +mapWithIndex ImmutableArray.resi:80:0 path:ImmutableArray - addValueDeclaration +partitionU ImmutableArray.resi:82:0 path:ImmutableArray - addValueDeclaration +partition ImmutableArray.resi:83:0 path:ImmutableArray - addValueDeclaration +reduceU ImmutableArray.resi:85:0 path:ImmutableArray - addValueDeclaration +reduce ImmutableArray.resi:86:0 path:ImmutableArray - addValueDeclaration +reduceReverseU ImmutableArray.resi:88:0 path:ImmutableArray - addValueDeclaration +reduceReverse ImmutableArray.resi:89:0 path:ImmutableArray - addValueDeclaration +reduceReverse2U ImmutableArray.resi:91:0 path:ImmutableArray - addValueDeclaration +reduceReverse2 ImmutableArray.resi:92:0 path:ImmutableArray - addValueDeclaration +someU ImmutableArray.resi:94:0 path:ImmutableArray - addValueDeclaration +some ImmutableArray.resi:95:0 path:ImmutableArray - addValueDeclaration +everyU ImmutableArray.resi:97:0 path:ImmutableArray - addValueDeclaration +every ImmutableArray.resi:98:0 path:ImmutableArray - addValueDeclaration +every2U ImmutableArray.resi:100:0 path:ImmutableArray - addValueDeclaration +every2 ImmutableArray.resi:101:0 path:ImmutableArray - addValueDeclaration +some2U ImmutableArray.resi:103:0 path:ImmutableArray - addValueDeclaration +some2 ImmutableArray.resi:104:0 path:ImmutableArray - addValueDeclaration +cmpU ImmutableArray.resi:106:0 path:ImmutableArray - addValueDeclaration +cmp ImmutableArray.resi:107:0 path:ImmutableArray - addValueDeclaration +eqU ImmutableArray.resi:109:0 path:ImmutableArray - addValueDeclaration +eq ImmutableArray.resi:110:0 path:ImmutableArray - Scanning ImportHookDefault.cmt Source:ImportHookDefault.res - addValueDeclaration +make ImportHookDefault.res:6:0 path:+ImportHookDefault - addRecordLabelDeclaration name ImportHookDefault.res:2:2 path:+ImportHookDefault.person - addRecordLabelDeclaration age ImportHookDefault.res:3:2 path:+ImportHookDefault.person - addRecordLabelDeclaration person ImportHookDefault.res:7:15 path:+ImportHookDefault.props - addRecordLabelDeclaration children ImportHookDefault.res:9:2 path:+ImportHookDefault.props - addRecordLabelDeclaration renderMe ImportHookDefault.res:11:5 path:+ImportHookDefault.props - Scanning ImportHooks.cmt Source:ImportHooks.res - addValueDeclaration +make ImportHooks.res:13:0 path:+ImportHooks - addValueDeclaration +foo ImportHooks.res:20:0 path:+ImportHooks - addRecordLabelDeclaration name ImportHooks.res:3:2 path:+ImportHooks.person - addRecordLabelDeclaration age ImportHooks.res:4:2 path:+ImportHooks.person - addRecordLabelDeclaration person ImportHooks.res:14:15 path:+ImportHooks.props - addRecordLabelDeclaration children ImportHooks.res:16:2 path:+ImportHooks.props - addRecordLabelDeclaration renderMe ImportHooks.res:18:5 path:+ImportHooks.props - Scanning ImportIndex.cmt Source:ImportIndex.res - addValueDeclaration +make ImportIndex.res:2:0 path:+ImportIndex - addRecordLabelDeclaration method ImportIndex.res:3:50 path:+ImportIndex.props - Scanning ImportJsValue.cmt Source:ImportJsValue.res - addValueDeclaration +round ImportJsValue.res:1:0 path:+ImportJsValue - addValueDeclaration +area ImportJsValue.res:15:0 path:+ImportJsValue - addValueDeclaration +returnMixedArray ImportJsValue.res:23:0 path:+ImportJsValue - addValueDeclaration +roundedNumber ImportJsValue.res:27:4 path:+ImportJsValue - addValueDeclaration +areaValue ImportJsValue.res:30:4 path:+ImportJsValue - addValueDeclaration +getAbs ImportJsValue.res:40:6 path:+ImportJsValue.AbsoluteValue - addValueDeclaration +useGetProp ImportJsValue.res:47:4 path:+ImportJsValue - addValueDeclaration +useGetAbs ImportJsValue.res:50:4 path:+ImportJsValue - addValueDeclaration +useColor ImportJsValue.res:58:0 path:+ImportJsValue - addValueDeclaration +higherOrder ImportJsValue.res:60:0 path:+ImportJsValue - addValueDeclaration +returnedFromHigherOrder ImportJsValue.res:64:4 path:+ImportJsValue - addValueDeclaration +convertVariant ImportJsValue.res:70:0 path:+ImportJsValue - addValueDeclaration +polymorphic ImportJsValue.res:73:0 path:+ImportJsValue - addValueDeclaration +default ImportJsValue.res:75:0 path:+ImportJsValue - addRecordLabelDeclaration x ImportJsValue.res:11:2 path:+ImportJsValue.point - addRecordLabelDeclaration y ImportJsValue.res:12:2 path:+ImportJsValue.point - addValueReference ImportJsValue.res:27:4 --> ImportJsValue.res:1:0 - addValueReference ImportJsValue.res:30:4 --> ImportJsValue.res:15:0 - addValueDeclaration +getAbs ImportJsValue.res:41:8 path:+ImportJsValue.AbsoluteValue - addValueReference ImportJsValue.res:41:8 --> ImportJsValue.res:40:16 - addValueReference ImportJsValue.res:40:6 --> ImportJsValue.res:41:8 - addValueReference ImportJsValue.res:47:4 --> ImportJsValue.res:47:18 - addValueReference ImportJsValue.res:47:4 --> ImportJsValue.res:37:2 - addValueReference ImportJsValue.res:50:4 --> ImportJsValue.res:50:17 - addValueReference ImportJsValue.res:50:4 --> ImportJsValue.res:40:6 - addValueReference ImportJsValue.res:64:4 --> ImportJsValue.res:60:0 - addVariantCaseDeclaration I ImportJsValue.res:67:2 path:+ImportJsValue.variant - addVariantCaseDeclaration S ImportJsValue.res:68:2 path:+ImportJsValue.variant - Scanning ImportMyBanner.cmt Source:ImportMyBanner.res - addValueDeclaration +make ImportMyBanner.res:7:0 path:+ImportMyBanner - addValueDeclaration +make ImportMyBanner.res:12:4 path:+ImportMyBanner - addRecordLabelDeclaration text ImportMyBanner.res:5:16 path:+ImportMyBanner.message - addValueReference ImportMyBanner.res:12:4 --> ImportMyBanner.res:7:0 - Scanning InnerModuleTypes.cmt Source:InnerModuleTypes.res - addVariantCaseDeclaration Foo InnerModuleTypes.res:2:11 path:+InnerModuleTypes.I.t - Scanning InnerModuleTypes.cmti Source:InnerModuleTypes.resi - addVariantCaseDeclaration Foo InnerModuleTypes.resi:2:11 path:InnerModuleTypes.I.t - extendTypeDependencies InnerModuleTypes.res:2:11 --> InnerModuleTypes.resi:2:11 - extendTypeDependencies InnerModuleTypes.resi:2:11 --> InnerModuleTypes.res:2:11 - addTypeReference InnerModuleTypes.res:2:11 --> InnerModuleTypes.resi:2:11 - addTypeReference InnerModuleTypes.resi:2:11 --> InnerModuleTypes.res:2:11 - Scanning JSResource.cmt Source:JSResource.res - Scanning JsxV4.cmt Source:JsxV4.res - addValueDeclaration +make JsxV4.res:4:23 path:+JsxV4.C - addValueReference JsxV4.res:4:36 --> React.res:3:0 - addValueReference JsxV4.res:7:9 --> JsxV4.res:4:23 - Scanning LetPrivate.cmt Source:LetPrivate.res - addValueDeclaration +y LetPrivate.res:7:4 path:+LetPrivate - addValueDeclaration +x LetPrivate.res:3:6 path:+LetPrivate.local_1 - addValueReference LetPrivate.res:7:4 --> LetPrivate.res:3:6 - Scanning ModuleAliases.cmt Source:ModuleAliases.res - addValueDeclaration +testNested ModuleAliases.res:22:4 path:+ModuleAliases - addValueDeclaration +testInner ModuleAliases.res:25:4 path:+ModuleAliases - addValueDeclaration +testInner2 ModuleAliases.res:28:4 path:+ModuleAliases - addRecordLabelDeclaration inner ModuleAliases.res:3:19 path:+ModuleAliases.Outer.Inner.innerT - addRecordLabelDeclaration nested ModuleAliases.res:11:16 path:+ModuleAliases.Outer2.Inner2.InnerNested.t - addValueReference ModuleAliases.res:22:4 --> ModuleAliases.res:22:18 - addValueReference ModuleAliases.res:25:4 --> ModuleAliases.res:25:17 - addValueReference ModuleAliases.res:28:4 --> ModuleAliases.res:28:18 - Scanning ModuleAliases2.cmt Source:ModuleAliases2.res - addValueDeclaration +q ModuleAliases2.res:21:4 path:+ModuleAliases2 - addRecordLabelDeclaration x ModuleAliases2.res:3:2 path:+ModuleAliases2.record - addRecordLabelDeclaration y ModuleAliases2.res:4:2 path:+ModuleAliases2.record - addRecordLabelDeclaration outer ModuleAliases2.res:9:16 path:+ModuleAliases2.Outer.outer - addRecordLabelDeclaration inner ModuleAliases2.res:13:18 path:+ModuleAliases2.Outer.Inner.inner - Scanning ModuleExceptionBug.cmt Source:ModuleExceptionBug.res - addValueDeclaration +customDouble ModuleExceptionBug.res:2:6 path:+ModuleExceptionBug.Dep - addValueDeclaration +ddjdj ModuleExceptionBug.res:7:4 path:+ModuleExceptionBug - addValueReference ModuleExceptionBug.res:2:6 --> ModuleExceptionBug.res:2:21 - addExceptionDeclaration MyOtherException ModuleExceptionBug.res:5:0 path:+ModuleExceptionBug - addValueReference ModuleExceptionBug.res:8:7 --> ModuleExceptionBug.res:7:4 - Scanning NestedModules.cmt Source:NestedModules.res - addValueDeclaration +notNested NestedModules.res:2:4 path:+NestedModules - addValueDeclaration +theAnswer NestedModules.res:6:6 path:+NestedModules.Universe - addValueDeclaration +notExported NestedModules.res:8:6 path:+NestedModules.Universe - addValueDeclaration +x NestedModules.res:14:8 path:+NestedModules.Universe.Nested2 - addValueDeclaration +nested2Value NestedModules.res:17:8 path:+NestedModules.Universe.Nested2 - addValueDeclaration +y NestedModules.res:19:8 path:+NestedModules.Universe.Nested2 - addValueDeclaration +x NestedModules.res:25:10 path:+NestedModules.Universe.Nested2.Nested3 - addValueDeclaration +y NestedModules.res:26:10 path:+NestedModules.Universe.Nested2.Nested3 - addValueDeclaration +z NestedModules.res:27:10 path:+NestedModules.Universe.Nested2.Nested3 - addValueDeclaration +w NestedModules.res:28:10 path:+NestedModules.Universe.Nested2.Nested3 - addValueDeclaration +nested3Value NestedModules.res:34:10 path:+NestedModules.Universe.Nested2.Nested3 - addValueDeclaration +nested3Function NestedModules.res:37:10 path:+NestedModules.Universe.Nested2.Nested3 - addValueDeclaration +nested2Function NestedModules.res:41:8 path:+NestedModules.Universe.Nested2 - addValueDeclaration +someString NestedModules.res:50:6 path:+NestedModules.Universe - addValueReference NestedModules.res:37:10 --> NestedModules.res:37:29 - addValueReference NestedModules.res:41:8 --> NestedModules.res:41:27 - addVariantCaseDeclaration A NestedModules.res:46:4 path:+NestedModules.Universe.variant - addVariantCaseDeclaration B NestedModules.res:47:4 path:+NestedModules.Universe.variant - Scanning NestedModulesInSignature.cmt Source:NestedModulesInSignature.res - addValueDeclaration +theAnswer NestedModulesInSignature.res:2:6 path:+NestedModulesInSignature.Universe - addValueReference NestedModulesInSignature.resi:2:2 --> NestedModulesInSignature.res:2:6 - Scanning NestedModulesInSignature.cmti Source:NestedModulesInSignature.resi - addValueDeclaration +theAnswer NestedModulesInSignature.resi:2:2 path:NestedModulesInSignature.Universe - Scanning Newsyntax.cmt Source:Newsyntax.res - addValueDeclaration +x Newsyntax.res:1:4 path:+Newsyntax - addValueDeclaration +y Newsyntax.res:3:4 path:+Newsyntax - addRecordLabelDeclaration xxx Newsyntax.res:6:2 path:+Newsyntax.record - addRecordLabelDeclaration yyy Newsyntax.res:7:2 path:+Newsyntax.record - addVariantCaseDeclaration A Newsyntax.res:10:15 path:+Newsyntax.variant - addVariantCaseDeclaration B Newsyntax.res:10:17 path:+Newsyntax.variant - addVariantCaseDeclaration C Newsyntax.res:10:25 path:+Newsyntax.variant - addRecordLabelDeclaration xx Newsyntax.res:12:16 path:+Newsyntax.record2 - addRecordLabelDeclaration yy Newsyntax.res:12:23 path:+Newsyntax.record2 - Scanning Newton.cmt Source:Newton.res - addValueDeclaration +- Newton.res:1:4 path:+Newton - addValueDeclaration ++ Newton.res:2:4 path:+Newton - addValueDeclaration +* Newton.res:3:4 path:+Newton - addValueDeclaration +/ Newton.res:4:4 path:+Newton - addValueDeclaration +newton Newton.res:6:4 path:+Newton - addValueDeclaration +f Newton.res:25:4 path:+Newton - addValueDeclaration +fPrimed Newton.res:27:4 path:+Newton - addValueDeclaration +result Newton.res:29:4 path:+Newton - addValueDeclaration +current Newton.res:7:6 path:+Newton - addValueReference Newton.res:7:6 --> Newton.res:6:28 - addValueDeclaration +iterateMore Newton.res:8:6 path:+Newton - addValueDeclaration +delta Newton.res:9:8 path:+Newton - addValueReference Newton.res:9:8 --> Newton.res:8:21 - addValueReference Newton.res:9:8 --> Newton.res:8:31 - addValueReference Newton.res:9:8 --> Newton.res:1:4 - addValueReference Newton.res:9:8 --> Newton.res:8:31 - addValueReference Newton.res:9:8 --> Newton.res:8:21 - addValueReference Newton.res:9:8 --> Newton.res:1:4 - addValueReference Newton.res:9:8 --> Newton.res:8:31 - addValueReference Newton.res:9:8 --> Newton.res:8:21 - addValueReference Newton.res:8:6 --> Newton.res:9:8 - addValueReference Newton.res:8:6 --> Newton.res:6:38 - addValueReference Newton.res:8:6 --> Newton.res:7:6 - addValueReference Newton.res:8:6 --> Newton.res:8:31 - addValueDeclaration +loop Newton.res:14:10 path:+Newton - addValueDeclaration +previous Newton.res:15:8 path:+Newton - addValueReference Newton.res:15:8 --> Newton.res:7:6 - addValueDeclaration +next Newton.res:16:8 path:+Newton - addValueReference Newton.res:16:8 --> Newton.res:15:8 - addValueReference Newton.res:16:8 --> Newton.res:15:8 - addValueReference Newton.res:16:8 --> Newton.res:6:14 - addValueReference Newton.res:16:8 --> Newton.res:15:8 - addValueReference Newton.res:16:8 --> Newton.res:6:18 - addValueReference Newton.res:16:8 --> Newton.res:4:4 - addValueReference Newton.res:16:8 --> Newton.res:1:4 - addValueReference Newton.res:14:10 --> Newton.res:7:6 - addValueReference Newton.res:14:10 --> Newton.res:14:10 - addValueReference Newton.res:14:10 --> Newton.res:15:8 - addValueReference Newton.res:14:10 --> Newton.res:16:8 - addValueReference Newton.res:14:10 --> Newton.res:8:6 - addValueReference Newton.res:6:4 --> Newton.res:14:10 - addValueReference Newton.res:25:4 --> Newton.res:25:8 - addValueReference Newton.res:25:4 --> Newton.res:25:8 - addValueReference Newton.res:25:4 --> Newton.res:3:4 - addValueReference Newton.res:25:4 --> Newton.res:25:8 - addValueReference Newton.res:25:4 --> Newton.res:3:4 - addValueReference Newton.res:25:4 --> Newton.res:25:8 - addValueReference Newton.res:25:4 --> Newton.res:3:4 - addValueReference Newton.res:25:4 --> Newton.res:25:8 - addValueReference Newton.res:25:4 --> Newton.res:3:4 - addValueReference Newton.res:25:4 --> Newton.res:1:4 - addValueReference Newton.res:25:4 --> Newton.res:25:8 - addValueReference Newton.res:25:4 --> Newton.res:3:4 - addValueReference Newton.res:25:4 --> Newton.res:1:4 - addValueReference Newton.res:25:4 --> Newton.res:2:4 - addValueReference Newton.res:27:4 --> Newton.res:27:14 - addValueReference Newton.res:27:4 --> Newton.res:3:4 - addValueReference Newton.res:27:4 --> Newton.res:27:14 - addValueReference Newton.res:27:4 --> Newton.res:3:4 - addValueReference Newton.res:27:4 --> Newton.res:27:14 - addValueReference Newton.res:27:4 --> Newton.res:3:4 - addValueReference Newton.res:27:4 --> Newton.res:1:4 - addValueReference Newton.res:27:4 --> Newton.res:1:4 - addValueReference Newton.res:29:4 --> Newton.res:25:4 - addValueReference Newton.res:29:4 --> Newton.res:27:4 - addValueReference Newton.res:29:4 --> Newton.res:6:4 - addValueReference Newton.res:31:8 --> Newton.res:29:4 - addValueReference Newton.res:31:18 --> Newton.res:29:4 - addValueReference Newton.res:31:16 --> Newton.res:25:4 - Scanning Opaque.cmt Source:Opaque.res - addValueDeclaration +noConversion Opaque.res:5:4 path:+Opaque - addValueDeclaration +testConvertNestedRecordFromOtherFile Opaque.res:11:4 path:+Opaque - addVariantCaseDeclaration A Opaque.res:2:25 path:+Opaque.opaqueFromRecords - addValueReference Opaque.res:5:4 --> Opaque.res:5:20 - addValueReference Opaque.res:11:4 --> Opaque.res:11:44 - Scanning OptArg.cmt Source:OptArg.res - addValueDeclaration +foo OptArg.res:1:4 path:+OptArg - addValueDeclaration +bar OptArg.res:3:4 path:+OptArg - addValueDeclaration +threeArgs OptArg.res:9:4 path:+OptArg - addValueDeclaration +twoArgs OptArg.res:14:4 path:+OptArg - addValueDeclaration +oneArg OptArg.res:18:4 path:+OptArg - addValueDeclaration +wrapOneArg OptArg.res:20:4 path:+OptArg - addValueDeclaration +fourArgs OptArg.res:24:4 path:+OptArg - addValueDeclaration +wrapfourArgs OptArg.res:26:4 path:+OptArg - addValueReference OptArg.res:1:4 --> OptArg.res:1:14 - addValueReference OptArg.res:1:4 --> OptArg.res:1:20 - addValueReference OptArg.res:1:4 --> OptArg.res:1:26 - addValueReference OptArg.res:1:4 --> OptArg.res:1:11 - addValueReference OptArg.res:1:4 --> OptArg.res:1:17 - addValueReference OptArg.res:1:4 --> OptArg.res:1:23 - addValueReference OptArg.res:1:4 --> OptArg.res:1:29 - addValueReference OptArg.res:3:4 --> OptArg.res:3:17 - addValueReference OptArg.res:3:4 --> OptArg.res:3:27 - DeadOptionalArgs.addReferences foo called with optional argNames:x argNamesMaybe: OptArg.res:5:7 - addValueReference OptArg.res:5:7 --> OptArg.res:1:4 - DeadOptionalArgs.addReferences bar called with optional argNames: argNamesMaybe: OptArg.res:7:7 - addValueReference OptArg.res:7:7 --> OptArg.res:3:4 - addValueReference OptArg.res:9:4 --> OptArg.res:9:20 - addValueReference OptArg.res:9:4 --> OptArg.res:9:26 - addValueReference OptArg.res:9:4 --> OptArg.res:9:32 - addValueReference OptArg.res:9:4 --> OptArg.res:9:17 - addValueReference OptArg.res:9:4 --> OptArg.res:9:23 - addValueReference OptArg.res:9:4 --> OptArg.res:9:29 - addValueReference OptArg.res:9:4 --> OptArg.res:9:35 - DeadOptionalArgs.addReferences threeArgs called with optional argNames:c, a argNamesMaybe: OptArg.res:11:7 - addValueReference OptArg.res:11:7 --> OptArg.res:9:4 - DeadOptionalArgs.addReferences threeArgs called with optional argNames:a argNamesMaybe: OptArg.res:12:7 - addValueReference OptArg.res:12:7 --> OptArg.res:9:4 - addValueReference OptArg.res:14:4 --> OptArg.res:14:18 - addValueReference OptArg.res:14:4 --> OptArg.res:14:24 - addValueReference OptArg.res:14:4 --> OptArg.res:14:15 - addValueReference OptArg.res:14:4 --> OptArg.res:14:21 - addValueReference OptArg.res:14:4 --> OptArg.res:14:27 - DeadOptionalArgs.addReferences twoArgs called with optional argNames: argNamesMaybe: OptArg.res:16:7 - addValueReference OptArg.res:16:12 --> OptArg.res:14:4 - addValueReference OptArg.res:18:4 --> OptArg.res:18:17 - addValueReference OptArg.res:18:4 --> OptArg.res:18:14 - addValueReference OptArg.res:18:4 --> OptArg.res:18:24 - DeadOptionalArgs.addReferences oneArg called with optional argNames:a argNamesMaybe:a OptArg.res:20:30 - addValueReference OptArg.res:20:4 --> OptArg.res:20:18 - addValueReference OptArg.res:20:4 --> OptArg.res:20:24 - addValueReference OptArg.res:20:4 --> OptArg.res:18:4 - DeadOptionalArgs.addReferences wrapOneArg called with optional argNames:a argNamesMaybe: OptArg.res:22:7 - addValueReference OptArg.res:22:7 --> OptArg.res:20:4 - addValueReference OptArg.res:24:4 --> OptArg.res:24:19 - addValueReference OptArg.res:24:4 --> OptArg.res:24:25 - addValueReference OptArg.res:24:4 --> OptArg.res:24:31 - addValueReference OptArg.res:24:4 --> OptArg.res:24:37 - addValueReference OptArg.res:24:4 --> OptArg.res:24:16 - addValueReference OptArg.res:24:4 --> OptArg.res:24:22 - addValueReference OptArg.res:24:4 --> OptArg.res:24:28 - addValueReference OptArg.res:24:4 --> OptArg.res:24:34 - addValueReference OptArg.res:24:4 --> OptArg.res:24:40 - DeadOptionalArgs.addReferences fourArgs called with optional argNames:c, b, a argNamesMaybe:c, b, a OptArg.res:26:44 - addValueReference OptArg.res:26:4 --> OptArg.res:26:20 - addValueReference OptArg.res:26:4 --> OptArg.res:26:26 - addValueReference OptArg.res:26:4 --> OptArg.res:26:32 - addValueReference OptArg.res:26:4 --> OptArg.res:26:38 - addValueReference OptArg.res:26:4 --> OptArg.res:24:4 - DeadOptionalArgs.addReferences wrapfourArgs called with optional argNames:c, a argNamesMaybe: OptArg.res:28:7 - addValueReference OptArg.res:28:7 --> OptArg.res:26:4 - DeadOptionalArgs.addReferences wrapfourArgs called with optional argNames:c, b argNamesMaybe: OptArg.res:29:7 - addValueReference OptArg.res:29:7 --> OptArg.res:26:4 - addValueReference OptArg.resi:1:0 --> OptArg.res:1:4 - OptionalArgs.addFunctionReference OptArg.resi:1:0 OptArg.res:1:4 - addValueReference OptArg.resi:2:0 --> OptArg.res:3:4 - OptionalArgs.addFunctionReference OptArg.resi:2:0 OptArg.res:3:4 - Scanning OptArg.cmti Source:OptArg.resi - addValueDeclaration +foo OptArg.resi:1:0 path:OptArg - addValueDeclaration +bar OptArg.resi:2:0 path:OptArg - Scanning Records.cmt Source:Records.res - addValueDeclaration +origin Records.res:11:4 path:+Records - addValueDeclaration +computeArea Records.res:14:4 path:+Records - addValueDeclaration +coord2d Records.res:20:4 path:+Records - addValueDeclaration +getOpt Records.res:36:4 path:+Records - addValueDeclaration +findAddress Records.res:39:4 path:+Records - addValueDeclaration +someBusiness Records.res:43:4 path:+Records - addValueDeclaration +findAllAddresses Records.res:46:4 path:+Records - addValueDeclaration +getPayload Records.res:65:4 path:+Records - addValueDeclaration +getPayloadRecord Records.res:74:4 path:+Records - addValueDeclaration +recordValue Records.res:77:4 path:+Records - addValueDeclaration +payloadValue Records.res:80:4 path:+Records - addValueDeclaration +getPayloadRecordPlusOne Records.res:83:4 path:+Records - addValueDeclaration +findAddress2 Records.res:96:4 path:+Records - addValueDeclaration +someBusiness2 Records.res:100:4 path:+Records - addValueDeclaration +computeArea3 Records.res:107:4 path:+Records - addValueDeclaration +computeArea4 Records.res:111:4 path:+Records - addValueDeclaration +testMyRec Records.res:127:4 path:+Records - addValueDeclaration +testMyRec2 Records.res:130:4 path:+Records - addValueDeclaration +testMyObj Records.res:133:4 path:+Records - addValueDeclaration +testMyObj2 Records.res:136:4 path:+Records - addValueDeclaration +testMyRecBsAs Records.res:145:4 path:+Records - addValueDeclaration +testMyRecBsAs2 Records.res:148:4 path:+Records - addRecordLabelDeclaration x Records.res:5:2 path:+Records.coord - addRecordLabelDeclaration y Records.res:6:2 path:+Records.coord - addRecordLabelDeclaration z Records.res:7:2 path:+Records.coord - addValueReference Records.res:14:4 --> Records.res:14:20 - addValueReference Records.res:14:4 --> Records.res:14:23 - addValueReference Records.res:14:4 --> Records.res:14:26 - addValueReference Records.res:14:4 --> Records.res:16:31 - addTypeReference Records.res:14:19 --> Records.res:5:2 - addTypeReference Records.res:14:19 --> Records.res:6:2 - addTypeReference Records.res:14:19 --> Records.res:7:2 - addValueReference Records.res:20:4 --> Records.res:20:15 - addValueReference Records.res:20:4 --> Records.res:20:18 - addRecordLabelDeclaration name Records.res:24:2 path:+Records.person - addRecordLabelDeclaration age Records.res:25:2 path:+Records.person - addRecordLabelDeclaration address Records.res:26:2 path:+Records.person - addRecordLabelDeclaration name Records.res:31:2 path:+Records.business - addRecordLabelDeclaration owner Records.res:32:2 path:+Records.business - addRecordLabelDeclaration address Records.res:33:2 path:+Records.business - addValueReference Records.res:36:4 --> Records.res:36:14 - addValueReference Records.res:36:4 --> Records.res:36:19 - addValueReference Records.res:36:4 --> Records.res:36:28 - addTypeReference Records.res:40:2 --> Records.res:33:2 - addValueReference Records.res:39:4 --> Records.res:39:19 - addValueReference Records.res:39:4 --> Records.res:40:35 - addValueReference Records.res:39:4 --> Records.res:36:4 - addValueReference Records.res:46:4 --> Records.res:46:24 - addTypeReference Records.res:50:6 --> Records.res:33:2 - addValueReference Records.res:46:4 --> Records.res:48:14 - addValueReference Records.res:46:4 --> Records.res:50:39 - addValueReference Records.res:46:4 --> Records.res:36:4 - addTypeReference Records.res:51:6 --> Records.res:32:2 - addValueReference Records.res:46:4 --> Records.res:48:14 - addTypeReference Records.res:51:42 --> Records.res:26:2 - addValueReference Records.res:46:4 --> Records.res:51:37 - addValueReference Records.res:46:4 --> Records.res:51:68 - addValueReference Records.res:46:4 --> Records.res:36:4 - addValueReference Records.res:46:4 --> Records.res:36:4 - addRecordLabelDeclaration num Records.res:60:2 path:+Records.payload - addRecordLabelDeclaration payload Records.res:61:2 path:+Records.payload - addValueReference Records.res:65:4 --> Records.res:65:19 - addTypeReference Records.res:65:18 --> Records.res:61:2 - addRecordLabelDeclaration v Records.res:69:2 path:+Records.record - addRecordLabelDeclaration w Records.res:70:2 path:+Records.record - addValueReference Records.res:74:4 --> Records.res:74:25 - addTypeReference Records.res:74:24 --> Records.res:61:2 - addValueReference Records.res:80:4 --> Records.res:77:4 - addTypeReference Records.res:85:5 --> Records.res:69:2 - addValueReference Records.res:83:4 --> Records.res:83:32 - addValueReference Records.res:83:4 --> Records.res:83:32 - addTypeReference Records.res:83:31 --> Records.res:61:2 - addRecordLabelDeclaration name Records.res:90:2 path:+Records.business2 - addRecordLabelDeclaration owner Records.res:91:2 path:+Records.business2 - addRecordLabelDeclaration address2 Records.res:92:2 path:+Records.business2 - addTypeReference Records.res:97:2 --> Records.res:92:2 - addValueReference Records.res:96:4 --> Records.res:96:20 - addValueReference Records.res:96:4 --> Records.res:97:58 - addValueReference Records.res:96:4 --> Records.res:36:4 - addValueReference Records.res:107:4 --> Records.res:107:20 - addValueReference Records.res:107:4 --> Records.res:107:20 - addValueReference Records.res:107:4 --> Records.res:107:20 - addValueReference Records.res:107:4 --> Records.res:108:75 - addValueReference Records.res:111:4 --> Records.res:111:20 - addValueReference Records.res:111:4 --> Records.res:111:20 - addValueReference Records.res:111:4 --> Records.res:111:20 - addValueReference Records.res:111:4 --> Records.res:112:53 - addRecordLabelDeclaration type_ Records.res:119:2 path:+Records.myRec - addTypeReference Records.res:127:30 --> Records.res:119:2 - addValueReference Records.res:127:4 --> Records.res:127:17 - addValueReference Records.res:130:4 --> Records.res:130:18 - addValueReference Records.res:133:4 --> Records.res:133:17 - addValueReference Records.res:136:4 --> Records.res:136:18 - addRecordLabelDeclaration type_ Records.res:140:2 path:+Records.myRecBsAs - addTypeReference Records.res:145:38 --> Records.res:140:2 - addValueReference Records.res:145:4 --> Records.res:145:21 - addValueReference Records.res:148:4 --> Records.res:148:22 - Scanning References.cmt Source:References.res - addValueDeclaration +create References.res:4:4 path:+References - addValueDeclaration +access References.res:7:4 path:+References - addValueDeclaration +update References.res:10:4 path:+References - addValueDeclaration +get References.res:17:2 path:+References.R - addValueDeclaration +make References.res:18:2 path:+References.R - addValueDeclaration +set References.res:19:2 path:+References.R - addValueDeclaration +get References.res:31:4 path:+References - addValueDeclaration +make References.res:34:4 path:+References - addValueDeclaration +set References.res:37:4 path:+References - addValueDeclaration +destroysRefIdentity References.res:43:4 path:+References - addValueDeclaration +preserveRefIdentity References.res:47:4 path:+References - addValueReference References.res:4:4 --> References.res:4:14 - addValueReference References.res:7:4 --> References.res:7:13 - addValueReference References.res:10:4 --> References.res:10:13 - addValueReference References.res:10:4 --> References.res:10:13 - addValueDeclaration +get References.res:22:6 path:+References.R - addValueReference References.res:22:6 --> References.res:22:12 - addValueDeclaration +make References.res:23:6 path:+References.R - addValueDeclaration +set References.res:24:6 path:+References.R - addValueReference References.res:24:6 --> References.res:24:16 - addValueReference References.res:24:6 --> References.res:24:13 - addValueReference References.res:31:4 --> References.res:17:2 - addValueReference References.res:34:4 --> References.res:18:2 - addValueReference References.res:37:4 --> References.res:19:2 - addRecordLabelDeclaration x References.res:39:27 path:+References.requiresConversion - addValueReference References.res:43:4 --> References.res:43:27 - addValueReference References.res:47:4 --> References.res:47:27 - addValueReference References.res:17:2 --> References.res:22:6 - addValueReference References.res:18:2 --> References.res:23:6 - addValueReference References.res:19:2 --> References.res:24:6 - Scanning RepeatedLabel.cmt Source:RepeatedLabel.res - addValueDeclaration +userData RepeatedLabel.res:12:4 path:+RepeatedLabel - addRecordLabelDeclaration a RepeatedLabel.res:2:2 path:+RepeatedLabel.userData - addRecordLabelDeclaration b RepeatedLabel.res:3:2 path:+RepeatedLabel.userData - addRecordLabelDeclaration a RepeatedLabel.res:7:2 path:+RepeatedLabel.tabState - addRecordLabelDeclaration b RepeatedLabel.res:8:2 path:+RepeatedLabel.tabState - addRecordLabelDeclaration f RepeatedLabel.res:9:2 path:+RepeatedLabel.tabState - addValueReference RepeatedLabel.res:12:4 --> RepeatedLabel.res:12:17 - addValueReference RepeatedLabel.res:12:4 --> RepeatedLabel.res:12:20 - addTypeReference RepeatedLabel.res:12:16 --> RepeatedLabel.res:7:2 - addTypeReference RepeatedLabel.res:12:16 --> RepeatedLabel.res:8:2 - addValueReference RepeatedLabel.res:14:7 --> RepeatedLabel.res:12:4 - Scanning RequireCond.cmt Source:RequireCond.res - Scanning Shadow.cmt Source:Shadow.res - addValueDeclaration +test Shadow.res:2:4 path:+Shadow - addValueDeclaration +test Shadow.res:5:4 path:+Shadow - addValueDeclaration +test Shadow.res:11:6 path:+Shadow.M - addValueDeclaration +test Shadow.res:9:6 path:+Shadow.M - Scanning TestDeadExn.cmt Source:TestDeadExn.res - Scanning TestEmitInnerModules.cmt Source:TestEmitInnerModules.res - addValueDeclaration +x TestEmitInnerModules.res:3:6 path:+TestEmitInnerModules.Inner - addValueDeclaration +y TestEmitInnerModules.res:5:6 path:+TestEmitInnerModules.Inner - addValueDeclaration +y TestEmitInnerModules.res:12:10 path:+TestEmitInnerModules.Outer.Medium.Inner - Scanning TestFirstClassModules.cmt Source:TestFirstClassModules.res - addValueDeclaration +convert TestFirstClassModules.res:2:4 path:+TestFirstClassModules - addValueDeclaration +convertInterface TestFirstClassModules.res:5:4 path:+TestFirstClassModules - addValueDeclaration +convertRecord TestFirstClassModules.res:8:4 path:+TestFirstClassModules - addValueDeclaration +convertFirstClassModuleWithTypeEquations TestFirstClassModules.res:27:4 path:+TestFirstClassModules - addValueReference TestFirstClassModules.res:2:4 --> TestFirstClassModules.res:2:15 - addValueReference TestFirstClassModules.res:5:4 --> TestFirstClassModules.res:5:24 - addValueReference TestFirstClassModules.res:8:4 --> TestFirstClassModules.res:8:21 - addValueReference TestFirstClassModules.res:27:4 --> TestFirstClassModules.res:29:2 - Scanning TestImmutableArray.cmt Source:TestImmutableArray.res - addValueDeclaration +testImmutableArrayGet TestImmutableArray.res:2:4 path:+TestImmutableArray - addValueDeclaration +testBeltArrayGet TestImmutableArray.res:12:4 path:+TestImmutableArray - addValueDeclaration +testBeltArraySet TestImmutableArray.res:17:4 path:+TestImmutableArray - addValueReference TestImmutableArray.res:2:4 --> TestImmutableArray.res:2:28 - addValueReference TestImmutableArray.res:2:4 --> ImmutableArray.resi:6:2 - addValueReference TestImmutableArray.res:12:4 --> TestImmutableArray.res:12:23 - addValueReference TestImmutableArray.res:17:4 --> TestImmutableArray.res:17:23 - Scanning TestImport.cmt Source:TestImport.res - addValueDeclaration +innerStuffContents TestImport.res:1:0 path:+TestImport - addValueDeclaration +innerStuffContentsAsEmptyObject TestImport.res:7:0 path:+TestImport - addValueDeclaration +innerStuffContents TestImport.res:13:4 path:+TestImport - addValueDeclaration +valueStartingWithUpperCaseLetter TestImport.res:15:0 path:+TestImport - addValueDeclaration +defaultValue TestImport.res:18:0 path:+TestImport - addValueDeclaration +make TestImport.res:24:0 path:+TestImport - addValueDeclaration +make TestImport.res:27:4 path:+TestImport - addValueDeclaration +defaultValue2 TestImport.res:29:0 path:+TestImport - addValueReference TestImport.res:13:4 --> TestImport.res:1:0 - addRecordLabelDeclaration text TestImport.res:22:16 path:+TestImport.message - addValueReference TestImport.res:27:4 --> TestImport.res:24:0 - Scanning TestInnedModuleTypes.cmt Source:TestInnedModuleTypes.res - addValueDeclaration +_ TestInnedModuleTypes.res:1:0 path:+TestInnedModuleTypes - addTypeReference TestInnedModuleTypes.res:1:8 --> InnerModuleTypes.resi:2:11 - Scanning TestModuleAliases.cmt Source:TestModuleAliases.res - addValueDeclaration +testInner1 TestModuleAliases.res:32:4 path:+TestModuleAliases - addValueDeclaration +testInner1Expanded TestModuleAliases.res:35:4 path:+TestModuleAliases - addValueDeclaration +testInner2 TestModuleAliases.res:38:4 path:+TestModuleAliases - addValueDeclaration +testInner2Expanded TestModuleAliases.res:41:4 path:+TestModuleAliases - addValueReference TestModuleAliases.res:32:4 --> TestModuleAliases.res:32:18 - addValueReference TestModuleAliases.res:35:4 --> TestModuleAliases.res:35:26 - addValueReference TestModuleAliases.res:38:4 --> TestModuleAliases.res:38:18 - addValueReference TestModuleAliases.res:41:4 --> TestModuleAliases.res:41:26 - Scanning TestOptArg.cmt Source:TestOptArg.res - addValueDeclaration +foo TestOptArg.res:3:4 path:+TestOptArg - addValueDeclaration +bar TestOptArg.res:5:4 path:+TestOptArg - addValueDeclaration +notSuppressesOptArgs TestOptArg.res:9:4 path:+TestOptArg - addValueDeclaration +liveSuppressesOptArgs TestOptArg.res:14:4 path:+TestOptArg - DeadOptionalArgs.addReferences OptArg.bar called with optional argNames:z argNamesMaybe: TestOptArg.res:1:7 - addValueReference TestOptArg.res:1:7 --> OptArg.resi:2:0 - addValueReference TestOptArg.res:3:4 --> TestOptArg.res:3:14 - addValueReference TestOptArg.res:3:4 --> TestOptArg.res:3:11 - addValueReference TestOptArg.res:3:4 --> TestOptArg.res:3:17 - DeadOptionalArgs.addReferences foo called with optional argNames:x argNamesMaybe: TestOptArg.res:5:16 - addValueReference TestOptArg.res:5:4 --> TestOptArg.res:3:4 - addValueReference TestOptArg.res:7:7 --> TestOptArg.res:5:4 - addValueReference TestOptArg.res:9:4 --> TestOptArg.res:9:31 - addValueReference TestOptArg.res:9:4 --> TestOptArg.res:9:37 - addValueReference TestOptArg.res:9:4 --> TestOptArg.res:9:43 - addValueReference TestOptArg.res:9:4 --> TestOptArg.res:9:28 - addValueReference TestOptArg.res:9:4 --> TestOptArg.res:9:34 - addValueReference TestOptArg.res:9:4 --> TestOptArg.res:9:40 - addValueReference TestOptArg.res:9:4 --> TestOptArg.res:9:46 - DeadOptionalArgs.addReferences notSuppressesOptArgs called with optional argNames: argNamesMaybe: TestOptArg.res:11:8 - addValueReference TestOptArg.res:11:8 --> TestOptArg.res:9:4 - addValueReference TestOptArg.res:14:4 --> TestOptArg.res:14:32 - addValueReference TestOptArg.res:14:4 --> TestOptArg.res:14:38 - addValueReference TestOptArg.res:14:4 --> TestOptArg.res:14:44 - addValueReference TestOptArg.res:14:4 --> TestOptArg.res:14:29 - addValueReference TestOptArg.res:14:4 --> TestOptArg.res:14:35 - addValueReference TestOptArg.res:14:4 --> TestOptArg.res:14:41 - addValueReference TestOptArg.res:14:4 --> TestOptArg.res:14:47 - DeadOptionalArgs.addReferences liveSuppressesOptArgs called with optional argNames:x argNamesMaybe: TestOptArg.res:16:8 - addValueReference TestOptArg.res:16:8 --> TestOptArg.res:14:4 - Scanning TestPromise.cmt Source:TestPromise.res - addValueDeclaration +convert TestPromise.res:14:4 path:+TestPromise - addRecordLabelDeclaration x TestPromise.res:6:2 path:+TestPromise.fromPayload - addRecordLabelDeclaration s TestPromise.res:7:2 path:+TestPromise.fromPayload - addRecordLabelDeclaration result TestPromise.res:11:18 path:+TestPromise.toPayload - addValueReference TestPromise.res:14:4 --> TestPromise.res:14:33 - addTypeReference TestPromise.res:14:32 --> TestPromise.res:7:2 - Scanning ToSuppress.cmt Source:ToSuppress.res - addValueDeclaration +toSuppress ToSuppress.res:1:4 path:+ToSuppress - Scanning TransitiveType1.cmt Source:TransitiveType1.res - addValueDeclaration +convert TransitiveType1.res:2:4 path:+TransitiveType1 - addValueDeclaration +convertAlias TransitiveType1.res:5:4 path:+TransitiveType1 - addValueReference TransitiveType1.res:2:4 --> TransitiveType1.res:2:15 - addValueReference TransitiveType1.res:5:4 --> TransitiveType1.res:5:20 - Scanning TransitiveType2.cmt Source:TransitiveType2.res - addValueDeclaration +convertT2 TransitiveType2.res:7:4 path:+TransitiveType2 - addValueReference TransitiveType2.res:7:4 --> TransitiveType2.res:7:17 - Scanning TransitiveType3.cmt Source:TransitiveType3.res - addValueDeclaration +convertT3 TransitiveType3.res:8:4 path:+TransitiveType3 - addRecordLabelDeclaration i TransitiveType3.res:3:2 path:+TransitiveType3.t3 - addRecordLabelDeclaration s TransitiveType3.res:4:2 path:+TransitiveType3.t3 - addValueReference TransitiveType3.res:8:4 --> TransitiveType3.res:8:17 - Scanning Tuples.cmt Source:Tuples.res - addValueDeclaration +testTuple Tuples.res:4:4 path:+Tuples - addValueDeclaration +origin Tuples.res:10:4 path:+Tuples - addValueDeclaration +computeArea Tuples.res:13:4 path:+Tuples - addValueDeclaration +computeAreaWithIdent Tuples.res:19:4 path:+Tuples - addValueDeclaration +computeAreaNoConverters Tuples.res:25:4 path:+Tuples - addValueDeclaration +coord2d Tuples.res:28:4 path:+Tuples - addValueDeclaration +getFirstName Tuples.res:43:4 path:+Tuples - addValueDeclaration +marry Tuples.res:46:4 path:+Tuples - addValueDeclaration +changeSecondAge Tuples.res:49:4 path:+Tuples - addValueReference Tuples.res:4:4 --> Tuples.res:4:18 - addValueReference Tuples.res:4:4 --> Tuples.res:4:21 - addValueReference Tuples.res:13:4 --> Tuples.res:13:20 - addValueReference Tuples.res:13:4 --> Tuples.res:13:23 - addValueReference Tuples.res:13:4 --> Tuples.res:13:26 - addValueReference Tuples.res:13:4 --> Tuples.res:15:31 - addValueReference Tuples.res:19:4 --> Tuples.res:19:29 - addValueReference Tuples.res:19:4 --> Tuples.res:19:32 - addValueReference Tuples.res:19:4 --> Tuples.res:19:35 - addValueReference Tuples.res:19:4 --> Tuples.res:21:31 - addValueReference Tuples.res:25:4 --> Tuples.res:25:32 - addValueReference Tuples.res:25:4 --> Tuples.res:25:40 - addValueReference Tuples.res:28:4 --> Tuples.res:28:15 - addValueReference Tuples.res:28:4 --> Tuples.res:28:18 - addRecordLabelDeclaration name Tuples.res:35:2 path:+Tuples.person - addRecordLabelDeclaration age Tuples.res:36:2 path:+Tuples.person - addTypeReference Tuples.res:43:49 --> Tuples.res:35:2 - addValueReference Tuples.res:43:4 --> Tuples.res:43:21 - addValueReference Tuples.res:46:4 --> Tuples.res:46:13 - addValueReference Tuples.res:46:4 --> Tuples.res:46:20 - addValueReference Tuples.res:49:4 --> Tuples.res:49:24 - addTypeReference Tuples.res:49:84 --> Tuples.res:36:2 - addValueReference Tuples.res:49:4 --> Tuples.res:49:31 - addValueReference Tuples.res:49:4 --> Tuples.res:49:31 - Scanning TypeParams1.cmt Source:TypeParams1.res - addValueDeclaration +exportSomething TypeParams1.res:4:4 path:+TypeParams1 - Scanning TypeParams2.cmt Source:TypeParams2.res - addValueDeclaration +exportSomething TypeParams2.res:10:4 path:+TypeParams2 - addRecordLabelDeclaration id TypeParams2.res:2:13 path:+TypeParams2.item - Scanning TypeParams3.cmt Source:TypeParams3.res - addValueDeclaration +test TypeParams3.res:2:4 path:+TypeParams3 - addValueDeclaration +test2 TypeParams3.res:5:4 path:+TypeParams3 - addValueReference TypeParams3.res:2:4 --> TypeParams3.res:2:12 - addValueReference TypeParams3.res:5:4 --> TypeParams3.res:5:13 - Scanning Types.cmt Source:Types.res - addValueDeclaration +someIntList Types.res:5:4 path:+Types - addValueDeclaration +map Types.res:8:4 path:+Types - addValueDeclaration +swap Types.res:23:8 path:+Types - addValueDeclaration +selfRecursiveConverter Types.res:42:4 path:+Types - addValueDeclaration +mutuallyRecursiveConverter Types.res:49:4 path:+Types - addValueDeclaration +testFunctionOnOptionsAsArgument Types.res:52:4 path:+Types - addValueDeclaration +jsStringT Types.res:60:4 path:+Types - addValueDeclaration +jsString2T Types.res:63:4 path:+Types - addValueDeclaration +jsonStringify Types.res:75:4 path:+Types - addValueDeclaration +testConvertNull Types.res:89:4 path:+Types - addValueDeclaration +testMarshalFields Types.res:109:4 path:+Types - addValueDeclaration +setMatch Types.res:125:4 path:+Types - addValueDeclaration +testInstantiateTypeParameter Types.res:135:4 path:+Types - addValueDeclaration +currentTime Types.res:144:4 path:+Types - addValueDeclaration +i64Const Types.res:153:4 path:+Types - addValueDeclaration +optFunction Types.res:156:4 path:+Types - addVariantCaseDeclaration A Types.res:12:2 path:+Types.typeWithVars - addVariantCaseDeclaration B Types.res:13:2 path:+Types.typeWithVars - addValueReference Types.res:23:8 --> Types.res:23:16 - addValueReference Types.res:23:8 --> Types.res:23:16 - addValueReference Types.res:23:8 --> Types.res:23:8 - addValueReference Types.res:23:8 --> Types.res:23:16 - addValueReference Types.res:23:8 --> Types.res:23:8 - addValueReference Types.res:23:8 --> Types.res:24:2 - addRecordLabelDeclaration self Types.res:31:26 path:+Types.selfRecursive - addRecordLabelDeclaration b Types.res:34:31 path:+Types.mutuallyRecursiveA - addRecordLabelDeclaration a Types.res:35:26 path:+Types.mutuallyRecursiveB - addValueReference Types.res:42:4 --> Types.res:42:31 - addTypeReference Types.res:42:30 --> Types.res:31:26 - addValueReference Types.res:49:4 --> Types.res:49:35 - addTypeReference Types.res:49:34 --> Types.res:34:31 - addValueReference Types.res:52:4 --> Types.res:52:39 - addValueReference Types.res:52:4 --> Types.res:52:54 - addVariantCaseDeclaration A Types.res:56:2 path:+Types.opaqueVariant - addVariantCaseDeclaration B Types.res:57:2 path:+Types.opaqueVariant - addRecordLabelDeclaration i Types.res:84:2 path:+Types.record - addRecordLabelDeclaration s Types.res:85:2 path:+Types.record - addValueReference Types.res:89:4 --> Types.res:89:23 - addValueReference Types.res:109:4 --> Types.res:109:39 - addValueReference Types.res:125:4 --> Types.res:125:16 - addRecordLabelDeclaration id Types.res:130:19 path:+Types.someRecord - addValueReference Types.res:135:4 --> Types.res:135:36 - addValueDeclaration +x Types.res:163:6 path:+Types.ObjectId - Scanning Unboxed.cmt Source:Unboxed.res - addValueDeclaration +testV1 Unboxed.res:8:4 path:+Unboxed - addValueDeclaration +r2Test Unboxed.res:17:4 path:+Unboxed - addVariantCaseDeclaration A Unboxed.res:2:10 path:+Unboxed.v1 - addVariantCaseDeclaration A Unboxed.res:5:10 path:+Unboxed.v2 - addValueReference Unboxed.res:8:4 --> Unboxed.res:8:14 - addRecordLabelDeclaration x Unboxed.res:11:11 path:+Unboxed.r1 - addRecordLabelDeclaration B.g Unboxed.res:14:13 path:+Unboxed.r2 - addVariantCaseDeclaration B Unboxed.res:14:10 path:+Unboxed.r2 - addValueReference Unboxed.res:17:4 --> Unboxed.res:17:14 - Scanning Uncurried.cmt Source:Uncurried.res - addValueDeclaration +uncurried0 Uncurried.res:14:4 path:+Uncurried - addValueDeclaration +uncurried1 Uncurried.res:17:4 path:+Uncurried - addValueDeclaration +uncurried2 Uncurried.res:20:4 path:+Uncurried - addValueDeclaration +uncurried3 Uncurried.res:23:4 path:+Uncurried - addValueDeclaration +curried3 Uncurried.res:26:4 path:+Uncurried - addValueDeclaration +callback Uncurried.res:29:4 path:+Uncurried - addValueDeclaration +callback2 Uncurried.res:35:4 path:+Uncurried - addValueDeclaration +callback2U Uncurried.res:38:4 path:+Uncurried - addValueDeclaration +sumU Uncurried.res:41:4 path:+Uncurried - addValueDeclaration +sumU2 Uncurried.res:44:4 path:+Uncurried - addValueDeclaration +sumCurried Uncurried.res:47:4 path:+Uncurried - addValueDeclaration +sumLblCurried Uncurried.res:53:4 path:+Uncurried - addValueReference Uncurried.res:17:4 --> Uncurried.res:17:20 - addValueReference Uncurried.res:20:4 --> Uncurried.res:20:20 - addValueReference Uncurried.res:20:4 --> Uncurried.res:20:23 - addValueReference Uncurried.res:23:4 --> Uncurried.res:23:20 - addValueReference Uncurried.res:23:4 --> Uncurried.res:23:23 - addValueReference Uncurried.res:23:4 --> Uncurried.res:23:26 - addValueReference Uncurried.res:26:4 --> Uncurried.res:26:16 - addValueReference Uncurried.res:26:4 --> Uncurried.res:26:19 - addValueReference Uncurried.res:26:4 --> Uncurried.res:26:22 - addValueReference Uncurried.res:29:4 --> Uncurried.res:29:15 - addRecordLabelDeclaration login Uncurried.res:31:13 path:+Uncurried.auth - addRecordLabelDeclaration loginU Uncurried.res:32:14 path:+Uncurried.authU - addTypeReference Uncurried.res:35:24 --> Uncurried.res:31:13 - addValueReference Uncurried.res:35:4 --> Uncurried.res:35:16 - addTypeReference Uncurried.res:38:25 --> Uncurried.res:32:14 - addValueReference Uncurried.res:38:4 --> Uncurried.res:38:17 - addValueReference Uncurried.res:41:4 --> Uncurried.res:41:17 - addValueReference Uncurried.res:41:4 --> Uncurried.res:41:14 - addValueReference Uncurried.res:41:4 --> Uncurried.res:41:17 - addValueReference Uncurried.res:44:4 --> Uncurried.res:44:20 - addValueReference Uncurried.res:44:4 --> Uncurried.res:44:15 - addValueReference Uncurried.res:44:4 --> Uncurried.res:44:20 - addValueReference Uncurried.res:47:4 --> Uncurried.res:49:2 - addValueReference Uncurried.res:47:4 --> Uncurried.res:47:17 - addValueReference Uncurried.res:47:4 --> Uncurried.res:49:2 - addValueReference Uncurried.res:47:4 --> Uncurried.res:47:17 - addValueReference Uncurried.res:53:4 --> Uncurried.res:55:3 - addValueReference Uncurried.res:53:4 --> Uncurried.res:53:32 - addValueReference Uncurried.res:53:4 --> Uncurried.res:55:3 - addValueReference Uncurried.res:53:4 --> Uncurried.res:53:21 - addValueReference Uncurried.res:53:4 --> Uncurried.res:53:32 - Scanning Unison.cmt Source:Unison.res - addValueDeclaration +group Unison.res:17:4 path:+Unison - addValueDeclaration +fits Unison.res:19:8 path:+Unison - addValueDeclaration +toString Unison.res:26:8 path:+Unison - addVariantCaseDeclaration IfNeed Unison.res:4:2 path:+Unison.break - addVariantCaseDeclaration Never Unison.res:5:2 path:+Unison.break - addVariantCaseDeclaration Always Unison.res:6:2 path:+Unison.break - addRecordLabelDeclaration break Unison.res:9:2 path:+Unison.t - addRecordLabelDeclaration doc Unison.res:10:2 path:+Unison.t - addVariantCaseDeclaration Empty Unison.res:14:2 path:+Unison.stack - addVariantCaseDeclaration Cons Unison.res:15:2 path:+Unison.stack - addValueReference Unison.res:17:4 --> Unison.res:17:20 - addTypeReference Unison.res:17:20 --> Unison.res:4:2 - addValueReference Unison.res:17:4 --> Unison.res:17:13 - addValueReference Unison.res:17:4 --> Unison.res:17:28 - addValueReference Unison.res:19:8 --> Unison.res:19:16 - addValueReference Unison.res:19:8 --> Unison.res:19:16 - addValueReference Unison.res:19:8 --> Unison.res:23:10 - addValueReference Unison.res:19:8 --> Unison.res:23:16 - addValueReference Unison.res:19:8 --> Unison.res:19:8 - addTypeReference Unison.res:23:9 --> Unison.res:10:2 - addValueReference Unison.res:19:8 --> Unison.res:19:19 - addValueReference Unison.res:26:8 --> Unison.res:26:20 - addValueReference Unison.res:26:8 --> Unison.res:28:23 - addValueReference Unison.res:26:8 --> Unison.res:19:8 - addValueReference Unison.res:26:8 --> Unison.res:26:20 - addValueReference Unison.res:26:8 --> Unison.res:28:23 - addValueReference Unison.res:26:8 --> Unison.res:26:8 - addValueReference Unison.res:26:8 --> Unison.res:28:17 - addValueReference Unison.res:26:8 --> Unison.res:26:20 - addValueReference Unison.res:26:8 --> Unison.res:28:23 - addValueReference Unison.res:26:8 --> Unison.res:26:8 - addValueReference Unison.res:26:8 --> Unison.res:28:17 - addValueReference Unison.res:26:8 --> Unison.res:26:20 - addValueReference Unison.res:26:8 --> Unison.res:28:23 - addValueReference Unison.res:26:8 --> Unison.res:26:8 - addValueReference Unison.res:26:8 --> Unison.res:28:10 - addTypeReference Unison.res:28:9 --> Unison.res:9:2 - addTypeReference Unison.res:28:9 --> Unison.res:10:2 - addValueReference Unison.res:26:8 --> Unison.res:26:28 - addTypeReference Unison.res:37:20 --> Unison.res:14:2 - addValueReference Unison.res:37:0 --> Unison.res:26:8 - addTypeReference Unison.res:38:20 --> Unison.res:15:2 - DeadOptionalArgs.addReferences group called with optional argNames:break argNamesMaybe: Unison.res:38:25 - addTypeReference Unison.res:38:38 --> Unison.res:5:2 - addValueReference Unison.res:38:25 --> Unison.res:17:4 - addTypeReference Unison.res:38:53 --> Unison.res:14:2 - addValueReference Unison.res:38:0 --> Unison.res:26:8 - addTypeReference Unison.res:39:20 --> Unison.res:15:2 - DeadOptionalArgs.addReferences group called with optional argNames:break argNamesMaybe: Unison.res:39:25 - addTypeReference Unison.res:39:38 --> Unison.res:6:2 - addValueReference Unison.res:39:25 --> Unison.res:17:4 - addTypeReference Unison.res:39:52 --> Unison.res:14:2 - addValueReference Unison.res:39:0 --> Unison.res:26:8 - Scanning UseImportJsValue.cmt Source:UseImportJsValue.res - addValueDeclaration +useGetProp UseImportJsValue.res:2:4 path:+UseImportJsValue - addValueDeclaration +useTypeImportedInOtherModule UseImportJsValue.res:5:4 path:+UseImportJsValue - addValueReference UseImportJsValue.res:2:4 --> UseImportJsValue.res:2:18 - addValueReference UseImportJsValue.res:2:4 --> ImportJsValue.res:37:2 - addValueReference UseImportJsValue.res:5:4 --> UseImportJsValue.res:5:36 - Scanning Variants.cmt Source:Variants.res - addValueDeclaration +isWeekend Variants.res:13:4 path:+Variants - addValueDeclaration +monday Variants.res:21:4 path:+Variants - addValueDeclaration +saturday Variants.res:23:4 path:+Variants - addValueDeclaration +sunday Variants.res:25:4 path:+Variants - addValueDeclaration +onlySunday Variants.res:28:4 path:+Variants - addValueDeclaration +swap Variants.res:31:4 path:+Variants - addValueDeclaration +testConvert Variants.res:45:4 path:+Variants - addValueDeclaration +fortytwoOK Variants.res:48:4 path:+Variants - addValueDeclaration +fortytwoBAD Variants.res:52:4 path:+Variants - addValueDeclaration +testConvert2 Variants.res:64:4 path:+Variants - addValueDeclaration +testConvert3 Variants.res:76:4 path:+Variants - addValueDeclaration +testConvert2to3 Variants.res:80:4 path:+Variants - addValueDeclaration +id1 Variants.res:89:4 path:+Variants - addValueDeclaration +id2 Variants.res:92:4 path:+Variants - addValueDeclaration +polyWithOpt Variants.res:98:4 path:+Variants - addValueDeclaration +restResult1 Variants.res:112:4 path:+Variants - addValueDeclaration +restResult2 Variants.res:115:4 path:+Variants - addValueDeclaration +restResult3 Variants.res:118:4 path:+Variants - addValueReference Variants.res:13:4 --> Variants.res:13:17 - addValueReference Variants.res:31:4 --> Variants.res:31:11 - addValueReference Variants.res:45:4 --> Variants.res:45:19 - addValueReference Variants.res:64:4 --> Variants.res:64:20 - addValueReference Variants.res:76:4 --> Variants.res:76:20 - addValueReference Variants.res:80:4 --> Variants.res:80:23 - addValueReference Variants.res:89:4 --> Variants.res:89:11 - addValueReference Variants.res:92:4 --> Variants.res:92:11 - addVariantCaseDeclaration Type Variants.res:95:13 path:+Variants.type_ - addValueReference Variants.res:98:4 --> Variants.res:98:18 - addValueReference Variants.res:98:4 --> Variants.res:98:18 - addValueReference Variants.res:98:4 --> Variants.res:98:18 - addVariantCaseDeclaration Ok Variants.res:102:2 path:+Variants.result1 - addVariantCaseDeclaration Error Variants.res:103:2 path:+Variants.result1 - addValueReference Variants.res:112:4 --> Variants.res:112:19 - addValueReference Variants.res:115:4 --> Variants.res:115:19 - addValueReference Variants.res:118:4 --> Variants.res:118:19 - Scanning VariantsWithPayload.cmt Source:VariantsWithPayload.res - addValueDeclaration +testWithPayload VariantsWithPayload.res:16:4 path:+VariantsWithPayload - addValueDeclaration +printVariantWithPayload VariantsWithPayload.res:19:4 path:+VariantsWithPayload - addValueDeclaration +testManyPayloads VariantsWithPayload.res:37:4 path:+VariantsWithPayload - addValueDeclaration +printManyPayloads VariantsWithPayload.res:40:4 path:+VariantsWithPayload - addValueDeclaration +testSimpleVariant VariantsWithPayload.res:54:4 path:+VariantsWithPayload - addValueDeclaration +testVariantWithPayloads VariantsWithPayload.res:65:4 path:+VariantsWithPayload - addValueDeclaration +printVariantWithPayloads VariantsWithPayload.res:68:4 path:+VariantsWithPayload - addValueDeclaration +testVariant1Int VariantsWithPayload.res:93:4 path:+VariantsWithPayload - addValueDeclaration +testVariant1Object VariantsWithPayload.res:99:4 path:+VariantsWithPayload - addRecordLabelDeclaration x VariantsWithPayload.res:2:2 path:+VariantsWithPayload.payload - addRecordLabelDeclaration y VariantsWithPayload.res:3:2 path:+VariantsWithPayload.payload - addValueReference VariantsWithPayload.res:16:4 --> VariantsWithPayload.res:16:23 - addTypeReference VariantsWithPayload.res:26:57 --> VariantsWithPayload.res:2:2 - addValueReference VariantsWithPayload.res:19:4 --> VariantsWithPayload.res:26:7 - addTypeReference VariantsWithPayload.res:26:74 --> VariantsWithPayload.res:3:2 - addValueReference VariantsWithPayload.res:19:4 --> VariantsWithPayload.res:26:7 - addValueReference VariantsWithPayload.res:19:4 --> VariantsWithPayload.res:19:31 - addValueReference VariantsWithPayload.res:37:4 --> VariantsWithPayload.res:37:24 - addValueReference VariantsWithPayload.res:40:4 --> VariantsWithPayload.res:42:9 - addValueReference VariantsWithPayload.res:40:4 --> VariantsWithPayload.res:43:9 - addValueReference VariantsWithPayload.res:40:4 --> VariantsWithPayload.res:43:13 - addTypeReference VariantsWithPayload.res:44:55 --> VariantsWithPayload.res:2:2 - addValueReference VariantsWithPayload.res:40:4 --> VariantsWithPayload.res:44:11 - addTypeReference VariantsWithPayload.res:44:72 --> VariantsWithPayload.res:3:2 - addValueReference VariantsWithPayload.res:40:4 --> VariantsWithPayload.res:44:11 - addValueReference VariantsWithPayload.res:40:4 --> VariantsWithPayload.res:40:25 - addVariantCaseDeclaration A VariantsWithPayload.res:49:2 path:+VariantsWithPayload.simpleVariant - addVariantCaseDeclaration B VariantsWithPayload.res:50:2 path:+VariantsWithPayload.simpleVariant - addVariantCaseDeclaration C VariantsWithPayload.res:51:2 path:+VariantsWithPayload.simpleVariant - addValueReference VariantsWithPayload.res:54:4 --> VariantsWithPayload.res:54:25 - addVariantCaseDeclaration A VariantsWithPayload.res:58:2 path:+VariantsWithPayload.variantWithPayloads - addVariantCaseDeclaration B VariantsWithPayload.res:59:2 path:+VariantsWithPayload.variantWithPayloads - addVariantCaseDeclaration C VariantsWithPayload.res:60:2 path:+VariantsWithPayload.variantWithPayloads - addVariantCaseDeclaration D VariantsWithPayload.res:61:2 path:+VariantsWithPayload.variantWithPayloads - addVariantCaseDeclaration E VariantsWithPayload.res:62:2 path:+VariantsWithPayload.variantWithPayloads - addValueReference VariantsWithPayload.res:65:4 --> VariantsWithPayload.res:65:31 - addValueReference VariantsWithPayload.res:68:4 --> VariantsWithPayload.res:71:6 - addValueReference VariantsWithPayload.res:68:4 --> VariantsWithPayload.res:72:6 - addValueReference VariantsWithPayload.res:68:4 --> VariantsWithPayload.res:72:9 - addValueReference VariantsWithPayload.res:68:4 --> VariantsWithPayload.res:77:7 - addValueReference VariantsWithPayload.res:68:4 --> VariantsWithPayload.res:77:10 - addValueReference VariantsWithPayload.res:68:4 --> VariantsWithPayload.res:82:6 - addValueReference VariantsWithPayload.res:68:4 --> VariantsWithPayload.res:82:9 - addValueReference VariantsWithPayload.res:68:4 --> VariantsWithPayload.res:82:12 - addValueReference VariantsWithPayload.res:68:4 --> VariantsWithPayload.res:68:31 - addVariantCaseDeclaration R VariantsWithPayload.res:90:19 path:+VariantsWithPayload.variant1Int - addValueReference VariantsWithPayload.res:93:4 --> VariantsWithPayload.res:93:23 - addVariantCaseDeclaration R VariantsWithPayload.res:96:22 path:+VariantsWithPayload.variant1Object - addValueReference VariantsWithPayload.res:99:4 --> VariantsWithPayload.res:99:26 - Implementation 0 - Implementation 0 - Implementation 0 - addValueReference TestDeadExn.res:1:7 --> DeadExn.res:1:0 - -File References - - AutoAnnotate.res -->> - BootloaderResource.res -->> - BucklescriptAnnotations.res -->> - ComponentAsProp.res -->> React.res - CreateErrorHandler1.res -->> ErrorHandler.resi - CreateErrorHandler2.res -->> - DeadCodeImplementation.res -->> - DeadCodeInterface.res -->> - DeadExn.res -->> - DeadExn.resi -->> - DeadRT.res -->> - DeadRT.resi -->> - DeadTest.res -->> React.res, DeadValueTest.resi, DynamicallyLoadedComponent.res, ImmutableArray.resi - DeadTestBlacklist.res -->> - DeadTestWithInterface.res -->> - DeadTypeTest.res -->> - DeadTypeTest.resi -->> DeadTypeTest.res - DeadValueTest.res -->> - DeadValueTest.resi -->> DeadValueTest.res - Docstrings.res -->> - DynamicallyLoadedComponent.res -->> React.res - EmptyArray.res -->> - ErrorHandler.res -->> - ErrorHandler.resi -->> ErrorHandler.res - EverythingLiveHere.res -->> - FirstClassModules.res -->> - FirstClassModulesInterface.res -->> - FirstClassModulesInterface.resi -->> FirstClassModulesInterface.res - Hooks.res -->> React.res, ImportHookDefault.res, ImportHooks.res - IgnoreInterface.res -->> - IgnoreInterface.resi -->> - ImmutableArray.res -->> - ImmutableArray.resi -->> ImmutableArray.res - ImportHookDefault.res -->> - ImportHooks.res -->> - ImportIndex.res -->> - ImportJsValue.res -->> - ImportMyBanner.res -->> - InnerModuleTypes.res -->> - InnerModuleTypes.resi -->> - JSResource.res -->> - JsxV4.res -->> React.res - LetPrivate.res -->> - ModuleAliases.res -->> - ModuleAliases2.res -->> - ModuleExceptionBug.res -->> - NestedModules.res -->> - NestedModulesInSignature.res -->> - NestedModulesInSignature.resi -->> NestedModulesInSignature.res - Newsyntax.res -->> - Newton.res -->> - Opaque.res -->> - OptArg.res -->> - OptArg.resi -->> OptArg.res - Records.res -->> - References.res -->> - RepeatedLabel.res -->> - RequireCond.res -->> - Shadow.res -->> - TestDeadExn.res -->> DeadExn.res - TestEmitInnerModules.res -->> - TestFirstClassModules.res -->> - TestImmutableArray.res -->> ImmutableArray.resi - TestImport.res -->> - TestInnedModuleTypes.res -->> - TestModuleAliases.res -->> - TestOptArg.res -->> OptArg.resi - TestPromise.res -->> - ToSuppress.res -->> - TransitiveType1.res -->> - TransitiveType2.res -->> - TransitiveType3.res -->> - Tuples.res -->> - TypeParams1.res -->> - TypeParams2.res -->> - TypeParams3.res -->> - Types.res -->> - Unboxed.res -->> - Uncurried.res -->> - Unison.res -->> - UseImportJsValue.res -->> ImportJsValue.res - Variants.res -->> - VariantsWithPayload.res -->> - Dead VariantCase +AutoAnnotate.annotatedVariant.R4: 0 references () [0] - Dead VariantCase +AutoAnnotate.annotatedVariant.R2: 0 references () [0] - Dead RecordLabel +AutoAnnotate.r4.r4: 0 references () [0] - Dead RecordLabel +AutoAnnotate.r3.r3: 0 references () [0] - Dead RecordLabel +AutoAnnotate.r2.r2: 0 references () [0] - Dead RecordLabel +AutoAnnotate.record.variant: 0 references () [0] - Dead VariantCase +AutoAnnotate.variant.R: 0 references () [0] - Dead Value +BucklescriptAnnotations.+bar: 0 references () [1] - Dead Value +BucklescriptAnnotations.+f: 0 references () [0] - Live RecordLabel +ComponentAsProp.props.button: 1 references (_none_:1:-1) [0] - Live RecordLabel +ComponentAsProp.props.description: 1 references (_none_:1:-1) [0] - Live RecordLabel +ComponentAsProp.props.title: 1 references (_none_:1:-1) [0] - Live Value +ComponentAsProp.+make: 0 references () [0] - Live Value +CreateErrorHandler1.Error1.+notification: 1 references (ErrorHandler.resi:3:2) [0] - Live Value +CreateErrorHandler2.Error2.+notification: 1 references (ErrorHandler.resi:3:2) [0] - Live Value +DeadCodeImplementation.M.+x: 1 references (DeadCodeInterface.res:2:2) [0] - Dead Value +DeadRT.+emitModuleAccessPath: 0 references () [0] - Live VariantCase +DeadRT.moduleAccessPath.Kaboom: 1 references (DeadRT.res:11:16) [0] - Live VariantCase DeadRT.moduleAccessPath.Root: 1 references (DeadTest.res:98:16) [1] - Live VariantCase +DeadRT.moduleAccessPath.Root: 1 references (DeadRT.resi:2:2) [0] - Live VariantCase DeadRT.moduleAccessPath.Kaboom: 1 references (DeadRT.res:3:2) [0] - Dead RecordLabel +DeadTest.inlineRecord3.IR3.b: 0 references () [0] - Dead RecordLabel +DeadTest.inlineRecord3.IR3.a: 0 references () [0] - Dead VariantCase +DeadTest.inlineRecord3.IR3: 0 references () [0] - Dead RecordLabel +DeadTest.inlineRecord2.IR2.b: 0 references () [0] - Dead RecordLabel +DeadTest.inlineRecord2.IR2.a: 0 references () [0] - Dead VariantCase +DeadTest.inlineRecord2.IR2: 0 references () [0] - Dead Value +DeadTest.+_: 0 references () [0] - Live Value +DeadTest.+ira: 1 references (DeadTest.res:163:27) [0] - Live RecordLabel +DeadTest.inlineRecord.IR.e: 0 references () [0] - Dead RecordLabel +DeadTest.inlineRecord.IR.d: 0 references () [0] - Live RecordLabel +DeadTest.inlineRecord.IR.c: 1 references (DeadTest.res:163:7) [0] - Live RecordLabel +DeadTest.inlineRecord.IR.b: 1 references (DeadTest.res:163:35) [0] - Dead RecordLabel +DeadTest.inlineRecord.IR.a: 0 references () [0] - Live VariantCase +DeadTest.inlineRecord.IR: 1 references (DeadTest.res:163:20) [0] - Dead Value +DeadTest.+_: 0 references () [0] - Live Value +DeadTest.+deadIncorrect: 1 references (DeadTest.res:156:8) [0] - Dead RecordLabel +DeadTest.rc.a: 0 references () [0] - Dead Value +DeadTest.+funWithInnerVars: 0 references () [1] - Dead Value +DeadTest.+y: 0 references () [0] - Dead Value +DeadTest.+x: 0 references () [0] - Live VariantCase +DeadTest.WithInclude.t.A: 1 references (DeadTest.res:142:7) [1] - Live VariantCase +DeadTest.WithInclude.t.A: 1 references (DeadTest.res:134:11) [0] - Live Value +DeadTest.GloobLive.+globallyLive3: 0 references () [0] - Live Value +DeadTest.GloobLive.+globallyLive2: 0 references () [0] - Live Value +DeadTest.GloobLive.+globallyLive1: 0 references () [0] - Dead Value +DeadTest.+stringLengthNoSideEffects: 0 references () [0] - Dead Value +DeadTest.+theSideEffectIsLogging: 0 references () [0] - Live RecordLabel +DeadTest.props.s: 1 references (_none_:1:-1) [0] - Live Value +DeadTest.+make: 1 references (DeadTest.res:119:16) [0] - Dead Value +DeadTest.+deadRef: 0 references () [0] - Dead Value +DeadTest.+second: 0 references () [0] - Dead Value +DeadTest.+a3: 0 references () [0] - Dead Value +DeadTest.+a2: 0 references () [0] - Dead Value +DeadTest.+a1: 0 references () [0] - Dead Value +DeadTest.+zzz: 0 references () [0] - Dead Value +DeadTest.+withDefaultValue: 0 references () [0] - Dead Value +DeadTest.+bar: 0 references () [0] - Dead Value +DeadTest.+foo: 0 references () [1] - Dead Value +DeadTest.+cb: 0 references () [0] - Dead Value +DeadTest.+cb: 0 references () [0] - Dead Value +DeadTest.+recWithCallback: 0 references () [0] - Dead Value +DeadTest.+rec2: 0 references () [0] - Dead Value +DeadTest.+rec1: 0 references () [0] - Dead Value +DeadTest.+split_map: 0 references () [0] - Dead Value +DeadTest.+unusedRec: 0 references () [0] - Dead Value +DeadTest.MM.+valueOnlyInImplementation: 0 references () [0] - Live Value +DeadTest.MM.+x: 1 references (DeadTest.res:69:9) [1] - Live Value +DeadTest.MM.+x: 1 references (DeadTest.res:60:2) [0] - Dead Value +DeadTest.MM.+y: 0 references () [1] - Live Value +DeadTest.MM.+y: 1 references (DeadTest.res:64:6) [0] - Dead Value +DeadTest.UnderscoreInside.+_: 0 references () [0] - Dead Value +DeadTest.+_: 0 references () [0] - Dead Value +DeadTest.+_: 0 references () [0] - Live RecordLabel +DeadTest.record.yyy: 1 references (DeadTest.res:53:9) [0] - Live RecordLabel +DeadTest.record.xxx: 1 references (DeadTest.res:52:13) [0] - Dead Value +DeadTest.+_: 0 references () [0] - Dead Value +DeadTest.+_: 0 references () [0] - Live Value +DeadTest.VariantUsedOnlyInImplementation.+a: 1 references (DeadTest.res:42:17) [1] - Live Value +DeadTest.VariantUsedOnlyInImplementation.+a: 1 references (DeadTest.res:36:2) [0] - Live VariantCase +DeadTest.VariantUsedOnlyInImplementation.t.A: 1 references (DeadTest.res:39:10) [0] - Live VariantCase +DeadTest.VariantUsedOnlyInImplementation.t.A: 1 references (DeadTest.res:38:11) [0] - Dead Value +DeadTest.M.+thisSignatureItemIsDead: 0 references () [1] - Dead Value +DeadTest.M.+thisSignatureItemIsDead: 0 references () [0] - Dead Value +DeadTest.Inner.+thisIsAlsoMarkedDead: 0 references () [0] - Live Value +DeadTest.+thisIsMarkedLive: 0 references () [0] - Live Value +DeadTest.+thisIsKeptAlive: 1 references (DeadTest.res:20:4) [0] - Dead Value +DeadTest.+thisIsMarkedDead: 0 references () [0] - Live Value +DeadTest.+thisIsUsedTwice: 2 references (DeadTest.res:11:7, DeadTest.res:12:7) [0] - Live Value +DeadTest.+thisIsUsedOnce: 1 references (DeadTest.res:8:7) [0] - Live Value +DeadTest.+fortyTwoButExported: 0 references () [0] - Dead Value +DeadTest.+fortytwo: 0 references () [0] - Dead Value +DeadTestBlacklist.+x: 0 references () [0] - Dead Value +DeadTestWithInterface.Ext_buffer.+x: 0 references () [1] - Dead Value +DeadTestWithInterface.Ext_buffer.+x: 0 references () [0] - Dead VariantCase DeadTypeTest.deadType.InNeither: 0 references () [0] - Live VariantCase +DeadTypeTest.deadType.InBoth: 1 references (DeadTypeTest.res:13:8) [1] - Live VariantCase DeadTypeTest.deadType.InBoth: 2 references (DeadTest.res:45:8, DeadTypeTest.res:9:2) [0] - Live VariantCase DeadTypeTest.deadType.OnlyInInterface: 1 references (DeadTest.res:44:8) [0] - Live VariantCase +DeadTypeTest.deadType.OnlyInImplementation: 1 references (DeadTypeTest.res:12:8) [1] - Live VariantCase DeadTypeTest.deadType.OnlyInImplementation: 1 references (DeadTypeTest.res:7:2) [0] - Dead Value DeadTypeTest.+a: 0 references () [0] - Dead VariantCase DeadTypeTest.t.B: 0 references () [0] - Live VariantCase +DeadTypeTest.t.A: 1 references (DeadTypeTest.res:4:8) [1] - Live VariantCase DeadTypeTest.t.A: 1 references (DeadTypeTest.res:2:2) [0] - Live Value +Docstrings.+unitArgWithConversionU: 0 references () [0] - Live Value +Docstrings.+unitArgWithConversion: 0 references () [0] - Dead VariantCase +Docstrings.t.B: 0 references () [0] - Live VariantCase +Docstrings.t.A: 2 references (Docstrings.res:64:34, Docstrings.res:67:39) [0] - Live Value +Docstrings.+unitArgWithoutConversionU: 0 references () [0] - Live Value +Docstrings.+unitArgWithoutConversion: 0 references () [0] - Live Value +Docstrings.+grouped: 0 references () [0] - Live Value +Docstrings.+unnamed2U: 0 references () [0] - Live Value +Docstrings.+unnamed2: 0 references () [0] - Live Value +Docstrings.+unnamed1U: 0 references () [0] - Live Value +Docstrings.+unnamed1: 0 references () [0] - Live Value +Docstrings.+useParamU: 0 references () [0] - Live Value +Docstrings.+useParam: 0 references () [0] - Live Value +Docstrings.+treeU: 0 references () [0] - Live Value +Docstrings.+twoU: 0 references () [0] - Live Value +Docstrings.+oneU: 0 references () [0] - Live Value +Docstrings.+tree: 0 references () [0] - Live Value +Docstrings.+two: 0 references () [0] - Live Value +Docstrings.+one: 0 references () [0] - Live Value +Docstrings.+signMessage: 0 references () [0] - Live Value +Docstrings.+flat: 0 references () [0] - Live Value +EmptyArray.Z.+make: 1 references (EmptyArray.res:10:9) [0] - Dead Value +EverythingLiveHere.+z: 0 references () [0] - Dead Value +EverythingLiveHere.+y: 0 references () [0] - Dead Value +EverythingLiveHere.+x: 0 references () [0] - Live Value +FirstClassModules.+someFunctorAsFunction: 0 references () [0] - Live Value +FirstClassModules.SomeFunctor.+ww: 1 references (FirstClassModules.res:57:2) [0] - Live Value +FirstClassModules.+testConvert: 0 references () [0] - Live Value +FirstClassModules.+firstClassModule: 0 references () [0] - Live Value +FirstClassModules.M.+x: 1 references (FirstClassModules.res:2:2) [0] - Live Value +FirstClassModules.M.Z.+u: 1 references (FirstClassModules.res:37:4) [0] - Live Value +FirstClassModules.M.InnerModule3.+k3: 1 references (FirstClassModules.res:14:4) [0] - Live Value +FirstClassModules.M.InnerModule2.+k: 1 references (FirstClassModules.res:10:4) [0] - Live Value +FirstClassModules.M.+y: 1 references (FirstClassModules.res:20:2) [0] - Dead Value FirstClassModulesInterface.+r: 0 references () [0] - Dead RecordLabel FirstClassModulesInterface.record.y: 0 references () [0] - Dead RecordLabel FirstClassModulesInterface.record.x: 0 references () [0] - Live Value +Hooks.RenderPropRequiresConversion.+car: 1 references (Hooks.res:65:30) [0] - Live RecordLabel +Hooks.RenderPropRequiresConversion.props.renderVehicle: 1 references (_none_:1:-1) [0] - Live Value +Hooks.RenderPropRequiresConversion.+make: 0 references () [0] - Dead RecordLabel +Hooks.r.x: 0 references () [0] - Live Value +Hooks.+functionWithRenamedArgs: 0 references () [0] - Live Value +Hooks.NoProps.+make: 0 references () [0] - Live RecordLabel +Hooks.Inner.Inner2.props.vehicle: 1 references (_none_:1:-1) [0] - Live Value +Hooks.Inner.Inner2.+make: 0 references () [0] - Live RecordLabel +Hooks.Inner.props.vehicle: 1 references (_none_:1:-1) [0] - Live Value +Hooks.Inner.+make: 0 references () [0] - Live Value +Hooks.+default: 0 references () [0] - Live RecordLabel +Hooks.props.vehicle: 1 references (_none_:1:-1) [0] - Live Value +Hooks.+make: 1 references (Hooks.res:25:4) [0] - Live RecordLabel +Hooks.vehicle.name: 5 references (Hooks.res:10:29, Hooks.res:29:66, Hooks.res:33:68, Hooks.res:47:2, Hooks.res:47:14) [0] - Live RecordLabel +ImportIndex.props.method: 0 references () [0] - Live Value +ImportIndex.+make: 0 references () [0] - Dead Value +ImportMyBanner.+make: 0 references () [0] - Live Value +ImportMyBanner.+make: 0 references () [0] - Dead RecordLabel +ImportMyBanner.message.text: 0 references () [0] - Live VariantCase InnerModuleTypes.I.t.Foo: 1 references (TestInnedModuleTypes.res:1:8) [1] - Live VariantCase +InnerModuleTypes.I.t.Foo: 1 references (InnerModuleTypes.resi:2:11) [0] - Live Value +JsxV4.C.+make: 1 references (JsxV4.res:7:9) [0] - Live Value +LetPrivate.+y: 0 references () [0] - Live Value +LetPrivate.local_1.+x: 1 references (LetPrivate.res:7:4) [0] - Live Value +ModuleAliases.+testInner2: 0 references () [0] - Live Value +ModuleAliases.+testInner: 0 references () [0] - Live Value +ModuleAliases.+testNested: 0 references () [0] - Dead RecordLabel +ModuleAliases.Outer2.Inner2.InnerNested.t.nested: 0 references () [0] - Dead RecordLabel +ModuleAliases.Outer.Inner.innerT.inner: 0 references () [0] - Dead Value +ModuleAliases2.+q: 0 references () [0] - Dead RecordLabel +ModuleAliases2.Outer.Inner.inner.inner: 0 references () [0] - Dead RecordLabel +ModuleAliases2.Outer.outer.outer: 0 references () [0] - Dead RecordLabel +ModuleAliases2.record.y: 0 references () [0] - Dead RecordLabel +ModuleAliases2.record.x: 0 references () [0] - Live Value +ModuleExceptionBug.+ddjdj: 1 references (ModuleExceptionBug.res:8:7) [0] - Dead Exception +ModuleExceptionBug.MyOtherException: 0 references () [0] - Dead Value +ModuleExceptionBug.Dep.+customDouble: 0 references () [0] - Live Value +NestedModules.Universe.+someString: 0 references () [0] - Dead VariantCase +NestedModules.Universe.variant.B: 0 references () [0] - Dead VariantCase +NestedModules.Universe.variant.A: 0 references () [0] - Live Value +NestedModules.Universe.Nested2.+nested2Function: 0 references () [0] - Live Value +NestedModules.Universe.Nested2.Nested3.+nested3Function: 0 references () [0] - Live Value +NestedModules.Universe.Nested2.Nested3.+nested3Value: 0 references () [0] - Dead Value +NestedModules.Universe.Nested2.Nested3.+w: 0 references () [0] - Dead Value +NestedModules.Universe.Nested2.Nested3.+z: 0 references () [0] - Dead Value +NestedModules.Universe.Nested2.Nested3.+y: 0 references () [0] - Dead Value +NestedModules.Universe.Nested2.Nested3.+x: 0 references () [0] - Dead Value +NestedModules.Universe.Nested2.+y: 0 references () [0] - Live Value +NestedModules.Universe.Nested2.+nested2Value: 0 references () [0] - Dead Value +NestedModules.Universe.Nested2.+x: 0 references () [0] - Dead Value +NestedModules.Universe.+notExported: 0 references () [0] - Live Value +NestedModules.Universe.+theAnswer: 0 references () [0] - Live Value +NestedModules.+notNested: 0 references () [0] - Live Value NestedModulesInSignature.Universe.+theAnswer: 0 references () [0] - Dead RecordLabel +Newsyntax.record2.yy: 0 references () [0] - Dead RecordLabel +Newsyntax.record2.xx: 0 references () [0] - Dead VariantCase +Newsyntax.variant.C: 0 references () [0] - Dead VariantCase +Newsyntax.variant.B: 0 references () [0] - Dead VariantCase +Newsyntax.variant.A: 0 references () [0] - Dead RecordLabel +Newsyntax.record.yyy: 0 references () [0] - Dead RecordLabel +Newsyntax.record.xxx: 0 references () [0] - Dead Value +Newsyntax.+y: 0 references () [0] - Dead Value +Newsyntax.+x: 0 references () [0] - Live Value +Newton.+result: 2 references (Newton.res:31:8, Newton.res:31:18) [0] - Live Value +Newton.+fPrimed: 1 references (Newton.res:29:4) [0] - Live Value +Newton.+f: 2 references (Newton.res:29:4, Newton.res:31:16) [0] - Live Value +Newton.+newton: 1 references (Newton.res:29:4) [2] - Live Value +Newton.+loop: 1 references (Newton.res:6:4) [1] - Live Value +Newton.+next: 1 references (Newton.res:14:10) [0] - Live Value +Newton.+previous: 2 references (Newton.res:14:10, Newton.res:16:8) [0] - Live Value +Newton.+iterateMore: 1 references (Newton.res:14:10) [1] - Live Value +Newton.+delta: 1 references (Newton.res:8:6) [0] - Live Value +Newton.+current: 3 references (Newton.res:8:6, Newton.res:14:10, Newton.res:15:8) [0] - Live Value +Newton.+/: 1 references (Newton.res:16:8) [0] - Live Value +Newton.+*: 2 references (Newton.res:25:4, Newton.res:27:4) [0] - Live Value +Newton.++: 1 references (Newton.res:25:4) [0] - Live Value +Newton.+-: 4 references (Newton.res:9:8, Newton.res:16:8, Newton.res:25:4, Newton.res:27:4) [0] - Live Value +Opaque.+testConvertNestedRecordFromOtherFile: 0 references () [0] - Live Value +Opaque.+noConversion: 0 references () [0] - Dead VariantCase +Opaque.opaqueFromRecords.A: 0 references () [0] - Live Value +Records.+testMyRecBsAs2: 0 references () [0] - Live Value +Records.+testMyRecBsAs: 0 references () [0] - Live RecordLabel +Records.myRecBsAs.type_: 1 references (Records.res:145:38) [0] - Live Value +Records.+testMyObj2: 0 references () [0] - Live Value +Records.+testMyObj: 0 references () [0] - Live Value +Records.+testMyRec2: 0 references () [0] - Live Value +Records.+testMyRec: 0 references () [0] - Live RecordLabel +Records.myRec.type_: 1 references (Records.res:127:30) [0] - Live Value +Records.+computeArea4: 0 references () [0] - Live Value +Records.+computeArea3: 0 references () [0] - Live Value +Records.+someBusiness2: 0 references () [0] - Live Value +Records.+findAddress2: 0 references () [0] - Live RecordLabel +Records.business2.address2: 1 references (Records.res:97:2) [0] - Dead RecordLabel +Records.business2.owner: 0 references () [0] - Dead RecordLabel +Records.business2.name: 0 references () [0] - Live Value +Records.+getPayloadRecordPlusOne: 0 references () [0] - Live Value +Records.+payloadValue: 0 references () [0] - Live Value +Records.+recordValue: 1 references (Records.res:80:4) [0] - Live Value +Records.+getPayloadRecord: 0 references () [0] - Dead RecordLabel +Records.record.w: 0 references () [0] - Live RecordLabel +Records.record.v: 1 references (Records.res:85:5) [0] - Live Value +Records.+getPayload: 0 references () [0] - Live RecordLabel +Records.payload.payload: 3 references (Records.res:65:18, Records.res:74:24, Records.res:83:31) [0] - Dead RecordLabel +Records.payload.num: 0 references () [0] - Live Value +Records.+findAllAddresses: 0 references () [0] - Live Value +Records.+someBusiness: 0 references () [0] - Live Value +Records.+findAddress: 0 references () [0] - Live Value +Records.+getOpt: 3 references (Records.res:39:4, Records.res:46:4, Records.res:96:4) [0] - Live RecordLabel +Records.business.address: 2 references (Records.res:40:2, Records.res:50:6) [0] - Live RecordLabel +Records.business.owner: 1 references (Records.res:51:6) [0] - Dead RecordLabel +Records.business.name: 0 references () [0] - Live RecordLabel +Records.person.address: 1 references (Records.res:51:42) [0] - Dead RecordLabel +Records.person.age: 0 references () [0] - Dead RecordLabel +Records.person.name: 0 references () [0] - Live Value +Records.+coord2d: 0 references () [0] - Live Value +Records.+computeArea: 0 references () [0] - Live Value +Records.+origin: 0 references () [0] - Live RecordLabel +Records.coord.z: 1 references (Records.res:14:19) [0] - Live RecordLabel +Records.coord.y: 1 references (Records.res:14:19) [0] - Live RecordLabel +Records.coord.x: 1 references (Records.res:14:19) [0] - Live Value +References.+preserveRefIdentity: 0 references () [0] - Live Value +References.+destroysRefIdentity: 0 references () [0] - Dead RecordLabel +References.requiresConversion.x: 0 references () [0] - Live Value +References.+set: 0 references () [0] - Live Value +References.+make: 0 references () [0] - Live Value +References.+get: 0 references () [0] - Live Value +References.R.+set: 1 references (References.res:37:4) [1] - Live Value +References.R.+set: 1 references (References.res:19:2) [0] - Live Value +References.R.+make: 1 references (References.res:34:4) [1] - Live Value +References.R.+make: 1 references (References.res:18:2) [0] - Live Value +References.R.+get: 1 references (References.res:31:4) [1] - Live Value +References.R.+get: 1 references (References.res:17:2) [0] - Live Value +References.+update: 0 references () [0] - Live Value +References.+access: 0 references () [0] - Live Value +References.+create: 0 references () [0] - Live Value +RepeatedLabel.+userData: 1 references (RepeatedLabel.res:14:7) [0] - Dead RecordLabel +RepeatedLabel.tabState.f: 0 references () [0] - Live RecordLabel +RepeatedLabel.tabState.b: 1 references (RepeatedLabel.res:12:16) [0] - Live RecordLabel +RepeatedLabel.tabState.a: 1 references (RepeatedLabel.res:12:16) [0] - Dead RecordLabel +RepeatedLabel.userData.b: 0 references () [0] - Dead RecordLabel +RepeatedLabel.userData.a: 0 references () [0] - Dead Value +Shadow.M.+test: 0 references () [0] - Live Value +Shadow.M.+test: 0 references () [0] - Live Value +Shadow.+test: 0 references () [0] - Live Value +Shadow.+test: 0 references () [0] - Live Value +TestEmitInnerModules.Outer.Medium.Inner.+y: 0 references () [0] - Live Value +TestEmitInnerModules.Inner.+y: 0 references () [0] - Live Value +TestEmitInnerModules.Inner.+x: 0 references () [0] - Live Value +TestFirstClassModules.+convertFirstClassModuleWithTypeEquations: 0 references () [0] - Live Value +TestFirstClassModules.+convertRecord: 0 references () [0] - Live Value +TestFirstClassModules.+convertInterface: 0 references () [0] - Live Value +TestFirstClassModules.+convert: 0 references () [0] - Dead Value +TestImmutableArray.+testBeltArraySet: 0 references () [0] - Dead Value +TestImmutableArray.+testBeltArrayGet: 0 references () [0] - Live Value +TestImmutableArray.+testImmutableArrayGet: 0 references () [0] - Live Value +TestImport.+defaultValue2: 0 references () [0] - Dead Value +TestImport.+make: 0 references () [0] - Live Value +TestImport.+make: 0 references () [0] - Dead RecordLabel +TestImport.message.text: 0 references () [0] - Live Value +TestImport.+defaultValue: 0 references () [0] - Live Value +TestImport.+valueStartingWithUpperCaseLetter: 0 references () [0] - Dead Value +TestImport.+innerStuffContents: 0 references () [0] - Live Value +TestImport.+innerStuffContentsAsEmptyObject: 0 references () [0] - Live Value +TestImport.+innerStuffContents: 0 references () [0] - Dead Value +TestInnedModuleTypes.+_: 0 references () [0] - Live Value +TestModuleAliases.+testInner2Expanded: 0 references () [0] - Live Value +TestModuleAliases.+testInner2: 0 references () [0] - Live Value +TestModuleAliases.+testInner1Expanded: 0 references () [0] - Live Value +TestModuleAliases.+testInner1: 0 references () [0] - Live Value +TestOptArg.+liveSuppressesOptArgs: 1 references (TestOptArg.res:16:8) [0] - Live Value +TestOptArg.+notSuppressesOptArgs: 1 references (TestOptArg.res:11:8) [0] - Live Value +TestOptArg.+bar: 1 references (TestOptArg.res:7:7) [0] - Live Value +TestOptArg.+foo: 1 references (TestOptArg.res:5:4) [0] - Live Value +TestPromise.+convert: 0 references () [0] - Dead RecordLabel +TestPromise.toPayload.result: 0 references () [0] - Live RecordLabel +TestPromise.fromPayload.s: 1 references (TestPromise.res:14:32) [0] - Dead RecordLabel +TestPromise.fromPayload.x: 0 references () [0] - Dead Value +ToSuppress.+toSuppress: 0 references () [0] - Live Value +TransitiveType1.+convertAlias: 0 references () [0] - Live Value +TransitiveType1.+convert: 0 references () [0] - Dead Value +TransitiveType2.+convertT2: 0 references () [0] - Live Value +TransitiveType3.+convertT3: 0 references () [0] - Dead RecordLabel +TransitiveType3.t3.s: 0 references () [0] - Dead RecordLabel +TransitiveType3.t3.i: 0 references () [0] - Live Value +Tuples.+changeSecondAge: 0 references () [0] - Live Value +Tuples.+marry: 0 references () [0] - Live Value +Tuples.+getFirstName: 0 references () [0] - Live RecordLabel +Tuples.person.age: 1 references (Tuples.res:49:84) [0] - Live RecordLabel +Tuples.person.name: 1 references (Tuples.res:43:49) [0] - Live Value +Tuples.+coord2d: 0 references () [0] - Live Value +Tuples.+computeAreaNoConverters: 0 references () [0] - Live Value +Tuples.+computeAreaWithIdent: 0 references () [0] - Live Value +Tuples.+computeArea: 0 references () [0] - Live Value +Tuples.+origin: 0 references () [0] - Live Value +Tuples.+testTuple: 0 references () [0] - Dead Value +TypeParams1.+exportSomething: 0 references () [0] - Dead Value +TypeParams2.+exportSomething: 0 references () [0] - Dead RecordLabel +TypeParams2.item.id: 0 references () [0] - Live Value +TypeParams3.+test2: 0 references () [0] - Live Value +TypeParams3.+test: 0 references () [0] - Dead Value +Types.ObjectId.+x: 0 references () [0] - Live Value +Types.+optFunction: 0 references () [0] - Live Value +Types.+i64Const: 0 references () [0] - Live Value +Types.+currentTime: 0 references () [0] - Live Value +Types.+testInstantiateTypeParameter: 0 references () [0] - Dead RecordLabel +Types.someRecord.id: 0 references () [0] - Live Value +Types.+setMatch: 0 references () [0] - Live Value +Types.+testMarshalFields: 0 references () [0] - Live Value +Types.+testConvertNull: 0 references () [0] - Dead RecordLabel +Types.record.s: 0 references () [0] - Dead RecordLabel +Types.record.i: 0 references () [0] - Live Value +Types.+jsonStringify: 0 references () [0] - Live Value +Types.+jsString2T: 0 references () [0] - Live Value +Types.+jsStringT: 0 references () [0] - Dead VariantCase +Types.opaqueVariant.B: 0 references () [0] - Dead VariantCase +Types.opaqueVariant.A: 0 references () [0] - Live Value +Types.+testFunctionOnOptionsAsArgument: 0 references () [0] - Live Value +Types.+mutuallyRecursiveConverter: 0 references () [0] - Live Value +Types.+selfRecursiveConverter: 0 references () [0] - Dead RecordLabel +Types.mutuallyRecursiveB.a: 0 references () [0] - Live RecordLabel +Types.mutuallyRecursiveA.b: 1 references (Types.res:49:34) [0] - Live RecordLabel +Types.selfRecursive.self: 1 references (Types.res:42:30) [0] - Live Value +Types.+swap: 0 references () [0] - Dead VariantCase +Types.typeWithVars.B: 0 references () [0] - Dead VariantCase +Types.typeWithVars.A: 0 references () [0] - Live Value +Types.+map: 0 references () [0] - Live Value +Types.+someIntList: 0 references () [0] - Live Value +Unboxed.+r2Test: 0 references () [0] - Dead RecordLabel +Unboxed.r2.B.g: 0 references () [0] - Dead VariantCase +Unboxed.r2.B: 0 references () [0] - Dead RecordLabel +Unboxed.r1.x: 0 references () [0] - Live Value +Unboxed.+testV1: 0 references () [0] - Dead VariantCase +Unboxed.v2.A: 0 references () [0] - Dead VariantCase +Unboxed.v1.A: 0 references () [0] - Live Value +Uncurried.+sumLblCurried: 0 references () [0] - Live Value +Uncurried.+sumCurried: 0 references () [0] - Live Value +Uncurried.+sumU2: 0 references () [0] - Live Value +Uncurried.+sumU: 0 references () [0] - Live Value +Uncurried.+callback2U: 0 references () [0] - Live Value +Uncurried.+callback2: 0 references () [0] - Live RecordLabel +Uncurried.authU.loginU: 1 references (Uncurried.res:38:25) [0] - Live RecordLabel +Uncurried.auth.login: 1 references (Uncurried.res:35:24) [0] - Live Value +Uncurried.+callback: 0 references () [0] - Live Value +Uncurried.+curried3: 0 references () [0] - Live Value +Uncurried.+uncurried3: 0 references () [0] - Live Value +Uncurried.+uncurried2: 0 references () [0] - Live Value +Uncurried.+uncurried1: 0 references () [0] - Live Value +Uncurried.+uncurried0: 0 references () [0] - Live Value +Unison.+toString: 3 references (Unison.res:37:0, Unison.res:38:0, Unison.res:39:0) [0] - Live Value +Unison.+fits: 1 references (Unison.res:26:8) [0] - Live Value +Unison.+group: 2 references (Unison.res:38:25, Unison.res:39:25) [0] - Live VariantCase +Unison.stack.Cons: 2 references (Unison.res:38:20, Unison.res:39:20) [0] - Live VariantCase +Unison.stack.Empty: 3 references (Unison.res:37:20, Unison.res:38:53, Unison.res:39:52) [0] - Live RecordLabel +Unison.t.doc: 2 references (Unison.res:23:9, Unison.res:28:9) [0] - Live RecordLabel +Unison.t.break: 1 references (Unison.res:28:9) [0] - Live VariantCase +Unison.break.Always: 1 references (Unison.res:39:38) [0] - Live VariantCase +Unison.break.Never: 1 references (Unison.res:38:38) [0] - Live VariantCase +Unison.break.IfNeed: 1 references (Unison.res:17:20) [0] - Live Value +UseImportJsValue.+useTypeImportedInOtherModule: 0 references () [0] - Live Value +UseImportJsValue.+useGetProp: 0 references () [0] - Live Value +Variants.+restResult3: 0 references () [0] - Live Value +Variants.+restResult2: 0 references () [0] - Live Value +Variants.+restResult1: 0 references () [0] - Dead VariantCase +Variants.result1.Error: 0 references () [0] - Dead VariantCase +Variants.result1.Ok: 0 references () [0] - Live Value +Variants.+polyWithOpt: 0 references () [0] - Dead VariantCase +Variants.type_.Type: 0 references () [0] - Live Value +Variants.+id2: 0 references () [0] - Live Value +Variants.+id1: 0 references () [0] - Live Value +Variants.+testConvert2to3: 0 references () [0] - Live Value +Variants.+testConvert3: 0 references () [0] - Live Value +Variants.+testConvert2: 0 references () [0] - Live Value +Variants.+fortytwoBAD: 0 references () [0] - Live Value +Variants.+fortytwoOK: 0 references () [0] - Live Value +Variants.+testConvert: 0 references () [0] - Live Value +Variants.+swap: 0 references () [0] - Live Value +Variants.+onlySunday: 0 references () [0] - Live Value +Variants.+sunday: 0 references () [0] - Live Value +Variants.+saturday: 0 references () [0] - Live Value +Variants.+monday: 0 references () [0] - Live Value +Variants.+isWeekend: 0 references () [0] - Live Value +VariantsWithPayload.+testVariant1Object: 0 references () [0] - Dead VariantCase +VariantsWithPayload.variant1Object.R: 0 references () [0] - Live Value +VariantsWithPayload.+testVariant1Int: 0 references () [0] - Dead VariantCase +VariantsWithPayload.variant1Int.R: 0 references () [0] - Live Value +VariantsWithPayload.+printVariantWithPayloads: 0 references () [0] - Live Value +VariantsWithPayload.+testVariantWithPayloads: 0 references () [0] - Dead VariantCase +VariantsWithPayload.variantWithPayloads.E: 0 references () [0] - Dead VariantCase +VariantsWithPayload.variantWithPayloads.D: 0 references () [0] - Dead VariantCase +VariantsWithPayload.variantWithPayloads.C: 0 references () [0] - Dead VariantCase +VariantsWithPayload.variantWithPayloads.B: 0 references () [0] - Dead VariantCase +VariantsWithPayload.variantWithPayloads.A: 0 references () [0] - Live Value +VariantsWithPayload.+testSimpleVariant: 0 references () [0] - Dead VariantCase +VariantsWithPayload.simpleVariant.C: 0 references () [0] - Dead VariantCase +VariantsWithPayload.simpleVariant.B: 0 references () [0] - Dead VariantCase +VariantsWithPayload.simpleVariant.A: 0 references () [0] - Live Value +VariantsWithPayload.+printManyPayloads: 0 references () [0] - Live Value +VariantsWithPayload.+testManyPayloads: 0 references () [0] - Live Value +VariantsWithPayload.+printVariantWithPayload: 0 references () [0] - Live Value +VariantsWithPayload.+testWithPayload: 0 references () [0] - Live RecordLabel +VariantsWithPayload.payload.y: 2 references (VariantsWithPayload.res:26:74, VariantsWithPayload.res:44:72) [0] - Live RecordLabel +VariantsWithPayload.payload.x: 2 references (VariantsWithPayload.res:26:57, VariantsWithPayload.res:44:55) [0] - Live Value +DeadExn.+eInside: 1 references (DeadExn.res:12:7) [0] - Dead Value +DeadExn.+eToplevel: 0 references () [0] - Dead Exception +DeadExn.DeadE: 0 references () [0] - Live Exception +DeadExn.Inside.Einside: 1 references (DeadExn.res:10:14) [0] - Live Exception +DeadExn.Etoplevel: 1 references (DeadExn.res:8:16) [0] - Live RecordLabel +DeadTypeTest.record.z: 0 references () [0] - Live RecordLabel +DeadTypeTest.record.y: 0 references () [0] - Live RecordLabel +DeadTypeTest.record.x: 0 references () [0] - Dead Value +DeadTypeTest.+_: 0 references () [0] - Dead Value +DeadTypeTest.+_: 0 references () [0] - Dead VariantCase +DeadTypeTest.deadType.InNeither: 0 references () [0] - Live VariantCase +DeadTypeTest.deadType.OnlyInInterface: 1 references (DeadTypeTest.resi:8:2) [0] - Dead Value +DeadTypeTest.+a: 0 references () [0] - Dead VariantCase +DeadTypeTest.t.B: 0 references () [0] - Dead Value DeadValueTest.+valueDead: 0 references () [0] - Live Value DeadValueTest.+valueAlive: 1 references (DeadTest.res:73:16) [0] - Live RecordLabel +DynamicallyLoadedComponent.props.s: 1 references (_none_:1:-1) [0] - Live Value +DynamicallyLoadedComponent.+make: 1 references (DeadTest.res:110:17) [0] - Dead Value ErrorHandler.+x: 0 references () [0] - Live Value ErrorHandler.Make.+notify: 1 references (CreateErrorHandler1.res:8:0) [0] - Dead Value +FirstClassModulesInterface.+r: 0 references () [0] - Dead RecordLabel +FirstClassModulesInterface.record.y: 0 references () [0] - Dead RecordLabel +FirstClassModulesInterface.record.x: 0 references () [0] - Dead Value ImmutableArray.+eq: 0 references () [0] - Dead Value ImmutableArray.+eqU: 0 references () [0] - Dead Value ImmutableArray.+cmp: 0 references () [0] - Dead Value ImmutableArray.+cmpU: 0 references () [0] - Dead Value ImmutableArray.+some2: 0 references () [0] - Dead Value ImmutableArray.+some2U: 0 references () [0] - Dead Value ImmutableArray.+every2: 0 references () [0] - Dead Value ImmutableArray.+every2U: 0 references () [0] - Dead Value ImmutableArray.+every: 0 references () [0] - Dead Value ImmutableArray.+everyU: 0 references () [0] - Dead Value ImmutableArray.+some: 0 references () [0] - Dead Value ImmutableArray.+someU: 0 references () [0] - Dead Value ImmutableArray.+reduceReverse2: 0 references () [0] - Dead Value ImmutableArray.+reduceReverse2U: 0 references () [0] - Dead Value ImmutableArray.+reduceReverse: 0 references () [0] - Dead Value ImmutableArray.+reduceReverseU: 0 references () [0] - Dead Value ImmutableArray.+reduce: 0 references () [0] - Dead Value ImmutableArray.+reduceU: 0 references () [0] - Dead Value ImmutableArray.+partition: 0 references () [0] - Dead Value ImmutableArray.+partitionU: 0 references () [0] - Dead Value ImmutableArray.+mapWithIndex: 0 references () [0] - Dead Value ImmutableArray.+mapWithIndexU: 0 references () [0] - Dead Value ImmutableArray.+forEachWithIndex: 0 references () [0] - Dead Value ImmutableArray.+forEachWithIndexU: 0 references () [0] - Dead Value ImmutableArray.+keepMap: 0 references () [0] - Dead Value ImmutableArray.+keepMapU: 0 references () [0] - Dead Value ImmutableArray.+keepWithIndex: 0 references () [0] - Dead Value ImmutableArray.+keepWithIndexU: 0 references () [0] - Dead Value ImmutableArray.+map: 0 references () [0] - Dead Value ImmutableArray.+mapU: 0 references () [0] - Dead Value ImmutableArray.+forEach: 0 references () [0] - Dead Value ImmutableArray.+forEachU: 0 references () [0] - Dead Value ImmutableArray.+copy: 0 references () [0] - Dead Value ImmutableArray.+sliceToEnd: 0 references () [0] - Dead Value ImmutableArray.+slice: 0 references () [0] - Dead Value ImmutableArray.+concatMany: 0 references () [0] - Dead Value ImmutableArray.+concat: 0 references () [0] - Dead Value ImmutableArray.+unzip: 0 references () [0] - Dead Value ImmutableArray.+zipBy: 0 references () [0] - Dead Value ImmutableArray.+zipByU: 0 references () [0] - Dead Value ImmutableArray.+zip: 0 references () [0] - Dead Value ImmutableArray.+makeByAndShuffle: 0 references () [0] - Dead Value ImmutableArray.+makeByAndShuffleU: 0 references () [0] - Dead Value ImmutableArray.+makeBy: 0 references () [0] - Dead Value ImmutableArray.+makeByU: 0 references () [0] - Dead Value ImmutableArray.+rangeBy: 0 references () [0] - Dead Value ImmutableArray.+range: 0 references () [0] - Dead Value ImmutableArray.+make: 0 references () [0] - Dead Value ImmutableArray.+makeUninitializedUnsafe: 0 references () [0] - Dead Value ImmutableArray.+makeUninitialized: 0 references () [0] - Dead Value ImmutableArray.+reverse: 0 references () [0] - Dead Value ImmutableArray.+shuffle: 0 references () [0] - Dead Value ImmutableArray.+getUndefined: 0 references () [0] - Dead Value ImmutableArray.+getUnsafe: 0 references () [0] - Dead Value ImmutableArray.+getExn: 0 references () [0] - Dead Value ImmutableArray.+get: 0 references () [0] - Dead Value ImmutableArray.+size: 0 references () [0] - Dead Value ImmutableArray.+length: 0 references () [0] - Dead Value ImmutableArray.+toArray: 0 references () [0] - Live Value ImmutableArray.+fromArray: 1 references (DeadTest.res:1:15) [0] - Live Value ImmutableArray.Array.+get: 1 references (TestImmutableArray.res:2:4) [0] - Live RecordLabel +ImportHookDefault.props.renderMe: 0 references () [0] - Live RecordLabel +ImportHookDefault.props.children: 0 references () [0] - Live RecordLabel +ImportHookDefault.props.person: 0 references () [0] - Live Value +ImportHookDefault.+make: 1 references (Hooks.res:17:5) [0] - Dead RecordLabel +ImportHookDefault.person.age: 0 references () [0] - Dead RecordLabel +ImportHookDefault.person.name: 0 references () [0] - Live Value +ImportHooks.+foo: 0 references () [0] - Live RecordLabel +ImportHooks.props.renderMe: 0 references () [0] - Live RecordLabel +ImportHooks.props.children: 0 references () [0] - Live RecordLabel +ImportHooks.props.person: 0 references () [0] - Live Value +ImportHooks.+make: 1 references (Hooks.res:14:5) [0] - Dead RecordLabel +ImportHooks.person.age: 0 references () [0] - Dead RecordLabel +ImportHooks.person.name: 0 references () [0] - Live Value +ImportJsValue.+default: 0 references () [0] - Live Value +ImportJsValue.+polymorphic: 0 references () [0] - Live Value +ImportJsValue.+convertVariant: 0 references () [0] - Dead VariantCase +ImportJsValue.variant.S: 0 references () [0] - Dead VariantCase +ImportJsValue.variant.I: 0 references () [0] - Live Value +ImportJsValue.+returnedFromHigherOrder: 0 references () [0] - Live Value +ImportJsValue.+higherOrder: 1 references (ImportJsValue.res:64:4) [0] - Live Value +ImportJsValue.+useColor: 0 references () [0] - Live Value +ImportJsValue.+useGetAbs: 0 references () [0] - Live Value +ImportJsValue.+useGetProp: 0 references () [0] - Live Value +ImportJsValue.AbsoluteValue.+getAbs: 1 references (ImportJsValue.res:50:4) [1] - Live Value +ImportJsValue.AbsoluteValue.+getAbs: 1 references (ImportJsValue.res:40:6) [0] - Live Value +ImportJsValue.+areaValue: 0 references () [0] - Live Value +ImportJsValue.+roundedNumber: 0 references () [0] - Live Value +ImportJsValue.+returnMixedArray: 0 references () [0] - Live Value +ImportJsValue.+area: 1 references (ImportJsValue.res:30:4) [0] - Dead RecordLabel +ImportJsValue.point.y: 0 references () [0] - Dead RecordLabel +ImportJsValue.point.x: 0 references () [0] - Live Value +ImportJsValue.+round: 1 references (ImportJsValue.res:27:4) [0] - Live Value +NestedModulesInSignature.Universe.+theAnswer: 1 references (NestedModulesInSignature.resi:2:2) [0] - Live Value OptArg.+bar: 1 references (TestOptArg.res:1:7) [0] - Dead Value OptArg.+foo: 0 references () [0] - Dead Value +DeadValueTest.+tail: 0 references () [0] - Dead Value +DeadValueTest.+subList: 0 references () [0] - Dead Value +DeadValueTest.+valueOnlyInImplementation: 0 references () [0] - Dead Value +DeadValueTest.+valueDead: 0 references () [0] - Live Value +DeadValueTest.+valueAlive: 1 references (DeadValueTest.resi:1:0) [0] - Dead Value +ErrorHandler.+x: 0 references () [0] - Live Value +ErrorHandler.Make.+notify: 1 references (ErrorHandler.resi:7:2) [0] - Dead Value +ImmutableArray.+eq: 0 references () [0] - Dead Value +ImmutableArray.+eqU: 0 references () [0] - Dead Value +ImmutableArray.+cmp: 0 references () [0] - Dead Value +ImmutableArray.+cmpU: 0 references () [0] - Dead Value +ImmutableArray.+some2: 0 references () [0] - Dead Value +ImmutableArray.+some2U: 0 references () [0] - Dead Value +ImmutableArray.+every2: 0 references () [0] - Dead Value +ImmutableArray.+every2U: 0 references () [0] - Dead Value +ImmutableArray.+every: 0 references () [0] - Dead Value +ImmutableArray.+everyU: 0 references () [0] - Dead Value +ImmutableArray.+some: 0 references () [0] - Dead Value +ImmutableArray.+someU: 0 references () [0] - Dead Value +ImmutableArray.+reduceReverse2: 0 references () [0] - Dead Value +ImmutableArray.+reduceReverse2U: 0 references () [0] - Dead Value +ImmutableArray.+reduceReverse: 0 references () [0] - Dead Value +ImmutableArray.+reduceReverseU: 0 references () [0] - Dead Value +ImmutableArray.+reduce: 0 references () [0] - Dead Value +ImmutableArray.+reduceU: 0 references () [0] - Dead Value +ImmutableArray.+partition: 0 references () [0] - Dead Value +ImmutableArray.+partitionU: 0 references () [0] - Dead Value +ImmutableArray.+mapWithIndex: 0 references () [0] - Dead Value +ImmutableArray.+mapWithIndexU: 0 references () [0] - Dead Value +ImmutableArray.+forEachWithIndex: 0 references () [0] - Dead Value +ImmutableArray.+forEachWithIndexU: 0 references () [0] - Dead Value +ImmutableArray.+keepMap: 0 references () [0] - Dead Value +ImmutableArray.+keepMapU: 0 references () [0] - Dead Value +ImmutableArray.+keepWithIndex: 0 references () [0] - Dead Value +ImmutableArray.+keepWithIndexU: 0 references () [0] - Dead Value +ImmutableArray.+map: 0 references () [0] - Dead Value +ImmutableArray.+mapU: 0 references () [0] - Dead Value +ImmutableArray.+forEach: 0 references () [0] - Dead Value +ImmutableArray.+forEachU: 0 references () [0] - Dead Value +ImmutableArray.+copy: 0 references () [0] - Dead Value +ImmutableArray.+sliceToEnd: 0 references () [0] - Dead Value +ImmutableArray.+slice: 0 references () [0] - Dead Value +ImmutableArray.+concatMany: 0 references () [0] - Dead Value +ImmutableArray.+concat: 0 references () [0] - Dead Value +ImmutableArray.+unzip: 0 references () [0] - Dead Value +ImmutableArray.+zipBy: 0 references () [0] - Dead Value +ImmutableArray.+zipByU: 0 references () [0] - Dead Value +ImmutableArray.+zip: 0 references () [0] - Dead Value +ImmutableArray.+makeByAndShuffle: 0 references () [0] - Dead Value +ImmutableArray.+makeByAndShuffleU: 0 references () [0] - Dead Value +ImmutableArray.+makeBy: 0 references () [0] - Dead Value +ImmutableArray.+makeByU: 0 references () [0] - Dead Value +ImmutableArray.+rangeBy: 0 references () [0] - Dead Value +ImmutableArray.+range: 0 references () [0] - Dead Value +ImmutableArray.+make: 0 references () [0] - Dead Value +ImmutableArray.+makeUninitializedUnsafe: 0 references () [0] - Dead Value +ImmutableArray.+makeUninitialized: 0 references () [0] - Dead Value +ImmutableArray.+reverse: 0 references () [0] - Dead Value +ImmutableArray.+shuffle: 0 references () [0] - Dead Value +ImmutableArray.+getUndefined: 0 references () [0] - Dead Value +ImmutableArray.+getUnsafe: 0 references () [0] - Dead Value +ImmutableArray.+getExn: 0 references () [0] - Live Value +ImmutableArray.+get: 1 references (ImmutableArray.resi:6:2) [0] - Dead Value +ImmutableArray.+size: 0 references () [0] - Dead Value +ImmutableArray.+length: 0 references () [0] - Dead Value +ImmutableArray.+toArray: 0 references () [0] - Live Value +ImmutableArray.+fromArray: 1 references (ImmutableArray.resi:9:0) [0] - Live Value +OptArg.+wrapfourArgs: 2 references (OptArg.res:28:7, OptArg.res:29:7) [0] - Live Value +OptArg.+fourArgs: 1 references (OptArg.res:26:4) [0] - Live Value +OptArg.+wrapOneArg: 1 references (OptArg.res:22:7) [0] - Live Value +OptArg.+oneArg: 1 references (OptArg.res:20:4) [0] - Live Value +OptArg.+twoArgs: 1 references (OptArg.res:16:12) [0] - Live Value +OptArg.+threeArgs: 2 references (OptArg.res:11:7, OptArg.res:12:7) [0] - Live Value +OptArg.+bar: 2 references (OptArg.res:7:7, OptArg.resi:2:0) [0] - Live Value +OptArg.+foo: 1 references (OptArg.res:5:7) [0] - - Incorrect Dead Annotation - DeadTest.res:153:1-28 - deadIncorrect is annotated @dead but is live - - Warning Unused Argument - TestOptArg.res:9:1-65 - optional argument x of function notSuppressesOptArgs is never used - - Warning Unused Argument - TestOptArg.res:9:1-65 - optional argument y of function notSuppressesOptArgs is never used - - Warning Unused Argument - TestOptArg.res:9:1-65 - optional argument z of function notSuppressesOptArgs is never used - - Warning Redundant Optional Argument - TestOptArg.res:3:1-28 - optional argument x of function foo is always supplied (1 calls) - - Warning Redundant Optional Argument - Unison.res:17:1-60 - optional argument break of function group is always supplied (2 calls) - - Warning Unused Argument - OptArg.resi:2:1-50 - optional argument x of function bar is never used - - Warning Redundant Optional Argument - OptArg.res:26:1-70 - optional argument c of function wrapfourArgs is always supplied (2 calls) - - Warning Unused Argument - OptArg.res:24:1-63 - optional argument d of function fourArgs is never used - - Warning Redundant Optional Argument - OptArg.res:20:1-51 - optional argument a of function wrapOneArg is always supplied (1 calls) - - Warning Unused Argument - OptArg.res:14:1-42 - optional argument a of function twoArgs is never used - - Warning Unused Argument - OptArg.res:14:1-42 - optional argument b of function twoArgs is never used - - Warning Unused Argument - OptArg.res:9:1-54 - optional argument b of function threeArgs is never used - - Warning Redundant Optional Argument - OptArg.res:9:1-54 - optional argument a of function threeArgs is always supplied (2 calls) - - Warning Unused Argument - OptArg.res:3:1-38 - optional argument x of function bar is never used - - Warning Unused Argument - OptArg.res:1:1-48 - optional argument y of function foo is never used - - Warning Unused Argument - OptArg.res:1:1-48 - optional argument z of function foo is never used - - Warning Dead Module - AutoAnnotate.res:0:1 - AutoAnnotate is a dead module as all its items are dead. - - Warning Dead Type - AutoAnnotate.res:1:16-21 - variant.R is a variant case which is never constructed - <-- line 1 - type variant = | @dead("variant.R") R(int) - - Warning Dead Type - AutoAnnotate.res:4:16-31 - record.variant is a record label never used to read a value - <-- line 4 - type record = {@dead("record.variant") variant: variant} - - Warning Dead Type - AutoAnnotate.res:6:12-18 - r2.r2 is a record label never used to read a value - <-- line 6 - type r2 = {@dead("r2.r2") r2: int} - - Warning Dead Type - AutoAnnotate.res:8:12-18 - r3.r3 is a record label never used to read a value - <-- line 8 - type r3 = {@dead("r3.r3") r3: int} - - Warning Dead Type - AutoAnnotate.res:10:12-18 - r4.r4 is a record label never used to read a value - <-- line 10 - type r4 = {@dead("r4.r4") r4: int} - - Warning Dead Type - AutoAnnotate.res:14:3-14 - annotatedVariant.R2 is a variant case which is never constructed - <-- line 14 - | @dead("annotatedVariant.R2") R2(r2, r3) - - Warning Dead Type - AutoAnnotate.res:15:5-10 - annotatedVariant.R4 is a variant case which is never constructed - <-- line 15 - | @dead("annotatedVariant.R4") R4(r4) - - Warning Dead Module - BucklescriptAnnotations.res:0:1 - BucklescriptAnnotations is a dead module as all its items are dead. - - Warning Dead Value - BucklescriptAnnotations.res:25:1-70 - bar is never used - <-- line 25 - @dead("bar") let bar = (x: someMethods) => { - - Warning Dead Exception - DeadExn.res:7:1-15 - DeadE is never raised or passed as value - <-- line 7 - @dead("DeadE") exception DeadE - - Warning Dead Value - DeadExn.res:8:1-25 - eToplevel is never used - <-- line 8 - @dead("eToplevel") let eToplevel = Etoplevel - - Warning Dead Value - DeadRT.res:5:1-116 - emitModuleAccessPath is never used - <-- line 5 - @dead("emitModuleAccessPath") let rec emitModuleAccessPath = moduleAccessPath => - - Warning Dead Value - DeadTest.res:2:1-17 - fortytwo is never used - <-- line 2 - @dead("fortytwo") let fortytwo = 42 - - Warning Dead Module - DeadTest.res:27:8-97 - DeadTest.M is a dead module as all its items are dead. - - Warning Dead Value - DeadTest.res:31:3-34 - M.thisSignatureItemIsDead is never used - <-- line 31 - @dead("M.thisSignatureItemIsDead") let thisSignatureItemIsDead = 34 - - Warning Dead Value - DeadTest.res:61:3-12 - MM.y is never used - <-- line 61 - @dead("MM.y") let y: int - - Warning Dead Value - DeadTest.res:65:3-35 - MM.valueOnlyInImplementation is never used - <-- line 65 - @dead("MM.valueOnlyInImplementation") let valueOnlyInImplementation = 7 - - Warning Dead Value - DeadTest.res:75:1-37 - unusedRec is never used - <-- line 75 - @dead("unusedRec") let rec unusedRec = () => unusedRec() - - Warning Dead Value - DeadTest.res:77:1-60 - split_map is never used - <-- line 77 - @dead("split_map") let rec split_map = l => { - - Warning Dead Value - DeadTest.res:82:1-27 - rec1 is never used - <-- line 82 - @dead("rec1") let rec rec1 = () => rec2() - - Warning Dead Value - DeadTest.res:83:1-23 - rec2 is never used - <-- line 83 - @dead("rec2") and rec2 = () => rec1() - - Warning Dead Value - DeadTest.res:85:1-77 - recWithCallback is never used - <-- line 85 - @dead("recWithCallback") let rec recWithCallback = () => { - - Warning Dead Value - DeadTest.res:90:1-53 - foo is never used - <-- line 90 - @dead("foo") let rec foo = () => { - - Warning Dead Value - DeadTest.res:94:1-21 - bar is never used - <-- line 94 - @dead("bar") and bar = () => foo() - - Warning Dead Value - DeadTest.res:96:1-71 - withDefaultValue is never used - <-- line 96 - @dead("withDefaultValue") let withDefaultValue = (~paramWithDefault=3, y) => paramWithDefault + y - - Warning Dead Value - DeadTest.res:104:1-52 - zzz is never used - <-- line 104 - @dead("zzz") let zzz = { - - Warning Dead Value - DeadTest.res:112:1-14 - second is never used - <-- line 112 - @dead("second") let second = 1 - - Warning Dead Value - DeadTest.res:114:1-21 - deadRef is never used - <-- line 114 - @dead("deadRef") let deadRef = ref(12) - - Warning Dead Value With Side Effects - DeadTest.res:121:1-40 - theSideEffectIsLogging is never used and could have side effects - - Warning Dead Value With Side Effects - DeadTest.res:123:1-54 - stringLengthNoSideEffects is never used and could have side effects - - Warning Dead Type - DeadTest.res:151:12-17 - rc.a is a record label never used to read a value - <-- line 151 - type rc = {@dead("rc.a") a: int} - - Warning Dead Type - DeadTest.res:158:25-30 - inlineRecord.IR.a is a record label never used to read a value - <-- line 158 - type inlineRecord = IR({@dead("inlineRecord.IR.a") a: int, b: int, c: string, @dead d: int, @live e: int}) - - Warning Dead Module - DeadTestBlacklist.res:0:1 - DeadTestBlacklist is a dead module as all its items are dead. - - Warning Dead Value - DeadTestBlacklist.res:1:1-10 - x is never used - <-- line 1 - @dead("x") let x = 34 - - Warning Dead Module - DeadTestWithInterface.res:1:8-54 - DeadTestWithInterface.Ext_buffer is a dead module as all its items are dead. - - Warning Dead Value - DeadTestWithInterface.res:2:3-12 - Ext_buffer.x is never used - <-- line 2 - @dead("Ext_buffer.x") let x: int - - Warning Dead Value - DeadTestWithInterface.res:4:3-12 - Ext_buffer.x is never used - <-- line 4 - @dead("Ext_buffer.x") let x = 42 - - Warning Dead Type - DeadTypeTest.res:3:5 - t.B is a variant case which is never constructed - <-- line 3 - | @dead("t.B") B - - Warning Dead Value - DeadTypeTest.res:4:1-9 - a is never used - <-- line 4 - @dead("a") let a = A - - Warning Dead Type - DeadTypeTest.res:10:5-13 - deadType.InNeither is a variant case which is never constructed - <-- line 10 - | @dead("deadType.InNeither") InNeither - - Warning Dead Type - DeadTypeTest.resi:3:5 - t.B is a variant case which is never constructed - <-- line 3 - | @dead("t.B") B - - Warning Dead Value - DeadTypeTest.resi:4:1-8 - a is never used - <-- line 4 - @dead("a") let a: t - - Warning Dead Type - DeadTypeTest.resi:10:5-13 - deadType.InNeither is a variant case which is never constructed - <-- line 10 - | @dead("deadType.InNeither") InNeither - - Warning Dead Value - DeadValueTest.res:2:1-17 - valueDead is never used - <-- line 2 - @dead("valueDead") let valueDead = 2 - - Warning Dead Value - DeadValueTest.res:4:1-33 - valueOnlyInImplementation is never used - <-- line 4 - @dead("valueOnlyInImplementation") let valueOnlyInImplementation = 3 - - Warning Dead Value - DeadValueTest.res:6:1-260 - subList is never used - <-- line 6 - @dead("subList") let rec subList = (b, e, l) => - - Warning Dead Value - DeadValueTest.resi:2:1-18 - valueDead is never used - <-- line 2 - @dead("valueDead") let valueDead: int - - Warning Dead Type - Docstrings.res:61:5 - t.B is a variant case which is never constructed - <-- line 61 - | @dead("t.B") B - - Warning Dead Module - ErrorHandler.res:0:1 - ErrorHandler is a dead module as all its items are dead. - - Warning Dead Value - ErrorHandler.res:11:1-19 - x is never used - <-- line 12 - @dead("x") @genType - - Warning Dead Module - ErrorHandler.resi:0:1 - ErrorHandler is a dead module as all its items are dead. - - Warning Dead Value - ErrorHandler.resi:10:1-10 - x is never used - <-- line 10 - @dead("x") let x: int - - Warning Dead Module - EverythingLiveHere.res:0:1 - EverythingLiveHere is a dead module as all its items are dead. - - Warning Dead Value - EverythingLiveHere.res:1:1-9 - x is never used - <-- line 1 - @dead("x") let x = 1 - - Warning Dead Value - EverythingLiveHere.res:3:1-9 - y is never used - <-- line 3 - @dead("y") let y = 3 - - Warning Dead Value - EverythingLiveHere.res:5:1-9 - z is never used - <-- line 5 - @dead("z") let z = 4 - - Warning Dead Module - FirstClassModulesInterface.res:0:1 - FirstClassModulesInterface is a dead module as all its items are dead. - - Warning Dead Type - FirstClassModulesInterface.res:2:3-8 - record.x is a record label never used to read a value - <-- line 2 - @dead("record.x") x: int, - - Warning Dead Type - FirstClassModulesInterface.res:3:3-11 - record.y is a record label never used to read a value - <-- line 3 - @dead("record.y") y: string, - - Warning Dead Value - FirstClassModulesInterface.res:6:1-26 - r is never used - <-- line 6 - @dead("r") let r = {x: 3, y: "hello"} - - Warning Dead Module - FirstClassModulesInterface.resi:0:1 - FirstClassModulesInterface is a dead module as all its items are dead. - - Warning Dead Type - FirstClassModulesInterface.resi:3:3-8 - record.x is a record label never used to read a value - <-- line 3 - @dead("record.x") x: int, - - Warning Dead Type - FirstClassModulesInterface.resi:4:3-11 - record.y is a record label never used to read a value - <-- line 4 - @dead("record.y") y: string, - - Warning Dead Value - FirstClassModulesInterface.resi:7:1-13 - r is never used - <-- line 7 - @dead("r") let r: record - - Warning Dead Type - Hooks.res:50:11-19 - r.x is a record label never used to read a value - <-- line 50 - type r = {@dead("r.x") x: string} - - Warning Dead Value - ImmutableArray.res:16:3-41 - toArray is never used - <-- line 16 - @dead("toArray") let toArray = a => Array.copy(a->fromT) - - Warning Dead Value - ImmutableArray.res:20:3-42 - length is never used - <-- line 20 - @dead("length") let length = a => Array.length(a->fromT) - - Warning Dead Value - ImmutableArray.res:22:3-38 - size is never used - <-- line 22 - @dead("size") let size = a => Array.size(a->fromT) - - Warning Dead Value - ImmutableArray.res:26:3-50 - getExn is never used - <-- line 26 - @dead("getExn") let getExn = (a, x) => Array.getExn(a->fromT, x) - - Warning Dead Value - ImmutableArray.res:28:3-56 - getUnsafe is never used - <-- line 28 - @dead("getUnsafe") let getUnsafe = (a, x) => Array.getUnsafe(a->fromT, x) - - Warning Dead Value - ImmutableArray.res:30:3-62 - getUndefined is never used - <-- line 30 - @dead("getUndefined") let getUndefined = (a, x) => Array.getUndefined(a->fromT, x) - - Warning Dead Value - ImmutableArray.res:32:3-49 - shuffle is never used - <-- line 32 - @dead("shuffle") let shuffle = x => Array.shuffle(x->fromT)->toT - - Warning Dead Value - ImmutableArray.res:34:3-49 - reverse is never used - <-- line 34 - @dead("reverse") let reverse = x => Array.reverse(x->fromT)->toT - - Warning Dead Value - ImmutableArray.res:36:3-62 - makeUninitialized is never used - <-- line 36 - @dead("makeUninitialized") let makeUninitialized = x => Array.makeUninitialized(x)->toT - - Warning Dead Value - ImmutableArray.res:38:3-74 - makeUninitializedUnsafe is never used - <-- line 38 - @dead("makeUninitializedUnsafe") let makeUninitializedUnsafe = x => Array.makeUninitializedUnsafe(x)->toT - - Warning Dead Value - ImmutableArray.res:40:3-44 - make is never used - <-- line 40 - @dead("make") let make = (x, y) => Array.make(x, y)->toT - - Warning Dead Value - ImmutableArray.res:42:3-46 - range is never used - <-- line 42 - @dead("range") let range = (x, y) => Array.range(x, y)->toT - - Warning Dead Value - ImmutableArray.res:44:3-64 - rangeBy is never used - <-- line 44 - @dead("rangeBy") let rangeBy = (x, y, ~step) => Array.rangeBy(x, y, ~step)->toT - - Warning Dead Value - ImmutableArray.res:46:3-50 - makeByU is never used - <-- line 46 - @dead("makeByU") let makeByU = (c, f) => Array.makeByU(c, f)->toT - - Warning Dead Value - ImmutableArray.res:47:3-48 - makeBy is never used - <-- line 47 - @dead("makeBy") let makeBy = (c, f) => Array.makeBy(c, f)->toT - - Warning Dead Value - ImmutableArray.res:49:3-70 - makeByAndShuffleU is never used - <-- line 49 - @dead("makeByAndShuffleU") let makeByAndShuffleU = (c, f) => Array.makeByAndShuffleU(c, f)->toT - - Warning Dead Value - ImmutableArray.res:50:3-68 - makeByAndShuffle is never used - <-- line 50 - @dead("makeByAndShuffle") let makeByAndShuffle = (c, f) => Array.makeByAndShuffle(c, f)->toT - - Warning Dead Value - ImmutableArray.res:52:3-61 - zip is never used - <-- line 52 - @dead("zip") let zip = (a1, a2) => Array.zip(fromT(a1), fromT(a2))->toTp - - Warning Dead Value - ImmutableArray.res:54:3-72 - zipByU is never used - <-- line 54 - @dead("zipByU") let zipByU = (a1, a2, f) => Array.zipByU(fromT(a1), fromT(a2), f)->toT - - Warning Dead Value - ImmutableArray.res:55:3-70 - zipBy is never used - <-- line 55 - @dead("zipBy") let zipBy = (a1, a2, f) => Array.zipBy(fromT(a1), fromT(a2), f)->toT - - Warning Dead Value - ImmutableArray.res:57:3-47 - unzip is never used - <-- line 57 - @dead("unzip") let unzip = a => Array.unzip(a->fromTp)->toT2 - - Warning Dead Value - ImmutableArray.res:59:3-66 - concat is never used - <-- line 59 - @dead("concat") let concat = (a1, a2) => Array.concat(a1->fromT, a2->fromT)->toT - - Warning Dead Value - ImmutableArray.res:61:3-67 - concatMany is never used - <-- line 61 - @dead("concatMany") let concatMany = (a: t>) => Array.concatMany(a->fromTT)->toT - - Warning Dead Value - ImmutableArray.res:63:3-77 - slice is never used - <-- line 63 - @dead("slice") let slice = (a, ~offset, ~len) => Array.slice(a->fromT, ~offset, ~len)->toT - - Warning Dead Value - ImmutableArray.res:65:3-63 - sliceToEnd is never used - <-- line 65 - @dead("sliceToEnd") let sliceToEnd = (a, b) => Array.sliceToEnd(a->fromT, b)->toT - - Warning Dead Value - ImmutableArray.res:67:3-43 - copy is never used - <-- line 67 - @dead("copy") let copy = a => Array.copy(a->fromT)->toT - - Warning Dead Value - ImmutableArray.res:69:3-54 - forEachU is never used - <-- line 69 - @dead("forEachU") let forEachU = (a, f) => Array.forEachU(a->fromT, f) - - Warning Dead Value - ImmutableArray.res:70:3-52 - forEach is never used - <-- line 70 - @dead("forEach") let forEach = (a, f) => Array.forEach(a->fromT, f) - - Warning Dead Value - ImmutableArray.res:72:3-51 - mapU is never used - <-- line 72 - @dead("mapU") let mapU = (a, f) => Array.mapU(a->fromT, f)->toT - - Warning Dead Value - ImmutableArray.res:73:3-49 - map is never used - <-- line 73 - @dead("map") let map = (a, f) => Array.map(a->fromT, f)->toT - - Warning Dead Value - ImmutableArray.res:75:3-71 - keepWithIndexU is never used - <-- line 75 - @dead("keepWithIndexU") let keepWithIndexU = (a, f) => Array.keepWithIndexU(a->fromT, f)->toT - - Warning Dead Value - ImmutableArray.res:76:3-69 - keepWithIndex is never used - <-- line 76 - @dead("keepWithIndex") let keepWithIndex = (a, f) => Array.keepWithIndex(a->fromT, f)->toT - - Warning Dead Value - ImmutableArray.res:78:3-59 - keepMapU is never used - <-- line 78 - @dead("keepMapU") let keepMapU = (a, f) => Array.keepMapU(a->fromT, f)->toT - - Warning Dead Value - ImmutableArray.res:79:3-57 - keepMap is never used - <-- line 79 - @dead("keepMap") let keepMap = (a, f) => Array.keepMap(a->fromT, f)->toT - - Warning Dead Value - ImmutableArray.res:81:3-72 - forEachWithIndexU is never used - <-- line 81 - @dead("forEachWithIndexU") let forEachWithIndexU = (a, f) => Array.forEachWithIndexU(a->fromT, f) - - Warning Dead Value - ImmutableArray.res:82:3-70 - forEachWithIndex is never used - <-- line 82 - @dead("forEachWithIndex") let forEachWithIndex = (a, f) => Array.forEachWithIndex(a->fromT, f) - - Warning Dead Value - ImmutableArray.res:84:3-69 - mapWithIndexU is never used - <-- line 84 - @dead("mapWithIndexU") let mapWithIndexU = (a, f) => Array.mapWithIndexU(a->fromT, f)->toT - - Warning Dead Value - ImmutableArray.res:85:3-67 - mapWithIndex is never used - <-- line 85 - @dead("mapWithIndex") let mapWithIndex = (a, f) => Array.mapWithIndex(a->fromT, f)->toT - - Warning Dead Value - ImmutableArray.res:87:3-64 - partitionU is never used - <-- line 87 - @dead("partitionU") let partitionU = (a, f) => Array.partitionU(a->fromT, f)->toT2 - - Warning Dead Value - ImmutableArray.res:88:3-62 - partition is never used - <-- line 88 - @dead("partition") let partition = (a, f) => Array.partition(a->fromT, f)->toT2 - - Warning Dead Value - ImmutableArray.res:90:3-58 - reduceU is never used - <-- line 90 - @dead("reduceU") let reduceU = (a, b, f) => Array.reduceU(a->fromT, b, f) - - Warning Dead Value - ImmutableArray.res:91:3-56 - reduce is never used - <-- line 91 - @dead("reduce") let reduce = (a, b, f) => Array.reduce(a->fromT, b, f) - - Warning Dead Value - ImmutableArray.res:93:3-72 - reduceReverseU is never used - <-- line 93 - @dead("reduceReverseU") let reduceReverseU = (a, b, f) => Array.reduceReverseU(a->fromT, b, f) - - Warning Dead Value - ImmutableArray.res:94:3-70 - reduceReverse is never used - <-- line 94 - @dead("reduceReverse") let reduceReverse = (a, b, f) => Array.reduceReverse(a->fromT, b, f) - - Warning Dead Value - ImmutableArray.res:96:3-91 - reduceReverse2U is never used - <-- line 96 - @dead("reduceReverse2U") let reduceReverse2U = (a1, a2, c, f) => Array.reduceReverse2U(fromT(a1), fromT(a2), c, f) - - Warning Dead Value - ImmutableArray.res:97:3-89 - reduceReverse2 is never used - <-- line 97 - @dead("reduceReverse2") let reduceReverse2 = (a1, a2, c, f) => Array.reduceReverse2(fromT(a1), fromT(a2), c, f) - - Warning Dead Value - ImmutableArray.res:99:3-48 - someU is never used - <-- line 99 - @dead("someU") let someU = (a, f) => Array.someU(a->fromT, f) - - Warning Dead Value - ImmutableArray.res:100:3-46 - some is never used - <-- line 100 - @dead("some") let some = (a, f) => Array.some(a->fromT, f) - - Warning Dead Value - ImmutableArray.res:102:3-50 - everyU is never used - <-- line 102 - @dead("everyU") let everyU = (a, f) => Array.everyU(a->fromT, f) - - Warning Dead Value - ImmutableArray.res:103:3-48 - every is never used - <-- line 103 - @dead("every") let every = (a, f) => Array.every(a->fromT, f) - - Warning Dead Value - ImmutableArray.res:105:3-69 - every2U is never used - <-- line 105 - @dead("every2U") let every2U = (a1, a2, f) => Array.every2U(fromT(a1), fromT(a2), f) - - Warning Dead Value - ImmutableArray.res:106:3-67 - every2 is never used - <-- line 106 - @dead("every2") let every2 = (a1, a2, f) => Array.every2(fromT(a1), fromT(a2), f) - - Warning Dead Value - ImmutableArray.res:108:3-67 - some2U is never used - <-- line 108 - @dead("some2U") let some2U = (a1, a2, f) => Array.some2U(fromT(a1), fromT(a2), f) - - Warning Dead Value - ImmutableArray.res:109:3-65 - some2 is never used - <-- line 109 - @dead("some2") let some2 = (a1, a2, f) => Array.some2(fromT(a1), fromT(a2), f) - - Warning Dead Value - ImmutableArray.res:111:3-63 - cmpU is never used - <-- line 111 - @dead("cmpU") let cmpU = (a1, a2, f) => Array.cmpU(fromT(a1), fromT(a2), f) - - Warning Dead Value - ImmutableArray.res:112:3-61 - cmp is never used - <-- line 112 - @dead("cmp") let cmp = (a1, a2, f) => Array.cmp(fromT(a1), fromT(a2), f) - - Warning Dead Value - ImmutableArray.res:114:3-61 - eqU is never used - <-- line 114 - @dead("eqU") let eqU = (a1, a2, f) => Array.eqU(fromT(a1), fromT(a2), f) - - Warning Dead Value - ImmutableArray.res:115:3-59 - eq is never used - <-- line 115 - @dead("eq") let eq = (a1, a2, f) => Array.eq(fromT(a1), fromT(a2), f) - - Warning Dead Value - ImmutableArray.resi:12:1-31 - toArray is never used - <-- line 12 - @dead("toArray") let toArray: t<'a> => array<'a> - - Warning Dead Value - ImmutableArray.resi:14:1-107 - length is never used - <-- line 14 - @dead("length") @ocaml.doc(" Subset of the Belt.Array oprerations that do not mutate the array. ") - - Warning Dead Value - ImmutableArray.resi:17:1-22 - size is never used - <-- line 17 - @dead("size") let size: t<'a> => int - - Warning Dead Value - ImmutableArray.resi:19:1-35 - get is never used - <-- line 19 - @dead("get") let get: (t<'a>, int) => option<'a> - - Warning Dead Value - ImmutableArray.resi:21:1-30 - getExn is never used - <-- line 21 - @dead("getExn") let getExn: (t<'a>, int) => 'a - - Warning Dead Value - ImmutableArray.resi:23:1-33 - getUnsafe is never used - <-- line 23 - @dead("getUnsafe") let getUnsafe: (t<'a>, int) => 'a - - Warning Dead Value - ImmutableArray.resi:25:1-50 - getUndefined is never used - <-- line 25 - @dead("getUndefined") let getUndefined: (t<'a>, int) => Js.undefined<'a> - - Warning Dead Value - ImmutableArray.resi:27:1-27 - shuffle is never used - <-- line 27 - @dead("shuffle") let shuffle: t<'a> => t<'a> - - Warning Dead Value - ImmutableArray.resi:29:1-27 - reverse is never used - <-- line 29 - @dead("reverse") let reverse: t<'a> => t<'a> - - Warning Dead Value - ImmutableArray.resi:31:1-49 - makeUninitialized is never used - <-- line 31 - @dead("makeUninitialized") let makeUninitialized: int => t> - - Warning Dead Value - ImmutableArray.resi:33:1-41 - makeUninitializedUnsafe is never used - <-- line 33 - @dead("makeUninitializedUnsafe") let makeUninitializedUnsafe: int => t<'a> - - Warning Dead Value - ImmutableArray.resi:35:1-28 - make is never used - <-- line 35 - @dead("make") let make: (int, 'a) => t<'a> - - Warning Dead Value - ImmutableArray.resi:37:1-31 - range is never used - <-- line 37 - @dead("range") let range: (int, int) => t - - Warning Dead Value - ImmutableArray.resi:39:1-45 - rangeBy is never used - <-- line 39 - @dead("rangeBy") let rangeBy: (int, int, ~step: int) => t - - Warning Dead Value - ImmutableArray.resi:41:1-42 - makeByU is never used - <-- line 41 - @dead("makeByU") let makeByU: (int, (. int) => 'a) => t<'a> - - Warning Dead Value - ImmutableArray.resi:42:1-37 - makeBy is never used - <-- line 42 - @dead("makeBy") let makeBy: (int, int => 'a) => t<'a> - - Warning Dead Value - ImmutableArray.resi:44:1-52 - makeByAndShuffleU is never used - <-- line 44 - @dead("makeByAndShuffleU") let makeByAndShuffleU: (int, (. int) => 'a) => t<'a> - - Warning Dead Value - ImmutableArray.resi:45:1-47 - makeByAndShuffle is never used - <-- line 45 - @dead("makeByAndShuffle") let makeByAndShuffle: (int, int => 'a) => t<'a> - - Warning Dead Value - ImmutableArray.resi:47:1-38 - zip is never used - <-- line 47 - @dead("zip") let zip: (t<'a>, t<'b>) => t<('a, 'b)> - - Warning Dead Value - ImmutableArray.resi:49:1-53 - zipByU is never used - <-- line 49 - @dead("zipByU") let zipByU: (t<'a>, t<'b>, (. 'a, 'b) => 'c) => t<'c> - - Warning Dead Value - ImmutableArray.resi:50:1-50 - zipBy is never used - <-- line 50 - @dead("zipBy") let zipBy: (t<'a>, t<'b>, ('a, 'b) => 'c) => t<'c> - - Warning Dead Value - ImmutableArray.resi:52:1-40 - unzip is never used - <-- line 52 - @dead("unzip") let unzip: t<('a, 'a)> => (t<'a>, t<'a>) - - Warning Dead Value - ImmutableArray.resi:54:1-35 - concat is never used - <-- line 54 - @dead("concat") let concat: (t<'a>, t<'a>) => t<'a> - - Warning Dead Value - ImmutableArray.resi:56:1-33 - concatMany is never used - <-- line 56 - @dead("concatMany") let concatMany: t> => t<'a> - - Warning Dead Value - ImmutableArray.resi:58:1-52 - slice is never used - <-- line 58 - @dead("slice") let slice: (t<'a>, ~offset: int, ~len: int) => t<'a> - - Warning Dead Value - ImmutableArray.resi:60:1-37 - sliceToEnd is never used - <-- line 60 - @dead("sliceToEnd") let sliceToEnd: (t<'a>, int) => t<'a> - - Warning Dead Value - ImmutableArray.resi:62:1-24 - copy is never used - <-- line 62 - @dead("copy") let copy: t<'a> => t<'a> - - Warning Dead Value - ImmutableArray.resi:64:1-45 - forEachU is never used - <-- line 64 - @dead("forEachU") let forEachU: (t<'a>, (. 'a) => unit) => unit - - Warning Dead Value - ImmutableArray.resi:65:1-40 - forEach is never used - <-- line 65 - @dead("forEach") let forEach: (t<'a>, 'a => unit) => unit - - Warning Dead Value - ImmutableArray.resi:67:1-40 - mapU is never used - <-- line 67 - @dead("mapU") let mapU: (t<'a>, (. 'a) => 'b) => t<'b> - - Warning Dead Value - ImmutableArray.resi:68:1-35 - map is never used - <-- line 68 - @dead("map") let map: (t<'a>, 'a => 'b) => t<'b> - - Warning Dead Value - ImmutableArray.resi:70:1-57 - keepWithIndexU is never used - <-- line 70 - @dead("keepWithIndexU") let keepWithIndexU: (t<'a>, (. 'a, int) => bool) => t<'a> - - Warning Dead Value - ImmutableArray.resi:71:1-54 - keepWithIndex is never used - <-- line 71 - @dead("keepWithIndex") let keepWithIndex: (t<'a>, ('a, int) => bool) => t<'a> - - Warning Dead Value - ImmutableArray.resi:73:1-52 - keepMapU is never used - <-- line 73 - @dead("keepMapU") let keepMapU: (t<'a>, (. 'a) => option<'b>) => t<'b> - - Warning Dead Value - ImmutableArray.resi:74:1-47 - keepMap is never used - <-- line 74 - @dead("keepMap") let keepMap: (t<'a>, 'a => option<'b>) => t<'b> - - Warning Dead Value - ImmutableArray.resi:76:1-59 - forEachWithIndexU is never used - <-- line 76 - @dead("forEachWithIndexU") let forEachWithIndexU: (t<'a>, (. int, 'a) => unit) => unit - - Warning Dead Value - ImmutableArray.resi:77:1-56 - forEachWithIndex is never used - <-- line 77 - @dead("forEachWithIndex") let forEachWithIndex: (t<'a>, (int, 'a) => unit) => unit - - Warning Dead Value - ImmutableArray.resi:79:1-54 - mapWithIndexU is never used - <-- line 79 - @dead("mapWithIndexU") let mapWithIndexU: (t<'a>, (. int, 'a) => 'b) => t<'b> - - Warning Dead Value - ImmutableArray.resi:80:1-51 - mapWithIndex is never used - <-- line 80 - @dead("mapWithIndex") let mapWithIndex: (t<'a>, (int, 'a) => 'b) => t<'b> - - Warning Dead Value - ImmutableArray.resi:82:1-57 - partitionU is never used - <-- line 82 - @dead("partitionU") let partitionU: (t<'a>, (. 'a) => bool) => (t<'a>, t<'a>) - - Warning Dead Value - ImmutableArray.resi:83:1-52 - partition is never used - <-- line 83 - @dead("partition") let partition: (t<'a>, 'a => bool) => (t<'a>, t<'a>) - - Warning Dead Value - ImmutableArray.resi:85:1-48 - reduceU is never used - <-- line 85 - @dead("reduceU") let reduceU: (t<'a>, 'b, (. 'b, 'a) => 'b) => 'b - - Warning Dead Value - ImmutableArray.resi:86:1-45 - reduce is never used - <-- line 86 - @dead("reduce") let reduce: (t<'a>, 'b, ('b, 'a) => 'b) => 'b - - Warning Dead Value - ImmutableArray.resi:88:1-55 - reduceReverseU is never used - <-- line 88 - @dead("reduceReverseU") let reduceReverseU: (t<'a>, 'b, (. 'b, 'a) => 'b) => 'b - - Warning Dead Value - ImmutableArray.resi:89:1-52 - reduceReverse is never used - <-- line 89 - @dead("reduceReverse") let reduceReverse: (t<'a>, 'b, ('b, 'a) => 'b) => 'b - - Warning Dead Value - ImmutableArray.resi:91:1-67 - reduceReverse2U is never used - <-- line 91 - @dead("reduceReverse2U") let reduceReverse2U: (t<'a>, t<'b>, 'c, (. 'c, 'a, 'b) => 'c) => 'c - - Warning Dead Value - ImmutableArray.resi:92:1-64 - reduceReverse2 is never used - <-- line 92 - @dead("reduceReverse2") let reduceReverse2: (t<'a>, t<'b>, 'c, ('c, 'a, 'b) => 'c) => 'c - - Warning Dead Value - ImmutableArray.resi:94:1-42 - someU is never used - <-- line 94 - @dead("someU") let someU: (t<'a>, (. 'a) => bool) => bool - - Warning Dead Value - ImmutableArray.resi:95:1-37 - some is never used - <-- line 95 - @dead("some") let some: (t<'a>, 'a => bool) => bool - - Warning Dead Value - ImmutableArray.resi:97:1-43 - everyU is never used - <-- line 97 - @dead("everyU") let everyU: (t<'a>, (. 'a) => bool) => bool - - Warning Dead Value - ImmutableArray.resi:98:1-38 - every is never used - <-- line 98 - @dead("every") let every: (t<'a>, 'a => bool) => bool - - Warning Dead Value - ImmutableArray.resi:100:1-55 - every2U is never used - <-- line 100 - @dead("every2U") let every2U: (t<'a>, t<'b>, (. 'a, 'b) => bool) => bool - - Warning Dead Value - ImmutableArray.resi:101:1-52 - every2 is never used - <-- line 101 - @dead("every2") let every2: (t<'a>, t<'b>, ('a, 'b) => bool) => bool - - Warning Dead Value - ImmutableArray.resi:103:1-54 - some2U is never used - <-- line 103 - @dead("some2U") let some2U: (t<'a>, t<'b>, (. 'a, 'b) => bool) => bool - - Warning Dead Value - ImmutableArray.resi:104:1-51 - some2 is never used - <-- line 104 - @dead("some2") let some2: (t<'a>, t<'b>, ('a, 'b) => bool) => bool - - Warning Dead Value - ImmutableArray.resi:106:1-50 - cmpU is never used - <-- line 106 - @dead("cmpU") let cmpU: (t<'a>, t<'a>, (. 'a, 'a) => int) => int - - Warning Dead Value - ImmutableArray.resi:107:1-47 - cmp is never used - <-- line 107 - @dead("cmp") let cmp: (t<'a>, t<'a>, ('a, 'a) => int) => int - - Warning Dead Value - ImmutableArray.resi:109:1-51 - eqU is never used - <-- line 109 - @dead("eqU") let eqU: (t<'a>, t<'a>, (. 'a, 'a) => bool) => bool - - Warning Dead Value - ImmutableArray.resi:110:1-48 - eq is never used - <-- line 110 - @dead("eq") let eq: (t<'a>, t<'a>, ('a, 'a) => bool) => bool - - Warning Dead Type - ImportHookDefault.res:2:3-14 - person.name is a record label never used to read a value - <-- line 2 - @dead("person.name") name: string, - - Warning Dead Type - ImportHookDefault.res:3:3-10 - person.age is a record label never used to read a value - <-- line 3 - @dead("person.age") age: int, - - Warning Dead Type - ImportHooks.res:3:3-14 - person.name is a record label never used to read a value - <-- line 3 - @dead("person.name") name: string, - - Warning Dead Type - ImportHooks.res:4:3-10 - person.age is a record label never used to read a value - <-- line 4 - @dead("person.age") age: int, - - Warning Dead Type - ImportJsValue.res:11:3-8 - point.x is a record label never used to read a value - <-- line 11 - @dead("point.x") x: int, - - Warning Dead Type - ImportJsValue.res:12:3-16 - point.y is a record label never used to read a value - <-- line 12 - @dead("point.y") y: option, - - Warning Dead Type - ImportJsValue.res:67:3-10 - variant.I is a variant case which is never constructed - <-- line 67 - | @dead("variant.I") I(int) - - Warning Dead Type - ImportJsValue.res:68:5-13 - variant.S is a variant case which is never constructed - <-- line 68 - | @dead("variant.S") S(string) - - Warning Dead Type - ImportMyBanner.res:5:17-28 - message.text is a record label never used to read a value - <-- line 5 - type message = {@dead("message.text") text: string} - - Warning Dead Value - ImportMyBanner.res:12:1-15 - make is never used - <-- line 12 - @dead("make") let make = make - - Warning Dead Module - ModuleAliases.res:2:10-56 - ModuleAliases.Outer.Inner is a dead module as all its items are dead. - - Warning Dead Type - ModuleAliases.res:3:20-32 - Outer.Inner.innerT.inner is a record label never used to read a value - <-- line 3 - type innerT = {@dead("Outer.Inner.innerT.inner") inner: string} - - Warning Dead Module - ModuleAliases.res:10:12-61 - ModuleAliases.Outer2.Inner2.InnerNested is a dead module as all its items are dead. - - Warning Dead Type - ModuleAliases.res:11:17-27 - Outer2.Inner2.InnerNested.t.nested is a record label never used to read a value - <-- line 11 - type t = {@dead("Outer2.Inner2.InnerNested.t.nested") nested: int} - - Warning Dead Module - ModuleAliases2.res:0:1 - ModuleAliases2 is a dead module as all its items are dead. - - Warning Dead Type - ModuleAliases2.res:3:3-8 - record.x is a record label never used to read a value - <-- line 3 - @dead("record.x") x: int, - - Warning Dead Type - ModuleAliases2.res:4:3-11 - record.y is a record label never used to read a value - <-- line 4 - @dead("record.y") y: string, - - Warning Dead Module - ModuleAliases2.res:7:8-130 - ModuleAliases2.Outer is a dead module as all its items are dead. - - Warning Dead Type - ModuleAliases2.res:9:17-29 - Outer.outer.outer is a record label never used to read a value - <-- line 9 - type outer = {@dead("Outer.outer.outer") outer: string} - - Warning Dead Module - ModuleAliases2.res:11:10-68 - ModuleAliases2.Outer.Inner is a dead module as all its items are dead. - - Warning Dead Type - ModuleAliases2.res:13:19-31 - Outer.Inner.inner.inner is a record label never used to read a value - <-- line 13 - type inner = {@dead("Outer.Inner.inner.inner") inner: string} - - Warning Dead Value - ModuleAliases2.res:21:1-10 - q is never used - <-- line 21 - @dead("q") let q = 42 - - Warning Dead Module - ModuleExceptionBug.res:1:8-52 - ModuleExceptionBug.Dep is a dead module as all its items are dead. - - Warning Dead Value - ModuleExceptionBug.res:2:3-35 - Dep.customDouble is never used - <-- line 2 - @dead("Dep.customDouble") let customDouble = foo => foo * 2 - - Warning Dead Exception - ModuleExceptionBug.res:5:1-26 - MyOtherException is never raised or passed as value - <-- line 5 - @dead("MyOtherException") exception MyOtherException - - Warning Dead Value - NestedModules.res:8:3-22 - Universe.notExported is never used - <-- line 8 - @dead("Universe.notExported") let notExported = 33 - - Warning Dead Value - NestedModules.res:14:5-13 - Universe.Nested2.x is never used - <-- line 14 - @dead("Universe.Nested2.x") let x = 0 - - Warning Dead Value - NestedModules.res:19:5-13 - Universe.Nested2.y is never used - <-- line 19 - @dead("Universe.Nested2.y") let y = 2 - - Warning Dead Value - NestedModules.res:25:7-15 - Universe.Nested2.Nested3.x is never used - <-- line 25 - @dead("Universe.Nested2.Nested3.x") let x = 0 - - Warning Dead Value - NestedModules.res:26:7-15 - Universe.Nested2.Nested3.y is never used - <-- line 26 - @dead("Universe.Nested2.Nested3.y") let y = 1 - - Warning Dead Value - NestedModules.res:27:7-15 - Universe.Nested2.Nested3.z is never used - <-- line 27 - @dead("Universe.Nested2.Nested3.z") let z = 2 - - Warning Dead Value - NestedModules.res:28:7-15 - Universe.Nested2.Nested3.w is never used - <-- line 28 - @dead("Universe.Nested2.Nested3.w") let w = 3 - - Warning Dead Type - NestedModules.res:46:5-7 - Universe.variant.A is a variant case which is never constructed - <-- line 46 - | @dead("Universe.variant.A") A - - Warning Dead Type - NestedModules.res:47:7-15 - Universe.variant.B is a variant case which is never constructed - <-- line 47 - | @dead("Universe.variant.B") B(string) - - Warning Dead Module - Newsyntax.res:0:1 - Newsyntax is a dead module as all its items are dead. - - Warning Dead Value - Newsyntax.res:1:1-10 - x is never used - <-- line 1 - @dead("x") let x = 34 - - Warning Dead Value - Newsyntax.res:3:1-10 - y is never used - <-- line 3 - @dead("y") let y = 11 - - Warning Dead Type - Newsyntax.res:6:3-10 - record.xxx is a record label never used to read a value - <-- line 6 - @dead("record.xxx") xxx: int, - - Warning Dead Type - Newsyntax.res:7:3-10 - record.yyy is a record label never used to read a value - <-- line 7 - @dead("record.yyy") yyy: int, - - Warning Dead Type - Newsyntax.res:10:16 - variant.A is a variant case which is never constructed - <-- line 10 - type variant = | @dead("variant.A") A | @dead("variant.B") B(int)|@dead("variant.C") C - - Warning Dead Type - Newsyntax.res:10:20-25 - variant.B is a variant case which is never constructed - <-- line 10 - type variant = | @dead("variant.A") A | @dead("variant.B") B(int)|@dead("variant.C") C - - Warning Dead Type - Newsyntax.res:10:26-27 - variant.C is a variant case which is never constructed - <-- line 10 - type variant = | @dead("variant.A") A | @dead("variant.B") B(int)|@dead("variant.C") C - - Warning Dead Type - Newsyntax.res:12:17-22 - record2.xx is a record label never used to read a value - <-- line 12 - type record2 = {@dead("record2.xx") xx:int,@dead("record2.yy") yy:int} - - Warning Dead Type - Newsyntax.res:12:24-29 - record2.yy is a record label never used to read a value - <-- line 12 - type record2 = {@dead("record2.xx") xx:int,@dead("record2.yy") yy:int} - - Warning Dead Type - Opaque.res:2:26-41 - opaqueFromRecords.A is a variant case which is never constructed - <-- line 2 - type opaqueFromRecords = | @dead("opaqueFromRecords.A") A(Records.coord) - - Warning Dead Value - OptArg.resi:1:1-54 - foo is never used - <-- line 1 - @dead("foo") let foo: (~x: int=?, ~y: int=?, ~z: int=?, int) => int - - Warning Dead Type - Records.res:24:3-14 - person.name is a record label never used to read a value - <-- line 24 - @dead("person.name") name: string, - - Warning Dead Type - Records.res:25:3-10 - person.age is a record label never used to read a value - <-- line 25 - @dead("person.age") age: int, - - Warning Dead Type - Records.res:31:3-14 - business.name is a record label never used to read a value - <-- line 31 - @dead("business.name") name: string, - - Warning Dead Type - Records.res:60:3-10 - payload.num is a record label never used to read a value - <-- line 60 - @dead("payload.num") num: int, - - Warning Dead Type - Records.res:70:3-8 - record.w is a record label never used to read a value - <-- line 70 - @dead("record.w") w: int, - - Warning Dead Type - Records.res:90:3-14 - business2.name is a record label never used to read a value - <-- line 90 - @dead("business2.name") name: string, - - Warning Dead Type - Records.res:91:3-30 - business2.owner is a record label never used to read a value - <-- line 91 - @dead("business2.owner") owner: Js.Nullable.t, - - Warning Dead Type - References.res:39:28-33 - requiresConversion.x is a record label never used to read a value - <-- line 39 - type requiresConversion = {@dead("requiresConversion.x") x: int} - - Warning Dead Type - RepeatedLabel.res:2:3-9 - userData.a is a record label never used to read a value - <-- line 2 - @dead("userData.a") a: bool, - - Warning Dead Type - RepeatedLabel.res:3:3-8 - userData.b is a record label never used to read a value - <-- line 3 - @dead("userData.b") b: int, - - Warning Dead Type - RepeatedLabel.res:9:3-11 - tabState.f is a record label never used to read a value - <-- line 9 - @dead("tabState.f") f: string, - - Warning Dead Value - Shadow.res:11:3-22 - M.test is never used - <-- line 11 - @dead("M.test") let test = () => "a" - - Warning Dead Value - TestImmutableArray.res:12:1-54 - testBeltArrayGet is never used - <-- line 12 - @dead("testBeltArrayGet") let testBeltArrayGet = arr => { - - Warning Dead Value - TestImmutableArray.res:17:1-58 - testBeltArraySet is never used - <-- line 17 - @dead("testBeltArraySet") let testBeltArraySet = arr => { - - Warning Dead Value - TestImport.res:13:1-43 - innerStuffContents is never used - <-- line 13 - @dead("innerStuffContents") let innerStuffContents = innerStuffContents - - Warning Dead Type - TestImport.res:22:17-28 - message.text is a record label never used to read a value - <-- line 22 - type message = {@dead("message.text") text: string} - - Warning Dead Value - TestImport.res:27:1-15 - make is never used - <-- line 27 - @dead("make") let make = make - - Warning Dead Type - TestPromise.res:6:3-8 - fromPayload.x is a record label never used to read a value - <-- line 6 - @dead("fromPayload.x") x: int, - - Warning Dead Type - TestPromise.res:11:19-32 - toPayload.result is a record label never used to read a value - <-- line 11 - type toPayload = {@dead("toPayload.result") result: string} - - Warning Dead Module - TransitiveType2.res:0:1 - TransitiveType2 is a dead module as all its items are dead. - - Warning Dead Value - TransitiveType2.res:7:1-28 - convertT2 is never used - <-- line 7 - @dead("convertT2") let convertT2 = (x: t2) => x - - Warning Dead Type - TransitiveType3.res:3:3-8 - t3.i is a record label never used to read a value - <-- line 3 - @dead("t3.i") i: int, - - Warning Dead Type - TransitiveType3.res:4:3-11 - t3.s is a record label never used to read a value - <-- line 4 - @dead("t3.s") s: string, - - Warning Dead Module - TypeParams1.res:0:1 - TypeParams1 is a dead module as all its items are dead. - - Warning Dead Value - TypeParams1.res:4:1-24 - exportSomething is never used - <-- line 4 - @dead("exportSomething") let exportSomething = 10 - - Warning Dead Module - TypeParams2.res:0:1 - TypeParams2 is a dead module as all its items are dead. - - Warning Dead Type - TypeParams2.res:2:14-20 - item.id is a record label never used to read a value - <-- line 2 - type item = {@dead("item.id") id: int} - - Warning Dead Value - TypeParams2.res:10:1-24 - exportSomething is never used - <-- line 10 - @dead("exportSomething") let exportSomething = 10 - - Warning Dead Type - Types.res:12:3-13 - typeWithVars.A is a variant case which is never constructed - <-- line 12 - | @dead("typeWithVars.A") A('x, 'y) - - Warning Dead Type - Types.res:13:5-9 - typeWithVars.B is a variant case which is never constructed - <-- line 13 - | @dead("typeWithVars.B") B('z) - - Warning Dead Type - Types.res:35:27-47 - mutuallyRecursiveB.a is a record label never used to read a value - <-- line 35 - and mutuallyRecursiveB = {@dead("mutuallyRecursiveB.a") a: mutuallyRecursiveA} - - Warning Dead Type - Types.res:56:3-5 - opaqueVariant.A is a variant case which is never constructed - <-- line 56 - | @dead("opaqueVariant.A") A - - Warning Dead Type - Types.res:57:5 - opaqueVariant.B is a variant case which is never constructed - <-- line 57 - | @dead("opaqueVariant.B") B - - Warning Dead Type - Types.res:84:3-8 - record.i is a record label never used to read a value - <-- line 84 - @dead("record.i") i: int, - - Warning Dead Type - Types.res:85:3-11 - record.s is a record label never used to read a value - <-- line 85 - @dead("record.s") s: string, - - Warning Dead Type - Types.res:130:20-26 - someRecord.id is a record label never used to read a value - <-- line 130 - type someRecord = {@dead("someRecord.id") id: int} - - Warning Dead Module - Types.res:158:8-79 - Types.ObjectId is a dead module as all its items are dead. - - Warning Dead Value - Types.res:163:3-11 - ObjectId.x is never used - <-- line 163 - @dead("ObjectId.x") let x = 1 - - Warning Dead Type - Unboxed.res:2:11-16 - v1.A is a variant case which is never constructed - <-- line 2 - type v1 = | @dead("v1.A") A(int) - - Warning Dead Type - Unboxed.res:5:11-16 - v2.A is a variant case which is never constructed - <-- line 5 - type v2 = | @dead("v2.A") A(int) - - Warning Dead Type - Unboxed.res:11:12-17 - r1.x is a record label never used to read a value - <-- line 11 - type r1 = {@dead("r1.x") x: int} - - Warning Dead Type - Unboxed.res:14:11-24 - r2.B is a variant case which is never constructed - <-- line 14 - type r2 = | @dead("r2.B") B({@dead("r2.B.g") g: string}) - - Warning Dead Type - Unboxed.res:14:14-22 - r2.B.g is a record label never used to read a value - <-- line 14 - type r2 = | @dead("r2.B") B({@dead("r2.B.g") g: string}) - - Warning Dead Type - Variants.res:95:14-39 - type_.Type is a variant case which is never constructed - <-- line 95 - type type_ = | @dead("type_.Type") @genType.as("type") Type - - Warning Dead Type - Variants.res:102:3-10 - result1.Ok is a variant case which is never constructed - <-- line 102 - | @dead("result1.Ok") Ok('a) - - Warning Dead Type - Variants.res:103:5-13 - result1.Error is a variant case which is never constructed - <-- line 103 - | @dead("result1.Error") Error('b) - - Warning Dead Type - VariantsWithPayload.res:49:3-5 - simpleVariant.A is a variant case which is never constructed - <-- line 49 - | @dead("simpleVariant.A") A - - Warning Dead Type - VariantsWithPayload.res:50:5 - simpleVariant.B is a variant case which is never constructed - <-- line 50 - | @dead("simpleVariant.B") B - - Warning Dead Type - VariantsWithPayload.res:51:5 - simpleVariant.C is a variant case which is never constructed - <-- line 51 - | @dead("simpleVariant.C") C - - Warning Dead Type - VariantsWithPayload.res:58:3-29 - variantWithPayloads.A is a variant case which is never constructed - <-- line 58 - | @dead("variantWithPayloads.A") @genType.as("ARenamed") A - - Warning Dead Type - VariantsWithPayload.res:59:5-10 - variantWithPayloads.B is a variant case which is never constructed - <-- line 59 - | @dead("variantWithPayloads.B") B(int) - - Warning Dead Type - VariantsWithPayload.res:60:5-15 - variantWithPayloads.C is a variant case which is never constructed - <-- line 60 - | @dead("variantWithPayloads.C") C(int, int) - - Warning Dead Type - VariantsWithPayload.res:61:5-17 - variantWithPayloads.D is a variant case which is never constructed - <-- line 61 - | @dead("variantWithPayloads.D") D((int, int)) - - Warning Dead Type - VariantsWithPayload.res:62:5-23 - variantWithPayloads.E is a variant case which is never constructed - <-- line 62 - | @dead("variantWithPayloads.E") E(int, string, int) - - Warning Dead Type - VariantsWithPayload.res:90:20-25 - variant1Int.R is a variant case which is never constructed - <-- line 90 - type variant1Int = | @dead("variant1Int.R") R(int) - - Warning Dead Type - VariantsWithPayload.res:96:23-32 - variant1Object.R is a variant case which is never constructed - <-- line 96 - type variant1Object = | @dead("variant1Object.R") R(payload) - - Analysis reported 302 issues (Incorrect Dead Annotation:1, Warning Dead Exception:2, Warning Dead Module:21, Warning Dead Type:87, Warning Dead Value:173, Warning Dead Value With Side Effects:2, Warning Redundant Optional Argument:5, Warning Unused Argument:11) diff --git a/tests/analysis_tests/tests-reanalyze/deadcode/expected/exception.txt b/tests/analysis_tests/tests-reanalyze/deadcode/expected/exception.txt index 9d087d9e01..e69de29bb2 100644 --- a/tests/analysis_tests/tests-reanalyze/deadcode/expected/exception.txt +++ b/tests/analysis_tests/tests-reanalyze/deadcode/expected/exception.txt @@ -1,99 +0,0 @@ - - - Exception Analysis - Exn.res:1:5-10 - raises might raise Not_found (Exn.res:1:19) and is not annotated with @raises(Not_found) - - Exception Analysis - Exn.res:19:5-28 - callsRaiseWithAnnotation might raise Not_found (Exn.res:19:31) and is not annotated with @raises(Not_found) - - Exception Analysis - Exn.res:22:5-42 - callsRaiseWithAnnotationAndIsAnnotated might raise Not_found (Exn.res:22:45) and is not annotated with @raises(Not_found) - - Exception Analysis - Exn.res:22:5-42 - callsRaiseWithAnnotationAndIsAnnotated might raise Not_found (Exn.res:22:45) and is annotated with redundant @raises(A) - - Exception Analysis - Exn.res:24:5-19 - incompleteMatch might raise Match_failure (Exn.res:25:2) and is not annotated with @raises(Match_failure) - - Exception Analysis - Exn.res:32:5-13 - twoRaises might raise [A (Exn.res:34:4), B (Exn.res:37:4)] and is not annotated with @raises([A, B]) - - Exception Analysis - Exn.res:41:5-14 - sequencing might raise A (Exn.res:42:2) and is not annotated with @raises(A) - - Exception Analysis - Exn.res:48:5-14 - wrongCatch might raise B (Exn.res:49:6) and is not annotated with @raises(B) - - Exception Analysis - Exn.res:54:5-15 - wrongCatch2 might raise [C (Exn.res:55:24), Match_failure (Exn.res:55:2)] and is not annotated with @raises([C, Match_failure]) - - Exception Analysis - Exn.res:62:5-19 - raise2Annotate3 might raise [A (Exn.res:64:4), B (Exn.res:67:4)] and is annotated with redundant @raises(C) - - Exception Analysis - Exn.res:73:5-24 - parse_json_from_file might raise Error (Exn.res:75:34) and is not annotated with @raises(Error) - - Exception Analysis - Exn.res:80:5-11 - reRaise might raise B (Exn.res:82:19) and is not annotated with @raises(B) - - Exception Analysis - Exn.res:91:5-22 - raiseInInternalLet might raise A (Exn.res:92:14) and is not annotated with @raises(A) - - Exception Analysis - Exn.res:96:5-16 - indirectCall might raise Not_found (Exn.res:96:25) and is not annotated with @raises(Not_found) - - Exception Analysis - Exn.res:121:5-16 - severalCases might raise Failure (Exn.res:123:13 Exn.res:124:13 Exn.res:125:15) and is not annotated with @raises(Failure) - - Exception Analysis - Exn.res:133:5-23 - redundantAnnotation raises nothing and is annotated with redundant @raises(Invalid_argument) - - Exception Analysis - Exn.res:135:5-6 - _x might raise A (Exn.res:135:9) and is not annotated with @raises(A) - - Exception Analysis - Exn.res:137:5 - _ might raise A (Exn.res:137:8) and is not annotated with @raises(A) - - Exception Analysis - Exn.res:139:5-6 - () might raise A (Exn.res:139:9) and is not annotated with @raises(A) - - Exception Analysis - Exn.res:141:1-16 - Toplevel expression might raise Not_found (Exn.res:141:0) and is not annotated with @raises(Not_found) - - Exception Analysis - Exn.res:151:46-47 - expression does not raise and is annotated with redundant @doesNotRaise - - Exception Analysis - Exn.res:151:5-21 - onResultPipeWrong might raise Assert_failure (Exn.res:151:50) and is not annotated with @raises(Assert_failure) - - Exception Analysis - ExnA.res:1:5-7 - bar might raise Not_found (ExnA.res:1:16) and is not annotated with @raises(Not_found) - - Exception Analysis - ExternalTest.res:7:5-24 - bigIntFromStringExn2 might raise Exn.Error (ExternalTest.res:7:35) and is not annotated with @raises(Exn.Error) - - Analysis reported 24 issues (Exception Analysis:24) diff --git a/tests/analysis_tests/tests-reanalyze/deadcode/package-lock.json b/tests/analysis_tests/tests-reanalyze/deadcode/package-lock.json index 6c579396cd..bc5a8754dc 100644 --- a/tests/analysis_tests/tests-reanalyze/deadcode/package-lock.json +++ b/tests/analysis_tests/tests-reanalyze/deadcode/package-lock.json @@ -15,6 +15,7 @@ } }, "../../../..": { + "name": "rescript", "version": "12.0.0-alpha.10", "dev": true, "hasInstallScript": true, diff --git a/tests/analysis_tests/tests/src/NestedRecordsHover.res b/tests/analysis_tests/tests/src/NestedRecordsHover.res new file mode 100644 index 0000000000..8702d7674f --- /dev/null +++ b/tests/analysis_tests/tests/src/NestedRecordsHover.res @@ -0,0 +1,18 @@ +type options = { + extra?: { + name: string, + superExtra?: {age: int}, + otherExtra: option<{test: bool, anotherInlined: {record: bool}}>, + }, +} + +let options = { + // ^hov + extra: { + name: "test", + superExtra: { + age: 2222, + }, + otherExtra: Some({test: true, anotherInlined: {record: true}}), + }, +} diff --git a/tests/analysis_tests/tests/src/expected/NestedRecords.res.txt b/tests/analysis_tests/tests/src/expected/NestedRecords.res.txt index 0d8e6488e9..8bec38e8b0 100644 --- a/tests/analysis_tests/tests/src/expected/NestedRecords.res.txt +++ b/tests/analysis_tests/tests/src/expected/NestedRecords.res.txt @@ -3,18 +3,21 @@ Nothing at that position. Now trying to use completion. posCursor:[17:5] posNoWhite:[17:4] Found expr:[17:3->17:10] Pexp_ident options:[17:3->17:10] Completable: Cpath Value[options] -Package opens Pervasives.JsxModules.place holder +Package opens Stdlib.place holder Pervasives.JsxModules.place holder +Resolved opens 1 Stdlib ContextPath Value[options] Path options -Package opens Pervasives.JsxModules.place holder -{"contents": {"kind": "markdown", "value": "```rescript\noptions\n```\n\n---\n\n```\n \n```\n```rescript\ntype options = {extra: \\\"options.extra\"}\n```\nGo to: [Type definition](command:rescript-vscode.go_to_location?%5B%22NestedRecords.res%22%2C1%2C0%5D)\n\n\n---\n\n```\n \n```\n```rescript\ntype options.extra = {\n name: string,\n superExtra: \\\"options.extra.superExtra\",\n}\n```\nGo to: [Type definition](command:rescript-vscode.go_to_location?%5B%22NestedRecords.res%22%2C2%2C9%5D)\n"}} +Package opens Stdlib.place holder Pervasives.JsxModules.place holder +Resolved opens 1 Stdlib +{"contents": {"kind": "markdown", "value": "```rescript\noptions\n```\n\n---\n\n```\n \n```\n```rescript\ntype options = {\n extra: {name: string, superExtra: {age: int}},\n}\n```\nGo to: [Type definition](command:rescript-vscode.go_to_location?%5B%22NestedRecords.res%22%2C1%2C0%5D)\n\n\n---\n\n```\n \n```\n```rescript\ntype options.extra = {name: string, superExtra: {age: int}}\n```\nGo to: [Type definition](command:rescript-vscode.go_to_location?%5B%22NestedRecords.res%22%2C2%2C9%5D)\n"}} Hover src/NestedRecords.res 20:13 Nothing at that position. Now trying to use completion. posCursor:[20:13] posNoWhite:[20:12] Found expr:[20:3->20:16] Pexp_field [20:3->20:10] extra:[20:11->20:16] Completable: Cpath Value[options].extra -Package opens Pervasives.JsxModules.place holder +Package opens Stdlib.place holder Pervasives.JsxModules.place holder +Resolved opens 1 Stdlib ContextPath Value[options].extra ContextPath Value[options] Path options @@ -23,15 +26,17 @@ ContextPath Value[options] Path options CPPipe pathFromEnv: found:true Path NestedRecords.extra -Package opens Pervasives.JsxModules.place holder -{"contents": {"kind": "markdown", "value": "```rescript\n\\\"options.extra\"\n```\n\n---\n\n```\n \n```\n```rescript\ntype options.extra = {\n name: string,\n superExtra: \\\"options.extra.superExtra\",\n}\n```\nGo to: [Type definition](command:rescript-vscode.go_to_location?%5B%22NestedRecords.res%22%2C2%2C9%5D)\n\n\n---\n\n```\n \n```\n```rescript\ntype options.extra.superExtra = {age: int}\n```\nGo to: [Type definition](command:rescript-vscode.go_to_location?%5B%22NestedRecords.res%22%2C4%2C16%5D)\n"}} +Package opens Stdlib.place holder Pervasives.JsxModules.place holder +Resolved opens 1 Stdlib +{"contents": {"kind": "markdown", "value": "```rescript\n\\\"options.extra\"\n```\n\n---\n\n```\n \n```\n```rescript\ntype options.extra = {name: string, superExtra: {age: int}}\n```\nGo to: [Type definition](command:rescript-vscode.go_to_location?%5B%22NestedRecords.res%22%2C2%2C9%5D)\n\n\n---\n\n```\n \n```\n```rescript\ntype options.extra.superExtra = {age: int}\n```\nGo to: [Type definition](command:rescript-vscode.go_to_location?%5B%22NestedRecords.res%22%2C4%2C16%5D)\n"}} Hover src/NestedRecords.res 23:26 Nothing at that position. Now trying to use completion. posCursor:[23:26] posNoWhite:[23:25] Found expr:[23:3->23:27] Pexp_field [23:3->23:16] superExtra:[23:17->23:27] Completable: Cpath Value[options].extra.superExtra -Package opens Pervasives.JsxModules.place holder +Package opens Stdlib.place holder Pervasives.JsxModules.place holder +Resolved opens 1 Stdlib ContextPath Value[options].extra.superExtra ContextPath Value[options].extra ContextPath Value[options] @@ -52,7 +57,8 @@ CPPipe pathFromEnv: found:true Path NestedRecords.extra CPPipe pathFromEnv: found:true Path NestedRecords.superExtra -Package opens Pervasives.JsxModules.place holder +Package opens Stdlib.place holder Pervasives.JsxModules.place holder +Resolved opens 1 Stdlib {"contents": {"kind": "markdown", "value": "```rescript\n\\\"options.extra.superExtra\"\n```\n\n---\n\n```\n \n```\n```rescript\ntype options.extra.superExtra = {age: int}\n```\nGo to: [Type definition](command:rescript-vscode.go_to_location?%5B%22NestedRecords.res%22%2C4%2C16%5D)\n"}} Hover src/NestedRecords.res 26:29 @@ -60,7 +66,8 @@ Nothing at that position. Now trying to use completion. posCursor:[26:29] posNoWhite:[26:28] Found expr:[26:3->26:31] Pexp_field [26:3->26:27] age:[26:28->26:31] Completable: Cpath Value[options].extra.superExtra.age -Package opens Pervasives.JsxModules.place holder +Package opens Stdlib.place holder Pervasives.JsxModules.place holder +Resolved opens 1 Stdlib ContextPath Value[options].extra.superExtra.age ContextPath Value[options].extra.superExtra ContextPath Value[options].extra @@ -105,6 +112,7 @@ CPPipe pathFromEnv: found:true Path NestedRecords.superExtra CPPipe pathFromEnv: found:true Path NestedRecords.age -Package opens Pervasives.JsxModules.place holder +Package opens Stdlib.place holder Pervasives.JsxModules.place holder +Resolved opens 1 Stdlib {"contents": {"kind": "markdown", "value": "```rescript\nint\n```"}} diff --git a/tests/analysis_tests/tests/src/expected/NestedRecordsHover.res.txt b/tests/analysis_tests/tests/src/expected/NestedRecordsHover.res.txt new file mode 100644 index 0000000000..bf444f15ad --- /dev/null +++ b/tests/analysis_tests/tests/src/expected/NestedRecordsHover.res.txt @@ -0,0 +1,3 @@ +Hover src/NestedRecordsHover.res 8:7 +{"contents": {"kind": "markdown", "value": "```rescript\noptions\n```\n\n---\n\n```\n \n```\n```rescript\ntype options = {\n extra?: {\n name: string,\n superExtra?: {age: int},\n otherExtra: option<\n {\n test: bool,\n anotherInlined: {record: bool},\n },\n >,\n },\n}\n```\nGo to: [Type definition](command:rescript-vscode.go_to_location?%5B%22NestedRecordsHover.res%22%2C0%2C0%5D)\n\n\n---\n\n```\n \n```\n```rescript\ntype options.extra = {\n name: string,\n superExtra?: {age: int},\n otherExtra: option<\n {\n test: bool,\n anotherInlined: {record: bool},\n },\n >,\n}\n```\nGo to: [Type definition](command:rescript-vscode.go_to_location?%5B%22NestedRecordsHover.res%22%2C1%2C10%5D)\n"}} + From 9fe845e1b3c2a55796eceb96140949fca2979e29 Mon Sep 17 00:00:00 2001 From: Gabriel Nordeborn Date: Thu, 13 Mar 2025 10:59:20 +0100 Subject: [PATCH 06/18] update errors --- .../parsing/errors/typeDef/expected/inlineRecord.res.txt | 8 ++++---- .../parsing/errors/typexpr/expected/objectSpread.res.txt | 2 +- 2 files changed, 5 insertions(+), 5 deletions(-) diff --git a/tests/syntax_tests/data/parsing/errors/typeDef/expected/inlineRecord.res.txt b/tests/syntax_tests/data/parsing/errors/typeDef/expected/inlineRecord.res.txt index 7f2c8f8981..d0ca362751 100644 --- a/tests/syntax_tests/data/parsing/errors/typeDef/expected/inlineRecord.res.txt +++ b/tests/syntax_tests/data/parsing/errors/typeDef/expected/inlineRecord.res.txt @@ -8,7 +8,7 @@ 7 ┆ score: int 8 ┆ } - An inline record type declaration is only allowed in a variant constructor's declaration + An inline record type declaration is only allowed in a variant constructor's declaration or nested inside of a record type declaration Syntax error! @@ -20,7 +20,7 @@ │ nder(props) 20 │ - An inline record type declaration is only allowed in a variant constructor's declaration + An inline record type declaration is only allowed in a variant constructor's declaration or nested inside of a record type declaration type nonrec entity = | Director @@ -29,11 +29,11 @@ type nonrec entity = reportCard: < passing: bool ;score: int > } type user.address = { street: string ; - country: string }[@@inlineRecordDefinition ] + country: string }[@@res.inlineRecordDefinition ] and user = { name: string ; - address: ((user.address)[@inlineRecordReference ]) } + address: ((user.address)[@res.inlineRecordReference ]) } let make [arity:1](props : < handleClick: Click.t -> unit (a:1) ;value: string > ) diff --git a/tests/syntax_tests/data/parsing/errors/typexpr/expected/objectSpread.res.txt b/tests/syntax_tests/data/parsing/errors/typexpr/expected/objectSpread.res.txt index 9772fd07a0..bd46eeae3c 100644 --- a/tests/syntax_tests/data/parsing/errors/typexpr/expected/objectSpread.res.txt +++ b/tests/syntax_tests/data/parsing/errors/typexpr/expected/objectSpread.res.txt @@ -19,7 +19,7 @@ 9 │ let f = (x: {a: int, b: int}) => () 10 │ - An inline record type declaration is only allowed in a variant constructor's declaration + An inline record type declaration is only allowed in a variant constructor's declaration or nested inside of a record type declaration type nonrec u = { ...: a ; From 77c6295f5c99f1eac503710f6f66fda6d4190503 Mon Sep 17 00:00:00 2001 From: Gabriel Nordeborn Date: Thu, 13 Mar 2025 21:22:12 +0100 Subject: [PATCH 07/18] output --- .../deadcode/expected/deadcode.txt | 4250 +++++++++++++++++ .../deadcode/expected/exception.txt | 99 + 2 files changed, 4349 insertions(+) diff --git a/tests/analysis_tests/tests-reanalyze/deadcode/expected/deadcode.txt b/tests/analysis_tests/tests-reanalyze/deadcode/expected/deadcode.txt index e69de29bb2..99902b72a5 100644 --- a/tests/analysis_tests/tests-reanalyze/deadcode/expected/deadcode.txt +++ b/tests/analysis_tests/tests-reanalyze/deadcode/expected/deadcode.txt @@ -0,0 +1,4250 @@ + + Scanning AutoAnnotate.cmt Source:AutoAnnotate.res + addVariantCaseDeclaration R AutoAnnotate.res:1:15 path:+AutoAnnotate.variant + addRecordLabelDeclaration variant AutoAnnotate.res:4:15 path:+AutoAnnotate.record + addRecordLabelDeclaration r2 AutoAnnotate.res:6:11 path:+AutoAnnotate.r2 + addRecordLabelDeclaration r3 AutoAnnotate.res:8:11 path:+AutoAnnotate.r3 + addRecordLabelDeclaration r4 AutoAnnotate.res:10:11 path:+AutoAnnotate.r4 + addVariantCaseDeclaration R2 AutoAnnotate.res:14:2 path:+AutoAnnotate.annotatedVariant + addVariantCaseDeclaration R4 AutoAnnotate.res:15:2 path:+AutoAnnotate.annotatedVariant + Scanning BootloaderResource.cmt Source:BootloaderResource.res + Scanning BucklescriptAnnotations.cmt Source:BucklescriptAnnotations.res + addValueDeclaration +bar BucklescriptAnnotations.res:25:4 path:+BucklescriptAnnotations + addValueDeclaration +f BucklescriptAnnotations.res:26:6 path:+BucklescriptAnnotations + addValueReference BucklescriptAnnotations.res:26:6 --> BucklescriptAnnotations.res:25:11 + addValueReference BucklescriptAnnotations.res:25:4 --> BucklescriptAnnotations.res:26:6 + Scanning ComponentAsProp.cmt Source:ComponentAsProp.res + addValueDeclaration +make ComponentAsProp.res:6:4 path:+ComponentAsProp + addRecordLabelDeclaration title ComponentAsProp.res:6:12 path:+ComponentAsProp.props + addRecordLabelDeclaration description ComponentAsProp.res:6:20 path:+ComponentAsProp.props + addRecordLabelDeclaration button ComponentAsProp.res:6:34 path:+ComponentAsProp.props + addValueReference ComponentAsProp.res:9:6 --> ComponentAsProp.res:6:12 + addValueReference ComponentAsProp.res:10:6 --> ComponentAsProp.res:6:20 + addValueReference ComponentAsProp.res:12:24 --> ComponentAsProp.res:12:13 + addValueReference ComponentAsProp.res:13:16 --> React.res:3:0 + addValueReference ComponentAsProp.res:11:14 --> ComponentAsProp.res:6:34 + addValueReference ComponentAsProp.res:9:6 --> ComponentAsProp.res:6:12 + addValueReference ComponentAsProp.res:10:6 --> ComponentAsProp.res:6:20 + addValueReference ComponentAsProp.res:12:24 --> ComponentAsProp.res:12:13 + addValueReference ComponentAsProp.res:13:16 --> React.res:3:0 + addValueReference ComponentAsProp.res:11:14 --> ComponentAsProp.res:6:34 + addValueReference ComponentAsProp.res:9:6 --> ComponentAsProp.res:6:12 + addValueReference ComponentAsProp.res:10:6 --> ComponentAsProp.res:6:20 + addValueReference ComponentAsProp.res:12:24 --> ComponentAsProp.res:12:13 + addValueReference ComponentAsProp.res:13:16 --> React.res:3:0 + addValueReference ComponentAsProp.res:11:14 --> ComponentAsProp.res:6:34 + addValueReference ComponentAsProp.res:9:6 --> ComponentAsProp.res:6:12 + addValueReference ComponentAsProp.res:10:6 --> ComponentAsProp.res:6:20 + addValueReference ComponentAsProp.res:12:24 --> ComponentAsProp.res:12:13 + addValueReference ComponentAsProp.res:13:16 --> React.res:3:0 + addValueReference ComponentAsProp.res:11:14 --> ComponentAsProp.res:6:34 + addTypeReference _none_:1:-1 --> ComponentAsProp.res:6:12 + addTypeReference _none_:1:-1 --> ComponentAsProp.res:6:20 + addTypeReference _none_:1:-1 --> ComponentAsProp.res:6:34 + Scanning CreateErrorHandler1.cmt Source:CreateErrorHandler1.res + addValueDeclaration +notification CreateErrorHandler1.res:3:6 path:+CreateErrorHandler1.Error1 + addValueReference CreateErrorHandler1.res:3:6 --> CreateErrorHandler1.res:3:21 + addValueReference CreateErrorHandler1.res:3:6 --> CreateErrorHandler1.res:3:21 + addValueReference CreateErrorHandler1.res:8:0 --> ErrorHandler.resi:7:2 + addValueReference ErrorHandler.resi:3:2 --> CreateErrorHandler1.res:3:6 + Scanning CreateErrorHandler2.cmt Source:CreateErrorHandler2.res + addValueDeclaration +notification CreateErrorHandler2.res:3:6 path:+CreateErrorHandler2.Error2 + addValueReference CreateErrorHandler2.res:3:6 --> CreateErrorHandler2.res:3:21 + addValueReference ErrorHandler.resi:3:2 --> CreateErrorHandler2.res:3:6 + Scanning DeadCodeImplementation.cmt Source:DeadCodeImplementation.res + addValueDeclaration +x DeadCodeImplementation.res:2:6 path:+DeadCodeImplementation.M + addValueReference DeadCodeInterface.res:2:2 --> DeadCodeImplementation.res:2:6 + Scanning DeadCodeInterface.cmt Source:DeadCodeInterface.res + Scanning DeadExn.cmt Source:DeadExn.res + addValueDeclaration +eToplevel DeadExn.res:8:4 path:+DeadExn + addValueDeclaration +eInside DeadExn.res:10:4 path:+DeadExn + addExceptionDeclaration Etoplevel DeadExn.res:1:0 path:+DeadExn + addExceptionDeclaration Einside DeadExn.res:4:2 path:+DeadExn.Inside + addExceptionDeclaration DeadE DeadExn.res:7:0 path:+DeadExn + addValueReference DeadExn.res:8:4 --> DeadExn.res:1:0 + addTypeReference DeadExn.res:8:16 --> DeadExn.res:1:0 + addValueReference DeadExn.res:10:4 --> DeadExn.res:4:2 + addTypeReference DeadExn.res:10:14 --> DeadExn.res:4:2 + addValueReference DeadExn.res:12:7 --> DeadExn.res:10:4 + Scanning DeadExn.cmti Source:DeadExn.resi + Scanning DeadRT.cmt Source:DeadRT.res + addValueDeclaration +emitModuleAccessPath DeadRT.res:5:8 path:+DeadRT + addVariantCaseDeclaration Root DeadRT.res:2:2 path:+DeadRT.moduleAccessPath + addVariantCaseDeclaration Kaboom DeadRT.res:3:2 path:+DeadRT.moduleAccessPath + addValueReference DeadRT.res:5:8 --> DeadRT.res:7:9 + addValueReference DeadRT.res:5:8 --> DeadRT.res:5:31 + addTypeReference DeadRT.res:11:16 --> DeadRT.res:3:2 + Scanning DeadRT.cmti Source:DeadRT.resi + addVariantCaseDeclaration Root DeadRT.resi:2:2 path:DeadRT.moduleAccessPath + extendTypeDependencies DeadRT.res:2:2 --> DeadRT.resi:2:2 + extendTypeDependencies DeadRT.resi:2:2 --> DeadRT.res:2:2 + addVariantCaseDeclaration Kaboom DeadRT.resi:3:2 path:DeadRT.moduleAccessPath + extendTypeDependencies DeadRT.res:3:2 --> DeadRT.resi:3:2 + extendTypeDependencies DeadRT.resi:3:2 --> DeadRT.res:3:2 + addTypeReference DeadRT.res:3:2 --> DeadRT.resi:3:2 + addTypeReference DeadRT.resi:3:2 --> DeadRT.res:3:2 + addTypeReference DeadRT.res:2:2 --> DeadRT.resi:2:2 + addTypeReference DeadRT.resi:2:2 --> DeadRT.res:2:2 + Scanning DeadTest.cmt Source:DeadTest.res + addValueDeclaration +fortytwo DeadTest.res:2:4 path:+DeadTest + addValueDeclaration +fortyTwoButExported DeadTest.res:5:4 path:+DeadTest + addValueDeclaration +thisIsUsedOnce DeadTest.res:7:4 path:+DeadTest + addValueDeclaration +thisIsUsedTwice DeadTest.res:10:4 path:+DeadTest + addValueDeclaration +thisIsMarkedDead DeadTest.res:15:4 path:+DeadTest + addValueDeclaration +thisIsKeptAlive DeadTest.res:17:4 path:+DeadTest + addValueDeclaration +thisIsMarkedLive DeadTest.res:20:4 path:+DeadTest + addValueDeclaration +thisIsAlsoMarkedDead DeadTest.res:24:6 path:+DeadTest.Inner + addValueDeclaration +thisSignatureItemIsDead DeadTest.res:28:2 path:+DeadTest.M + addValueDeclaration +a DeadTest.res:36:2 path:+DeadTest.VariantUsedOnlyInImplementation + addValueDeclaration +x DeadTest.res:60:2 path:+DeadTest.MM + addValueDeclaration +y DeadTest.res:61:2 path:+DeadTest.MM + addValueDeclaration +unusedRec DeadTest.res:75:8 path:+DeadTest + addValueDeclaration +split_map DeadTest.res:77:8 path:+DeadTest + addValueDeclaration +rec1 DeadTest.res:82:8 path:+DeadTest + addValueDeclaration +rec2 DeadTest.res:83:4 path:+DeadTest + addValueDeclaration +recWithCallback DeadTest.res:85:8 path:+DeadTest + addValueDeclaration +foo DeadTest.res:90:8 path:+DeadTest + addValueDeclaration +bar DeadTest.res:94:4 path:+DeadTest + addValueDeclaration +withDefaultValue DeadTest.res:96:4 path:+DeadTest + addValueDeclaration +zzz DeadTest.res:104:4 path:+DeadTest + addValueDeclaration +second DeadTest.res:112:4 path:+DeadTest + addValueDeclaration +deadRef DeadTest.res:114:4 path:+DeadTest + addValueDeclaration +make DeadTest.res:117:4 path:+DeadTest + addValueDeclaration +theSideEffectIsLogging DeadTest.res:121:4 path:+DeadTest + addValueDeclaration +stringLengthNoSideEffects DeadTest.res:123:4 path:+DeadTest + addValueDeclaration +globallyLive1 DeadTest.res:128:6 path:+DeadTest.GloobLive + addValueDeclaration +globallyLive2 DeadTest.res:129:6 path:+DeadTest.GloobLive + addValueDeclaration +globallyLive3 DeadTest.res:130:6 path:+DeadTest.GloobLive + addValueDeclaration +funWithInnerVars DeadTest.res:145:4 path:+DeadTest + addValueDeclaration +deadIncorrect DeadTest.res:154:4 path:+DeadTest + addValueDeclaration +ira DeadTest.res:160:4 path:+DeadTest + addValueReference DeadTest.res:1:15 --> ImmutableArray.resi:9:0 + addValueReference DeadTest.res:8:7 --> DeadTest.res:7:4 + addValueReference DeadTest.res:11:7 --> DeadTest.res:10:4 + addValueReference DeadTest.res:12:7 --> DeadTest.res:10:4 + addValueReference DeadTest.res:20:4 --> DeadTest.res:17:4 + addValueDeclaration +thisSignatureItemIsDead DeadTest.res:31:6 path:+DeadTest.M + addVariantCaseDeclaration A DeadTest.res:35:11 path:+DeadTest.VariantUsedOnlyInImplementation.t + addVariantCaseDeclaration A DeadTest.res:38:11 path:+DeadTest.VariantUsedOnlyInImplementation.t + extendTypeDependencies DeadTest.res:38:11 --> DeadTest.res:35:11 + extendTypeDependencies DeadTest.res:35:11 --> DeadTest.res:38:11 + addValueDeclaration +a DeadTest.res:39:6 path:+DeadTest.VariantUsedOnlyInImplementation + addTypeReference DeadTest.res:39:10 --> DeadTest.res:38:11 + addValueReference DeadTest.res:42:17 --> DeadTest.res:36:2 + addValueReference DeadTest.res:42:14 --> DeadTest.res:42:9 + addValueDeclaration +_ DeadTest.res:44:0 path:+DeadTest + addTypeReference DeadTest.res:44:8 --> DeadTypeTest.resi:8:2 + addValueDeclaration +_ DeadTest.res:45:0 path:+DeadTest + addTypeReference DeadTest.res:45:8 --> DeadTypeTest.resi:9:2 + addRecordLabelDeclaration xxx DeadTest.res:48:2 path:+DeadTest.record + addRecordLabelDeclaration yyy DeadTest.res:49:2 path:+DeadTest.record + addValueDeclaration +_ DeadTest.res:52:0 path:+DeadTest + addTypeReference DeadTest.res:52:13 --> DeadTest.res:48:2 + addValueReference DeadTest.res:52:13 --> DeadTest.res:52:8 + addValueDeclaration +_ DeadTest.res:53:0 path:+DeadTest + addValueReference DeadTest.res:53:19 --> DeadTest.res:53:10 + addTypeReference DeadTest.res:53:9 --> DeadTest.res:49:2 + addValueDeclaration +_ DeadTest.res:56:2 path:+DeadTest.UnderscoreInside + addValueDeclaration +y DeadTest.res:63:6 path:+DeadTest.MM + addValueDeclaration +x DeadTest.res:64:6 path:+DeadTest.MM + addValueReference DeadTest.res:64:6 --> DeadTest.res:63:6 + addValueDeclaration +valueOnlyInImplementation DeadTest.res:65:6 path:+DeadTest.MM + addValueReference DeadTest.res:69:9 --> DeadTest.res:60:2 + addValueReference DeadTest.res:73:16 --> DeadValueTest.resi:1:0 + addValueReference DeadTest.res:75:8 --> DeadTest.res:75:8 + addValueReference DeadTest.res:77:8 --> DeadTest.res:77:20 + addValueReference DeadTest.res:77:8 --> DeadTest.res:77:8 + addValueReference DeadTest.res:82:8 --> DeadTest.res:83:4 + addValueReference DeadTest.res:83:4 --> DeadTest.res:82:8 + addValueDeclaration +cb DeadTest.res:86:6 path:+DeadTest + addValueReference DeadTest.res:86:6 --> DeadTest.res:85:8 + addValueReference DeadTest.res:85:8 --> DeadTest.res:86:6 + addValueDeclaration +cb DeadTest.res:91:6 path:+DeadTest + addValueReference DeadTest.res:91:6 --> DeadTest.res:94:4 + addValueReference DeadTest.res:90:8 --> DeadTest.res:91:6 + addValueReference DeadTest.res:94:4 --> DeadTest.res:90:8 + addValueReference DeadTest.res:96:4 --> DeadTest.res:96:42 + addValueReference DeadTest.res:96:4 --> DeadTest.res:96:24 + addValueReference DeadTest.res:96:4 --> DeadTest.res:96:45 + addTypeReference DeadTest.res:98:16 --> DeadRT.resi:2:2 + addValueDeclaration +a1 DeadTest.res:105:6 path:+DeadTest + addValueDeclaration +a2 DeadTest.res:106:6 path:+DeadTest + addValueDeclaration +a3 DeadTest.res:107:6 path:+DeadTest + addValueReference DeadTest.res:110:17 --> DynamicallyLoadedComponent.res:2:4 + addRecordLabelDeclaration s DeadTest.res:117:12 path:+DeadTest.props + addValueReference DeadTest.res:117:32 --> DeadTest.res:117:12 + addValueReference DeadTest.res:117:19 --> React.res:7:0 + addTypeReference _none_:1:-1 --> DeadTest.res:117:12 + addValueReference DeadTest.res:119:16 --> DeadTest.res:117:4 + addVariantCaseDeclaration A DeadTest.res:134:11 path:+DeadTest.WithInclude.t + addVariantCaseDeclaration A DeadTest.res:137:13 path:+DeadTest.WithInclude.T.t + addVariantCaseDeclaration A DeadTest.res:137:13 path:+DeadTest.WithInclude.t + extendTypeDependencies DeadTest.res:137:13 --> DeadTest.res:134:11 + extendTypeDependencies DeadTest.res:134:11 --> DeadTest.res:137:13 + addTypeReference DeadTest.res:142:7 --> DeadTest.res:134:11 + addValueDeclaration +x DeadTest.res:146:6 path:+DeadTest + addValueDeclaration +y DeadTest.res:147:6 path:+DeadTest + addValueReference DeadTest.res:145:4 --> DeadTest.res:146:6 + addValueReference DeadTest.res:145:4 --> DeadTest.res:147:6 + addRecordLabelDeclaration a DeadTest.res:151:11 path:+DeadTest.rc + addValueDeclaration +_ DeadTest.res:156:0 path:+DeadTest + addValueReference DeadTest.res:156:8 --> DeadTest.res:154:4 + addRecordLabelDeclaration IR.a DeadTest.res:158:24 path:+DeadTest.inlineRecord + addRecordLabelDeclaration IR.b DeadTest.res:158:32 path:+DeadTest.inlineRecord + addRecordLabelDeclaration IR.c DeadTest.res:158:40 path:+DeadTest.inlineRecord + addRecordLabelDeclaration IR.d DeadTest.res:158:51 path:+DeadTest.inlineRecord + addRecordLabelDeclaration IR.e DeadTest.res:158:65 path:+DeadTest.inlineRecord + addVariantCaseDeclaration IR DeadTest.res:158:20 path:+DeadTest.inlineRecord + addValueDeclaration +_ DeadTest.res:161:0 path:+DeadTest + addTypeReference DeadTest.res:163:20 --> DeadTest.res:158:20 + addValueReference DeadTest.res:163:27 --> DeadTest.res:160:4 + addTypeReference DeadTest.res:163:35 --> DeadTest.res:158:32 + addValueReference DeadTest.res:163:35 --> DeadTest.res:163:7 + addValueReference DeadTest.res:163:40 --> DeadTest.res:163:8 + addTypeReference DeadTest.res:163:7 --> DeadTest.res:158:40 + addValueReference DeadTest.res:162:9 --> DeadTest.res:161:8 + addRecordLabelDeclaration IR2.a DeadTest.res:167:26 path:+DeadTest.inlineRecord2 + addRecordLabelDeclaration IR2.b DeadTest.res:167:34 path:+DeadTest.inlineRecord2 + addVariantCaseDeclaration IR2 DeadTest.res:167:21 path:+DeadTest.inlineRecord2 + addRecordLabelDeclaration IR3.a DeadTest.res:169:34 path:+DeadTest.inlineRecord3 + addRecordLabelDeclaration IR3.b DeadTest.res:169:42 path:+DeadTest.inlineRecord3 + addVariantCaseDeclaration IR3 DeadTest.res:169:21 path:+DeadTest.inlineRecord3 + addValueReference DeadTest.res:28:2 --> DeadTest.res:31:6 + addValueReference DeadTest.res:36:2 --> DeadTest.res:39:6 + addValueReference DeadTest.res:60:2 --> DeadTest.res:64:6 + addValueReference DeadTest.res:61:2 --> DeadTest.res:63:6 + addTypeReference DeadTest.res:137:13 --> DeadTest.res:134:11 + addTypeReference DeadTest.res:134:11 --> DeadTest.res:137:13 + addTypeReference DeadTest.res:38:11 --> DeadTest.res:35:11 + addTypeReference DeadTest.res:35:11 --> DeadTest.res:38:11 + Scanning DeadTestBlacklist.cmt Source:DeadTestBlacklist.res + addValueDeclaration +x DeadTestBlacklist.res:1:4 path:+DeadTestBlacklist + Scanning DeadTestWithInterface.cmt Source:DeadTestWithInterface.res + addValueDeclaration +x DeadTestWithInterface.res:2:2 path:+DeadTestWithInterface.Ext_buffer + addValueDeclaration +x DeadTestWithInterface.res:4:6 path:+DeadTestWithInterface.Ext_buffer + addValueReference DeadTestWithInterface.res:2:2 --> DeadTestWithInterface.res:4:6 + Interface 0 + Scanning DeadTypeTest.cmt Source:DeadTypeTest.res + addValueDeclaration +a DeadTypeTest.res:4:4 path:+DeadTypeTest + addVariantCaseDeclaration A DeadTypeTest.res:2:2 path:+DeadTypeTest.t + addVariantCaseDeclaration B DeadTypeTest.res:3:2 path:+DeadTypeTest.t + addTypeReference DeadTypeTest.res:4:8 --> DeadTypeTest.res:2:2 + addVariantCaseDeclaration OnlyInImplementation DeadTypeTest.res:7:2 path:+DeadTypeTest.deadType + addVariantCaseDeclaration OnlyInInterface DeadTypeTest.res:8:2 path:+DeadTypeTest.deadType + addVariantCaseDeclaration InBoth DeadTypeTest.res:9:2 path:+DeadTypeTest.deadType + addVariantCaseDeclaration InNeither DeadTypeTest.res:10:2 path:+DeadTypeTest.deadType + addValueDeclaration +_ DeadTypeTest.res:12:0 path:+DeadTypeTest + addTypeReference DeadTypeTest.res:12:8 --> DeadTypeTest.res:7:2 + addValueDeclaration +_ DeadTypeTest.res:13:0 path:+DeadTypeTest + addTypeReference DeadTypeTest.res:13:8 --> DeadTypeTest.res:9:2 + addRecordLabelDeclaration x DeadTypeTest.res:16:15 path:+DeadTypeTest.record + addRecordLabelDeclaration y DeadTypeTest.res:16:23 path:+DeadTypeTest.record + addRecordLabelDeclaration z DeadTypeTest.res:16:34 path:+DeadTypeTest.record + addValueReference DeadTypeTest.resi:4:0 --> DeadTypeTest.res:4:4 + Scanning DeadTypeTest.cmti Source:DeadTypeTest.resi + addVariantCaseDeclaration A DeadTypeTest.resi:2:2 path:DeadTypeTest.t + extendTypeDependencies DeadTypeTest.res:2:2 --> DeadTypeTest.resi:2:2 + extendTypeDependencies DeadTypeTest.resi:2:2 --> DeadTypeTest.res:2:2 + addVariantCaseDeclaration B DeadTypeTest.resi:3:2 path:DeadTypeTest.t + extendTypeDependencies DeadTypeTest.res:3:2 --> DeadTypeTest.resi:3:2 + extendTypeDependencies DeadTypeTest.resi:3:2 --> DeadTypeTest.res:3:2 + addValueDeclaration +a DeadTypeTest.resi:4:0 path:DeadTypeTest + addVariantCaseDeclaration OnlyInImplementation DeadTypeTest.resi:7:2 path:DeadTypeTest.deadType + extendTypeDependencies DeadTypeTest.res:7:2 --> DeadTypeTest.resi:7:2 + extendTypeDependencies DeadTypeTest.resi:7:2 --> DeadTypeTest.res:7:2 + addVariantCaseDeclaration OnlyInInterface DeadTypeTest.resi:8:2 path:DeadTypeTest.deadType + extendTypeDependencies DeadTypeTest.res:8:2 --> DeadTypeTest.resi:8:2 + extendTypeDependencies DeadTypeTest.resi:8:2 --> DeadTypeTest.res:8:2 + addVariantCaseDeclaration InBoth DeadTypeTest.resi:9:2 path:DeadTypeTest.deadType + extendTypeDependencies DeadTypeTest.res:9:2 --> DeadTypeTest.resi:9:2 + extendTypeDependencies DeadTypeTest.resi:9:2 --> DeadTypeTest.res:9:2 + addVariantCaseDeclaration InNeither DeadTypeTest.resi:10:2 path:DeadTypeTest.deadType + extendTypeDependencies DeadTypeTest.res:10:2 --> DeadTypeTest.resi:10:2 + extendTypeDependencies DeadTypeTest.resi:10:2 --> DeadTypeTest.res:10:2 + addTypeReference DeadTypeTest.res:10:2 --> DeadTypeTest.resi:10:2 + addTypeReference DeadTypeTest.resi:10:2 --> DeadTypeTest.res:10:2 + addTypeReference DeadTypeTest.res:9:2 --> DeadTypeTest.resi:9:2 + addTypeReference DeadTypeTest.resi:9:2 --> DeadTypeTest.res:9:2 + addTypeReference DeadTypeTest.res:8:2 --> DeadTypeTest.resi:8:2 + addTypeReference DeadTypeTest.resi:8:2 --> DeadTypeTest.res:8:2 + addTypeReference DeadTypeTest.res:7:2 --> DeadTypeTest.resi:7:2 + addTypeReference DeadTypeTest.resi:7:2 --> DeadTypeTest.res:7:2 + addTypeReference DeadTypeTest.res:3:2 --> DeadTypeTest.resi:3:2 + addTypeReference DeadTypeTest.resi:3:2 --> DeadTypeTest.res:3:2 + addTypeReference DeadTypeTest.res:2:2 --> DeadTypeTest.resi:2:2 + addTypeReference DeadTypeTest.resi:2:2 --> DeadTypeTest.res:2:2 + Scanning DeadValueTest.cmt Source:DeadValueTest.res + addValueDeclaration +valueAlive DeadValueTest.res:1:4 path:+DeadValueTest + addValueDeclaration +valueDead DeadValueTest.res:2:4 path:+DeadValueTest + addValueDeclaration +valueOnlyInImplementation DeadValueTest.res:4:4 path:+DeadValueTest + addValueDeclaration +subList DeadValueTest.res:6:8 path:+DeadValueTest + addValueDeclaration +tail DeadValueTest.res:10:8 path:+DeadValueTest + addValueReference DeadValueTest.res:10:8 --> DeadValueTest.res:6:19 + addValueReference DeadValueTest.res:10:8 --> DeadValueTest.res:6:22 + addValueReference DeadValueTest.res:10:8 --> DeadValueTest.res:9:15 + addValueReference DeadValueTest.res:10:8 --> DeadValueTest.res:6:8 + addValueReference DeadValueTest.res:10:8 --> DeadValueTest.res:6:22 + addValueReference DeadValueTest.res:6:8 --> DeadValueTest.res:9:9 + addValueReference DeadValueTest.res:6:8 --> DeadValueTest.res:10:8 + addValueReference DeadValueTest.res:6:8 --> DeadValueTest.res:10:8 + addValueReference DeadValueTest.res:6:8 --> DeadValueTest.res:6:19 + addValueReference DeadValueTest.res:6:8 --> DeadValueTest.res:6:25 + addValueReference DeadValueTest.resi:1:0 --> DeadValueTest.res:1:4 + addValueReference DeadValueTest.resi:2:0 --> DeadValueTest.res:2:4 + Scanning DeadValueTest.cmti Source:DeadValueTest.resi + addValueDeclaration +valueAlive DeadValueTest.resi:1:0 path:DeadValueTest + addValueDeclaration +valueDead DeadValueTest.resi:2:0 path:DeadValueTest + Scanning Docstrings.cmt Source:Docstrings.res + addValueDeclaration +flat Docstrings.res:2:4 path:+Docstrings + addValueDeclaration +signMessage Docstrings.res:12:4 path:+Docstrings + addValueDeclaration +one Docstrings.res:15:4 path:+Docstrings + addValueDeclaration +two Docstrings.res:18:4 path:+Docstrings + addValueDeclaration +tree Docstrings.res:21:4 path:+Docstrings + addValueDeclaration +oneU Docstrings.res:24:4 path:+Docstrings + addValueDeclaration +twoU Docstrings.res:27:4 path:+Docstrings + addValueDeclaration +treeU Docstrings.res:30:4 path:+Docstrings + addValueDeclaration +useParam Docstrings.res:33:4 path:+Docstrings + addValueDeclaration +useParamU Docstrings.res:36:4 path:+Docstrings + addValueDeclaration +unnamed1 Docstrings.res:39:4 path:+Docstrings + addValueDeclaration +unnamed1U Docstrings.res:42:4 path:+Docstrings + addValueDeclaration +unnamed2 Docstrings.res:45:4 path:+Docstrings + addValueDeclaration +unnamed2U Docstrings.res:48:4 path:+Docstrings + addValueDeclaration +grouped Docstrings.res:51:4 path:+Docstrings + addValueDeclaration +unitArgWithoutConversion Docstrings.res:54:4 path:+Docstrings + addValueDeclaration +unitArgWithoutConversionU Docstrings.res:57:4 path:+Docstrings + addValueDeclaration +unitArgWithConversion Docstrings.res:64:4 path:+Docstrings + addValueDeclaration +unitArgWithConversionU Docstrings.res:67:4 path:+Docstrings + addValueReference Docstrings.res:12:4 --> Docstrings.res:12:21 + addValueReference Docstrings.res:12:4 --> Docstrings.res:12:30 + addValueReference Docstrings.res:15:4 --> Docstrings.res:15:10 + addValueReference Docstrings.res:18:4 --> Docstrings.res:18:11 + addValueReference Docstrings.res:18:4 --> Docstrings.res:18:14 + addValueReference Docstrings.res:21:4 --> Docstrings.res:21:12 + addValueReference Docstrings.res:21:4 --> Docstrings.res:21:15 + addValueReference Docstrings.res:21:4 --> Docstrings.res:21:18 + addValueReference Docstrings.res:24:4 --> Docstrings.res:24:14 + addValueReference Docstrings.res:27:4 --> Docstrings.res:27:14 + addValueReference Docstrings.res:27:4 --> Docstrings.res:27:17 + addValueReference Docstrings.res:30:4 --> Docstrings.res:30:15 + addValueReference Docstrings.res:30:4 --> Docstrings.res:30:18 + addValueReference Docstrings.res:30:4 --> Docstrings.res:30:21 + addValueReference Docstrings.res:33:4 --> Docstrings.res:33:15 + addValueReference Docstrings.res:36:4 --> Docstrings.res:36:19 + addValueReference Docstrings.res:51:4 --> Docstrings.res:51:15 + addValueReference Docstrings.res:51:4 --> Docstrings.res:51:19 + addValueReference Docstrings.res:51:4 --> Docstrings.res:51:23 + addValueReference Docstrings.res:51:4 --> Docstrings.res:51:26 + addValueReference Docstrings.res:51:4 --> Docstrings.res:51:29 + addValueReference Docstrings.res:51:4 --> Docstrings.res:51:32 + addVariantCaseDeclaration A Docstrings.res:60:2 path:+Docstrings.t + addVariantCaseDeclaration B Docstrings.res:61:2 path:+Docstrings.t + addTypeReference Docstrings.res:64:34 --> Docstrings.res:60:2 + addTypeReference Docstrings.res:67:39 --> Docstrings.res:60:2 + Scanning DynamicallyLoadedComponent.cmt Source:DynamicallyLoadedComponent.res + addValueDeclaration +make DynamicallyLoadedComponent.res:2:4 path:+DynamicallyLoadedComponent + addRecordLabelDeclaration s DynamicallyLoadedComponent.res:2:12 path:+DynamicallyLoadedComponent.props + addValueReference DynamicallyLoadedComponent.res:2:32 --> DynamicallyLoadedComponent.res:2:12 + addValueReference DynamicallyLoadedComponent.res:2:19 --> React.res:7:0 + addTypeReference _none_:1:-1 --> DynamicallyLoadedComponent.res:2:12 + Scanning EmptyArray.cmt Source:EmptyArray.res + addValueDeclaration +make EmptyArray.res:5:6 path:+EmptyArray.Z + addValueReference EmptyArray.res:10:9 --> EmptyArray.res:5:6 + Scanning ErrorHandler.cmt Source:ErrorHandler.res + addValueDeclaration +notify ErrorHandler.res:7:6 path:+ErrorHandler.Make + addValueDeclaration +x ErrorHandler.res:12:4 path:+ErrorHandler + addValueReference ErrorHandler.res:7:6 --> ErrorHandler.res:7:15 + addValueReference ErrorHandler.res:7:6 --> ErrorHandler.res:3:2 + addValueReference ErrorHandler.resi:3:2 --> ErrorHandler.res:3:2 + addValueReference ErrorHandler.res:3:2 --> ErrorHandler.resi:3:2 + addValueReference ErrorHandler.resi:7:2 --> ErrorHandler.res:7:6 + addValueReference ErrorHandler.resi:10:0 --> ErrorHandler.res:12:4 + Scanning ErrorHandler.cmti Source:ErrorHandler.resi + addValueDeclaration +notify ErrorHandler.resi:7:2 path:ErrorHandler.Make + addValueDeclaration +x ErrorHandler.resi:10:0 path:ErrorHandler + Scanning EverythingLiveHere.cmt Source:EverythingLiveHere.res + addValueDeclaration +x EverythingLiveHere.res:1:4 path:+EverythingLiveHere + addValueDeclaration +y EverythingLiveHere.res:3:4 path:+EverythingLiveHere + addValueDeclaration +z EverythingLiveHere.res:5:4 path:+EverythingLiveHere + Scanning FirstClassModules.cmt Source:FirstClassModules.res + addValueDeclaration +y FirstClassModules.res:23:6 path:+FirstClassModules.M + addValueDeclaration +k FirstClassModules.res:29:8 path:+FirstClassModules.M.InnerModule2 + addValueDeclaration +k3 FirstClassModules.res:33:8 path:+FirstClassModules.M.InnerModule3 + addValueDeclaration +u FirstClassModules.res:40:8 path:+FirstClassModules.M.Z + addValueDeclaration +x FirstClassModules.res:44:6 path:+FirstClassModules.M + addValueDeclaration +firstClassModule FirstClassModules.res:51:4 path:+FirstClassModules + addValueDeclaration +testConvert FirstClassModules.res:54:4 path:+FirstClassModules + addValueDeclaration +someFunctorAsFunction FirstClassModules.res:65:4 path:+FirstClassModules + addValueReference FirstClassModules.res:33:8 --> FirstClassModules.res:33:13 + addValueReference FirstClassModules.res:54:4 --> FirstClassModules.res:54:19 + addValueDeclaration +ww FirstClassModules.res:61:6 path:+FirstClassModules.SomeFunctor + addValueReference FirstClassModules.res:61:6 --> FirstClassModules.res:20:2 + addValueReference FirstClassModules.res:65:4 --> FirstClassModules.res:65:29 + addValueReference FirstClassModules.res:2:2 --> FirstClassModules.res:44:6 + addValueReference FirstClassModules.res:4:2 --> FirstClassModules.res:43:2 + addValueReference FirstClassModules.res:10:4 --> FirstClassModules.res:29:8 + addValueReference FirstClassModules.res:14:4 --> FirstClassModules.res:33:8 + addValueReference FirstClassModules.res:17:4 --> FirstClassModules.res:37:4 + addValueReference FirstClassModules.res:37:4 --> FirstClassModules.res:17:4 + addValueReference FirstClassModules.res:37:4 --> FirstClassModules.res:40:8 + addValueReference FirstClassModules.res:20:2 --> FirstClassModules.res:23:6 + addValueReference FirstClassModules.res:57:2 --> FirstClassModules.res:61:6 + Scanning FirstClassModulesInterface.cmt Source:FirstClassModulesInterface.res + addValueDeclaration +r FirstClassModulesInterface.res:6:4 path:+FirstClassModulesInterface + addRecordLabelDeclaration x FirstClassModulesInterface.res:2:2 path:+FirstClassModulesInterface.record + addRecordLabelDeclaration y FirstClassModulesInterface.res:3:2 path:+FirstClassModulesInterface.record + addValueReference FirstClassModulesInterface.resi:7:0 --> FirstClassModulesInterface.res:6:4 + addValueReference FirstClassModulesInterface.resi:11:2 --> FirstClassModulesInterface.res:9:2 + addValueReference FirstClassModulesInterface.res:9:2 --> FirstClassModulesInterface.resi:11:2 + Scanning FirstClassModulesInterface.cmti Source:FirstClassModulesInterface.resi + addRecordLabelDeclaration x FirstClassModulesInterface.resi:3:2 path:FirstClassModulesInterface.record + extendTypeDependencies FirstClassModulesInterface.res:2:2 --> FirstClassModulesInterface.resi:3:2 + extendTypeDependencies FirstClassModulesInterface.resi:3:2 --> FirstClassModulesInterface.res:2:2 + addRecordLabelDeclaration y FirstClassModulesInterface.resi:4:2 path:FirstClassModulesInterface.record + extendTypeDependencies FirstClassModulesInterface.res:3:2 --> FirstClassModulesInterface.resi:4:2 + extendTypeDependencies FirstClassModulesInterface.resi:4:2 --> FirstClassModulesInterface.res:3:2 + addValueDeclaration +r FirstClassModulesInterface.resi:7:0 path:FirstClassModulesInterface + addTypeReference FirstClassModulesInterface.res:3:2 --> FirstClassModulesInterface.resi:4:2 + addTypeReference FirstClassModulesInterface.resi:4:2 --> FirstClassModulesInterface.res:3:2 + addTypeReference FirstClassModulesInterface.res:2:2 --> FirstClassModulesInterface.resi:3:2 + addTypeReference FirstClassModulesInterface.resi:3:2 --> FirstClassModulesInterface.res:2:2 + Scanning Hooks.cmt Source:Hooks.res + addValueDeclaration +make Hooks.res:4:4 path:+Hooks + addValueDeclaration +default Hooks.res:25:4 path:+Hooks + addValueDeclaration +make Hooks.res:29:6 path:+Hooks.Inner + addValueDeclaration +make Hooks.res:33:8 path:+Hooks.Inner.Inner2 + addValueDeclaration +make Hooks.res:39:6 path:+Hooks.NoProps + addValueDeclaration +functionWithRenamedArgs Hooks.res:45:4 path:+Hooks + addValueDeclaration +make Hooks.res:63:6 path:+Hooks.RenderPropRequiresConversion + addRecordLabelDeclaration name Hooks.res:1:16 path:+Hooks.vehicle + addRecordLabelDeclaration vehicle Hooks.res:4:12 path:+Hooks.props + addValueReference Hooks.res:5:26 --> React.res:145:0 + addTypeReference Hooks.res:10:29 --> Hooks.res:1:16 + addValueReference Hooks.res:10:29 --> Hooks.res:4:12 + addValueReference Hooks.res:10:75 --> Hooks.res:5:7 + addValueReference Hooks.res:9:7 --> React.res:7:0 + addTypeReference Hooks.res:10:29 --> Hooks.res:1:16 + addValueReference Hooks.res:10:29 --> Hooks.res:4:12 + addValueReference Hooks.res:10:75 --> Hooks.res:5:7 + addValueReference Hooks.res:9:7 --> React.res:7:0 + addValueReference Hooks.res:13:54 --> React.res:7:0 + addValueReference Hooks.res:13:54 --> React.res:7:0 + addValueReference Hooks.res:13:40 --> Hooks.res:5:7 + addValueReference Hooks.res:13:26 --> Hooks.res:5:14 + addValueReference Hooks.res:14:5 --> ImportHooks.res:13:0 + addValueReference Hooks.res:15:7 --> React.res:7:0 + addValueReference Hooks.res:15:32 --> React.res:7:0 + addValueReference Hooks.res:15:7 --> React.res:7:0 + addValueReference Hooks.res:15:32 --> React.res:7:0 + addValueReference Hooks.res:14:76 --> Hooks.res:14:57 + addValueReference Hooks.res:14:63 --> React.res:7:0 + addValueReference Hooks.res:17:5 --> ImportHookDefault.res:6:0 + addValueReference Hooks.res:19:7 --> React.res:7:0 + addValueReference Hooks.res:19:32 --> React.res:7:0 + addValueReference Hooks.res:19:7 --> React.res:7:0 + addValueReference Hooks.res:19:32 --> React.res:7:0 + addValueReference Hooks.res:18:74 --> Hooks.res:18:55 + addValueReference Hooks.res:18:61 --> React.res:7:0 + addTypeReference Hooks.res:10:29 --> Hooks.res:1:16 + addValueReference Hooks.res:10:29 --> Hooks.res:4:12 + addValueReference Hooks.res:10:75 --> Hooks.res:5:7 + addValueReference Hooks.res:9:7 --> React.res:7:0 + addTypeReference Hooks.res:10:29 --> Hooks.res:1:16 + addValueReference Hooks.res:10:29 --> Hooks.res:4:12 + addValueReference Hooks.res:10:75 --> Hooks.res:5:7 + addValueReference Hooks.res:9:7 --> React.res:7:0 + addValueReference Hooks.res:13:54 --> React.res:7:0 + addValueReference Hooks.res:13:54 --> React.res:7:0 + addValueReference Hooks.res:13:40 --> Hooks.res:5:7 + addValueReference Hooks.res:13:26 --> Hooks.res:5:14 + addValueReference Hooks.res:14:5 --> ImportHooks.res:13:0 + addValueReference Hooks.res:15:7 --> React.res:7:0 + addValueReference Hooks.res:15:32 --> React.res:7:0 + addValueReference Hooks.res:15:7 --> React.res:7:0 + addValueReference Hooks.res:15:32 --> React.res:7:0 + addValueReference Hooks.res:14:76 --> Hooks.res:14:57 + addValueReference Hooks.res:14:63 --> React.res:7:0 + addValueReference Hooks.res:17:5 --> ImportHookDefault.res:6:0 + addValueReference Hooks.res:19:7 --> React.res:7:0 + addValueReference Hooks.res:19:32 --> React.res:7:0 + addValueReference Hooks.res:19:7 --> React.res:7:0 + addValueReference Hooks.res:19:32 --> React.res:7:0 + addValueReference Hooks.res:18:74 --> Hooks.res:18:55 + addValueReference Hooks.res:18:61 --> React.res:7:0 + addTypeReference _none_:1:-1 --> Hooks.res:4:12 + addValueReference Hooks.res:25:4 --> Hooks.res:4:4 + addRecordLabelDeclaration vehicle Hooks.res:29:14 path:+Hooks.Inner.props + addRecordLabelDeclaration vehicle Hooks.res:33:16 path:+Hooks.Inner.Inner2.props + addRecordLabelDeclaration vehicle Hooks.res:29:14 path:+Hooks.Inner.props + addTypeReference Hooks.res:29:66 --> Hooks.res:1:16 + addValueReference Hooks.res:29:66 --> Hooks.res:29:14 + addValueReference Hooks.res:29:34 --> React.res:7:0 + addTypeReference Hooks.res:29:66 --> Hooks.res:1:16 + addValueReference Hooks.res:29:66 --> Hooks.res:29:14 + addValueReference Hooks.res:29:34 --> React.res:7:0 + addTypeReference _none_:1:-1 --> Hooks.res:29:14 + addRecordLabelDeclaration vehicle Hooks.res:33:16 path:+Hooks.Inner.Inner2.props + addRecordLabelDeclaration vehicle Hooks.res:33:16 path:+Hooks.Inner.Inner2.props + addTypeReference Hooks.res:33:68 --> Hooks.res:1:16 + addValueReference Hooks.res:33:68 --> Hooks.res:33:16 + addValueReference Hooks.res:33:36 --> React.res:7:0 + addTypeReference Hooks.res:33:68 --> Hooks.res:1:16 + addValueReference Hooks.res:33:68 --> Hooks.res:33:16 + addValueReference Hooks.res:33:36 --> React.res:7:0 + addTypeReference _none_:1:-1 --> Hooks.res:33:16 + addValueReference Hooks.res:39:25 --> React.res:3:0 + addValueReference Hooks.res:39:25 --> React.res:3:0 + addTypeReference Hooks.res:47:2 --> Hooks.res:1:16 + addValueReference Hooks.res:45:4 --> Hooks.res:45:31 + addTypeReference Hooks.res:47:14 --> Hooks.res:1:16 + addValueReference Hooks.res:45:4 --> Hooks.res:45:37 + addValueReference Hooks.res:45:4 --> Hooks.res:45:31 + addValueReference Hooks.res:45:4 --> Hooks.res:45:45 + addRecordLabelDeclaration x Hooks.res:50:10 path:+Hooks.r + addRecordLabelDeclaration renderVehicle Hooks.res:63:14 path:+Hooks.RenderPropRequiresConversion.props + addRecordLabelDeclaration renderVehicle Hooks.res:63:14 path:+Hooks.RenderPropRequiresConversion.props + addValueDeclaration +car Hooks.res:64:8 path:+Hooks.RenderPropRequiresConversion + addValueReference Hooks.res:65:30 --> Hooks.res:64:8 + addValueReference Hooks.res:65:18 --> Hooks.res:65:18 + addValueReference Hooks.res:65:4 --> Hooks.res:63:14 + addTypeReference _none_:1:-1 --> Hooks.res:63:14 + Scanning IgnoreInterface.cmt Source:IgnoreInterface.res + Scanning IgnoreInterface.cmti Source:IgnoreInterface.resi + Scanning ImmutableArray.cmt Source:ImmutableArray.res + addValueDeclaration +fromArray ImmutableArray.res:14:6 path:+ImmutableArray.Array + addValueDeclaration +toArray ImmutableArray.res:16:6 path:+ImmutableArray.Array + addValueDeclaration +length ImmutableArray.res:20:6 path:+ImmutableArray.Array + addValueDeclaration +size ImmutableArray.res:22:6 path:+ImmutableArray.Array + addValueDeclaration +get ImmutableArray.res:24:6 path:+ImmutableArray.Array + addValueDeclaration +getExn ImmutableArray.res:26:6 path:+ImmutableArray.Array + addValueDeclaration +getUnsafe ImmutableArray.res:28:6 path:+ImmutableArray.Array + addValueDeclaration +getUndefined ImmutableArray.res:30:6 path:+ImmutableArray.Array + addValueDeclaration +shuffle ImmutableArray.res:32:6 path:+ImmutableArray.Array + addValueDeclaration +reverse ImmutableArray.res:34:6 path:+ImmutableArray.Array + addValueDeclaration +makeUninitialized ImmutableArray.res:36:6 path:+ImmutableArray.Array + addValueDeclaration +makeUninitializedUnsafe ImmutableArray.res:38:6 path:+ImmutableArray.Array + addValueDeclaration +make ImmutableArray.res:40:6 path:+ImmutableArray.Array + addValueDeclaration +range ImmutableArray.res:42:6 path:+ImmutableArray.Array + addValueDeclaration +rangeBy ImmutableArray.res:44:6 path:+ImmutableArray.Array + addValueDeclaration +makeByU ImmutableArray.res:46:6 path:+ImmutableArray.Array + addValueDeclaration +makeBy ImmutableArray.res:47:6 path:+ImmutableArray.Array + addValueDeclaration +makeByAndShuffleU ImmutableArray.res:49:6 path:+ImmutableArray.Array + addValueDeclaration +makeByAndShuffle ImmutableArray.res:50:6 path:+ImmutableArray.Array + addValueDeclaration +zip ImmutableArray.res:52:6 path:+ImmutableArray.Array + addValueDeclaration +zipByU ImmutableArray.res:54:6 path:+ImmutableArray.Array + addValueDeclaration +zipBy ImmutableArray.res:55:6 path:+ImmutableArray.Array + addValueDeclaration +unzip ImmutableArray.res:57:6 path:+ImmutableArray.Array + addValueDeclaration +concat ImmutableArray.res:59:6 path:+ImmutableArray.Array + addValueDeclaration +concatMany ImmutableArray.res:61:6 path:+ImmutableArray.Array + addValueDeclaration +slice ImmutableArray.res:63:6 path:+ImmutableArray.Array + addValueDeclaration +sliceToEnd ImmutableArray.res:65:6 path:+ImmutableArray.Array + addValueDeclaration +copy ImmutableArray.res:67:6 path:+ImmutableArray.Array + addValueDeclaration +forEachU ImmutableArray.res:69:6 path:+ImmutableArray.Array + addValueDeclaration +forEach ImmutableArray.res:70:6 path:+ImmutableArray.Array + addValueDeclaration +mapU ImmutableArray.res:72:6 path:+ImmutableArray.Array + addValueDeclaration +map ImmutableArray.res:73:6 path:+ImmutableArray.Array + addValueDeclaration +keepWithIndexU ImmutableArray.res:75:6 path:+ImmutableArray.Array + addValueDeclaration +keepWithIndex ImmutableArray.res:76:6 path:+ImmutableArray.Array + addValueDeclaration +keepMapU ImmutableArray.res:78:6 path:+ImmutableArray.Array + addValueDeclaration +keepMap ImmutableArray.res:79:6 path:+ImmutableArray.Array + addValueDeclaration +forEachWithIndexU ImmutableArray.res:81:6 path:+ImmutableArray.Array + addValueDeclaration +forEachWithIndex ImmutableArray.res:82:6 path:+ImmutableArray.Array + addValueDeclaration +mapWithIndexU ImmutableArray.res:84:6 path:+ImmutableArray.Array + addValueDeclaration +mapWithIndex ImmutableArray.res:85:6 path:+ImmutableArray.Array + addValueDeclaration +partitionU ImmutableArray.res:87:6 path:+ImmutableArray.Array + addValueDeclaration +partition ImmutableArray.res:88:6 path:+ImmutableArray.Array + addValueDeclaration +reduceU ImmutableArray.res:90:6 path:+ImmutableArray.Array + addValueDeclaration +reduce ImmutableArray.res:91:6 path:+ImmutableArray.Array + addValueDeclaration +reduceReverseU ImmutableArray.res:93:6 path:+ImmutableArray.Array + addValueDeclaration +reduceReverse ImmutableArray.res:94:6 path:+ImmutableArray.Array + addValueDeclaration +reduceReverse2U ImmutableArray.res:96:6 path:+ImmutableArray.Array + addValueDeclaration +reduceReverse2 ImmutableArray.res:97:6 path:+ImmutableArray.Array + addValueDeclaration +someU ImmutableArray.res:99:6 path:+ImmutableArray.Array + addValueDeclaration +some ImmutableArray.res:100:6 path:+ImmutableArray.Array + addValueDeclaration +everyU ImmutableArray.res:102:6 path:+ImmutableArray.Array + addValueDeclaration +every ImmutableArray.res:103:6 path:+ImmutableArray.Array + addValueDeclaration +every2U ImmutableArray.res:105:6 path:+ImmutableArray.Array + addValueDeclaration +every2 ImmutableArray.res:106:6 path:+ImmutableArray.Array + addValueDeclaration +some2U ImmutableArray.res:108:6 path:+ImmutableArray.Array + addValueDeclaration +some2 ImmutableArray.res:109:6 path:+ImmutableArray.Array + addValueDeclaration +cmpU ImmutableArray.res:111:6 path:+ImmutableArray.Array + addValueDeclaration +cmp ImmutableArray.res:112:6 path:+ImmutableArray.Array + addValueDeclaration +eqU ImmutableArray.res:114:6 path:+ImmutableArray.Array + addValueDeclaration +eq ImmutableArray.res:115:6 path:+ImmutableArray.Array + addValueDeclaration +fromArray ImmutableArray.res:14:6 path:+ImmutableArray + addValueDeclaration +toArray ImmutableArray.res:16:6 path:+ImmutableArray + addValueDeclaration +length ImmutableArray.res:20:6 path:+ImmutableArray + addValueDeclaration +size ImmutableArray.res:22:6 path:+ImmutableArray + addValueDeclaration +get ImmutableArray.res:24:6 path:+ImmutableArray + addValueDeclaration +getExn ImmutableArray.res:26:6 path:+ImmutableArray + addValueDeclaration +getUnsafe ImmutableArray.res:28:6 path:+ImmutableArray + addValueDeclaration +getUndefined ImmutableArray.res:30:6 path:+ImmutableArray + addValueDeclaration +shuffle ImmutableArray.res:32:6 path:+ImmutableArray + addValueDeclaration +reverse ImmutableArray.res:34:6 path:+ImmutableArray + addValueDeclaration +makeUninitialized ImmutableArray.res:36:6 path:+ImmutableArray + addValueDeclaration +makeUninitializedUnsafe ImmutableArray.res:38:6 path:+ImmutableArray + addValueDeclaration +make ImmutableArray.res:40:6 path:+ImmutableArray + addValueDeclaration +range ImmutableArray.res:42:6 path:+ImmutableArray + addValueDeclaration +rangeBy ImmutableArray.res:44:6 path:+ImmutableArray + addValueDeclaration +makeByU ImmutableArray.res:46:6 path:+ImmutableArray + addValueDeclaration +makeBy ImmutableArray.res:47:6 path:+ImmutableArray + addValueDeclaration +makeByAndShuffleU ImmutableArray.res:49:6 path:+ImmutableArray + addValueDeclaration +makeByAndShuffle ImmutableArray.res:50:6 path:+ImmutableArray + addValueDeclaration +zip ImmutableArray.res:52:6 path:+ImmutableArray + addValueDeclaration +zipByU ImmutableArray.res:54:6 path:+ImmutableArray + addValueDeclaration +zipBy ImmutableArray.res:55:6 path:+ImmutableArray + addValueDeclaration +unzip ImmutableArray.res:57:6 path:+ImmutableArray + addValueDeclaration +concat ImmutableArray.res:59:6 path:+ImmutableArray + addValueDeclaration +concatMany ImmutableArray.res:61:6 path:+ImmutableArray + addValueDeclaration +slice ImmutableArray.res:63:6 path:+ImmutableArray + addValueDeclaration +sliceToEnd ImmutableArray.res:65:6 path:+ImmutableArray + addValueDeclaration +copy ImmutableArray.res:67:6 path:+ImmutableArray + addValueDeclaration +forEachU ImmutableArray.res:69:6 path:+ImmutableArray + addValueDeclaration +forEach ImmutableArray.res:70:6 path:+ImmutableArray + addValueDeclaration +mapU ImmutableArray.res:72:6 path:+ImmutableArray + addValueDeclaration +map ImmutableArray.res:73:6 path:+ImmutableArray + addValueDeclaration +keepWithIndexU ImmutableArray.res:75:6 path:+ImmutableArray + addValueDeclaration +keepWithIndex ImmutableArray.res:76:6 path:+ImmutableArray + addValueDeclaration +keepMapU ImmutableArray.res:78:6 path:+ImmutableArray + addValueDeclaration +keepMap ImmutableArray.res:79:6 path:+ImmutableArray + addValueDeclaration +forEachWithIndexU ImmutableArray.res:81:6 path:+ImmutableArray + addValueDeclaration +forEachWithIndex ImmutableArray.res:82:6 path:+ImmutableArray + addValueDeclaration +mapWithIndexU ImmutableArray.res:84:6 path:+ImmutableArray + addValueDeclaration +mapWithIndex ImmutableArray.res:85:6 path:+ImmutableArray + addValueDeclaration +partitionU ImmutableArray.res:87:6 path:+ImmutableArray + addValueDeclaration +partition ImmutableArray.res:88:6 path:+ImmutableArray + addValueDeclaration +reduceU ImmutableArray.res:90:6 path:+ImmutableArray + addValueDeclaration +reduce ImmutableArray.res:91:6 path:+ImmutableArray + addValueDeclaration +reduceReverseU ImmutableArray.res:93:6 path:+ImmutableArray + addValueDeclaration +reduceReverse ImmutableArray.res:94:6 path:+ImmutableArray + addValueDeclaration +reduceReverse2U ImmutableArray.res:96:6 path:+ImmutableArray + addValueDeclaration +reduceReverse2 ImmutableArray.res:97:6 path:+ImmutableArray + addValueDeclaration +someU ImmutableArray.res:99:6 path:+ImmutableArray + addValueDeclaration +some ImmutableArray.res:100:6 path:+ImmutableArray + addValueDeclaration +everyU ImmutableArray.res:102:6 path:+ImmutableArray + addValueDeclaration +every ImmutableArray.res:103:6 path:+ImmutableArray + addValueDeclaration +every2U ImmutableArray.res:105:6 path:+ImmutableArray + addValueDeclaration +every2 ImmutableArray.res:106:6 path:+ImmutableArray + addValueDeclaration +some2U ImmutableArray.res:108:6 path:+ImmutableArray + addValueDeclaration +some2 ImmutableArray.res:109:6 path:+ImmutableArray + addValueDeclaration +cmpU ImmutableArray.res:111:6 path:+ImmutableArray + addValueDeclaration +cmp ImmutableArray.res:112:6 path:+ImmutableArray + addValueDeclaration +eqU ImmutableArray.res:114:6 path:+ImmutableArray + addValueDeclaration +eq ImmutableArray.res:115:6 path:+ImmutableArray + addValueReference ImmutableArray.res:14:6 --> ImmutableArray.res:14:18 + addValueReference ImmutableArray.res:14:6 --> ImmutableArray.res:8:2 + addValueReference ImmutableArray.res:16:6 --> ImmutableArray.res:16:16 + addValueReference ImmutableArray.res:16:6 --> ImmutableArray.res:5:2 + addValueReference ImmutableArray.res:20:6 --> ImmutableArray.res:20:15 + addValueReference ImmutableArray.res:20:6 --> ImmutableArray.res:5:2 + addValueReference ImmutableArray.res:22:6 --> ImmutableArray.res:22:13 + addValueReference ImmutableArray.res:22:6 --> ImmutableArray.res:5:2 + addValueReference ImmutableArray.res:24:6 --> ImmutableArray.res:24:13 + addValueReference ImmutableArray.res:24:6 --> ImmutableArray.res:5:2 + addValueReference ImmutableArray.res:24:6 --> ImmutableArray.res:24:16 + addValueReference ImmutableArray.res:26:6 --> ImmutableArray.res:26:16 + addValueReference ImmutableArray.res:26:6 --> ImmutableArray.res:5:2 + addValueReference ImmutableArray.res:26:6 --> ImmutableArray.res:26:19 + addValueReference ImmutableArray.res:28:6 --> ImmutableArray.res:28:19 + addValueReference ImmutableArray.res:28:6 --> ImmutableArray.res:5:2 + addValueReference ImmutableArray.res:28:6 --> ImmutableArray.res:28:22 + addValueReference ImmutableArray.res:30:6 --> ImmutableArray.res:30:22 + addValueReference ImmutableArray.res:30:6 --> ImmutableArray.res:5:2 + addValueReference ImmutableArray.res:30:6 --> ImmutableArray.res:30:25 + addValueReference ImmutableArray.res:32:6 --> ImmutableArray.res:32:16 + addValueReference ImmutableArray.res:32:6 --> ImmutableArray.res:5:2 + addValueReference ImmutableArray.res:32:6 --> ImmutableArray.res:8:2 + addValueReference ImmutableArray.res:34:6 --> ImmutableArray.res:34:16 + addValueReference ImmutableArray.res:34:6 --> ImmutableArray.res:5:2 + addValueReference ImmutableArray.res:34:6 --> ImmutableArray.res:8:2 + addValueReference ImmutableArray.res:36:6 --> ImmutableArray.res:36:26 + addValueReference ImmutableArray.res:36:6 --> ImmutableArray.res:8:2 + addValueReference ImmutableArray.res:38:6 --> ImmutableArray.res:38:32 + addValueReference ImmutableArray.res:38:6 --> ImmutableArray.res:8:2 + addValueReference ImmutableArray.res:40:6 --> ImmutableArray.res:40:14 + addValueReference ImmutableArray.res:40:6 --> ImmutableArray.res:40:17 + addValueReference ImmutableArray.res:40:6 --> ImmutableArray.res:8:2 + addValueReference ImmutableArray.res:42:6 --> ImmutableArray.res:42:15 + addValueReference ImmutableArray.res:42:6 --> ImmutableArray.res:42:18 + addValueReference ImmutableArray.res:42:6 --> ImmutableArray.res:8:2 + addValueReference ImmutableArray.res:44:6 --> ImmutableArray.res:44:17 + addValueReference ImmutableArray.res:44:6 --> ImmutableArray.res:44:20 + addValueReference ImmutableArray.res:44:6 --> ImmutableArray.res:44:23 + addValueReference ImmutableArray.res:44:6 --> ImmutableArray.res:8:2 + addValueReference ImmutableArray.res:46:6 --> ImmutableArray.res:46:17 + addValueReference ImmutableArray.res:46:6 --> ImmutableArray.res:46:20 + addValueReference ImmutableArray.res:46:6 --> ImmutableArray.res:8:2 + addValueReference ImmutableArray.res:47:6 --> ImmutableArray.res:47:16 + addValueReference ImmutableArray.res:47:6 --> ImmutableArray.res:47:19 + addValueReference ImmutableArray.res:47:6 --> ImmutableArray.res:8:2 + addValueReference ImmutableArray.res:49:6 --> ImmutableArray.res:49:27 + addValueReference ImmutableArray.res:49:6 --> ImmutableArray.res:49:30 + addValueReference ImmutableArray.res:49:6 --> ImmutableArray.res:8:2 + addValueReference ImmutableArray.res:50:6 --> ImmutableArray.res:50:26 + addValueReference ImmutableArray.res:50:6 --> ImmutableArray.res:50:29 + addValueReference ImmutableArray.res:50:6 --> ImmutableArray.res:8:2 + addValueReference ImmutableArray.res:52:6 --> ImmutableArray.res:52:13 + addValueReference ImmutableArray.res:52:6 --> ImmutableArray.res:5:2 + addValueReference ImmutableArray.res:52:6 --> ImmutableArray.res:52:17 + addValueReference ImmutableArray.res:52:6 --> ImmutableArray.res:5:2 + addValueReference ImmutableArray.res:52:6 --> ImmutableArray.res:9:2 + addValueReference ImmutableArray.res:54:6 --> ImmutableArray.res:54:16 + addValueReference ImmutableArray.res:54:6 --> ImmutableArray.res:5:2 + addValueReference ImmutableArray.res:54:6 --> ImmutableArray.res:54:20 + addValueReference ImmutableArray.res:54:6 --> ImmutableArray.res:5:2 + addValueReference ImmutableArray.res:54:6 --> ImmutableArray.res:54:24 + addValueReference ImmutableArray.res:54:6 --> ImmutableArray.res:8:2 + addValueReference ImmutableArray.res:55:6 --> ImmutableArray.res:55:15 + addValueReference ImmutableArray.res:55:6 --> ImmutableArray.res:5:2 + addValueReference ImmutableArray.res:55:6 --> ImmutableArray.res:55:19 + addValueReference ImmutableArray.res:55:6 --> ImmutableArray.res:5:2 + addValueReference ImmutableArray.res:55:6 --> ImmutableArray.res:55:23 + addValueReference ImmutableArray.res:55:6 --> ImmutableArray.res:8:2 + addValueReference ImmutableArray.res:57:6 --> ImmutableArray.res:57:14 + addValueReference ImmutableArray.res:57:6 --> ImmutableArray.res:6:2 + addValueReference ImmutableArray.res:57:6 --> ImmutableArray.res:10:2 + addValueReference ImmutableArray.res:59:6 --> ImmutableArray.res:59:16 + addValueReference ImmutableArray.res:59:6 --> ImmutableArray.res:5:2 + addValueReference ImmutableArray.res:59:6 --> ImmutableArray.res:59:20 + addValueReference ImmutableArray.res:59:6 --> ImmutableArray.res:5:2 + addValueReference ImmutableArray.res:59:6 --> ImmutableArray.res:8:2 + addValueReference ImmutableArray.res:61:6 --> ImmutableArray.res:61:20 + addValueReference ImmutableArray.res:61:6 --> ImmutableArray.res:7:2 + addValueReference ImmutableArray.res:61:6 --> ImmutableArray.res:8:2 + addValueReference ImmutableArray.res:63:6 --> ImmutableArray.res:63:15 + addValueReference ImmutableArray.res:63:6 --> ImmutableArray.res:5:2 + addValueReference ImmutableArray.res:63:6 --> ImmutableArray.res:63:18 + addValueReference ImmutableArray.res:63:6 --> ImmutableArray.res:63:27 + addValueReference ImmutableArray.res:63:6 --> ImmutableArray.res:8:2 + addValueReference ImmutableArray.res:65:6 --> ImmutableArray.res:65:20 + addValueReference ImmutableArray.res:65:6 --> ImmutableArray.res:5:2 + addValueReference ImmutableArray.res:65:6 --> ImmutableArray.res:65:23 + addValueReference ImmutableArray.res:65:6 --> ImmutableArray.res:8:2 + addValueReference ImmutableArray.res:67:6 --> ImmutableArray.res:67:13 + addValueReference ImmutableArray.res:67:6 --> ImmutableArray.res:5:2 + addValueReference ImmutableArray.res:67:6 --> ImmutableArray.res:8:2 + addValueReference ImmutableArray.res:69:6 --> ImmutableArray.res:69:18 + addValueReference ImmutableArray.res:69:6 --> ImmutableArray.res:5:2 + addValueReference ImmutableArray.res:69:6 --> ImmutableArray.res:69:21 + addValueReference ImmutableArray.res:70:6 --> ImmutableArray.res:70:17 + addValueReference ImmutableArray.res:70:6 --> ImmutableArray.res:5:2 + addValueReference ImmutableArray.res:70:6 --> ImmutableArray.res:70:20 + addValueReference ImmutableArray.res:72:6 --> ImmutableArray.res:72:14 + addValueReference ImmutableArray.res:72:6 --> ImmutableArray.res:5:2 + addValueReference ImmutableArray.res:72:6 --> ImmutableArray.res:72:17 + addValueReference ImmutableArray.res:72:6 --> ImmutableArray.res:8:2 + addValueReference ImmutableArray.res:73:6 --> ImmutableArray.res:73:13 + addValueReference ImmutableArray.res:73:6 --> ImmutableArray.res:5:2 + addValueReference ImmutableArray.res:73:6 --> ImmutableArray.res:73:16 + addValueReference ImmutableArray.res:73:6 --> ImmutableArray.res:8:2 + addValueReference ImmutableArray.res:75:6 --> ImmutableArray.res:75:24 + addValueReference ImmutableArray.res:75:6 --> ImmutableArray.res:5:2 + addValueReference ImmutableArray.res:75:6 --> ImmutableArray.res:75:27 + addValueReference ImmutableArray.res:75:6 --> ImmutableArray.res:8:2 + addValueReference ImmutableArray.res:76:6 --> ImmutableArray.res:76:23 + addValueReference ImmutableArray.res:76:6 --> ImmutableArray.res:5:2 + addValueReference ImmutableArray.res:76:6 --> ImmutableArray.res:76:26 + addValueReference ImmutableArray.res:76:6 --> ImmutableArray.res:8:2 + addValueReference ImmutableArray.res:78:6 --> ImmutableArray.res:78:18 + addValueReference ImmutableArray.res:78:6 --> ImmutableArray.res:5:2 + addValueReference ImmutableArray.res:78:6 --> ImmutableArray.res:78:21 + addValueReference ImmutableArray.res:78:6 --> ImmutableArray.res:8:2 + addValueReference ImmutableArray.res:79:6 --> ImmutableArray.res:79:17 + addValueReference ImmutableArray.res:79:6 --> ImmutableArray.res:5:2 + addValueReference ImmutableArray.res:79:6 --> ImmutableArray.res:79:20 + addValueReference ImmutableArray.res:79:6 --> ImmutableArray.res:8:2 + addValueReference ImmutableArray.res:81:6 --> ImmutableArray.res:81:27 + addValueReference ImmutableArray.res:81:6 --> ImmutableArray.res:5:2 + addValueReference ImmutableArray.res:81:6 --> ImmutableArray.res:81:30 + addValueReference ImmutableArray.res:82:6 --> ImmutableArray.res:82:26 + addValueReference ImmutableArray.res:82:6 --> ImmutableArray.res:5:2 + addValueReference ImmutableArray.res:82:6 --> ImmutableArray.res:82:29 + addValueReference ImmutableArray.res:84:6 --> ImmutableArray.res:84:23 + addValueReference ImmutableArray.res:84:6 --> ImmutableArray.res:5:2 + addValueReference ImmutableArray.res:84:6 --> ImmutableArray.res:84:26 + addValueReference ImmutableArray.res:84:6 --> ImmutableArray.res:8:2 + addValueReference ImmutableArray.res:85:6 --> ImmutableArray.res:85:22 + addValueReference ImmutableArray.res:85:6 --> ImmutableArray.res:5:2 + addValueReference ImmutableArray.res:85:6 --> ImmutableArray.res:85:25 + addValueReference ImmutableArray.res:85:6 --> ImmutableArray.res:8:2 + addValueReference ImmutableArray.res:87:6 --> ImmutableArray.res:87:20 + addValueReference ImmutableArray.res:87:6 --> ImmutableArray.res:5:2 + addValueReference ImmutableArray.res:87:6 --> ImmutableArray.res:87:23 + addValueReference ImmutableArray.res:87:6 --> ImmutableArray.res:10:2 + addValueReference ImmutableArray.res:88:6 --> ImmutableArray.res:88:19 + addValueReference ImmutableArray.res:88:6 --> ImmutableArray.res:5:2 + addValueReference ImmutableArray.res:88:6 --> ImmutableArray.res:88:22 + addValueReference ImmutableArray.res:88:6 --> ImmutableArray.res:10:2 + addValueReference ImmutableArray.res:90:6 --> ImmutableArray.res:90:17 + addValueReference ImmutableArray.res:90:6 --> ImmutableArray.res:5:2 + addValueReference ImmutableArray.res:90:6 --> ImmutableArray.res:90:20 + addValueReference ImmutableArray.res:90:6 --> ImmutableArray.res:90:23 + addValueReference ImmutableArray.res:91:6 --> ImmutableArray.res:91:16 + addValueReference ImmutableArray.res:91:6 --> ImmutableArray.res:5:2 + addValueReference ImmutableArray.res:91:6 --> ImmutableArray.res:91:19 + addValueReference ImmutableArray.res:91:6 --> ImmutableArray.res:91:22 + addValueReference ImmutableArray.res:93:6 --> ImmutableArray.res:93:24 + addValueReference ImmutableArray.res:93:6 --> ImmutableArray.res:5:2 + addValueReference ImmutableArray.res:93:6 --> ImmutableArray.res:93:27 + addValueReference ImmutableArray.res:93:6 --> ImmutableArray.res:93:30 + addValueReference ImmutableArray.res:94:6 --> ImmutableArray.res:94:23 + addValueReference ImmutableArray.res:94:6 --> ImmutableArray.res:5:2 + addValueReference ImmutableArray.res:94:6 --> ImmutableArray.res:94:26 + addValueReference ImmutableArray.res:94:6 --> ImmutableArray.res:94:29 + addValueReference ImmutableArray.res:96:6 --> ImmutableArray.res:96:25 + addValueReference ImmutableArray.res:96:6 --> ImmutableArray.res:5:2 + addValueReference ImmutableArray.res:96:6 --> ImmutableArray.res:96:29 + addValueReference ImmutableArray.res:96:6 --> ImmutableArray.res:5:2 + addValueReference ImmutableArray.res:96:6 --> ImmutableArray.res:96:33 + addValueReference ImmutableArray.res:96:6 --> ImmutableArray.res:96:36 + addValueReference ImmutableArray.res:97:6 --> ImmutableArray.res:97:24 + addValueReference ImmutableArray.res:97:6 --> ImmutableArray.res:5:2 + addValueReference ImmutableArray.res:97:6 --> ImmutableArray.res:97:28 + addValueReference ImmutableArray.res:97:6 --> ImmutableArray.res:5:2 + addValueReference ImmutableArray.res:97:6 --> ImmutableArray.res:97:32 + addValueReference ImmutableArray.res:97:6 --> ImmutableArray.res:97:35 + addValueReference ImmutableArray.res:99:6 --> ImmutableArray.res:99:15 + addValueReference ImmutableArray.res:99:6 --> ImmutableArray.res:5:2 + addValueReference ImmutableArray.res:99:6 --> ImmutableArray.res:99:18 + addValueReference ImmutableArray.res:100:6 --> ImmutableArray.res:100:14 + addValueReference ImmutableArray.res:100:6 --> ImmutableArray.res:5:2 + addValueReference ImmutableArray.res:100:6 --> ImmutableArray.res:100:17 + addValueReference ImmutableArray.res:102:6 --> ImmutableArray.res:102:16 + addValueReference ImmutableArray.res:102:6 --> ImmutableArray.res:5:2 + addValueReference ImmutableArray.res:102:6 --> ImmutableArray.res:102:19 + addValueReference ImmutableArray.res:103:6 --> ImmutableArray.res:103:15 + addValueReference ImmutableArray.res:103:6 --> ImmutableArray.res:5:2 + addValueReference ImmutableArray.res:103:6 --> ImmutableArray.res:103:18 + addValueReference ImmutableArray.res:105:6 --> ImmutableArray.res:105:17 + addValueReference ImmutableArray.res:105:6 --> ImmutableArray.res:5:2 + addValueReference ImmutableArray.res:105:6 --> ImmutableArray.res:105:21 + addValueReference ImmutableArray.res:105:6 --> ImmutableArray.res:5:2 + addValueReference ImmutableArray.res:105:6 --> ImmutableArray.res:105:25 + addValueReference ImmutableArray.res:106:6 --> ImmutableArray.res:106:16 + addValueReference ImmutableArray.res:106:6 --> ImmutableArray.res:5:2 + addValueReference ImmutableArray.res:106:6 --> ImmutableArray.res:106:20 + addValueReference ImmutableArray.res:106:6 --> ImmutableArray.res:5:2 + addValueReference ImmutableArray.res:106:6 --> ImmutableArray.res:106:24 + addValueReference ImmutableArray.res:108:6 --> ImmutableArray.res:108:16 + addValueReference ImmutableArray.res:108:6 --> ImmutableArray.res:5:2 + addValueReference ImmutableArray.res:108:6 --> ImmutableArray.res:108:20 + addValueReference ImmutableArray.res:108:6 --> ImmutableArray.res:5:2 + addValueReference ImmutableArray.res:108:6 --> ImmutableArray.res:108:24 + addValueReference ImmutableArray.res:109:6 --> ImmutableArray.res:109:15 + addValueReference ImmutableArray.res:109:6 --> ImmutableArray.res:5:2 + addValueReference ImmutableArray.res:109:6 --> ImmutableArray.res:109:19 + addValueReference ImmutableArray.res:109:6 --> ImmutableArray.res:5:2 + addValueReference ImmutableArray.res:109:6 --> ImmutableArray.res:109:23 + addValueReference ImmutableArray.res:111:6 --> ImmutableArray.res:111:14 + addValueReference ImmutableArray.res:111:6 --> ImmutableArray.res:5:2 + addValueReference ImmutableArray.res:111:6 --> ImmutableArray.res:111:18 + addValueReference ImmutableArray.res:111:6 --> ImmutableArray.res:5:2 + addValueReference ImmutableArray.res:111:6 --> ImmutableArray.res:111:22 + addValueReference ImmutableArray.res:112:6 --> ImmutableArray.res:112:13 + addValueReference ImmutableArray.res:112:6 --> ImmutableArray.res:5:2 + addValueReference ImmutableArray.res:112:6 --> ImmutableArray.res:112:17 + addValueReference ImmutableArray.res:112:6 --> ImmutableArray.res:5:2 + addValueReference ImmutableArray.res:112:6 --> ImmutableArray.res:112:21 + addValueReference ImmutableArray.res:114:6 --> ImmutableArray.res:114:13 + addValueReference ImmutableArray.res:114:6 --> ImmutableArray.res:5:2 + addValueReference ImmutableArray.res:114:6 --> ImmutableArray.res:114:17 + addValueReference ImmutableArray.res:114:6 --> ImmutableArray.res:5:2 + addValueReference ImmutableArray.res:114:6 --> ImmutableArray.res:114:21 + addValueReference ImmutableArray.res:115:6 --> ImmutableArray.res:115:12 + addValueReference ImmutableArray.res:115:6 --> ImmutableArray.res:5:2 + addValueReference ImmutableArray.res:115:6 --> ImmutableArray.res:115:16 + addValueReference ImmutableArray.res:115:6 --> ImmutableArray.res:5:2 + addValueReference ImmutableArray.res:115:6 --> ImmutableArray.res:115:20 + addValueReference ImmutableArray.resi:6:2 --> ImmutableArray.res:24:6 + addValueReference ImmutableArray.resi:9:0 --> ImmutableArray.res:14:6 + addValueReference ImmutableArray.resi:12:0 --> ImmutableArray.res:16:6 + addValueReference ImmutableArray.resi:14:0 --> ImmutableArray.res:20:6 + addValueReference ImmutableArray.resi:17:0 --> ImmutableArray.res:22:6 + addValueReference ImmutableArray.resi:19:0 --> ImmutableArray.res:24:6 + addValueReference ImmutableArray.resi:21:0 --> ImmutableArray.res:26:6 + addValueReference ImmutableArray.resi:23:0 --> ImmutableArray.res:28:6 + addValueReference ImmutableArray.resi:25:0 --> ImmutableArray.res:30:6 + addValueReference ImmutableArray.resi:27:0 --> ImmutableArray.res:32:6 + addValueReference ImmutableArray.resi:29:0 --> ImmutableArray.res:34:6 + addValueReference ImmutableArray.resi:31:0 --> ImmutableArray.res:36:6 + addValueReference ImmutableArray.resi:33:0 --> ImmutableArray.res:38:6 + addValueReference ImmutableArray.resi:35:0 --> ImmutableArray.res:40:6 + addValueReference ImmutableArray.resi:37:0 --> ImmutableArray.res:42:6 + addValueReference ImmutableArray.resi:39:0 --> ImmutableArray.res:44:6 + addValueReference ImmutableArray.resi:41:0 --> ImmutableArray.res:46:6 + addValueReference ImmutableArray.resi:42:0 --> ImmutableArray.res:47:6 + addValueReference ImmutableArray.resi:44:0 --> ImmutableArray.res:49:6 + addValueReference ImmutableArray.resi:45:0 --> ImmutableArray.res:50:6 + addValueReference ImmutableArray.resi:47:0 --> ImmutableArray.res:52:6 + addValueReference ImmutableArray.resi:49:0 --> ImmutableArray.res:54:6 + addValueReference ImmutableArray.resi:50:0 --> ImmutableArray.res:55:6 + addValueReference ImmutableArray.resi:52:0 --> ImmutableArray.res:57:6 + addValueReference ImmutableArray.resi:54:0 --> ImmutableArray.res:59:6 + addValueReference ImmutableArray.resi:56:0 --> ImmutableArray.res:61:6 + addValueReference ImmutableArray.resi:58:0 --> ImmutableArray.res:63:6 + addValueReference ImmutableArray.resi:60:0 --> ImmutableArray.res:65:6 + addValueReference ImmutableArray.resi:62:0 --> ImmutableArray.res:67:6 + addValueReference ImmutableArray.resi:64:0 --> ImmutableArray.res:69:6 + addValueReference ImmutableArray.resi:65:0 --> ImmutableArray.res:70:6 + addValueReference ImmutableArray.resi:67:0 --> ImmutableArray.res:72:6 + addValueReference ImmutableArray.resi:68:0 --> ImmutableArray.res:73:6 + addValueReference ImmutableArray.resi:70:0 --> ImmutableArray.res:75:6 + addValueReference ImmutableArray.resi:71:0 --> ImmutableArray.res:76:6 + addValueReference ImmutableArray.resi:73:0 --> ImmutableArray.res:78:6 + addValueReference ImmutableArray.resi:74:0 --> ImmutableArray.res:79:6 + addValueReference ImmutableArray.resi:76:0 --> ImmutableArray.res:81:6 + addValueReference ImmutableArray.resi:77:0 --> ImmutableArray.res:82:6 + addValueReference ImmutableArray.resi:79:0 --> ImmutableArray.res:84:6 + addValueReference ImmutableArray.resi:80:0 --> ImmutableArray.res:85:6 + addValueReference ImmutableArray.resi:82:0 --> ImmutableArray.res:87:6 + addValueReference ImmutableArray.resi:83:0 --> ImmutableArray.res:88:6 + addValueReference ImmutableArray.resi:85:0 --> ImmutableArray.res:90:6 + addValueReference ImmutableArray.resi:86:0 --> ImmutableArray.res:91:6 + addValueReference ImmutableArray.resi:88:0 --> ImmutableArray.res:93:6 + addValueReference ImmutableArray.resi:89:0 --> ImmutableArray.res:94:6 + addValueReference ImmutableArray.resi:91:0 --> ImmutableArray.res:96:6 + addValueReference ImmutableArray.resi:92:0 --> ImmutableArray.res:97:6 + addValueReference ImmutableArray.resi:94:0 --> ImmutableArray.res:99:6 + addValueReference ImmutableArray.resi:95:0 --> ImmutableArray.res:100:6 + addValueReference ImmutableArray.resi:97:0 --> ImmutableArray.res:102:6 + addValueReference ImmutableArray.resi:98:0 --> ImmutableArray.res:103:6 + addValueReference ImmutableArray.resi:100:0 --> ImmutableArray.res:105:6 + addValueReference ImmutableArray.resi:101:0 --> ImmutableArray.res:106:6 + addValueReference ImmutableArray.resi:103:0 --> ImmutableArray.res:108:6 + addValueReference ImmutableArray.resi:104:0 --> ImmutableArray.res:109:6 + addValueReference ImmutableArray.resi:106:0 --> ImmutableArray.res:111:6 + addValueReference ImmutableArray.resi:107:0 --> ImmutableArray.res:112:6 + addValueReference ImmutableArray.resi:109:0 --> ImmutableArray.res:114:6 + addValueReference ImmutableArray.resi:110:0 --> ImmutableArray.res:115:6 + Scanning ImmutableArray.cmti Source:ImmutableArray.resi + addValueDeclaration +get ImmutableArray.resi:6:2 path:ImmutableArray.Array + addValueDeclaration +fromArray ImmutableArray.resi:9:0 path:ImmutableArray + addValueDeclaration +toArray ImmutableArray.resi:12:0 path:ImmutableArray + addValueDeclaration +length ImmutableArray.resi:14:0 path:ImmutableArray + addValueDeclaration +size ImmutableArray.resi:17:0 path:ImmutableArray + addValueDeclaration +get ImmutableArray.resi:19:0 path:ImmutableArray + addValueDeclaration +getExn ImmutableArray.resi:21:0 path:ImmutableArray + addValueDeclaration +getUnsafe ImmutableArray.resi:23:0 path:ImmutableArray + addValueDeclaration +getUndefined ImmutableArray.resi:25:0 path:ImmutableArray + addValueDeclaration +shuffle ImmutableArray.resi:27:0 path:ImmutableArray + addValueDeclaration +reverse ImmutableArray.resi:29:0 path:ImmutableArray + addValueDeclaration +makeUninitialized ImmutableArray.resi:31:0 path:ImmutableArray + addValueDeclaration +makeUninitializedUnsafe ImmutableArray.resi:33:0 path:ImmutableArray + addValueDeclaration +make ImmutableArray.resi:35:0 path:ImmutableArray + addValueDeclaration +range ImmutableArray.resi:37:0 path:ImmutableArray + addValueDeclaration +rangeBy ImmutableArray.resi:39:0 path:ImmutableArray + addValueDeclaration +makeByU ImmutableArray.resi:41:0 path:ImmutableArray + addValueDeclaration +makeBy ImmutableArray.resi:42:0 path:ImmutableArray + addValueDeclaration +makeByAndShuffleU ImmutableArray.resi:44:0 path:ImmutableArray + addValueDeclaration +makeByAndShuffle ImmutableArray.resi:45:0 path:ImmutableArray + addValueDeclaration +zip ImmutableArray.resi:47:0 path:ImmutableArray + addValueDeclaration +zipByU ImmutableArray.resi:49:0 path:ImmutableArray + addValueDeclaration +zipBy ImmutableArray.resi:50:0 path:ImmutableArray + addValueDeclaration +unzip ImmutableArray.resi:52:0 path:ImmutableArray + addValueDeclaration +concat ImmutableArray.resi:54:0 path:ImmutableArray + addValueDeclaration +concatMany ImmutableArray.resi:56:0 path:ImmutableArray + addValueDeclaration +slice ImmutableArray.resi:58:0 path:ImmutableArray + addValueDeclaration +sliceToEnd ImmutableArray.resi:60:0 path:ImmutableArray + addValueDeclaration +copy ImmutableArray.resi:62:0 path:ImmutableArray + addValueDeclaration +forEachU ImmutableArray.resi:64:0 path:ImmutableArray + addValueDeclaration +forEach ImmutableArray.resi:65:0 path:ImmutableArray + addValueDeclaration +mapU ImmutableArray.resi:67:0 path:ImmutableArray + addValueDeclaration +map ImmutableArray.resi:68:0 path:ImmutableArray + addValueDeclaration +keepWithIndexU ImmutableArray.resi:70:0 path:ImmutableArray + addValueDeclaration +keepWithIndex ImmutableArray.resi:71:0 path:ImmutableArray + addValueDeclaration +keepMapU ImmutableArray.resi:73:0 path:ImmutableArray + addValueDeclaration +keepMap ImmutableArray.resi:74:0 path:ImmutableArray + addValueDeclaration +forEachWithIndexU ImmutableArray.resi:76:0 path:ImmutableArray + addValueDeclaration +forEachWithIndex ImmutableArray.resi:77:0 path:ImmutableArray + addValueDeclaration +mapWithIndexU ImmutableArray.resi:79:0 path:ImmutableArray + addValueDeclaration +mapWithIndex ImmutableArray.resi:80:0 path:ImmutableArray + addValueDeclaration +partitionU ImmutableArray.resi:82:0 path:ImmutableArray + addValueDeclaration +partition ImmutableArray.resi:83:0 path:ImmutableArray + addValueDeclaration +reduceU ImmutableArray.resi:85:0 path:ImmutableArray + addValueDeclaration +reduce ImmutableArray.resi:86:0 path:ImmutableArray + addValueDeclaration +reduceReverseU ImmutableArray.resi:88:0 path:ImmutableArray + addValueDeclaration +reduceReverse ImmutableArray.resi:89:0 path:ImmutableArray + addValueDeclaration +reduceReverse2U ImmutableArray.resi:91:0 path:ImmutableArray + addValueDeclaration +reduceReverse2 ImmutableArray.resi:92:0 path:ImmutableArray + addValueDeclaration +someU ImmutableArray.resi:94:0 path:ImmutableArray + addValueDeclaration +some ImmutableArray.resi:95:0 path:ImmutableArray + addValueDeclaration +everyU ImmutableArray.resi:97:0 path:ImmutableArray + addValueDeclaration +every ImmutableArray.resi:98:0 path:ImmutableArray + addValueDeclaration +every2U ImmutableArray.resi:100:0 path:ImmutableArray + addValueDeclaration +every2 ImmutableArray.resi:101:0 path:ImmutableArray + addValueDeclaration +some2U ImmutableArray.resi:103:0 path:ImmutableArray + addValueDeclaration +some2 ImmutableArray.resi:104:0 path:ImmutableArray + addValueDeclaration +cmpU ImmutableArray.resi:106:0 path:ImmutableArray + addValueDeclaration +cmp ImmutableArray.resi:107:0 path:ImmutableArray + addValueDeclaration +eqU ImmutableArray.resi:109:0 path:ImmutableArray + addValueDeclaration +eq ImmutableArray.resi:110:0 path:ImmutableArray + Scanning ImportHookDefault.cmt Source:ImportHookDefault.res + addValueDeclaration +make ImportHookDefault.res:6:0 path:+ImportHookDefault + addRecordLabelDeclaration name ImportHookDefault.res:2:2 path:+ImportHookDefault.person + addRecordLabelDeclaration age ImportHookDefault.res:3:2 path:+ImportHookDefault.person + addRecordLabelDeclaration person ImportHookDefault.res:7:15 path:+ImportHookDefault.props + addRecordLabelDeclaration children ImportHookDefault.res:9:2 path:+ImportHookDefault.props + addRecordLabelDeclaration renderMe ImportHookDefault.res:11:5 path:+ImportHookDefault.props + Scanning ImportHooks.cmt Source:ImportHooks.res + addValueDeclaration +make ImportHooks.res:13:0 path:+ImportHooks + addValueDeclaration +foo ImportHooks.res:20:0 path:+ImportHooks + addRecordLabelDeclaration name ImportHooks.res:3:2 path:+ImportHooks.person + addRecordLabelDeclaration age ImportHooks.res:4:2 path:+ImportHooks.person + addRecordLabelDeclaration person ImportHooks.res:14:15 path:+ImportHooks.props + addRecordLabelDeclaration children ImportHooks.res:16:2 path:+ImportHooks.props + addRecordLabelDeclaration renderMe ImportHooks.res:18:5 path:+ImportHooks.props + Scanning ImportIndex.cmt Source:ImportIndex.res + addValueDeclaration +make ImportIndex.res:2:0 path:+ImportIndex + addRecordLabelDeclaration method ImportIndex.res:3:50 path:+ImportIndex.props + Scanning ImportJsValue.cmt Source:ImportJsValue.res + addValueDeclaration +round ImportJsValue.res:1:0 path:+ImportJsValue + addValueDeclaration +area ImportJsValue.res:15:0 path:+ImportJsValue + addValueDeclaration +returnMixedArray ImportJsValue.res:23:0 path:+ImportJsValue + addValueDeclaration +roundedNumber ImportJsValue.res:27:4 path:+ImportJsValue + addValueDeclaration +areaValue ImportJsValue.res:30:4 path:+ImportJsValue + addValueDeclaration +getAbs ImportJsValue.res:40:6 path:+ImportJsValue.AbsoluteValue + addValueDeclaration +useGetProp ImportJsValue.res:47:4 path:+ImportJsValue + addValueDeclaration +useGetAbs ImportJsValue.res:50:4 path:+ImportJsValue + addValueDeclaration +useColor ImportJsValue.res:58:0 path:+ImportJsValue + addValueDeclaration +higherOrder ImportJsValue.res:60:0 path:+ImportJsValue + addValueDeclaration +returnedFromHigherOrder ImportJsValue.res:64:4 path:+ImportJsValue + addValueDeclaration +convertVariant ImportJsValue.res:70:0 path:+ImportJsValue + addValueDeclaration +polymorphic ImportJsValue.res:73:0 path:+ImportJsValue + addValueDeclaration +default ImportJsValue.res:75:0 path:+ImportJsValue + addRecordLabelDeclaration x ImportJsValue.res:11:2 path:+ImportJsValue.point + addRecordLabelDeclaration y ImportJsValue.res:12:2 path:+ImportJsValue.point + addValueReference ImportJsValue.res:27:4 --> ImportJsValue.res:1:0 + addValueReference ImportJsValue.res:30:4 --> ImportJsValue.res:15:0 + addValueDeclaration +getAbs ImportJsValue.res:41:8 path:+ImportJsValue.AbsoluteValue + addValueReference ImportJsValue.res:41:8 --> ImportJsValue.res:40:16 + addValueReference ImportJsValue.res:40:6 --> ImportJsValue.res:41:8 + addValueReference ImportJsValue.res:47:4 --> ImportJsValue.res:47:18 + addValueReference ImportJsValue.res:47:4 --> ImportJsValue.res:37:2 + addValueReference ImportJsValue.res:50:4 --> ImportJsValue.res:50:17 + addValueReference ImportJsValue.res:50:4 --> ImportJsValue.res:40:6 + addValueReference ImportJsValue.res:64:4 --> ImportJsValue.res:60:0 + addVariantCaseDeclaration I ImportJsValue.res:67:2 path:+ImportJsValue.variant + addVariantCaseDeclaration S ImportJsValue.res:68:2 path:+ImportJsValue.variant + Scanning ImportMyBanner.cmt Source:ImportMyBanner.res + addValueDeclaration +make ImportMyBanner.res:7:0 path:+ImportMyBanner + addValueDeclaration +make ImportMyBanner.res:12:4 path:+ImportMyBanner + addRecordLabelDeclaration text ImportMyBanner.res:5:16 path:+ImportMyBanner.message + addValueReference ImportMyBanner.res:12:4 --> ImportMyBanner.res:7:0 + Scanning InnerModuleTypes.cmt Source:InnerModuleTypes.res + addVariantCaseDeclaration Foo InnerModuleTypes.res:2:11 path:+InnerModuleTypes.I.t + Scanning InnerModuleTypes.cmti Source:InnerModuleTypes.resi + addVariantCaseDeclaration Foo InnerModuleTypes.resi:2:11 path:InnerModuleTypes.I.t + extendTypeDependencies InnerModuleTypes.res:2:11 --> InnerModuleTypes.resi:2:11 + extendTypeDependencies InnerModuleTypes.resi:2:11 --> InnerModuleTypes.res:2:11 + addTypeReference InnerModuleTypes.res:2:11 --> InnerModuleTypes.resi:2:11 + addTypeReference InnerModuleTypes.resi:2:11 --> InnerModuleTypes.res:2:11 + Scanning JSResource.cmt Source:JSResource.res + Scanning JsxV4.cmt Source:JsxV4.res + addValueDeclaration +make JsxV4.res:4:23 path:+JsxV4.C + addValueReference JsxV4.res:4:36 --> React.res:3:0 + addValueReference JsxV4.res:7:9 --> JsxV4.res:4:23 + Scanning LetPrivate.cmt Source:LetPrivate.res + addValueDeclaration +y LetPrivate.res:7:4 path:+LetPrivate + addValueDeclaration +x LetPrivate.res:3:6 path:+LetPrivate.local_1 + addValueReference LetPrivate.res:7:4 --> LetPrivate.res:3:6 + Scanning ModuleAliases.cmt Source:ModuleAliases.res + addValueDeclaration +testNested ModuleAliases.res:22:4 path:+ModuleAliases + addValueDeclaration +testInner ModuleAliases.res:25:4 path:+ModuleAliases + addValueDeclaration +testInner2 ModuleAliases.res:28:4 path:+ModuleAliases + addRecordLabelDeclaration inner ModuleAliases.res:3:19 path:+ModuleAliases.Outer.Inner.innerT + addRecordLabelDeclaration nested ModuleAliases.res:11:16 path:+ModuleAliases.Outer2.Inner2.InnerNested.t + addValueReference ModuleAliases.res:22:4 --> ModuleAliases.res:22:18 + addValueReference ModuleAliases.res:25:4 --> ModuleAliases.res:25:17 + addValueReference ModuleAliases.res:28:4 --> ModuleAliases.res:28:18 + Scanning ModuleAliases2.cmt Source:ModuleAliases2.res + addValueDeclaration +q ModuleAliases2.res:21:4 path:+ModuleAliases2 + addRecordLabelDeclaration x ModuleAliases2.res:3:2 path:+ModuleAliases2.record + addRecordLabelDeclaration y ModuleAliases2.res:4:2 path:+ModuleAliases2.record + addRecordLabelDeclaration outer ModuleAliases2.res:9:16 path:+ModuleAliases2.Outer.outer + addRecordLabelDeclaration inner ModuleAliases2.res:13:18 path:+ModuleAliases2.Outer.Inner.inner + Scanning ModuleExceptionBug.cmt Source:ModuleExceptionBug.res + addValueDeclaration +customDouble ModuleExceptionBug.res:2:6 path:+ModuleExceptionBug.Dep + addValueDeclaration +ddjdj ModuleExceptionBug.res:7:4 path:+ModuleExceptionBug + addValueReference ModuleExceptionBug.res:2:6 --> ModuleExceptionBug.res:2:21 + addExceptionDeclaration MyOtherException ModuleExceptionBug.res:5:0 path:+ModuleExceptionBug + addValueReference ModuleExceptionBug.res:8:7 --> ModuleExceptionBug.res:7:4 + Scanning NestedModules.cmt Source:NestedModules.res + addValueDeclaration +notNested NestedModules.res:2:4 path:+NestedModules + addValueDeclaration +theAnswer NestedModules.res:6:6 path:+NestedModules.Universe + addValueDeclaration +notExported NestedModules.res:8:6 path:+NestedModules.Universe + addValueDeclaration +x NestedModules.res:14:8 path:+NestedModules.Universe.Nested2 + addValueDeclaration +nested2Value NestedModules.res:17:8 path:+NestedModules.Universe.Nested2 + addValueDeclaration +y NestedModules.res:19:8 path:+NestedModules.Universe.Nested2 + addValueDeclaration +x NestedModules.res:25:10 path:+NestedModules.Universe.Nested2.Nested3 + addValueDeclaration +y NestedModules.res:26:10 path:+NestedModules.Universe.Nested2.Nested3 + addValueDeclaration +z NestedModules.res:27:10 path:+NestedModules.Universe.Nested2.Nested3 + addValueDeclaration +w NestedModules.res:28:10 path:+NestedModules.Universe.Nested2.Nested3 + addValueDeclaration +nested3Value NestedModules.res:34:10 path:+NestedModules.Universe.Nested2.Nested3 + addValueDeclaration +nested3Function NestedModules.res:37:10 path:+NestedModules.Universe.Nested2.Nested3 + addValueDeclaration +nested2Function NestedModules.res:41:8 path:+NestedModules.Universe.Nested2 + addValueDeclaration +someString NestedModules.res:50:6 path:+NestedModules.Universe + addValueReference NestedModules.res:37:10 --> NestedModules.res:37:29 + addValueReference NestedModules.res:41:8 --> NestedModules.res:41:27 + addVariantCaseDeclaration A NestedModules.res:46:4 path:+NestedModules.Universe.variant + addVariantCaseDeclaration B NestedModules.res:47:4 path:+NestedModules.Universe.variant + Scanning NestedModulesInSignature.cmt Source:NestedModulesInSignature.res + addValueDeclaration +theAnswer NestedModulesInSignature.res:2:6 path:+NestedModulesInSignature.Universe + addValueReference NestedModulesInSignature.resi:2:2 --> NestedModulesInSignature.res:2:6 + Scanning NestedModulesInSignature.cmti Source:NestedModulesInSignature.resi + addValueDeclaration +theAnswer NestedModulesInSignature.resi:2:2 path:NestedModulesInSignature.Universe + Scanning Newsyntax.cmt Source:Newsyntax.res + addValueDeclaration +x Newsyntax.res:1:4 path:+Newsyntax + addValueDeclaration +y Newsyntax.res:3:4 path:+Newsyntax + addRecordLabelDeclaration xxx Newsyntax.res:6:2 path:+Newsyntax.record + addRecordLabelDeclaration yyy Newsyntax.res:7:2 path:+Newsyntax.record + addVariantCaseDeclaration A Newsyntax.res:10:15 path:+Newsyntax.variant + addVariantCaseDeclaration B Newsyntax.res:10:17 path:+Newsyntax.variant + addVariantCaseDeclaration C Newsyntax.res:10:25 path:+Newsyntax.variant + addRecordLabelDeclaration xx Newsyntax.res:12:16 path:+Newsyntax.record2 + addRecordLabelDeclaration yy Newsyntax.res:12:23 path:+Newsyntax.record2 + Scanning Newton.cmt Source:Newton.res + addValueDeclaration +- Newton.res:1:4 path:+Newton + addValueDeclaration ++ Newton.res:2:4 path:+Newton + addValueDeclaration +* Newton.res:3:4 path:+Newton + addValueDeclaration +/ Newton.res:4:4 path:+Newton + addValueDeclaration +newton Newton.res:6:4 path:+Newton + addValueDeclaration +f Newton.res:25:4 path:+Newton + addValueDeclaration +fPrimed Newton.res:27:4 path:+Newton + addValueDeclaration +result Newton.res:29:4 path:+Newton + addValueDeclaration +current Newton.res:7:6 path:+Newton + addValueReference Newton.res:7:6 --> Newton.res:6:28 + addValueDeclaration +iterateMore Newton.res:8:6 path:+Newton + addValueDeclaration +delta Newton.res:9:8 path:+Newton + addValueReference Newton.res:9:8 --> Newton.res:8:21 + addValueReference Newton.res:9:8 --> Newton.res:8:31 + addValueReference Newton.res:9:8 --> Newton.res:1:4 + addValueReference Newton.res:9:8 --> Newton.res:8:31 + addValueReference Newton.res:9:8 --> Newton.res:8:21 + addValueReference Newton.res:9:8 --> Newton.res:1:4 + addValueReference Newton.res:9:8 --> Newton.res:8:31 + addValueReference Newton.res:9:8 --> Newton.res:8:21 + addValueReference Newton.res:8:6 --> Newton.res:9:8 + addValueReference Newton.res:8:6 --> Newton.res:6:38 + addValueReference Newton.res:8:6 --> Newton.res:7:6 + addValueReference Newton.res:8:6 --> Newton.res:8:31 + addValueDeclaration +loop Newton.res:14:10 path:+Newton + addValueDeclaration +previous Newton.res:15:8 path:+Newton + addValueReference Newton.res:15:8 --> Newton.res:7:6 + addValueDeclaration +next Newton.res:16:8 path:+Newton + addValueReference Newton.res:16:8 --> Newton.res:15:8 + addValueReference Newton.res:16:8 --> Newton.res:15:8 + addValueReference Newton.res:16:8 --> Newton.res:6:14 + addValueReference Newton.res:16:8 --> Newton.res:15:8 + addValueReference Newton.res:16:8 --> Newton.res:6:18 + addValueReference Newton.res:16:8 --> Newton.res:4:4 + addValueReference Newton.res:16:8 --> Newton.res:1:4 + addValueReference Newton.res:14:10 --> Newton.res:7:6 + addValueReference Newton.res:14:10 --> Newton.res:14:10 + addValueReference Newton.res:14:10 --> Newton.res:15:8 + addValueReference Newton.res:14:10 --> Newton.res:16:8 + addValueReference Newton.res:14:10 --> Newton.res:8:6 + addValueReference Newton.res:6:4 --> Newton.res:14:10 + addValueReference Newton.res:25:4 --> Newton.res:25:8 + addValueReference Newton.res:25:4 --> Newton.res:25:8 + addValueReference Newton.res:25:4 --> Newton.res:3:4 + addValueReference Newton.res:25:4 --> Newton.res:25:8 + addValueReference Newton.res:25:4 --> Newton.res:3:4 + addValueReference Newton.res:25:4 --> Newton.res:25:8 + addValueReference Newton.res:25:4 --> Newton.res:3:4 + addValueReference Newton.res:25:4 --> Newton.res:25:8 + addValueReference Newton.res:25:4 --> Newton.res:3:4 + addValueReference Newton.res:25:4 --> Newton.res:1:4 + addValueReference Newton.res:25:4 --> Newton.res:25:8 + addValueReference Newton.res:25:4 --> Newton.res:3:4 + addValueReference Newton.res:25:4 --> Newton.res:1:4 + addValueReference Newton.res:25:4 --> Newton.res:2:4 + addValueReference Newton.res:27:4 --> Newton.res:27:14 + addValueReference Newton.res:27:4 --> Newton.res:3:4 + addValueReference Newton.res:27:4 --> Newton.res:27:14 + addValueReference Newton.res:27:4 --> Newton.res:3:4 + addValueReference Newton.res:27:4 --> Newton.res:27:14 + addValueReference Newton.res:27:4 --> Newton.res:3:4 + addValueReference Newton.res:27:4 --> Newton.res:1:4 + addValueReference Newton.res:27:4 --> Newton.res:1:4 + addValueReference Newton.res:29:4 --> Newton.res:25:4 + addValueReference Newton.res:29:4 --> Newton.res:27:4 + addValueReference Newton.res:29:4 --> Newton.res:6:4 + addValueReference Newton.res:31:8 --> Newton.res:29:4 + addValueReference Newton.res:31:18 --> Newton.res:29:4 + addValueReference Newton.res:31:16 --> Newton.res:25:4 + Scanning Opaque.cmt Source:Opaque.res + addValueDeclaration +noConversion Opaque.res:5:4 path:+Opaque + addValueDeclaration +testConvertNestedRecordFromOtherFile Opaque.res:11:4 path:+Opaque + addVariantCaseDeclaration A Opaque.res:2:25 path:+Opaque.opaqueFromRecords + addValueReference Opaque.res:5:4 --> Opaque.res:5:20 + addValueReference Opaque.res:11:4 --> Opaque.res:11:44 + Scanning OptArg.cmt Source:OptArg.res + addValueDeclaration +foo OptArg.res:1:4 path:+OptArg + addValueDeclaration +bar OptArg.res:3:4 path:+OptArg + addValueDeclaration +threeArgs OptArg.res:9:4 path:+OptArg + addValueDeclaration +twoArgs OptArg.res:14:4 path:+OptArg + addValueDeclaration +oneArg OptArg.res:18:4 path:+OptArg + addValueDeclaration +wrapOneArg OptArg.res:20:4 path:+OptArg + addValueDeclaration +fourArgs OptArg.res:24:4 path:+OptArg + addValueDeclaration +wrapfourArgs OptArg.res:26:4 path:+OptArg + addValueReference OptArg.res:1:4 --> OptArg.res:1:14 + addValueReference OptArg.res:1:4 --> OptArg.res:1:20 + addValueReference OptArg.res:1:4 --> OptArg.res:1:26 + addValueReference OptArg.res:1:4 --> OptArg.res:1:11 + addValueReference OptArg.res:1:4 --> OptArg.res:1:17 + addValueReference OptArg.res:1:4 --> OptArg.res:1:23 + addValueReference OptArg.res:1:4 --> OptArg.res:1:29 + addValueReference OptArg.res:3:4 --> OptArg.res:3:17 + addValueReference OptArg.res:3:4 --> OptArg.res:3:27 + DeadOptionalArgs.addReferences foo called with optional argNames:x argNamesMaybe: OptArg.res:5:7 + addValueReference OptArg.res:5:7 --> OptArg.res:1:4 + DeadOptionalArgs.addReferences bar called with optional argNames: argNamesMaybe: OptArg.res:7:7 + addValueReference OptArg.res:7:7 --> OptArg.res:3:4 + addValueReference OptArg.res:9:4 --> OptArg.res:9:20 + addValueReference OptArg.res:9:4 --> OptArg.res:9:26 + addValueReference OptArg.res:9:4 --> OptArg.res:9:32 + addValueReference OptArg.res:9:4 --> OptArg.res:9:17 + addValueReference OptArg.res:9:4 --> OptArg.res:9:23 + addValueReference OptArg.res:9:4 --> OptArg.res:9:29 + addValueReference OptArg.res:9:4 --> OptArg.res:9:35 + DeadOptionalArgs.addReferences threeArgs called with optional argNames:c, a argNamesMaybe: OptArg.res:11:7 + addValueReference OptArg.res:11:7 --> OptArg.res:9:4 + DeadOptionalArgs.addReferences threeArgs called with optional argNames:a argNamesMaybe: OptArg.res:12:7 + addValueReference OptArg.res:12:7 --> OptArg.res:9:4 + addValueReference OptArg.res:14:4 --> OptArg.res:14:18 + addValueReference OptArg.res:14:4 --> OptArg.res:14:24 + addValueReference OptArg.res:14:4 --> OptArg.res:14:15 + addValueReference OptArg.res:14:4 --> OptArg.res:14:21 + addValueReference OptArg.res:14:4 --> OptArg.res:14:27 + DeadOptionalArgs.addReferences twoArgs called with optional argNames: argNamesMaybe: OptArg.res:16:7 + addValueReference OptArg.res:16:12 --> OptArg.res:14:4 + addValueReference OptArg.res:18:4 --> OptArg.res:18:17 + addValueReference OptArg.res:18:4 --> OptArg.res:18:14 + addValueReference OptArg.res:18:4 --> OptArg.res:18:24 + DeadOptionalArgs.addReferences oneArg called with optional argNames:a argNamesMaybe:a OptArg.res:20:30 + addValueReference OptArg.res:20:4 --> OptArg.res:20:18 + addValueReference OptArg.res:20:4 --> OptArg.res:20:24 + addValueReference OptArg.res:20:4 --> OptArg.res:18:4 + DeadOptionalArgs.addReferences wrapOneArg called with optional argNames:a argNamesMaybe: OptArg.res:22:7 + addValueReference OptArg.res:22:7 --> OptArg.res:20:4 + addValueReference OptArg.res:24:4 --> OptArg.res:24:19 + addValueReference OptArg.res:24:4 --> OptArg.res:24:25 + addValueReference OptArg.res:24:4 --> OptArg.res:24:31 + addValueReference OptArg.res:24:4 --> OptArg.res:24:37 + addValueReference OptArg.res:24:4 --> OptArg.res:24:16 + addValueReference OptArg.res:24:4 --> OptArg.res:24:22 + addValueReference OptArg.res:24:4 --> OptArg.res:24:28 + addValueReference OptArg.res:24:4 --> OptArg.res:24:34 + addValueReference OptArg.res:24:4 --> OptArg.res:24:40 + DeadOptionalArgs.addReferences fourArgs called with optional argNames:c, b, a argNamesMaybe:c, b, a OptArg.res:26:44 + addValueReference OptArg.res:26:4 --> OptArg.res:26:20 + addValueReference OptArg.res:26:4 --> OptArg.res:26:26 + addValueReference OptArg.res:26:4 --> OptArg.res:26:32 + addValueReference OptArg.res:26:4 --> OptArg.res:26:38 + addValueReference OptArg.res:26:4 --> OptArg.res:24:4 + DeadOptionalArgs.addReferences wrapfourArgs called with optional argNames:c, a argNamesMaybe: OptArg.res:28:7 + addValueReference OptArg.res:28:7 --> OptArg.res:26:4 + DeadOptionalArgs.addReferences wrapfourArgs called with optional argNames:c, b argNamesMaybe: OptArg.res:29:7 + addValueReference OptArg.res:29:7 --> OptArg.res:26:4 + addValueReference OptArg.resi:1:0 --> OptArg.res:1:4 + OptionalArgs.addFunctionReference OptArg.resi:1:0 OptArg.res:1:4 + addValueReference OptArg.resi:2:0 --> OptArg.res:3:4 + OptionalArgs.addFunctionReference OptArg.resi:2:0 OptArg.res:3:4 + Scanning OptArg.cmti Source:OptArg.resi + addValueDeclaration +foo OptArg.resi:1:0 path:OptArg + addValueDeclaration +bar OptArg.resi:2:0 path:OptArg + Scanning Records.cmt Source:Records.res + addValueDeclaration +origin Records.res:11:4 path:+Records + addValueDeclaration +computeArea Records.res:14:4 path:+Records + addValueDeclaration +coord2d Records.res:20:4 path:+Records + addValueDeclaration +getOpt Records.res:36:4 path:+Records + addValueDeclaration +findAddress Records.res:39:4 path:+Records + addValueDeclaration +someBusiness Records.res:43:4 path:+Records + addValueDeclaration +findAllAddresses Records.res:46:4 path:+Records + addValueDeclaration +getPayload Records.res:65:4 path:+Records + addValueDeclaration +getPayloadRecord Records.res:74:4 path:+Records + addValueDeclaration +recordValue Records.res:77:4 path:+Records + addValueDeclaration +payloadValue Records.res:80:4 path:+Records + addValueDeclaration +getPayloadRecordPlusOne Records.res:83:4 path:+Records + addValueDeclaration +findAddress2 Records.res:96:4 path:+Records + addValueDeclaration +someBusiness2 Records.res:100:4 path:+Records + addValueDeclaration +computeArea3 Records.res:107:4 path:+Records + addValueDeclaration +computeArea4 Records.res:111:4 path:+Records + addValueDeclaration +testMyRec Records.res:127:4 path:+Records + addValueDeclaration +testMyRec2 Records.res:130:4 path:+Records + addValueDeclaration +testMyObj Records.res:133:4 path:+Records + addValueDeclaration +testMyObj2 Records.res:136:4 path:+Records + addValueDeclaration +testMyRecBsAs Records.res:145:4 path:+Records + addValueDeclaration +testMyRecBsAs2 Records.res:148:4 path:+Records + addRecordLabelDeclaration x Records.res:5:2 path:+Records.coord + addRecordLabelDeclaration y Records.res:6:2 path:+Records.coord + addRecordLabelDeclaration z Records.res:7:2 path:+Records.coord + addValueReference Records.res:14:4 --> Records.res:14:20 + addValueReference Records.res:14:4 --> Records.res:14:23 + addValueReference Records.res:14:4 --> Records.res:14:26 + addValueReference Records.res:14:4 --> Records.res:16:31 + addTypeReference Records.res:14:19 --> Records.res:5:2 + addTypeReference Records.res:14:19 --> Records.res:6:2 + addTypeReference Records.res:14:19 --> Records.res:7:2 + addValueReference Records.res:20:4 --> Records.res:20:15 + addValueReference Records.res:20:4 --> Records.res:20:18 + addRecordLabelDeclaration name Records.res:24:2 path:+Records.person + addRecordLabelDeclaration age Records.res:25:2 path:+Records.person + addRecordLabelDeclaration address Records.res:26:2 path:+Records.person + addRecordLabelDeclaration name Records.res:31:2 path:+Records.business + addRecordLabelDeclaration owner Records.res:32:2 path:+Records.business + addRecordLabelDeclaration address Records.res:33:2 path:+Records.business + addValueReference Records.res:36:4 --> Records.res:36:14 + addValueReference Records.res:36:4 --> Records.res:36:19 + addValueReference Records.res:36:4 --> Records.res:36:28 + addTypeReference Records.res:40:2 --> Records.res:33:2 + addValueReference Records.res:39:4 --> Records.res:39:19 + addValueReference Records.res:39:4 --> Records.res:40:35 + addValueReference Records.res:39:4 --> Records.res:36:4 + addValueReference Records.res:46:4 --> Records.res:46:24 + addTypeReference Records.res:50:6 --> Records.res:33:2 + addValueReference Records.res:46:4 --> Records.res:48:14 + addValueReference Records.res:46:4 --> Records.res:50:39 + addValueReference Records.res:46:4 --> Records.res:36:4 + addTypeReference Records.res:51:6 --> Records.res:32:2 + addValueReference Records.res:46:4 --> Records.res:48:14 + addTypeReference Records.res:51:42 --> Records.res:26:2 + addValueReference Records.res:46:4 --> Records.res:51:37 + addValueReference Records.res:46:4 --> Records.res:51:68 + addValueReference Records.res:46:4 --> Records.res:36:4 + addValueReference Records.res:46:4 --> Records.res:36:4 + addRecordLabelDeclaration num Records.res:60:2 path:+Records.payload + addRecordLabelDeclaration payload Records.res:61:2 path:+Records.payload + addValueReference Records.res:65:4 --> Records.res:65:19 + addTypeReference Records.res:65:18 --> Records.res:61:2 + addRecordLabelDeclaration v Records.res:69:2 path:+Records.record + addRecordLabelDeclaration w Records.res:70:2 path:+Records.record + addValueReference Records.res:74:4 --> Records.res:74:25 + addTypeReference Records.res:74:24 --> Records.res:61:2 + addValueReference Records.res:80:4 --> Records.res:77:4 + addTypeReference Records.res:85:5 --> Records.res:69:2 + addValueReference Records.res:83:4 --> Records.res:83:32 + addValueReference Records.res:83:4 --> Records.res:83:32 + addTypeReference Records.res:83:31 --> Records.res:61:2 + addRecordLabelDeclaration name Records.res:90:2 path:+Records.business2 + addRecordLabelDeclaration owner Records.res:91:2 path:+Records.business2 + addRecordLabelDeclaration address2 Records.res:92:2 path:+Records.business2 + addTypeReference Records.res:97:2 --> Records.res:92:2 + addValueReference Records.res:96:4 --> Records.res:96:20 + addValueReference Records.res:96:4 --> Records.res:97:58 + addValueReference Records.res:96:4 --> Records.res:36:4 + addValueReference Records.res:107:4 --> Records.res:107:20 + addValueReference Records.res:107:4 --> Records.res:107:20 + addValueReference Records.res:107:4 --> Records.res:107:20 + addValueReference Records.res:107:4 --> Records.res:108:75 + addValueReference Records.res:111:4 --> Records.res:111:20 + addValueReference Records.res:111:4 --> Records.res:111:20 + addValueReference Records.res:111:4 --> Records.res:111:20 + addValueReference Records.res:111:4 --> Records.res:112:53 + addRecordLabelDeclaration type_ Records.res:119:2 path:+Records.myRec + addTypeReference Records.res:127:30 --> Records.res:119:2 + addValueReference Records.res:127:4 --> Records.res:127:17 + addValueReference Records.res:130:4 --> Records.res:130:18 + addValueReference Records.res:133:4 --> Records.res:133:17 + addValueReference Records.res:136:4 --> Records.res:136:18 + addRecordLabelDeclaration type_ Records.res:140:2 path:+Records.myRecBsAs + addTypeReference Records.res:145:38 --> Records.res:140:2 + addValueReference Records.res:145:4 --> Records.res:145:21 + addValueReference Records.res:148:4 --> Records.res:148:22 + Scanning References.cmt Source:References.res + addValueDeclaration +create References.res:4:4 path:+References + addValueDeclaration +access References.res:7:4 path:+References + addValueDeclaration +update References.res:10:4 path:+References + addValueDeclaration +get References.res:17:2 path:+References.R + addValueDeclaration +make References.res:18:2 path:+References.R + addValueDeclaration +set References.res:19:2 path:+References.R + addValueDeclaration +get References.res:31:4 path:+References + addValueDeclaration +make References.res:34:4 path:+References + addValueDeclaration +set References.res:37:4 path:+References + addValueDeclaration +destroysRefIdentity References.res:43:4 path:+References + addValueDeclaration +preserveRefIdentity References.res:47:4 path:+References + addValueReference References.res:4:4 --> References.res:4:14 + addValueReference References.res:7:4 --> References.res:7:13 + addValueReference References.res:10:4 --> References.res:10:13 + addValueReference References.res:10:4 --> References.res:10:13 + addValueDeclaration +get References.res:22:6 path:+References.R + addValueReference References.res:22:6 --> References.res:22:12 + addValueDeclaration +make References.res:23:6 path:+References.R + addValueDeclaration +set References.res:24:6 path:+References.R + addValueReference References.res:24:6 --> References.res:24:16 + addValueReference References.res:24:6 --> References.res:24:13 + addValueReference References.res:31:4 --> References.res:17:2 + addValueReference References.res:34:4 --> References.res:18:2 + addValueReference References.res:37:4 --> References.res:19:2 + addRecordLabelDeclaration x References.res:39:27 path:+References.requiresConversion + addValueReference References.res:43:4 --> References.res:43:27 + addValueReference References.res:47:4 --> References.res:47:27 + addValueReference References.res:17:2 --> References.res:22:6 + addValueReference References.res:18:2 --> References.res:23:6 + addValueReference References.res:19:2 --> References.res:24:6 + Scanning RepeatedLabel.cmt Source:RepeatedLabel.res + addValueDeclaration +userData RepeatedLabel.res:12:4 path:+RepeatedLabel + addRecordLabelDeclaration a RepeatedLabel.res:2:2 path:+RepeatedLabel.userData + addRecordLabelDeclaration b RepeatedLabel.res:3:2 path:+RepeatedLabel.userData + addRecordLabelDeclaration a RepeatedLabel.res:7:2 path:+RepeatedLabel.tabState + addRecordLabelDeclaration b RepeatedLabel.res:8:2 path:+RepeatedLabel.tabState + addRecordLabelDeclaration f RepeatedLabel.res:9:2 path:+RepeatedLabel.tabState + addValueReference RepeatedLabel.res:12:4 --> RepeatedLabel.res:12:17 + addValueReference RepeatedLabel.res:12:4 --> RepeatedLabel.res:12:20 + addTypeReference RepeatedLabel.res:12:16 --> RepeatedLabel.res:7:2 + addTypeReference RepeatedLabel.res:12:16 --> RepeatedLabel.res:8:2 + addValueReference RepeatedLabel.res:14:7 --> RepeatedLabel.res:12:4 + Scanning RequireCond.cmt Source:RequireCond.res + Scanning Shadow.cmt Source:Shadow.res + addValueDeclaration +test Shadow.res:2:4 path:+Shadow + addValueDeclaration +test Shadow.res:5:4 path:+Shadow + addValueDeclaration +test Shadow.res:11:6 path:+Shadow.M + addValueDeclaration +test Shadow.res:9:6 path:+Shadow.M + Scanning TestDeadExn.cmt Source:TestDeadExn.res + Scanning TestEmitInnerModules.cmt Source:TestEmitInnerModules.res + addValueDeclaration +x TestEmitInnerModules.res:3:6 path:+TestEmitInnerModules.Inner + addValueDeclaration +y TestEmitInnerModules.res:5:6 path:+TestEmitInnerModules.Inner + addValueDeclaration +y TestEmitInnerModules.res:12:10 path:+TestEmitInnerModules.Outer.Medium.Inner + Scanning TestFirstClassModules.cmt Source:TestFirstClassModules.res + addValueDeclaration +convert TestFirstClassModules.res:2:4 path:+TestFirstClassModules + addValueDeclaration +convertInterface TestFirstClassModules.res:5:4 path:+TestFirstClassModules + addValueDeclaration +convertRecord TestFirstClassModules.res:8:4 path:+TestFirstClassModules + addValueDeclaration +convertFirstClassModuleWithTypeEquations TestFirstClassModules.res:27:4 path:+TestFirstClassModules + addValueReference TestFirstClassModules.res:2:4 --> TestFirstClassModules.res:2:15 + addValueReference TestFirstClassModules.res:5:4 --> TestFirstClassModules.res:5:24 + addValueReference TestFirstClassModules.res:8:4 --> TestFirstClassModules.res:8:21 + addValueReference TestFirstClassModules.res:27:4 --> TestFirstClassModules.res:29:2 + Scanning TestImmutableArray.cmt Source:TestImmutableArray.res + addValueDeclaration +testImmutableArrayGet TestImmutableArray.res:2:4 path:+TestImmutableArray + addValueDeclaration +testBeltArrayGet TestImmutableArray.res:12:4 path:+TestImmutableArray + addValueDeclaration +testBeltArraySet TestImmutableArray.res:17:4 path:+TestImmutableArray + addValueReference TestImmutableArray.res:2:4 --> TestImmutableArray.res:2:28 + addValueReference TestImmutableArray.res:2:4 --> ImmutableArray.resi:6:2 + addValueReference TestImmutableArray.res:12:4 --> TestImmutableArray.res:12:23 + addValueReference TestImmutableArray.res:17:4 --> TestImmutableArray.res:17:23 + Scanning TestImport.cmt Source:TestImport.res + addValueDeclaration +innerStuffContents TestImport.res:1:0 path:+TestImport + addValueDeclaration +innerStuffContentsAsEmptyObject TestImport.res:7:0 path:+TestImport + addValueDeclaration +innerStuffContents TestImport.res:13:4 path:+TestImport + addValueDeclaration +valueStartingWithUpperCaseLetter TestImport.res:15:0 path:+TestImport + addValueDeclaration +defaultValue TestImport.res:18:0 path:+TestImport + addValueDeclaration +make TestImport.res:24:0 path:+TestImport + addValueDeclaration +make TestImport.res:27:4 path:+TestImport + addValueDeclaration +defaultValue2 TestImport.res:29:0 path:+TestImport + addValueReference TestImport.res:13:4 --> TestImport.res:1:0 + addRecordLabelDeclaration text TestImport.res:22:16 path:+TestImport.message + addValueReference TestImport.res:27:4 --> TestImport.res:24:0 + Scanning TestInnedModuleTypes.cmt Source:TestInnedModuleTypes.res + addValueDeclaration +_ TestInnedModuleTypes.res:1:0 path:+TestInnedModuleTypes + addTypeReference TestInnedModuleTypes.res:1:8 --> InnerModuleTypes.resi:2:11 + Scanning TestModuleAliases.cmt Source:TestModuleAliases.res + addValueDeclaration +testInner1 TestModuleAliases.res:32:4 path:+TestModuleAliases + addValueDeclaration +testInner1Expanded TestModuleAliases.res:35:4 path:+TestModuleAliases + addValueDeclaration +testInner2 TestModuleAliases.res:38:4 path:+TestModuleAliases + addValueDeclaration +testInner2Expanded TestModuleAliases.res:41:4 path:+TestModuleAliases + addValueReference TestModuleAliases.res:32:4 --> TestModuleAliases.res:32:18 + addValueReference TestModuleAliases.res:35:4 --> TestModuleAliases.res:35:26 + addValueReference TestModuleAliases.res:38:4 --> TestModuleAliases.res:38:18 + addValueReference TestModuleAliases.res:41:4 --> TestModuleAliases.res:41:26 + Scanning TestOptArg.cmt Source:TestOptArg.res + addValueDeclaration +foo TestOptArg.res:3:4 path:+TestOptArg + addValueDeclaration +bar TestOptArg.res:5:4 path:+TestOptArg + addValueDeclaration +notSuppressesOptArgs TestOptArg.res:9:4 path:+TestOptArg + addValueDeclaration +liveSuppressesOptArgs TestOptArg.res:14:4 path:+TestOptArg + DeadOptionalArgs.addReferences OptArg.bar called with optional argNames:z argNamesMaybe: TestOptArg.res:1:7 + addValueReference TestOptArg.res:1:7 --> OptArg.resi:2:0 + addValueReference TestOptArg.res:3:4 --> TestOptArg.res:3:14 + addValueReference TestOptArg.res:3:4 --> TestOptArg.res:3:11 + addValueReference TestOptArg.res:3:4 --> TestOptArg.res:3:17 + DeadOptionalArgs.addReferences foo called with optional argNames:x argNamesMaybe: TestOptArg.res:5:16 + addValueReference TestOptArg.res:5:4 --> TestOptArg.res:3:4 + addValueReference TestOptArg.res:7:7 --> TestOptArg.res:5:4 + addValueReference TestOptArg.res:9:4 --> TestOptArg.res:9:31 + addValueReference TestOptArg.res:9:4 --> TestOptArg.res:9:37 + addValueReference TestOptArg.res:9:4 --> TestOptArg.res:9:43 + addValueReference TestOptArg.res:9:4 --> TestOptArg.res:9:28 + addValueReference TestOptArg.res:9:4 --> TestOptArg.res:9:34 + addValueReference TestOptArg.res:9:4 --> TestOptArg.res:9:40 + addValueReference TestOptArg.res:9:4 --> TestOptArg.res:9:46 + DeadOptionalArgs.addReferences notSuppressesOptArgs called with optional argNames: argNamesMaybe: TestOptArg.res:11:8 + addValueReference TestOptArg.res:11:8 --> TestOptArg.res:9:4 + addValueReference TestOptArg.res:14:4 --> TestOptArg.res:14:32 + addValueReference TestOptArg.res:14:4 --> TestOptArg.res:14:38 + addValueReference TestOptArg.res:14:4 --> TestOptArg.res:14:44 + addValueReference TestOptArg.res:14:4 --> TestOptArg.res:14:29 + addValueReference TestOptArg.res:14:4 --> TestOptArg.res:14:35 + addValueReference TestOptArg.res:14:4 --> TestOptArg.res:14:41 + addValueReference TestOptArg.res:14:4 --> TestOptArg.res:14:47 + DeadOptionalArgs.addReferences liveSuppressesOptArgs called with optional argNames:x argNamesMaybe: TestOptArg.res:16:8 + addValueReference TestOptArg.res:16:8 --> TestOptArg.res:14:4 + Scanning TestPromise.cmt Source:TestPromise.res + addValueDeclaration +convert TestPromise.res:14:4 path:+TestPromise + addRecordLabelDeclaration x TestPromise.res:6:2 path:+TestPromise.fromPayload + addRecordLabelDeclaration s TestPromise.res:7:2 path:+TestPromise.fromPayload + addRecordLabelDeclaration result TestPromise.res:11:18 path:+TestPromise.toPayload + addValueReference TestPromise.res:14:4 --> TestPromise.res:14:33 + addTypeReference TestPromise.res:14:32 --> TestPromise.res:7:2 + Scanning ToSuppress.cmt Source:ToSuppress.res + addValueDeclaration +toSuppress ToSuppress.res:1:4 path:+ToSuppress + Scanning TransitiveType1.cmt Source:TransitiveType1.res + addValueDeclaration +convert TransitiveType1.res:2:4 path:+TransitiveType1 + addValueDeclaration +convertAlias TransitiveType1.res:5:4 path:+TransitiveType1 + addValueReference TransitiveType1.res:2:4 --> TransitiveType1.res:2:15 + addValueReference TransitiveType1.res:5:4 --> TransitiveType1.res:5:20 + Scanning TransitiveType2.cmt Source:TransitiveType2.res + addValueDeclaration +convertT2 TransitiveType2.res:7:4 path:+TransitiveType2 + addValueReference TransitiveType2.res:7:4 --> TransitiveType2.res:7:17 + Scanning TransitiveType3.cmt Source:TransitiveType3.res + addValueDeclaration +convertT3 TransitiveType3.res:8:4 path:+TransitiveType3 + addRecordLabelDeclaration i TransitiveType3.res:3:2 path:+TransitiveType3.t3 + addRecordLabelDeclaration s TransitiveType3.res:4:2 path:+TransitiveType3.t3 + addValueReference TransitiveType3.res:8:4 --> TransitiveType3.res:8:17 + Scanning Tuples.cmt Source:Tuples.res + addValueDeclaration +testTuple Tuples.res:4:4 path:+Tuples + addValueDeclaration +origin Tuples.res:10:4 path:+Tuples + addValueDeclaration +computeArea Tuples.res:13:4 path:+Tuples + addValueDeclaration +computeAreaWithIdent Tuples.res:19:4 path:+Tuples + addValueDeclaration +computeAreaNoConverters Tuples.res:25:4 path:+Tuples + addValueDeclaration +coord2d Tuples.res:28:4 path:+Tuples + addValueDeclaration +getFirstName Tuples.res:43:4 path:+Tuples + addValueDeclaration +marry Tuples.res:46:4 path:+Tuples + addValueDeclaration +changeSecondAge Tuples.res:49:4 path:+Tuples + addValueReference Tuples.res:4:4 --> Tuples.res:4:18 + addValueReference Tuples.res:4:4 --> Tuples.res:4:21 + addValueReference Tuples.res:13:4 --> Tuples.res:13:20 + addValueReference Tuples.res:13:4 --> Tuples.res:13:23 + addValueReference Tuples.res:13:4 --> Tuples.res:13:26 + addValueReference Tuples.res:13:4 --> Tuples.res:15:31 + addValueReference Tuples.res:19:4 --> Tuples.res:19:29 + addValueReference Tuples.res:19:4 --> Tuples.res:19:32 + addValueReference Tuples.res:19:4 --> Tuples.res:19:35 + addValueReference Tuples.res:19:4 --> Tuples.res:21:31 + addValueReference Tuples.res:25:4 --> Tuples.res:25:32 + addValueReference Tuples.res:25:4 --> Tuples.res:25:40 + addValueReference Tuples.res:28:4 --> Tuples.res:28:15 + addValueReference Tuples.res:28:4 --> Tuples.res:28:18 + addRecordLabelDeclaration name Tuples.res:35:2 path:+Tuples.person + addRecordLabelDeclaration age Tuples.res:36:2 path:+Tuples.person + addTypeReference Tuples.res:43:49 --> Tuples.res:35:2 + addValueReference Tuples.res:43:4 --> Tuples.res:43:21 + addValueReference Tuples.res:46:4 --> Tuples.res:46:13 + addValueReference Tuples.res:46:4 --> Tuples.res:46:20 + addValueReference Tuples.res:49:4 --> Tuples.res:49:24 + addTypeReference Tuples.res:49:84 --> Tuples.res:36:2 + addValueReference Tuples.res:49:4 --> Tuples.res:49:31 + addValueReference Tuples.res:49:4 --> Tuples.res:49:31 + Scanning TypeParams1.cmt Source:TypeParams1.res + addValueDeclaration +exportSomething TypeParams1.res:4:4 path:+TypeParams1 + Scanning TypeParams2.cmt Source:TypeParams2.res + addValueDeclaration +exportSomething TypeParams2.res:10:4 path:+TypeParams2 + addRecordLabelDeclaration id TypeParams2.res:2:13 path:+TypeParams2.item + Scanning TypeParams3.cmt Source:TypeParams3.res + addValueDeclaration +test TypeParams3.res:2:4 path:+TypeParams3 + addValueDeclaration +test2 TypeParams3.res:5:4 path:+TypeParams3 + addValueReference TypeParams3.res:2:4 --> TypeParams3.res:2:12 + addValueReference TypeParams3.res:5:4 --> TypeParams3.res:5:13 + Scanning Types.cmt Source:Types.res + addValueDeclaration +someIntList Types.res:5:4 path:+Types + addValueDeclaration +map Types.res:8:4 path:+Types + addValueDeclaration +swap Types.res:23:8 path:+Types + addValueDeclaration +selfRecursiveConverter Types.res:42:4 path:+Types + addValueDeclaration +mutuallyRecursiveConverter Types.res:49:4 path:+Types + addValueDeclaration +testFunctionOnOptionsAsArgument Types.res:52:4 path:+Types + addValueDeclaration +jsStringT Types.res:60:4 path:+Types + addValueDeclaration +jsString2T Types.res:63:4 path:+Types + addValueDeclaration +jsonStringify Types.res:75:4 path:+Types + addValueDeclaration +testConvertNull Types.res:89:4 path:+Types + addValueDeclaration +testMarshalFields Types.res:109:4 path:+Types + addValueDeclaration +setMatch Types.res:125:4 path:+Types + addValueDeclaration +testInstantiateTypeParameter Types.res:135:4 path:+Types + addValueDeclaration +currentTime Types.res:144:4 path:+Types + addValueDeclaration +i64Const Types.res:153:4 path:+Types + addValueDeclaration +optFunction Types.res:156:4 path:+Types + addVariantCaseDeclaration A Types.res:12:2 path:+Types.typeWithVars + addVariantCaseDeclaration B Types.res:13:2 path:+Types.typeWithVars + addValueReference Types.res:23:8 --> Types.res:23:16 + addValueReference Types.res:23:8 --> Types.res:23:16 + addValueReference Types.res:23:8 --> Types.res:23:8 + addValueReference Types.res:23:8 --> Types.res:23:16 + addValueReference Types.res:23:8 --> Types.res:23:8 + addValueReference Types.res:23:8 --> Types.res:24:2 + addRecordLabelDeclaration self Types.res:31:26 path:+Types.selfRecursive + addRecordLabelDeclaration b Types.res:34:31 path:+Types.mutuallyRecursiveA + addRecordLabelDeclaration a Types.res:35:26 path:+Types.mutuallyRecursiveB + addValueReference Types.res:42:4 --> Types.res:42:31 + addTypeReference Types.res:42:30 --> Types.res:31:26 + addValueReference Types.res:49:4 --> Types.res:49:35 + addTypeReference Types.res:49:34 --> Types.res:34:31 + addValueReference Types.res:52:4 --> Types.res:52:39 + addValueReference Types.res:52:4 --> Types.res:52:54 + addVariantCaseDeclaration A Types.res:56:2 path:+Types.opaqueVariant + addVariantCaseDeclaration B Types.res:57:2 path:+Types.opaqueVariant + addRecordLabelDeclaration i Types.res:84:2 path:+Types.record + addRecordLabelDeclaration s Types.res:85:2 path:+Types.record + addValueReference Types.res:89:4 --> Types.res:89:23 + addValueReference Types.res:109:4 --> Types.res:109:39 + addValueReference Types.res:125:4 --> Types.res:125:16 + addRecordLabelDeclaration id Types.res:130:19 path:+Types.someRecord + addValueReference Types.res:135:4 --> Types.res:135:36 + addValueDeclaration +x Types.res:163:6 path:+Types.ObjectId + Scanning Unboxed.cmt Source:Unboxed.res + addValueDeclaration +testV1 Unboxed.res:8:4 path:+Unboxed + addValueDeclaration +r2Test Unboxed.res:17:4 path:+Unboxed + addVariantCaseDeclaration A Unboxed.res:2:10 path:+Unboxed.v1 + addVariantCaseDeclaration A Unboxed.res:5:10 path:+Unboxed.v2 + addValueReference Unboxed.res:8:4 --> Unboxed.res:8:14 + addRecordLabelDeclaration x Unboxed.res:11:11 path:+Unboxed.r1 + addRecordLabelDeclaration B.g Unboxed.res:14:13 path:+Unboxed.r2 + addVariantCaseDeclaration B Unboxed.res:14:10 path:+Unboxed.r2 + addValueReference Unboxed.res:17:4 --> Unboxed.res:17:14 + Scanning Uncurried.cmt Source:Uncurried.res + addValueDeclaration +uncurried0 Uncurried.res:14:4 path:+Uncurried + addValueDeclaration +uncurried1 Uncurried.res:17:4 path:+Uncurried + addValueDeclaration +uncurried2 Uncurried.res:20:4 path:+Uncurried + addValueDeclaration +uncurried3 Uncurried.res:23:4 path:+Uncurried + addValueDeclaration +curried3 Uncurried.res:26:4 path:+Uncurried + addValueDeclaration +callback Uncurried.res:29:4 path:+Uncurried + addValueDeclaration +callback2 Uncurried.res:35:4 path:+Uncurried + addValueDeclaration +callback2U Uncurried.res:38:4 path:+Uncurried + addValueDeclaration +sumU Uncurried.res:41:4 path:+Uncurried + addValueDeclaration +sumU2 Uncurried.res:44:4 path:+Uncurried + addValueDeclaration +sumCurried Uncurried.res:47:4 path:+Uncurried + addValueDeclaration +sumLblCurried Uncurried.res:53:4 path:+Uncurried + addValueReference Uncurried.res:17:4 --> Uncurried.res:17:20 + addValueReference Uncurried.res:20:4 --> Uncurried.res:20:20 + addValueReference Uncurried.res:20:4 --> Uncurried.res:20:23 + addValueReference Uncurried.res:23:4 --> Uncurried.res:23:20 + addValueReference Uncurried.res:23:4 --> Uncurried.res:23:23 + addValueReference Uncurried.res:23:4 --> Uncurried.res:23:26 + addValueReference Uncurried.res:26:4 --> Uncurried.res:26:16 + addValueReference Uncurried.res:26:4 --> Uncurried.res:26:19 + addValueReference Uncurried.res:26:4 --> Uncurried.res:26:22 + addValueReference Uncurried.res:29:4 --> Uncurried.res:29:15 + addRecordLabelDeclaration login Uncurried.res:31:13 path:+Uncurried.auth + addRecordLabelDeclaration loginU Uncurried.res:32:14 path:+Uncurried.authU + addTypeReference Uncurried.res:35:24 --> Uncurried.res:31:13 + addValueReference Uncurried.res:35:4 --> Uncurried.res:35:16 + addTypeReference Uncurried.res:38:25 --> Uncurried.res:32:14 + addValueReference Uncurried.res:38:4 --> Uncurried.res:38:17 + addValueReference Uncurried.res:41:4 --> Uncurried.res:41:17 + addValueReference Uncurried.res:41:4 --> Uncurried.res:41:14 + addValueReference Uncurried.res:41:4 --> Uncurried.res:41:17 + addValueReference Uncurried.res:44:4 --> Uncurried.res:44:20 + addValueReference Uncurried.res:44:4 --> Uncurried.res:44:15 + addValueReference Uncurried.res:44:4 --> Uncurried.res:44:20 + addValueReference Uncurried.res:47:4 --> Uncurried.res:49:2 + addValueReference Uncurried.res:47:4 --> Uncurried.res:47:17 + addValueReference Uncurried.res:47:4 --> Uncurried.res:49:2 + addValueReference Uncurried.res:47:4 --> Uncurried.res:47:17 + addValueReference Uncurried.res:53:4 --> Uncurried.res:55:3 + addValueReference Uncurried.res:53:4 --> Uncurried.res:53:32 + addValueReference Uncurried.res:53:4 --> Uncurried.res:55:3 + addValueReference Uncurried.res:53:4 --> Uncurried.res:53:21 + addValueReference Uncurried.res:53:4 --> Uncurried.res:53:32 + Scanning Unison.cmt Source:Unison.res + addValueDeclaration +group Unison.res:17:4 path:+Unison + addValueDeclaration +fits Unison.res:19:8 path:+Unison + addValueDeclaration +toString Unison.res:26:8 path:+Unison + addVariantCaseDeclaration IfNeed Unison.res:4:2 path:+Unison.break + addVariantCaseDeclaration Never Unison.res:5:2 path:+Unison.break + addVariantCaseDeclaration Always Unison.res:6:2 path:+Unison.break + addRecordLabelDeclaration break Unison.res:9:2 path:+Unison.t + addRecordLabelDeclaration doc Unison.res:10:2 path:+Unison.t + addVariantCaseDeclaration Empty Unison.res:14:2 path:+Unison.stack + addVariantCaseDeclaration Cons Unison.res:15:2 path:+Unison.stack + addValueReference Unison.res:17:4 --> Unison.res:17:20 + addTypeReference Unison.res:17:20 --> Unison.res:4:2 + addValueReference Unison.res:17:4 --> Unison.res:17:13 + addValueReference Unison.res:17:4 --> Unison.res:17:28 + addValueReference Unison.res:19:8 --> Unison.res:19:16 + addValueReference Unison.res:19:8 --> Unison.res:19:16 + addValueReference Unison.res:19:8 --> Unison.res:23:10 + addValueReference Unison.res:19:8 --> Unison.res:23:16 + addValueReference Unison.res:19:8 --> Unison.res:19:8 + addTypeReference Unison.res:23:9 --> Unison.res:10:2 + addValueReference Unison.res:19:8 --> Unison.res:19:19 + addValueReference Unison.res:26:8 --> Unison.res:26:20 + addValueReference Unison.res:26:8 --> Unison.res:28:23 + addValueReference Unison.res:26:8 --> Unison.res:19:8 + addValueReference Unison.res:26:8 --> Unison.res:26:20 + addValueReference Unison.res:26:8 --> Unison.res:28:23 + addValueReference Unison.res:26:8 --> Unison.res:26:8 + addValueReference Unison.res:26:8 --> Unison.res:28:17 + addValueReference Unison.res:26:8 --> Unison.res:26:20 + addValueReference Unison.res:26:8 --> Unison.res:28:23 + addValueReference Unison.res:26:8 --> Unison.res:26:8 + addValueReference Unison.res:26:8 --> Unison.res:28:17 + addValueReference Unison.res:26:8 --> Unison.res:26:20 + addValueReference Unison.res:26:8 --> Unison.res:28:23 + addValueReference Unison.res:26:8 --> Unison.res:26:8 + addValueReference Unison.res:26:8 --> Unison.res:28:10 + addTypeReference Unison.res:28:9 --> Unison.res:9:2 + addTypeReference Unison.res:28:9 --> Unison.res:10:2 + addValueReference Unison.res:26:8 --> Unison.res:26:28 + addTypeReference Unison.res:37:20 --> Unison.res:14:2 + addValueReference Unison.res:37:0 --> Unison.res:26:8 + addTypeReference Unison.res:38:20 --> Unison.res:15:2 + DeadOptionalArgs.addReferences group called with optional argNames:break argNamesMaybe: Unison.res:38:25 + addTypeReference Unison.res:38:38 --> Unison.res:5:2 + addValueReference Unison.res:38:25 --> Unison.res:17:4 + addTypeReference Unison.res:38:53 --> Unison.res:14:2 + addValueReference Unison.res:38:0 --> Unison.res:26:8 + addTypeReference Unison.res:39:20 --> Unison.res:15:2 + DeadOptionalArgs.addReferences group called with optional argNames:break argNamesMaybe: Unison.res:39:25 + addTypeReference Unison.res:39:38 --> Unison.res:6:2 + addValueReference Unison.res:39:25 --> Unison.res:17:4 + addTypeReference Unison.res:39:52 --> Unison.res:14:2 + addValueReference Unison.res:39:0 --> Unison.res:26:8 + Scanning UseImportJsValue.cmt Source:UseImportJsValue.res + addValueDeclaration +useGetProp UseImportJsValue.res:2:4 path:+UseImportJsValue + addValueDeclaration +useTypeImportedInOtherModule UseImportJsValue.res:5:4 path:+UseImportJsValue + addValueReference UseImportJsValue.res:2:4 --> UseImportJsValue.res:2:18 + addValueReference UseImportJsValue.res:2:4 --> ImportJsValue.res:37:2 + addValueReference UseImportJsValue.res:5:4 --> UseImportJsValue.res:5:36 + Scanning Variants.cmt Source:Variants.res + addValueDeclaration +isWeekend Variants.res:13:4 path:+Variants + addValueDeclaration +monday Variants.res:21:4 path:+Variants + addValueDeclaration +saturday Variants.res:23:4 path:+Variants + addValueDeclaration +sunday Variants.res:25:4 path:+Variants + addValueDeclaration +onlySunday Variants.res:28:4 path:+Variants + addValueDeclaration +swap Variants.res:31:4 path:+Variants + addValueDeclaration +testConvert Variants.res:45:4 path:+Variants + addValueDeclaration +fortytwoOK Variants.res:48:4 path:+Variants + addValueDeclaration +fortytwoBAD Variants.res:52:4 path:+Variants + addValueDeclaration +testConvert2 Variants.res:64:4 path:+Variants + addValueDeclaration +testConvert3 Variants.res:76:4 path:+Variants + addValueDeclaration +testConvert2to3 Variants.res:80:4 path:+Variants + addValueDeclaration +id1 Variants.res:89:4 path:+Variants + addValueDeclaration +id2 Variants.res:92:4 path:+Variants + addValueDeclaration +polyWithOpt Variants.res:98:4 path:+Variants + addValueDeclaration +restResult1 Variants.res:112:4 path:+Variants + addValueDeclaration +restResult2 Variants.res:115:4 path:+Variants + addValueDeclaration +restResult3 Variants.res:118:4 path:+Variants + addValueReference Variants.res:13:4 --> Variants.res:13:17 + addValueReference Variants.res:31:4 --> Variants.res:31:11 + addValueReference Variants.res:45:4 --> Variants.res:45:19 + addValueReference Variants.res:64:4 --> Variants.res:64:20 + addValueReference Variants.res:76:4 --> Variants.res:76:20 + addValueReference Variants.res:80:4 --> Variants.res:80:23 + addValueReference Variants.res:89:4 --> Variants.res:89:11 + addValueReference Variants.res:92:4 --> Variants.res:92:11 + addVariantCaseDeclaration Type Variants.res:95:13 path:+Variants.type_ + addValueReference Variants.res:98:4 --> Variants.res:98:18 + addValueReference Variants.res:98:4 --> Variants.res:98:18 + addValueReference Variants.res:98:4 --> Variants.res:98:18 + addVariantCaseDeclaration Ok Variants.res:102:2 path:+Variants.result1 + addVariantCaseDeclaration Error Variants.res:103:2 path:+Variants.result1 + addValueReference Variants.res:112:4 --> Variants.res:112:19 + addValueReference Variants.res:115:4 --> Variants.res:115:19 + addValueReference Variants.res:118:4 --> Variants.res:118:19 + Scanning VariantsWithPayload.cmt Source:VariantsWithPayload.res + addValueDeclaration +testWithPayload VariantsWithPayload.res:16:4 path:+VariantsWithPayload + addValueDeclaration +printVariantWithPayload VariantsWithPayload.res:19:4 path:+VariantsWithPayload + addValueDeclaration +testManyPayloads VariantsWithPayload.res:37:4 path:+VariantsWithPayload + addValueDeclaration +printManyPayloads VariantsWithPayload.res:40:4 path:+VariantsWithPayload + addValueDeclaration +testSimpleVariant VariantsWithPayload.res:54:4 path:+VariantsWithPayload + addValueDeclaration +testVariantWithPayloads VariantsWithPayload.res:65:4 path:+VariantsWithPayload + addValueDeclaration +printVariantWithPayloads VariantsWithPayload.res:68:4 path:+VariantsWithPayload + addValueDeclaration +testVariant1Int VariantsWithPayload.res:93:4 path:+VariantsWithPayload + addValueDeclaration +testVariant1Object VariantsWithPayload.res:99:4 path:+VariantsWithPayload + addRecordLabelDeclaration x VariantsWithPayload.res:2:2 path:+VariantsWithPayload.payload + addRecordLabelDeclaration y VariantsWithPayload.res:3:2 path:+VariantsWithPayload.payload + addValueReference VariantsWithPayload.res:16:4 --> VariantsWithPayload.res:16:23 + addTypeReference VariantsWithPayload.res:26:57 --> VariantsWithPayload.res:2:2 + addValueReference VariantsWithPayload.res:19:4 --> VariantsWithPayload.res:26:7 + addTypeReference VariantsWithPayload.res:26:74 --> VariantsWithPayload.res:3:2 + addValueReference VariantsWithPayload.res:19:4 --> VariantsWithPayload.res:26:7 + addValueReference VariantsWithPayload.res:19:4 --> VariantsWithPayload.res:19:31 + addValueReference VariantsWithPayload.res:37:4 --> VariantsWithPayload.res:37:24 + addValueReference VariantsWithPayload.res:40:4 --> VariantsWithPayload.res:42:9 + addValueReference VariantsWithPayload.res:40:4 --> VariantsWithPayload.res:43:9 + addValueReference VariantsWithPayload.res:40:4 --> VariantsWithPayload.res:43:13 + addTypeReference VariantsWithPayload.res:44:55 --> VariantsWithPayload.res:2:2 + addValueReference VariantsWithPayload.res:40:4 --> VariantsWithPayload.res:44:11 + addTypeReference VariantsWithPayload.res:44:72 --> VariantsWithPayload.res:3:2 + addValueReference VariantsWithPayload.res:40:4 --> VariantsWithPayload.res:44:11 + addValueReference VariantsWithPayload.res:40:4 --> VariantsWithPayload.res:40:25 + addVariantCaseDeclaration A VariantsWithPayload.res:49:2 path:+VariantsWithPayload.simpleVariant + addVariantCaseDeclaration B VariantsWithPayload.res:50:2 path:+VariantsWithPayload.simpleVariant + addVariantCaseDeclaration C VariantsWithPayload.res:51:2 path:+VariantsWithPayload.simpleVariant + addValueReference VariantsWithPayload.res:54:4 --> VariantsWithPayload.res:54:25 + addVariantCaseDeclaration A VariantsWithPayload.res:58:2 path:+VariantsWithPayload.variantWithPayloads + addVariantCaseDeclaration B VariantsWithPayload.res:59:2 path:+VariantsWithPayload.variantWithPayloads + addVariantCaseDeclaration C VariantsWithPayload.res:60:2 path:+VariantsWithPayload.variantWithPayloads + addVariantCaseDeclaration D VariantsWithPayload.res:61:2 path:+VariantsWithPayload.variantWithPayloads + addVariantCaseDeclaration E VariantsWithPayload.res:62:2 path:+VariantsWithPayload.variantWithPayloads + addValueReference VariantsWithPayload.res:65:4 --> VariantsWithPayload.res:65:31 + addValueReference VariantsWithPayload.res:68:4 --> VariantsWithPayload.res:71:6 + addValueReference VariantsWithPayload.res:68:4 --> VariantsWithPayload.res:72:6 + addValueReference VariantsWithPayload.res:68:4 --> VariantsWithPayload.res:72:9 + addValueReference VariantsWithPayload.res:68:4 --> VariantsWithPayload.res:77:7 + addValueReference VariantsWithPayload.res:68:4 --> VariantsWithPayload.res:77:10 + addValueReference VariantsWithPayload.res:68:4 --> VariantsWithPayload.res:82:6 + addValueReference VariantsWithPayload.res:68:4 --> VariantsWithPayload.res:82:9 + addValueReference VariantsWithPayload.res:68:4 --> VariantsWithPayload.res:82:12 + addValueReference VariantsWithPayload.res:68:4 --> VariantsWithPayload.res:68:31 + addVariantCaseDeclaration R VariantsWithPayload.res:90:19 path:+VariantsWithPayload.variant1Int + addValueReference VariantsWithPayload.res:93:4 --> VariantsWithPayload.res:93:23 + addVariantCaseDeclaration R VariantsWithPayload.res:96:22 path:+VariantsWithPayload.variant1Object + addValueReference VariantsWithPayload.res:99:4 --> VariantsWithPayload.res:99:26 + Implementation 0 + Implementation 0 + Implementation 0 + addValueReference TestDeadExn.res:1:7 --> DeadExn.res:1:0 + +File References + + AutoAnnotate.res -->> + BootloaderResource.res -->> + BucklescriptAnnotations.res -->> + ComponentAsProp.res -->> React.res + CreateErrorHandler1.res -->> ErrorHandler.resi + CreateErrorHandler2.res -->> + DeadCodeImplementation.res -->> + DeadCodeInterface.res -->> + DeadExn.res -->> + DeadExn.resi -->> + DeadRT.res -->> + DeadRT.resi -->> + DeadTest.res -->> React.res, DeadValueTest.resi, DynamicallyLoadedComponent.res, ImmutableArray.resi + DeadTestBlacklist.res -->> + DeadTestWithInterface.res -->> + DeadTypeTest.res -->> + DeadTypeTest.resi -->> DeadTypeTest.res + DeadValueTest.res -->> + DeadValueTest.resi -->> DeadValueTest.res + Docstrings.res -->> + DynamicallyLoadedComponent.res -->> React.res + EmptyArray.res -->> + ErrorHandler.res -->> + ErrorHandler.resi -->> ErrorHandler.res + EverythingLiveHere.res -->> + FirstClassModules.res -->> + FirstClassModulesInterface.res -->> + FirstClassModulesInterface.resi -->> FirstClassModulesInterface.res + Hooks.res -->> React.res, ImportHookDefault.res, ImportHooks.res + IgnoreInterface.res -->> + IgnoreInterface.resi -->> + ImmutableArray.res -->> + ImmutableArray.resi -->> ImmutableArray.res + ImportHookDefault.res -->> + ImportHooks.res -->> + ImportIndex.res -->> + ImportJsValue.res -->> + ImportMyBanner.res -->> + InnerModuleTypes.res -->> + InnerModuleTypes.resi -->> + JSResource.res -->> + JsxV4.res -->> React.res + LetPrivate.res -->> + ModuleAliases.res -->> + ModuleAliases2.res -->> + ModuleExceptionBug.res -->> + NestedModules.res -->> + NestedModulesInSignature.res -->> + NestedModulesInSignature.resi -->> NestedModulesInSignature.res + Newsyntax.res -->> + Newton.res -->> + Opaque.res -->> + OptArg.res -->> + OptArg.resi -->> OptArg.res + Records.res -->> + References.res -->> + RepeatedLabel.res -->> + RequireCond.res -->> + Shadow.res -->> + TestDeadExn.res -->> DeadExn.res + TestEmitInnerModules.res -->> + TestFirstClassModules.res -->> + TestImmutableArray.res -->> ImmutableArray.resi + TestImport.res -->> + TestInnedModuleTypes.res -->> + TestModuleAliases.res -->> + TestOptArg.res -->> OptArg.resi + TestPromise.res -->> + ToSuppress.res -->> + TransitiveType1.res -->> + TransitiveType2.res -->> + TransitiveType3.res -->> + Tuples.res -->> + TypeParams1.res -->> + TypeParams2.res -->> + TypeParams3.res -->> + Types.res -->> + Unboxed.res -->> + Uncurried.res -->> + Unison.res -->> + UseImportJsValue.res -->> ImportJsValue.res + Variants.res -->> + VariantsWithPayload.res -->> + Dead VariantCase +AutoAnnotate.annotatedVariant.R4: 0 references () [0] + Dead VariantCase +AutoAnnotate.annotatedVariant.R2: 0 references () [0] + Dead RecordLabel +AutoAnnotate.r4.r4: 0 references () [0] + Dead RecordLabel +AutoAnnotate.r3.r3: 0 references () [0] + Dead RecordLabel +AutoAnnotate.r2.r2: 0 references () [0] + Dead RecordLabel +AutoAnnotate.record.variant: 0 references () [0] + Dead VariantCase +AutoAnnotate.variant.R: 0 references () [0] + Dead Value +BucklescriptAnnotations.+bar: 0 references () [1] + Dead Value +BucklescriptAnnotations.+f: 0 references () [0] + Live RecordLabel +ComponentAsProp.props.button: 1 references (_none_:1:-1) [0] + Live RecordLabel +ComponentAsProp.props.description: 1 references (_none_:1:-1) [0] + Live RecordLabel +ComponentAsProp.props.title: 1 references (_none_:1:-1) [0] + Live Value +ComponentAsProp.+make: 0 references () [0] + Live Value +CreateErrorHandler1.Error1.+notification: 1 references (ErrorHandler.resi:3:2) [0] + Live Value +CreateErrorHandler2.Error2.+notification: 1 references (ErrorHandler.resi:3:2) [0] + Live Value +DeadCodeImplementation.M.+x: 1 references (DeadCodeInterface.res:2:2) [0] + Dead Value +DeadRT.+emitModuleAccessPath: 0 references () [0] + Live VariantCase +DeadRT.moduleAccessPath.Kaboom: 1 references (DeadRT.res:11:16) [0] + Live VariantCase DeadRT.moduleAccessPath.Root: 1 references (DeadTest.res:98:16) [1] + Live VariantCase +DeadRT.moduleAccessPath.Root: 1 references (DeadRT.resi:2:2) [0] + Live VariantCase DeadRT.moduleAccessPath.Kaboom: 1 references (DeadRT.res:3:2) [0] + Dead RecordLabel +DeadTest.inlineRecord3.IR3.b: 0 references () [0] + Dead RecordLabel +DeadTest.inlineRecord3.IR3.a: 0 references () [0] + Dead VariantCase +DeadTest.inlineRecord3.IR3: 0 references () [0] + Dead RecordLabel +DeadTest.inlineRecord2.IR2.b: 0 references () [0] + Dead RecordLabel +DeadTest.inlineRecord2.IR2.a: 0 references () [0] + Dead VariantCase +DeadTest.inlineRecord2.IR2: 0 references () [0] + Dead Value +DeadTest.+_: 0 references () [0] + Live Value +DeadTest.+ira: 1 references (DeadTest.res:163:27) [0] + Live RecordLabel +DeadTest.inlineRecord.IR.e: 0 references () [0] + Dead RecordLabel +DeadTest.inlineRecord.IR.d: 0 references () [0] + Live RecordLabel +DeadTest.inlineRecord.IR.c: 1 references (DeadTest.res:163:7) [0] + Live RecordLabel +DeadTest.inlineRecord.IR.b: 1 references (DeadTest.res:163:35) [0] + Dead RecordLabel +DeadTest.inlineRecord.IR.a: 0 references () [0] + Live VariantCase +DeadTest.inlineRecord.IR: 1 references (DeadTest.res:163:20) [0] + Dead Value +DeadTest.+_: 0 references () [0] + Live Value +DeadTest.+deadIncorrect: 1 references (DeadTest.res:156:8) [0] + Dead RecordLabel +DeadTest.rc.a: 0 references () [0] + Dead Value +DeadTest.+funWithInnerVars: 0 references () [1] + Dead Value +DeadTest.+y: 0 references () [0] + Dead Value +DeadTest.+x: 0 references () [0] + Live VariantCase +DeadTest.WithInclude.t.A: 1 references (DeadTest.res:142:7) [1] + Live VariantCase +DeadTest.WithInclude.t.A: 1 references (DeadTest.res:134:11) [0] + Live Value +DeadTest.GloobLive.+globallyLive3: 0 references () [0] + Live Value +DeadTest.GloobLive.+globallyLive2: 0 references () [0] + Live Value +DeadTest.GloobLive.+globallyLive1: 0 references () [0] + Dead Value +DeadTest.+stringLengthNoSideEffects: 0 references () [0] + Dead Value +DeadTest.+theSideEffectIsLogging: 0 references () [0] + Live RecordLabel +DeadTest.props.s: 1 references (_none_:1:-1) [0] + Live Value +DeadTest.+make: 1 references (DeadTest.res:119:16) [0] + Dead Value +DeadTest.+deadRef: 0 references () [0] + Dead Value +DeadTest.+second: 0 references () [0] + Dead Value +DeadTest.+a3: 0 references () [0] + Dead Value +DeadTest.+a2: 0 references () [0] + Dead Value +DeadTest.+a1: 0 references () [0] + Dead Value +DeadTest.+zzz: 0 references () [0] + Dead Value +DeadTest.+withDefaultValue: 0 references () [0] + Dead Value +DeadTest.+bar: 0 references () [0] + Dead Value +DeadTest.+foo: 0 references () [1] + Dead Value +DeadTest.+cb: 0 references () [0] + Dead Value +DeadTest.+cb: 0 references () [0] + Dead Value +DeadTest.+recWithCallback: 0 references () [0] + Dead Value +DeadTest.+rec2: 0 references () [0] + Dead Value +DeadTest.+rec1: 0 references () [0] + Dead Value +DeadTest.+split_map: 0 references () [0] + Dead Value +DeadTest.+unusedRec: 0 references () [0] + Dead Value +DeadTest.MM.+valueOnlyInImplementation: 0 references () [0] + Live Value +DeadTest.MM.+x: 1 references (DeadTest.res:69:9) [1] + Live Value +DeadTest.MM.+x: 1 references (DeadTest.res:60:2) [0] + Dead Value +DeadTest.MM.+y: 0 references () [1] + Live Value +DeadTest.MM.+y: 1 references (DeadTest.res:64:6) [0] + Dead Value +DeadTest.UnderscoreInside.+_: 0 references () [0] + Dead Value +DeadTest.+_: 0 references () [0] + Dead Value +DeadTest.+_: 0 references () [0] + Live RecordLabel +DeadTest.record.yyy: 1 references (DeadTest.res:53:9) [0] + Live RecordLabel +DeadTest.record.xxx: 1 references (DeadTest.res:52:13) [0] + Dead Value +DeadTest.+_: 0 references () [0] + Dead Value +DeadTest.+_: 0 references () [0] + Live Value +DeadTest.VariantUsedOnlyInImplementation.+a: 1 references (DeadTest.res:42:17) [1] + Live Value +DeadTest.VariantUsedOnlyInImplementation.+a: 1 references (DeadTest.res:36:2) [0] + Live VariantCase +DeadTest.VariantUsedOnlyInImplementation.t.A: 1 references (DeadTest.res:39:10) [0] + Live VariantCase +DeadTest.VariantUsedOnlyInImplementation.t.A: 1 references (DeadTest.res:38:11) [0] + Dead Value +DeadTest.M.+thisSignatureItemIsDead: 0 references () [1] + Dead Value +DeadTest.M.+thisSignatureItemIsDead: 0 references () [0] + Dead Value +DeadTest.Inner.+thisIsAlsoMarkedDead: 0 references () [0] + Live Value +DeadTest.+thisIsMarkedLive: 0 references () [0] + Live Value +DeadTest.+thisIsKeptAlive: 1 references (DeadTest.res:20:4) [0] + Dead Value +DeadTest.+thisIsMarkedDead: 0 references () [0] + Live Value +DeadTest.+thisIsUsedTwice: 2 references (DeadTest.res:11:7, DeadTest.res:12:7) [0] + Live Value +DeadTest.+thisIsUsedOnce: 1 references (DeadTest.res:8:7) [0] + Live Value +DeadTest.+fortyTwoButExported: 0 references () [0] + Dead Value +DeadTest.+fortytwo: 0 references () [0] + Dead Value +DeadTestBlacklist.+x: 0 references () [0] + Dead Value +DeadTestWithInterface.Ext_buffer.+x: 0 references () [1] + Dead Value +DeadTestWithInterface.Ext_buffer.+x: 0 references () [0] + Dead VariantCase DeadTypeTest.deadType.InNeither: 0 references () [0] + Live VariantCase +DeadTypeTest.deadType.InBoth: 1 references (DeadTypeTest.res:13:8) [1] + Live VariantCase DeadTypeTest.deadType.InBoth: 2 references (DeadTest.res:45:8, DeadTypeTest.res:9:2) [0] + Live VariantCase DeadTypeTest.deadType.OnlyInInterface: 1 references (DeadTest.res:44:8) [0] + Live VariantCase +DeadTypeTest.deadType.OnlyInImplementation: 1 references (DeadTypeTest.res:12:8) [1] + Live VariantCase DeadTypeTest.deadType.OnlyInImplementation: 1 references (DeadTypeTest.res:7:2) [0] + Dead Value DeadTypeTest.+a: 0 references () [0] + Dead VariantCase DeadTypeTest.t.B: 0 references () [0] + Live VariantCase +DeadTypeTest.t.A: 1 references (DeadTypeTest.res:4:8) [1] + Live VariantCase DeadTypeTest.t.A: 1 references (DeadTypeTest.res:2:2) [0] + Live Value +Docstrings.+unitArgWithConversionU: 0 references () [0] + Live Value +Docstrings.+unitArgWithConversion: 0 references () [0] + Dead VariantCase +Docstrings.t.B: 0 references () [0] + Live VariantCase +Docstrings.t.A: 2 references (Docstrings.res:64:34, Docstrings.res:67:39) [0] + Live Value +Docstrings.+unitArgWithoutConversionU: 0 references () [0] + Live Value +Docstrings.+unitArgWithoutConversion: 0 references () [0] + Live Value +Docstrings.+grouped: 0 references () [0] + Live Value +Docstrings.+unnamed2U: 0 references () [0] + Live Value +Docstrings.+unnamed2: 0 references () [0] + Live Value +Docstrings.+unnamed1U: 0 references () [0] + Live Value +Docstrings.+unnamed1: 0 references () [0] + Live Value +Docstrings.+useParamU: 0 references () [0] + Live Value +Docstrings.+useParam: 0 references () [0] + Live Value +Docstrings.+treeU: 0 references () [0] + Live Value +Docstrings.+twoU: 0 references () [0] + Live Value +Docstrings.+oneU: 0 references () [0] + Live Value +Docstrings.+tree: 0 references () [0] + Live Value +Docstrings.+two: 0 references () [0] + Live Value +Docstrings.+one: 0 references () [0] + Live Value +Docstrings.+signMessage: 0 references () [0] + Live Value +Docstrings.+flat: 0 references () [0] + Live Value +EmptyArray.Z.+make: 1 references (EmptyArray.res:10:9) [0] + Dead Value +EverythingLiveHere.+z: 0 references () [0] + Dead Value +EverythingLiveHere.+y: 0 references () [0] + Dead Value +EverythingLiveHere.+x: 0 references () [0] + Live Value +FirstClassModules.+someFunctorAsFunction: 0 references () [0] + Live Value +FirstClassModules.SomeFunctor.+ww: 1 references (FirstClassModules.res:57:2) [0] + Live Value +FirstClassModules.+testConvert: 0 references () [0] + Live Value +FirstClassModules.+firstClassModule: 0 references () [0] + Live Value +FirstClassModules.M.+x: 1 references (FirstClassModules.res:2:2) [0] + Live Value +FirstClassModules.M.Z.+u: 1 references (FirstClassModules.res:37:4) [0] + Live Value +FirstClassModules.M.InnerModule3.+k3: 1 references (FirstClassModules.res:14:4) [0] + Live Value +FirstClassModules.M.InnerModule2.+k: 1 references (FirstClassModules.res:10:4) [0] + Live Value +FirstClassModules.M.+y: 1 references (FirstClassModules.res:20:2) [0] + Dead Value FirstClassModulesInterface.+r: 0 references () [0] + Dead RecordLabel FirstClassModulesInterface.record.y: 0 references () [0] + Dead RecordLabel FirstClassModulesInterface.record.x: 0 references () [0] + Live Value +Hooks.RenderPropRequiresConversion.+car: 1 references (Hooks.res:65:30) [0] + Live RecordLabel +Hooks.RenderPropRequiresConversion.props.renderVehicle: 1 references (_none_:1:-1) [0] + Live Value +Hooks.RenderPropRequiresConversion.+make: 0 references () [0] + Dead RecordLabel +Hooks.r.x: 0 references () [0] + Live Value +Hooks.+functionWithRenamedArgs: 0 references () [0] + Live Value +Hooks.NoProps.+make: 0 references () [0] + Live RecordLabel +Hooks.Inner.Inner2.props.vehicle: 1 references (_none_:1:-1) [0] + Live Value +Hooks.Inner.Inner2.+make: 0 references () [0] + Live RecordLabel +Hooks.Inner.props.vehicle: 1 references (_none_:1:-1) [0] + Live Value +Hooks.Inner.+make: 0 references () [0] + Live Value +Hooks.+default: 0 references () [0] + Live RecordLabel +Hooks.props.vehicle: 1 references (_none_:1:-1) [0] + Live Value +Hooks.+make: 1 references (Hooks.res:25:4) [0] + Live RecordLabel +Hooks.vehicle.name: 5 references (Hooks.res:10:29, Hooks.res:29:66, Hooks.res:33:68, Hooks.res:47:2, Hooks.res:47:14) [0] + Live RecordLabel +ImportIndex.props.method: 0 references () [0] + Live Value +ImportIndex.+make: 0 references () [0] + Dead Value +ImportMyBanner.+make: 0 references () [0] + Live Value +ImportMyBanner.+make: 0 references () [0] + Dead RecordLabel +ImportMyBanner.message.text: 0 references () [0] + Live VariantCase InnerModuleTypes.I.t.Foo: 1 references (TestInnedModuleTypes.res:1:8) [1] + Live VariantCase +InnerModuleTypes.I.t.Foo: 1 references (InnerModuleTypes.resi:2:11) [0] + Live Value +JsxV4.C.+make: 1 references (JsxV4.res:7:9) [0] + Live Value +LetPrivate.+y: 0 references () [0] + Live Value +LetPrivate.local_1.+x: 1 references (LetPrivate.res:7:4) [0] + Live Value +ModuleAliases.+testInner2: 0 references () [0] + Live Value +ModuleAliases.+testInner: 0 references () [0] + Live Value +ModuleAliases.+testNested: 0 references () [0] + Dead RecordLabel +ModuleAliases.Outer2.Inner2.InnerNested.t.nested: 0 references () [0] + Dead RecordLabel +ModuleAliases.Outer.Inner.innerT.inner: 0 references () [0] + Dead Value +ModuleAliases2.+q: 0 references () [0] + Dead RecordLabel +ModuleAliases2.Outer.Inner.inner.inner: 0 references () [0] + Dead RecordLabel +ModuleAliases2.Outer.outer.outer: 0 references () [0] + Dead RecordLabel +ModuleAliases2.record.y: 0 references () [0] + Dead RecordLabel +ModuleAliases2.record.x: 0 references () [0] + Live Value +ModuleExceptionBug.+ddjdj: 1 references (ModuleExceptionBug.res:8:7) [0] + Dead Exception +ModuleExceptionBug.MyOtherException: 0 references () [0] + Dead Value +ModuleExceptionBug.Dep.+customDouble: 0 references () [0] + Live Value +NestedModules.Universe.+someString: 0 references () [0] + Dead VariantCase +NestedModules.Universe.variant.B: 0 references () [0] + Dead VariantCase +NestedModules.Universe.variant.A: 0 references () [0] + Live Value +NestedModules.Universe.Nested2.+nested2Function: 0 references () [0] + Live Value +NestedModules.Universe.Nested2.Nested3.+nested3Function: 0 references () [0] + Live Value +NestedModules.Universe.Nested2.Nested3.+nested3Value: 0 references () [0] + Dead Value +NestedModules.Universe.Nested2.Nested3.+w: 0 references () [0] + Dead Value +NestedModules.Universe.Nested2.Nested3.+z: 0 references () [0] + Dead Value +NestedModules.Universe.Nested2.Nested3.+y: 0 references () [0] + Dead Value +NestedModules.Universe.Nested2.Nested3.+x: 0 references () [0] + Dead Value +NestedModules.Universe.Nested2.+y: 0 references () [0] + Live Value +NestedModules.Universe.Nested2.+nested2Value: 0 references () [0] + Dead Value +NestedModules.Universe.Nested2.+x: 0 references () [0] + Dead Value +NestedModules.Universe.+notExported: 0 references () [0] + Live Value +NestedModules.Universe.+theAnswer: 0 references () [0] + Live Value +NestedModules.+notNested: 0 references () [0] + Live Value NestedModulesInSignature.Universe.+theAnswer: 0 references () [0] + Dead RecordLabel +Newsyntax.record2.yy: 0 references () [0] + Dead RecordLabel +Newsyntax.record2.xx: 0 references () [0] + Dead VariantCase +Newsyntax.variant.C: 0 references () [0] + Dead VariantCase +Newsyntax.variant.B: 0 references () [0] + Dead VariantCase +Newsyntax.variant.A: 0 references () [0] + Dead RecordLabel +Newsyntax.record.yyy: 0 references () [0] + Dead RecordLabel +Newsyntax.record.xxx: 0 references () [0] + Dead Value +Newsyntax.+y: 0 references () [0] + Dead Value +Newsyntax.+x: 0 references () [0] + Live Value +Newton.+result: 2 references (Newton.res:31:8, Newton.res:31:18) [0] + Live Value +Newton.+fPrimed: 1 references (Newton.res:29:4) [0] + Live Value +Newton.+f: 2 references (Newton.res:29:4, Newton.res:31:16) [0] + Live Value +Newton.+newton: 1 references (Newton.res:29:4) [2] + Live Value +Newton.+loop: 1 references (Newton.res:6:4) [1] + Live Value +Newton.+next: 1 references (Newton.res:14:10) [0] + Live Value +Newton.+previous: 2 references (Newton.res:14:10, Newton.res:16:8) [0] + Live Value +Newton.+iterateMore: 1 references (Newton.res:14:10) [1] + Live Value +Newton.+delta: 1 references (Newton.res:8:6) [0] + Live Value +Newton.+current: 3 references (Newton.res:8:6, Newton.res:14:10, Newton.res:15:8) [0] + Live Value +Newton.+/: 1 references (Newton.res:16:8) [0] + Live Value +Newton.+*: 2 references (Newton.res:25:4, Newton.res:27:4) [0] + Live Value +Newton.++: 1 references (Newton.res:25:4) [0] + Live Value +Newton.+-: 4 references (Newton.res:9:8, Newton.res:16:8, Newton.res:25:4, Newton.res:27:4) [0] + Live Value +Opaque.+testConvertNestedRecordFromOtherFile: 0 references () [0] + Live Value +Opaque.+noConversion: 0 references () [0] + Dead VariantCase +Opaque.opaqueFromRecords.A: 0 references () [0] + Live Value +Records.+testMyRecBsAs2: 0 references () [0] + Live Value +Records.+testMyRecBsAs: 0 references () [0] + Live RecordLabel +Records.myRecBsAs.type_: 1 references (Records.res:145:38) [0] + Live Value +Records.+testMyObj2: 0 references () [0] + Live Value +Records.+testMyObj: 0 references () [0] + Live Value +Records.+testMyRec2: 0 references () [0] + Live Value +Records.+testMyRec: 0 references () [0] + Live RecordLabel +Records.myRec.type_: 1 references (Records.res:127:30) [0] + Live Value +Records.+computeArea4: 0 references () [0] + Live Value +Records.+computeArea3: 0 references () [0] + Live Value +Records.+someBusiness2: 0 references () [0] + Live Value +Records.+findAddress2: 0 references () [0] + Live RecordLabel +Records.business2.address2: 1 references (Records.res:97:2) [0] + Dead RecordLabel +Records.business2.owner: 0 references () [0] + Dead RecordLabel +Records.business2.name: 0 references () [0] + Live Value +Records.+getPayloadRecordPlusOne: 0 references () [0] + Live Value +Records.+payloadValue: 0 references () [0] + Live Value +Records.+recordValue: 1 references (Records.res:80:4) [0] + Live Value +Records.+getPayloadRecord: 0 references () [0] + Dead RecordLabel +Records.record.w: 0 references () [0] + Live RecordLabel +Records.record.v: 1 references (Records.res:85:5) [0] + Live Value +Records.+getPayload: 0 references () [0] + Live RecordLabel +Records.payload.payload: 3 references (Records.res:65:18, Records.res:74:24, Records.res:83:31) [0] + Dead RecordLabel +Records.payload.num: 0 references () [0] + Live Value +Records.+findAllAddresses: 0 references () [0] + Live Value +Records.+someBusiness: 0 references () [0] + Live Value +Records.+findAddress: 0 references () [0] + Live Value +Records.+getOpt: 3 references (Records.res:39:4, Records.res:46:4, Records.res:96:4) [0] + Live RecordLabel +Records.business.address: 2 references (Records.res:40:2, Records.res:50:6) [0] + Live RecordLabel +Records.business.owner: 1 references (Records.res:51:6) [0] + Dead RecordLabel +Records.business.name: 0 references () [0] + Live RecordLabel +Records.person.address: 1 references (Records.res:51:42) [0] + Dead RecordLabel +Records.person.age: 0 references () [0] + Dead RecordLabel +Records.person.name: 0 references () [0] + Live Value +Records.+coord2d: 0 references () [0] + Live Value +Records.+computeArea: 0 references () [0] + Live Value +Records.+origin: 0 references () [0] + Live RecordLabel +Records.coord.z: 1 references (Records.res:14:19) [0] + Live RecordLabel +Records.coord.y: 1 references (Records.res:14:19) [0] + Live RecordLabel +Records.coord.x: 1 references (Records.res:14:19) [0] + Live Value +References.+preserveRefIdentity: 0 references () [0] + Live Value +References.+destroysRefIdentity: 0 references () [0] + Dead RecordLabel +References.requiresConversion.x: 0 references () [0] + Live Value +References.+set: 0 references () [0] + Live Value +References.+make: 0 references () [0] + Live Value +References.+get: 0 references () [0] + Live Value +References.R.+set: 1 references (References.res:37:4) [1] + Live Value +References.R.+set: 1 references (References.res:19:2) [0] + Live Value +References.R.+make: 1 references (References.res:34:4) [1] + Live Value +References.R.+make: 1 references (References.res:18:2) [0] + Live Value +References.R.+get: 1 references (References.res:31:4) [1] + Live Value +References.R.+get: 1 references (References.res:17:2) [0] + Live Value +References.+update: 0 references () [0] + Live Value +References.+access: 0 references () [0] + Live Value +References.+create: 0 references () [0] + Live Value +RepeatedLabel.+userData: 1 references (RepeatedLabel.res:14:7) [0] + Dead RecordLabel +RepeatedLabel.tabState.f: 0 references () [0] + Live RecordLabel +RepeatedLabel.tabState.b: 1 references (RepeatedLabel.res:12:16) [0] + Live RecordLabel +RepeatedLabel.tabState.a: 1 references (RepeatedLabel.res:12:16) [0] + Dead RecordLabel +RepeatedLabel.userData.b: 0 references () [0] + Dead RecordLabel +RepeatedLabel.userData.a: 0 references () [0] + Dead Value +Shadow.M.+test: 0 references () [0] + Live Value +Shadow.M.+test: 0 references () [0] + Live Value +Shadow.+test: 0 references () [0] + Live Value +Shadow.+test: 0 references () [0] + Live Value +TestEmitInnerModules.Outer.Medium.Inner.+y: 0 references () [0] + Live Value +TestEmitInnerModules.Inner.+y: 0 references () [0] + Live Value +TestEmitInnerModules.Inner.+x: 0 references () [0] + Live Value +TestFirstClassModules.+convertFirstClassModuleWithTypeEquations: 0 references () [0] + Live Value +TestFirstClassModules.+convertRecord: 0 references () [0] + Live Value +TestFirstClassModules.+convertInterface: 0 references () [0] + Live Value +TestFirstClassModules.+convert: 0 references () [0] + Dead Value +TestImmutableArray.+testBeltArraySet: 0 references () [0] + Dead Value +TestImmutableArray.+testBeltArrayGet: 0 references () [0] + Live Value +TestImmutableArray.+testImmutableArrayGet: 0 references () [0] + Live Value +TestImport.+defaultValue2: 0 references () [0] + Dead Value +TestImport.+make: 0 references () [0] + Live Value +TestImport.+make: 0 references () [0] + Dead RecordLabel +TestImport.message.text: 0 references () [0] + Live Value +TestImport.+defaultValue: 0 references () [0] + Live Value +TestImport.+valueStartingWithUpperCaseLetter: 0 references () [0] + Dead Value +TestImport.+innerStuffContents: 0 references () [0] + Live Value +TestImport.+innerStuffContentsAsEmptyObject: 0 references () [0] + Live Value +TestImport.+innerStuffContents: 0 references () [0] + Dead Value +TestInnedModuleTypes.+_: 0 references () [0] + Live Value +TestModuleAliases.+testInner2Expanded: 0 references () [0] + Live Value +TestModuleAliases.+testInner2: 0 references () [0] + Live Value +TestModuleAliases.+testInner1Expanded: 0 references () [0] + Live Value +TestModuleAliases.+testInner1: 0 references () [0] + Live Value +TestOptArg.+liveSuppressesOptArgs: 1 references (TestOptArg.res:16:8) [0] + Live Value +TestOptArg.+notSuppressesOptArgs: 1 references (TestOptArg.res:11:8) [0] + Live Value +TestOptArg.+bar: 1 references (TestOptArg.res:7:7) [0] + Live Value +TestOptArg.+foo: 1 references (TestOptArg.res:5:4) [0] + Live Value +TestPromise.+convert: 0 references () [0] + Dead RecordLabel +TestPromise.toPayload.result: 0 references () [0] + Live RecordLabel +TestPromise.fromPayload.s: 1 references (TestPromise.res:14:32) [0] + Dead RecordLabel +TestPromise.fromPayload.x: 0 references () [0] + Dead Value +ToSuppress.+toSuppress: 0 references () [0] + Live Value +TransitiveType1.+convertAlias: 0 references () [0] + Live Value +TransitiveType1.+convert: 0 references () [0] + Dead Value +TransitiveType2.+convertT2: 0 references () [0] + Live Value +TransitiveType3.+convertT3: 0 references () [0] + Dead RecordLabel +TransitiveType3.t3.s: 0 references () [0] + Dead RecordLabel +TransitiveType3.t3.i: 0 references () [0] + Live Value +Tuples.+changeSecondAge: 0 references () [0] + Live Value +Tuples.+marry: 0 references () [0] + Live Value +Tuples.+getFirstName: 0 references () [0] + Live RecordLabel +Tuples.person.age: 1 references (Tuples.res:49:84) [0] + Live RecordLabel +Tuples.person.name: 1 references (Tuples.res:43:49) [0] + Live Value +Tuples.+coord2d: 0 references () [0] + Live Value +Tuples.+computeAreaNoConverters: 0 references () [0] + Live Value +Tuples.+computeAreaWithIdent: 0 references () [0] + Live Value +Tuples.+computeArea: 0 references () [0] + Live Value +Tuples.+origin: 0 references () [0] + Live Value +Tuples.+testTuple: 0 references () [0] + Dead Value +TypeParams1.+exportSomething: 0 references () [0] + Dead Value +TypeParams2.+exportSomething: 0 references () [0] + Dead RecordLabel +TypeParams2.item.id: 0 references () [0] + Live Value +TypeParams3.+test2: 0 references () [0] + Live Value +TypeParams3.+test: 0 references () [0] + Dead Value +Types.ObjectId.+x: 0 references () [0] + Live Value +Types.+optFunction: 0 references () [0] + Live Value +Types.+i64Const: 0 references () [0] + Live Value +Types.+currentTime: 0 references () [0] + Live Value +Types.+testInstantiateTypeParameter: 0 references () [0] + Dead RecordLabel +Types.someRecord.id: 0 references () [0] + Live Value +Types.+setMatch: 0 references () [0] + Live Value +Types.+testMarshalFields: 0 references () [0] + Live Value +Types.+testConvertNull: 0 references () [0] + Dead RecordLabel +Types.record.s: 0 references () [0] + Dead RecordLabel +Types.record.i: 0 references () [0] + Live Value +Types.+jsonStringify: 0 references () [0] + Live Value +Types.+jsString2T: 0 references () [0] + Live Value +Types.+jsStringT: 0 references () [0] + Dead VariantCase +Types.opaqueVariant.B: 0 references () [0] + Dead VariantCase +Types.opaqueVariant.A: 0 references () [0] + Live Value +Types.+testFunctionOnOptionsAsArgument: 0 references () [0] + Live Value +Types.+mutuallyRecursiveConverter: 0 references () [0] + Live Value +Types.+selfRecursiveConverter: 0 references () [0] + Dead RecordLabel +Types.mutuallyRecursiveB.a: 0 references () [0] + Live RecordLabel +Types.mutuallyRecursiveA.b: 1 references (Types.res:49:34) [0] + Live RecordLabel +Types.selfRecursive.self: 1 references (Types.res:42:30) [0] + Live Value +Types.+swap: 0 references () [0] + Dead VariantCase +Types.typeWithVars.B: 0 references () [0] + Dead VariantCase +Types.typeWithVars.A: 0 references () [0] + Live Value +Types.+map: 0 references () [0] + Live Value +Types.+someIntList: 0 references () [0] + Live Value +Unboxed.+r2Test: 0 references () [0] + Dead RecordLabel +Unboxed.r2.B.g: 0 references () [0] + Dead VariantCase +Unboxed.r2.B: 0 references () [0] + Dead RecordLabel +Unboxed.r1.x: 0 references () [0] + Live Value +Unboxed.+testV1: 0 references () [0] + Dead VariantCase +Unboxed.v2.A: 0 references () [0] + Dead VariantCase +Unboxed.v1.A: 0 references () [0] + Live Value +Uncurried.+sumLblCurried: 0 references () [0] + Live Value +Uncurried.+sumCurried: 0 references () [0] + Live Value +Uncurried.+sumU2: 0 references () [0] + Live Value +Uncurried.+sumU: 0 references () [0] + Live Value +Uncurried.+callback2U: 0 references () [0] + Live Value +Uncurried.+callback2: 0 references () [0] + Live RecordLabel +Uncurried.authU.loginU: 1 references (Uncurried.res:38:25) [0] + Live RecordLabel +Uncurried.auth.login: 1 references (Uncurried.res:35:24) [0] + Live Value +Uncurried.+callback: 0 references () [0] + Live Value +Uncurried.+curried3: 0 references () [0] + Live Value +Uncurried.+uncurried3: 0 references () [0] + Live Value +Uncurried.+uncurried2: 0 references () [0] + Live Value +Uncurried.+uncurried1: 0 references () [0] + Live Value +Uncurried.+uncurried0: 0 references () [0] + Live Value +Unison.+toString: 3 references (Unison.res:37:0, Unison.res:38:0, Unison.res:39:0) [0] + Live Value +Unison.+fits: 1 references (Unison.res:26:8) [0] + Live Value +Unison.+group: 2 references (Unison.res:38:25, Unison.res:39:25) [0] + Live VariantCase +Unison.stack.Cons: 2 references (Unison.res:38:20, Unison.res:39:20) [0] + Live VariantCase +Unison.stack.Empty: 3 references (Unison.res:37:20, Unison.res:38:53, Unison.res:39:52) [0] + Live RecordLabel +Unison.t.doc: 2 references (Unison.res:23:9, Unison.res:28:9) [0] + Live RecordLabel +Unison.t.break: 1 references (Unison.res:28:9) [0] + Live VariantCase +Unison.break.Always: 1 references (Unison.res:39:38) [0] + Live VariantCase +Unison.break.Never: 1 references (Unison.res:38:38) [0] + Live VariantCase +Unison.break.IfNeed: 1 references (Unison.res:17:20) [0] + Live Value +UseImportJsValue.+useTypeImportedInOtherModule: 0 references () [0] + Live Value +UseImportJsValue.+useGetProp: 0 references () [0] + Live Value +Variants.+restResult3: 0 references () [0] + Live Value +Variants.+restResult2: 0 references () [0] + Live Value +Variants.+restResult1: 0 references () [0] + Dead VariantCase +Variants.result1.Error: 0 references () [0] + Dead VariantCase +Variants.result1.Ok: 0 references () [0] + Live Value +Variants.+polyWithOpt: 0 references () [0] + Dead VariantCase +Variants.type_.Type: 0 references () [0] + Live Value +Variants.+id2: 0 references () [0] + Live Value +Variants.+id1: 0 references () [0] + Live Value +Variants.+testConvert2to3: 0 references () [0] + Live Value +Variants.+testConvert3: 0 references () [0] + Live Value +Variants.+testConvert2: 0 references () [0] + Live Value +Variants.+fortytwoBAD: 0 references () [0] + Live Value +Variants.+fortytwoOK: 0 references () [0] + Live Value +Variants.+testConvert: 0 references () [0] + Live Value +Variants.+swap: 0 references () [0] + Live Value +Variants.+onlySunday: 0 references () [0] + Live Value +Variants.+sunday: 0 references () [0] + Live Value +Variants.+saturday: 0 references () [0] + Live Value +Variants.+monday: 0 references () [0] + Live Value +Variants.+isWeekend: 0 references () [0] + Live Value +VariantsWithPayload.+testVariant1Object: 0 references () [0] + Dead VariantCase +VariantsWithPayload.variant1Object.R: 0 references () [0] + Live Value +VariantsWithPayload.+testVariant1Int: 0 references () [0] + Dead VariantCase +VariantsWithPayload.variant1Int.R: 0 references () [0] + Live Value +VariantsWithPayload.+printVariantWithPayloads: 0 references () [0] + Live Value +VariantsWithPayload.+testVariantWithPayloads: 0 references () [0] + Dead VariantCase +VariantsWithPayload.variantWithPayloads.E: 0 references () [0] + Dead VariantCase +VariantsWithPayload.variantWithPayloads.D: 0 references () [0] + Dead VariantCase +VariantsWithPayload.variantWithPayloads.C: 0 references () [0] + Dead VariantCase +VariantsWithPayload.variantWithPayloads.B: 0 references () [0] + Dead VariantCase +VariantsWithPayload.variantWithPayloads.A: 0 references () [0] + Live Value +VariantsWithPayload.+testSimpleVariant: 0 references () [0] + Dead VariantCase +VariantsWithPayload.simpleVariant.C: 0 references () [0] + Dead VariantCase +VariantsWithPayload.simpleVariant.B: 0 references () [0] + Dead VariantCase +VariantsWithPayload.simpleVariant.A: 0 references () [0] + Live Value +VariantsWithPayload.+printManyPayloads: 0 references () [0] + Live Value +VariantsWithPayload.+testManyPayloads: 0 references () [0] + Live Value +VariantsWithPayload.+printVariantWithPayload: 0 references () [0] + Live Value +VariantsWithPayload.+testWithPayload: 0 references () [0] + Live RecordLabel +VariantsWithPayload.payload.y: 2 references (VariantsWithPayload.res:26:74, VariantsWithPayload.res:44:72) [0] + Live RecordLabel +VariantsWithPayload.payload.x: 2 references (VariantsWithPayload.res:26:57, VariantsWithPayload.res:44:55) [0] + Live Value +DeadExn.+eInside: 1 references (DeadExn.res:12:7) [0] + Dead Value +DeadExn.+eToplevel: 0 references () [0] + Dead Exception +DeadExn.DeadE: 0 references () [0] + Live Exception +DeadExn.Inside.Einside: 1 references (DeadExn.res:10:14) [0] + Live Exception +DeadExn.Etoplevel: 1 references (DeadExn.res:8:16) [0] + Live RecordLabel +DeadTypeTest.record.z: 0 references () [0] + Live RecordLabel +DeadTypeTest.record.y: 0 references () [0] + Live RecordLabel +DeadTypeTest.record.x: 0 references () [0] + Dead Value +DeadTypeTest.+_: 0 references () [0] + Dead Value +DeadTypeTest.+_: 0 references () [0] + Dead VariantCase +DeadTypeTest.deadType.InNeither: 0 references () [0] + Live VariantCase +DeadTypeTest.deadType.OnlyInInterface: 1 references (DeadTypeTest.resi:8:2) [0] + Dead Value +DeadTypeTest.+a: 0 references () [0] + Dead VariantCase +DeadTypeTest.t.B: 0 references () [0] + Dead Value DeadValueTest.+valueDead: 0 references () [0] + Live Value DeadValueTest.+valueAlive: 1 references (DeadTest.res:73:16) [0] + Live RecordLabel +DynamicallyLoadedComponent.props.s: 1 references (_none_:1:-1) [0] + Live Value +DynamicallyLoadedComponent.+make: 1 references (DeadTest.res:110:17) [0] + Dead Value ErrorHandler.+x: 0 references () [0] + Live Value ErrorHandler.Make.+notify: 1 references (CreateErrorHandler1.res:8:0) [0] + Dead Value +FirstClassModulesInterface.+r: 0 references () [0] + Dead RecordLabel +FirstClassModulesInterface.record.y: 0 references () [0] + Dead RecordLabel +FirstClassModulesInterface.record.x: 0 references () [0] + Dead Value ImmutableArray.+eq: 0 references () [0] + Dead Value ImmutableArray.+eqU: 0 references () [0] + Dead Value ImmutableArray.+cmp: 0 references () [0] + Dead Value ImmutableArray.+cmpU: 0 references () [0] + Dead Value ImmutableArray.+some2: 0 references () [0] + Dead Value ImmutableArray.+some2U: 0 references () [0] + Dead Value ImmutableArray.+every2: 0 references () [0] + Dead Value ImmutableArray.+every2U: 0 references () [0] + Dead Value ImmutableArray.+every: 0 references () [0] + Dead Value ImmutableArray.+everyU: 0 references () [0] + Dead Value ImmutableArray.+some: 0 references () [0] + Dead Value ImmutableArray.+someU: 0 references () [0] + Dead Value ImmutableArray.+reduceReverse2: 0 references () [0] + Dead Value ImmutableArray.+reduceReverse2U: 0 references () [0] + Dead Value ImmutableArray.+reduceReverse: 0 references () [0] + Dead Value ImmutableArray.+reduceReverseU: 0 references () [0] + Dead Value ImmutableArray.+reduce: 0 references () [0] + Dead Value ImmutableArray.+reduceU: 0 references () [0] + Dead Value ImmutableArray.+partition: 0 references () [0] + Dead Value ImmutableArray.+partitionU: 0 references () [0] + Dead Value ImmutableArray.+mapWithIndex: 0 references () [0] + Dead Value ImmutableArray.+mapWithIndexU: 0 references () [0] + Dead Value ImmutableArray.+forEachWithIndex: 0 references () [0] + Dead Value ImmutableArray.+forEachWithIndexU: 0 references () [0] + Dead Value ImmutableArray.+keepMap: 0 references () [0] + Dead Value ImmutableArray.+keepMapU: 0 references () [0] + Dead Value ImmutableArray.+keepWithIndex: 0 references () [0] + Dead Value ImmutableArray.+keepWithIndexU: 0 references () [0] + Dead Value ImmutableArray.+map: 0 references () [0] + Dead Value ImmutableArray.+mapU: 0 references () [0] + Dead Value ImmutableArray.+forEach: 0 references () [0] + Dead Value ImmutableArray.+forEachU: 0 references () [0] + Dead Value ImmutableArray.+copy: 0 references () [0] + Dead Value ImmutableArray.+sliceToEnd: 0 references () [0] + Dead Value ImmutableArray.+slice: 0 references () [0] + Dead Value ImmutableArray.+concatMany: 0 references () [0] + Dead Value ImmutableArray.+concat: 0 references () [0] + Dead Value ImmutableArray.+unzip: 0 references () [0] + Dead Value ImmutableArray.+zipBy: 0 references () [0] + Dead Value ImmutableArray.+zipByU: 0 references () [0] + Dead Value ImmutableArray.+zip: 0 references () [0] + Dead Value ImmutableArray.+makeByAndShuffle: 0 references () [0] + Dead Value ImmutableArray.+makeByAndShuffleU: 0 references () [0] + Dead Value ImmutableArray.+makeBy: 0 references () [0] + Dead Value ImmutableArray.+makeByU: 0 references () [0] + Dead Value ImmutableArray.+rangeBy: 0 references () [0] + Dead Value ImmutableArray.+range: 0 references () [0] + Dead Value ImmutableArray.+make: 0 references () [0] + Dead Value ImmutableArray.+makeUninitializedUnsafe: 0 references () [0] + Dead Value ImmutableArray.+makeUninitialized: 0 references () [0] + Dead Value ImmutableArray.+reverse: 0 references () [0] + Dead Value ImmutableArray.+shuffle: 0 references () [0] + Dead Value ImmutableArray.+getUndefined: 0 references () [0] + Dead Value ImmutableArray.+getUnsafe: 0 references () [0] + Dead Value ImmutableArray.+getExn: 0 references () [0] + Dead Value ImmutableArray.+get: 0 references () [0] + Dead Value ImmutableArray.+size: 0 references () [0] + Dead Value ImmutableArray.+length: 0 references () [0] + Dead Value ImmutableArray.+toArray: 0 references () [0] + Live Value ImmutableArray.+fromArray: 1 references (DeadTest.res:1:15) [0] + Live Value ImmutableArray.Array.+get: 1 references (TestImmutableArray.res:2:4) [0] + Live RecordLabel +ImportHookDefault.props.renderMe: 0 references () [0] + Live RecordLabel +ImportHookDefault.props.children: 0 references () [0] + Live RecordLabel +ImportHookDefault.props.person: 0 references () [0] + Live Value +ImportHookDefault.+make: 1 references (Hooks.res:17:5) [0] + Dead RecordLabel +ImportHookDefault.person.age: 0 references () [0] + Dead RecordLabel +ImportHookDefault.person.name: 0 references () [0] + Live Value +ImportHooks.+foo: 0 references () [0] + Live RecordLabel +ImportHooks.props.renderMe: 0 references () [0] + Live RecordLabel +ImportHooks.props.children: 0 references () [0] + Live RecordLabel +ImportHooks.props.person: 0 references () [0] + Live Value +ImportHooks.+make: 1 references (Hooks.res:14:5) [0] + Dead RecordLabel +ImportHooks.person.age: 0 references () [0] + Dead RecordLabel +ImportHooks.person.name: 0 references () [0] + Live Value +ImportJsValue.+default: 0 references () [0] + Live Value +ImportJsValue.+polymorphic: 0 references () [0] + Live Value +ImportJsValue.+convertVariant: 0 references () [0] + Dead VariantCase +ImportJsValue.variant.S: 0 references () [0] + Dead VariantCase +ImportJsValue.variant.I: 0 references () [0] + Live Value +ImportJsValue.+returnedFromHigherOrder: 0 references () [0] + Live Value +ImportJsValue.+higherOrder: 1 references (ImportJsValue.res:64:4) [0] + Live Value +ImportJsValue.+useColor: 0 references () [0] + Live Value +ImportJsValue.+useGetAbs: 0 references () [0] + Live Value +ImportJsValue.+useGetProp: 0 references () [0] + Live Value +ImportJsValue.AbsoluteValue.+getAbs: 1 references (ImportJsValue.res:50:4) [1] + Live Value +ImportJsValue.AbsoluteValue.+getAbs: 1 references (ImportJsValue.res:40:6) [0] + Live Value +ImportJsValue.+areaValue: 0 references () [0] + Live Value +ImportJsValue.+roundedNumber: 0 references () [0] + Live Value +ImportJsValue.+returnMixedArray: 0 references () [0] + Live Value +ImportJsValue.+area: 1 references (ImportJsValue.res:30:4) [0] + Dead RecordLabel +ImportJsValue.point.y: 0 references () [0] + Dead RecordLabel +ImportJsValue.point.x: 0 references () [0] + Live Value +ImportJsValue.+round: 1 references (ImportJsValue.res:27:4) [0] + Live Value +NestedModulesInSignature.Universe.+theAnswer: 1 references (NestedModulesInSignature.resi:2:2) [0] + Live Value OptArg.+bar: 1 references (TestOptArg.res:1:7) [0] + Dead Value OptArg.+foo: 0 references () [0] + Dead Value +DeadValueTest.+tail: 0 references () [0] + Dead Value +DeadValueTest.+subList: 0 references () [0] + Dead Value +DeadValueTest.+valueOnlyInImplementation: 0 references () [0] + Dead Value +DeadValueTest.+valueDead: 0 references () [0] + Live Value +DeadValueTest.+valueAlive: 1 references (DeadValueTest.resi:1:0) [0] + Dead Value +ErrorHandler.+x: 0 references () [0] + Live Value +ErrorHandler.Make.+notify: 1 references (ErrorHandler.resi:7:2) [0] + Dead Value +ImmutableArray.+eq: 0 references () [0] + Dead Value +ImmutableArray.+eqU: 0 references () [0] + Dead Value +ImmutableArray.+cmp: 0 references () [0] + Dead Value +ImmutableArray.+cmpU: 0 references () [0] + Dead Value +ImmutableArray.+some2: 0 references () [0] + Dead Value +ImmutableArray.+some2U: 0 references () [0] + Dead Value +ImmutableArray.+every2: 0 references () [0] + Dead Value +ImmutableArray.+every2U: 0 references () [0] + Dead Value +ImmutableArray.+every: 0 references () [0] + Dead Value +ImmutableArray.+everyU: 0 references () [0] + Dead Value +ImmutableArray.+some: 0 references () [0] + Dead Value +ImmutableArray.+someU: 0 references () [0] + Dead Value +ImmutableArray.+reduceReverse2: 0 references () [0] + Dead Value +ImmutableArray.+reduceReverse2U: 0 references () [0] + Dead Value +ImmutableArray.+reduceReverse: 0 references () [0] + Dead Value +ImmutableArray.+reduceReverseU: 0 references () [0] + Dead Value +ImmutableArray.+reduce: 0 references () [0] + Dead Value +ImmutableArray.+reduceU: 0 references () [0] + Dead Value +ImmutableArray.+partition: 0 references () [0] + Dead Value +ImmutableArray.+partitionU: 0 references () [0] + Dead Value +ImmutableArray.+mapWithIndex: 0 references () [0] + Dead Value +ImmutableArray.+mapWithIndexU: 0 references () [0] + Dead Value +ImmutableArray.+forEachWithIndex: 0 references () [0] + Dead Value +ImmutableArray.+forEachWithIndexU: 0 references () [0] + Dead Value +ImmutableArray.+keepMap: 0 references () [0] + Dead Value +ImmutableArray.+keepMapU: 0 references () [0] + Dead Value +ImmutableArray.+keepWithIndex: 0 references () [0] + Dead Value +ImmutableArray.+keepWithIndexU: 0 references () [0] + Dead Value +ImmutableArray.+map: 0 references () [0] + Dead Value +ImmutableArray.+mapU: 0 references () [0] + Dead Value +ImmutableArray.+forEach: 0 references () [0] + Dead Value +ImmutableArray.+forEachU: 0 references () [0] + Dead Value +ImmutableArray.+copy: 0 references () [0] + Dead Value +ImmutableArray.+sliceToEnd: 0 references () [0] + Dead Value +ImmutableArray.+slice: 0 references () [0] + Dead Value +ImmutableArray.+concatMany: 0 references () [0] + Dead Value +ImmutableArray.+concat: 0 references () [0] + Dead Value +ImmutableArray.+unzip: 0 references () [0] + Dead Value +ImmutableArray.+zipBy: 0 references () [0] + Dead Value +ImmutableArray.+zipByU: 0 references () [0] + Dead Value +ImmutableArray.+zip: 0 references () [0] + Dead Value +ImmutableArray.+makeByAndShuffle: 0 references () [0] + Dead Value +ImmutableArray.+makeByAndShuffleU: 0 references () [0] + Dead Value +ImmutableArray.+makeBy: 0 references () [0] + Dead Value +ImmutableArray.+makeByU: 0 references () [0] + Dead Value +ImmutableArray.+rangeBy: 0 references () [0] + Dead Value +ImmutableArray.+range: 0 references () [0] + Dead Value +ImmutableArray.+make: 0 references () [0] + Dead Value +ImmutableArray.+makeUninitializedUnsafe: 0 references () [0] + Dead Value +ImmutableArray.+makeUninitialized: 0 references () [0] + Dead Value +ImmutableArray.+reverse: 0 references () [0] + Dead Value +ImmutableArray.+shuffle: 0 references () [0] + Dead Value +ImmutableArray.+getUndefined: 0 references () [0] + Dead Value +ImmutableArray.+getUnsafe: 0 references () [0] + Dead Value +ImmutableArray.+getExn: 0 references () [0] + Live Value +ImmutableArray.+get: 1 references (ImmutableArray.resi:6:2) [0] + Dead Value +ImmutableArray.+size: 0 references () [0] + Dead Value +ImmutableArray.+length: 0 references () [0] + Dead Value +ImmutableArray.+toArray: 0 references () [0] + Live Value +ImmutableArray.+fromArray: 1 references (ImmutableArray.resi:9:0) [0] + Live Value +OptArg.+wrapfourArgs: 2 references (OptArg.res:28:7, OptArg.res:29:7) [0] + Live Value +OptArg.+fourArgs: 1 references (OptArg.res:26:4) [0] + Live Value +OptArg.+wrapOneArg: 1 references (OptArg.res:22:7) [0] + Live Value +OptArg.+oneArg: 1 references (OptArg.res:20:4) [0] + Live Value +OptArg.+twoArgs: 1 references (OptArg.res:16:12) [0] + Live Value +OptArg.+threeArgs: 2 references (OptArg.res:11:7, OptArg.res:12:7) [0] + Live Value +OptArg.+bar: 2 references (OptArg.res:7:7, OptArg.resi:2:0) [0] + Live Value +OptArg.+foo: 1 references (OptArg.res:5:7) [0] + + Incorrect Dead Annotation + DeadTest.res:153:1-28 + deadIncorrect is annotated @dead but is live + + Warning Unused Argument + TestOptArg.res:9:1-65 + optional argument x of function notSuppressesOptArgs is never used + + Warning Unused Argument + TestOptArg.res:9:1-65 + optional argument y of function notSuppressesOptArgs is never used + + Warning Unused Argument + TestOptArg.res:9:1-65 + optional argument z of function notSuppressesOptArgs is never used + + Warning Redundant Optional Argument + TestOptArg.res:3:1-28 + optional argument x of function foo is always supplied (1 calls) + + Warning Redundant Optional Argument + Unison.res:17:1-60 + optional argument break of function group is always supplied (2 calls) + + Warning Unused Argument + OptArg.resi:2:1-50 + optional argument x of function bar is never used + + Warning Redundant Optional Argument + OptArg.res:26:1-70 + optional argument c of function wrapfourArgs is always supplied (2 calls) + + Warning Unused Argument + OptArg.res:24:1-63 + optional argument d of function fourArgs is never used + + Warning Redundant Optional Argument + OptArg.res:20:1-51 + optional argument a of function wrapOneArg is always supplied (1 calls) + + Warning Unused Argument + OptArg.res:14:1-42 + optional argument a of function twoArgs is never used + + Warning Unused Argument + OptArg.res:14:1-42 + optional argument b of function twoArgs is never used + + Warning Unused Argument + OptArg.res:9:1-54 + optional argument b of function threeArgs is never used + + Warning Redundant Optional Argument + OptArg.res:9:1-54 + optional argument a of function threeArgs is always supplied (2 calls) + + Warning Unused Argument + OptArg.res:3:1-38 + optional argument x of function bar is never used + + Warning Unused Argument + OptArg.res:1:1-48 + optional argument y of function foo is never used + + Warning Unused Argument + OptArg.res:1:1-48 + optional argument z of function foo is never used + + Warning Dead Module + AutoAnnotate.res:0:1 + AutoAnnotate is a dead module as all its items are dead. + + Warning Dead Type + AutoAnnotate.res:1:16-21 + variant.R is a variant case which is never constructed + <-- line 1 + type variant = | @dead("variant.R") R(int) + + Warning Dead Type + AutoAnnotate.res:4:16-31 + record.variant is a record label never used to read a value + <-- line 4 + type record = {@dead("record.variant") variant: variant} + + Warning Dead Type + AutoAnnotate.res:6:12-18 + r2.r2 is a record label never used to read a value + <-- line 6 + type r2 = {@dead("r2.r2") r2: int} + + Warning Dead Type + AutoAnnotate.res:8:12-18 + r3.r3 is a record label never used to read a value + <-- line 8 + type r3 = {@dead("r3.r3") r3: int} + + Warning Dead Type + AutoAnnotate.res:10:12-18 + r4.r4 is a record label never used to read a value + <-- line 10 + type r4 = {@dead("r4.r4") r4: int} + + Warning Dead Type + AutoAnnotate.res:14:3-14 + annotatedVariant.R2 is a variant case which is never constructed + <-- line 14 + | @dead("annotatedVariant.R2") R2(r2, r3) + + Warning Dead Type + AutoAnnotate.res:15:5-10 + annotatedVariant.R4 is a variant case which is never constructed + <-- line 15 + | @dead("annotatedVariant.R4") R4(r4) + + Warning Dead Module + BucklescriptAnnotations.res:0:1 + BucklescriptAnnotations is a dead module as all its items are dead. + + Warning Dead Value + BucklescriptAnnotations.res:25:1-70 + bar is never used + <-- line 25 + @dead("bar") let bar = (x: someMethods) => { + + Warning Dead Exception + DeadExn.res:7:1-15 + DeadE is never raised or passed as value + <-- line 7 + @dead("DeadE") exception DeadE + + Warning Dead Value + DeadExn.res:8:1-25 + eToplevel is never used + <-- line 8 + @dead("eToplevel") let eToplevel = Etoplevel + + Warning Dead Value + DeadRT.res:5:1-116 + emitModuleAccessPath is never used + <-- line 5 + @dead("emitModuleAccessPath") let rec emitModuleAccessPath = moduleAccessPath => + + Warning Dead Value + DeadTest.res:2:1-17 + fortytwo is never used + <-- line 2 + @dead("fortytwo") let fortytwo = 42 + + Warning Dead Module + DeadTest.res:27:8-97 + DeadTest.M is a dead module as all its items are dead. + + Warning Dead Value + DeadTest.res:31:3-34 + M.thisSignatureItemIsDead is never used + <-- line 31 + @dead("M.thisSignatureItemIsDead") let thisSignatureItemIsDead = 34 + + Warning Dead Value + DeadTest.res:61:3-12 + MM.y is never used + <-- line 61 + @dead("MM.y") let y: int + + Warning Dead Value + DeadTest.res:65:3-35 + MM.valueOnlyInImplementation is never used + <-- line 65 + @dead("MM.valueOnlyInImplementation") let valueOnlyInImplementation = 7 + + Warning Dead Value + DeadTest.res:75:1-37 + unusedRec is never used + <-- line 75 + @dead("unusedRec") let rec unusedRec = () => unusedRec() + + Warning Dead Value + DeadTest.res:77:1-60 + split_map is never used + <-- line 77 + @dead("split_map") let rec split_map = l => { + + Warning Dead Value + DeadTest.res:82:1-27 + rec1 is never used + <-- line 82 + @dead("rec1") let rec rec1 = () => rec2() + + Warning Dead Value + DeadTest.res:83:1-23 + rec2 is never used + <-- line 83 + @dead("rec2") and rec2 = () => rec1() + + Warning Dead Value + DeadTest.res:85:1-77 + recWithCallback is never used + <-- line 85 + @dead("recWithCallback") let rec recWithCallback = () => { + + Warning Dead Value + DeadTest.res:90:1-53 + foo is never used + <-- line 90 + @dead("foo") let rec foo = () => { + + Warning Dead Value + DeadTest.res:94:1-21 + bar is never used + <-- line 94 + @dead("bar") and bar = () => foo() + + Warning Dead Value + DeadTest.res:96:1-71 + withDefaultValue is never used + <-- line 96 + @dead("withDefaultValue") let withDefaultValue = (~paramWithDefault=3, y) => paramWithDefault + y + + Warning Dead Value + DeadTest.res:104:1-52 + zzz is never used + <-- line 104 + @dead("zzz") let zzz = { + + Warning Dead Value + DeadTest.res:112:1-14 + second is never used + <-- line 112 + @dead("second") let second = 1 + + Warning Dead Value + DeadTest.res:114:1-21 + deadRef is never used + <-- line 114 + @dead("deadRef") let deadRef = ref(12) + + Warning Dead Value With Side Effects + DeadTest.res:121:1-40 + theSideEffectIsLogging is never used and could have side effects + + Warning Dead Value With Side Effects + DeadTest.res:123:1-54 + stringLengthNoSideEffects is never used and could have side effects + + Warning Dead Type + DeadTest.res:151:12-17 + rc.a is a record label never used to read a value + <-- line 151 + type rc = {@dead("rc.a") a: int} + + Warning Dead Type + DeadTest.res:158:25-30 + inlineRecord.IR.a is a record label never used to read a value + <-- line 158 + type inlineRecord = IR({@dead("inlineRecord.IR.a") a: int, b: int, c: string, @dead d: int, @live e: int}) + + Warning Dead Module + DeadTestBlacklist.res:0:1 + DeadTestBlacklist is a dead module as all its items are dead. + + Warning Dead Value + DeadTestBlacklist.res:1:1-10 + x is never used + <-- line 1 + @dead("x") let x = 34 + + Warning Dead Module + DeadTestWithInterface.res:1:8-54 + DeadTestWithInterface.Ext_buffer is a dead module as all its items are dead. + + Warning Dead Value + DeadTestWithInterface.res:2:3-12 + Ext_buffer.x is never used + <-- line 2 + @dead("Ext_buffer.x") let x: int + + Warning Dead Value + DeadTestWithInterface.res:4:3-12 + Ext_buffer.x is never used + <-- line 4 + @dead("Ext_buffer.x") let x = 42 + + Warning Dead Type + DeadTypeTest.res:3:5 + t.B is a variant case which is never constructed + <-- line 3 + | @dead("t.B") B + + Warning Dead Value + DeadTypeTest.res:4:1-9 + a is never used + <-- line 4 + @dead("a") let a = A + + Warning Dead Type + DeadTypeTest.res:10:5-13 + deadType.InNeither is a variant case which is never constructed + <-- line 10 + | @dead("deadType.InNeither") InNeither + + Warning Dead Type + DeadTypeTest.resi:3:5 + t.B is a variant case which is never constructed + <-- line 3 + | @dead("t.B") B + + Warning Dead Value + DeadTypeTest.resi:4:1-8 + a is never used + <-- line 4 + @dead("a") let a: t + + Warning Dead Type + DeadTypeTest.resi:10:5-13 + deadType.InNeither is a variant case which is never constructed + <-- line 10 + | @dead("deadType.InNeither") InNeither + + Warning Dead Value + DeadValueTest.res:2:1-17 + valueDead is never used + <-- line 2 + @dead("valueDead") let valueDead = 2 + + Warning Dead Value + DeadValueTest.res:4:1-33 + valueOnlyInImplementation is never used + <-- line 4 + @dead("valueOnlyInImplementation") let valueOnlyInImplementation = 3 + + Warning Dead Value + DeadValueTest.res:6:1-260 + subList is never used + <-- line 6 + @dead("subList") let rec subList = (b, e, l) => + + Warning Dead Value + DeadValueTest.resi:2:1-18 + valueDead is never used + <-- line 2 + @dead("valueDead") let valueDead: int + + Warning Dead Type + Docstrings.res:61:5 + t.B is a variant case which is never constructed + <-- line 61 + | @dead("t.B") B + + Warning Dead Module + ErrorHandler.res:0:1 + ErrorHandler is a dead module as all its items are dead. + + Warning Dead Value + ErrorHandler.res:11:1-19 + x is never used + <-- line 12 + @dead("x") @genType + + Warning Dead Module + ErrorHandler.resi:0:1 + ErrorHandler is a dead module as all its items are dead. + + Warning Dead Value + ErrorHandler.resi:10:1-10 + x is never used + <-- line 10 + @dead("x") let x: int + + Warning Dead Module + EverythingLiveHere.res:0:1 + EverythingLiveHere is a dead module as all its items are dead. + + Warning Dead Value + EverythingLiveHere.res:1:1-9 + x is never used + <-- line 1 + @dead("x") let x = 1 + + Warning Dead Value + EverythingLiveHere.res:3:1-9 + y is never used + <-- line 3 + @dead("y") let y = 3 + + Warning Dead Value + EverythingLiveHere.res:5:1-9 + z is never used + <-- line 5 + @dead("z") let z = 4 + + Warning Dead Module + FirstClassModulesInterface.res:0:1 + FirstClassModulesInterface is a dead module as all its items are dead. + + Warning Dead Type + FirstClassModulesInterface.res:2:3-8 + record.x is a record label never used to read a value + <-- line 2 + @dead("record.x") x: int, + + Warning Dead Type + FirstClassModulesInterface.res:3:3-11 + record.y is a record label never used to read a value + <-- line 3 + @dead("record.y") y: string, + + Warning Dead Value + FirstClassModulesInterface.res:6:1-26 + r is never used + <-- line 6 + @dead("r") let r = {x: 3, y: "hello"} + + Warning Dead Module + FirstClassModulesInterface.resi:0:1 + FirstClassModulesInterface is a dead module as all its items are dead. + + Warning Dead Type + FirstClassModulesInterface.resi:3:3-8 + record.x is a record label never used to read a value + <-- line 3 + @dead("record.x") x: int, + + Warning Dead Type + FirstClassModulesInterface.resi:4:3-11 + record.y is a record label never used to read a value + <-- line 4 + @dead("record.y") y: string, + + Warning Dead Value + FirstClassModulesInterface.resi:7:1-13 + r is never used + <-- line 7 + @dead("r") let r: record + + Warning Dead Type + Hooks.res:50:11-19 + r.x is a record label never used to read a value + <-- line 50 + type r = {@dead("r.x") x: string} + + Warning Dead Value + ImmutableArray.res:16:3-41 + toArray is never used + <-- line 16 + @dead("toArray") let toArray = a => Array.copy(a->fromT) + + Warning Dead Value + ImmutableArray.res:20:3-42 + length is never used + <-- line 20 + @dead("length") let length = a => Array.length(a->fromT) + + Warning Dead Value + ImmutableArray.res:22:3-38 + size is never used + <-- line 22 + @dead("size") let size = a => Array.size(a->fromT) + + Warning Dead Value + ImmutableArray.res:26:3-50 + getExn is never used + <-- line 26 + @dead("getExn") let getExn = (a, x) => Array.getExn(a->fromT, x) + + Warning Dead Value + ImmutableArray.res:28:3-56 + getUnsafe is never used + <-- line 28 + @dead("getUnsafe") let getUnsafe = (a, x) => Array.getUnsafe(a->fromT, x) + + Warning Dead Value + ImmutableArray.res:30:3-62 + getUndefined is never used + <-- line 30 + @dead("getUndefined") let getUndefined = (a, x) => Array.getUndefined(a->fromT, x) + + Warning Dead Value + ImmutableArray.res:32:3-49 + shuffle is never used + <-- line 32 + @dead("shuffle") let shuffle = x => Array.shuffle(x->fromT)->toT + + Warning Dead Value + ImmutableArray.res:34:3-49 + reverse is never used + <-- line 34 + @dead("reverse") let reverse = x => Array.reverse(x->fromT)->toT + + Warning Dead Value + ImmutableArray.res:36:3-62 + makeUninitialized is never used + <-- line 36 + @dead("makeUninitialized") let makeUninitialized = x => Array.makeUninitialized(x)->toT + + Warning Dead Value + ImmutableArray.res:38:3-74 + makeUninitializedUnsafe is never used + <-- line 38 + @dead("makeUninitializedUnsafe") let makeUninitializedUnsafe = x => Array.makeUninitializedUnsafe(x)->toT + + Warning Dead Value + ImmutableArray.res:40:3-44 + make is never used + <-- line 40 + @dead("make") let make = (x, y) => Array.make(x, y)->toT + + Warning Dead Value + ImmutableArray.res:42:3-46 + range is never used + <-- line 42 + @dead("range") let range = (x, y) => Array.range(x, y)->toT + + Warning Dead Value + ImmutableArray.res:44:3-64 + rangeBy is never used + <-- line 44 + @dead("rangeBy") let rangeBy = (x, y, ~step) => Array.rangeBy(x, y, ~step)->toT + + Warning Dead Value + ImmutableArray.res:46:3-50 + makeByU is never used + <-- line 46 + @dead("makeByU") let makeByU = (c, f) => Array.makeByU(c, f)->toT + + Warning Dead Value + ImmutableArray.res:47:3-48 + makeBy is never used + <-- line 47 + @dead("makeBy") let makeBy = (c, f) => Array.makeBy(c, f)->toT + + Warning Dead Value + ImmutableArray.res:49:3-70 + makeByAndShuffleU is never used + <-- line 49 + @dead("makeByAndShuffleU") let makeByAndShuffleU = (c, f) => Array.makeByAndShuffleU(c, f)->toT + + Warning Dead Value + ImmutableArray.res:50:3-68 + makeByAndShuffle is never used + <-- line 50 + @dead("makeByAndShuffle") let makeByAndShuffle = (c, f) => Array.makeByAndShuffle(c, f)->toT + + Warning Dead Value + ImmutableArray.res:52:3-61 + zip is never used + <-- line 52 + @dead("zip") let zip = (a1, a2) => Array.zip(fromT(a1), fromT(a2))->toTp + + Warning Dead Value + ImmutableArray.res:54:3-72 + zipByU is never used + <-- line 54 + @dead("zipByU") let zipByU = (a1, a2, f) => Array.zipByU(fromT(a1), fromT(a2), f)->toT + + Warning Dead Value + ImmutableArray.res:55:3-70 + zipBy is never used + <-- line 55 + @dead("zipBy") let zipBy = (a1, a2, f) => Array.zipBy(fromT(a1), fromT(a2), f)->toT + + Warning Dead Value + ImmutableArray.res:57:3-47 + unzip is never used + <-- line 57 + @dead("unzip") let unzip = a => Array.unzip(a->fromTp)->toT2 + + Warning Dead Value + ImmutableArray.res:59:3-66 + concat is never used + <-- line 59 + @dead("concat") let concat = (a1, a2) => Array.concat(a1->fromT, a2->fromT)->toT + + Warning Dead Value + ImmutableArray.res:61:3-67 + concatMany is never used + <-- line 61 + @dead("concatMany") let concatMany = (a: t>) => Array.concatMany(a->fromTT)->toT + + Warning Dead Value + ImmutableArray.res:63:3-77 + slice is never used + <-- line 63 + @dead("slice") let slice = (a, ~offset, ~len) => Array.slice(a->fromT, ~offset, ~len)->toT + + Warning Dead Value + ImmutableArray.res:65:3-63 + sliceToEnd is never used + <-- line 65 + @dead("sliceToEnd") let sliceToEnd = (a, b) => Array.sliceToEnd(a->fromT, b)->toT + + Warning Dead Value + ImmutableArray.res:67:3-43 + copy is never used + <-- line 67 + @dead("copy") let copy = a => Array.copy(a->fromT)->toT + + Warning Dead Value + ImmutableArray.res:69:3-54 + forEachU is never used + <-- line 69 + @dead("forEachU") let forEachU = (a, f) => Array.forEachU(a->fromT, f) + + Warning Dead Value + ImmutableArray.res:70:3-52 + forEach is never used + <-- line 70 + @dead("forEach") let forEach = (a, f) => Array.forEach(a->fromT, f) + + Warning Dead Value + ImmutableArray.res:72:3-51 + mapU is never used + <-- line 72 + @dead("mapU") let mapU = (a, f) => Array.mapU(a->fromT, f)->toT + + Warning Dead Value + ImmutableArray.res:73:3-49 + map is never used + <-- line 73 + @dead("map") let map = (a, f) => Array.map(a->fromT, f)->toT + + Warning Dead Value + ImmutableArray.res:75:3-71 + keepWithIndexU is never used + <-- line 75 + @dead("keepWithIndexU") let keepWithIndexU = (a, f) => Array.keepWithIndexU(a->fromT, f)->toT + + Warning Dead Value + ImmutableArray.res:76:3-69 + keepWithIndex is never used + <-- line 76 + @dead("keepWithIndex") let keepWithIndex = (a, f) => Array.keepWithIndex(a->fromT, f)->toT + + Warning Dead Value + ImmutableArray.res:78:3-59 + keepMapU is never used + <-- line 78 + @dead("keepMapU") let keepMapU = (a, f) => Array.keepMapU(a->fromT, f)->toT + + Warning Dead Value + ImmutableArray.res:79:3-57 + keepMap is never used + <-- line 79 + @dead("keepMap") let keepMap = (a, f) => Array.keepMap(a->fromT, f)->toT + + Warning Dead Value + ImmutableArray.res:81:3-72 + forEachWithIndexU is never used + <-- line 81 + @dead("forEachWithIndexU") let forEachWithIndexU = (a, f) => Array.forEachWithIndexU(a->fromT, f) + + Warning Dead Value + ImmutableArray.res:82:3-70 + forEachWithIndex is never used + <-- line 82 + @dead("forEachWithIndex") let forEachWithIndex = (a, f) => Array.forEachWithIndex(a->fromT, f) + + Warning Dead Value + ImmutableArray.res:84:3-69 + mapWithIndexU is never used + <-- line 84 + @dead("mapWithIndexU") let mapWithIndexU = (a, f) => Array.mapWithIndexU(a->fromT, f)->toT + + Warning Dead Value + ImmutableArray.res:85:3-67 + mapWithIndex is never used + <-- line 85 + @dead("mapWithIndex") let mapWithIndex = (a, f) => Array.mapWithIndex(a->fromT, f)->toT + + Warning Dead Value + ImmutableArray.res:87:3-64 + partitionU is never used + <-- line 87 + @dead("partitionU") let partitionU = (a, f) => Array.partitionU(a->fromT, f)->toT2 + + Warning Dead Value + ImmutableArray.res:88:3-62 + partition is never used + <-- line 88 + @dead("partition") let partition = (a, f) => Array.partition(a->fromT, f)->toT2 + + Warning Dead Value + ImmutableArray.res:90:3-58 + reduceU is never used + <-- line 90 + @dead("reduceU") let reduceU = (a, b, f) => Array.reduceU(a->fromT, b, f) + + Warning Dead Value + ImmutableArray.res:91:3-56 + reduce is never used + <-- line 91 + @dead("reduce") let reduce = (a, b, f) => Array.reduce(a->fromT, b, f) + + Warning Dead Value + ImmutableArray.res:93:3-72 + reduceReverseU is never used + <-- line 93 + @dead("reduceReverseU") let reduceReverseU = (a, b, f) => Array.reduceReverseU(a->fromT, b, f) + + Warning Dead Value + ImmutableArray.res:94:3-70 + reduceReverse is never used + <-- line 94 + @dead("reduceReverse") let reduceReverse = (a, b, f) => Array.reduceReverse(a->fromT, b, f) + + Warning Dead Value + ImmutableArray.res:96:3-91 + reduceReverse2U is never used + <-- line 96 + @dead("reduceReverse2U") let reduceReverse2U = (a1, a2, c, f) => Array.reduceReverse2U(fromT(a1), fromT(a2), c, f) + + Warning Dead Value + ImmutableArray.res:97:3-89 + reduceReverse2 is never used + <-- line 97 + @dead("reduceReverse2") let reduceReverse2 = (a1, a2, c, f) => Array.reduceReverse2(fromT(a1), fromT(a2), c, f) + + Warning Dead Value + ImmutableArray.res:99:3-48 + someU is never used + <-- line 99 + @dead("someU") let someU = (a, f) => Array.someU(a->fromT, f) + + Warning Dead Value + ImmutableArray.res:100:3-46 + some is never used + <-- line 100 + @dead("some") let some = (a, f) => Array.some(a->fromT, f) + + Warning Dead Value + ImmutableArray.res:102:3-50 + everyU is never used + <-- line 102 + @dead("everyU") let everyU = (a, f) => Array.everyU(a->fromT, f) + + Warning Dead Value + ImmutableArray.res:103:3-48 + every is never used + <-- line 103 + @dead("every") let every = (a, f) => Array.every(a->fromT, f) + + Warning Dead Value + ImmutableArray.res:105:3-69 + every2U is never used + <-- line 105 + @dead("every2U") let every2U = (a1, a2, f) => Array.every2U(fromT(a1), fromT(a2), f) + + Warning Dead Value + ImmutableArray.res:106:3-67 + every2 is never used + <-- line 106 + @dead("every2") let every2 = (a1, a2, f) => Array.every2(fromT(a1), fromT(a2), f) + + Warning Dead Value + ImmutableArray.res:108:3-67 + some2U is never used + <-- line 108 + @dead("some2U") let some2U = (a1, a2, f) => Array.some2U(fromT(a1), fromT(a2), f) + + Warning Dead Value + ImmutableArray.res:109:3-65 + some2 is never used + <-- line 109 + @dead("some2") let some2 = (a1, a2, f) => Array.some2(fromT(a1), fromT(a2), f) + + Warning Dead Value + ImmutableArray.res:111:3-63 + cmpU is never used + <-- line 111 + @dead("cmpU") let cmpU = (a1, a2, f) => Array.cmpU(fromT(a1), fromT(a2), f) + + Warning Dead Value + ImmutableArray.res:112:3-61 + cmp is never used + <-- line 112 + @dead("cmp") let cmp = (a1, a2, f) => Array.cmp(fromT(a1), fromT(a2), f) + + Warning Dead Value + ImmutableArray.res:114:3-61 + eqU is never used + <-- line 114 + @dead("eqU") let eqU = (a1, a2, f) => Array.eqU(fromT(a1), fromT(a2), f) + + Warning Dead Value + ImmutableArray.res:115:3-59 + eq is never used + <-- line 115 + @dead("eq") let eq = (a1, a2, f) => Array.eq(fromT(a1), fromT(a2), f) + + Warning Dead Value + ImmutableArray.resi:12:1-31 + toArray is never used + <-- line 12 + @dead("toArray") let toArray: t<'a> => array<'a> + + Warning Dead Value + ImmutableArray.resi:14:1-107 + length is never used + <-- line 14 + @dead("length") @ocaml.doc(" Subset of the Belt.Array oprerations that do not mutate the array. ") + + Warning Dead Value + ImmutableArray.resi:17:1-22 + size is never used + <-- line 17 + @dead("size") let size: t<'a> => int + + Warning Dead Value + ImmutableArray.resi:19:1-35 + get is never used + <-- line 19 + @dead("get") let get: (t<'a>, int) => option<'a> + + Warning Dead Value + ImmutableArray.resi:21:1-30 + getExn is never used + <-- line 21 + @dead("getExn") let getExn: (t<'a>, int) => 'a + + Warning Dead Value + ImmutableArray.resi:23:1-33 + getUnsafe is never used + <-- line 23 + @dead("getUnsafe") let getUnsafe: (t<'a>, int) => 'a + + Warning Dead Value + ImmutableArray.resi:25:1-50 + getUndefined is never used + <-- line 25 + @dead("getUndefined") let getUndefined: (t<'a>, int) => Js.undefined<'a> + + Warning Dead Value + ImmutableArray.resi:27:1-27 + shuffle is never used + <-- line 27 + @dead("shuffle") let shuffle: t<'a> => t<'a> + + Warning Dead Value + ImmutableArray.resi:29:1-27 + reverse is never used + <-- line 29 + @dead("reverse") let reverse: t<'a> => t<'a> + + Warning Dead Value + ImmutableArray.resi:31:1-49 + makeUninitialized is never used + <-- line 31 + @dead("makeUninitialized") let makeUninitialized: int => t> + + Warning Dead Value + ImmutableArray.resi:33:1-41 + makeUninitializedUnsafe is never used + <-- line 33 + @dead("makeUninitializedUnsafe") let makeUninitializedUnsafe: int => t<'a> + + Warning Dead Value + ImmutableArray.resi:35:1-28 + make is never used + <-- line 35 + @dead("make") let make: (int, 'a) => t<'a> + + Warning Dead Value + ImmutableArray.resi:37:1-31 + range is never used + <-- line 37 + @dead("range") let range: (int, int) => t + + Warning Dead Value + ImmutableArray.resi:39:1-45 + rangeBy is never used + <-- line 39 + @dead("rangeBy") let rangeBy: (int, int, ~step: int) => t + + Warning Dead Value + ImmutableArray.resi:41:1-42 + makeByU is never used + <-- line 41 + @dead("makeByU") let makeByU: (int, (. int) => 'a) => t<'a> + + Warning Dead Value + ImmutableArray.resi:42:1-37 + makeBy is never used + <-- line 42 + @dead("makeBy") let makeBy: (int, int => 'a) => t<'a> + + Warning Dead Value + ImmutableArray.resi:44:1-52 + makeByAndShuffleU is never used + <-- line 44 + @dead("makeByAndShuffleU") let makeByAndShuffleU: (int, (. int) => 'a) => t<'a> + + Warning Dead Value + ImmutableArray.resi:45:1-47 + makeByAndShuffle is never used + <-- line 45 + @dead("makeByAndShuffle") let makeByAndShuffle: (int, int => 'a) => t<'a> + + Warning Dead Value + ImmutableArray.resi:47:1-38 + zip is never used + <-- line 47 + @dead("zip") let zip: (t<'a>, t<'b>) => t<('a, 'b)> + + Warning Dead Value + ImmutableArray.resi:49:1-53 + zipByU is never used + <-- line 49 + @dead("zipByU") let zipByU: (t<'a>, t<'b>, (. 'a, 'b) => 'c) => t<'c> + + Warning Dead Value + ImmutableArray.resi:50:1-50 + zipBy is never used + <-- line 50 + @dead("zipBy") let zipBy: (t<'a>, t<'b>, ('a, 'b) => 'c) => t<'c> + + Warning Dead Value + ImmutableArray.resi:52:1-40 + unzip is never used + <-- line 52 + @dead("unzip") let unzip: t<('a, 'a)> => (t<'a>, t<'a>) + + Warning Dead Value + ImmutableArray.resi:54:1-35 + concat is never used + <-- line 54 + @dead("concat") let concat: (t<'a>, t<'a>) => t<'a> + + Warning Dead Value + ImmutableArray.resi:56:1-33 + concatMany is never used + <-- line 56 + @dead("concatMany") let concatMany: t> => t<'a> + + Warning Dead Value + ImmutableArray.resi:58:1-52 + slice is never used + <-- line 58 + @dead("slice") let slice: (t<'a>, ~offset: int, ~len: int) => t<'a> + + Warning Dead Value + ImmutableArray.resi:60:1-37 + sliceToEnd is never used + <-- line 60 + @dead("sliceToEnd") let sliceToEnd: (t<'a>, int) => t<'a> + + Warning Dead Value + ImmutableArray.resi:62:1-24 + copy is never used + <-- line 62 + @dead("copy") let copy: t<'a> => t<'a> + + Warning Dead Value + ImmutableArray.resi:64:1-45 + forEachU is never used + <-- line 64 + @dead("forEachU") let forEachU: (t<'a>, (. 'a) => unit) => unit + + Warning Dead Value + ImmutableArray.resi:65:1-40 + forEach is never used + <-- line 65 + @dead("forEach") let forEach: (t<'a>, 'a => unit) => unit + + Warning Dead Value + ImmutableArray.resi:67:1-40 + mapU is never used + <-- line 67 + @dead("mapU") let mapU: (t<'a>, (. 'a) => 'b) => t<'b> + + Warning Dead Value + ImmutableArray.resi:68:1-35 + map is never used + <-- line 68 + @dead("map") let map: (t<'a>, 'a => 'b) => t<'b> + + Warning Dead Value + ImmutableArray.resi:70:1-57 + keepWithIndexU is never used + <-- line 70 + @dead("keepWithIndexU") let keepWithIndexU: (t<'a>, (. 'a, int) => bool) => t<'a> + + Warning Dead Value + ImmutableArray.resi:71:1-54 + keepWithIndex is never used + <-- line 71 + @dead("keepWithIndex") let keepWithIndex: (t<'a>, ('a, int) => bool) => t<'a> + + Warning Dead Value + ImmutableArray.resi:73:1-52 + keepMapU is never used + <-- line 73 + @dead("keepMapU") let keepMapU: (t<'a>, (. 'a) => option<'b>) => t<'b> + + Warning Dead Value + ImmutableArray.resi:74:1-47 + keepMap is never used + <-- line 74 + @dead("keepMap") let keepMap: (t<'a>, 'a => option<'b>) => t<'b> + + Warning Dead Value + ImmutableArray.resi:76:1-59 + forEachWithIndexU is never used + <-- line 76 + @dead("forEachWithIndexU") let forEachWithIndexU: (t<'a>, (. int, 'a) => unit) => unit + + Warning Dead Value + ImmutableArray.resi:77:1-56 + forEachWithIndex is never used + <-- line 77 + @dead("forEachWithIndex") let forEachWithIndex: (t<'a>, (int, 'a) => unit) => unit + + Warning Dead Value + ImmutableArray.resi:79:1-54 + mapWithIndexU is never used + <-- line 79 + @dead("mapWithIndexU") let mapWithIndexU: (t<'a>, (. int, 'a) => 'b) => t<'b> + + Warning Dead Value + ImmutableArray.resi:80:1-51 + mapWithIndex is never used + <-- line 80 + @dead("mapWithIndex") let mapWithIndex: (t<'a>, (int, 'a) => 'b) => t<'b> + + Warning Dead Value + ImmutableArray.resi:82:1-57 + partitionU is never used + <-- line 82 + @dead("partitionU") let partitionU: (t<'a>, (. 'a) => bool) => (t<'a>, t<'a>) + + Warning Dead Value + ImmutableArray.resi:83:1-52 + partition is never used + <-- line 83 + @dead("partition") let partition: (t<'a>, 'a => bool) => (t<'a>, t<'a>) + + Warning Dead Value + ImmutableArray.resi:85:1-48 + reduceU is never used + <-- line 85 + @dead("reduceU") let reduceU: (t<'a>, 'b, (. 'b, 'a) => 'b) => 'b + + Warning Dead Value + ImmutableArray.resi:86:1-45 + reduce is never used + <-- line 86 + @dead("reduce") let reduce: (t<'a>, 'b, ('b, 'a) => 'b) => 'b + + Warning Dead Value + ImmutableArray.resi:88:1-55 + reduceReverseU is never used + <-- line 88 + @dead("reduceReverseU") let reduceReverseU: (t<'a>, 'b, (. 'b, 'a) => 'b) => 'b + + Warning Dead Value + ImmutableArray.resi:89:1-52 + reduceReverse is never used + <-- line 89 + @dead("reduceReverse") let reduceReverse: (t<'a>, 'b, ('b, 'a) => 'b) => 'b + + Warning Dead Value + ImmutableArray.resi:91:1-67 + reduceReverse2U is never used + <-- line 91 + @dead("reduceReverse2U") let reduceReverse2U: (t<'a>, t<'b>, 'c, (. 'c, 'a, 'b) => 'c) => 'c + + Warning Dead Value + ImmutableArray.resi:92:1-64 + reduceReverse2 is never used + <-- line 92 + @dead("reduceReverse2") let reduceReverse2: (t<'a>, t<'b>, 'c, ('c, 'a, 'b) => 'c) => 'c + + Warning Dead Value + ImmutableArray.resi:94:1-42 + someU is never used + <-- line 94 + @dead("someU") let someU: (t<'a>, (. 'a) => bool) => bool + + Warning Dead Value + ImmutableArray.resi:95:1-37 + some is never used + <-- line 95 + @dead("some") let some: (t<'a>, 'a => bool) => bool + + Warning Dead Value + ImmutableArray.resi:97:1-43 + everyU is never used + <-- line 97 + @dead("everyU") let everyU: (t<'a>, (. 'a) => bool) => bool + + Warning Dead Value + ImmutableArray.resi:98:1-38 + every is never used + <-- line 98 + @dead("every") let every: (t<'a>, 'a => bool) => bool + + Warning Dead Value + ImmutableArray.resi:100:1-55 + every2U is never used + <-- line 100 + @dead("every2U") let every2U: (t<'a>, t<'b>, (. 'a, 'b) => bool) => bool + + Warning Dead Value + ImmutableArray.resi:101:1-52 + every2 is never used + <-- line 101 + @dead("every2") let every2: (t<'a>, t<'b>, ('a, 'b) => bool) => bool + + Warning Dead Value + ImmutableArray.resi:103:1-54 + some2U is never used + <-- line 103 + @dead("some2U") let some2U: (t<'a>, t<'b>, (. 'a, 'b) => bool) => bool + + Warning Dead Value + ImmutableArray.resi:104:1-51 + some2 is never used + <-- line 104 + @dead("some2") let some2: (t<'a>, t<'b>, ('a, 'b) => bool) => bool + + Warning Dead Value + ImmutableArray.resi:106:1-50 + cmpU is never used + <-- line 106 + @dead("cmpU") let cmpU: (t<'a>, t<'a>, (. 'a, 'a) => int) => int + + Warning Dead Value + ImmutableArray.resi:107:1-47 + cmp is never used + <-- line 107 + @dead("cmp") let cmp: (t<'a>, t<'a>, ('a, 'a) => int) => int + + Warning Dead Value + ImmutableArray.resi:109:1-51 + eqU is never used + <-- line 109 + @dead("eqU") let eqU: (t<'a>, t<'a>, (. 'a, 'a) => bool) => bool + + Warning Dead Value + ImmutableArray.resi:110:1-48 + eq is never used + <-- line 110 + @dead("eq") let eq: (t<'a>, t<'a>, ('a, 'a) => bool) => bool + + Warning Dead Type + ImportHookDefault.res:2:3-14 + person.name is a record label never used to read a value + <-- line 2 + @dead("person.name") name: string, + + Warning Dead Type + ImportHookDefault.res:3:3-10 + person.age is a record label never used to read a value + <-- line 3 + @dead("person.age") age: int, + + Warning Dead Type + ImportHooks.res:3:3-14 + person.name is a record label never used to read a value + <-- line 3 + @dead("person.name") name: string, + + Warning Dead Type + ImportHooks.res:4:3-10 + person.age is a record label never used to read a value + <-- line 4 + @dead("person.age") age: int, + + Warning Dead Type + ImportJsValue.res:11:3-8 + point.x is a record label never used to read a value + <-- line 11 + @dead("point.x") x: int, + + Warning Dead Type + ImportJsValue.res:12:3-16 + point.y is a record label never used to read a value + <-- line 12 + @dead("point.y") y: option, + + Warning Dead Type + ImportJsValue.res:67:3-10 + variant.I is a variant case which is never constructed + <-- line 67 + | @dead("variant.I") I(int) + + Warning Dead Type + ImportJsValue.res:68:5-13 + variant.S is a variant case which is never constructed + <-- line 68 + | @dead("variant.S") S(string) + + Warning Dead Type + ImportMyBanner.res:5:17-28 + message.text is a record label never used to read a value + <-- line 5 + type message = {@dead("message.text") text: string} + + Warning Dead Value + ImportMyBanner.res:12:1-15 + make is never used + <-- line 12 + @dead("make") let make = make + + Warning Dead Module + ModuleAliases.res:2:10-56 + ModuleAliases.Outer.Inner is a dead module as all its items are dead. + + Warning Dead Type + ModuleAliases.res:3:20-32 + Outer.Inner.innerT.inner is a record label never used to read a value + <-- line 3 + type innerT = {@dead("Outer.Inner.innerT.inner") inner: string} + + Warning Dead Module + ModuleAliases.res:10:12-61 + ModuleAliases.Outer2.Inner2.InnerNested is a dead module as all its items are dead. + + Warning Dead Type + ModuleAliases.res:11:17-27 + Outer2.Inner2.InnerNested.t.nested is a record label never used to read a value + <-- line 11 + type t = {@dead("Outer2.Inner2.InnerNested.t.nested") nested: int} + + Warning Dead Module + ModuleAliases2.res:0:1 + ModuleAliases2 is a dead module as all its items are dead. + + Warning Dead Type + ModuleAliases2.res:3:3-8 + record.x is a record label never used to read a value + <-- line 3 + @dead("record.x") x: int, + + Warning Dead Type + ModuleAliases2.res:4:3-11 + record.y is a record label never used to read a value + <-- line 4 + @dead("record.y") y: string, + + Warning Dead Module + ModuleAliases2.res:7:8-130 + ModuleAliases2.Outer is a dead module as all its items are dead. + + Warning Dead Type + ModuleAliases2.res:9:17-29 + Outer.outer.outer is a record label never used to read a value + <-- line 9 + type outer = {@dead("Outer.outer.outer") outer: string} + + Warning Dead Module + ModuleAliases2.res:11:10-68 + ModuleAliases2.Outer.Inner is a dead module as all its items are dead. + + Warning Dead Type + ModuleAliases2.res:13:19-31 + Outer.Inner.inner.inner is a record label never used to read a value + <-- line 13 + type inner = {@dead("Outer.Inner.inner.inner") inner: string} + + Warning Dead Value + ModuleAliases2.res:21:1-10 + q is never used + <-- line 21 + @dead("q") let q = 42 + + Warning Dead Module + ModuleExceptionBug.res:1:8-52 + ModuleExceptionBug.Dep is a dead module as all its items are dead. + + Warning Dead Value + ModuleExceptionBug.res:2:3-35 + Dep.customDouble is never used + <-- line 2 + @dead("Dep.customDouble") let customDouble = foo => foo * 2 + + Warning Dead Exception + ModuleExceptionBug.res:5:1-26 + MyOtherException is never raised or passed as value + <-- line 5 + @dead("MyOtherException") exception MyOtherException + + Warning Dead Value + NestedModules.res:8:3-22 + Universe.notExported is never used + <-- line 8 + @dead("Universe.notExported") let notExported = 33 + + Warning Dead Value + NestedModules.res:14:5-13 + Universe.Nested2.x is never used + <-- line 14 + @dead("Universe.Nested2.x") let x = 0 + + Warning Dead Value + NestedModules.res:19:5-13 + Universe.Nested2.y is never used + <-- line 19 + @dead("Universe.Nested2.y") let y = 2 + + Warning Dead Value + NestedModules.res:25:7-15 + Universe.Nested2.Nested3.x is never used + <-- line 25 + @dead("Universe.Nested2.Nested3.x") let x = 0 + + Warning Dead Value + NestedModules.res:26:7-15 + Universe.Nested2.Nested3.y is never used + <-- line 26 + @dead("Universe.Nested2.Nested3.y") let y = 1 + + Warning Dead Value + NestedModules.res:27:7-15 + Universe.Nested2.Nested3.z is never used + <-- line 27 + @dead("Universe.Nested2.Nested3.z") let z = 2 + + Warning Dead Value + NestedModules.res:28:7-15 + Universe.Nested2.Nested3.w is never used + <-- line 28 + @dead("Universe.Nested2.Nested3.w") let w = 3 + + Warning Dead Type + NestedModules.res:46:5-7 + Universe.variant.A is a variant case which is never constructed + <-- line 46 + | @dead("Universe.variant.A") A + + Warning Dead Type + NestedModules.res:47:7-15 + Universe.variant.B is a variant case which is never constructed + <-- line 47 + | @dead("Universe.variant.B") B(string) + + Warning Dead Module + Newsyntax.res:0:1 + Newsyntax is a dead module as all its items are dead. + + Warning Dead Value + Newsyntax.res:1:1-10 + x is never used + <-- line 1 + @dead("x") let x = 34 + + Warning Dead Value + Newsyntax.res:3:1-10 + y is never used + <-- line 3 + @dead("y") let y = 11 + + Warning Dead Type + Newsyntax.res:6:3-10 + record.xxx is a record label never used to read a value + <-- line 6 + @dead("record.xxx") xxx: int, + + Warning Dead Type + Newsyntax.res:7:3-10 + record.yyy is a record label never used to read a value + <-- line 7 + @dead("record.yyy") yyy: int, + + Warning Dead Type + Newsyntax.res:10:16 + variant.A is a variant case which is never constructed + <-- line 10 + type variant = | @dead("variant.A") A | @dead("variant.B") B(int)|@dead("variant.C") C + + Warning Dead Type + Newsyntax.res:10:20-25 + variant.B is a variant case which is never constructed + <-- line 10 + type variant = | @dead("variant.A") A | @dead("variant.B") B(int)|@dead("variant.C") C + + Warning Dead Type + Newsyntax.res:10:26-27 + variant.C is a variant case which is never constructed + <-- line 10 + type variant = | @dead("variant.A") A | @dead("variant.B") B(int)|@dead("variant.C") C + + Warning Dead Type + Newsyntax.res:12:17-22 + record2.xx is a record label never used to read a value + <-- line 12 + type record2 = {@dead("record2.xx") xx:int,@dead("record2.yy") yy:int} + + Warning Dead Type + Newsyntax.res:12:24-29 + record2.yy is a record label never used to read a value + <-- line 12 + type record2 = {@dead("record2.xx") xx:int,@dead("record2.yy") yy:int} + + Warning Dead Type + Opaque.res:2:26-41 + opaqueFromRecords.A is a variant case which is never constructed + <-- line 2 + type opaqueFromRecords = | @dead("opaqueFromRecords.A") A(Records.coord) + + Warning Dead Value + OptArg.resi:1:1-54 + foo is never used + <-- line 1 + @dead("foo") let foo: (~x: int=?, ~y: int=?, ~z: int=?, int) => int + + Warning Dead Type + Records.res:24:3-14 + person.name is a record label never used to read a value + <-- line 24 + @dead("person.name") name: string, + + Warning Dead Type + Records.res:25:3-10 + person.age is a record label never used to read a value + <-- line 25 + @dead("person.age") age: int, + + Warning Dead Type + Records.res:31:3-14 + business.name is a record label never used to read a value + <-- line 31 + @dead("business.name") name: string, + + Warning Dead Type + Records.res:60:3-10 + payload.num is a record label never used to read a value + <-- line 60 + @dead("payload.num") num: int, + + Warning Dead Type + Records.res:70:3-8 + record.w is a record label never used to read a value + <-- line 70 + @dead("record.w") w: int, + + Warning Dead Type + Records.res:90:3-14 + business2.name is a record label never used to read a value + <-- line 90 + @dead("business2.name") name: string, + + Warning Dead Type + Records.res:91:3-30 + business2.owner is a record label never used to read a value + <-- line 91 + @dead("business2.owner") owner: Js.Nullable.t, + + Warning Dead Type + References.res:39:28-33 + requiresConversion.x is a record label never used to read a value + <-- line 39 + type requiresConversion = {@dead("requiresConversion.x") x: int} + + Warning Dead Type + RepeatedLabel.res:2:3-9 + userData.a is a record label never used to read a value + <-- line 2 + @dead("userData.a") a: bool, + + Warning Dead Type + RepeatedLabel.res:3:3-8 + userData.b is a record label never used to read a value + <-- line 3 + @dead("userData.b") b: int, + + Warning Dead Type + RepeatedLabel.res:9:3-11 + tabState.f is a record label never used to read a value + <-- line 9 + @dead("tabState.f") f: string, + + Warning Dead Value + Shadow.res:11:3-22 + M.test is never used + <-- line 11 + @dead("M.test") let test = () => "a" + + Warning Dead Value + TestImmutableArray.res:12:1-54 + testBeltArrayGet is never used + <-- line 12 + @dead("testBeltArrayGet") let testBeltArrayGet = arr => { + + Warning Dead Value + TestImmutableArray.res:17:1-58 + testBeltArraySet is never used + <-- line 17 + @dead("testBeltArraySet") let testBeltArraySet = arr => { + + Warning Dead Value + TestImport.res:13:1-43 + innerStuffContents is never used + <-- line 13 + @dead("innerStuffContents") let innerStuffContents = innerStuffContents + + Warning Dead Type + TestImport.res:22:17-28 + message.text is a record label never used to read a value + <-- line 22 + type message = {@dead("message.text") text: string} + + Warning Dead Value + TestImport.res:27:1-15 + make is never used + <-- line 27 + @dead("make") let make = make + + Warning Dead Type + TestPromise.res:6:3-8 + fromPayload.x is a record label never used to read a value + <-- line 6 + @dead("fromPayload.x") x: int, + + Warning Dead Type + TestPromise.res:11:19-32 + toPayload.result is a record label never used to read a value + <-- line 11 + type toPayload = {@dead("toPayload.result") result: string} + + Warning Dead Module + TransitiveType2.res:0:1 + TransitiveType2 is a dead module as all its items are dead. + + Warning Dead Value + TransitiveType2.res:7:1-28 + convertT2 is never used + <-- line 7 + @dead("convertT2") let convertT2 = (x: t2) => x + + Warning Dead Type + TransitiveType3.res:3:3-8 + t3.i is a record label never used to read a value + <-- line 3 + @dead("t3.i") i: int, + + Warning Dead Type + TransitiveType3.res:4:3-11 + t3.s is a record label never used to read a value + <-- line 4 + @dead("t3.s") s: string, + + Warning Dead Module + TypeParams1.res:0:1 + TypeParams1 is a dead module as all its items are dead. + + Warning Dead Value + TypeParams1.res:4:1-24 + exportSomething is never used + <-- line 4 + @dead("exportSomething") let exportSomething = 10 + + Warning Dead Module + TypeParams2.res:0:1 + TypeParams2 is a dead module as all its items are dead. + + Warning Dead Type + TypeParams2.res:2:14-20 + item.id is a record label never used to read a value + <-- line 2 + type item = {@dead("item.id") id: int} + + Warning Dead Value + TypeParams2.res:10:1-24 + exportSomething is never used + <-- line 10 + @dead("exportSomething") let exportSomething = 10 + + Warning Dead Type + Types.res:12:3-13 + typeWithVars.A is a variant case which is never constructed + <-- line 12 + | @dead("typeWithVars.A") A('x, 'y) + + Warning Dead Type + Types.res:13:5-9 + typeWithVars.B is a variant case which is never constructed + <-- line 13 + | @dead("typeWithVars.B") B('z) + + Warning Dead Type + Types.res:35:27-47 + mutuallyRecursiveB.a is a record label never used to read a value + <-- line 35 + and mutuallyRecursiveB = {@dead("mutuallyRecursiveB.a") a: mutuallyRecursiveA} + + Warning Dead Type + Types.res:56:3-5 + opaqueVariant.A is a variant case which is never constructed + <-- line 56 + | @dead("opaqueVariant.A") A + + Warning Dead Type + Types.res:57:5 + opaqueVariant.B is a variant case which is never constructed + <-- line 57 + | @dead("opaqueVariant.B") B + + Warning Dead Type + Types.res:84:3-8 + record.i is a record label never used to read a value + <-- line 84 + @dead("record.i") i: int, + + Warning Dead Type + Types.res:85:3-11 + record.s is a record label never used to read a value + <-- line 85 + @dead("record.s") s: string, + + Warning Dead Type + Types.res:130:20-26 + someRecord.id is a record label never used to read a value + <-- line 130 + type someRecord = {@dead("someRecord.id") id: int} + + Warning Dead Module + Types.res:158:8-79 + Types.ObjectId is a dead module as all its items are dead. + + Warning Dead Value + Types.res:163:3-11 + ObjectId.x is never used + <-- line 163 + @dead("ObjectId.x") let x = 1 + + Warning Dead Type + Unboxed.res:2:11-16 + v1.A is a variant case which is never constructed + <-- line 2 + type v1 = | @dead("v1.A") A(int) + + Warning Dead Type + Unboxed.res:5:11-16 + v2.A is a variant case which is never constructed + <-- line 5 + type v2 = | @dead("v2.A") A(int) + + Warning Dead Type + Unboxed.res:11:12-17 + r1.x is a record label never used to read a value + <-- line 11 + type r1 = {@dead("r1.x") x: int} + + Warning Dead Type + Unboxed.res:14:11-24 + r2.B is a variant case which is never constructed + <-- line 14 + type r2 = | @dead("r2.B") B({@dead("r2.B.g") g: string}) + + Warning Dead Type + Unboxed.res:14:14-22 + r2.B.g is a record label never used to read a value + <-- line 14 + type r2 = | @dead("r2.B") B({@dead("r2.B.g") g: string}) + + Warning Dead Type + Variants.res:95:14-39 + type_.Type is a variant case which is never constructed + <-- line 95 + type type_ = | @dead("type_.Type") @genType.as("type") Type + + Warning Dead Type + Variants.res:102:3-10 + result1.Ok is a variant case which is never constructed + <-- line 102 + | @dead("result1.Ok") Ok('a) + + Warning Dead Type + Variants.res:103:5-13 + result1.Error is a variant case which is never constructed + <-- line 103 + | @dead("result1.Error") Error('b) + + Warning Dead Type + VariantsWithPayload.res:49:3-5 + simpleVariant.A is a variant case which is never constructed + <-- line 49 + | @dead("simpleVariant.A") A + + Warning Dead Type + VariantsWithPayload.res:50:5 + simpleVariant.B is a variant case which is never constructed + <-- line 50 + | @dead("simpleVariant.B") B + + Warning Dead Type + VariantsWithPayload.res:51:5 + simpleVariant.C is a variant case which is never constructed + <-- line 51 + | @dead("simpleVariant.C") C + + Warning Dead Type + VariantsWithPayload.res:58:3-29 + variantWithPayloads.A is a variant case which is never constructed + <-- line 58 + | @dead("variantWithPayloads.A") @genType.as("ARenamed") A + + Warning Dead Type + VariantsWithPayload.res:59:5-10 + variantWithPayloads.B is a variant case which is never constructed + <-- line 59 + | @dead("variantWithPayloads.B") B(int) + + Warning Dead Type + VariantsWithPayload.res:60:5-15 + variantWithPayloads.C is a variant case which is never constructed + <-- line 60 + | @dead("variantWithPayloads.C") C(int, int) + + Warning Dead Type + VariantsWithPayload.res:61:5-17 + variantWithPayloads.D is a variant case which is never constructed + <-- line 61 + | @dead("variantWithPayloads.D") D((int, int)) + + Warning Dead Type + VariantsWithPayload.res:62:5-23 + variantWithPayloads.E is a variant case which is never constructed + <-- line 62 + | @dead("variantWithPayloads.E") E(int, string, int) + + Warning Dead Type + VariantsWithPayload.res:90:20-25 + variant1Int.R is a variant case which is never constructed + <-- line 90 + type variant1Int = | @dead("variant1Int.R") R(int) + + Warning Dead Type + VariantsWithPayload.res:96:23-32 + variant1Object.R is a variant case which is never constructed + <-- line 96 + type variant1Object = | @dead("variant1Object.R") R(payload) + + Analysis reported 302 issues (Incorrect Dead Annotation:1, Warning Dead Exception:2, Warning Dead Module:21, Warning Dead Type:87, Warning Dead Value:173, Warning Dead Value With Side Effects:2, Warning Redundant Optional Argument:5, Warning Unused Argument:11) diff --git a/tests/analysis_tests/tests-reanalyze/deadcode/expected/exception.txt b/tests/analysis_tests/tests-reanalyze/deadcode/expected/exception.txt index e69de29bb2..9d087d9e01 100644 --- a/tests/analysis_tests/tests-reanalyze/deadcode/expected/exception.txt +++ b/tests/analysis_tests/tests-reanalyze/deadcode/expected/exception.txt @@ -0,0 +1,99 @@ + + + Exception Analysis + Exn.res:1:5-10 + raises might raise Not_found (Exn.res:1:19) and is not annotated with @raises(Not_found) + + Exception Analysis + Exn.res:19:5-28 + callsRaiseWithAnnotation might raise Not_found (Exn.res:19:31) and is not annotated with @raises(Not_found) + + Exception Analysis + Exn.res:22:5-42 + callsRaiseWithAnnotationAndIsAnnotated might raise Not_found (Exn.res:22:45) and is not annotated with @raises(Not_found) + + Exception Analysis + Exn.res:22:5-42 + callsRaiseWithAnnotationAndIsAnnotated might raise Not_found (Exn.res:22:45) and is annotated with redundant @raises(A) + + Exception Analysis + Exn.res:24:5-19 + incompleteMatch might raise Match_failure (Exn.res:25:2) and is not annotated with @raises(Match_failure) + + Exception Analysis + Exn.res:32:5-13 + twoRaises might raise [A (Exn.res:34:4), B (Exn.res:37:4)] and is not annotated with @raises([A, B]) + + Exception Analysis + Exn.res:41:5-14 + sequencing might raise A (Exn.res:42:2) and is not annotated with @raises(A) + + Exception Analysis + Exn.res:48:5-14 + wrongCatch might raise B (Exn.res:49:6) and is not annotated with @raises(B) + + Exception Analysis + Exn.res:54:5-15 + wrongCatch2 might raise [C (Exn.res:55:24), Match_failure (Exn.res:55:2)] and is not annotated with @raises([C, Match_failure]) + + Exception Analysis + Exn.res:62:5-19 + raise2Annotate3 might raise [A (Exn.res:64:4), B (Exn.res:67:4)] and is annotated with redundant @raises(C) + + Exception Analysis + Exn.res:73:5-24 + parse_json_from_file might raise Error (Exn.res:75:34) and is not annotated with @raises(Error) + + Exception Analysis + Exn.res:80:5-11 + reRaise might raise B (Exn.res:82:19) and is not annotated with @raises(B) + + Exception Analysis + Exn.res:91:5-22 + raiseInInternalLet might raise A (Exn.res:92:14) and is not annotated with @raises(A) + + Exception Analysis + Exn.res:96:5-16 + indirectCall might raise Not_found (Exn.res:96:25) and is not annotated with @raises(Not_found) + + Exception Analysis + Exn.res:121:5-16 + severalCases might raise Failure (Exn.res:123:13 Exn.res:124:13 Exn.res:125:15) and is not annotated with @raises(Failure) + + Exception Analysis + Exn.res:133:5-23 + redundantAnnotation raises nothing and is annotated with redundant @raises(Invalid_argument) + + Exception Analysis + Exn.res:135:5-6 + _x might raise A (Exn.res:135:9) and is not annotated with @raises(A) + + Exception Analysis + Exn.res:137:5 + _ might raise A (Exn.res:137:8) and is not annotated with @raises(A) + + Exception Analysis + Exn.res:139:5-6 + () might raise A (Exn.res:139:9) and is not annotated with @raises(A) + + Exception Analysis + Exn.res:141:1-16 + Toplevel expression might raise Not_found (Exn.res:141:0) and is not annotated with @raises(Not_found) + + Exception Analysis + Exn.res:151:46-47 + expression does not raise and is annotated with redundant @doesNotRaise + + Exception Analysis + Exn.res:151:5-21 + onResultPipeWrong might raise Assert_failure (Exn.res:151:50) and is not annotated with @raises(Assert_failure) + + Exception Analysis + ExnA.res:1:5-7 + bar might raise Not_found (ExnA.res:1:16) and is not annotated with @raises(Not_found) + + Exception Analysis + ExternalTest.res:7:5-24 + bigIntFromStringExn2 might raise Exn.Error (ExternalTest.res:7:35) and is not annotated with @raises(Exn.Error) + + Analysis reported 24 issues (Exception Analysis:24) From 6560a8398ae3d3e17aab1210bbc804dacc11af1c Mon Sep 17 00:00:00 2001 From: Gabriel Nordeborn Date: Thu, 13 Mar 2025 21:48:00 +0100 Subject: [PATCH 08/18] make hovers a bit nicer --- analysis/src/Hover.ml | 65 +++++++++++++------ compiler/syntax/src/res_parsetree_viewer.ml | 14 ++++ compiler/syntax/src/res_parsetree_viewer.mli | 2 + .../termination/package-lock.json | 1 + .../tests/src/NestedRecordsHover.res | 11 +++- .../tests/src/expected/NestedRecords.res.txt | 6 +- .../src/expected/NestedRecordsHover.res.txt | 14 +++- 7 files changed, 88 insertions(+), 25 deletions(-) diff --git a/analysis/src/Hover.ml b/analysis/src/Hover.ml index d01d49873e..cb454e2618 100644 --- a/analysis/src/Hover.ml +++ b/analysis/src/Hover.ml @@ -101,26 +101,48 @@ let findRelevantTypesFromType ~file ~package typ = constructors |> List.filter_map (fromConstructorPath ~env:envToSearch) let expandTypes ~file ~package ~supportsMarkdownLinks typ = - findRelevantTypesFromType typ ~file ~package - |> List.map (fun {decl; env; loc; path} -> - let linkToTypeDefinitionStr = - if supportsMarkdownLinks then - Markdown.goToDefinitionText ~env ~pos:loc.Warnings.loc_start - else "" - in - Markdown.divider - ^ (if supportsMarkdownLinks then Markdown.spacing else "") - ^ Markdown.codeBlock - (decl - |> Shared.declToString ~printNameAsIs:true - (SharedTypes.pathIdentToString path)) - ^ linkToTypeDefinitionStr ^ "\n") + match findRelevantTypesFromType typ ~file ~package with + | {decl; path} :: _ + when Res_parsetree_viewer.has_inline_record_definition_attribute + decl.type_attributes -> + ( [ + Markdown.codeBlock + (decl + |> Shared.declToString ~printNameAsIs:true + (SharedTypes.pathIdentToString path)); + ], + `InlineType ) + | all -> + ( all + |> List.map (fun {decl; env; loc; path} -> + let linkToTypeDefinitionStr = + if + supportsMarkdownLinks + && not + (Res_parsetree_viewer + .has_inline_record_definition_attribute + decl.type_attributes) + then Markdown.goToDefinitionText ~env ~pos:loc.Warnings.loc_start + else "" + in + Markdown.divider + ^ (if supportsMarkdownLinks then Markdown.spacing else "") + ^ Markdown.codeBlock + (decl + |> Shared.declToString ~printNameAsIs:true + (SharedTypes.pathIdentToString path)) + ^ linkToTypeDefinitionStr ^ "\n"), + `Default ) (* Produces a hover with relevant types expanded in the main type being hovered. *) let hoverWithExpandedTypes ~file ~package ~supportsMarkdownLinks typ = let typeString = Markdown.codeBlock (typ |> Shared.typeToString) in - typeString :: expandTypes ~file ~package ~supportsMarkdownLinks typ - |> String.concat "\n" + let expandedTypes, expansionType = + expandTypes ~file ~package ~supportsMarkdownLinks typ + in + match expansionType with + | `Default -> typeString :: expandedTypes |> String.concat "\n" + | `InlineType -> expandedTypes |> String.concat "\n" (* Leverages autocomplete functionality to produce a hover for a position. This makes it (most often) work with unsaved content. *) @@ -171,10 +193,13 @@ let newHover ~full:{file; package} ~supportsMarkdownLinks locItem = let typeDef = Markdown.codeBlock (Shared.declToString name decl) in match decl.type_manifest with | None -> Some typeDef - | Some typ -> - Some - (typeDef :: expandTypes ~file ~package ~supportsMarkdownLinks typ - |> String.concat "\n")) + | Some typ -> ( + let expandedTypes, expansionType = + expandTypes ~file ~package ~supportsMarkdownLinks typ + in + match expansionType with + | `Default -> Some (typeDef :: expandedTypes |> String.concat "\n") + | `InlineType -> Some (expandedTypes |> String.concat "\n"))) | LModule (Definition (stamp, _tip)) | LModule (LocalReference (stamp, _tip)) -> ( match Stamps.findModule file.stamps stamp with diff --git a/compiler/syntax/src/res_parsetree_viewer.ml b/compiler/syntax/src/res_parsetree_viewer.ml index 7617b50ec4..957dbb738e 100644 --- a/compiler/syntax/src/res_parsetree_viewer.ml +++ b/compiler/syntax/src/res_parsetree_viewer.ml @@ -72,6 +72,20 @@ let has_await_attribute attrs = | _ -> false) attrs +let has_inline_record_definition_attribute attrs = + List.exists + (function + | {Location.txt = "res.inlineRecordDefinition"}, _ -> true + | _ -> false) + attrs + +let has_inline_record_reference_attribute attrs = + List.exists + (function + | {Location.txt = "res.inlineRecordReference"}, _ -> true + | _ -> false) + attrs + let has_res_pat_variant_spread_attribute attrs = List.exists (function diff --git a/compiler/syntax/src/res_parsetree_viewer.mli b/compiler/syntax/src/res_parsetree_viewer.mli index e74233eda9..d07828f21a 100644 --- a/compiler/syntax/src/res_parsetree_viewer.mli +++ b/compiler/syntax/src/res_parsetree_viewer.mli @@ -15,6 +15,8 @@ val functor_type : * Parsetree.module_type val has_await_attribute : Parsetree.attributes -> bool +val has_inline_record_definition_attribute : Parsetree.attributes -> bool +val has_inline_record_reference_attribute : Parsetree.attributes -> bool val has_res_pat_variant_spread_attribute : Parsetree.attributes -> bool val has_dict_pattern_attribute : Parsetree.attributes -> bool diff --git a/tests/analysis_tests/tests-reanalyze/termination/package-lock.json b/tests/analysis_tests/tests-reanalyze/termination/package-lock.json index da7d58b7fd..52e45f77df 100644 --- a/tests/analysis_tests/tests-reanalyze/termination/package-lock.json +++ b/tests/analysis_tests/tests-reanalyze/termination/package-lock.json @@ -12,6 +12,7 @@ } }, "../../../..": { + "name": "rescript", "version": "12.0.0-alpha.10", "dev": true, "hasInstallScript": true, diff --git a/tests/analysis_tests/tests/src/NestedRecordsHover.res b/tests/analysis_tests/tests/src/NestedRecordsHover.res index 8702d7674f..ab41d9a44c 100644 --- a/tests/analysis_tests/tests/src/NestedRecordsHover.res +++ b/tests/analysis_tests/tests/src/NestedRecordsHover.res @@ -10,9 +10,18 @@ let options = { // ^hov extra: { name: "test", + //^hov superExtra: { age: 2222, + //^hov }, - otherExtra: Some({test: true, anotherInlined: {record: true}}), + otherExtra: Some({ + test: true, + // ^hov + anotherInlined: { + record: true, + // ^hov + }, + }), }, } diff --git a/tests/analysis_tests/tests/src/expected/NestedRecords.res.txt b/tests/analysis_tests/tests/src/expected/NestedRecords.res.txt index 8bec38e8b0..db012ca3c9 100644 --- a/tests/analysis_tests/tests/src/expected/NestedRecords.res.txt +++ b/tests/analysis_tests/tests/src/expected/NestedRecords.res.txt @@ -9,7 +9,7 @@ ContextPath Value[options] Path options Package opens Stdlib.place holder Pervasives.JsxModules.place holder Resolved opens 1 Stdlib -{"contents": {"kind": "markdown", "value": "```rescript\noptions\n```\n\n---\n\n```\n \n```\n```rescript\ntype options = {\n extra: {name: string, superExtra: {age: int}},\n}\n```\nGo to: [Type definition](command:rescript-vscode.go_to_location?%5B%22NestedRecords.res%22%2C1%2C0%5D)\n\n\n---\n\n```\n \n```\n```rescript\ntype options.extra = {name: string, superExtra: {age: int}}\n```\nGo to: [Type definition](command:rescript-vscode.go_to_location?%5B%22NestedRecords.res%22%2C2%2C9%5D)\n"}} +{"contents": {"kind": "markdown", "value": "```rescript\noptions\n```\n\n---\n\n```\n \n```\n```rescript\ntype options = {\n extra: {name: string, superExtra: {age: int}},\n}\n```\nGo to: [Type definition](command:rescript-vscode.go_to_location?%5B%22NestedRecords.res%22%2C1%2C0%5D)\n\n\n---\n\n```\n \n```\n```rescript\ntype options.extra = {name: string, superExtra: {age: int}}\n```\n"}} Hover src/NestedRecords.res 20:13 Nothing at that position. Now trying to use completion. @@ -28,7 +28,7 @@ CPPipe pathFromEnv: found:true Path NestedRecords.extra Package opens Stdlib.place holder Pervasives.JsxModules.place holder Resolved opens 1 Stdlib -{"contents": {"kind": "markdown", "value": "```rescript\n\\\"options.extra\"\n```\n\n---\n\n```\n \n```\n```rescript\ntype options.extra = {name: string, superExtra: {age: int}}\n```\nGo to: [Type definition](command:rescript-vscode.go_to_location?%5B%22NestedRecords.res%22%2C2%2C9%5D)\n\n\n---\n\n```\n \n```\n```rescript\ntype options.extra.superExtra = {age: int}\n```\nGo to: [Type definition](command:rescript-vscode.go_to_location?%5B%22NestedRecords.res%22%2C4%2C16%5D)\n"}} +{"contents": {"kind": "markdown", "value": "```rescript\ntype options.extra = {name: string, superExtra: {age: int}}\n```"}} Hover src/NestedRecords.res 23:26 Nothing at that position. Now trying to use completion. @@ -59,7 +59,7 @@ CPPipe pathFromEnv: found:true Path NestedRecords.superExtra Package opens Stdlib.place holder Pervasives.JsxModules.place holder Resolved opens 1 Stdlib -{"contents": {"kind": "markdown", "value": "```rescript\n\\\"options.extra.superExtra\"\n```\n\n---\n\n```\n \n```\n```rescript\ntype options.extra.superExtra = {age: int}\n```\nGo to: [Type definition](command:rescript-vscode.go_to_location?%5B%22NestedRecords.res%22%2C4%2C16%5D)\n"}} +{"contents": {"kind": "markdown", "value": "```rescript\ntype options.extra.superExtra = {age: int}\n```"}} Hover src/NestedRecords.res 26:29 Nothing at that position. Now trying to use completion. diff --git a/tests/analysis_tests/tests/src/expected/NestedRecordsHover.res.txt b/tests/analysis_tests/tests/src/expected/NestedRecordsHover.res.txt index bf444f15ad..d0a0dc63b8 100644 --- a/tests/analysis_tests/tests/src/expected/NestedRecordsHover.res.txt +++ b/tests/analysis_tests/tests/src/expected/NestedRecordsHover.res.txt @@ -1,3 +1,15 @@ Hover src/NestedRecordsHover.res 8:7 -{"contents": {"kind": "markdown", "value": "```rescript\noptions\n```\n\n---\n\n```\n \n```\n```rescript\ntype options = {\n extra?: {\n name: string,\n superExtra?: {age: int},\n otherExtra: option<\n {\n test: bool,\n anotherInlined: {record: bool},\n },\n >,\n },\n}\n```\nGo to: [Type definition](command:rescript-vscode.go_to_location?%5B%22NestedRecordsHover.res%22%2C0%2C0%5D)\n\n\n---\n\n```\n \n```\n```rescript\ntype options.extra = {\n name: string,\n superExtra?: {age: int},\n otherExtra: option<\n {\n test: bool,\n anotherInlined: {record: bool},\n },\n >,\n}\n```\nGo to: [Type definition](command:rescript-vscode.go_to_location?%5B%22NestedRecordsHover.res%22%2C1%2C10%5D)\n"}} +{"contents": {"kind": "markdown", "value": "```rescript\noptions\n```\n\n---\n\n```\n \n```\n```rescript\ntype options = {\n extra?: {\n name: string,\n superExtra?: {age: int},\n otherExtra: option<\n {\n test: bool,\n anotherInlined: {record: bool},\n },\n >,\n },\n}\n```\nGo to: [Type definition](command:rescript-vscode.go_to_location?%5B%22NestedRecordsHover.res%22%2C0%2C0%5D)\n\n\n---\n\n```\n \n```\n```rescript\ntype options.extra = {\n name: string,\n superExtra?: {age: int},\n otherExtra: option<\n {\n test: bool,\n anotherInlined: {record: bool},\n },\n >,\n}\n```\n"}} + +Hover src/NestedRecordsHover.res 11:6 +{"contents": {"kind": "markdown", "value": "```rescript\ntype options.extra = {\n name: string,\n superExtra?: {age: int},\n otherExtra: option<\n {\n test: bool,\n anotherInlined: {record: bool},\n },\n >,\n}\n```"}} + +Hover src/NestedRecordsHover.res 14:8 +{"contents": {"kind": "markdown", "value": "```rescript\ntype options.extra.superExtra = {age: int}\n```"}} + +Hover src/NestedRecordsHover.res 18:9 +{"contents": {"kind": "markdown", "value": "```rescript\ntype options.extra.otherExtra = {\n test: bool,\n anotherInlined: {record: bool},\n}\n```"}} + +Hover src/NestedRecordsHover.res 21:11 +{"contents": {"kind": "markdown", "value": "```rescript\ntype options.extra.otherExtra.anotherInlined = {\n record: bool,\n}\n```"}} From 0f88be3b9d333046e69e4bed014407a7afa9dc6e Mon Sep 17 00:00:00 2001 From: Gabriel Nordeborn Date: Fri, 14 Mar 2025 10:00:53 +0100 Subject: [PATCH 09/18] refactor away the need for res.inlineRecordReference --- compiler/syntax/src/res_core.ml | 23 +++++++++++-------- compiler/syntax/src/res_parsetree_viewer.ml | 15 +++--------- compiler/syntax/src/res_parsetree_viewer.mli | 1 - compiler/syntax/src/res_printer.ml | 19 +++++---------- .../typeDef/expected/inlineRecord.res.txt | 5 ++-- 5 files changed, 25 insertions(+), 38 deletions(-) diff --git a/compiler/syntax/src/res_core.ml b/compiler/syntax/src/res_core.ml index 19c2e2fa0d..2dc0dc57d1 100644 --- a/compiler/syntax/src/res_core.ml +++ b/compiler/syntax/src/res_core.ml @@ -4080,12 +4080,19 @@ and parse_atomic_typ_expr ?current_type_name_path ?inline_types ~attrs p = ~constr_name:constr p in let number_of_inline_records_in_args = - args - |> List.filter (fun (c : Parsetree.core_type) -> - c.ptyp_attributes - |> List.exists (fun (({txt}, _) : Parsetree.attribute) -> - txt = "res.inlineRecordReference")) - |> List.length + match inline_types with + | None -> 0 + | Some inline_types -> + let inline_types = !inline_types in + args + |> List.filter (fun (c : Parsetree.core_type) -> + match c.ptyp_desc with + | Ptyp_constr ({txt = Lident typename}, _) + when String.contains typename '.' -> + inline_types + |> List.exists (fun (name, _, _) -> name = typename) + | _ -> false) + |> List.length in if number_of_inline_records_in_args > 1 then Parser.err ~start_pos ~end_pos:p.prev_end_pos p @@ -4196,9 +4203,7 @@ and parse_record_or_object_type ?current_type_name_path ?inline_types ~attrs p = (inline_type_name, loc, Parsetree.Ptype_record labels) :: !inline_types; let lid = Location.mkloc (Longident.Lident inline_type_name) loc in - Ast_helper.Typ.constr - ~attrs:[(Location.mknoloc "res.inlineRecordReference", PStr [])] - ~loc lid [] + Ast_helper.Typ.constr ~loc lid [] | _ -> let () = match p.token with diff --git a/compiler/syntax/src/res_parsetree_viewer.ml b/compiler/syntax/src/res_parsetree_viewer.ml index 957dbb738e..5b3f7ac5f9 100644 --- a/compiler/syntax/src/res_parsetree_viewer.ml +++ b/compiler/syntax/src/res_parsetree_viewer.ml @@ -79,13 +79,6 @@ let has_inline_record_definition_attribute attrs = | _ -> false) attrs -let has_inline_record_reference_attribute attrs = - List.exists - (function - | {Location.txt = "res.inlineRecordReference"}, _ -> true - | _ -> false) - attrs - let has_res_pat_variant_spread_attribute attrs = List.exists (function @@ -213,7 +206,7 @@ let filter_parsing_attrs attrs = ( "res.braces" | "ns.braces" | "res.iflet" | "res.ternary" | "res.await" | "res.template" | "res.taggedTemplate" | "res.patVariantSpread" | "res.dictPattern" - | "res.inlineRecordReference" | "res.inlineRecordDefinition" ); + | "res.inlineRecordDefinition" ); }, _ ) -> false @@ -367,8 +360,7 @@ let has_attributes attrs = | ( { Location.txt = ( "res.braces" | "ns.braces" | "res.iflet" | "res.ternary" - | "res.await" | "res.template" | "res.inlineRecordReference" - | "res.inlineRecordDefinition" ); + | "res.await" | "res.template" | "res.inlineRecordDefinition" ); }, _ ) -> false @@ -563,8 +555,7 @@ let is_printable_attribute attr = | ( { Location.txt = ( "res.iflet" | "res.braces" | "ns.braces" | "JSX" | "res.await" - | "res.template" | "res.ternary" | "res.inlineRecordReference" - | "res.inlineRecordDefinition" ); + | "res.template" | "res.ternary" | "res.inlineRecordDefinition" ); }, _ ) -> false diff --git a/compiler/syntax/src/res_parsetree_viewer.mli b/compiler/syntax/src/res_parsetree_viewer.mli index d07828f21a..1774563491 100644 --- a/compiler/syntax/src/res_parsetree_viewer.mli +++ b/compiler/syntax/src/res_parsetree_viewer.mli @@ -16,7 +16,6 @@ val functor_type : val has_await_attribute : Parsetree.attributes -> bool val has_inline_record_definition_attribute : Parsetree.attributes -> bool -val has_inline_record_reference_attribute : Parsetree.attributes -> bool val has_res_pat_variant_spread_attribute : Parsetree.attributes -> bool val has_dict_pattern_attribute : Parsetree.attributes -> bool diff --git a/compiler/syntax/src/res_printer.ml b/compiler/syntax/src/res_printer.ml index fcd6626347..b8a269af61 100644 --- a/compiler/syntax/src/res_printer.ml +++ b/compiler/syntax/src/res_printer.ml @@ -550,16 +550,6 @@ module State = struct let should_break_callback t = t.custom_layout > custom_layout_threshold end -let is_inline_record_definition attrs = - attrs - |> List.exists (fun (({txt}, _) : Parsetree.attribute) -> - txt = "res.inlineRecordDefinition") - -let is_inline_record_reference attrs = - attrs - |> List.exists (fun (({txt}, _) : Parsetree.attribute) -> - txt = "res.inlineRecordReference") - let rec print_structure ~state (s : Parsetree.structure) t = match s with | [] -> print_comments_inside_file t @@ -582,12 +572,14 @@ and print_structure_item ~state (si : Parsetree.structure_item) cmt_tbl = | Pstr_type (Recursive, type_declarations) when type_declarations |> List.find_opt (fun (td : Parsetree.type_declaration) -> - is_inline_record_definition td.ptype_attributes) + Res_parsetree_viewer.has_inline_record_definition_attribute + td.ptype_attributes) |> Option.is_some -> let inline_record_definitions, regular_declarations = type_declarations |> List.partition (fun (td : Parsetree.type_declaration) -> - is_inline_record_definition td.ptype_attributes) + Res_parsetree_viewer.has_inline_record_definition_attribute + td.ptype_attributes) in print_type_declarations ~inline_record_definitions ~state ~rec_flag: @@ -1722,7 +1714,8 @@ and print_typ_expr ?inline_record_definitions ~(state : State.t) print_object ~state ~inline:false fields open_flag cmt_tbl | Ptyp_arrow {arity} -> print_arrow ~arity typ_expr | Ptyp_constr ({txt = Lident inline_record_name}, []) - when is_inline_record_reference typ_expr.ptyp_attributes -> ( + when inline_record_definitions |> Option.is_some + && String.contains inline_record_name '.' -> ( let inline_record_definitions = match inline_record_definitions with | None -> [] diff --git a/tests/syntax_tests/data/parsing/errors/typeDef/expected/inlineRecord.res.txt b/tests/syntax_tests/data/parsing/errors/typeDef/expected/inlineRecord.res.txt index d0ca362751..bcb3df033f 100644 --- a/tests/syntax_tests/data/parsing/errors/typeDef/expected/inlineRecord.res.txt +++ b/tests/syntax_tests/data/parsing/errors/typeDef/expected/inlineRecord.res.txt @@ -30,10 +30,9 @@ type nonrec entity = type user.address = { street: string ; country: string }[@@res.inlineRecordDefinition ] -and user = - { +and user = { name: string ; - address: ((user.address)[@res.inlineRecordReference ]) } + address: user.address } let make [arity:1](props : < handleClick: Click.t -> unit (a:1) ;value: string > ) From c98809eca0c6c7ea23cf3fa01078fcfd63cd851b Mon Sep 17 00:00:00 2001 From: Gabriel Nordeborn Date: Fri, 14 Mar 2025 11:53:46 +0100 Subject: [PATCH 10/18] refactor away unecessary dot check --- compiler/syntax/src/res_core.ml | 3 +-- compiler/syntax/src/res_printer.ml | 31 +++++++++++++++++------------- 2 files changed, 19 insertions(+), 15 deletions(-) diff --git a/compiler/syntax/src/res_core.ml b/compiler/syntax/src/res_core.ml index 2dc0dc57d1..fec3d5049a 100644 --- a/compiler/syntax/src/res_core.ml +++ b/compiler/syntax/src/res_core.ml @@ -4087,8 +4087,7 @@ and parse_atomic_typ_expr ?current_type_name_path ?inline_types ~attrs p = args |> List.filter (fun (c : Parsetree.core_type) -> match c.ptyp_desc with - | Ptyp_constr ({txt = Lident typename}, _) - when String.contains typename '.' -> + | Ptyp_constr ({txt = Lident typename}, _) -> inline_types |> List.exists (fun (name, _, _) -> name = typename) | _ -> false) diff --git a/compiler/syntax/src/res_printer.ml b/compiler/syntax/src/res_printer.ml index b8a269af61..7ef9c415ca 100644 --- a/compiler/syntax/src/res_printer.ml +++ b/compiler/syntax/src/res_printer.ml @@ -450,6 +450,15 @@ let polyvar_ident_to_string poly_var_ident = Doc.concat [Doc.text "#"; print_poly_var_ident poly_var_ident] |> Doc.to_string ~width:80 +let find_inline_record_definition inline_record_name + (inline_record_definitions : Parsetree.type_declaration list option) = + match inline_record_definitions with + | None -> None + | Some inline_record_definitions -> + inline_record_definitions + |> List.find_opt (fun (r : Parsetree.type_declaration) -> + r.ptype_name.txt = inline_record_name) + let print_lident l = let flat_lid_opt lid = let rec flat accu = function @@ -1714,21 +1723,17 @@ and print_typ_expr ?inline_record_definitions ~(state : State.t) print_object ~state ~inline:false fields open_flag cmt_tbl | Ptyp_arrow {arity} -> print_arrow ~arity typ_expr | Ptyp_constr ({txt = Lident inline_record_name}, []) - when inline_record_definitions |> Option.is_some - && String.contains inline_record_name '.' -> ( - let inline_record_definitions = - match inline_record_definitions with - | None -> [] - | Some v -> v - in - let record_definition = + when inline_record_definitions + |> find_inline_record_definition inline_record_name + |> Option.is_some -> ( + match inline_record_definitions - |> List.find_opt (fun (r : Parsetree.type_declaration) -> - r.ptype_name.txt = inline_record_name) - in - match record_definition with + |> find_inline_record_definition inline_record_name + with | Some {ptype_kind = Ptype_record lds} -> - print_record_declaration ~inline_record_definitions ~state lds cmt_tbl + print_record_declaration + ~inline_record_definitions:(inline_record_definitions |> Option.get) + ~state lds cmt_tbl | _ -> assert false) | Ptyp_constr (longident_loc, [{ptyp_desc = Ptyp_object (fields, open_flag)}]) -> From f6129ace3355000d9e25a8bcf2f275c7d581629e Mon Sep 17 00:00:00 2001 From: Gabriel Nordeborn Date: Wed, 19 Mar 2025 13:18:52 +0100 Subject: [PATCH 11/18] refactor inline types context --- compiler/syntax/src/res_core.ml | 109 +++++++++++++++++++------------- 1 file changed, 65 insertions(+), 44 deletions(-) diff --git a/compiler/syntax/src/res_core.ml b/compiler/syntax/src/res_core.ml index fec3d5049a..110ba6e260 100644 --- a/compiler/syntax/src/res_core.ml +++ b/compiler/syntax/src/res_core.ml @@ -10,6 +10,10 @@ module Parser = Res_parser let mk_loc start_loc end_loc = Location.{loc_start = start_loc; loc_end = end_loc; loc_ghost = false} +type inline_types_context = { + mutable found_inline_types: (string * Warnings.loc * Parsetree.type_kind) list; +} + module Recover = struct let default_expr () = let id = Location.mknoloc "rescript.exprhole" in @@ -3978,7 +3982,7 @@ and parse_array_exp p = (* TODO: check attributes in the case of poly type vars, * might be context dependend: parseFieldDeclaration (see ocaml) *) -and parse_poly_type_expr ?current_type_name_path ?inline_types p = +and parse_poly_type_expr ?current_type_name_path ?inline_types_context p = let start_pos = p.Parser.start_pos in match p.Parser.token with | SingleQuote -> ( @@ -4004,7 +4008,7 @@ and parse_poly_type_expr ?current_type_name_path ?inline_types p = Ast_helper.Typ.arrow ~loc ~arity:(Some 1) Nolabel typ return_type | _ -> Ast_helper.Typ.var ~loc:var.loc var.txt) | _ -> assert false) - | _ -> parse_typ_expr ?current_type_name_path ?inline_types p + | _ -> parse_typ_expr ?current_type_name_path ?inline_types_context p (* 'a 'b 'c *) and parse_type_var_list p = @@ -4032,7 +4036,8 @@ and parse_lident_list p = in loop p [] -and parse_atomic_typ_expr ?current_type_name_path ?inline_types ~attrs p = +and parse_atomic_typ_expr ?current_type_name_path ?inline_types_context ~attrs p + = Parser.leave_breadcrumb p Grammar.AtomicTypExpr; let start_pos = p.Parser.start_pos in let typ = @@ -4076,14 +4081,14 @@ and parse_atomic_typ_expr ?current_type_name_path ?inline_types ~attrs p = | Uident _ | Lident _ -> let constr = parse_value_path p in let args = - parse_type_constructor_args ?inline_types ?current_type_name_path - ~constr_name:constr p + parse_type_constructor_args ?inline_types_context + ?current_type_name_path ~constr_name:constr p in let number_of_inline_records_in_args = - match inline_types with + match inline_types_context with | None -> 0 - | Some inline_types -> - let inline_types = !inline_types in + | Some inline_types_context -> + let inline_types = inline_types_context.found_inline_types in args |> List.filter (fun (c : Parsetree.core_type) -> match c.ptyp_desc with @@ -4111,7 +4116,8 @@ and parse_atomic_typ_expr ?current_type_name_path ?inline_types ~attrs p = let loc = mk_loc start_pos p.prev_end_pos in Ast_helper.Typ.extension ~attrs ~loc extension | Lbrace -> - parse_record_or_object_type ?current_type_name_path ?inline_types ~attrs p + parse_record_or_object_type ?current_type_name_path ?inline_types_context + ~attrs p | Eof -> Parser.err p (Diagnostics.unexpected p.Parser.token p.breadcrumbs); Recover.default_type () @@ -4173,7 +4179,8 @@ and parse_package_constraint p = Some (type_constr, typ) | _ -> None -and parse_record_or_object_type ?current_type_name_path ?inline_types ~attrs p = +and parse_record_or_object_type ?current_type_name_path ?inline_types_context + ~attrs p = (* for inline record in constructor *) let start_pos = p.Parser.start_pos in Parser.expect Lbrace p; @@ -4187,19 +4194,22 @@ and parse_record_or_object_type ?current_type_name_path ?inline_types ~attrs p = Asttypes.Closed | _ -> Asttypes.Closed in - match (p.token, inline_types, current_type_name_path) with - | Lident _, Some inline_types, Some current_type_name_path -> + match (p.token, inline_types_context, current_type_name_path) with + | Lident _, Some inline_types_context, Some current_type_name_path -> let labels = parse_comma_delimited_region ~grammar:Grammar.RecordDecl ~closing:Rbrace ~f: - (parse_field_declaration_region ~current_type_name_path ~inline_types) + (parse_field_declaration_region ~current_type_name_path + ~inline_types_context) p in Parser.expect Rbrace p; let loc = mk_loc start_pos p.prev_end_pos in let inline_type_name = current_type_name_path |> String.concat "." in - inline_types := - (inline_type_name, loc, Parsetree.Ptype_record labels) :: !inline_types; + + inline_types_context.found_inline_types <- + (inline_type_name, loc, Parsetree.Ptype_record labels) + :: inline_types_context.found_inline_types; let lid = Location.mkloc (Longident.Lident inline_type_name) loc in Ast_helper.Typ.constr ~loc lid [] @@ -4417,7 +4427,7 @@ and parse_es6_arrow_type ~attrs p = * | uident.lident * | uident.uident.lident --> long module path *) -and parse_typ_expr ?current_type_name_path ?inline_types ?attrs +and parse_typ_expr ?current_type_name_path ?inline_types_context ?attrs ?(es6_arrow = true) ?(alias = true) p = (* Parser.leaveBreadcrumb p Grammar.TypeExpression; *) let start_pos = p.Parser.start_pos in @@ -4430,7 +4440,8 @@ and parse_typ_expr ?current_type_name_path ?inline_types ?attrs if es6_arrow && is_es6_arrow_type p then parse_es6_arrow_type ~attrs p else let typ = - parse_atomic_typ_expr ?current_type_name_path ?inline_types ~attrs p + parse_atomic_typ_expr ?current_type_name_path ?inline_types_context + ~attrs p in parse_arrow_type_rest ~es6_arrow ~start_pos typ p in @@ -4470,16 +4481,18 @@ and parse_tuple_type ~attrs ~first ~start_pos p = let tuple_loc = mk_loc start_pos p.prev_end_pos in Ast_helper.Typ.tuple ~attrs ~loc:tuple_loc typexprs -and parse_type_constructor_arg_region ?inline_types ?current_type_name_path p = +and parse_type_constructor_arg_region ?inline_types_context + ?current_type_name_path p = if Grammar.is_typ_expr_start p.Parser.token then - Some (parse_typ_expr ?inline_types ?current_type_name_path p) + Some (parse_typ_expr ?inline_types_context ?current_type_name_path p) else if p.token = LessThan then ( Parser.next p; - parse_type_constructor_arg_region ?inline_types ?current_type_name_path p) + parse_type_constructor_arg_region ?inline_types_context + ?current_type_name_path p) else None (* Js.Nullable.value<'a> *) -and parse_type_constructor_args ?inline_types ?current_type_name_path +and parse_type_constructor_args ?inline_types_context ?current_type_name_path ~constr_name p = let opening = p.Parser.token in let opening_start_pos = p.start_pos in @@ -4492,7 +4505,7 @@ and parse_type_constructor_args ?inline_types ?current_type_name_path parse_comma_delimited_region ~grammar:Grammar.TypExprList ~closing:GreaterThan ~f: - (parse_type_constructor_arg_region ?inline_types + (parse_type_constructor_arg_region ?inline_types_context ?current_type_name_path) p in @@ -4578,7 +4591,7 @@ and parse_field_declaration p = let loc = mk_loc start_pos typ.ptyp_loc.loc_end in Ast_helper.Type.field ~attrs ~loc ~mut ~optional name typ -and parse_field_declaration_region ?current_type_name_path ?inline_types +and parse_field_declaration_region ?current_type_name_path ?inline_types_context ?found_object_field p = let start_pos = p.Parser.start_pos in let attrs = parse_attributes p in @@ -4614,7 +4627,7 @@ and parse_field_declaration_region ?current_type_name_path ?inline_types match p.Parser.token with | Colon -> Parser.next p; - parse_poly_type_expr ?current_type_name_path ?inline_types p + parse_poly_type_expr ?current_type_name_path ?inline_types_context p | _ -> Ast_helper.Typ.constr ~loc:name.loc ~attrs {name with txt = Lident name.txt} @@ -4640,12 +4653,14 @@ and parse_field_declaration_region ?current_type_name_path ?inline_types * | { field-decl, field-decl } * | { field-decl, field-decl, field-decl, } *) -and parse_record_declaration ?current_type_name_path ?inline_types p = +and parse_record_declaration ?current_type_name_path ?inline_types_context p = Parser.leave_breadcrumb p Grammar.RecordDecl; Parser.expect Lbrace p; let rows = parse_comma_delimited_region ~grammar:Grammar.RecordDecl ~closing:Rbrace - ~f:(parse_field_declaration_region ?current_type_name_path ?inline_types) + ~f: + (parse_field_declaration_region ?current_type_name_path + ?inline_types_context) p in Parser.expect Rbrace p; @@ -4889,7 +4904,7 @@ and parse_type_constructor_declarations ?first p = * ∣ = private record-decl * | = .. *) -and parse_type_representation ?current_type_name_path ?inline_types p = +and parse_type_representation ?current_type_name_path ?inline_types_context p = Parser.leave_breadcrumb p Grammar.TypeRepresentation; (* = consumed *) let private_flag = @@ -4902,7 +4917,8 @@ and parse_type_representation ?current_type_name_path ?inline_types p = Parsetree.Ptype_variant (parse_type_constructor_declarations p) | Lbrace -> Parsetree.Ptype_record - (parse_record_declaration ?current_type_name_path ?inline_types p) + (parse_record_declaration ?current_type_name_path ?inline_types_context + p) | DotDot -> Parser.next p; Ptype_open @@ -5093,7 +5109,8 @@ and parse_type_equation_or_constr_decl p = (* TODO: is this a good idea? *) (None, Asttypes.Public, Parsetree.Ptype_abstract) -and parse_record_or_object_decl ?current_type_name_path ?inline_types p = +and parse_record_or_object_decl ?current_type_name_path ?inline_types_context p + = let start_pos = p.Parser.start_pos in Parser.expect Lbrace p; match p.Parser.token with @@ -5151,7 +5168,7 @@ and parse_record_or_object_decl ?current_type_name_path ?inline_types p = parse_comma_delimited_region ~grammar:Grammar.RecordDecl ~closing:Rbrace ~f: (parse_field_declaration_region ?current_type_name_path - ?inline_types ~found_object_field) + ?inline_types_context ~found_object_field) p in Parser.expect Rbrace p; @@ -5225,7 +5242,7 @@ and parse_record_or_object_decl ?current_type_name_path ?inline_types p = ~closing:Rbrace ~f: (parse_field_declaration_region ?current_type_name_path - ?inline_types) + ?inline_types_context) p | attr :: _ as attrs -> let first = @@ -5246,7 +5263,7 @@ and parse_record_or_object_decl ?current_type_name_path ?inline_types p = ~closing:Rbrace ~f: (parse_field_declaration_region ?current_type_name_path - ?inline_types) + ?inline_types_context) p in Parser.expect Rbrace p; @@ -5437,8 +5454,8 @@ and parse_polymorphic_variant_type_args p = | [typ] -> typ | types -> Ast_helper.Typ.tuple ~loc ~attrs types -and parse_type_equation_and_representation ?current_type_name_path ?inline_types - p = +and parse_type_equation_and_representation ?current_type_name_path + ?inline_types_context p = match p.Parser.token with | (Equal | Bar) as token -> ( if token = Bar then Parser.expect Equal p; @@ -5446,7 +5463,8 @@ and parse_type_equation_and_representation ?current_type_name_path ?inline_types match p.Parser.token with | Uident _ -> parse_type_equation_or_constr_decl p | Lbrace -> - parse_record_or_object_decl ?current_type_name_path ?inline_types p + parse_record_or_object_decl ?current_type_name_path ?inline_types_context + p | Private -> parse_private_eq_or_repr p | Bar | DotDot -> let priv, kind = parse_type_representation p in @@ -5457,7 +5475,8 @@ and parse_type_equation_and_representation ?current_type_name_path ?inline_types | Equal -> Parser.next p; let priv, kind = - parse_type_representation ?current_type_name_path ?inline_types p + parse_type_representation ?current_type_name_path + ?inline_types_context p in (manifest, priv, kind) | _ -> (manifest, Public, Parsetree.Ptype_abstract))) @@ -5524,12 +5543,12 @@ and parse_type_extension ~params ~attrs ~name p = let constructors = loop p [first] in Ast_helper.Te.mk ~attrs ~params ~priv name constructors -and parse_type_definitions ~current_type_name_path ~inline_types ~attrs ~name - ~params ~start_pos p = +and parse_type_definitions ~current_type_name_path ~inline_types_context ~attrs + ~name ~params ~start_pos p = let type_def = let manifest, priv, kind = parse_type_equation_and_representation ~current_type_name_path - ~inline_types p + ~inline_types_context p in let cstrs = parse_type_constraints p in let loc = mk_loc start_pos p.prev_end_pos in @@ -5580,16 +5599,18 @@ and parse_type_definition_or_extension ~attrs p = |> Diagnostics.message) in let current_type_name_path = Longident.flatten name.txt in - let inline_types = ref [] in + let inline_types_context = {found_inline_types = []} in let type_defs = - parse_type_definitions ~inline_types ~current_type_name_path ~attrs ~name - ~params ~start_pos p + parse_type_definitions ~inline_types_context ~current_type_name_path + ~attrs ~name ~params ~start_pos p in let rec_flag = - if List.length !inline_types > 0 then Asttypes.Recursive else rec_flag + if List.length inline_types_context.found_inline_types > 0 then + Asttypes.Recursive + else rec_flag in let inline_types = - !inline_types + inline_types_context.found_inline_types |> List.map (fun (inline_type_name, loc, kind) -> Ast_helper.Type.mk ~attrs:[(Location.mknoloc "res.inlineRecordDefinition", PStr [])] From 35d95b50673965e89335e26d49221c571d96b2f4 Mon Sep 17 00:00:00 2001 From: Gabriel Nordeborn Date: Wed, 19 Mar 2025 13:45:02 +0100 Subject: [PATCH 12/18] support type params --- compiler/syntax/src/res_core.ml | 10 ++++++---- compiler/syntax/src/res_printer.ml | 2 +- 2 files changed, 7 insertions(+), 5 deletions(-) diff --git a/compiler/syntax/src/res_core.ml b/compiler/syntax/src/res_core.ml index 110ba6e260..d2f7bad50c 100644 --- a/compiler/syntax/src/res_core.ml +++ b/compiler/syntax/src/res_core.ml @@ -11,7 +11,9 @@ let mk_loc start_loc end_loc = Location.{loc_start = start_loc; loc_end = end_loc; loc_ghost = false} type inline_types_context = { - mutable found_inline_types: (string * Warnings.loc * Parsetree.type_kind) list; + mutable found_inline_types: + (string * Warnings.loc * Parsetree.type_kind) list; + params: (Parsetree.core_type * Asttypes.variance) list; } module Recover = struct @@ -4212,7 +4214,7 @@ and parse_record_or_object_type ?current_type_name_path ?inline_types_context :: inline_types_context.found_inline_types; let lid = Location.mkloc (Longident.Lident inline_type_name) loc in - Ast_helper.Typ.constr ~loc lid [] + Ast_helper.Typ.constr ~loc lid (inline_types_context.params |> List.map fst) | _ -> let () = match p.token with @@ -5599,7 +5601,7 @@ and parse_type_definition_or_extension ~attrs p = |> Diagnostics.message) in let current_type_name_path = Longident.flatten name.txt in - let inline_types_context = {found_inline_types = []} in + let inline_types_context = {found_inline_types = []; params} in let type_defs = parse_type_definitions ~inline_types_context ~current_type_name_path ~attrs ~name ~params ~start_pos p @@ -5612,7 +5614,7 @@ and parse_type_definition_or_extension ~attrs p = let inline_types = inline_types_context.found_inline_types |> List.map (fun (inline_type_name, loc, kind) -> - Ast_helper.Type.mk + Ast_helper.Type.mk ~params ~attrs:[(Location.mknoloc "res.inlineRecordDefinition", PStr [])] ~loc ~kind {name with txt = inline_type_name}) diff --git a/compiler/syntax/src/res_printer.ml b/compiler/syntax/src/res_printer.ml index 7ef9c415ca..3b88fe5f43 100644 --- a/compiler/syntax/src/res_printer.ml +++ b/compiler/syntax/src/res_printer.ml @@ -1722,7 +1722,7 @@ and print_typ_expr ?inline_record_definitions ~(state : State.t) | Ptyp_object (fields, open_flag) -> print_object ~state ~inline:false fields open_flag cmt_tbl | Ptyp_arrow {arity} -> print_arrow ~arity typ_expr - | Ptyp_constr ({txt = Lident inline_record_name}, []) + | Ptyp_constr ({txt = Lident inline_record_name}, _) when inline_record_definitions |> find_inline_record_definition inline_record_name |> Option.is_some -> ( From 4097443207d87565b8a91f254658049b8f560323 Mon Sep 17 00:00:00 2001 From: Gabriel Nordeborn Date: Wed, 19 Mar 2025 13:49:09 +0100 Subject: [PATCH 13/18] add tests --- ...ne_types_multiple_on_same_key.res.expected | 11 ++++++ ...line_types_record_type_params.res.expected | 14 +++++++ .../inline_types_record_type_params.res | 17 +++++++++ .../parsing/errors/typeDef/nestedRecord.res | 5 +++ .../src/nested_records_with_type_params.mjs | 38 +++++++++++++++++++ .../src/nested_records_with_type_params.res | 27 +++++++++++++ 6 files changed, 112 insertions(+) create mode 100644 tests/build_tests/super_errors/expected/inline_types_multiple_on_same_key.res.expected create mode 100644 tests/build_tests/super_errors/expected/inline_types_record_type_params.res.expected create mode 100644 tests/build_tests/super_errors/fixtures/inline_types_record_type_params.res create mode 100644 tests/syntax_tests/data/parsing/errors/typeDef/nestedRecord.res create mode 100644 tests/tests/src/nested_records_with_type_params.mjs create mode 100644 tests/tests/src/nested_records_with_type_params.res diff --git a/tests/build_tests/super_errors/expected/inline_types_multiple_on_same_key.res.expected b/tests/build_tests/super_errors/expected/inline_types_multiple_on_same_key.res.expected new file mode 100644 index 0000000000..85c7dea476 --- /dev/null +++ b/tests/build_tests/super_errors/expected/inline_types_multiple_on_same_key.res.expected @@ -0,0 +1,11 @@ + + Syntax error! + /.../fixtures/inline_types_multiple_on_same_key.res:3:11-47 + + 1 │ type options = { + 2 │ extra?: { + 3 │ name: result<{first: bool}, {second: bool}>, + 4 │ }, + 5 │ } + + Only one inline record definition is allowed per record field. This defines more than one inline record. \ No newline at end of file diff --git a/tests/build_tests/super_errors/expected/inline_types_record_type_params.res.expected b/tests/build_tests/super_errors/expected/inline_types_record_type_params.res.expected new file mode 100644 index 0000000000..be9fed0456 --- /dev/null +++ b/tests/build_tests/super_errors/expected/inline_types_record_type_params.res.expected @@ -0,0 +1,14 @@ + + We've found a bug for you! + /.../fixtures/inline_types_record_type_params.res:13:12-15 + + 11 ┆ name: "test", + 12 ┆ superExtra: { + 13 ┆ age: 2222, + 14 ┆ }, + 15 ┆ otherExtra: Some({test: true, anotherInlined: {record: true}}), + + This has type: int + But it's expected to have type: string + + You can convert int to string with Belt.Int.toString. \ No newline at end of file diff --git a/tests/build_tests/super_errors/fixtures/inline_types_record_type_params.res b/tests/build_tests/super_errors/fixtures/inline_types_record_type_params.res new file mode 100644 index 0000000000..38ff228bf3 --- /dev/null +++ b/tests/build_tests/super_errors/fixtures/inline_types_record_type_params.res @@ -0,0 +1,17 @@ +type options<'age> = { + extra?: { + name: string, + superExtra?: {age: 'age}, + otherExtra: option<{test: bool, anotherInlined: {record: bool}}>, + }, +} + +let opts2: options = { + extra: { + name: "test", + superExtra: { + age: 2222, + }, + otherExtra: Some({test: true, anotherInlined: {record: true}}), + }, +} diff --git a/tests/syntax_tests/data/parsing/errors/typeDef/nestedRecord.res b/tests/syntax_tests/data/parsing/errors/typeDef/nestedRecord.res new file mode 100644 index 0000000000..2ece4f2703 --- /dev/null +++ b/tests/syntax_tests/data/parsing/errors/typeDef/nestedRecord.res @@ -0,0 +1,5 @@ +type options = { + extra?: { + name: result<{first: bool}, {second: bool}>, + }, +} \ No newline at end of file diff --git a/tests/tests/src/nested_records_with_type_params.mjs b/tests/tests/src/nested_records_with_type_params.mjs new file mode 100644 index 0000000000..5530eeee12 --- /dev/null +++ b/tests/tests/src/nested_records_with_type_params.mjs @@ -0,0 +1,38 @@ +// Generated by ReScript, PLEASE EDIT WITH CARE + + +let options = { + extra: { + name: "test", + superExtra: { + age: 2222 + }, + otherExtra: { + test: true, + anotherInlined: { + record: true + } + } + } +}; + +let opts2 = { + extra: { + name: "test", + superExtra: { + age: "1234" + }, + otherExtra: { + test: true, + anotherInlined: { + record: true + } + } + } +}; + +export { + options, + opts2, +} +/* No side effect */ diff --git a/tests/tests/src/nested_records_with_type_params.res b/tests/tests/src/nested_records_with_type_params.res new file mode 100644 index 0000000000..7427c75a6b --- /dev/null +++ b/tests/tests/src/nested_records_with_type_params.res @@ -0,0 +1,27 @@ +type options<'age> = { + extra?: { + name: string, + superExtra?: {age: 'age}, + otherExtra: option<{test: bool, anotherInlined: {record: bool}}>, + }, +} + +let options = { + extra: { + name: "test", + superExtra: { + age: 2222, + }, + otherExtra: Some({test: true, anotherInlined: {record: true}}), + }, +} + +let opts2: options = { + extra: { + name: "test", + superExtra: { + age: "1234", + }, + otherExtra: Some({test: true, anotherInlined: {record: true}}), + }, +} From 653c81f5f122d82a6235ebcc3905bdf8f9f099f3 Mon Sep 17 00:00:00 2001 From: Gabriel Nordeborn Date: Wed, 19 Mar 2025 13:49:17 +0100 Subject: [PATCH 14/18] try disabling reanalyze --- .github/workflows/ci.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml index 392883d386..13eab50cc9 100644 --- a/.github/workflows/ci.yml +++ b/.github/workflows/ci.yml @@ -110,7 +110,7 @@ jobs: - os: ubuntu-24.04 ocaml_compiler: ocaml-variants.5.2.1+options,ocaml-option-static # Reanalyze does not work on OCaml 5.3.0 anymore, therefore run it on 5.2.1 - run_reanalyze: true + run_reanalyze: false - os: ubuntu-24.04 ocaml_compiler: ocaml-variants.5.0.0+options,ocaml-option-static - os: ubuntu-24.04 From e6598ee591225fcd3d8e4314e0b33c78ba473df3 Mon Sep 17 00:00:00 2001 From: Gabriel Nordeborn Date: Wed, 19 Mar 2025 13:54:07 +0100 Subject: [PATCH 15/18] remove file --- .../inline_types_multiple_on_same_key.res.expected | 11 ----------- 1 file changed, 11 deletions(-) delete mode 100644 tests/build_tests/super_errors/expected/inline_types_multiple_on_same_key.res.expected diff --git a/tests/build_tests/super_errors/expected/inline_types_multiple_on_same_key.res.expected b/tests/build_tests/super_errors/expected/inline_types_multiple_on_same_key.res.expected deleted file mode 100644 index 85c7dea476..0000000000 --- a/tests/build_tests/super_errors/expected/inline_types_multiple_on_same_key.res.expected +++ /dev/null @@ -1,11 +0,0 @@ - - Syntax error! - /.../fixtures/inline_types_multiple_on_same_key.res:3:11-47 - - 1 │ type options = { - 2 │ extra?: { - 3 │ name: result<{first: bool}, {second: bool}>, - 4 │ }, - 5 │ } - - Only one inline record definition is allowed per record field. This defines more than one inline record. \ No newline at end of file From 04847f711b84bedca8058c0176d0c76227a358ad Mon Sep 17 00:00:00 2001 From: Gabriel Nordeborn Date: Wed, 19 Mar 2025 13:55:10 +0100 Subject: [PATCH 16/18] changelog --- CHANGELOG.md | 1 + 1 file changed, 1 insertion(+) diff --git a/CHANGELOG.md b/CHANGELOG.md index 0a70aff209..5006c2dc24 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -19,6 +19,7 @@ - Add `inert` attribute to `JsxDOM.domProps`. https://github.com/rescript-lang/rescript/pull/7326 - Make reanalyze exception tracking work with the new stdlib. https://github.com/rescript-lang/rescript/pull/7328 - Fix Pervasive.max using boolean comparison for floats. https://github.com/rescript-lang/rescript/pull/7333 +- Support nested/inline record types - records defined inside of other records, without needing explicit separate type definitions. https://github.com/rescript-lang/rescript/pull/7241 #### :boom: Breaking Change From ed4cd0f4e4859e0c9773993692eee6eb22384ff5 Mon Sep 17 00:00:00 2001 From: Gabriel Nordeborn Date: Wed, 19 Mar 2025 14:04:18 +0100 Subject: [PATCH 17/18] comments --- .github/workflows/ci.yml | 1 + CHANGELOG.md | 2 +- analysis/src/Hover.ml | 2 ++ compiler/ml/printtyp.ml | 1 + compiler/ml/printtyp.mli | 1 + 5 files changed, 6 insertions(+), 1 deletion(-) diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml index 13eab50cc9..7f0c8a73dc 100644 --- a/.github/workflows/ci.yml +++ b/.github/workflows/ci.yml @@ -110,6 +110,7 @@ jobs: - os: ubuntu-24.04 ocaml_compiler: ocaml-variants.5.2.1+options,ocaml-option-static # Reanalyze does not work on OCaml 5.3.0 anymore, therefore run it on 5.2.1 + # disabled for now, since Reanalyze will stop working going forward. Can likely be removed entirely soon run_reanalyze: false - os: ubuntu-24.04 ocaml_compiler: ocaml-variants.5.0.0+options,ocaml-option-static diff --git a/CHANGELOG.md b/CHANGELOG.md index 5006c2dc24..e129b995c4 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -19,7 +19,7 @@ - Add `inert` attribute to `JsxDOM.domProps`. https://github.com/rescript-lang/rescript/pull/7326 - Make reanalyze exception tracking work with the new stdlib. https://github.com/rescript-lang/rescript/pull/7328 - Fix Pervasive.max using boolean comparison for floats. https://github.com/rescript-lang/rescript/pull/7333 -- Support nested/inline record types - records defined inside of other records, without needing explicit separate type definitions. https://github.com/rescript-lang/rescript/pull/7241 +- Experimental: Support nested/inline record types - records defined inside of other records, without needing explicit separate type definitions. https://github.com/rescript-lang/rescript/pull/7241 #### :boom: Breaking Change diff --git a/analysis/src/Hover.ml b/analysis/src/Hover.ml index cb454e2618..f0979d695c 100644 --- a/analysis/src/Hover.ml +++ b/analysis/src/Hover.ml @@ -105,6 +105,8 @@ let expandTypes ~file ~package ~supportsMarkdownLinks typ = | {decl; path} :: _ when Res_parsetree_viewer.has_inline_record_definition_attribute decl.type_attributes -> + (* We print inline record types just with their definition, not the constr pointing + to them, since that doesn't make sense to show the user. *) ( [ Markdown.codeBlock (decl diff --git a/compiler/ml/printtyp.ml b/compiler/ml/printtyp.ml index 49a6ba9226..dd43032381 100644 --- a/compiler/ml/printtyp.ml +++ b/compiler/ml/printtyp.ml @@ -646,6 +646,7 @@ let rec tree_of_typexp ?(printing_context : printing_context option) sch ty = find_inlined_type (Path.name p) printing_context |> Option.get with | Record {labels} -> + (* Print inlined records as actual inlined record structures, not a reference to the inlined type only. *) Otyp_record (List.map (tree_of_label ?printing_context) labels)) | Tconstr (p, tyl, _abbrev) -> let p', s = best_type_path p in diff --git a/compiler/ml/printtyp.mli b/compiler/ml/printtyp.mli index 7bf59c8947..bb7c3bd7ea 100644 --- a/compiler/ml/printtyp.mli +++ b/compiler/ml/printtyp.mli @@ -20,6 +20,7 @@ open Types open Outcometree type printing_context = {inlined_types: type_inlined_type list} +(** Tracks things like inlined records, to help with printing. *) val print_res_poly_identifier : (string -> string) ref val longident : formatter -> Longident.t -> unit From ce287c4a311609df98c916ea0dc852038d1e8bfd Mon Sep 17 00:00:00 2001 From: Gabriel Nordeborn Date: Thu, 20 Mar 2025 18:21:44 +0100 Subject: [PATCH 18/18] remove reanalyze from ci --- .github/workflows/ci.yml | 11 ----------- 1 file changed, 11 deletions(-) diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml index 7f0c8a73dc..05c331313c 100644 --- a/.github/workflows/ci.yml +++ b/.github/workflows/ci.yml @@ -109,9 +109,6 @@ jobs: # Verify that the compiler still builds with older OCaml versions - os: ubuntu-24.04 ocaml_compiler: ocaml-variants.5.2.1+options,ocaml-option-static - # Reanalyze does not work on OCaml 5.3.0 anymore, therefore run it on 5.2.1 - # disabled for now, since Reanalyze will stop working going forward. Can likely be removed entirely soon - run_reanalyze: false - os: ubuntu-24.04 ocaml_compiler: ocaml-variants.5.0.0+options,ocaml-option-static - os: ubuntu-24.04 @@ -192,10 +189,6 @@ jobs: if: steps.cache-opam-env.outputs.cache-hit != 'true' run: opam install . --deps-only --with-test - - name: "Install reanalyze" - if: steps.cache-opam-env.outputs.cache-hit != 'true' && matrix.run_reanalyze - run: opam install reanalyze - - name: Cache OPAM environment if: steps.cache-opam-env.outputs.cache-hit != 'true' uses: actions/cache/save@v4 @@ -306,10 +299,6 @@ jobs: if: ${{ runner.os == 'Windows' }} run: opam exec -- make test-syntax - - name: "Syntax: Run reanalyze" - if: matrix.run_reanalyze - run: opam exec -- make reanalyze - - name: Build runtime/stdlib run: ./scripts/buildRuntime.sh shell: bash